From 972a8bc0b7250f6d9be0b2033503d534c47a15fe Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Thu, 18 Feb 2021 11:51:30 +0100 Subject: [PATCH] Rewrite time_partitions join clause to avoid smallint[] operator --- src/backend/distributed/sql/udfs/time_partitions/10.0-1.sql | 3 ++- src/backend/distributed/sql/udfs/time_partitions/latest.sql | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backend/distributed/sql/udfs/time_partitions/10.0-1.sql b/src/backend/distributed/sql/udfs/time_partitions/10.0-1.sql index 3f2e1995e..313237425 100644 --- a/src/backend/distributed/sql/udfs/time_partitions/10.0-1.sql +++ b/src/backend/distributed/sql/udfs/time_partitions/10.0-1.sql @@ -5,12 +5,13 @@ FROM ( FROM pg_class c JOIN pg_inherits i ON (c.oid = inhrelid) JOIN pg_partitioned_table p ON (inhparent = partrelid) - JOIN pg_attribute a ON (partrelid = attrelid AND ARRAY[attnum] <@ string_to_array(partattrs::text, ' ')::int2[]) + JOIN pg_attribute a ON (partrelid = attrelid) JOIN pg_type t ON (atttypid = t.oid) JOIN pg_namespace tn ON (t.typnamespace = tn.oid) LEFT JOIN pg_am am ON (c.relam = am.oid), pg_catalog.time_partition_range(c.oid) WHERE c.relpartbound IS NOT NULL AND p.partstrat = 'r' AND p.partnatts = 1 + AND a.attnum = ANY(partattrs::int2[]) ) partitions ORDER BY partrelid::text, lower_bound; diff --git a/src/backend/distributed/sql/udfs/time_partitions/latest.sql b/src/backend/distributed/sql/udfs/time_partitions/latest.sql index 3f2e1995e..313237425 100644 --- a/src/backend/distributed/sql/udfs/time_partitions/latest.sql +++ b/src/backend/distributed/sql/udfs/time_partitions/latest.sql @@ -5,12 +5,13 @@ FROM ( FROM pg_class c JOIN pg_inherits i ON (c.oid = inhrelid) JOIN pg_partitioned_table p ON (inhparent = partrelid) - JOIN pg_attribute a ON (partrelid = attrelid AND ARRAY[attnum] <@ string_to_array(partattrs::text, ' ')::int2[]) + JOIN pg_attribute a ON (partrelid = attrelid) JOIN pg_type t ON (atttypid = t.oid) JOIN pg_namespace tn ON (t.typnamespace = tn.oid) LEFT JOIN pg_am am ON (c.relam = am.oid), pg_catalog.time_partition_range(c.oid) WHERE c.relpartbound IS NOT NULL AND p.partstrat = 'r' AND p.partnatts = 1 + AND a.attnum = ANY(partattrs::int2[]) ) partitions ORDER BY partrelid::text, lower_bound;