Commit 9209e076 authored by Tom Lane's avatar Tom Lane

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
parent 93bbeec6
......@@ -718,6 +718,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,
......
/* src/test/modules/test_extensions/test_ext3--1.0.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION test_ext3" to load this file. \quit
CREATE TABLE test_ext3_table (col_old INT);
ALTER TABLE test_ext3_table RENAME col_old TO col_new;
UPDATE test_ext3_table SET col_new = 0;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment