From 30cbc534c2398163264ee4130eec19be2fd5c3fb Mon Sep 17 00:00:00 2001 From: scottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4> Date: Wed, 24 Mar 2010 15:41:40 +0000 Subject: [PATCH] Clear up some muddlement in the design of query.from_relation. The table_alias column should be nullable, but it shouldn't be required to be null for a core table. M Open-ILS/src/sql/Pg/002.schema.config.sql M Open-ILS/src/sql/Pg/008.schema.query.sql A Open-ILS/src/sql/Pg/upgrade/0207.schema.query.nullable-table-alias.sql git-svn-id: svn://svn.open-ils.org/ILS/trunk@15946 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/sql/Pg/002.schema.config.sql | 2 +- Open-ILS/src/sql/Pg/008.schema.query.sql | 4 ++-- .../0207.schema.query.nullable-table-alias.sql | 23 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/0207.schema.query.nullable-table-alias.sql diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index dcb04f16ad..c4820b979c 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -59,7 +59,7 @@ CREATE TABLE config.upgrade_log ( install_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ); -INSERT INTO config.upgrade_log (version) VALUES ('0206'); -- miker +INSERT INTO config.upgrade_log (version) VALUES ('0207'); -- Scott McKellar CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/008.schema.query.sql b/Open-ILS/src/sql/Pg/008.schema.query.sql index e41f56df1b..a95dd0ec80 100644 --- a/Open-ILS/src/sql/Pg/008.schema.query.sql +++ b/Open-ILS/src/sql/Pg/008.schema.query.sql @@ -190,7 +190,7 @@ CREATE TABLE query.from_relation ( class_name TEXT, subquery INT REFERENCES query.stored_query, function_call INT REFERENCES query.expression, - table_alias TEXT NOT NULL, + table_alias TEXT, parent_relation INT REFERENCES query.from_relation ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, @@ -203,7 +203,7 @@ CREATE TABLE query.from_relation ( DEFERRABLE INITIALLY DEFERRED, CONSTRAINT join_or_core CHECK ( ( parent_relation IS NULL AND join_type IS NULL - AND on_clause IS NULL and table_alias IS NULL ) + AND on_clause IS NULL ) OR ( parent_relation IS NOT NULL AND join_type IS NOT NULL AND on_clause IS NOT NULL ) diff --git a/Open-ILS/src/sql/Pg/upgrade/0207.schema.query.nullable-table-alias.sql b/Open-ILS/src/sql/Pg/upgrade/0207.schema.query.nullable-table-alias.sql new file mode 100644 index 0000000000..55f98e09ad --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0207.schema.query.nullable-table-alias.sql @@ -0,0 +1,23 @@ +BEGIN; + +-- Allow table_alias to be nullable, but don't require it +-- to be null for core tables. + +INSERT INTO config.upgrade_log (version) VALUES ('0207'); -- Scott McKellar + +ALTER TABLE query.from_relation + ALTER COLUMN table_alias DROP NOT NULL; + +ALTER TABLE query.from_relation + DROP CONSTRAINT join_or_core; + +ALTER TABLE query.from_relation + ADD CONSTRAINT join_or_core CHECK ( + ( parent_relation IS NULL AND join_type IS NULL + AND on_clause IS NULL ) + OR + ( parent_relation IS NOT NULL AND join_type IS NOT NULL + AND on_clause IS NOT NULL ) + ); + +COMMIT; -- 2.11.0