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 1vathS-00FToA-1b for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Dec 2025 10:45:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vathQ-00672o-2A for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Dec 2025 10:45:05 +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 1vathP-00672f-2x for pgsql-hackers@lists.postgresql.org; Wed, 31 Dec 2025 10:45:05 +0000 Received: from mail-japaneastazon11020090.outbound.protection.outlook.com ([52.101.229.90] helo=TY3P286CU002.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 1vathO-003U85-0J for pgsql-hackers@postgresql.org; Wed, 31 Dec 2025 10:45:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A46S3fvbdjyC8I1069Crf5tvi97vZP6rCH/yMnTPgRd838rH8comhmRsUMrJjIblXQgCmziwe9jbRugffTn1pyBCRQ4a3V/9jHm87HDQZsvkHWEFCDQeZak/Er12KA5lgrLqmBa0CGNhslCdh+UyWrbbJYHJAc6wFiCsk1ZPb5rA8H96o/K+AjtEsCmR89+MrskRu7N6RRoSudAJLeA/35y+bLyz9GJv4mYEnMhypQVFUA/cMuyWnD1GTyw6gWERkZn98z4ztR0jqqAoSbl4tv1sDTCXVreLeb6fnMF+UzoPoRagkHku7DuvBqTjJk/7PnsZX8p5tJRz63gmodfMBA== 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=tCBzHcpEVCOXhV3Jv/9bk+VaqxYSvgZZxl9VHfZ0baU=; b=x880OnM9Vk8vMx6yYCXmityU6klfOBSYzUPZp71B+hEAqn1sg7zCy9wCRz9dX7A9rm83A0jxZlr/jTSAMgQmovTe9dHWarXcL6N+8YC9E0gkz/+BPArwfEwFJmoytPgGNZWbCoAMKG0s4EEWTLPSu9msN+KfXCG33GxR+7969Az2XtARR7YdakNzXZdvpXa7/4rb2403/z2EVc4mcU2e9FAM8uwPH4kYR51ooGYBTBVp3b1pjFJkkkZVjT62YZvw11iVPhGRCLl5HA2NCu/liRZ3doZCpxurk0gx8vgTha2sVMMhAlD7tRZlFXXZZiOrb5zLv2guGGUgGoE6lwzRcg== 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=tCBzHcpEVCOXhV3Jv/9bk+VaqxYSvgZZxl9VHfZ0baU=; b=jJXb36TtF6S7zuwAIrUOduwC709xKbwXfaOAu+7L+w1zEQHRVGOsTlh3xt7qzNsjH57vyUVfMM3al4/h+vMfD+1xUHOgVW4FQCPv2EAhDNhQgLKYkBD75qa5RYsN1VugTSkbN8+EGII3gL+Eqyk94gxhLTeSXCc/CFlGBsxDCj+bzSVSCTMsEoav6kufvKjy1DDnEjSIjhxmlcZ6t5ma/NY5Ix7DCU+ksPau+ytq3dxdxaYBwkeqTlI66Kjl1tSPu4GFhY+U4Xm1h0hILMKWpPtO4E9FS3lk8TIASBf1INucOEDLI6yjGX8kAl1MzByR9H6Kt/ryIvoNuOg3NiNIVw== 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 TY4P286MB6407.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:33a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9478.4; Wed, 31 Dec 2025 10:44:56 +0000 Received: from OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM ([fe80::a4f:22fd:288:2dcb]) by OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM ([fe80::a4f:22fd:288:2dcb%5]) with mapi id 15.20.9478.004; Wed, 31 Dec 2025 10:44:56 +0000 Date: Wed, 31 Dec 2025 19:44:55 +0900 From: Yugo Nagata To: Yugo Nagata Cc: Andres Freund , Subject: Re: Allow to collect statistics on virtual generated columns Message-Id: <20251231194455.5975fda68ed8e941e4afb805@sraoss.co.jp> In-Reply-To: <20250902163341.c174d0e83eedfc54d68b8e9c@sraoss.co.jp> References: <20250422181006.dd6f9d1d81299f5b2ad55e1a@sraoss.co.jp> <20250624170533.3caeec7d6034cd5ddf4f00d2@sraoss.co.jp> <20250801002830.143b25971fb9594b89d96aee@sraoss.co.jp> <20250808122125.e9eaff938f8c83556f337e50@sraoss.co.jp> <20250820141028.dc06e0d1d787ce1151f69ed6@sraoss.co.jp> <20250902163341.c174d0e83eedfc54d68b8e9c@sraoss.co.jp> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Content-Type: multipart/mixed; boundary="Multipart=_Wed__31_Dec_2025_19_44_55_+0900_Ok0z3oC/bht_7Z=e" X-ClientProxiedBy: TY4P286CA0076.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:36d::10) To OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:189::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OSZP286MB2160:EE_|TY4P286MB6407:EE_ X-MS-Office365-Filtering-Correlation-Id: bba4786a-7597-4a38-c178-08de4859a386 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|4053099003|4013099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ugk18VZi+NkORbSyLMbLsjOaDCWSBjJ+xt+WnIf1s/e60HX3hMhlvuWinEAu?= =?us-ascii?Q?7NhDRcoKLPTc4Yx2GHa/yRfQm51qzqtRPKzKWBBdvvKU64czXkROcRirCU7k?= =?us-ascii?Q?YmtcS4qQok4vbwFXAr5SNTbdfpjI7zkMaNIfR0vNqr58B6Hx7jNQePuT9bYm?= =?us-ascii?Q?CZI1SGeXaMuUdnFQGetIXsMORM75Zeq9EfmOoGjXyFKS63r3kSphRuvMCRlO?= =?us-ascii?Q?vv5Ax8W5I+XOEMruNl8eLp3XV5Oo8JOM+FS5Lfog5rfsLKL/1UZgWye+4byC?= =?us-ascii?Q?qqrr1XTVCii0ryCuXhvGIfMOskbnGmlXrDZh7LrB2j3SNm6B42eCFUfV7Xlv?= =?us-ascii?Q?RFcgZIhnd+a75lVndNTxB7WogtdbEj8KKEAfGdoK7qSjqbSLF6OGDGRfT9YE?= =?us-ascii?Q?7opW7ekOTsJidYVV/KOLx2vVORIIGJkPDrGOUuy1LSnKUt5KenZsceNwhPYv?= =?us-ascii?Q?Tlm6O7pLdzZPTBuuKqIWZcMbv75hFBU0AkcjidcswRwfSMQG+QVtfMgZmEcy?= =?us-ascii?Q?v+cFzzakDIY19eWYgcwCd+nqLeL/0IYpWbhzabOJL3NumYyINILf6+7Ep6XD?= =?us-ascii?Q?4N8Q4i5Qxluisork5ul0llZDR5xbH+uAfMe99wuf3s0nU9iE/O41j1CvbWQ0?= =?us-ascii?Q?BRt5RKt5DCnU1tkOvlbmdKx29TlcwFrqG4d6KnGMHVjNCCXh+4sn8ve9uCFh?= =?us-ascii?Q?rpxJXq0DMD53RYHl+U+yT+cGX/jwajFmua1b74cI49JYxTr9hpd7u+Y/5EZ3?= =?us-ascii?Q?H5CR2tWECx0LSedVxRIvcnzChdcIFhxGGFJELMcnRf+w6WzER2m29sV+jEUE?= =?us-ascii?Q?Bp8R1pRRYBdzlSaTbzg0w4wA5iC/oy8PmywkkkAbqeieIRqaceoAJw3E8yJJ?= =?us-ascii?Q?UCqWRtDTOhtcrAXq7WLN7/HypNU+sEvqE78FkII1gbhYXQbs1WEi/HFLY+6k?= =?us-ascii?Q?vHv1/XAZu1eNglhkY55+GMQom09BRFBa9GMu91hTvDbuEqnF39jcPfvyuZt1?= =?us-ascii?Q?8/XnUCfY11tYV2gtvCoGSOf3TANtduPymaruYnf2zs3DFdgSzG+s3GSzWXEt?= =?us-ascii?Q?4aZ6PPGuDQ4VhVfJLvUzeUIOrAbK97/tY0lL7eqoEyVwi+s33A61b4y7BeiF?= =?us-ascii?Q?hnxJQ4O4ZAJVGWvG/PPc9J5sRAz7MT/92Wnnl9iwIre27gOMxQ1SHxa4IePN?= =?us-ascii?Q?mc9v1otBxZQKoFgkDMMRH3TzihAlw5VOxXzM942u8EXXqEyEmzftUNhwxBuq?= =?us-ascii?Q?TxYGmw2J2y/SCHCEKilUXsPNiwqpJ/JZWOo/MJpAyHmacQczoUeyru1f2CYZ?= =?us-ascii?Q?iJ+2r2FfCFHBKOx3Iz46TFZWE6YU2sWp6fRM6XIAdzsoAVscJw7a/2AZLQEc?= =?us-ascii?Q?MtQRAONyL2g9D4WteDVYVh0Pgn40+I7eHYzf8EDy9xWR9xn6tyF67YXpUGTn?= =?us-ascii?Q?rPYGo0nLcva9VnLOemlifLJVc2oQY4OH?= 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)(366016)(1800799024)(4053099003)(4013099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8KbX/Gj/cGtKs8f4uN7yR+CHUiYkK1GwzwjGXi8/AEgtT7FFdhPHji7AWGUh?= =?us-ascii?Q?zoCJgu9VwQysM9xAph7XF+yJn0ENv2VohGUWBL9BaKFkpK5K0RO0yDHFByJ0?= =?us-ascii?Q?CcxiYQOt1v4m8zb3TPd6BWnvCzdRJhBXecP/EBRrHB9YCf23b/+J2wvvrmI8?= =?us-ascii?Q?k3x816LdLUR4bPWZBsBEbjsJ4nfoN9R7SiImhlfolvPgwFsFIJhjkuVmw1Qx?= =?us-ascii?Q?DlhwTWSON8eEwe9/1++6nNKrQBi7kKuyGcLqcJU4jshqvPHj0el12gAz0VoP?= =?us-ascii?Q?jkWJwmYMUZgFZEkEw871iCI/dStruncfB1LMPZHKKDWQzTAETjECq3FGi3V9?= =?us-ascii?Q?st2lhSueJDtC1GKBvZyblg+qVViGIomCba/X5JwrhIopemuQcMp2rObLvFq1?= =?us-ascii?Q?nn59r7scnQ/j7rq6SaTJZnkJwKtGA4Kv6Ey0GNBVBka3i1g8i0q+5K2qFbo3?= =?us-ascii?Q?wybjWP8Tuflp+6dW8+Xa64X7yuMqcm4lxN7oPjcD49Q45QvOetvClCP1AlnA?= =?us-ascii?Q?9ViKulEUcCFQ9XMbIdE65NnMhULbInB/fCPyTYV3vJeW96dA8ZuYYMD6fKsM?= =?us-ascii?Q?IKeFn8KAiCuq8Yf7kDiw3tlZhEEobo2FR+jBwILY1PtcxDpLw/ug7mbkwUPd?= =?us-ascii?Q?g/eNSpGYmvno9D2vVw/LUh8LndF9fh7mSkn10ezaQS5Dh9O+i3t+bqZpl015?= =?us-ascii?Q?k1iI/yo1IoKYt7oeL+8OwdoLnGtJFx66//SQqDctC0t7LnHhCBGHnLcwOrYg?= =?us-ascii?Q?h2DPutBKnFLFYyDUNu/a3VDi1/oJDYTE/8r6udbfxM2oEG+FuLk//+IgI4Nu?= =?us-ascii?Q?MRJ2cMdeJYsTqsVfUTGN8ZKgJA74fAmFKukcvjmazBwm13fG0/kMlsto4vF8?= =?us-ascii?Q?xl1fXcsfGfaJpZRTMgV09hWCDHXIHW4h7bwVk57BWb+nL6sMSUrjSX3hybhS?= =?us-ascii?Q?Nhd0W4yxorS8P8s3OEmHevXw1woBuYYDvJJ4n8vabZQoPlifuAJuFkgvmtvC?= =?us-ascii?Q?ygK3qwJ+YLaVEHEOa4I3+47Kv3RsNJRMX4wzCzk32qefnVMpGvByapGTOvPX?= =?us-ascii?Q?vuEnvRp+exBYthQTaCsGk/2WBO8Z36vy5YOOu+JTYqZYhu4cEMG/5ANFeStR?= =?us-ascii?Q?0Gnz/Y6Gl4rdrtTKpv56lg4IouZ3humnbEg2idlV/o8sFJLeMJoJJL9U1fzt?= =?us-ascii?Q?8LmrgCWE/WOHZW8+QVOWxTUVU4vb0/T9Gk60rc/pBtzbApch6Y+uHaKNXbLG?= =?us-ascii?Q?w5yitg7PwGu7mon3c7sloBwxr6zkwf5gzpHVSQi3fRkEEX0Q1zT+Iud1nyra?= =?us-ascii?Q?K6OVP8VKjsJCeYrp7mS7J/kkUdk77nby5Q46r4NfyH6FKu+CfqA2uFgi8rl5?= =?us-ascii?Q?Ngqs+bw/p8khdagmjjaFF4irPXSFe++MgW7jCEUaxAArJ5+1vpp9iAKzUezp?= =?us-ascii?Q?knjdUTekX7u6f+VeImJ53mP19vILhj771JAcq3mUD0qsx8ZUYPsP8dounp8Q?= =?us-ascii?Q?vs4kEWR9F30tahCc737Tpw813gpuPqjoJeXYuDlkEEVILJm/4jgBtPb8RGBo?= =?us-ascii?Q?7iCKID8sCJ8A/0uuZMvl/PPLp7Ki5Pk26Z/XTGNaqSUTe98rdEdEAbLW80g8?= =?us-ascii?Q?5QvCftapT9Yon/AQmt0yh8avc9CeHI/nO8bVFe8QCIHFXs7uxpu0mvOJBFBK?= =?us-ascii?Q?G/hti9eLSum6DaP/ck9qh3mJ11LRiH9sRirL9KbgHutP2xv04KB/U4atetZr?= =?us-ascii?Q?HXkAlGTHtQ=3D=3D?= X-OriginatorOrg: sraoss.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: bba4786a-7597-4a38-c178-08de4859a386 X-MS-Exchange-CrossTenant-AuthSource: OSZP286MB2160.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2025 10:44:56.7120 (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: k1zB9nWXi8iTn3OR6y9+Vk0DeXZC0ynIVWO4nhrS0rXahyvIKNZ+YmbOhmQuHd4PsuhIse42xZ3+t390AYe3XQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4P286MB6407 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --Multipart=_Wed__31_Dec_2025_19_44_55_+0900_Ok0z3oC/bht_7Z=e Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Tue, 2 Sep 2025 16:33:41 +0900 Yugo Nagata wrote: > > > > This allows to collect statistics on virtual generated columns. > > > > > > > > During ANALYZE, generation expressions are expanded, and statistics are computed > > > > using compute_expr_stats(). To support this, both compute_expr_stats() and AnlExprData > > > > are now exported from extended_stats.c. However, since they are no longer specific > > > > to extended statistics, it might be better to move them to analyze.c and vacuum.h. > > > > > > > > To enable the optimizer to make use of these statistics, a new field named > > > > virtual_gencols is added to RelOptInfo. This field holds the expressions of > > > > virtual generated columns in the table. In examine_variable(), if an expression > > > > in a WHERE clause matches a virtual generated column, the corresponding statistics > > > > are used for that expression. > > > > > > > > Example: > > > > > > > > - Before applying the patch, the cardinality estimate is erroneous. > > > > > > > > test=# create table t (i int, j int generated always as (i*10) virtual); > > > > CREATE TABLE > > > > test=# insert into t select generate_series(1,1000); > > > > INSERT 0 1000 > > > > test=# insert into t select 1 from generate_series(1,1000); > > > > INSERT 0 1000 > > > > test=# analyze t; > > > > ANALYZE > > > > test=# explain analyze select * from t where j = 10; > > > > QUERY PLAN > > > > ------------------------------------------------------------------------------------------------- > > > > Seq Scan on t (cost=0.00..0.02 rows=1 width=8) (actual time=0.031..0.806 rows=1001.00 loops=1) > > > > Filter: ((i * 10) = 10) > > > > Rows Removed by Filter: 999 > > > > Buffers: shared hit=9 > > > > Planning: > > > > Buffers: shared hit=10 > > > > Planning Time: 0.299 ms > > > > Execution Time: 0.948 ms > > > > (8 rows) > > > > > > > > > > > > - After applying the patch, the cardinality estimate is correct. > > > > > > > > test=# analyze t; > > > > ANALYZE > > > > test=# explain analyze select * from t where j = 10; > > > > QUERY PLAN > > > > ----------------------------------------------------------------------------------------------------- > > > > Seq Scan on t (cost=0.00..41.50 rows=1001 width=8) (actual time=0.034..0.871 rows=1001.00 loops=1) > > > > Filter: ((i * 10) = 10) > > > > Rows Removed by Filter: 999 > > > > Buffers: shared hit=9 > > > > Planning: > > > > Buffers: shared hit=6 > > > > Planning Time: 0.374 ms > > > > Execution Time: 1.028 ms > > > > (8 rows) > > > > > > > > > > > > Note that the patch is still a work in progress, so documentation and tests are not included. > > > > > > I've attached an updated patch. > > > > > > I modified the documentation to remove the statement that virtual generated columns > > > do not have statistics. > > > > > > In addition, I added a test to ensure that statistics on virtual generated columns > > > are available. > I've attached an updated patch that fixes the broken test since 10c4fe074a. Regards, Yugo Nagata -- Yugo Nagata --Multipart=_Wed__31_Dec_2025_19_44_55_+0900_Ok0z3oC/bht_7Z=e Content-Type: text/x-diff; name="v5-0001-Allow-to-collect-statistics-on-virtual-generated-.patch" Content-Disposition: attachment; filename="v5-0001-Allow-to-collect-statistics-on-virtual-generated-.patch" Content-Transfer-Encoding: 7bit