# HG changeset patch # User jbe # Date 1544231153 -3600 # Node ID a2c156197bc7881c72dac2218c55348e818b2cb0 # Parent e7f772ca062115f1bd3972d06174afa080e610f7 Fixed wrong constraint "initiative_ids_not_equal" on "battle" table (due to handling of NULLs in CHECK constraints) diff -r e7f772ca0621 -r a2c156197bc7 core.sql --- a/core.sql Sat Dec 08 01:37:23 2018 +0100 +++ b/core.sql Sat Dec 08 02:05:53 2018 +0100 @@ -1018,9 +1018,8 @@ FOREIGN KEY ("issue_id", "losing_initiative_id") REFERENCES "initiative" ("issue_id", "id") ON DELETE CASCADE ON UPDATE CASCADE, "count" INT4 NOT NULL, CONSTRAINT "initiative_ids_not_equal" CHECK ( - "winning_initiative_id" != "losing_initiative_id" OR - ( ("winning_initiative_id" NOTNULL AND "losing_initiative_id" ISNULL) OR - ("winning_initiative_id" ISNULL AND "losing_initiative_id" NOTNULL) ) ) ); + "winning_initiative_id" != "losing_initiative_id" AND + ("winning_initiative_id" NOTNULL OR "losing_initiative_id" NOTNULL) ) ); CREATE UNIQUE INDEX "battle_winning_losing_idx" ON "battle" ("issue_id", "winning_initiative_id", "losing_initiative_id"); CREATE UNIQUE INDEX "battle_winning_null_idx" ON "battle" ("issue_id", "winning_initiative_id") WHERE "losing_initiative_id" ISNULL; CREATE UNIQUE INDEX "battle_null_losing_idx" ON "battle" ("issue_id", "losing_initiative_id") WHERE "winning_initiative_id" ISNULL;