You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by li...@apache.org on 2022/03/04 13:24:16 UTC

[calcite] 12/41: [CALCITE-4977] Support Snapshot in RelMdColumnOrigins

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 <mi...@outlook.com>
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) {