From b8e44b702b8d4f6e1cc987a2175e430a3d05f373 Mon Sep 17 00:00:00 2001 From: Piotr Findeisen Date: Wed, 15 Nov 2023 09:54:09 +0100 Subject: [PATCH] Deprecate old ConstraintApplicationResult constructor The new `ConnectorExpression`-based API was introduced long ago and is stable. --- .../InformationSchemaMetadata.java | 2 +- .../connector/system/SystemTablesMetadata.java | 2 +- .../TestTableScanRedirectionWithPushdown.java | 1 + .../rule/TestPushPredicateIntoTableScan.java | 4 ++-- .../optimizations/TestRemoveEmptyUnionBranches.java | 2 ++ .../spi/connector/ConstraintApplicationResult.java | 3 +++ .../io/trino/plugin/accumulo/AccumuloMetadata.java | 2 +- .../java/io/trino/plugin/atop/AtopMetadata.java | 2 +- .../io/trino/plugin/jdbc/DefaultJdbcMetadata.java | 13 +++++-------- .../io/trino/plugin/bigquery/BigQueryMetadata.java | 2 +- .../trino/plugin/cassandra/CassandraMetadata.java | 1 + .../trino/plugin/deltalake/DeltaLakeMetadata.java | 1 + .../java/io/trino/plugin/hive/HiveMetadata.java | 2 +- .../java/io/trino/plugin/hudi/HudiMetadata.java | 1 + .../main/java/io/trino/plugin/jmx/JmxMetadata.java | 2 +- .../java/io/trino/plugin/kafka/KafkaMetadata.java | 2 +- .../java/io/trino/plugin/kudu/KuduMetadata.java | 2 +- .../trino/plugin/localfile/LocalFileMetadata.java | 2 +- .../java/io/trino/plugin/mongodb/MongoMetadata.java | 2 +- .../java/io/trino/plugin/pinot/PinotMetadata.java | 2 +- .../trino/plugin/prometheus/PrometheusMetadata.java | 2 +- .../trino/plugin/raptor/legacy/RaptorMetadata.java | 1 + .../java/io/trino/plugin/redis/RedisMetadata.java | 2 +- .../java/io/trino/plugin/thrift/ThriftMetadata.java | 2 +- .../java/io/trino/plugin/tpch/TpchMetadata.java | 1 + 25 files changed, 33 insertions(+), 25 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/connector/informationschema/InformationSchemaMetadata.java b/core/trino-main/src/main/java/io/trino/connector/informationschema/InformationSchemaMetadata.java index 24e4ad501976..14c8bea286c7 100644 --- a/core/trino-main/src/main/java/io/trino/connector/informationschema/InformationSchemaMetadata.java +++ b/core/trino-main/src/main/java/io/trino/connector/informationschema/InformationSchemaMetadata.java @@ -196,7 +196,7 @@ public Optional> applyFilter(C } table = new InformationSchemaTableHandle(table.getCatalogName(), table.getTable(), prefixes, table.getLimit()); - return Optional.of(new ConstraintApplicationResult<>(table, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(table, constraint.getSummary(), constraint.getExpression(), false)); } public static Set defaultPrefixes(String catalogName) diff --git a/core/trino-main/src/main/java/io/trino/connector/system/SystemTablesMetadata.java b/core/trino-main/src/main/java/io/trino/connector/system/SystemTablesMetadata.java index 98228ac46f32..82da42b69658 100644 --- a/core/trino-main/src/main/java/io/trino/connector/system/SystemTablesMetadata.java +++ b/core/trino-main/src/main/java/io/trino/connector/system/SystemTablesMetadata.java @@ -163,7 +163,7 @@ public Optional> applyFilter(C // TODO (https://github.com/trinodb/trino/issues/3647) indicate the table scan is empty } table = new SystemTableHandle(table.getSchemaName(), table.getTableName(), newDomain); - return Optional.of(new ConstraintApplicationResult<>(table, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(table, constraint.getSummary(), constraint.getExpression(), false)); } private Constraint effectiveConstraint(TupleDomain oldDomain, Constraint newConstraint, TupleDomain effectiveDomain) diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/TestTableScanRedirectionWithPushdown.java b/core/trino-main/src/test/java/io/trino/sql/planner/TestTableScanRedirectionWithPushdown.java index ca4f7dbdb818..e407895854af 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/TestTableScanRedirectionWithPushdown.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/TestTableScanRedirectionWithPushdown.java @@ -442,6 +442,7 @@ private ApplyFilter getMockApplyFilter(Set pushdownColumns) new MockConnectorTableHandle(handle.getTableName(), newDomain, Optional.empty()), constraint.getSummary() .filter((columnHandle, domain) -> !pushdownColumns.contains(columnHandle)), + constraint.getExpression(), false)); }; } diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushPredicateIntoTableScan.java b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushPredicateIntoTableScan.java index d2c98927016f..b5713a02e2d9 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushPredicateIntoTableScan.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/iterative/rule/TestPushPredicateIntoTableScan.java @@ -412,10 +412,10 @@ public static MockConnectorFactory createMockFactory() builder .withApplyFilter((session, tableHandle, constraint) -> { if (tableHandle.equals(CONNECTOR_PARTITIONED_TABLE_HANDLE_TO_UNPARTITIONED)) { - return Optional.of(new ConstraintApplicationResult<>(CONNECTOR_UNPARTITIONED_TABLE_HANDLE, TupleDomain.all(), false)); + return Optional.of(new ConstraintApplicationResult<>(CONNECTOR_UNPARTITIONED_TABLE_HANDLE, TupleDomain.all(), constraint.getExpression(), false)); } if (tableHandle.equals(CONNECTOR_PARTITIONED_TABLE_HANDLE)) { - return Optional.of(new ConstraintApplicationResult<>(CONNECTOR_PARTITIONED_TABLE_HANDLE, TupleDomain.all(), false)); + return Optional.of(new ConstraintApplicationResult<>(CONNECTOR_PARTITIONED_TABLE_HANDLE, TupleDomain.all(), constraint.getExpression(), false)); } return Optional.empty(); }) diff --git a/core/trino-main/src/test/java/io/trino/sql/planner/optimizations/TestRemoveEmptyUnionBranches.java b/core/trino-main/src/test/java/io/trino/sql/planner/optimizations/TestRemoveEmptyUnionBranches.java index 5d0db81f6c6f..8168ea6bb09e 100644 --- a/core/trino-main/src/test/java/io/trino/sql/planner/optimizations/TestRemoveEmptyUnionBranches.java +++ b/core/trino-main/src/test/java/io/trino/sql/planner/optimizations/TestRemoveEmptyUnionBranches.java @@ -148,6 +148,7 @@ private MockConnectorFactory.ApplyFilter applyFilter() new MockConnectorTableHandle(handle.getTableName(), TupleDomain.none(), Optional.empty()), constraint.getSummary() .filter((ch, domain) -> !shouldPushdown.test(ch)), + constraint.getExpression(), false)); } @@ -160,6 +161,7 @@ private MockConnectorFactory.ApplyFilter applyFilter() new MockConnectorTableHandle(handle.getTableName(), newDomain, Optional.empty()), constraint.getSummary() .filter((columnHandle, domain) -> !shouldPushdown.test(columnHandle)), + constraint.getExpression(), false)); } } diff --git a/core/trino-spi/src/main/java/io/trino/spi/connector/ConstraintApplicationResult.java b/core/trino-spi/src/main/java/io/trino/spi/connector/ConstraintApplicationResult.java index 04dd3122d5c1..c09b39f1c3e9 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/connector/ConstraintApplicationResult.java +++ b/core/trino-spi/src/main/java/io/trino/spi/connector/ConstraintApplicationResult.java @@ -31,7 +31,10 @@ public class ConstraintApplicationResult /** * @param precalculateStatistics Indicates whether engine should consider calculating statistics based on the plan before pushdown, * as the connector may be unable to provide good table statistics for {@code handle}. + * + * @deprecated Use {@link #ConstraintApplicationResult(Object, TupleDomain, ConnectorExpression, boolean)}. */ + @Deprecated public ConstraintApplicationResult(T handle, TupleDomain remainingFilter, boolean precalculateStatistics) { this(handle, remainingFilter, Optional.empty(), precalculateStatistics); diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java index 14902550a85d..5920b4effb97 100644 --- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java +++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloMetadata.java @@ -387,7 +387,7 @@ public Optional> applyFilter(C handle.getSerializerClassName(), handle.getScanAuthorizations()); - return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } private void checkNoRollback() diff --git a/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopMetadata.java b/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopMetadata.java index b5065f82ce7a..368ae3bcd23c 100644 --- a/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopMetadata.java +++ b/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopMetadata.java @@ -176,6 +176,6 @@ public Optional> applyFilter(C newStartTimeDomain, newEndTimeDomain); - return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } } diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java index 47762fc13c5e..13c2e7f75fd8 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/DefaultJdbcMetadata.java @@ -179,11 +179,11 @@ public Optional> applyFilter(C TupleDomain newDomain = oldDomain.intersect(constraint.getSummary()); List newConstraintExpressions; TupleDomain remainingFilter; - Optional remainingExpression; + ConnectorExpression remainingExpression; if (newDomain.isNone()) { newConstraintExpressions = ImmutableList.of(); remainingFilter = TupleDomain.all(); - remainingExpression = Optional.of(Constant.TRUE); + remainingExpression = Constant.TRUE; } else { Map domains = newDomain.getDomains().orElseThrow(); @@ -225,11 +225,11 @@ public Optional> applyFilter(C .addAll(handle.getConstraintExpressions()) .addAll(newExpressions) .build().asList(); - remainingExpression = Optional.of(and(remainingExpressions)); + remainingExpression = and(remainingExpressions); } else { newConstraintExpressions = ImmutableList.of(); - remainingExpression = Optional.empty(); + remainingExpression = constraint.getExpression(); } } @@ -250,10 +250,7 @@ public Optional> applyFilter(C handle.getAuthorization(), handle.getUpdateAssignments()); - return Optional.of( - remainingExpression.isPresent() - ? new ConstraintApplicationResult<>(handle, remainingFilter, remainingExpression.get(), precalculateStatisticsForPushdown) - : new ConstraintApplicationResult<>(handle, remainingFilter, precalculateStatisticsForPushdown)); + return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, remainingExpression, precalculateStatisticsForPushdown)); } private JdbcTableHandle flushAttributesAsQuery(ConnectorSession session, JdbcTableHandle handle) diff --git a/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryMetadata.java b/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryMetadata.java index 14a0657e9d74..467693bb2051 100644 --- a/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryMetadata.java +++ b/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryMetadata.java @@ -788,7 +788,7 @@ public Optional> applyFilter( BigQueryTableHandle updatedHandle = bigQueryTableHandle.withConstraint(newDomain); - return Optional.of(new ConstraintApplicationResult<>(updatedHandle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(updatedHandle, constraint.getSummary(), constraint.getExpression(), false)); } @Override diff --git a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java index de4b76875ae7..0241cc9880f6 100644 --- a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java +++ b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java @@ -273,6 +273,7 @@ public Optional> applyFilter(C // TODO this should probably be AND-ed with handle.getClusteringKeyPredicates() clusteringKeyPredicates)), unenforcedConstraint, + constraint.getExpression(), false)); } diff --git a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java index fc337cdbeb1c..77cd1946e2dc 100644 --- a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java +++ b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeMetadata.java @@ -2753,6 +2753,7 @@ public Optional> applyFilter(C return Optional.of(new ConstraintApplicationResult<>( newHandle, newUnenforcedConstraint.transformKeys(ColumnHandle.class::cast), + constraint.getExpression(), false)); } diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveMetadata.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveMetadata.java index eaa423967fbb..996985e65cb2 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveMetadata.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveMetadata.java @@ -2995,7 +2995,7 @@ public Optional> applyFilter(C unenforcedConstraint = partitionResult.getEffectivePredicate().filter((column, domain) -> !partitionColumns.contains(column)); } - return Optional.of(new ConstraintApplicationResult<>(newHandle, unenforcedConstraint, false)); + return Optional.of(new ConstraintApplicationResult<>(newHandle, unenforcedConstraint, constraint.getExpression(), false)); } @Override diff --git a/plugin/trino-hudi/src/main/java/io/trino/plugin/hudi/HudiMetadata.java b/plugin/trino-hudi/src/main/java/io/trino/plugin/hudi/HudiMetadata.java index 709e7439862c..fbbc5e09cb4e 100644 --- a/plugin/trino-hudi/src/main/java/io/trino/plugin/hudi/HudiMetadata.java +++ b/plugin/trino-hudi/src/main/java/io/trino/plugin/hudi/HudiMetadata.java @@ -174,6 +174,7 @@ public Optional> applyFilter(C return Optional.of(new ConstraintApplicationResult<>( newHudiTableHandle, newHudiTableHandle.getRegularPredicates().transformKeys(ColumnHandle.class::cast), + constraint.getExpression(), false)); } diff --git a/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxMetadata.java b/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxMetadata.java index 43efd522e81d..6f6990b37e29 100644 --- a/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxMetadata.java +++ b/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxMetadata.java @@ -287,7 +287,7 @@ public Optional> applyFilter(C JmxTableHandle newTableHandle = new JmxTableHandle(tableHandle.getTableName(), tableHandle.getObjectNames(), tableHandle.getColumnHandles(), tableHandle.isLiveData(), newDomain); - return Optional.of(new ConstraintApplicationResult<>(newTableHandle, TupleDomain.withColumnDomains(otherDomains), false)); + return Optional.of(new ConstraintApplicationResult<>(newTableHandle, TupleDomain.withColumnDomains(otherDomains), constraint.getExpression(), false)); } private static Type getColumnType(MBeanAttributeInfo attribute) diff --git a/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java b/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java index aa7af3535170..c7f1a02492fb 100644 --- a/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java +++ b/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaMetadata.java @@ -252,7 +252,7 @@ public Optional> applyFilter(C handle.getColumns(), newDomain); - return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } private KafkaTopicDescription getRequiredTopicDescription(ConnectorSession session, SchemaTableName schemaTableName) diff --git a/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java b/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java index e8ac4922ebe0..4e16c1441e31 100755 --- a/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java +++ b/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduMetadata.java @@ -462,7 +462,7 @@ public Optional> applyFilter(C handle.getBucketCount(), handle.getLimit()); - return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } /** diff --git a/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileMetadata.java b/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileMetadata.java index 44eac2de4e5b..9d0a03f9f8ef 100644 --- a/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileMetadata.java +++ b/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileMetadata.java @@ -148,6 +148,6 @@ public Optional> applyFilter(C handle.getServerAddressColumn(), newDomain); - return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } } diff --git a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java index 37ca08535c28..f5b10627271e 100644 --- a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java +++ b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoMetadata.java @@ -631,7 +631,7 @@ public Optional> applyFilter(C handle.getProjectedColumns(), handle.getLimit()); - return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, false)); + return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, constraint.getExpression(), false)); } @Override diff --git a/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotMetadata.java b/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotMetadata.java index 78a6b48a48dc..f0f3eaef8267 100755 --- a/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotMetadata.java +++ b/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotMetadata.java @@ -317,7 +317,7 @@ else if (isFilterPushdownUnsupported(entry.getValue())) { newDomain, handle.getLimit(), handle.getQuery()); - return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, false)); + return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, constraint.getExpression(), false)); } // IS NULL and IS NOT NULL are handled differently in Pinot, pushing down would lead to inconsistent results. diff --git a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusMetadata.java b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusMetadata.java index b1b5e828f218..3adcbc2097cd 100644 --- a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusMetadata.java +++ b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusMetadata.java @@ -158,6 +158,6 @@ public Optional> applyFilter(C { PrometheusTableHandle tableHandle = ((PrometheusTableHandle) handle) .withPredicate(constraint.getSummary()); - return Optional.of(new ConstraintApplicationResult<>(tableHandle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(tableHandle, constraint.getSummary(), constraint.getExpression(), false)); } } diff --git a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java index 4b9268970c17..ac9012779830 100644 --- a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java +++ b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorMetadata.java @@ -327,6 +327,7 @@ public Optional> applyFilter(C newDomain.intersect(table.getConstraint()), table.getBucketAssignments()), constraint.getSummary(), + constraint.getExpression(), false)); } diff --git a/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisMetadata.java b/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisMetadata.java index ead3c6e30fa1..3fa639caece2 100644 --- a/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisMetadata.java +++ b/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisMetadata.java @@ -240,7 +240,7 @@ else if (getUserDefinedKeySize(session, handle) > 1) { handle.getKeyName(), newDomain); - return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, false)); + return Optional.of(new ConstraintApplicationResult<>(handle, remainingFilter, constraint.getExpression(), false)); } @Override diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java index edaf3290ff33..286d9354354e 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java @@ -179,7 +179,7 @@ public Optional> applyFilter(C newDomain, handle.getDesiredColumns()); - return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), false)); + return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } @Override diff --git a/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchMetadata.java b/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchMetadata.java index f529842f0c0e..f1aa34153273 100644 --- a/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchMetadata.java +++ b/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchMetadata.java @@ -505,6 +505,7 @@ else if (predicatePushdownEnabled && handle.getTableName().equals(TpchTable.PART handle.getScaleFactor(), oldDomain.intersect(predicate)), unenforcedConstraint, + constraint.getExpression(), false)); }