Package org.apache.calcite.sql.test
Class SqlAdvisorTest
- java.lang.Object
-
- org.apache.calcite.test.SqlValidatorTestCase
-
- org.apache.calcite.sql.test.SqlAdvisorTest
-
public class SqlAdvisorTest extends SqlValidatorTestCase
Concrete child class ofSqlValidatorTestCase
, containing unit tests for SqlAdvisor.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.calcite.test.SqlValidatorTestCase
SqlValidatorTestCase.Tester
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.List<java.lang.String>
A_TABLE
private static java.util.List<java.lang.String>
AB_TABLES
static SqlTestFactory
ADVISOR_TEST_FACTORY
org.junit.rules.MethodRule
configureTester
private static java.util.List<java.lang.String>
DEPT_COLUMNS
private static java.util.List<java.lang.String>
EMP_COLUMNS
private static java.util.List<java.lang.String>
EMP_COLUMNS_E
private static java.util.List<java.lang.String>
EMP_TABLE
private static java.lang.String
EMPNO_EMP
protected static java.util.List<java.lang.String>
EXPR_KEYWORDS
protected static java.util.List<java.lang.String>
FETCH_OFFSET
protected static java.util.List<java.lang.String>
FROM_KEYWORDS
protected static java.util.List<java.lang.String>
JOIN_KEYWORDS
private static java.util.List<java.lang.String>
ORDER_KEYWORDS
protected static java.util.List<java.lang.String>
PREDICATE_KEYWORDS
protected static java.util.List<java.lang.String>
QUANTIFIERS
protected static java.util.List<java.lang.String>
SALES_TABLES
private static java.util.List<java.lang.String>
SCHEMAS
protected static java.util.List<java.lang.String>
SELECT_KEYWORDS
private static java.util.List<java.lang.String>
SETOPS
private static java.util.List<java.lang.String>
STAR_KEYWORD
private static java.util.List<java.lang.String>
WHERE_KEYWORDS
-
Fields inherited from class org.apache.calcite.test.SqlValidatorTestCase
tester, TESTER_CONFIGURATION_RULE
-
-
Constructor Summary
Constructors Constructor Description SqlAdvisorTest()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
assertComplete(java.lang.String sql, java.lang.String expectedResults, java.lang.String expectedWord)
protected void
assertComplete(java.lang.String sql, java.lang.String expectedResults, java.lang.String expectedWord, java.util.Map<java.lang.String,java.lang.String> replacements)
Tests that a given SQL which may be invalid or incomplete simplifies itself and yields the salesTables set of completion hints.protected void
assertComplete(java.lang.String sql, java.util.List<java.lang.String>... expectedResults)
protected void
assertComplete(java.lang.String sql, java.util.Map<java.lang.String,java.lang.String> replacements, java.util.List<java.lang.String>... expectedResults)
protected void
assertEquals(java.lang.String[] actualResults, java.util.List<java.lang.String>... expectedResults)
protected void
assertHint(java.lang.String sql, java.lang.String expectedResults)
Checks that a given SQL statement yields the expected set of completion hints.protected void
assertHint(java.lang.String sql, java.util.List<java.lang.String>... expectedLists)
private void
assertReplacements(java.lang.String sql, java.util.Map<java.lang.String,java.lang.String> replacements, org.apache.calcite.sql.advise.SqlAdvisor advisor, java.lang.String word, java.util.List<org.apache.calcite.sql.validate.SqlMoniker> results)
protected void
assertSimplify(java.lang.String sql, java.lang.String expected)
Tests that a given SQL statement simplifies to the salesTables result.private void
assertTokenizesTo(java.lang.String sql, java.lang.String expected)
private java.lang.String
convertCompletionHints(java.util.List<org.apache.calcite.sql.validate.SqlMoniker> hints)
protected java.util.List<java.lang.String>
getFromKeywords()
protected java.util.List<java.lang.String>
getJoinKeywords()
protected java.util.List<java.lang.String>
getSalesTables()
Returns a list of the tables in the SALES schema.protected java.util.List<java.lang.String>
getSelectKeywords()
SqlTester
getTester()
Returns a tester.protected static <T> java.util.List<T>
plus(java.util.List<T>... lists)
Concatenates several lists of the same type into a single list.private java.lang.String
replaceQuotes(org.apache.calcite.sql.parser.SqlParser.Config parserConfig, java.lang.String sql)
void
testAdviceEmptyFrom()
void
testAdviceExpression()
void
testAdviceKeywordsJava()
void
testAdviceMixedCase()
void
testFrom()
void
testFromComplete()
void
testFromWhere()
void
testGroup()
void
testInsert()
void
testJoin()
void
testJoinKeywords()
void
testMssql()
void
testNestSchema()
void
testNestSchemaSqlServer()
void
testNestTable1()
void
testNestTable2()
void
testNestTable3()
void
testNestTable4()
void
testNestTableSchemaMustMatch()
void
testOnCondition()
void
testOrderByList()
void
testPartialIdentifier()
void
testSelectList()
void
testSimlifyMinus()
void
testSimlifySubQueryMultipleFrom()
void
testSimlifySubQueryStar()
void
testSimpleParser()
void
testSimpleParserQuotedIdDefault()
private void
testSimpleParserQuotedIdImpl()
void
testSimpleParserQuotedIdJava()
void
testSimpleParserQuotedIdMySql()
void
testSimpleParserQuotedIdSqlServer()
void
testSimpleParserTokenizer()
void
testSimplifyStarAlias()
void
testSubQuery()
void
testSubQueryInWhere()
void
testUnion()
void
testWhereList()
private static <T> java.lang.String
toString(java.util.Collection<T> list)
Converts a list to a string, one item per line.-
Methods inherited from class org.apache.calcite.test.SqlValidatorTestCase
assertExceptionIsThrown, check, checkCharset, checkCollation, checkColumnType, checkEx, checkExp, checkExpFails, checkExpType, checkFails, checkIntervalConv, checkResultType, checkWholeExpFails, expr, sql, win, winExp, winExp2, winSql
-
-
-
-
Field Detail
-
ADVISOR_TEST_FACTORY
public static final SqlTestFactory ADVISOR_TEST_FACTORY
-
configureTester
public org.junit.rules.MethodRule configureTester
-
STAR_KEYWORD
private static final java.util.List<java.lang.String> STAR_KEYWORD
-
FROM_KEYWORDS
protected static final java.util.List<java.lang.String> FROM_KEYWORDS
-
SALES_TABLES
protected static final java.util.List<java.lang.String> SALES_TABLES
-
SCHEMAS
private static final java.util.List<java.lang.String> SCHEMAS
-
AB_TABLES
private static final java.util.List<java.lang.String> AB_TABLES
-
EMP_TABLE
private static final java.util.List<java.lang.String> EMP_TABLE
-
FETCH_OFFSET
protected static final java.util.List<java.lang.String> FETCH_OFFSET
-
EXPR_KEYWORDS
protected static final java.util.List<java.lang.String> EXPR_KEYWORDS
-
QUANTIFIERS
protected static final java.util.List<java.lang.String> QUANTIFIERS
-
SELECT_KEYWORDS
protected static final java.util.List<java.lang.String> SELECT_KEYWORDS
-
ORDER_KEYWORDS
private static final java.util.List<java.lang.String> ORDER_KEYWORDS
-
EMP_COLUMNS
private static final java.util.List<java.lang.String> EMP_COLUMNS
-
EMP_COLUMNS_E
private static final java.util.List<java.lang.String> EMP_COLUMNS_E
-
DEPT_COLUMNS
private static final java.util.List<java.lang.String> DEPT_COLUMNS
-
PREDICATE_KEYWORDS
protected static final java.util.List<java.lang.String> PREDICATE_KEYWORDS
-
WHERE_KEYWORDS
private static final java.util.List<java.lang.String> WHERE_KEYWORDS
-
A_TABLE
private static final java.util.List<java.lang.String> A_TABLE
-
JOIN_KEYWORDS
protected static final java.util.List<java.lang.String> JOIN_KEYWORDS
-
SETOPS
private static final java.util.List<java.lang.String> SETOPS
-
EMPNO_EMP
private static final java.lang.String EMPNO_EMP
- See Also:
- Constant Field Values
-
-
Method Detail
-
getFromKeywords
protected java.util.List<java.lang.String> getFromKeywords()
-
getSelectKeywords
protected java.util.List<java.lang.String> getSelectKeywords()
-
getSalesTables
protected java.util.List<java.lang.String> getSalesTables()
Returns a list of the tables in the SALES schema. Derived classes with extended SALES schemas may override.- Returns:
- list of tables in the SALES schema
-
getJoinKeywords
protected java.util.List<java.lang.String> getJoinKeywords()
-
assertTokenizesTo
private void assertTokenizesTo(java.lang.String sql, java.lang.String expected)
-
assertHint
protected void assertHint(java.lang.String sql, java.util.List<java.lang.String>... expectedLists) throws java.lang.Exception
- Throws:
java.lang.Exception
-
assertHint
protected void assertHint(java.lang.String sql, java.lang.String expectedResults) throws java.lang.Exception
Checks that a given SQL statement yields the expected set of completion hints.- Parameters:
sql
- SQL statementexpectedResults
- Expected list of hints- Throws:
java.lang.Exception
- on error
-
assertSimplify
protected void assertSimplify(java.lang.String sql, java.lang.String expected)
Tests that a given SQL statement simplifies to the salesTables result.- Parameters:
sql
- SQL statement to simplify. The SQL statement must contain precisely one caret '^', which marks the location where completion is to occur.expected
- Expected result after simplification.
-
assertComplete
protected void assertComplete(java.lang.String sql, java.util.List<java.lang.String>... expectedResults)
-
assertComplete
protected void assertComplete(java.lang.String sql, java.util.Map<java.lang.String,java.lang.String> replacements, java.util.List<java.lang.String>... expectedResults)
-
assertComplete
protected void assertComplete(java.lang.String sql, java.lang.String expectedResults, java.lang.String expectedWord)
-
assertComplete
protected void assertComplete(java.lang.String sql, java.lang.String expectedResults, java.lang.String expectedWord, java.util.Map<java.lang.String,java.lang.String> replacements)
Tests that a given SQL which may be invalid or incomplete simplifies itself and yields the salesTables set of completion hints. This is an integration test ofassertHint(java.lang.String, java.util.List<java.lang.String>...)
andassertSimplify(java.lang.String, java.lang.String)
.- Parameters:
sql
- SQL statementexpectedResults
- Expected list of hintsexpectedWord
- Word that we expect to be replaced, or null if we don't care
-
assertReplacements
private void assertReplacements(java.lang.String sql, java.util.Map<java.lang.String,java.lang.String> replacements, org.apache.calcite.sql.advise.SqlAdvisor advisor, java.lang.String word, java.util.List<org.apache.calcite.sql.validate.SqlMoniker> results)
-
assertEquals
protected void assertEquals(java.lang.String[] actualResults, java.util.List<java.lang.String>... expectedResults) throws java.lang.Exception
- Throws:
java.lang.Exception
-
convertCompletionHints
private java.lang.String convertCompletionHints(java.util.List<org.apache.calcite.sql.validate.SqlMoniker> hints)
-
toString
private static <T> java.lang.String toString(java.util.Collection<T> list)
Converts a list to a string, one item per line.- Parameters:
list
- List- Returns:
- String with one item of the list per line
-
getTester
public SqlTester getTester()
Description copied from class:SqlValidatorTestCase
Returns a tester. Derived classes should override this method to run the same set of tests in a different testing environment.- Overrides:
getTester
in classSqlValidatorTestCase
-
plus
protected static <T> java.util.List<T> plus(java.util.List<T>... lists)
Concatenates several lists of the same type into a single list.- Parameters:
lists
- Lists to concatenate- Returns:
- Sum list
-
testFrom
public void testFrom() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testFromComplete
public void testFromComplete()
-
testGroup
public void testGroup()
-
testJoin
public void testJoin() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testJoinKeywords
public void testJoinKeywords()
-
testSimplifyStarAlias
public void testSimplifyStarAlias()
-
testSimlifySubQueryStar
public void testSimlifySubQueryStar()
-
testSimlifySubQueryMultipleFrom
public void testSimlifySubQueryMultipleFrom()
-
testSimlifyMinus
public void testSimlifyMinus()
-
testOnCondition
public void testOnCondition() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testFromWhere
public void testFromWhere() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testWhereList
public void testWhereList() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testSelectList
public void testSelectList() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testOrderByList
public void testOrderByList() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testSubQuery
public void testSubQuery() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testSubQueryInWhere
public void testSubQueryInWhere()
-
testSimpleParserTokenizer
public void testSimpleParserTokenizer()
-
testSimpleParser
public void testSimpleParser()
-
testSimpleParserQuotedIdSqlServer
public void testSimpleParserQuotedIdSqlServer()
-
testSimpleParserQuotedIdMySql
public void testSimpleParserQuotedIdMySql()
-
testSimpleParserQuotedIdJava
public void testSimpleParserQuotedIdJava()
-
testSimpleParserQuotedIdDefault
public void testSimpleParserQuotedIdDefault()
-
replaceQuotes
private java.lang.String replaceQuotes(org.apache.calcite.sql.parser.SqlParser.Config parserConfig, java.lang.String sql)
-
testSimpleParserQuotedIdImpl
private void testSimpleParserQuotedIdImpl()
-
testPartialIdentifier
public void testPartialIdentifier()
-
testAdviceKeywordsJava
public void testAdviceKeywordsJava()
-
testAdviceMixedCase
public void testAdviceMixedCase()
-
testAdviceExpression
public void testAdviceExpression()
-
testAdviceEmptyFrom
public void testAdviceEmptyFrom()
-
testInsert
public void testInsert() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestSchema
public void testNestSchema() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestTable1
public void testNestTable1() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestTable2
public void testNestTable2() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestTable3
public void testNestTable3() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestTable4
public void testNestTable4() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestTableSchemaMustMatch
public void testNestTableSchemaMustMatch() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testNestSchemaSqlServer
public void testNestSchemaSqlServer() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testUnion
public void testUnion() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testMssql
public void testMssql()
-
-