mirror of
https://github.com/postgres/postgres.git
synced 2025-08-22 21:53:06 +03:00
Remove the new UPSERT command tag and use INSERT instead.
Previously, INSERT with ON CONFLICT DO UPDATE specified used a new command tag -- UPSERT. It was introduced out of concern that INSERT as a command tag would be a misrepresentation for ON CONFLICT DO UPDATE, as some affected rows may actually have been updated. Alvaro Herrera noticed that the implementation of that new command tag was incomplete; in subsequent discussion we concluded that having it doesn't provide benefits that are in line with the compatibility breaks it requires. Catversion bump due to the removal of PlannedStmt->isUpsert. Author: Peter Geoghegan Discussion: 20150520215816.GI5885@postgresql.org
This commit is contained in:
@@ -202,14 +202,8 @@ ProcessQuery(PlannedStmt *plan,
|
||||
lastOid = queryDesc->estate->es_lastoid;
|
||||
else
|
||||
lastOid = InvalidOid;
|
||||
if (plan->isUpsert)
|
||||
snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
|
||||
"UPSERT %u %u",
|
||||
lastOid, queryDesc->estate->es_processed);
|
||||
else
|
||||
snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
|
||||
"INSERT %u %u",
|
||||
lastOid, queryDesc->estate->es_processed);
|
||||
snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
|
||||
"INSERT %u %u", lastOid, queryDesc->estate->es_processed);
|
||||
break;
|
||||
case CMD_UPDATE:
|
||||
snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
|
||||
@@ -1362,10 +1356,7 @@ PortalRunMulti(Portal portal, bool isTopLevel,
|
||||
* 0" here because technically there is no query of the matching tag type,
|
||||
* and printing a non-zero count for a different query type seems wrong,
|
||||
* e.g. an INSERT that does an UPDATE instead should not print "0 1" if
|
||||
* one row was updated (unless the ON CONFLICT DO UPDATE, or "UPSERT"
|
||||
* variant of INSERT was used to update the row, where it's logically a
|
||||
* direct effect of the top level command). See QueryRewrite(), step 3,
|
||||
* for details.
|
||||
* one row was updated. See QueryRewrite(), step 3, for details.
|
||||
*/
|
||||
if (completionTag && completionTag[0] == '\0')
|
||||
{
|
||||
@@ -1375,8 +1366,6 @@ PortalRunMulti(Portal portal, bool isTopLevel,
|
||||
sprintf(completionTag, "SELECT 0 0");
|
||||
else if (strcmp(completionTag, "INSERT") == 0)
|
||||
strcpy(completionTag, "INSERT 0 0");
|
||||
else if (strcmp(completionTag, "UPSERT") == 0)
|
||||
strcpy(completionTag, "UPSERT 0 0");
|
||||
else if (strcmp(completionTag, "UPDATE") == 0)
|
||||
strcpy(completionTag, "UPDATE 0");
|
||||
else if (strcmp(completionTag, "DELETE") == 0)
|
||||
|
Reference in New Issue
Block a user