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..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,6 +27,7 @@ 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.TableModify; import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; @@ -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..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,6 +42,7 @@ 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.TableModify; import org.apache.calcite.rel.core.TableScan; import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; @@ -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"