From c9d6c564f4b1097846f5810a0ae2b8f6123f9467 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 2 May 2017 18:05:54 -0400 Subject: [PATCH] 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 8a76301ba97..822c82ee60a 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -708,6 +708,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, -- 2.47.2