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

Commit d56b8b4

Browse files
committed
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
1 parent f06caa0 commit d56b8b4

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/backend/commands/extension.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,9 @@ execute_sql_string(const char *sql, const char *filename)
706706
List *stmt_list;
707707
ListCell *lc2;
708708

709+
/* Be sure parser can see any DDL done so far */
710+
CommandCounterIncrement();
711+
709712
stmt_list = pg_analyze_and_rewrite(parsetree,
710713
sql,
711714
NULL,
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
/* src/test/modules/test_extensions/test_ext3--1.0.sql */
22
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
33
\echo Use "CREATE EXTENSION test_ext3" to load this file. \quit
4+
5+
CREATE TABLE test_ext3_table (col_old INT);
6+
7+
ALTER TABLE test_ext3_table RENAME col_old TO col_new;
8+
9+
UPDATE test_ext3_table SET col_new = 0;

0 commit comments

Comments
 (0)