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 1voCvI-00GcyU-21 for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 03:54:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1voCvH-001uZc-1A for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Feb 2026 03:54:23 +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 1voCvG-001uZT-2n for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 03:54:22 +0000 Received: from mail-japanwestazon11021109.outbound.protection.outlook.com ([40.107.74.109] helo=OS0P286CU010.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1voCvD-00000000maM-2Qhz for pgsql-hackers@lists.postgresql.org; Fri, 06 Feb 2026 03:54:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S3gZAoovMNrvIUJomfc9kyRPBRHJWg7F/N/i1IpEw8E+2tTEWOiwRAqlrKUJLgCWXWYa4wQl3FmFuJJBbpEYXgwzP9hcajOYAl+gaz22m+RJ8uyDxtW7XM8cRdoualSc3xMDJgcG9D4qDXdp7d44oSAuyiphd0xA/VkO3S863cGmACqZGd+9TwKTQkASzbox2pxkB2D/gNs6o+742rEP2coIBpZY/pyBu5DPkfeNx5YSennkdELE8XaplTgfQ3jWrDngYxBF4mLbcsNQMWwKN1WKIZWW8qL0A4sWUdFVxJ7P2Zz9ww0Zgj7Zoj+eThPgWNA700/sUF7xco4Qt2TUig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HWokjVjckIGVuBYehbli7dqQG0W5FtNfxnH1VNa4Yv8=; b=oQBqcAt2y6+rm3vjAwqVs2X2mEbWaR4jmepS3jJXN0EouZOTMdcyVADkl0D1ksfjevs/bxWtBeUH6vc0gtHrbkCp/w7Jr1tXmJnJwPL8MapUxrrsliJSHOoHgmslC2wVmiT+sDWwFEinubutVDbCKmw9Mb0iEh7uxS9ff/XlchXQ8HJsTWDKq0L6W7a/a2YpfbsSYaBplSSqUNNB1UC+b3DW5rsz6TRSTonmGj7aT0P/gORC0pj1FmkpLlSyD5ZABbOczNojr2dO9Tx38C8Xc5U456UH2oGIcHjhXA+qCutbiIzgR+Q0gCaZ/DXg3UCSzqv+wbl6eZQJd/YApCXfEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sraoss.co.jp; dmarc=pass action=none header.from=sraoss.co.jp; dkim=pass header.d=sraoss.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sraoss.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HWokjVjckIGVuBYehbli7dqQG0W5FtNfxnH1VNa4Yv8=; b=MyIENvDwYj6DJYIXoZ902/STgHDErwqszYzbGnvoSI9NFINbxp7mypT6BZxccfIZ0YHp7BA9JDd1veV7l8XVkvPxDS5NhavhAyTd87PhO2n0/7lFhqKJoMXvVpXh+OZc0xGu5L8RLNY53/ThbfXTMVFGcASUZ1viaJwa3FsGEBUorH1DUm+nOYvFF6yNn7lVagipqt2CAZC7mb6pLM1+YyvAKWt6AQ8ANr/u/e+o22KPew9nQjZ7JBe98KxmaJnNHg9G8byS1voxdvDH/U9b22uPQSpF7uAfbkBNH4ZE199jGil7yKRKFsnIJvGyF9v3Vjwz6y97ygUzlMTEaEwazQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=sraoss.co.jp; Received: from OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:189::12) by OS9P286MB6599.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:416::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.15; Fri, 6 Feb 2026 03:54:14 +0000 Received: from OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM ([fe80::406d:15ce:1e21:6f81]) by OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM ([fe80::406d:15ce:1e21:6f81%4]) with mapi id 15.20.9587.010; Fri, 6 Feb 2026 03:54:14 +0000 Date: Fri, 6 Feb 2026 12:54:14 +0900 From: Yugo Nagata To: "Matheus Alcantara" Cc: "Peter Eisentraut" , Subject: Re: Show expression of virtual columns in error messages Message-Id: <20260206125414.8f8c5f5735aa34fb05c5cc72@sraoss.co.jp> In-Reply-To: References: <7c18e854-0ddb-4670-b0c4-f2541b5edd91@eisentraut.org> <20260205114521.6fed028d8d3185663f3c4226@sraoss.co.jp> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ClientProxiedBy: OS3PR01CA0014.jpnprd01.prod.outlook.com (2603:1096:604:dc::19) To OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:189::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSZP286MB2160:EE_|OS9P286MB6599:EE_ X-MS-Office365-Filtering-Correlation-Id: 99415822-6fe3-431b-a347-08de653364f4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?v0k6cD+JLg9VHQ36TTd9ujAM+bNmt76iLPe0b2P1+J9dddOt3QQuJiVc92Oe?= =?us-ascii?Q?9mS6rZ6eKQdYhXuekKd121zfYD13yRga3NLz1xqGvhv+kkczrdHRTLnxeNie?= =?us-ascii?Q?tafUjZLNoiovBn3sB76zoyFgsdJ+6ImBItw0l9izkCd5EH3g+te8eTuypS5X?= =?us-ascii?Q?fsVeQb0exksejvDy4Nzzszn0feefjlIFixIxr0uQ4qSqTVkTLEPdiHn9/cq9?= =?us-ascii?Q?qomqhkCFQLvE7qsz7TT0ZnzYw8rRocFhSXJXM68iNVA/UkxEKEHQKAexzUM3?= =?us-ascii?Q?LSUeK7gptlNdehSF/FD8xCo6L7sF1219FCXn9VW6UHf/jeEz1T1A647/1FeA?= =?us-ascii?Q?7KexuKZkOqLX+JsisFwY4cFAuWGIlnJxU3jo0PekHw6O/YeeExInzPwtsHnn?= =?us-ascii?Q?L7w3ijepyDq3/eMsHdHbhnhvb+rWvyoqtLD1C9cXMNssCMopIW019IBX+iBb?= =?us-ascii?Q?ehDSEqA/+t9l9heSiPumzzS4N35iq4AuxFXa/7vZyxfjbQS1PlDJkKvnJ1gD?= =?us-ascii?Q?2QRAzj/5qrCecrFSm6Uw/VE7hoKKvLyAP6ZGF+Ez+x0Q8srQsYpelscq23Xo?= =?us-ascii?Q?7RXlILCi4yNmvxRiL5/7Sz7Qgp/SdrqblsRzMsCWBo2NnL1b/L01F/J2znbH?= =?us-ascii?Q?iGeuYLVJmIUrKSltwsgGqadrJamticBZxfC0DOm7ZBSIOiSwOTfrZZJSD7dg?= =?us-ascii?Q?l8wC7Eq5nfGBegoQ1PQwtK/VAFIMXPbDSFVxXHTvr+qjxFb/M2y1Osnpe7gi?= =?us-ascii?Q?6L4uuRLLcgEk02zN7OBuLtL8XkV6RE5dvioQgh6UiYLhmwLZe5NS5qyNU8QZ?= =?us-ascii?Q?GVKZWqdt4erDN7RNx0M/E9vF9zoUAdq7u+kwCz9q1Cz/CyGXIC4CCb3X1DMO?= =?us-ascii?Q?GVJbNCR6iOhYzau1mZjHtwXTH9S3RLR6pXC0qp0LDkI8yeCD4vE0WApLOcUL?= =?us-ascii?Q?QOGDl0c4LGUS+51MHUqIDK0biRO9FdttB8zkdLcX9V0qGXa5x3EJ8LmL7KNB?= =?us-ascii?Q?pqJytZQSEl9LSQo4k4i1y/BAFM3850xccjeNP9godQZpTc0gY1GRqyavskux?= =?us-ascii?Q?hBJ2JXnj/0NnbMFH/BMdkGqEGZDeTYBATiBk3LjBgRgI0gIoGip7mEctbmFK?= =?us-ascii?Q?pF3y2HfRXrrrcHfAh+Hw+uK1Ysh92I+GlncNfBz03160Wh1hDu7ZqXh6Rk4P?= =?us-ascii?Q?mEgxa/nk/QnRfdG26jdumFoLw18O8enCGrApOxvG32axyTtlxWTqBlKOQy6V?= =?us-ascii?Q?EXR7s1Z8LXhbXrJarMl03m0O7NSzQ4nEcF5wvY7vauCPSQUjsRBbd2ICE3N0?= =?us-ascii?Q?W0GpiJXgph8Kn6Q+b1xPaoRzNMMrg6Q9N+XIHWoYM9rD3fykF9DjI30jtrHw?= =?us-ascii?Q?uqsWFUrhUEh+sAbPdhWP3Euz+NlrdDRLW6jrRqIkkDJspeQ/CYbkgN/g70YO?= =?us-ascii?Q?BSAs2A9bhDrRkOHN2RR0SsDrNQmG1wwSuYWmWNpzeN5PZYLR9uNg5n/v6spm?= =?us-ascii?Q?x7NZyxhhULHrvwgaoi7AAe6XD3J5H7DTAkVp?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7053199007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?y/YcWPPCGfiQjPFay8L4J8J/d2qrPwUzVB+XF/aLXIkiT/qih3kRQacZZfCc?= =?us-ascii?Q?Pta6sy1poG8RPYqCTsoaFCfq2uHtYRBZYGX3GJXsLYyvzXQh+0TR/gjsfjNX?= =?us-ascii?Q?syYMqOyf217IGtx0ols9gHO8NjM5cO4doMIpt8Wa6hfEN2jJyXHQH3AvY3TY?= =?us-ascii?Q?I/ro0SHMfrWY4THgANWKl/IjBk4UF9+qs5aCOPXEN2du8nseDb5gDPTXvgG2?= =?us-ascii?Q?9GaCoH6aqHyphYvDYHuhbKHIeqesXH7CmZVHP1sjidPs5v9uq2qxXnjxWKzp?= =?us-ascii?Q?6tMVVzveLF2F5mUIMxv2G7BSPmNb75PA9MdIYaJKJ1GEAhBXKdGkEkwurzqo?= =?us-ascii?Q?iehUoyVVvY1gy/75ojMtEFEDiZw4uxykY4hXhVrpHRdFJAcDjGo38yjJyGhN?= =?us-ascii?Q?wPnLuh1MShJs1DJ55XrWUIIuCn1JJgW3FjjQj2wls9UZjHvL7KZfUh1esOP6?= =?us-ascii?Q?QW8OUgOuNUNnIRIDQop5jvVIjYBcIHf2Rwr0ZSemMq2W2yQmD30IQOPJkA6F?= =?us-ascii?Q?rYINrkLoZaDcBYPOZPi9ZWjBAGe+mwFbxuVbde8gq7l+VS9AMmmxFyazFpjZ?= =?us-ascii?Q?/AGgoRceyJt/K6SWxJvgc87KBmbWGdu3JhISMUK+04llK+qmGsDDFk8zwzWX?= =?us-ascii?Q?qeDnaO/X4LxE3Y1hJx34JHbmVldU7ORgZcOrCX4PSJJSC0/miXN71DaN1T3p?= =?us-ascii?Q?+3TczAyKSC5fJMV3aNS9j4TLjw1XNQKXlMv9B4V+bhhk5L6kSOhpb4vluUF6?= =?us-ascii?Q?1oGH/L2im7FFoSZhXT1ZqsLnqY/WwTUC7luONytviGKswrywXEBTgikFbYJU?= =?us-ascii?Q?kfQbF4/3wBN8GWg1qYWDqNphYPzZaDA6XRXE2D+pQ2MJbCOWsWohI3M+SQL0?= =?us-ascii?Q?O1tSk1DEtSAG0AGZXuSlTjCvQy7X/zd2A4kraDLtx5NGwc0YwF2RP+YJ0Fha?= =?us-ascii?Q?7oj0aBbdFdbOlwKEd9ZXTyTSsMueVYQawy2zLpn9Dwuyrv5qezgMS54dcvxO?= =?us-ascii?Q?jA9zyx65483CH5ipQg8586YnzttNKIwCdfcBfl8Ky199JrT6JSx12al57EwO?= =?us-ascii?Q?Pl8t1J3VJrfJVxJ1OqlFDVNVBxYKsAXUsmXnsv41/EqAQmntwIwNxzmmmnCV?= =?us-ascii?Q?M8sqMY5x6unozxwpx4MreIYw29zxt6dAlfjCDUhJIsQfKn6zAomWH5FqLMXU?= =?us-ascii?Q?VklX1XH5AhuVszpKDOxCeegAAei94ygWcg1XwuGtDFIHZ7ctbzcH+gticKVs?= =?us-ascii?Q?BMikozs//8w0pOLLPmrMeRRstpIYvrOog95JgRZWehsg5xYHgHqSXGUDSiIg?= =?us-ascii?Q?N3EBYPLh61CtoOkwxDf5qYXTqYTjqgXhdCSqGNh6RB9HgF82+a1dRc6/yGya?= =?us-ascii?Q?tMeyhzFCxLHeZIOvcRkyh9rSzbuCLHHfZZpi42+dUr/7RgkVqxFk0t6esvpE?= =?us-ascii?Q?hKX2IJQhXz2jpYafd2aGZsFs7AziHsWBMDKLM+4y2NUQ26MRP0JqUW5ikPOG?= =?us-ascii?Q?dySK8xNSRuUcrJfQlzgZUMe3FlJuu7bAWR2EyWVqptgZiC5RyiMG9H0u4Dmm?= =?us-ascii?Q?5qGJAGcWtHcNQqtABGWRAwUtnMQzK54CovxR+TmLDLoyDsp0ZirpPTzLHuHv?= =?us-ascii?Q?4AG9hyKlbFLy8KDIYPJsVwfKlx4uFKSDsZ4ZAyjQUqS44brcUIz6rDrazM1L?= =?us-ascii?Q?3gsWalwA+dYtH1Z347rHCa64KtLRHsN+x0vhSZxVCu36nkGQL29DuUlpo5Bp?= =?us-ascii?Q?Ul7wzFb+9Q=3D=3D?= X-OriginatorOrg: sraoss.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 99415822-6fe3-431b-a347-08de653364f4 X-MS-Exchange-CrossTenant-AuthSource: OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Feb 2026 03:54:14.5848 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 75db6c32-352e-4063-ae79-cafb8623f6db X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KHRnin3kdbAkaRK1TjYZJEQ0o/Nj2KuE2ysrHcjumKGtLyt2EC4hj7Jfbf1+DeYlj7nAHLv6NiPh/VLM1DBH0w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB6599 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, 05 Feb 2026 15:51:54 -0300 "Matheus Alcantara" wrote: > On Wed Feb 4, 2026 at 11:45 PM -03, Yugo Nagata wrote: > >> Another possibility would be to get the actual values of "a" for example > >> and show it on the error message, e.g: > >> > >> ERROR: new row for relation "t" violates check constraint "t_c_check" > >> DETAIL: Failing row contains (5, 10, 5 * 2). > > > > That would indeed be more useful. One way to achieve this might be to > > modify deparse_context and get_variable() so that a Var is displayed as its > > actual value. > > > I'm not sure if I understand how modifying deparse_context_for() could > help on this. > > What I did was to use the expression_tree_mutator API to mutate the > virtual column expression to replace any Var reference with the value > into the TupleTableSlot. Please see the attached v2 version. I initially thought about having deparse_context_for() directly output actual values for Var references, but that does not seem like a good approach. Replacing Vars with Consts beforehand using expression_tree_mutator, as you did, looks like a better solution. One thing I noticed is that some expressions in virtual columns (e.g., NULL and negative integers) differ from those in normal columns, for example in the following (null vs. NULL): +DETAIL: Failing row contains (null, NULLIF(NULL::integer, 0)). However, this seems acceptable. Overall, this patch looks good to me. Regards, Yugo Nagata > > Another possibility would be to include column names in the DETAIL message, > > for example: > > > > ERROR: new row for relation "t" violates check constraint "t_c_check" > > DETAIL: Failing row contains (a, b, c)=(5, 10, a * 2). > > > > Although this would change the existing message format, including column > > names could generally provide users with more information about the error. > > > I think that this could make the error output too verbose when there is > a lot of columns involved on the statement. > > -- > Matheus Alcantara > EDB: https://www.enterprisedb.com > -- Yugo Nagata