unapi - restore PostgreSQL 9.0 compatibility
authorDan Scott <dan@coffeecode.net>
Thu, 15 Mar 2012 04:28:21 +0000 (00:28 -0400)
committerDan Scott <dan@coffeecode.net>
Sat, 17 Mar 2012 18:24:39 +0000 (14:24 -0400)
By leaving the age_protect attribute off of the list of GROUP BY fields,
I broke compatibility with PostgreSQL 9.0 (which is more strict than
9.1 about such things - a rare case where PostgreSQL gets less strict as
the version number increases!).

Thanks to Ben Shum and Jason Stephenson for flagging this issue during
their testing and suggesting the fix.

Signed-off-by: Dan Scott <dan@coffeecode.net>
Open-ILS/src/sql/Pg/990.schema.unapi.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi_limit_rank.sql

index 607ea12..f083977 100644 (file)
@@ -837,7 +837,10 @@ CREATE OR REPLACE FUNCTION unapi.acp ( obj_id BIGINT, format TEXT,  ename TEXT,
           FROM  asset.copy cp
           WHERE id = $1
               AND cp.deleted IS FALSE
-          GROUP BY id, status, location, circ_lib, call_number, create_date, edit_date, copy_number, circulate, deposit, ref, holdable, deleted, deposit_amount, price, barcode, circ_modifier, circ_as_type, opac_visible;
+          GROUP BY id, status, location, circ_lib, call_number, create_date,
+              edit_date, copy_number, circulate, deposit, ref, holdable,
+              deleted, deposit_amount, price, barcode, circ_modifier,
+              circ_as_type, opac_visible, age_protect;
 $F$ LANGUAGE SQL;
 
 CREATE OR REPLACE FUNCTION unapi.sunit ( obj_id BIGINT, format TEXT,  ename TEXT, includes TEXT[], org TEXT, depth INT DEFAULT NULL, slimit HSTORE DEFAULT NULL, soffset HSTORE DEFAULT NULL, include_xmlns BOOL DEFAULT TRUE ) RETURNS XML AS $F$
@@ -917,8 +920,12 @@ CREATE OR REPLACE FUNCTION unapi.sunit ( obj_id BIGINT, format TEXT,  ename TEXT
           FROM  serial.unit cp
           WHERE id = $1
               AND cp.deleted IS FALSE
-          GROUP BY  id, status, location, circ_lib, call_number, create_date, edit_date, copy_number, circulate, floating, mint_condition,
-                    deposit, ref, holdable, deleted, deposit_amount, price, barcode, circ_modifier, circ_as_type, opac_visible, status_changed_time, detailed_contents, sort_key, summary_contents, cost;
+          GROUP BY id, status, location, circ_lib, call_number, create_date,
+              edit_date, copy_number, circulate, floating, mint_condition,
+              deposit, ref, holdable, deleted, deposit_amount, price,
+              barcode, circ_modifier, circ_as_type, opac_visible,
+              status_changed_time, detailed_contents, sort_key,
+              summary_contents, cost, age_protect;
 $F$ LANGUAGE SQL;
 
 CREATE OR REPLACE FUNCTION unapi.acn ( obj_id BIGINT, format TEXT,  ename TEXT, includes TEXT[], org TEXT, depth INT DEFAULT NULL, slimit HSTORE DEFAULT NULL, soffset HSTORE DEFAULT NULL, include_xmlns BOOL DEFAULT TRUE ) RETURNS XML AS $F$
index 055de9c..dfb4252 100644 (file)
@@ -863,7 +863,10 @@ CREATE OR REPLACE FUNCTION unapi.acp ( obj_id BIGINT, format TEXT,  ename TEXT,
           FROM  asset.copy cp
           WHERE id = $1
               AND cp.deleted IS FALSE
-          GROUP BY id, status, location, circ_lib, call_number, create_date, edit_date, copy_number, circulate, deposit, ref, holdable, deleted, deposit_amount, price, barcode, circ_modifier, circ_as_type, opac_visible;
+          GROUP BY id, status, location, circ_lib, call_number, create_date,
+              edit_date, copy_number, circulate, deposit, ref, holdable,
+              deleted, deposit_amount, price, barcode, circ_modifier,
+              circ_as_type, opac_visible, age_protect;
 $F$ LANGUAGE SQL;
 
 CREATE OR REPLACE FUNCTION unapi.sunit ( obj_id BIGINT, format TEXT,  ename TEXT, includes TEXT[], org TEXT, depth INT DEFAULT NULL, slimit HSTORE DEFAULT NULL, soffset HSTORE DEFAULT NULL, include_xmlns BOOL DEFAULT TRUE ) RETURNS XML AS $F$
@@ -943,8 +946,12 @@ CREATE OR REPLACE FUNCTION unapi.sunit ( obj_id BIGINT, format TEXT,  ename TEXT
           FROM  serial.unit cp
           WHERE id = $1
               AND cp.deleted IS FALSE
-          GROUP BY  id, status, location, circ_lib, call_number, create_date, edit_date, copy_number, circulate, floating, mint_condition,
-                    deposit, ref, holdable, deleted, deposit_amount, price, barcode, circ_modifier, circ_as_type, opac_visible, status_changed_time, detailed_contents, sort_key, summary_contents, cost;
+          GROUP BY id, status, location, circ_lib, call_number, create_date,
+              edit_date, copy_number, circulate, floating, mint_condition,
+              deposit, ref, holdable, deleted, deposit_amount, price,
+              barcode, circ_modifier, circ_as_type, opac_visible,
+              status_changed_time, detailed_contents, sort_key,
+              summary_contents, cost, age_protect;
 $F$ LANGUAGE SQL;
 
 CREATE OR REPLACE FUNCTION unapi.acn ( obj_id BIGINT, format TEXT,  ename TEXT, includes TEXT[], org TEXT, depth INT DEFAULT NULL, slimit HSTORE DEFAULT NULL, soffset HSTORE DEFAULT NULL, include_xmlns BOOL DEFAULT TRUE ) RETURNS XML AS $F$
@@ -1122,6 +1129,7 @@ EXPLAIN ANALYZE SELECT unapi.bre(216,'marcxml','record','{holdings_xml,bre.unapi
 EXPLAIN ANALYZE SELECT unapi.bre(216,'holdings_xml','record','{}'::TEXT[], 'BR1');
 EXPLAIN ANALYZE SELECT unapi.holdings_xml(216,4,'BR1',2,'{bre}'::TEXT[]);
 EXPLAIN ANALYZE SELECT unapi.bre(216,'mods32','record','{}'::TEXT[], 'BR1');
+
 -- Limit to 5 call numbers, 5 copies, with a preferred library of 4 (BR1), in SYS2 at a depth of 0
 EXPLAIN ANALYZE SELECT unapi.bre(36,'marcxml','record','{holdings_xml,mra,acp,acnp,acns,bmp}','SYS2',0,'acn=>5,acp=>5',NULL,TRUE,4);