mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
Fix _SPI_execute_plan() for CREATE TABLE IF NOT EXISTS foo AS ...
When IF NOT EXISTS was added to CREATE TABLE AS, this logic didn't get the memo, possibly resulting in an Assert failure. It looks like there would have been no ill effects in a non-Assert build, though. Back-patch to 9.5 where the IF NOT EXISTS option was added. Stas Kelvich
This commit is contained in:
parent
8207c6baf8
commit
079013f0b7
@ -2217,15 +2217,23 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI,
|
|||||||
*/
|
*/
|
||||||
if (IsA(stmt, CreateTableAsStmt))
|
if (IsA(stmt, CreateTableAsStmt))
|
||||||
{
|
{
|
||||||
Assert(strncmp(completionTag, "SELECT ", 7) == 0);
|
CreateTableAsStmt *ctastmt = (CreateTableAsStmt *) stmt;
|
||||||
_SPI_current->processed = strtoul(completionTag + 7,
|
|
||||||
NULL, 10);
|
if (strncmp(completionTag, "SELECT ", 7) == 0)
|
||||||
|
_SPI_current->processed =
|
||||||
|
strtoul(completionTag + 7, NULL, 10);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Must be an IF NOT EXISTS that did nothing */
|
||||||
|
Assert(ctastmt->if_not_exists);
|
||||||
|
_SPI_current->processed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For historical reasons, if CREATE TABLE AS was spelled
|
* For historical reasons, if CREATE TABLE AS was spelled
|
||||||
* as SELECT INTO, return a special return code.
|
* as SELECT INTO, return a special return code.
|
||||||
*/
|
*/
|
||||||
if (((CreateTableAsStmt *) stmt)->is_select_into)
|
if (ctastmt->is_select_into)
|
||||||
res = SPI_OK_SELINTO;
|
res = SPI_OK_SELINTO;
|
||||||
}
|
}
|
||||||
else if (IsA(stmt, CopyStmt))
|
else if (IsA(stmt, CopyStmt))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user