postgres.git / summary / log / commit / refs
commit d0d3a57bfa18a9188378fe2f9bd94eb939c2ee90
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue May 02 22:05:54 2017 +0000
Ensure commands in extension scripts see the results of preceding DDL.
Due to a missing CommandCounterIncrement() call, parsing of a non-utility
command in an extension script would not see the effects of the immediately
preceding DDL command, unless that command's execution ends with
CommandCounterIncrement() internally ... which some do but many don't.
Report by Philippe Beaudoin, diagnosis by Julien Rouhaud.
Rather remarkably, this bug has evaded detection since extensions were
invented, so back-patch to all supported branches.
Discussion: https://postgr.es/m/2cf7941e-4e41-7714-3de8-37b1a8f74dff@free.fr
src/backend/commands/extension.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index f69a19846fb..39c9411367a 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -703,6 +703,9 @@ execute_sql_string(const char *sql, const char *filename)
List *stmt_list;
ListCell *lc2;
+ /* Be sure parser can see any DDL done so far */
+ CommandCounterIncrement();
+
stmt_list = pg_analyze_and_rewrite(parsetree,
sql,
NULL,
[parent: df53413ba524]