1 -- Add a negate column to most of the query expression views,
2 -- plus a left_operand column in the case of query.expr_xin.
4 -- The DROP VIEW statements will fail harmlessly if the views
5 -- don't exist, and are therefore outside of the transaction.
7 DROP VIEW query.expr_xbet CASCADE;
9 DROP VIEW query.expr_xbool CASCADE;
11 DROP VIEW query.expr_xcase CASCADE;
13 DROP VIEW query.expr_xcast CASCADE;
15 DROP VIEW query.expr_xcol CASCADE;
17 DROP VIEW query.expr_xex CASCADE;
19 DROP VIEW query.expr_xfld CASCADE;
21 DROP VIEW query.expr_xfunc CASCADE;
23 DROP VIEW query.expr_xin CASCADE;
25 DROP VIEW query.expr_xnull CASCADE;
27 DROP VIEW query.expr_xop CASCADE;
29 DROP VIEW query.expr_string CASCADE;
31 DROP VIEW query.expr_xsubq CASCADE;
35 INSERT INTO config.upgrade_log (version) VALUES ('0253'); -- Scott McKellar
37 -- Create updatable views -------------------------------------------
39 -- Create updatable view for BETWEEN expressions
41 CREATE OR REPLACE VIEW query.expr_xbet AS
53 CREATE OR REPLACE RULE query_expr_xbet_insert_rule AS
54 ON INSERT TO query.expr_xbet
56 INSERT INTO query.expression (
64 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
66 COALESCE(NEW.parenthesize, FALSE),
68 COALESCE(NEW.seq_no, 1),
72 CREATE OR REPLACE RULE query_expr_xbet_update_rule AS
73 ON UPDATE TO query.expr_xbet
75 UPDATE query.expression SET
77 parenthesize = NEW.parenthesize,
78 parent_expr = NEW.parent_expr,
84 CREATE OR REPLACE RULE query_expr_xbet_delete_rule AS
85 ON DELETE TO query.expr_xbet
87 DELETE FROM query.expression WHERE id = OLD.id;
89 -- Create updatable view for boolean expressions
91 CREATE OR REPLACE VIEW query.expr_xbool AS
104 CREATE OR REPLACE RULE query_expr_xbool_insert_rule AS
105 ON INSERT TO query.expr_xbool
107 INSERT INTO query.expression (
116 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
118 COALESCE(NEW.parenthesize, FALSE),
120 COALESCE(NEW.seq_no, 1),
125 CREATE OR REPLACE RULE query_expr_xbool_update_rule AS
126 ON UPDATE TO query.expr_xbool
128 UPDATE query.expression SET
130 parenthesize = NEW.parenthesize,
131 parent_expr = NEW.parent_expr,
133 literal = NEW.literal,
138 CREATE OR REPLACE RULE query_expr_xbool_delete_rule AS
139 ON DELETE TO query.expr_xbool
141 DELETE FROM query.expression WHERE id = OLD.id;
143 -- Create updatable view for CASE expressions
145 CREATE OR REPLACE VIEW query.expr_xcase AS
157 CREATE OR REPLACE RULE query_expr_xcase_insert_rule AS
158 ON INSERT TO query.expr_xcase
160 INSERT INTO query.expression (
168 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
170 COALESCE(NEW.parenthesize, FALSE),
172 COALESCE(NEW.seq_no, 1),
176 CREATE OR REPLACE RULE query_expr_xcase_update_rule AS
177 ON UPDATE TO query.expr_xcase
179 UPDATE query.expression SET
181 parenthesize = NEW.parenthesize,
182 parent_expr = NEW.parent_expr,
188 CREATE OR REPLACE RULE query_expr_xcase_delete_rule AS
189 ON DELETE TO query.expr_xcase
191 DELETE FROM query.expression WHERE id = OLD.id;
193 -- Create updatable view for cast expressions
195 CREATE OR REPLACE VIEW query.expr_xcast AS
209 CREATE OR REPLACE RULE query_expr_xcast_insert_rule AS
210 ON INSERT TO query.expr_xcast
212 INSERT INTO query.expression (
222 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
224 COALESCE(NEW.parenthesize, FALSE),
226 COALESCE(NEW.seq_no, 1),
232 CREATE OR REPLACE RULE query_expr_xcast_update_rule AS
233 ON UPDATE TO query.expr_xcast
235 UPDATE query.expression SET
237 parenthesize = NEW.parenthesize,
238 parent_expr = NEW.parent_expr,
240 left_operand = NEW.left_operand,
241 cast_type = NEW.cast_type,
246 CREATE OR REPLACE RULE query_expr_xcast_delete_rule AS
247 ON DELETE TO query.expr_xcast
249 DELETE FROM query.expression WHERE id = OLD.id;
251 -- Create updatable view for column expressions
253 CREATE OR REPLACE VIEW query.expr_xcol AS
267 CREATE OR REPLACE RULE query_expr_xcol_insert_rule AS
268 ON INSERT TO query.expr_xcol
270 INSERT INTO query.expression (
280 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
282 COALESCE(NEW.parenthesize, FALSE),
284 COALESCE(NEW.seq_no, 1),
290 CREATE OR REPLACE RULE query_expr_xcol_update_rule AS
291 ON UPDATE TO query.expr_xcol
293 UPDATE query.expression SET
295 parenthesize = NEW.parenthesize,
296 parent_expr = NEW.parent_expr,
298 table_alias = NEW.table_alias,
299 column_name = NEW.column_name,
304 CREATE OR REPLACE RULE query_expr_xcol_delete_rule AS
305 ON DELETE TO query.expr_xcol
307 DELETE FROM query.expression WHERE id = OLD.id;
309 -- Create updatable view for EXISTS expressions
311 CREATE OR REPLACE VIEW query.expr_xex AS
324 CREATE OR REPLACE RULE query_expr_xex_insert_rule AS
325 ON INSERT TO query.expr_xex
327 INSERT INTO query.expression (
336 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
338 COALESCE(NEW.parenthesize, FALSE),
340 COALESCE(NEW.seq_no, 1),
345 CREATE OR REPLACE RULE query_expr_xex_update_rule AS
346 ON UPDATE TO query.expr_xex
348 UPDATE query.expression SET
350 parenthesize = NEW.parenthesize,
351 parent_expr = NEW.parent_expr,
353 subquery = NEW.subquery,
358 CREATE OR REPLACE RULE query_expr_xex_delete_rule AS
359 ON DELETE TO query.expr_xex
361 DELETE FROM query.expression WHERE id = OLD.id;
363 -- Create updatable view for field expressions
365 CREATE OR REPLACE VIEW query.expr_xfld AS
379 CREATE OR REPLACE RULE query_expr_xfld_insert_rule AS
380 ON INSERT TO query.expr_xfld
382 INSERT INTO query.expression (
392 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
394 COALESCE(NEW.parenthesize, FALSE),
396 COALESCE(NEW.seq_no, 1),
402 CREATE OR REPLACE RULE query_expr_xfld_update_rule AS
403 ON UPDATE TO query.expr_xfld
405 UPDATE query.expression SET
407 parenthesize = NEW.parenthesize,
408 parent_expr = NEW.parent_expr,
410 column_name = NEW.column_name,
411 left_operand = NEW.left_operand,
416 CREATE OR REPLACE RULE query_expr_xfld_delete_rule AS
417 ON DELETE TO query.expr_xfld
419 DELETE FROM query.expression WHERE id = OLD.id;
421 -- Create updatable view for function call expressions
423 CREATE OR REPLACE VIEW query.expr_xfunc AS
436 CREATE OR REPLACE RULE query_expr_xfunc_insert_rule AS
437 ON INSERT TO query.expr_xfunc
439 INSERT INTO query.expression (
448 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
450 COALESCE(NEW.parenthesize, FALSE),
452 COALESCE(NEW.seq_no, 1),
457 CREATE OR REPLACE RULE query_expr_xfunc_update_rule AS
458 ON UPDATE TO query.expr_xfunc
460 UPDATE query.expression SET
462 parenthesize = NEW.parenthesize,
463 parent_expr = NEW.parent_expr,
465 function_id = NEW.function_id,
470 CREATE OR REPLACE RULE query_expr_xfunc_delete_rule AS
471 ON DELETE TO query.expr_xfunc
473 DELETE FROM query.expression WHERE id = OLD.id;
475 -- Create updatable view for IN expressions
477 CREATE OR REPLACE VIEW query.expr_xin AS
491 CREATE OR REPLACE RULE query_expr_xin_insert_rule AS
492 ON INSERT TO query.expr_xin
494 INSERT INTO query.expression (
504 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
506 COALESCE(NEW.parenthesize, FALSE),
508 COALESCE(NEW.seq_no, 1),
514 CREATE OR REPLACE RULE query_expr_xin_update_rule AS
515 ON UPDATE TO query.expr_xin
517 UPDATE query.expression SET
519 parenthesize = NEW.parenthesize,
520 parent_expr = NEW.parent_expr,
522 left_operand = NEW.left_operand,
523 subquery = NEW.subquery,
528 CREATE OR REPLACE RULE query_expr_xin_delete_rule AS
529 ON DELETE TO query.expr_xin
531 DELETE FROM query.expression WHERE id = OLD.id;
533 -- Create updatable view for NULL expressions
535 CREATE OR REPLACE VIEW query.expr_xnull AS
547 CREATE OR REPLACE RULE query_expr_xnull_insert_rule AS
548 ON INSERT TO query.expr_xnull
550 INSERT INTO query.expression (
558 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
560 COALESCE(NEW.parenthesize, FALSE),
562 COALESCE(NEW.seq_no, 1),
566 CREATE OR REPLACE RULE query_expr_xnull_update_rule AS
567 ON UPDATE TO query.expr_xnull
569 UPDATE query.expression SET
571 parenthesize = NEW.parenthesize,
572 parent_expr = NEW.parent_expr,
578 CREATE OR REPLACE RULE query_expr_xnull_delete_rule AS
579 ON DELETE TO query.expr_xnull
581 DELETE FROM query.expression WHERE id = OLD.id;
583 -- Create updatable view for operator expressions
585 CREATE OR REPLACE VIEW query.expr_xop AS
600 CREATE OR REPLACE RULE query_expr_xop_insert_rule AS
601 ON INSERT TO query.expr_xop
603 INSERT INTO query.expression (
614 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
616 COALESCE(NEW.parenthesize, FALSE),
618 COALESCE(NEW.seq_no, 1),
625 CREATE OR REPLACE RULE query_expr_xop_update_rule AS
626 ON UPDATE TO query.expr_xop
628 UPDATE query.expression SET
630 parenthesize = NEW.parenthesize,
631 parent_expr = NEW.parent_expr,
633 left_operand = NEW.left_operand,
634 operator = NEW.operator,
635 right_operand = NEW.right_operand,
640 CREATE OR REPLACE RULE query_expr_xop_delete_rule AS
641 ON DELETE TO query.expr_xop
643 DELETE FROM query.expression WHERE id = OLD.id;
645 -- Create updatable view for string literal expressions
647 CREATE OR REPLACE VIEW query.expr_xstr AS
659 CREATE OR REPLACE RULE query_expr_string_insert_rule AS
660 ON INSERT TO query.expr_xstr
662 INSERT INTO query.expression (
670 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
672 COALESCE(NEW.parenthesize, FALSE),
674 COALESCE(NEW.seq_no, 1),
678 CREATE OR REPLACE RULE query_expr_string_update_rule AS
679 ON UPDATE TO query.expr_xstr
681 UPDATE query.expression SET
683 parenthesize = NEW.parenthesize,
684 parent_expr = NEW.parent_expr,
686 literal = NEW.literal
690 CREATE OR REPLACE RULE query_expr_string_delete_rule AS
691 ON DELETE TO query.expr_xstr
693 DELETE FROM query.expression WHERE id = OLD.id;
695 -- Create updatable view for subquery expressions
697 CREATE OR REPLACE VIEW query.expr_xsubq AS
710 CREATE OR REPLACE RULE query_expr_xsubq_insert_rule AS
711 ON INSERT TO query.expr_xsubq
713 INSERT INTO query.expression (
722 COALESCE(NEW.id, NEXTVAL('query.expression_id_seq'::REGCLASS)),
724 COALESCE(NEW.parenthesize, FALSE),
726 COALESCE(NEW.seq_no, 1),
731 CREATE OR REPLACE RULE query_expr_xsubq_update_rule AS
732 ON UPDATE TO query.expr_xsubq
734 UPDATE query.expression SET
736 parenthesize = NEW.parenthesize,
737 parent_expr = NEW.parent_expr,
739 subquery = NEW.subquery,
744 CREATE OR REPLACE RULE query_expr_xsubq_delete_rule AS
745 ON DELETE TO query.expr_xsubq
747 DELETE FROM query.expression WHERE id = OLD.id;