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 1w4xu3-002ke9-0N for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 09:18:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4xu1-005Y9I-23 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 09:18:22 +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 1w4xu1-005Y99-18 for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 09:18:21 +0000 Received: from mail-oo1-xc35.google.com ([2607:f8b0:4864:20::c35]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4xtz-00000000qqi-1CdD for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 09:18:21 +0000 Received: by mail-oo1-xc35.google.com with SMTP id 006d021491bc7-67c22b05346so2223794eaf.2 for ; Tue, 24 Mar 2026 02:18:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774343898; cv=none; d=google.com; s=arc-20240605; b=jDKBVchzDD5Jb8Kueb8o8f6LFPwGBRsSMc3FhbwME6Q98tPq+fOpKVrBQ/f6fE8nqq wflWN7dYsRXhrhUA0iiQ6Uc56vIhEu4N5mczytAHJwsyRxtkTJYzofTIKLECgSlMiq43 cbshu/d2xojd5OgKKTpHh46VpI6zxaBh/iSSbrBgaS4uTYyHff+XSl2m9yDW2c/dXSb7 bfqpWtXvwdVU30AwnIABGx62u8zWk/lBE3YLZdjvSdVN5+va8UnkGSi4+OLw4V3/KsVy YYgQ3zmg5/FmOq/v17d5kcVeUh3zLAvh2rptqoqFkoPzTIgFkfgeB79uF+jTeWnC5Iay RHcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=dUyjdj1sMW3ZXWBy2JrJiVQTWCreDNA5yf3J9fL2PGg=; fh=9txn7rqLlHE8VvJHJyJ9+fuRxgULz/L3nlmVrEizQDc=; b=KOkHVdOEr9ACCtEBmwhHXmDe3Y4nFosGLIpV9fboDj6tTSr3YNLFDTGsHze1A9ASC8 wSuVdJ0SPghwBYLISqezLt7yXJ1/3uUMTHoMmAqTQE4EAFNormvy/MbxmLcoAtdvlA2K XH5nlbbCcrJbwKBj1x2JxY8nhWm4y6GnA29GoS8HTl3cp/gXO5dPwPObTS7LVF8dpjK/ 2j/a7OBRgnBSrbKKSIADFGjUe06EmW3TTMPo33Pq6C6GQILiq0v2HLQfZMOy6l50nKW9 hlzWqnOIkvvXfPlz1tBeChqvl9YTnY/0A+X60rZsUEms7l9z3tevEQ3wof9wy/2w4qGR RqWg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774343898; x=1774948698; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=dUyjdj1sMW3ZXWBy2JrJiVQTWCreDNA5yf3J9fL2PGg=; b=UZpwoxyrTQvzv9TE/DaWDUFo5N5OEhNnI2mqAT7/MZhlnuVZJoprd08C+u0M26s+0X rAC0YI7T0nAds8bJM3RrhXNUIz04qu7emlfygvCQJVGCzaHuzs80qtG9jvY846sN6Z1R qkiFlbZi4kE9RMLYOPIYsvhD68qJGMY4XEI3b8NRdcYyVa4w93BCHWzGuHKAuhqIiic9 DWxcqaWrJXljD0sSU7McCGi3rGQBMKqBeNlnTno10ovbhFmKls9E55tD7udDobE6cOse MELwv4V6JmmZIU8uFi4zF/1sd4HAjj30TTi6hk5VQvSY/7lBh/WnjAH2ZmmJpWmd3JwU RTUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774343898; x=1774948698; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=dUyjdj1sMW3ZXWBy2JrJiVQTWCreDNA5yf3J9fL2PGg=; b=odvc4bkw6QjIGq7uR7aLA1qDADHZBZwnxE3hJLSHtfn+TL7mb8F7XYIUNiK6jRNsNA HsJM45ZkAM/c6hXq6LqhM4TbPkOaY5T/trNWratR/Dan2lUQOwCV36bzhv40b5OArK0E 4MKfBQEGX1HgAmpxUU4Ydx96mEYz7X9UR054K5LiojXZ7BWfmMIxIqPXmsHdRJjmx9b6 sNeiotBl5Al7aC7x9xZCLSMHfW9vRg4/xWpdToLIqIpZ80Sl0wLt028YnWgNrFv1uqkc 2/aVdmoCYaDpvoriaM7Vk4MYw+q0IulHYdrIgd8gyWfAlGGMJzczfmb/T+G8eAMhLAqo taWg== X-Forwarded-Encrypted: i=1; AJvYcCVGl9zRZ4kqpT/sbMmcmMUFtfYnx3cUnCInNgZau0rh4XPYqY9iVCQo9PLvgjtGaQPEk06J6oG/hYv9U4BD@postgresql.org X-Gm-Message-State: AOJu0YyBD9tb/zDblJkmFbcMYuZReRXAlM3A7Q98AVwccmNBCok9+YR+ 4kkal5AAqe3URGdD3UWdU+MPuBLPPV7lPDYloKUtXVDOwsbC1+U0x6RF1qJF/mCxnZFThvoTxS5 FOeDmEuvyO2n5gYQEpZH0hOxdhB/U2yEyAIvR X-Gm-Gg: ATEYQzy5c0yx7cLlBmOEs9M7/HoL7rUMjCVMlSCXGcqVRyjeGgCddLL2VteIMCu0XA1 8bF8uZvtbLTFxrHNuACoHe2kmVx79DS7VeRXTKdXod5JqN0Jm1BW98z4j7wE+cWw8IXcs0PbwLt jktPUQWgdpD0/xdI6N8Y/EPwMaCekAINvVIPDHnZVirF8asX/yMMsZQmDrOhDaE7AMaRAd3+1wV zHLmBu1tgrYZvIpFBwOl2fFRRi05JP37PaFSl6dh7QmCIT36h4VoBju0hH8i5VI6qb+grE8DP6L WzN23ryVZwkqTCWIlceVqmVIPwDLkQDMElVk+UPLoQ== X-Received: by 2002:a05:6820:201c:b0:67c:e0b4:a12a with SMTP id 006d021491bc7-67ce0b4a4e2mr8238696eaf.60.1774343897796; Tue, 24 Mar 2026 02:18:17 -0700 (PDT) MIME-Version: 1.0 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> <20251231194455.5975fda68ed8e941e4afb805@sraoss.co.jp> In-Reply-To: <20251231194455.5975fda68ed8e941e4afb805@sraoss.co.jp> From: Dean Rasheed Date: Tue, 24 Mar 2026 09:18:06 +0000 X-Gm-Features: AaiRm50CLMduGn2aXwUiqdFiiZFWnnDL5g9Txi0eoADpfB4sY4OX2K-2XWlyj1c Message-ID: Subject: Re: Allow to collect statistics on virtual generated columns To: Yugo Nagata Cc: Andres Freund , pgsql-hackers@postgresql.org Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Wed, 31 Dec 2025 at 10:45, Yugo Nagata wrote: > > I've attached an updated patch that fixes the broken test since 10c4fe074a. > I took a look at this, and the patch appears to work as intended. However, I have my doubts as to whether this is the best approach. Building stats on a virtual generated column is potentially quite expensive, and not something that everyone will want, so I think this really should be an optional feature that people can selectively enable, if they want. Therefore, I think that the previous approach was probably better. If I'm understanding it correctly, that allowed CREATE STATISTICS stat_name ON virt_col FROM tbl; as well as allowing statistics to be built on expressions including virtual generated columns, making it more flexible. The problem with this previous approach was that it didn't work correctly if a virtual generated column's expression was changed using ALTER TABLE ... SET EXPRESSION. I think that could be solved by expanding generated column expressions at ANALYZE time, rather than at CREATE STATISTICS time. So then the expression stored in the catalogs would be one referring to virtual generated columns, not their expanded forms (compare a CHECK constraint referring to a virtual generated column). Regards, Dean