Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 403bd6a

Browse files
committed
Fix crash when trying to display a NOTIFY rule action.
Fixes oversight in commit 2ffa740. Per report from Josh Kupershmidt. I think we've broken this case before, so let's add a regression test this time.
1 parent 6563fb2 commit 403bd6a

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

src/backend/utils/adt/ruleutils.c

+12-7
Original file line numberDiff line numberDiff line change
@@ -2564,14 +2564,19 @@ set_deparse_for_query(deparse_namespace *dpns, Query *query,
25642564
dpns->rtable_columns = lappend(dpns->rtable_columns,
25652565
palloc0(sizeof(deparse_columns)));
25662566

2567-
/* Detect whether global uniqueness of USING names is needed */
2568-
dpns->unique_using = has_unnamed_full_join_using((Node *) query->jointree);
2567+
/* If it's a utility query, it won't have a jointree */
2568+
if (query->jointree)
2569+
{
2570+
/* Detect whether global uniqueness of USING names is needed */
2571+
dpns->unique_using =
2572+
has_unnamed_full_join_using((Node *) query->jointree);
25692573

2570-
/*
2571-
* Select names for columns merged by USING, via a recursive pass over the
2572-
* query jointree.
2573-
*/
2574-
set_using_names(dpns, (Node *) query->jointree);
2574+
/*
2575+
* Select names for columns merged by USING, via a recursive pass over
2576+
* the query jointree.
2577+
*/
2578+
set_using_names(dpns, (Node *) query->jointree);
2579+
}
25752580

25762581
/*
25772582
* Now assign remaining column aliases for each RTE. We do this in a

src/test/regress/expected/rules.out

+4
Original file line numberDiff line numberDiff line change
@@ -2573,6 +2573,7 @@ select * from rules_log;
25732573
11 | 13 | new
25742574
(12 rows)
25752575

2576+
create rule r3 as on delete to rules_src do notify rules_src_deletion;
25762577
\d+ rules_src
25772578
Table "public.rules_src"
25782579
Column | Type | Modifiers | Storage | Stats target | Description
@@ -2584,6 +2585,9 @@ Rules:
25842585
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)
25852586
r2 AS
25862587
ON UPDATE TO rules_src DO VALUES (old.f1,old.f2,'old'::text), (new.f1,new.f2,'new'::text)
2588+
r3 AS
2589+
ON DELETE TO rules_src DO
2590+
NOTIFY rules_src_deletion
25872591
Has OIDs: no
25882592

25892593
--

src/test/regress/sql/rules.sql

+1
Original file line numberDiff line numberDiff line change
@@ -970,6 +970,7 @@ create rule r2 as on update to rules_src do also
970970
update rules_src set f2 = f2 / 10;
971971
select * from rules_src;
972972
select * from rules_log;
973+
create rule r3 as on delete to rules_src do notify rules_src_deletion;
973974
\d+ rules_src
974975

975976
--

0 commit comments

Comments
 (0)