OSDN Git Service

Fixed bug in rules event qualification output.
authorJan Wieck <JanWieck@Yahoo.com>
Tue, 25 May 1999 08:49:33 +0000 (08:49 +0000)
committerJan Wieck <JanWieck@Yahoo.com>
Tue, 25 May 1999 08:49:33 +0000 (08:49 +0000)
Jan

src/backend/utils/adt/ruleutils.c
src/test/regress/expected/rules.out

index 33777cb..b953567 100644 (file)
@@ -3,7 +3,7 @@
  *                       out of it's tuple
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.13 1999/05/12 17:59:31 wieck Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.14 1999/05/25 08:49:33 wieck Exp $
  *
  *       This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -679,7 +679,7 @@ make_ruledef(HeapTuple ruletup, TupleDesc rulettc)
        /* If the rule has an event qualification, add it */
        if (ev_qual == NULL)
                ev_qual = "";
-       if (strlen(ev_qual) > 0)
+       if (strlen(ev_qual) > 0 && strcmp(ev_qual, "<>") != 0)
        {
                Node       *qual;
                Query      *query;
index 3b57350..d59dfbb 100644 (file)
@@ -1091,34 +1091,34 @@ toyemp            |SELECT "name", "age", "location", '12'::"int4" * "salary" AS
 
 QUERY: SELECT tablename, rulename, definition FROM pg_rules
        ORDER BY tablename, rulename;
-tablename    |rulename       |definition                                                                                                                                                                                                                                                                   
--------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-rtest_emp    |rtest_emp_del  |CREATE RULE "rtest_emp_del" AS ON DELETE TO "rtest_emp" WHERE  DO INSERT INTO "rtest_emplog" ("ename", "who", "action", "newsal", "oldsal") VALUES (current."ename", "getpgusername"(), 'fired'::"bpchar", '$0.00'::"money", current."salary");                              
-rtest_emp    |rtest_emp_ins  |CREATE RULE "rtest_emp_ins" AS ON INSERT TO "rtest_emp" WHERE  DO INSERT INTO "rtest_emplog" ("ename", "who", "action", "newsal", "oldsal") VALUES (new."ename", "getpgusername"(), 'hired'::"bpchar", new."salary", '$0.00'::"money");                                      
-rtest_emp    |rtest_emp_upd  |CREATE RULE "rtest_emp_upd" AS ON UPDATE TO "rtest_emp" WHERE new."salary" <> current."salary" DO INSERT INTO "rtest_emplog" ("ename", "who", "action", "newsal", "oldsal") VALUES (new."ename", "getpgusername"(), 'honored'::"bpchar", new."salary", current."salary");    
-rtest_nothn1 |rtest_nothn_r1 |CREATE RULE "rtest_nothn_r1" AS ON INSERT TO "rtest_nothn1" WHERE (new."a" >= '10'::"int4") AND (new."a" < '20'::"int4") DO INSTEAD SELECT '1'::"int4";                                                                                                                      
-rtest_nothn1 |rtest_nothn_r2 |CREATE RULE "rtest_nothn_r2" AS ON INSERT TO "rtest_nothn1" WHERE (new."a" >= '30'::"int4") AND (new."a" < '40'::"int4") DO INSTEAD NOTHING;                                                                                                                                 
-rtest_nothn2 |rtest_nothn_r3 |CREATE RULE "rtest_nothn_r3" AS ON INSERT TO "rtest_nothn2" WHERE new."a" >= '100'::"int4" DO INSTEAD INSERT INTO "rtest_nothn3" ("a", "b") VALUES (new."a", new."b");                                                                                                       
-rtest_nothn2 |rtest_nothn_r4 |CREATE RULE "rtest_nothn_r4" AS ON INSERT TO "rtest_nothn2" WHERE  DO INSTEAD NOTHING;                                                                                                                                                                                       
-rtest_order1 |rtest_order_r1 |CREATE RULE "rtest_order_r1" AS ON INSERT TO "rtest_order1" WHERE  DO INSTEAD INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 1 - this should run 3rd or 4th'::"text");                                                    
-rtest_order1 |rtest_order_r2 |CREATE RULE "rtest_order_r2" AS ON INSERT TO "rtest_order1" WHERE  DO INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 2 - this should run 1st'::"text");                                                                   
-rtest_order1 |rtest_order_r3 |CREATE RULE "rtest_order_r3" AS ON INSERT TO "rtest_order1" WHERE  DO INSTEAD INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 3 - this should run 3rd or 4th'::"text");                                                    
-rtest_order1 |rtest_order_r4 |CREATE RULE "rtest_order_r4" AS ON INSERT TO "rtest_order1" WHERE "a" < '100'::"int4" DO INSTEAD INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 4 - this should run 2nd'::"text");                                        
-rtest_person |rtest_pers_del |CREATE RULE "rtest_pers_del" AS ON DELETE TO "rtest_person" WHERE  DO DELETE FROM "rtest_admin" WHERE "pname" = current."pname";                                                                                                                                             
-rtest_person |rtest_pers_upd |CREATE RULE "rtest_pers_upd" AS ON UPDATE TO "rtest_person" WHERE  DO UPDATE rtest_admin SET "pname" = new."pname" WHERE "pname" = current."pname";                                                                                                                          
-rtest_system |rtest_sys_del  |CREATE RULE "rtest_sys_del" AS ON DELETE TO "rtest_system" WHERE  DO (DELETE FROM "rtest_interface" WHERE "sysname" = current."sysname"; DELETE FROM "rtest_admin" WHERE "sysname" = current."sysname"; );                                                                   
-rtest_system |rtest_sys_upd  |CREATE RULE "rtest_sys_upd" AS ON UPDATE TO "rtest_system" WHERE  DO (UPDATE rtest_interface SET "sysname" = new."sysname" WHERE "sysname" = current."sysname"; UPDATE rtest_admin SET "sysname" = new."sysname" WHERE "sysname" = current."sysname"; );                     
-rtest_t4     |rtest_t4_ins1  |CREATE RULE "rtest_t4_ins1" AS ON INSERT TO "rtest_t4" WHERE (new."a" >= '10'::"int4") AND (new."a" < '20'::"int4") DO INSTEAD INSERT INTO "rtest_t5" ("a", "b") VALUES (new."a", new."b");                                                                                  
-rtest_t4     |rtest_t4_ins2  |CREATE RULE "rtest_t4_ins2" AS ON INSERT TO "rtest_t4" WHERE (new."a" >= '20'::"int4") AND (new."a" < '30'::"int4") DO INSERT INTO "rtest_t6" ("a", "b") VALUES (new."a", new."b");                                                                                          
-rtest_t5     |rtest_t5_ins   |CREATE RULE "rtest_t5_ins" AS ON INSERT TO "rtest_t5" WHERE new."a" > '15'::"int4" DO INSERT INTO "rtest_t7" ("a", "b") VALUES (new."a", new."b");                                                                                                                           
-rtest_t6     |rtest_t6_ins   |CREATE RULE "rtest_t6_ins" AS ON INSERT TO "rtest_t6" WHERE new."a" > '25'::"int4" DO INSTEAD INSERT INTO "rtest_t8" ("a", "b") VALUES (new."a", new."b");                                                                                                                   
-rtest_v1     |rtest_v1_del   |CREATE RULE "rtest_v1_del" AS ON DELETE TO "rtest_v1" WHERE  DO INSTEAD DELETE FROM "rtest_t1" WHERE "a" = current."a";                                                                                                                                                      
-rtest_v1     |rtest_v1_ins   |CREATE RULE "rtest_v1_ins" AS ON INSERT TO "rtest_v1" WHERE  DO INSTEAD INSERT INTO "rtest_t1" ("a", "b") VALUES (new."a", new."b");                                                                                                                                         
-rtest_v1     |rtest_v1_upd   |CREATE RULE "rtest_v1_upd" AS ON UPDATE TO "rtest_v1" WHERE  DO INSTEAD UPDATE rtest_t1 SET "a" = new."a", "b" = new."b" WHERE "a" = current."a";                                                                                                                            
-shoelace     |shoelace_del   |CREATE RULE "shoelace_del" AS ON DELETE TO "shoelace" WHERE  DO INSTEAD DELETE FROM "shoelace_data" WHERE "sl_name" = current."sl_name";                                                                                                                                     
-shoelace     |shoelace_ins   |CREATE RULE "shoelace_ins" AS ON INSERT TO "shoelace" WHERE  DO INSTEAD INSERT INTO "shoelace_data" ("sl_name", "sl_avail", "sl_color", "sl_len", "sl_unit") VALUES (new."sl_name", new."sl_avail", new."sl_color", new."sl_len", new."sl_unit");                            
-shoelace     |shoelace_upd   |CREATE RULE "shoelace_upd" AS ON UPDATE TO "shoelace" WHERE  DO INSTEAD UPDATE shoelace_data SET "sl_name" = new."sl_name", "sl_avail" = new."sl_avail", "sl_color" = new."sl_color", "sl_len" = new."sl_len", "sl_unit" = new."sl_unit" WHERE "sl_name" = current."sl_name";
-shoelace_data|log_shoelace   |CREATE RULE "log_shoelace" AS ON UPDATE TO "shoelace_data" WHERE new."sl_avail" <> current."sl_avail" DO INSERT INTO "shoelace_log" ("sl_name", "sl_avail", "log_who", "log_when") VALUES (new."sl_name", new."sl_avail", 'Al Bundy'::"name", "datetime"('epoch'::"text"));  
-shoelace_ok  |shoelace_ok_ins|CREATE RULE "shoelace_ok_ins" AS ON INSERT TO "shoelace_ok" WHERE  DO INSTEAD UPDATE shoelace SET "sl_avail" = "sl_avail" + new."ok_quant" WHERE "sl_name" = new."ok_name";                                                                                                  
+tablename    |rulename       |definition                                                                                                                                                                                                                                                                 
+-------------+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+rtest_emp    |rtest_emp_del  |CREATE RULE "rtest_emp_del" AS ON DELETE TO "rtest_emp" DO INSERT INTO "rtest_emplog" ("ename", "who", "action", "newsal", "oldsal") VALUES (current."ename", "getpgusername"(), 'fired'::"bpchar", '$0.00'::"money", current."salary");                                   
+rtest_emp    |rtest_emp_ins  |CREATE RULE "rtest_emp_ins" AS ON INSERT TO "rtest_emp" DO INSERT INTO "rtest_emplog" ("ename", "who", "action", "newsal", "oldsal") VALUES (new."ename", "getpgusername"(), 'hired'::"bpchar", new."salary", '$0.00'::"money");                                           
+rtest_emp    |rtest_emp_upd  |CREATE RULE "rtest_emp_upd" AS ON UPDATE TO "rtest_emp" WHERE new."salary" <> current."salary" DO INSERT INTO "rtest_emplog" ("ename", "who", "action", "newsal", "oldsal") VALUES (new."ename", "getpgusername"(), 'honored'::"bpchar", new."salary", current."salary");  
+rtest_nothn1 |rtest_nothn_r1 |CREATE RULE "rtest_nothn_r1" AS ON INSERT TO "rtest_nothn1" WHERE (new."a" >= '10'::"int4") AND (new."a" < '20'::"int4") DO INSTEAD SELECT '1'::"int4";                                                                                                                    
+rtest_nothn1 |rtest_nothn_r2 |CREATE RULE "rtest_nothn_r2" AS ON INSERT TO "rtest_nothn1" WHERE (new."a" >= '30'::"int4") AND (new."a" < '40'::"int4") DO INSTEAD NOTHING;                                                                                                                               
+rtest_nothn2 |rtest_nothn_r3 |CREATE RULE "rtest_nothn_r3" AS ON INSERT TO "rtest_nothn2" WHERE new."a" >= '100'::"int4" DO INSTEAD INSERT INTO "rtest_nothn3" ("a", "b") VALUES (new."a", new."b");                                                                                                     
+rtest_nothn2 |rtest_nothn_r4 |CREATE RULE "rtest_nothn_r4" AS ON INSERT TO "rtest_nothn2" DO INSTEAD NOTHING;                                                                                                                                                                                            
+rtest_order1 |rtest_order_r1 |CREATE RULE "rtest_order_r1" AS ON INSERT TO "rtest_order1" DO INSTEAD INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 1 - this should run 3rd or 4th'::"text");                                                         
+rtest_order1 |rtest_order_r2 |CREATE RULE "rtest_order_r2" AS ON INSERT TO "rtest_order1" DO INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 2 - this should run 1st'::"text");                                                                        
+rtest_order1 |rtest_order_r3 |CREATE RULE "rtest_order_r3" AS ON INSERT TO "rtest_order1" DO INSTEAD INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 3 - this should run 3rd or 4th'::"text");                                                         
+rtest_order1 |rtest_order_r4 |CREATE RULE "rtest_order_r4" AS ON INSERT TO "rtest_order1" WHERE "a" < '100'::"int4" DO INSTEAD INSERT INTO "rtest_order2" ("a", "b", "c") VALUES (new."a", "nextval"('rtest_seq'::"text"), 'rule 4 - this should run 2nd'::"text");                                      
+rtest_person |rtest_pers_del |CREATE RULE "rtest_pers_del" AS ON DELETE TO "rtest_person" DO DELETE FROM "rtest_admin" WHERE "pname" = current."pname";                                                                                                                                                  
+rtest_person |rtest_pers_upd |CREATE RULE "rtest_pers_upd" AS ON UPDATE TO "rtest_person" DO UPDATE rtest_admin SET "pname" = new."pname" WHERE "pname" = current."pname";                                                                                                                               
+rtest_system |rtest_sys_del  |CREATE RULE "rtest_sys_del" AS ON DELETE TO "rtest_system" DO (DELETE FROM "rtest_interface" WHERE "sysname" = current."sysname"; DELETE FROM "rtest_admin" WHERE "sysname" = current."sysname"; );                                                                        
+rtest_system |rtest_sys_upd  |CREATE RULE "rtest_sys_upd" AS ON UPDATE TO "rtest_system" DO (UPDATE rtest_interface SET "sysname" = new."sysname" WHERE "sysname" = current."sysname"; UPDATE rtest_admin SET "sysname" = new."sysname" WHERE "sysname" = current."sysname"; );                          
+rtest_t4     |rtest_t4_ins1  |CREATE RULE "rtest_t4_ins1" AS ON INSERT TO "rtest_t4" WHERE (new."a" >= '10'::"int4") AND (new."a" < '20'::"int4") DO INSTEAD INSERT INTO "rtest_t5" ("a", "b") VALUES (new."a", new."b");                                                                                
+rtest_t4     |rtest_t4_ins2  |CREATE RULE "rtest_t4_ins2" AS ON INSERT TO "rtest_t4" WHERE (new."a" >= '20'::"int4") AND (new."a" < '30'::"int4") DO INSERT INTO "rtest_t6" ("a", "b") VALUES (new."a", new."b");                                                                                        
+rtest_t5     |rtest_t5_ins   |CREATE RULE "rtest_t5_ins" AS ON INSERT TO "rtest_t5" WHERE new."a" > '15'::"int4" DO INSERT INTO "rtest_t7" ("a", "b") VALUES (new."a", new."b");                                                                                                                         
+rtest_t6     |rtest_t6_ins   |CREATE RULE "rtest_t6_ins" AS ON INSERT TO "rtest_t6" WHERE new."a" > '25'::"int4" DO INSTEAD INSERT INTO "rtest_t8" ("a", "b") VALUES (new."a", new."b");                                                                                                                 
+rtest_v1     |rtest_v1_del   |CREATE RULE "rtest_v1_del" AS ON DELETE TO "rtest_v1" DO INSTEAD DELETE FROM "rtest_t1" WHERE "a" = current."a";                                                                                                                                                           
+rtest_v1     |rtest_v1_ins   |CREATE RULE "rtest_v1_ins" AS ON INSERT TO "rtest_v1" DO INSTEAD INSERT INTO "rtest_t1" ("a", "b") VALUES (new."a", new."b");                                                                                                                                              
+rtest_v1     |rtest_v1_upd   |CREATE RULE "rtest_v1_upd" AS ON UPDATE TO "rtest_v1" DO INSTEAD UPDATE rtest_t1 SET "a" = new."a", "b" = new."b" WHERE "a" = current."a";                                                                                                                                 
+shoelace     |shoelace_del   |CREATE RULE "shoelace_del" AS ON DELETE TO "shoelace" DO INSTEAD DELETE FROM "shoelace_data" WHERE "sl_name" = current."sl_name";                                                                                                                                          
+shoelace     |shoelace_ins   |CREATE RULE "shoelace_ins" AS ON INSERT TO "shoelace" DO INSTEAD INSERT INTO "shoelace_data" ("sl_name", "sl_avail", "sl_color", "sl_len", "sl_unit") VALUES (new."sl_name", new."sl_avail", new."sl_color", new."sl_len", new."sl_unit");                                 
+shoelace     |shoelace_upd   |CREATE RULE "shoelace_upd" AS ON UPDATE TO "shoelace" DO INSTEAD UPDATE shoelace_data SET "sl_name" = new."sl_name", "sl_avail" = new."sl_avail", "sl_color" = new."sl_color", "sl_len" = new."sl_len", "sl_unit" = new."sl_unit" WHERE "sl_name" = current."sl_name";     
+shoelace_data|log_shoelace   |CREATE RULE "log_shoelace" AS ON UPDATE TO "shoelace_data" WHERE new."sl_avail" <> current."sl_avail" DO INSERT INTO "shoelace_log" ("sl_name", "sl_avail", "log_who", "log_when") VALUES (new."sl_name", new."sl_avail", 'Al Bundy'::"name", "datetime"('epoch'::"text"));
+shoelace_ok  |shoelace_ok_ins|CREATE RULE "shoelace_ok_ins" AS ON INSERT TO "shoelace_ok" DO INSTEAD UPDATE shoelace SET "sl_avail" = "sl_avail" + new."ok_quant" WHERE "sl_name" = new."ok_name";                                                                                                       
 (27 rows)