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.94.2) (envelope-from ) id 1uTyf2-00DH0p-OL for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Jun 2025 08:05:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uTyf0-00AFk2-QG for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Jun 2025 08:05:43 +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.94.2) (envelope-from ) id 1uTyf0-00AFjq-3f for pgsql-hackers@lists.postgresql.org; Tue, 24 Jun 2025 08:05:43 +0000 Received: from mail-japaneastazlp170110002.outbound.protection.outlook.com ([2a01:111:f403:c405::2] helo=TYVP286CU001.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uTyey-003h85-0e for pgsql-hackers@postgresql.org; Tue, 24 Jun 2025 08:05:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ol8GdvQETM91zgjcPajWuH+xef29JtVTmzRGPOO8XkwM3jYVj85sirj31jFGxuwisMge3xnXWRLgM9Xj6IYyB2pb+U5fsDBwuSRKnyGhDg68DwVXp8dJL9e/NpwV+cOKdA+svZE/E7v4cUX3gAKrzmw5zA2VxP6CYbrIHfiVjmFXm3GLnt+q2i7OJ0oZlKho6r6r7LUJsgxJAFMZNK5UH00v7jKeoxHip4bxt8JHiBcbo/4zq4vjXay8M1dit11XtYnu319IvBDO2SzNeP5fOv35NQjmsC32uU+ZK+GrR8onUDKV0uJpa6MbEH9hWHY/GFKojsTOgQknF7xcbJQ91w== 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=zgaK2PxT+vGUzLKQkvAFcFhWE5d8hPEfwAwNFDYVmzE=; b=yPmxJZ4tLCkfURtuC9djJqhBItuY0HPjmZvomwJlF82U0gaT2aKrz4ob763KB5+Ho9x/N+PRy1IBEoIrHf+TKHRBL6fVd6cejxqb6HMLuNE5bXjsguQZ0WdVgpP9KgmiIuHlho9zy3rzcbZ+hkJe+S3W+yHJPSjbS1G7aNX6R51bPhnsCO3QyW0tKS0X1WHKPX1zS3YrGFJ0uOO8UevYkK9oNX/Vdj99oYKn+mbsJ9+okkDnPf0A6fSxS22HFYywNBT3tzy+7XnX2x6K9XlaNwllhG7EsfV1QiyHcn4yYE+PC82VZ2vHlE8F12yOdorAszktB7r2dz27DRXeAihDXw== 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=zgaK2PxT+vGUzLKQkvAFcFhWE5d8hPEfwAwNFDYVmzE=; b=H9Cn6AdiFItr98JlcChplOTkF1h/2/vMINM34OBczaqtR3n1JMN4WT4DRgl26wBtz8aRgCS7ezDoXb/jV5eI9buVKZbrXmbI34x4yNKVa1U51UzDon9gwjuLMFtOiONF2Mvv28Z4sc3MshCaVPOnVi6pGgqRxG6KiEuaL811biYQQtvRpSvjQJYyHx5XPXNdFkVZilge0OofW489eHh3zYp5qxhXlqDt2KRq4GpMrnfgD6nivfWNlHht036Zx97K9O3JUaBtxQaj8s8grqeAwhxftDMuK8Sg68as0zuF1vYZSU10HlRb7DZlSTUvLElNoRow0JjiUS0Hl84v77ONKQ== 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 OS3P286MB2491.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:1ef::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.15; Tue, 24 Jun 2025 08:05:34 +0000 Received: from OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM ([fe80::a4f:22fd:288:2dcb]) by OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM ([fe80::a4f:22fd:288:2dcb%3]) with mapi id 15.20.8880.015; Tue, 24 Jun 2025 08:05:34 +0000 Date: Tue, 24 Jun 2025 17:05:33 +0900 From: Yugo Nagata To: Andres Freund Cc: pgsql-hackers@postgresql.org Subject: Re: Allow to collect statistics on virtual generated columns Message-Id: <20250624170533.3caeec7d6034cd5ddf4f00d2@sraoss.co.jp> In-Reply-To: References: <20250422181006.dd6f9d1d81299f5b2ad55e1a@sraoss.co.jp> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Content-Type: multipart/mixed; boundary="Multipart=_Tue__24_Jun_2025_17_05_33_+0900_4Q+AqXBpJicclgog" X-ClientProxiedBy: TYWPR01CA0029.jpnprd01.prod.outlook.com (2603:1096:400:aa::16) To OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:189::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSZP286MB2160:EE_|OS3P286MB2491:EE_ X-MS-Office365-Filtering-Correlation-Id: 6dbd8e68-6c77-4081-c948-08ddb2f5e55e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|10070799003|4013099003|4053099003|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?35TdG8zbzAfTPKW7CIxFi8gWbc6rh/FK39aKiBxTzsaI/fTt1VTvmvFNPDYW?= =?us-ascii?Q?fmpO3BvS9yg6NVdcUg4yYsKvIbWjr6shjSRX1hKyPvjo7El5JSmPgHlioRlg?= =?us-ascii?Q?WY873oDTYgVXY58ciLnML199W1V2fferNlRjX8GbqlPsuGrtX+RAv8SseiG9?= =?us-ascii?Q?jrlgPHic2QIempwL+ZEZbN5XE9+5f7M6/a3Q50FZ9p9lPcNBTlLcOCAy0vly?= =?us-ascii?Q?5pJTFrkVb/IFRTbsVIMmeD3MOep6dgYUcKpQIM846aD00QPrkweY6hHU/Yia?= =?us-ascii?Q?I4spnrJqHruUAQa7IyXi6NNwA48Kun1J6XCLhDac3cJlzT6lVus1nGXYqcjx?= =?us-ascii?Q?b6r0o1QCDuFV8sfniVjiwHqOupX+7ZE4l9eJYMfPbwQerNCkqOjBMlwTK9R1?= =?us-ascii?Q?QUXhyMjjvJYrV0jiw+8KqwmGZpfjEH04tSWs+qq8FB+zToDXrkkV2e9BBeo6?= =?us-ascii?Q?l0F49+aQa6z5cSYHjMBAopJGYNI7BlmQ59okKklSNbNOig29pmQrS931y+dZ?= =?us-ascii?Q?2Uurr0SbfyaDP9+sZrpx50WjoAsbW7ZHYPZWNsnVxxh0H6JGpXcB+ylc2MNh?= =?us-ascii?Q?xMCoEOhIuFRIaf3ADcmvbknoJTAADIQEwz//MgHOdnSKP9DNRngvXp5ufkO8?= =?us-ascii?Q?EU9QVFzatuEdUzWZzwyNrVhYN/K0+ZPQmRAza3JeDGwO0mKAmCUTL6Uk1OLJ?= =?us-ascii?Q?Deka5m1ngsKeYlw434fKYZeEOscG3zSRoszwlJKkN68Sr+cHtCgs45kLenmG?= =?us-ascii?Q?KmnAGF3iBEoZ7xlyA0rxJP+Q7/QQlJVOKoGqpWBo0+wFhLhGes2u9A6zHo99?= =?us-ascii?Q?1lgm6wUa5e/SxEYDAOGG6HTojB879WN9EZ2Ohxn7DuonhvY2ujlvefqIsGxN?= =?us-ascii?Q?Vmfev0Yt+ofDD06UvwP27sED9dagu0tixAGxhfgnlEF4A4NpNkDb03fMVHE/?= =?us-ascii?Q?IgHXOBZP5rIypztwv1IwBgv+nmCNK2/g7/oeuM5SsYh9nzPM8UvaT+zvAzQ1?= =?us-ascii?Q?Jf9OIzC2iDskT2cPOKv2g2oAkOVE5VT2y84sKWQtYhsyDTUN1Dpjdqcgyemb?= =?us-ascii?Q?Zf9JlXq9YeoKHUY2SBY8JNhxHLHMrKiQTCbxpTDohV8MZ4f2Cfdkv463lDTN?= =?us-ascii?Q?5mY53bHsCjBAR8k9mHekF8QfO0KWrrUPCiMHl3KEQmt7JlJnZIF1A8GD/7x7?= =?us-ascii?Q?0z+gMFam8e3/X592DO7F1jG8x9WX25PSYe1GAjIVq1UXzh0KmmHmq6TYwfpY?= =?us-ascii?Q?MGjPTonIL+HpcwSuvQLGb1Ezcdzm2ryuK8H5+e+dbdnPkBJ7guNUPfm/H1Xr?= =?us-ascii?Q?idLyn5+pdiSHjOI3MQNp/YhiviRB13u6x9qWkGPJlyVZLCfmkzeVuswOuGri?= =?us-ascii?Q?+61peQY=3D?= 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)(376014)(366016)(10070799003)(4013099003)(4053099003)(7053199007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dxC8/oGKEonaI674tsbto4s2L/asETs7cC49HNSl91ut59Vu/b0DoIOdmQ7K?= =?us-ascii?Q?dt95ZgAZL4KVulMYN4uWzxKQ1GiYpVu6YkKc4p3Jqkodn2WrzAqRE2z3uLVZ?= =?us-ascii?Q?3fSi73hwP/8Kgj29A/EXpk/J7HJgOmGP78objMjTcicZEE8kBT6akchsVn1C?= =?us-ascii?Q?tsznfgQMetT5J/PX7NGRpnZClYS4BZ+r0wbZyxFD0Wk8/RpoNZoFbNM0uiJ/?= =?us-ascii?Q?EPbiqbaZ2TlD6W0F3x1vMsIXMg00mKS+ZjdTfwt5pTYzpxEY/iPc8LDvISuP?= =?us-ascii?Q?XwCcNLICUiPu8sVA3JNHE319uVCYbRmaUDJdRHVw9Fs/n6XZ2GPjzX7SAdyA?= =?us-ascii?Q?lujK+9X8z40lhyPGm725oBgIGRW/QUBhwPt7JK8T+fH6s1WzBUNzbnlPsFfL?= =?us-ascii?Q?ck1o7dG6c7lPNi2+f/WBsCNS+jHdumn2c7jsjQ6c6rOlGtexfKZxmn8cY9JV?= =?us-ascii?Q?BqMabcQE9ZHA4jq7QHkU93hwfDfrNBPDUREq7VeygfBoIQKfV0FDx8GfD/S7?= =?us-ascii?Q?qiQAyKgQ5p+kwR7wt5r4b2BAj0rr1zYpfYlqOLUqJdsawtj/z7kyG7D1emJW?= =?us-ascii?Q?Q8a6iddO59E+AsH0U1kkJFM0PLreW6sxgrEgzHkFAZBXbQTu3RakvPdb46bS?= =?us-ascii?Q?P6LAj4D/LjWEa42/txTFWMUimfkpNDW6cg0lIcz7X75fqKTz/2RSfuxOxQwh?= =?us-ascii?Q?hmcEYV/q9SyICSHS/nT9+plPogf/qadNxv21mMyoKIP57vTGdYlc7MT4f10k?= =?us-ascii?Q?RgjPhHrkm0P4dzCUCuIy/Hruwz6pTfxH4TtfTvIizvKOJ0CVIV4r123MK3ZT?= =?us-ascii?Q?Zg4gnPSiP4N0DXghOjfa2oxbS41q/oBblrcj1JoscrPfTFdVAmjUgvft6MWG?= =?us-ascii?Q?JcyJYkDj3pr9tTvLQUBrm/nntawmobMQSUI4G1YP3zfDMJdfqGE0/9z3kdg5?= =?us-ascii?Q?YyurK7cVH3Bf7faCWHCIKWNDyzA+xDq9tbYdSF7qGBfmHB/S/V+GKQ2OeqI2?= =?us-ascii?Q?P8iMqMXK2wlFu8daemdwb6aWvWGXSZYh0BIc4dCowjPP5mLmRvAI+r2FNqkh?= =?us-ascii?Q?tqsOJCut3CplbsfyROaaveLUpbLC6lBIRh0St7TOjnYALdWGCx3QGFsAg21o?= =?us-ascii?Q?xMS1TTm95TenXJTR7T1lg9vjvNbLyzztHeBmOVhWQ9r9R9J5h9WLIQGEko29?= =?us-ascii?Q?+X5GqyNzX19Ub31+qJ797HnlJwH4TX5ty2OoxMkob/HX9xJYvG9HLHKblbTR?= =?us-ascii?Q?CDOkHE0CR/aJOSM9RGmTAI/yn2W6tkGdivClo9li5Cnc6hetn+4F3lKCOwGM?= =?us-ascii?Q?jTY8bQcwPmbqF+101d4Jys/1xjc0oE/5J0ZNiP9sDicvMefP/Q2g6YRrHJuR?= =?us-ascii?Q?vDLlgZDI259pdddUmEeK222q3e7d++9viTUJ8ySVdCvJHHtXSM4sykJy8T0l?= =?us-ascii?Q?QXuzI2jlCwjLPcjL0117QkAlrKZReLrNQlYIagQNmQzFFMwjYRirm6MV/cpb?= =?us-ascii?Q?XbHXNMEeTzifb1jiZzaynb0CmXj5zeXVStdMc7PLAOiUeIg2l9+9X7r3F9Ui?= =?us-ascii?Q?P66+PkPjrJIs7xz0LuyrkzeuxA1uW+pbPuvSO+7jhZJ+xz3yUE2r9TRh388H?= =?us-ascii?Q?uzjQJKfurbkHqHgLXQabMmIIh+BE0uBwqPq5Q0ZozFsT?= X-OriginatorOrg: sraoss.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 6dbd8e68-6c77-4081-c948-08ddb2f5e55e X-MS-Exchange-CrossTenant-AuthSource: OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2025 08:05:34.3503 (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: 9cJtl1o06n9ND31GHh0vY7DB4cCsgUimZglBPyOGfWLJlXLGVZRqF8PA6IeaKjL0i6mgW5MCZseen8tvuStNKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3P286MB2491 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Multipart=_Tue__24_Jun_2025_17_05_33_+0900_4Q+AqXBpJicclgog Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Tue, 17 Jun 2025 10:43:41 -0400 Andres Freund wrote: > Hi, > > On 2025-04-22 18:10:06 +0900, Yugo Nagata wrote: > > With your feedback, I would like to progress or rework the patch. > > Right now the tests seem to always fail: > https://cirrus-ci.com/github/postgresql-cfbot/postgresql/cf%2F571 Thank you for letting me know it. I've attached an updated patch to fix the test failure. However, I'm now reconsidering the current approach, where the expression of a virtual generated column is expanded at the time of creating extended statistics. This seems not be ideal, as the statistics would become useless if the expression is later modified. Instead, I'm thinking of an alternative approach: expanding the expression at the time statistics are collected. Best regards, Yugo Nagata > > Fails e.g. with: > https://api.cirrus-ci.com/v1/artifact/task/5921189782093824/testrun/build/testrun/regress/regress/regression.diffs > > diff -U3 /tmp/cirrus-ci-build/src/test/regress/expected/stats_ext.out /tmp/cirrus-ci-build/build/testrun/regress/regress/results/stats_ext.out > --- /tmp/cirrus-ci-build/src/test/regress/expected/stats_ext.out 2025-05-26 00:59:01.813042000 +0000 > +++ /tmp/cirrus-ci-build/build/testrun/regress/regress/results/stats_ext.out 2025-05-26 01:02:20.350387000 +0000 > @@ -56,7 +56,6 @@ > ERROR: unrecognized statistics kind "unrecognized" > -- incorrect expressions > CREATE STATISTICS tst ON (y) FROM ext_stats_test; -- single column reference > -ERROR: extended statistics require at least 2 columns > CREATE STATISTICS tst ON y + z FROM ext_stats_test; -- missing parentheses > ERROR: syntax error at or near "+" > LINE 1: CREATE STATISTICS tst ON y + z FROM ext_stats_test; > @@ -69,25 +68,24 @@ > -- statistics on virtual generated column not allowed > CREATE TABLE ext_stats_test1 (x int, y int, z int GENERATED ALWAYS AS (x+y) VIRTUAL, w xid); > CREATE STATISTICS tst on z from ext_stats_test1; > -ERROR: statistics creation on virtual generated columns is not supported > CREATE STATISTICS tst on (z) from ext_stats_test1; > -ERROR: statistics creation on virtual generated columns is not supported > +ERROR: statistics object "tst" already exists > CREATE STATISTICS tst on (z+1) from ext_stats_test1; > -ERROR: statistics creation on virtual generated columns is not supported > +ERROR: statistics object "tst" already exists > CREATE STATISTICS tst (ndistinct) ON z from ext_stats_test1; > -ERROR: statistics creation on virtual generated columns is not supported > +ERROR: statistics object "tst" already exists > -- statistics on system column not allowed > CREATE STATISTICS tst on tableoid from ext_stats_test1; > -ERROR: statistics creation on system columns is not supported > +ERROR: statistics object "tst" already exists > CREATE STATISTICS tst on (tableoid) from ext_stats_test1; > -ERROR: statistics creation on system columns is not supported > +ERROR: statistics object "tst" already exists > CREATE STATISTICS tst on (tableoid::int+1) from ext_stats_test1; > -ERROR: statistics creation on system columns is not supported > +ERROR: statistics object "tst" already exists > CREATE STATISTICS tst (ndistinct) ON xmin from ext_stats_test1; > -ERROR: statistics creation on system columns is not supported > +ERROR: statistics object "tst" already exists > -- statistics without a less-than operator not supported > CREATE STATISTICS tst (ndistinct) ON w from ext_stats_test1; > -ERROR: column "w" cannot be used in statistics because its type xid has no default btree operator class > +ERROR: statistics object "tst" already exists > DROP TABLE ext_stats_test1; > -- Ensure stats are dropped sanely, and test IF NOT EXISTS while at it > CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER); > > Greetings, > > Andres > > -- Yugo Nagata --Multipart=_Tue__24_Jun_2025_17_05_33_+0900_4Q+AqXBpJicclgog Content-Type: text/x-diff; name="v2-0001-Allow-to-create-extended-statistics-on-virtual-ge.patch" Content-Disposition: attachment; filename="v2-0001-Allow-to-create-extended-statistics-on-virtual-ge.patch" Content-Transfer-Encoding: 7bit