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 1w8Tar-000ZTT-2H for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 01:45:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8Tap-009Fe2-1P for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Apr 2026 01:45:03 +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 1w8Tap-009Fdu-0C for pgsql-hackers@lists.postgresql.org; Fri, 03 Apr 2026 01:45:03 +0000 Received: from mail-japaneastazlp170100000.outbound.protection.outlook.com ([2a01:111:f403:c405::] helo=TY3P286CU002.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w8Tam-00000000IX9-1eJZ for pgsql-hackers@postgresql.org; Fri, 03 Apr 2026 01:45:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PAaRk1l86ziMyZC1e4xFdUOPOUYY44YKlzQWstXGhs7rh6Nac48gWb1ViCehuaNBYH2mDUSZ1NyhhN/x128slPwAQyzh4G6qZ13Q+c5pNldNeok8aRi32WFU+spECXPmebt1kXrT+eECZq6KxsNCPWOKQjUn4KfyKmqycU5IE8+auES2cX9s8OFIFoeiRfseR7AreTiunymMjnhYUZAA9+Z4zJJWKIocwzeQ+EwutHWsIg+HplxXAlUwQkMub/13ZyKV+VQ/fHZHRa0n5Zzi79/pZdXp4oC0N+7G4spIwPzIoi7dSGXXwOF11p+Q1NRf2U2MjJt+eVvnPdsFaBD5FQ== 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=YFNKB6bYi0P3uvjwCRNV9kf7Ri5bVsmJyOG6nEumi1I=; b=GKkTa47QiTcm81nDSeSd+S5rNaDoFAHcNSjZQ+jpnx+IsapwgRGjZtuGeLedwEojjrqmNFFrOay5Y5vgZZY/Npyj+dS0yeS9WTljuKwiS1niPBVfNcL2q7jcotwr1BYXTZsd7eC6OBKT+GayBdV1xqdj0RVcPW1KrLJrUhKA7h1y9QcAJ3Y3MBMXCFNDFQbNiWDNm3cMcF3SScsXBn2In2xvNb7GEGQ6aFL7oDvq3793uecACMjW3RJybcWzsG0AihsljB18GDLWAAUbCJjx7ov7MG2mcuXZZhcwpLa5rYAtUt9qBw4Qka2mnf5P/Vj0aYKpoH60iY/kUFMfgA7x3A== 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=YFNKB6bYi0P3uvjwCRNV9kf7Ri5bVsmJyOG6nEumi1I=; b=SBs3SnYNl6aIN0dhC7BA+OVR93DMsst5fZJqiTcyrk6oj7/lrmmitQPoRkCxTDFljb9ZHEp9ce/3wv69ld2sYlQ0/OsuLbLThtf49zEMRjNis/ts/aceHjD97+CsbDASk16YEnBp5MJcABlgYkV50b3cQ8DmaWozFh3U755n5AcrW3uRKU2ZIXAkOKu97jLTBV7ne3mwFfSZLWBOI0bpfvHFsNKnDhoEZp3elF4fhB8PzElkpbQWo5UgnjZenXnCjFoWL67e6a1e8AWz7AEcYSS8AsWfcp7LYjukalNDfc+mtbrsR6kXo660kVylk8+KAjMQzhC0wwtNkoRw1pzJ9Q== 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 OS9P286MB7781.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:449::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.16; Fri, 3 Apr 2026 01:44:54 +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.9769.020; Fri, 3 Apr 2026 01:44:54 +0000 Date: Fri, 3 Apr 2026 10:44:53 +0900 From: Yugo Nagata To: Dean Rasheed Cc: John Naylor , Michael Paquier , Pgsql Hackers Subject: Re: Adjust error message for CREATE STATISTICS to account for expressions Message-Id: <20260403104453.ae4e81b0821533045b0520a4@sraoss.co.jp> In-Reply-To: References: <20260324203430.411331c59ca462457ec0aa8b@sraoss.co.jp> <20260325131548.4c9a0c8d05a422021b1ba76c@sraoss.co.jp> <20260327134637.957f51dafa2182a717a4cd78@sraoss.co.jp> <20260328150425.79219072e05f12e6b911b5e7@sraoss.co.jp> <20260331234745.80572b0c208cac1f13837011@sraoss.co.jp> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Content-Type: multipart/mixed; boundary="Multipart=_Fri__3_Apr_2026_10_44_53_+0900_dqr+3s8iv_foldcM" X-ClientProxiedBy: TYCP286CA0284.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c9::15) To OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:189::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSZP286MB2160:EE_|OS9P286MB7781:EE_ X-MS-Office365-Filtering-Correlation-Id: cd715fc1-d7a4-4307-5729-08de91229a7c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|6049299003|366016|4053099003|56012099003|18002099003|22082099003|4013099003; X-Microsoft-Antispam-Message-Info: BNGxbugr5BSXz628lYD0dblchnMwPByjkSdyEFjuw6KJoO1nbQNUF0bjXprSTrBi4+0oQEKRk3tvodmw2kAZp/G7od3OIqRbUQtrz3OekJiRoFk4PSN+KSk2++H4Mn8cCp93CtTae42JIRsZPm0IyVd6h2MjMCC7x9lbPfB1sanCQrw+LUEg+FhjFsLk3HBUehQK8YK8QMKUX05Q4wZQ0WbFrtuMbjJNyFibh7v1N+yPlF5jgNekbBnl/XOSiHbBulzYzQ7AqnE5yeGNfnglUD7XorGZ5mSXbpHN4b89InMTvH81iG4yePj1ITaHT9uaflX4fNTrOn3klOZf398zlyu4/KMVdf0xS8ploFn7jprCKelZ3H44XcEJ+RMOFQyS762u5yN7dSDCeoNcag7ntzpNS80YePwz3giiRLctqx6aykPt0sZubi8tHh7utHVSYwY55sPUnYHoowYsxwp8G79JV/o0uhv+n8abWfw7m22FPfr+9H9omqfGljTfWwxTtRwSduOehPMAA1+fORv/gaYJz5cMAPelV0quLplSlgjwCmx98y5A/I/8J/+tMghxP8tAsDKiBPD1xKbxFytTdnAmaf7X5ZLBpQ2wDiQsl0RFWZztFwdvPxGSV4XZTjoRuErUGm4HG/zh7Vj8nMpZ/VL9/Glq79VvcROJDymVrAjZ97hfcIN7QAPGEqs7QhAPGv9xsKBzfKhDbHj6wXw7RZGC9vBi8Bpq2sQ77B5HCQQ= 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)(376014)(10070799003)(1800799024)(6049299003)(366016)(4053099003)(56012099003)(18002099003)(22082099003)(4013099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?iso-2022-jp?B?cGw0Uk9SamQyeEtjd3pNUjNIQkdRRzdtRHI2LzZETUpyMUpvSXlocmNI?= =?iso-2022-jp?B?T21KU01FQXIyU1JNNGY1RkNtSHRGeGJHdU42NXBuaFhNQ2ltd0NLRzBN?= =?iso-2022-jp?B?RjlVYy94U3g3L3BrZHJFb09tQzJFa2x4RDI2b0p3WWQ2bWFrQXZzbWxY?= =?iso-2022-jp?B?cjB0ZS8wSGtCSlB5WTFtWkN2V1d6OGFxZ0o0OG56dlJRMmt0ZHlSQzRR?= =?iso-2022-jp?B?WUJRbTVuNDdBQ0hoN1RUYm1WRmtYZndxdmY2NEdoNWhPbW5tTXVISHRD?= =?iso-2022-jp?B?MEkxZjVRdnA3bm9ZMW5DWE9hdFRNNkZhcGppRUxCK01uc2NCcGlJZW1x?= =?iso-2022-jp?B?K3ErWEdpZm9JVHFuUjlYN2NQWEl0algvdnRwT3ZvREtVRWVZSnBOR2Zt?= =?iso-2022-jp?B?TFJzZ243ajVPYlloUzlycW5lNjFBdjFTYlBob3VNR1ozQXF2MHpweDFp?= =?iso-2022-jp?B?a2FnSlc5WnF3Y244dmx2VkVqS2NhMzIvYnpzQzdDVjFkSGV0d2c3QWlU?= =?iso-2022-jp?B?d1M2dm1lZkVCV2prZGJDclNKZHkzUzBmQm5pTmFSZEZtYkJxb3lUTVI4?= =?iso-2022-jp?B?THVPMUJUYVN6ejBIdUpYVUhBZ1ZKdWRsOVZWd0FXbjdWNTNydy9vWmtm?= =?iso-2022-jp?B?d3NLVXBEaUpkTFYvUWZhczN6Ly9VNjd2a3NIMTRMUXRrVkhxQUQwTlpz?= =?iso-2022-jp?B?bUdRMUpWaTZ5WndBQWtSVDgwaEUzT2lubTlNd2RvU0E2U1FaU2p0TkR4?= =?iso-2022-jp?B?Q21YYXFOUTJUbFQyclM2Q2JxLzBoZHJyT3RpYXBIdDlmRUxpNmd5YVoy?= =?iso-2022-jp?B?dStQcHNKdXJQWlROcVhGNXh3cXl6TkhZVWpJUEp4WkxmbUxxb01kYWFP?= =?iso-2022-jp?B?OWsxZkdtRC9EazJRTGtFaDFja28zT0xSdmxFNGNnbUdwNWs5WDVtRVp1?= =?iso-2022-jp?B?U2lPMXdsVlVwazBINCtrU3JhTDJkaFhkU25jV0FKVG9oSUdUSy9aNDJv?= =?iso-2022-jp?B?dHBVQXJ0RXE1S0FmZ1RtazhEZjBvWERnWUs5ZzJSRFhEZC9TMW5vUXht?= =?iso-2022-jp?B?UVFwZ0tKalBmSWRCMVl3engrd0xLK0VVdnF5VkkwSkFMQlF0dHhCWlJ2?= =?iso-2022-jp?B?WWIvV05yRjJUSmFVZUJ6cVg0RUVxWEZiOHZvNjI3bSs5UkNSYjFCdUVO?= =?iso-2022-jp?B?NlVLYU9FYXZuV1lHaU5zYTdORml6VFI5QXZSczRTUDVRRk81bXVEaXRI?= =?iso-2022-jp?B?Wlpoajg0L1Z4d1E2WXNCdklVanN1VGQzUDUvZHFjTGdDbzJneHF0Z0Jz?= =?iso-2022-jp?B?enR4MUVsWUw3TmVFVndvWU1SZURaN1RtUFJ3VDgzd05aNEZySnRSU1lv?= =?iso-2022-jp?B?cXVWOXdhMnRaT2tzcU56ajRWclJaZDdOS1Y2SldIUVBkOXVsNDhaM0Ev?= =?iso-2022-jp?B?MHR5M3JEcjRodk9GMjVjQ25jLzJHNWErK0ZIcTdhcXRoTlFBQ1h1dkky?= =?iso-2022-jp?B?cHJEYVdGV2pBT29QMWN0OWgyOGJXUE5tR1ptSGlVQTN2UnVzSHNrTWQ0?= =?iso-2022-jp?B?MG9NakpSMTROQUhLbU4xQWsyUjJQaEJMSHU0ZVZiMDBVUElYazR6K2Z4?= =?iso-2022-jp?B?cU9zaklvVGYxa0MzMHpvcFR2b0doS1YyV0t0Y2lTN0hFektwanNkVCtF?= =?iso-2022-jp?B?bjJSWElMOUNJZXFPbURkTDB4YXJsMkR6Mk1qa1hmZjd6WFpUKzgyZFNv?= =?iso-2022-jp?B?RGVQc0FkVmo0a2NKZTRjdENKRHlGeStvVzVBMitvT2FJVkpDTzBwTERv?= =?iso-2022-jp?B?V28yd0s2NHg4aXV6WXNmdmI3T1VpS3M4cjg2WXYwMDg4M1VvN3IvZmtL?= =?iso-2022-jp?B?NFduL0Fja1hqU25wcUtoZmZtQXVtUDU4S0RBK3pMZXdQT1dwNjlXYzNh?= =?iso-2022-jp?B?V1lic1ZwbE9pdEw1LzlVTUlkbytpRmxhQzFUR1RVMlR4QVlXNHdxbjUz?= =?iso-2022-jp?B?cXNNaERPL1kwRzhndVk3c0M4bXhOejN1dGpIN2pEaG4xdFZuaWFvUjlk?= =?iso-2022-jp?B?Rld2Z3BuMzdwMWpLNHlpa1F2MmRhd2labWJMRFlLd240d29VTXQ1TS9V?= =?iso-2022-jp?B?QVBmOUhXMC9BMGMrMnJFd0I5b0x3dnBiSUhDTmMybllmb1NWZDZ2YWc4?= =?iso-2022-jp?B?a2Z1d2dOZks4RjQ4NzZBbkNab2tTYUNPR2QwTzE1STIyd2o3UXZwUXhP?= =?iso-2022-jp?B?ODFpVGN4L3U4Z1Vzc3dYd2M4dEp6cElYcmtqdmN5TUQzRUd4RmdzN2pn?= =?iso-2022-jp?B?TWFhaCsyODRaaTJUQTgzN1Ywa281N3JBNkpPYVF5Nzh3WFNiQjNnalFG?= =?iso-2022-jp?B?TGVTVitUK3hMK0dCUDdvYmhYbXE1UndYd0RRaDByb0haQWVwRW5aWjVj?= =?iso-2022-jp?B?SEQ2ZGtjMitOWEVTdXhnRFg2TUczYmFMc2IzTTlJOXBtQjRZNlI1dlM0?= =?iso-2022-jp?B?Z1J4aC9CQ0JsRlUwOW92N3N6UWpmb1VENUdOY2RWRkFZcGgwK3dPRTYw?= =?iso-2022-jp?B?d3JsNCtHWHkvTmtUa2w2ZVZvcG5POVA2Nk1wRUxBbjMybEZn?= X-MS-Exchange-AntiSpam-MessageData-1: iOmenhDZ58HMYQ== X-OriginatorOrg: sraoss.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: cd715fc1-d7a4-4307-5729-08de91229a7c X-MS-Exchange-CrossTenant-AuthSource: OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2026 01:44:54.1310 (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: 9VNIIJ3lj7QqKtHg9A/W6CA2Th7bx7qNKewQ1JjDaAGdzBJtScqWXgJ721irDmWuw/iwYYuEQV6J1Y16P8Ksgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB7781 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Multipart=_Fri__3_Apr_2026_10_44_53_+0900_dqr+3s8iv_foldcM Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit On Wed, 1 Apr 2026 17:19:16 +0100 Dean Rasheed wrote: > On Tue, 31 Mar 2026 at 15:47, Yugo Nagata wrote: > > > > Yes, that sounds good to me. > > > > In particular, the following suggestion from Dean Rasheed seems like a > > good approach: > > > > > Error: cannot create extended statistics on a single column > > > Detail: Univariate statistics are already built for each individual > > > table column > > I've pushed that change as part of the patch to support extended > statistics on virtual generated columns [1], since I felt that patch > already needed to change that error message. Thank you for handling this. > I didn't look more widely at other error messages in that file might > benefit from having separate errdetail text. I’ve attached a patch that also updates other error messages to move their reason parts into errdetail. Regards, Yugo Nagata -- Yugo Nagata --Multipart=_Fri__3_Apr_2026_10_44_53_+0900_dqr+3s8iv_foldcM Content-Type: text/x-diff; name="v3-Adjust_error_message_for_CREATE_STATISTICS.patch" Content-Disposition: attachment; filename="v3-Adjust_error_message_for_CREATE_STATISTICS.patch" Content-Transfer-Encoding: 7bit diff --git a/src/backend/commands/statscmds.c b/src/backend/commands/statscmds.c index eea45106a3f..b354723be44 100644 --- a/src/backend/commands/statscmds.c +++ b/src/backend/commands/statscmds.c @@ -280,8 +280,10 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights) if (type->lt_opr == InvalidOid) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("column \"%s\" cannot be used in multivariate statistics because its type %s has no default btree operator class", - attname, format_type_be(attForm->atttypid)))); + errmsg("cannot create multivariate statistics on column \"%s\"", + attname), + errdetail("The type %s has no default btree operator class.", + format_type_be(attForm->atttypid)))); } /* Treat virtual generated columns as expressions */ @@ -325,8 +327,10 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights) if (type->lt_opr == InvalidOid) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("column \"%s\" cannot be used in multivariate statistics because its type %s has no default btree operator class", - get_attname(relid, var->varattno, false), format_type_be(var->vartype)))); + errmsg("cannot create multivariate statistics on column \"%s\"", + get_attname(relid, var->varattno, false)), + errdetail("The type %s has no default btree operator class.", + format_type_be(var->vartype)))); } /* Treat virtual generated columns as expressions */ @@ -375,8 +379,9 @@ CreateStatistics(CreateStatsStmt *stmt, bool check_rights) if (type->lt_opr == InvalidOid) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("expression cannot be used in multivariate statistics because its type %s has no default btree operator class", - format_type_be(atttype)))); + errmsg("cannot create multivariate statistics on this expression"), + errdetail("The type %s has no default btree operator class.", + format_type_be(atttype)))); } stxexprs = lappend(stxexprs, expr); diff --git a/src/test/regress/expected/stats_ext.out b/src/test/regress/expected/stats_ext.out index c6ba2479413..37070c1a896 100644 --- a/src/test/regress/expected/stats_ext.out +++ b/src/test/regress/expected/stats_ext.out @@ -99,7 +99,8 @@ CREATE STATISTICS tst (ndistinct) ON (y + z) FROM ext_stats_test; ERROR: cannot specify statistics kinds when building univariate statistics -- multivariate statistics without a less-than operator not supported CREATE STATISTICS tst (ndistinct) ON x, w from ext_stats_test; -ERROR: column "w" cannot be used in multivariate statistics because its type xid has no default btree operator class +ERROR: cannot create multivariate statistics on column "w" +DETAIL: The type xid has no default btree operator class. DROP TABLE ext_stats_test; -- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER); --Multipart=_Fri__3_Apr_2026_10_44_53_+0900_dqr+3s8iv_foldcM--