Skip to content

morikuni/spannerdiff

Repository files navigation

spannerdiff

Schema migration tool for Cloud Spanner.

Note: This tool is currently under development. The interface may change.

Installation

$ brew install morikuni/tap/spannerdiff 

Supported DDL

  • CREATE SCHEMA
  • CREATE TABLE
  • CREATE INDEX
  • CREATE SEARCH INDEX
  • CREATE PROPERTY GRAPH
  • CREATE VIEW
  • CREATE CHANGE STREAM
  • CREATE SEQUENCE
  • CREATE VECTOR INDEX
  • CREATE MODEL
  • CREATE PROTO BUNDLE
  • CREATE ROLE
  • GRANT
  • ALTER DATABASE

Colored Output

colored output

Example

$ gcloud spanner databases ddl describe test
CREATE TABLE Test (
    ID STRING(64) NOT NULL,
    Name STRING(64) NOT NULL,
) PRIMARY KEY (ID);

CREATE INDEX Test_Name ON Test (Name);
$ cat schema.sql
CREATE TABLE Test (
    ID STRING(64) NOT NULL,
    Name STRING(64) NOT NULL,
    CreatedAt TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP()),
) PRIMARY KEY (ID);

CREATE INDEX Test_Name_CreatedAt ON Test (Name, CreatedAt DESC);
$ gcloud spanner databases ddl describe test | spannerdiff --base-stdin --target-file=schema.sql | tee tmp.sql
DROP INDEX Test_Name;

ALTER TABLE Test ADD COLUMN CreatedAt TIMESTAMP NOT NULL DEFAULT (CURRENT_TIMESTAMP());

CREATE INDEX Test_Name_CreatedAt ON Test(Name, CreatedAt DESC);
$ gcloud spanner databases ddl update test --ddl-file=tmp.sql
Schema updating...done.

Known Issues & Limitations

  • View DDL generation may be incorrect or out of order due to unresolved column names in the view query.

About

Schema migration tool for Cloud Spanner

Resources

License

Stars

Watchers

Forks

Packages

No packages published