-
-
Notifications
You must be signed in to change notification settings - Fork 33
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Respect auto_index keys in crdb (#99)
This patch reverts a behavior introduced earlier and adds a test to prevent future regressions. With this patch, it is possible to use `change_column` on columns with foreign key references but without explicitly defined indices. Without this patch, those changes fail because CRDB needs an index on the referencing column when creating foreign key checks. Closes #98
- Loading branch information
Showing
63 changed files
with
1,714 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
CREATE TABLE e2e_authors ( | ||
id UUID NOT NULL, | ||
created_at TIMESTAMP NOT NULL, | ||
updated_at TIMESTAMP NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id, created_at, updated_at) | ||
); | ||
|
||
CREATE TABLE e2e_user_posts ( | ||
id UUID NOT NULL, | ||
content VARCHAR(255) NOT NULL DEFAULT '':::STRING, | ||
slug VARCHAR(32) NOT NULL, | ||
published BOOL NOT NULL DEFAULT false, | ||
author_id UUID NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
UNIQUE INDEX e2e_user_notes_slug_idx (slug ASC), | ||
INDEX e2e_user_notes_auto_index_e2e_user_notes_e2e_users_id_fk (author_id ASC), | ||
INDEX e2e_user_notes_user_id_idx (author_id ASC), | ||
FAMILY "primary" (id, content, slug, published, author_id) | ||
); | ||
|
||
CREATE TABLE schema_migration ( | ||
version VARCHAR(14) NOT NULL, | ||
UNIQUE INDEX schema_migration_version_idx (version ASC), | ||
FAMILY "primary" (version, rowid) | ||
); | ||
|
||
ALTER TABLE e2e_user_posts ADD CONSTRAINT e2e_user_notes_e2e_users_id_fk FOREIGN KEY (author_id) REFERENCES e2e_authors(id) ON DELETE CASCADE; | ||
|
||
-- Validate foreign key constraints. These can fail if there was unvalidated data during the dump. | ||
ALTER TABLE e2e_user_posts VALIDATE CONSTRAINT e2e_user_notes_e2e_users_id_fk; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
CREATE TABLE e2e_address ( | ||
id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id) | ||
); | ||
|
||
CREATE TABLE e2e_authors ( | ||
id UUID NOT NULL, | ||
created_at TIMESTAMP NOT NULL, | ||
updated_at TIMESTAMP NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id, created_at, updated_at) | ||
); | ||
|
||
CREATE TABLE e2e_flow ( | ||
id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id) | ||
); | ||
|
||
CREATE TABLE e2e_token ( | ||
id UUID NOT NULL, | ||
token VARCHAR(64) NOT NULL, | ||
e2e_address_id UUID NOT NULL, | ||
expires_at TIMESTAMP NOT NULL DEFAULT '2000-01-01 00:00:00+00:00':::TIMESTAMP, | ||
issued_at TIMESTAMP NOT NULL DEFAULT '2000-01-01 00:00:00+00:00':::TIMESTAMP, | ||
e2e_flow_id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
INDEX e2e_token_auto_index_e2e_token_e2e_address_id_fk (e2e_address_id ASC), | ||
UNIQUE INDEX e2e_token_uq_idx (token ASC), | ||
INDEX e2e_token_idx (token ASC), | ||
INDEX e2e_token_auto_index_e2e_token_e2e_flow_id_fk (e2e_flow_id ASC), | ||
FAMILY "primary" (id, token, e2e_address_id, expires_at, issued_at, e2e_flow_id) | ||
); | ||
|
||
CREATE TABLE e2e_user_posts ( | ||
id UUID NOT NULL, | ||
content VARCHAR(255) NOT NULL DEFAULT '':::STRING, | ||
slug VARCHAR(32) NOT NULL, | ||
published BOOL NOT NULL DEFAULT false, | ||
author_id UUID NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
UNIQUE INDEX e2e_user_notes_slug_idx (slug ASC), | ||
INDEX e2e_user_notes_auto_index_e2e_user_notes_e2e_users_id_fk (author_id ASC), | ||
INDEX e2e_user_notes_user_id_idx (author_id ASC), | ||
FAMILY "primary" (id, content, slug, published, author_id) | ||
); | ||
|
||
CREATE TABLE schema_migration ( | ||
version VARCHAR(14) NOT NULL, | ||
UNIQUE INDEX schema_migration_version_idx (version ASC), | ||
FAMILY "primary" (version, rowid) | ||
); | ||
|
||
ALTER TABLE e2e_token ADD CONSTRAINT e2e_token_e2e_address_id_fk FOREIGN KEY (e2e_address_id) REFERENCES e2e_address(id) ON DELETE CASCADE; | ||
ALTER TABLE e2e_token ADD CONSTRAINT e2e_token_e2e_flow_id_fk FOREIGN KEY (e2e_flow_id) REFERENCES e2e_flow(id) ON DELETE CASCADE; | ||
ALTER TABLE e2e_user_posts ADD CONSTRAINT e2e_user_notes_e2e_users_id_fk FOREIGN KEY (author_id) REFERENCES e2e_authors(id) ON DELETE CASCADE; | ||
|
||
-- Validate foreign key constraints. These can fail if there was unvalidated data during the dump. | ||
ALTER TABLE e2e_token VALIDATE CONSTRAINT e2e_token_e2e_address_id_fk; | ||
ALTER TABLE e2e_token VALIDATE CONSTRAINT e2e_token_e2e_flow_id_fk; | ||
ALTER TABLE e2e_user_posts VALIDATE CONSTRAINT e2e_user_notes_e2e_users_id_fk; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
CREATE TABLE e2e_address ( | ||
id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id) | ||
); | ||
|
||
CREATE TABLE e2e_authors ( | ||
id UUID NOT NULL, | ||
created_at TIMESTAMP NOT NULL, | ||
updated_at TIMESTAMP NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id, created_at, updated_at) | ||
); | ||
|
||
CREATE TABLE e2e_flow ( | ||
id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id) | ||
); | ||
|
||
CREATE TABLE e2e_token ( | ||
id UUID NOT NULL, | ||
token VARCHAR(64) NOT NULL, | ||
e2e_flow_id UUID NOT NULL, | ||
e2e_address_id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
INDEX e2e_token_auto_index_e2e_token_e2e_flow_id_fk (e2e_flow_id ASC), | ||
INDEX e2e_token_auto_index_e2e_token_e2e_address_id_fk (e2e_address_id ASC), | ||
UNIQUE INDEX e2e_token_uq_idx (token ASC), | ||
INDEX e2e_token_idx (token ASC), | ||
FAMILY "primary" (id, token, e2e_flow_id, e2e_address_id) | ||
); | ||
|
||
CREATE TABLE e2e_user_posts ( | ||
id UUID NOT NULL, | ||
content VARCHAR(255) NOT NULL DEFAULT '':::STRING, | ||
slug VARCHAR(32) NOT NULL, | ||
published BOOL NOT NULL DEFAULT false, | ||
author_id UUID NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
UNIQUE INDEX e2e_user_notes_slug_idx (slug ASC), | ||
INDEX e2e_user_notes_auto_index_e2e_user_notes_e2e_users_id_fk (author_id ASC), | ||
INDEX e2e_user_notes_user_id_idx (author_id ASC), | ||
FAMILY "primary" (id, content, slug, published, author_id) | ||
); | ||
|
||
CREATE TABLE schema_migration ( | ||
version VARCHAR(14) NOT NULL, | ||
UNIQUE INDEX schema_migration_version_idx (version ASC), | ||
FAMILY "primary" (version, rowid) | ||
); | ||
|
||
ALTER TABLE e2e_token ADD CONSTRAINT e2e_token_e2e_flow_id_fk FOREIGN KEY (e2e_flow_id) REFERENCES e2e_flow(id) ON DELETE CASCADE; | ||
ALTER TABLE e2e_token ADD CONSTRAINT e2e_token_e2e_address_id_fk FOREIGN KEY (e2e_address_id) REFERENCES e2e_address(id) ON DELETE CASCADE; | ||
ALTER TABLE e2e_user_posts ADD CONSTRAINT e2e_user_notes_e2e_users_id_fk FOREIGN KEY (author_id) REFERENCES e2e_authors(id) ON DELETE CASCADE; | ||
|
||
-- Validate foreign key constraints. These can fail if there was unvalidated data during the dump. | ||
ALTER TABLE e2e_token VALIDATE CONSTRAINT e2e_token_e2e_flow_id_fk; | ||
ALTER TABLE e2e_token VALIDATE CONSTRAINT e2e_token_e2e_address_id_fk; | ||
ALTER TABLE e2e_user_posts VALIDATE CONSTRAINT e2e_user_notes_e2e_users_id_fk; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
CREATE TABLE e2e_address ( | ||
id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id) | ||
); | ||
|
||
CREATE TABLE e2e_authors ( | ||
id UUID NOT NULL, | ||
created_at TIMESTAMP NOT NULL, | ||
updated_at TIMESTAMP NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id, created_at, updated_at) | ||
); | ||
|
||
CREATE TABLE e2e_flow ( | ||
id UUID NOT NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
FAMILY "primary" (id) | ||
); | ||
|
||
CREATE TABLE e2e_token ( | ||
id UUID NOT NULL, | ||
token VARCHAR(64) NOT NULL, | ||
e2e_address_id UUID NOT NULL, | ||
expires_at TIMESTAMP NOT NULL DEFAULT '2000-01-01 00:00:00+00:00':::TIMESTAMP, | ||
issued_at TIMESTAMP NOT NULL DEFAULT '2000-01-01 00:00:00+00:00':::TIMESTAMP, | ||
e2e_flow_id UUID NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
INDEX e2e_token_auto_index_e2e_token_e2e_address_id_fk (e2e_address_id ASC), | ||
UNIQUE INDEX e2e_token_uq_idx (token ASC), | ||
INDEX e2e_token_idx (token ASC), | ||
INDEX e2e_token_auto_index_e2e_token_e2e_flow_id_fk (e2e_flow_id ASC), | ||
FAMILY "primary" (id, token, e2e_address_id, expires_at, issued_at, e2e_flow_id) | ||
); | ||
|
||
CREATE TABLE e2e_user_posts ( | ||
id UUID NOT NULL, | ||
content VARCHAR(255) NOT NULL DEFAULT '':::STRING, | ||
slug VARCHAR(32) NOT NULL, | ||
published BOOL NOT NULL DEFAULT false, | ||
author_id UUID NULL, | ||
CONSTRAINT "primary" PRIMARY KEY (id ASC), | ||
UNIQUE INDEX e2e_user_notes_slug_idx (slug ASC), | ||
INDEX e2e_user_notes_auto_index_e2e_user_notes_e2e_users_id_fk (author_id ASC), | ||
INDEX e2e_user_notes_user_id_idx (author_id ASC), | ||
FAMILY "primary" (id, content, slug, published, author_id) | ||
); | ||
|
||
CREATE TABLE schema_migration ( | ||
version VARCHAR(14) NOT NULL, | ||
UNIQUE INDEX schema_migration_version_idx (version ASC), | ||
FAMILY "primary" (version, rowid) | ||
); | ||
|
||
ALTER TABLE e2e_token ADD CONSTRAINT e2e_token_e2e_address_id_fk FOREIGN KEY (e2e_address_id) REFERENCES e2e_address(id) ON DELETE CASCADE; | ||
ALTER TABLE e2e_token ADD CONSTRAINT e2e_token_e2e_flow_id_fk FOREIGN KEY (e2e_flow_id) REFERENCES e2e_flow(id) ON DELETE CASCADE; | ||
ALTER TABLE e2e_user_posts ADD CONSTRAINT e2e_user_notes_e2e_users_id_fk FOREIGN KEY (author_id) REFERENCES e2e_authors(id) ON DELETE CASCADE; | ||
|
||
-- Validate foreign key constraints. These can fail if there was unvalidated data during the dump. | ||
ALTER TABLE e2e_token VALIDATE CONSTRAINT e2e_token_e2e_address_id_fk; | ||
ALTER TABLE e2e_token VALIDATE CONSTRAINT e2e_token_e2e_flow_id_fk; | ||
ALTER TABLE e2e_user_posts VALIDATE CONSTRAINT e2e_user_notes_e2e_users_id_fk; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.