Jinfeng,

Here’s a patch that attempts to test checkAmbiguousUnresolvedStar. Let me know 
whether I’ve missed any coverage.

Julian


diff --git a/core/src/test/java/org/apache/calcite/test/MockCatalogReader.java 
b/core/src/test/java/org/apache/calcite/test/MockCatalogReader.java
index e56dd96..2c791cf 100644
--- a/core/src/test/java/org/apache/calcite/test/MockCatalogReader.java
+++ b/core/src/test/java/org/apache/calcite/test/MockCatalogReader.java
@@ -233,6 +233,20 @@ public MockCatalogReader init() {
     contactAddressTable.addColumn("MAILING_ADDRESS", addressType);
     registerTable(contactAddressTable);
 
+    // Register "DYNAMIC" schema.
+    MockSchema dynamicSchema = new MockSchema("DYNAMIC");
+    registerSchema(dynamicSchema);
+
+    MockTable nationTable =
+        new MockDynamicTable(this, dynamicSchema.getCatalogName(),
+            dynamicSchema.getName(), "NATION", false, 100);
+    registerTable(nationTable);
+
+    MockTable customerTable =
+        new MockDynamicTable(this, dynamicSchema.getCatalogName(),
+            dynamicSchema.getName(), "CUSTOMER", false, 100);
+    registerTable(customerTable);
+
     // Register "CUSTOMER" schema.
     MockSchema customerSchema = new MockSchema("CUSTOMER");
     registerSchema(customerSchema);
diff --git a/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java 
b/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
index 57f71d1..c095453 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java
@@ -7777,6 +7777,37 @@ public void _testValuesWithAggFuncs() {
     //   12345678901234567890123456789012345678901234567890123456789012345
     //        check("SELECT count(0) FROM emp GROUP BY ()");
   }
+
+
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-1150";>[CALCITE-1150]
+   * Dynamic Table / Dynamic Star support</a>. */
+  @Test public void testDynamicStar() throws Exception {
+    final String sql = "select n.n_nation\n"
+        + "from (select * from \"DYNAMIC\".NATION) as n,\n"
+        + " (select * from \"DYNAMIC\".CUSTOMER)";
+    sql(sql).type("RecordType(ANY N_NATION) NOT NULL");
+  }
+
+  @Test public void testAmbiguousDynamicStar() throws Exception {
+    final String sql = "select ^n_nation^\n"
+        + "from (select * from \"DYNAMIC\".NATION),\n"
+        + " (select * from \"DYNAMIC\".CUSTOMER)";
+    sql(sql).fails("Column 'N_NATION' is ambiguous");
+  }
+
+  @Test public void testAmbiguousDynamicStar2() throws Exception {
+    final String sql = "select ^n_nation^\n"
+        + "from (select * from \"DYNAMIC\".NATION, \"DYNAMIC\".CUSTOMER)";
+    sql(sql).fails("Column 'N_NATION' is ambiguous");
+  }
+
+  @Test public void testAmbiguousDynamicStar3() throws Exception {
+    final String sql = "select ^nc.n_nation^\n"
+        + "from (select * from \"DYNAMIC\".NATION, \"DYNAMIC\".CUSTOMER) as 
nc";
+    sql(sql).fails("Column 'N_NATION' is ambiguous");
+  }
+
 }
 
 // End SqlValidatorTest.java



> On Jul 26, 2016, at 1:05 AM, Julian Hyde <[email protected]> wrote:
> 
> Jinfeng,
> 
> In https://issues.apache.org/jira/browse/CALCITE-1150 you added dynamic 
> record types, and the method checkAmbiguousUnresolvedStar is supposed to 
> throw “Column ‘X’ is ambiguous” if more than one field has a dynamic star.
> 
> As part of https://issues.apache.org/jira/browse/CALCITE-1208 I am revisiting 
> that code and doing some major refactoring.
> 
> Did you add any tests where checkAmbiguousUnresolvedStar throws that 
> particular error? I can’t find any; in fact, if I remove all calls to that 
> method, the test suite still passes.
> 
> Can you suggest some tests for that functionality? I want to make sure I’m 
> not breaking what you did.
> 
> Julian
> 
> 
> 

Reply via email to