This is an automated email from the ASF dual-hosted git repository. liyafan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 8cd2414b0d935e94d9377eb52690be0d9415db23 Author: lmagic233 <[email protected]> AuthorDate: Sun Jan 9 21:11:51 2022 +0800 [CALCITE-4977] Support Snapshot in RelMdColumnOrigins --- .../org/apache/calcite/rel/metadata/RelMdColumnOrigins.java | 6 ++++++ .../test/java/org/apache/calcite/test/RelMetadataTest.java | 11 +++++++++++ .../janino/GeneratedMetadata_ColumnOriginHandler.java | 2 ++ 3 files changed, 19 insertions(+) diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java index c8a56e2..02bb891 100644 --- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java +++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdColumnOrigins.java @@ -26,6 +26,7 @@ import org.apache.calcite.rel.core.Filter; import org.apache.calcite.rel.core.Join; import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.core.SetOp; +import org.apache.calcite.rel.core.Snapshot; import org.apache.calcite.rel.core.Sort; import org.apache.calcite.rel.core.TableFunctionScan; import org.apache.calcite.rel.core.TableModify; @@ -183,6 +184,11 @@ public class RelMdColumnOrigins return mq.getColumnOrigins(rel.getInput(), iOutputColumn); } + public @Nullable Set<RelColumnOrigin> getColumnOrigins(Snapshot rel, + RelMetadataQuery mq, int iOutputColumn) { + return mq.getColumnOrigins(rel.getInput(), iOutputColumn); + } + public @Nullable Set<RelColumnOrigin> getColumnOrigins(TableFunctionScan rel, RelMetadataQuery mq, int iOutputColumn) { final Set<RelColumnOrigin> set = new HashSet<>(); diff --git a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java index 37bf3a8..c5ae04e 100644 --- a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java +++ b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java @@ -563,6 +563,17 @@ public class RelMetadataTest extends SqlToRelTestBase { } @ParameterizedTest + @MethodSource("getArguments") void testColumnOriginsSnapshot( + final MetadataConfig metadataConfig) { + checkSingleColumnOrigin( + "select productid from products_temporal\n" + + "for system_time as of TIMESTAMP '2011-01-02 00:00:00'", + "PRODUCTS_TEMPORAL", + "PRODUCTID", + false, metadataConfig); + } + + @ParameterizedTest @MethodSource("getArguments") void testColumnOriginsAggKey( final MetadataConfig metadataConfig) { checkSingleColumnOrigin( diff --git a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java index 0c09816..d689d4a 100644 --- a/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java +++ b/core/src/test/resources/org/apache/calcite/rel/metadata/janino/GeneratedMetadata_ColumnOriginHandler.java @@ -82,6 +82,8 @@ public final class GeneratedMetadata_ColumnOriginHandler return provider0.getColumnOrigins((org.apache.calcite.rel.core.Project) r, mq, a2); } else if (r instanceof org.apache.calcite.rel.core.SetOp) { return provider0.getColumnOrigins((org.apache.calcite.rel.core.SetOp) r, mq, a2); + } else if (r instanceof org.apache.calcite.rel.core.Snapshot) { + return provider0.getColumnOrigins((org.apache.calcite.rel.core.Snapshot) r, mq, a2); } else if (r instanceof org.apache.calcite.rel.core.Sort) { return provider0.getColumnOrigins((org.apache.calcite.rel.core.Sort) r, mq, a2); } else if (r instanceof org.apache.calcite.rel.core.TableFunctionScan) {
