@Julian, Thanks for putting these new unit tests. I'll take a look and get back to you today.
Jinfeng On Tue, Jul 26, 2016 at 1:40 AM, Julian Hyde <[email protected]> wrote: > 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 >> >> >> >
