| From: | PG Bug reporting form <noreply(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Cc: | 303677365(at)qq(dot)com |
| Subject: | BUG #19464: Server crash (SIGABRT) with UPDATE containing multiple multi-column assignments |
| Date: | 2026-04-20 09:45:19 |
| Message-ID: | 19464-9d06e78620c0dfd5@postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 19464
Logged by: chunling qin
Email address: 303677365(at)qq(dot)com
PostgreSQL version: 14.0
Operating system: centos
Description:
This issue could not be reproduced with the latest version, but we can
easily reproduced by PostgreSQL 14devel. I am submitting this report for
official confirmation.
postgres=# CREATE TABLE t1 (a int, b int);
UPDATE t1
SET (a) = (SELECT 1), -- subquery single-column assignment
b = 2, -- single-column assignment
(a) = ROW(1); ERROR: relation "t1" already exists
postgres=# postgres=# postgres-# postgres-# postgres-#
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=#
postgres=# select version();
version
--------------------------------------------------------------------------------------
-------------------------------------------------
PostgreSQL 14devel on x86_64-pc-linux-gnu, compiled by clang version 17.0.6
(TencentO
S 17.0.6-8.tl4.ap.2), 64-bit (commit:86dc90056d)
(1 row)
Minimal Reproduction:
```
CREATE TABLE t1 (a int, b int);
UPDATE t1
SET (a) = (SELECT 1), -- subquery single-column assignment
b = 2, -- single-column assignment
(a) = ROW(1); -- ROW constructor single-column assignment
```
Crash Summary
The server terminates with SIGABRT due to a failed assertion:
TRAP: FailedAssertion("pstate->p_multiassign_exprs == NIL", File:
"parse_target.c",
Line: 277, PID: 2398140)
Version
- Git commit: 86dc90056dfdbd9d1b891718d2e5614e3e432f35
- Version string: PostgreSQL 14devel (commit 86dc90056d, "Rework planning
and
execution of UPDATE and DELETE.")
- Platform: x86_64-pc-linux-gnu, compiled by clang 17.0.6, 64-bit
- Build config: enable_debug=yes, CFLAGS includes -g -O0, asserts enabled
Full Backtrace
#0 __pthread_kill_implementation () from /lib64/libc.so.6
#1 raise () from /lib64/libc.so.6
#2 abort () from /lib64/libc.so.6
#3 ExceptionalCondition (conditionName="pstate->p_multiassign_exprs ==
NIL",
errorType="FailedAssertion",
fileName="parse_target.c", lineNumber=277)
at assert.c:69
#4 transformExpressionList (pstate=..., exprlist=...,
exprKind=EXPR_KIND_UPDATE_SOURCE,
allowDefault=true)
at parse_target.c:277
#5 transformRowExpr (pstate=..., r=..., allowDefault=true)
at parse_expr.c:2086
#6 transformMultiAssignRef (pstate=..., maref=...)
at parse_expr.c:1454
#7 transformExprRecurse (pstate=..., expr=...)
at parse_expr.c:212
#8 transformExpr (pstate=..., expr=..., exprKind=EXPR_KIND_UPDATE_SOURCE)
at parse_expr.c:104
#9 transformTargetEntry (pstate=..., node=..., ...)
at parse_target.c:95
#10 transformTargetList (pstate=..., targetlist=...,
exprKind=EXPR_KIND_UPDATE_SOURCE)
at parse_target.c:183
#11 transformUpdateTargetList (pstate=..., origTlist=...)
at analyze.c:2308
#12 transformUpdateStmt (pstate=..., stmt=...)
at analyze.c:2283
#13 transformStmt (pstate=..., parseTree=...)
at analyze.c:295
#14 transformOptionalSelectInto (pstate=..., parseTree=...)
at analyze.c:250
#15 transformTopLevelStmt (pstate=..., parseTree=...)
at analyze.c:200
#16 parse_analyze (parseTree=..., sourceText="UPDATE t1 SET (a) = (SELECT
1), b = 2,
(a) = ROW(1);", ...)
at analyze.c:120
#17 pg_analyze_and_rewrite (...)
at postgres.c:637
#18 exec_simple_query (query_string="UPDATE t1 SET (a) = (SELECT 1), b =
2, (a) =
ROW(1);")
at postgres.c:1101
#19 PostgresMain (...)
at postgres.c:4415
#20 main (argc=5, argv=...)
at main.c:205
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andrey Rachitskiy | 2026-04-20 13:38:38 | Re: BUG #19458: OOM killer in jsonb_path_exists_opr (@?) with malformed JSONPath containing non-existent variables |
| Previous Message | PG Bug reporting form | 2026-04-20 09:42:33 | BUG #19463: Server crash (Assertion failure) when using MERGE statement in CTE |