From 036bdcec9f9998a6e50711fadce69e482ff18f55 Mon Sep 17 00:00:00 2001 From: David Rowley Date: Tue, 9 Jul 2024 09:54:59 +1200 Subject: Teach planner how to estimate rows for timestamp generate_series This provides the planner with row estimates for generate_series(TIMESTAMP, TIMESTAMP, INTERVAL), generate_series(TIMESTAMPTZ, TIMESTAMPTZ, INTERVAL) and generate_series(TIMESTAMPTZ, TIMESTAMPTZ, INTERVAL, TEXT) when the input parameter values can be estimated during planning. Author: David Rowley Reviewed-by: jian he Discussion: https://postgr.es/m/CAApHDvrBE%3D%2BASo_sGYmQJ3GvO8GPvX5yxXhRS%3Dt_ybd4odFkhQ%40mail.gmail.com --- src/include/catalog/pg_proc.dat | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/include') diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 0bf413fe054..e899ed5e77e 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -8331,19 +8331,25 @@ prorettype => 'numeric', proargtypes => 'numeric numeric', prosrc => 'generate_series_numeric' }, { oid => '938', descr => 'non-persistent series generator', - proname => 'generate_series', prorows => '1000', proretset => 't', + proname => 'generate_series', prorows => '1000', + prosupport => 'generate_series_timestamp_support', proretset => 't', prorettype => 'timestamp', proargtypes => 'timestamp timestamp interval', prosrc => 'generate_series_timestamp' }, { oid => '939', descr => 'non-persistent series generator', - proname => 'generate_series', prorows => '1000', proretset => 't', + proname => 'generate_series', prorows => '1000', + prosupport => 'generate_series_timestamp_support', proretset => 't', provolatile => 's', prorettype => 'timestamptz', proargtypes => 'timestamptz timestamptz interval', prosrc => 'generate_series_timestamptz' }, { oid => '6274', descr => 'non-persistent series generator', - proname => 'generate_series', prorows => '1000', proretset => 't', + proname => 'generate_series', prorows => '1000', + prosupport => 'generate_series_timestamp_support', proretset => 't', prorettype => 'timestamptz', proargtypes => 'timestamptz timestamptz interval text', prosrc => 'generate_series_timestamptz_at_zone' }, +{ oid => '8402', descr => 'planner support for generate_series', + proname => 'generate_series_timestamp_support', prorettype => 'internal', + proargtypes => 'internal', prosrc => 'generate_series_timestamp_support' }, # boolean aggregates { oid => '2515', descr => 'aggregate transition function', -- cgit v1.2.3