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 1wwcXD-0025i7-2L for pgsql-bugs@arkaria.postgresql.org; Wed, 19 Aug 2026 09:24:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wwcXB-002cZM-2t for pgsql-bugs@arkaria.postgresql.org; Wed, 19 Aug 2026 09:24:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wwXKT-001MPa-2r for pgsql-bugs@lists.postgresql.org; Wed, 19 Aug 2026 03:51:07 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wwXKT-00000001KSU-26u0 for pgsql-bugs@lists.postgresql.org; Wed, 19 Aug 2026 03:51:06 +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=1MZNkeFcuBce7OWLjR1kEwanTmGwxpRYmHZax4RTx68=; b=OyltT+Jk+hGu8PWAIHEUueM6BE ZNE+xcib37zgK0n3TYzHiNkh+hFu1EAchf2331lqIyt8XiH5HXg/wb6n8+Et5O8nNLkoayiF8XGMd z+CDTAIp9rbUp635leydTsUZ9HTSgnhNgNaavj5ICD87FKg6ZzUyPzpOK6pYKW2zIWrxUMuFpHoB8 zx30aFjCAfODJeSyoaZfNskUjPqWKwQQhMnc15Q/dwHLSOgrT3LbnK1ZJjPPMyQY+NDrjtYG3xdoL QSmP8RsJ+8Kuf6nYd/njwL4eNGJN908PwPzZ4rQ7KXcBKt3M7AYittkJ4ju/k2soytS8zzD3joUOc kMeXQ91Q==; 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 1wwXKT-0043qj-0v for pgsql-bugs@lists.postgresql.org; Wed, 19 Aug 2026 03:51:05 +0000 Received: from localhost ([127.0.0.1] helo=wrigleys.postgresql.org) by wrigleys.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1wwXKR-0000000AXsX-3Bfp for pgsql-bugs@lists.postgresql.org; Wed, 19 Aug 2026 03:51:03 +0000 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: BUG #19629: pg_restore_relation_stats reports XX000 instead of proper SQLSTATE for input validation errors To: pgsql-bugs@lists.postgresql.org From: PG Bug reporting form Cc: hackerzheng666@gmail.com Reply-To: hackerzheng666@gmail.com, pgsql-bugs@lists.postgresql.org Date: Wed, 19 Aug 2026 03:50:55 +0000 Message-ID: <19629-76babc04b683594d@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: 19629 Logged by: Zheng Hacker Email address: hackerzheng666@gmail.com PostgreSQL version: 19beta3 Operating system: Linux x86_64 Description: =20 PostgreSQL version: 20devel (commit bdbf662, 2026-08-19) OS: Linux x86_64 =20 Four ereport(ERROR, ...) calls in src/backend/statistics/stat_utils.c (function stats_fill_fcinfo_from_arg_pairs) are missing errcode(), causing user input validation errors to return SQLSTATE XX000 (internal_error) instead of proper error codes. =20 Reproducers (with \set VERBOSITY verbose): =20 -- 1. Odd number of variadic args (line 372) SELECT pg_restore_relation_stats('schemaname', 'stats_import', 'relname'); -- ERROR: XX000: variadic arguments must be name/value pairs -- LOCATION: stats_fill_fcinfo_from_arg_pairs, stat_utils.c:372 =20 -- 2. NULL argument name (line 387) SELECT pg_restore_relation_stats( 'schemaname', 'stats_import', 'relname', 'test', NULL, '17'::integer); -- ERROR: XX000: name at variadic position 5 is null -- LOCATION: stats_fill_fcinfo_from_arg_pairs, stat_utils.c:387 =20 -- 3. Wrong argument name type (line 391) SELECT pg_restore_relation_stats(42, 'stats_import', 'relname', 'test'); -- ERROR: XX000: name at variadic position 1 has type integer, expected type text -- LOCATION: stats_fill_fcinfo_from_arg_pairs, stat_utils.c:391 =20 A fourth site at line 656 has the same missing errcode pattern. =20 Suggested fix: add errcode() to each ereport call (ERRCODE_INVALID_PARAMETER_VALUE, ERRCODE_NULL_VALUE_NOT_ALLOWED, ERRCODE_DATATYPE_MISMATCH respectively). =20 Found by automated SQL fuzzing. Credit: Zheng Wang, Yanjie Zhao, Yiyang Liu