stripe / pg-schema-diff

Go library for diffing Postgres schemas and generating SQL migrations
MIT License
347 stars 25 forks source link

Make data-packing toggle-able #119

Closed bplunkett-stripe closed 6 months ago

bplunkett-stripe commented 6 months ago

Description

Make data-packing toggle-table. It is on by default. To disable, pass the option: -data-pack-new-tables=false

Motivation

https://github.com/stripe/pg-schema-diff/issues/118

Testing

  go run ./cmd/pg-schema-diff plan  --dsn "host=localhost user=postgres password=postgres database=somedb" --schema-dir ~/stripe/temp/examplesql

################################ Generated plan ################################
1. CREATE TABLE "public"."foobar" (
        "id" integer,
        "some_other_column" character varying(255) COLLATE "pg_catalog"."default",
        "fizz" character varying(255) COLLATE "pg_catalog"."default"
);
        -- Statement Timeout: 3s

2. ALTER TABLE "public"."foobar" ADD CONSTRAINT "some_constraint" CHECK((id > 0));
        -- Statement Timeout: 3s

3. ALTER TABLE "public"."foobar" REPLICA IDENTITY FULL;
        -- Statement Timeout: 3s

4. CREATE INDEX CONCURRENTLY some_idx ON public.foobar USING btree (id);
        -- Statement Timeout: 20m0s
        -- Lock Timeout: 3s

 ~/stripe/pg-schema-diff │ bplunkett/ma…g-toggleable  go run ./cmd/pg-schema-diff plan  --dsn "host=localhost user=postgres password=postgres database=somedb" --schema-dir ~/stripe/temp/examplesql --data-pack-new-tables=false

################################ Generated plan ################################
1. CREATE TABLE "public"."foobar" (
        "some_other_column" character varying(255) COLLATE "pg_catalog"."default",
        "fizz" character varying(255) COLLATE "pg_catalog"."default",
        "id" integer
);
        -- Statement Timeout: 3s

2. ALTER TABLE "public"."foobar" ADD CONSTRAINT "some_constraint" CHECK((id > 0));
        -- Statement Timeout: 3s

3. ALTER TABLE "public"."foobar" REPLICA IDENTITY FULL;
        -- Statement Timeout: 3s

4. CREATE INDEX CONCURRENTLY some_idx ON public.foobar USING btree (id);
        -- Statement Timeout: 20m0s
        -- Lock Timeout: 3s