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

Lines changed: 12 additions & 7 deletions
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

Lines changed: 4 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy