Beyyes commented on PR #14880: URL: https://github.com/apache/iotdb/pull/14880#issuecomment-2788639087
This pull request introduces a new `FailFunctionColumnTransformer` and integrates it into various parts of the codebase. It also includes a new optimization rule for transforming correlated scalar subqueries. Below are the most important changes: ### New Feature: Fail Function Column Transformer * Added `FailFunctionColumnTransformer` class to handle the 'fail' function, which throws an exception with a specified error message when evaluated. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/FailFunctionColumnTransformer.java`) * Updated `ColumnTransformerBuilder` to include the new `FailFunctionColumnTransformer` and handle the 'fail' function. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/relational/ColumnTransformerBuilder.java`) [[1]](diffhunk://#diff-3b0b89be6f0edd72821d73b79d483f69cff0bcd87b29b4d645fc733c0f9ad4e8R75) [[2]](diffhunk://#diff-3b0b89be6f0edd72821d73b79d483f69cff0bcd87b29b4d645fc733c0f9ad4e8R191-R196) [[3]](diffhunk://#diff-3b0b89be6f0edd72821d73b79d483f69cff0bcd87b29b4d645fc733c0f9ad4e8R984-R987) * Updated `FilterAndProjectOperator` to handle `FailFunctionColumnTransformer` in the column transformer tree. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/process/FilterAndProjectOperator.java`) [[1]](diffhunk://#diff-79b571e808c64bafa3b66b55fa2845b469c96f01410d5c85942e39cbca655d7fR27) [[2]](diffhunk://#diff-79b571e808c64bafa3b66b55fa2845b469c96f01410d5c85942e39cbca655d7fR411-R412) * Updated `TableMetadataImpl` to recognize the 'fail' function and return the appropriate type. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java`) [[1]](diffhunk://#diff-5420ab45f1bfb25708b0cd843b2770256e0671bc180acb7abf7f8a89888a3aa0R75) [[2]](diffhunk://#diff-5420ab45f1bfb25708b0cd843b2770256e0671bc180acb7abf7f8a89888a3aa0R545-R546) ### Optimization: Transform Correlated Scalar Subquery * Introduced a new rule `TransformCorrelatedScalarSubquery` to optimize correlated scalar subqueries by rewriting them to use a distinct mark and filter over a left outer join. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformCorrelatedScalarSubquery.java`) * Enabled the `TransformCorrelatedScalarSubquery` rule in the `LogicalOptimizeFactory`. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/LogicalOptimizeFactory.java`) [[1]](diffhunk://#diff-35ff9ab8021c099677170961b2bc538f3f9d7f1ca14a70b38d2abdbb23f651d6R76) [[2]](diffhunk://#diff-35ff9ab8021c099677170961b2bc538f3f9d7f1ca14a70b38d2abdbb23f651d6L259-R261) ### Other Changes * Corrected the test method name from `testUnCorrelatedExistsSubqueryInSelectClause` to `testCorrelatedExistsSubqueryInSelectClause`. (`integration-test/src/test/java/org/apache/iotdb/relational/it/query/recent/subquery/correlated/IoTDBCorrelatedExistsSubqueryIT.java`) * Minor documentation update in `TransformExistsApplyToCorrelatedJoin` to clarify the handling of uncorrelated EXISTS subqueries. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/TransformExistsApplyToCorrelatedJoin.java`) * Improved error message in `ArithmeticNegationColumnTransformer` when encountering unsupported types. (`iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/ArithmeticNegationColumnTransformer.java`) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
