From 2501017cd7cdb587e2ed9e6db4cd65307ff55af1 Mon Sep 17 00:00:00 2001 From: dz <953396112@qq.com> Date: Sat, 26 Oct 2019 17:42:49 +0800 Subject: [PATCH 1/2] Support TableModify in RelMdNodeTypes. --- .../apache/calcite/rel/metadata/RelMdNodeTypes.java | 6 ++++++ .../java/org/apache/calcite/test/RelMetadataTest.java | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java index 22737b67ff04..ae1288ac3c7a 100644 --- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java +++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java @@ -28,6 +28,7 @@ import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.core.Sort; import org.apache.calcite.rel.core.TableScan; +import org.apache.calcite.rel.core.TableModify; import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; import org.apache.calcite.util.BuiltInMethod; @@ -128,6 +129,11 @@ public Multimap, RelNode> getNodeTypes(Values rel, return getNodeTypes(rel, Values.class, mq); } + public Multimap, RelNode> getNodeTypes(TableModify rel, + RelMetadataQuery mq) { + return getNodeTypes(rel, TableModify.class, mq); + } + private static Multimap, RelNode> getNodeTypes(RelNode rel, Class c, RelMetadataQuery mq) { final Multimap, RelNode> nodeTypeCount = ArrayListMultimap.create(); 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 785ae17c0ea3..0440aff45198 100644 --- a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java +++ b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java @@ -43,6 +43,7 @@ import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.core.Sort; import org.apache.calcite.rel.core.TableScan; +import org.apache.calcite.rel.core.TableModify; import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; import org.apache.calcite.rel.logical.LogicalAggregate; @@ -2350,6 +2351,15 @@ private void checkNodeTypeCount(String sql, Map, Intege checkNodeTypeCount(sql, expected); } + @Test public void testNodeTypeTableModify() { + final String sql = "insert into emp select * from emp"; + final Map, Integer> expected = new HashMap<>(); + expected.put(TableScan.class, 1); + expected.put(TableModify.class, 1); + expected.put(Project.class, 1); + checkNodeTypeCount(sql, expected); + } + @Test public void testNodeTypeCountJoinFinite() { final String sql = "select * from (select * from emp limit 14) as emp\n" + "inner join (select * from dept limit 4) as dept\n" From 6407c0752b90c0483b3bd950355398df5137e231 Mon Sep 17 00:00:00 2001 From: dz <953396112@qq.com> Date: Sat, 26 Oct 2019 18:19:51 +0800 Subject: [PATCH 2/2] fix import order. --- .../java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java | 2 +- core/src/test/java/org/apache/calcite/test/RelMetadataTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java index ae1288ac3c7a..c0d856672004 100644 --- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java +++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdNodeTypes.java @@ -27,8 +27,8 @@ import org.apache.calcite.rel.core.Minus; import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.core.Sort; -import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.core.TableModify; +import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; import org.apache.calcite.util.BuiltInMethod; 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 0440aff45198..ee60ff2659ed 100644 --- a/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java +++ b/core/src/test/java/org/apache/calcite/test/RelMetadataTest.java @@ -42,8 +42,8 @@ import org.apache.calcite.rel.core.Minus; import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.core.Sort; -import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.core.TableModify; +import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; import org.apache.calcite.rel.logical.LogicalAggregate;