diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index af04b051601cf86a58b24a09844c1eb4093fdef4..043baf3c7903577661af3d9107cce621dfcea9cc 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -2564,14 +2564,19 @@ set_deparse_for_query(deparse_namespace *dpns, Query *query, dpns->rtable_columns = lappend(dpns->rtable_columns, palloc0(sizeof(deparse_columns))); - /* Detect whether global uniqueness of USING names is needed */ - dpns->unique_using = has_unnamed_full_join_using((Node *) query->jointree); + /* If it's a utility query, it won't have a jointree */ + if (query->jointree) + { + /* Detect whether global uniqueness of USING names is needed */ + dpns->unique_using = + has_unnamed_full_join_using((Node *) query->jointree); - /* - * Select names for columns merged by USING, via a recursive pass over the - * query jointree. - */ - set_using_names(dpns, (Node *) query->jointree); + /* + * Select names for columns merged by USING, via a recursive pass over + * the query jointree. + */ + set_using_names(dpns, (Node *) query->jointree); + } /* * Now assign remaining column aliases for each RTE. We do this in a diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index dc3c8a83812f80c96410060d507e2b0f664d84df..57ae8427ecd577b5d2f2da6ffe279decce3fec30 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -2573,6 +2573,7 @@ select * from rules_log; 11 | 13 | new (12 rows) +create rule r3 as on delete to rules_src do notify rules_src_deletion; \d+ rules_src Table "public.rules_src" Column | Type | Modifiers | Storage | Stats target | Description @@ -2584,6 +2585,9 @@ Rules: ON UPDATE TO rules_src DO INSERT INTO rules_log (f1, f2, tag) VALUES (old.f1,old.f2,'old'::text), (new.f1,new.f2,'new'::text) r2 AS ON UPDATE TO rules_src DO VALUES (old.f1,old.f2,'old'::text), (new.f1,new.f2,'new'::text) + r3 AS + ON DELETE TO rules_src DO + NOTIFY rules_src_deletion Has OIDs: no -- diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql index 4f49a0deca431a2caecaee8c43d237db949c9153..d5a357108752b1e39b8963e543041c6eea7c9c3d 100644 --- a/src/test/regress/sql/rules.sql +++ b/src/test/regress/sql/rules.sql @@ -970,6 +970,7 @@ create rule r2 as on update to rules_src do also update rules_src set f2 = f2 / 10; select * from rules_src; select * from rules_log; +create rule r3 as on delete to rules_src do notify rules_src_deletion; \d+ rules_src --