At the moment GCP Spanner backend does not seem to support comments (issue being tracked at https://issuetracker.google.com/issues/159730604). By adding support for parsing the migration DDL with spansql we are able to support comments and remove them before applying on the database
Google Cloud Spanner
Usage
The DSN must be given in the following format.
spanner://projects/{projectId}/instances/{instanceId}/databases/{databaseName}
See Google Spanner Documentation for details.
| Param | WithInstance Config | Description |
|---|---|---|
x-migrations-table |
MigrationsTable |
Name of the migrations table |
x-clean-statements |
CleanStatements |
Whether to parse and clean DDL statements before running migration towards Spanner (Required for comments and multiple statements) |
url |
DatabaseName |
The full path to the Spanner database resource. If provided as part of Config it must not contain a scheme or query string to match the format projects/{projectId}/instances/{instanceId}/databases/{databaseName} |
projectId |
The Google Cloud Platform project id | |
instanceId |
The id of the instance running Spanner | |
databaseName |
The name of the Spanner database |
Note: Google Cloud Spanner migrations can take a considerable amount of time. The migrations provided as part of the example take about 6 minutes to run on a small instance.
1481574547/u create_users_table (21.354507597s) 1496539702/u add_city_to_users (41.647359754s) 1496601752/u add_index_on_user_emails (2m12.155787369s) 1496602638/u create_books_table (2m30.77299181s)
DDL with comments
At the moment the GCP Spanner backed does not seem to allow for comments (See https://issuetracker.google.com/issues/159730604)
so in order to be able to use migration with DDL containing comments x-clean-stamements is required
Multiple statements
In order to be able to use more than 1 DDL statement in the same migration file, the file has to be parsed and therefore the x-clean-statements flag is required
Testing
To unit test the spanner driver, SPANNER_DATABASE needs to be set. You'll
need to sign-up to Google Cloud Platform (GCP) and have a running Spanner
instance since it is not possible to run Google Spanner outside GCP.