Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wEpIw-004S8x-22 for pgsql-bugs@arkaria.postgresql.org; Mon, 20 Apr 2026 14:08:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wEpIv-003Eqd-2z for pgsql-bugs@arkaria.postgresql.org; Mon, 20 Apr 2026 14:08:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wElCh-001ub7-2o for pgsql-bugs@lists.postgresql.org; Mon, 20 Apr 2026 09:46:07 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wElCf-000000026xz-3vQO for pgsql-bugs@lists.postgresql.org; Mon, 20 Apr 2026 09:46:07 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Message-ID:Date:Reply-To:Cc:From:To:Subject: Content-Transfer-Encoding:MIME-Version:Content-Type:Sender:Content-ID: Content-Description:In-Reply-To:References; bh=iIV3tVHLktjmXUqWYSt8xl8pS8UJ4t78+0jbh0zHigY=; b=eRCdr+dJIc3ebvKxhJCLUXNYBf pBDQohPpK8TYzMPbVCN68SFWZIBuH28Iyl+LKc7/JdytwlUteVA2EYP3Hx25mpWNwDvCNE53dV/G7 v4aSdzJkzGUkfsfm6vzq8kyFDG6qLA3d2SuqvYZvsIAWU5vrobq77e6PC78cdP2jtzYXdegYwcG5q HYpwW0W6wymXkeKTFmeQbmc7foNjAlpA1lumj59jkaq6Cxsa+uz+eUpn9ZE1UXMg2go7WVjMaSRa1 NZRkizKzc2VvWnEqAbBnIX056esnNtHax9LmuTSBUyQ1Ma8HNjieunoYyZuzWLlMDMLDPFcayoD3z et7PYH5w==; Received: from wrigleys.postgresql.org ([2a02:16a8:dc51::60]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wElCe-005fHb-0V for pgsql-bugs@lists.postgresql.org; Mon, 20 Apr 2026 09:46:04 +0000 Received: from localhost ([127.0.0.1] helo=wrigleys.postgresql.org) by wrigleys.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wElCd-00Cfpu-0A for pgsql-bugs@lists.postgresql.org; Mon, 20 Apr 2026 09:46:03 +0000 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: BUG #19464: Server crash (SIGABRT) with UPDATE containing multiple multi-column assignments To: pgsql-bugs@lists.postgresql.org From: PG Bug reporting form Cc: 303677365@qq.com Reply-To: 303677365@qq.com, pgsql-bugs@lists.postgresql.org Date: Mon, 20 Apr 2026 09:45:19 +0000 Message-ID: <19464-9d06e78620c0dfd5@postgresql.org> X-Auto-Response-Suppress: All Auto-Submitted: auto-generated List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk The following bug has been logged on the website: Bug reference: 19464 Logged by: chunling qin Email address: 303677365@qq.com PostgreSQL version: 14.0 Operating system: centos Description: =20 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=3D# CREATE TABLE t1 (a int, b int); UPDATE t1 SET (a) =3D (SELECT 1), -- subquery single-column assignment b =3D 2, -- single-column assignment (a) =3D ROW(1); ERROR: relation "t1" already exists postgres=3D# postgres=3D# 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=3D# postgres=3D# select version(); version =20 ---------------------------------------------------------------------------= ----------- ------------------------------------------------- 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) =3D (SELECT 1), -- subquery single-column assignment b =3D 2, -- single-column assignment (a) =3D 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 =3D=3D 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=3Dyes, CFLAGS includes -g -O0, asserts enabl= ed 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=3D"pstate->p_multiassign_exprs = =3D=3D NIL", errorType=3D"FailedAssertion", fileName=3D"parse_target.c", lineNumber=3D277) at assert.c:69 #4 transformExpressionList (pstate=3D..., exprlist=3D..., exprKind=3DEXPR_KIND_UPDATE_SOURCE, allowDefault=3Dtrue) at parse_target.c:277 #5 transformRowExpr (pstate=3D..., r=3D..., allowDefault=3Dtrue) at parse_expr.c:2086 #6 transformMultiAssignRef (pstate=3D..., maref=3D...) at parse_expr.c:1454 #7 transformExprRecurse (pstate=3D..., expr=3D...) at parse_expr.c:212 #8 transformExpr (pstate=3D..., expr=3D..., exprKind=3DEXPR_KIND_UPDATE_= SOURCE) at parse_expr.c:104 #9 transformTargetEntry (pstate=3D..., node=3D..., ...) at parse_target.c:95 #10 transformTargetList (pstate=3D..., targetlist=3D..., exprKind=3DEXPR_KIND_UPDATE_SOURCE) at parse_target.c:183 #11 transformUpdateTargetList (pstate=3D..., origTlist=3D...) at analyze.c:2308 #12 transformUpdateStmt (pstate=3D..., stmt=3D...) at analyze.c:2283 #13 transformStmt (pstate=3D..., parseTree=3D...) at analyze.c:295 #14 transformOptionalSelectInto (pstate=3D..., parseTree=3D...) at analyze.c:250 #15 transformTopLevelStmt (pstate=3D..., parseTree=3D...) at analyze.c:200 #16 parse_analyze (parseTree=3D..., sourceText=3D"UPDATE t1 SET (a) =3D (= SELECT 1), b =3D 2, (a) =3D ROW(1);", ...) at analyze.c:120 #17 pg_analyze_and_rewrite (...) at postgres.c:637 #18 exec_simple_query (query_string=3D"UPDATE t1 SET (a) =3D (SELECT 1), = b =3D 2, (a) =3D ROW(1);") at postgres.c:1101 #19 PostgresMain (...) at postgres.c:4415 #20 main (argc=3D5, argv=3D...) at main.c:205