public abstract class AbstractSqlTester extends Object implements SqlTester, AutoCloseable
SqlTester
that talks to a mock catalog.
This is to implement the default behavior: testing is only against the
SqlValidator.
SqlTester.ParameterChecker, SqlTester.ResultChecker, SqlTester.TypeChecker, SqlTester.ValidatedNodeConsumer, SqlTester.ValidatedNodeFunction<R>, SqlTester.VmName| 构造器和说明 |
|---|
AbstractSqlTester() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
assertConvertsTo(SqlTestFactory factory,
DiffRepository diffRepos,
String sql,
String plan,
boolean trim,
boolean expression,
boolean decorrelate)
Checks that a SQL statement converts to a given plan, optionally
trimming columns that are not needed.
|
void |
assertExceptionIsThrown(SqlTestFactory factory,
org.apache.calcite.sql.parser.StringAndPos sap,
@Nullable String expectedMsgPattern)
Checks that a query is valid, or, if invalid, throws the right
message at the right location.
|
static String |
buildQuery(String expression) |
protected String |
buildQuery2(SqlTestFactory factory,
String expression)
Builds a query that extracts all literals as columns in an underlying
select.
|
static String |
buildQueryAgg(String expression) |
void |
check(SqlTestFactory factory,
String query,
SqlTester.TypeChecker typeChecker,
SqlTester.ParameterChecker parameterChecker,
SqlTester.ResultChecker resultChecker)
Tests that a SQL query returns a result of expected type and value.
|
void |
checkAgg(SqlTestFactory factory,
String expr,
String[] inputValues,
SqlTester.ResultChecker resultChecker)
Checks that an aggregate expression returns the expected result.
|
void |
checkAggFails(SqlTestFactory factory,
String expr,
String[] inputValues,
String expectedError,
boolean runtime)
Tests that an aggregate expression fails at run time.
|
void |
checkColumnType(SqlTestFactory factory,
String sql,
String expected)
Checks that a query returns one column of an expected type.
|
void |
checkFails(SqlTestFactory factory,
org.apache.calcite.sql.parser.StringAndPos sap,
String expectedError,
boolean runtime)
Tests that a scalar SQL expression fails at run time.
|
protected void |
checkParseEx(Throwable e,
@Nullable String expectedMsgPattern,
org.apache.calcite.sql.parser.StringAndPos sap) |
void |
checkQueryFails(SqlTestFactory factory,
org.apache.calcite.sql.parser.StringAndPos sap,
String expectedError)
Tests that a SQL query fails at prepare time.
|
void |
checkWinAgg(SqlTestFactory factory,
String expr,
String[] inputValues,
String windowSpec,
String type,
SqlTester.ResultChecker resultChecker)
Checks that a windowed aggregate expression returns the expected result.
|
void |
close()
This default implementation does nothing.
|
org.apache.calcite.util.Pair<org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.rel.RelRoot> |
convertSqlToRel2(SqlTestFactory factory,
String sql,
boolean decorrelate,
boolean trim)
Converts a SQL string to a (SqlValidator, RelNode) pair.
|
org.apache.calcite.sql2rel.RelFieldTrimmer |
createFieldTrimmer(org.apache.calcite.sql.validate.SqlValidator validator,
org.apache.calcite.tools.RelBuilder relBuilder)
Creates a RelFieldTrimmer.
|
void |
forEachQuery(SqlTestFactory factory,
String expression,
Consumer<String> consumer)
Given a scalar expression, generates a sequence of SQL queries that
evaluate it, and calls a given action with each.
|
org.apache.calcite.rel.type.RelDataType |
getColumnType(SqlTestFactory factory,
String sql)
Returns the data type of the sole column of a SQL query.
|
org.apache.calcite.rel.type.RelDataType |
getResultType(SqlTestFactory factory,
String sql)
Returns the data type of the row returned by a SQL query.
|
org.apache.calcite.sql.SqlNode |
parseExpression(SqlTestFactory factory,
String expr)
Parses an expression.
|
org.apache.calcite.sql.SqlNode |
parseQuery(SqlTestFactory factory,
String sql)
Parses a query.
|
void |
setFor(org.apache.calcite.sql.SqlOperator operator,
SqlTester.VmName... unimplementedVmNames)
Declares that this test is for a given operator.
|
org.apache.calcite.rel.RelNode |
trimRelNode(SqlTestFactory factory,
org.apache.calcite.rel.RelNode relNode)
Trims a RelNode.
|
<R> R |
validateAndApply(SqlTestFactory factory,
org.apache.calcite.sql.parser.StringAndPos sap,
SqlTester.ValidatedNodeFunction<R> function)
Parses and validates a query, then calls a function on the result.
|
void |
validateAndThen(SqlTestFactory factory,
org.apache.calcite.sql.parser.StringAndPos sap,
SqlTester.ValidatedNodeConsumer consumer)
Parses and validates a query, then calls an action on the result.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcheck, checkFails, convertSqlToRelpublic void close()
This default implementation does nothing.
close 在接口中 AutoCloseablepublic void assertExceptionIsThrown(SqlTestFactory factory, org.apache.calcite.sql.parser.StringAndPos sap, @Nullable String expectedMsgPattern)
SqlTesterIf expectedMsgPattern is null, the query must
succeed.
If expectedMsgPattern is not null, the query must
fail, and give an error location of (expectedLine, expectedColumn)
through (expectedEndLine, expectedEndColumn).
assertExceptionIsThrown 在接口中 SqlTesterfactory - Factorysap - SQL statementexpectedMsgPattern - If this parameter is null the query must beprotected void checkParseEx(Throwable e, @Nullable String expectedMsgPattern, org.apache.calcite.sql.parser.StringAndPos sap)
public org.apache.calcite.rel.type.RelDataType getColumnType(SqlTestFactory factory, String sql)
SqlTesterFor example, getResultType("VALUES (1") returns
INTEGER.
Fails if query returns more than one column.
getColumnType 在接口中 SqlTesterSqlTester.getResultType(SqlTestFactory, String)public org.apache.calcite.rel.type.RelDataType getResultType(SqlTestFactory factory, String sql)
SqlTesterFor example, getResultType("VALUES (1, 'foo')")
returns RecordType(INTEGER EXPR$0, CHAR(3) EXPR#1).
getResultType 在接口中 SqlTesterpublic org.apache.calcite.sql.SqlNode parseQuery(SqlTestFactory factory, String sql) throws org.apache.calcite.sql.parser.SqlParseException
SqlTesterparseQuery 在接口中 SqlTesterorg.apache.calcite.sql.parser.SqlParseExceptionpublic org.apache.calcite.sql.SqlNode parseExpression(SqlTestFactory factory, String expr) throws org.apache.calcite.sql.parser.SqlParseException
SqlTesterparseExpression 在接口中 SqlTesterorg.apache.calcite.sql.parser.SqlParseExceptionpublic void checkColumnType(SqlTestFactory factory, String sql, String expected)
SqlTestercheckType("VALUES (1 + 2)", "INTEGER NOT NULL").checkColumnType 在接口中 SqlTesterfactory - Factorysql - Query expressionexpected - Type stringpublic void setFor(org.apache.calcite.sql.SqlOperator operator,
SqlTester.VmName... unimplementedVmNames)
SqlTesterpublic void checkAgg(SqlTestFactory factory, String expr, String[] inputValues, SqlTester.ResultChecker resultChecker)
SqlTesterFor example, checkAgg("AVG(DISTINCT x)", new String[] {"2", "3",
null, "3" }, new Double(2.5), 0);
public void checkWinAgg(SqlTestFactory factory, String expr, String[] inputValues, String windowSpec, String type, SqlTester.ResultChecker resultChecker)
SqlTesterFor example, checkWinAgg("FIRST_VALUE(x)", new String[] {"2",
"3", null, "3" }, "INTEGER NOT NULL", 2, 0d);
checkWinAgg 在接口中 SqlTesterfactory - Factoryexpr - Aggregate expression, e.g. SUM(DISTINCT x)inputValues - Array of input values, e.g. ["1", null, "2"]type - Expected result typeresultChecker - Checks whether the result has the expected valuepublic void check(SqlTestFactory factory, String query, SqlTester.TypeChecker typeChecker, SqlTester.ParameterChecker parameterChecker, SqlTester.ResultChecker resultChecker)
SqlTesterSqlTester.TypeChecker
and SqlTester.ResultChecker functors.public void validateAndThen(SqlTestFactory factory, org.apache.calcite.sql.parser.StringAndPos sap, SqlTester.ValidatedNodeConsumer consumer)
SqlTestervalidateAndThen 在接口中 SqlTesterpublic <R> R validateAndApply(SqlTestFactory factory, org.apache.calcite.sql.parser.StringAndPos sap, SqlTester.ValidatedNodeFunction<R> function)
SqlTestervalidateAndApply 在接口中 SqlTesterpublic void checkFails(SqlTestFactory factory, org.apache.calcite.sql.parser.StringAndPos sap, String expectedError, boolean runtime)
SqlTestercheckFails 在接口中 SqlTesterfactory - Factorysap - SQL scalar expressionexpectedError - Pattern for expected error. If !runtime, must
include an error location.runtime - If true, must fail at runtime; if false, must fail at
validate timepublic void checkQueryFails(SqlTestFactory factory, org.apache.calcite.sql.parser.StringAndPos sap, String expectedError)
SqlTestercheckQueryFails 在接口中 SqlTesterfactory - Factorysap - SQL query and error positionexpectedError - Pattern for expected error. Must
include an error location.public void checkAggFails(SqlTestFactory factory, String expr, String[] inputValues, String expectedError, boolean runtime)
SqlTestercheckAggFails 在接口中 SqlTesterfactory - Factoryexpr - An aggregate expressioninputValues - Array of input valuesexpectedError - Pattern for expected errorruntime - If true, must fail at runtime; if false, must fail at
validate timeprotected String buildQuery2(SqlTestFactory factory, String expression)
For example,
1 < 5
becomes
SELECT p0 < p1
FROM (VALUES (1, 5)) AS t(p0, p1)
Null literals don't have enough type information to be extracted.
We push down CAST(NULL AS type) but raw nulls such as
CASE 1 WHEN 2 THEN 'a' ELSE NULL END are left as is.
factory - Test factoryexpression - Scalar expressionpublic void forEachQuery(SqlTestFactory factory, String expression, Consumer<String> consumer)
SqlTesterforEachQuery 在接口中 SqlTesterfactory - Factoryexpression - Scalar expressionconsumer - Action to be called for each querypublic void assertConvertsTo(SqlTestFactory factory, DiffRepository diffRepos, String sql, String plan, boolean trim, boolean expression, boolean decorrelate)
SqlTesterassertConvertsTo 在接口中 SqlTesterfactory - FactorydiffRepos - Diff repositorysql - SQL query or expressionplan - Expected plantrim - Whether to trim columns that are not neededexpression - True if sql is an expression, false if it is a querypublic org.apache.calcite.util.Pair<org.apache.calcite.sql.validate.SqlValidator,org.apache.calcite.rel.RelRoot> convertSqlToRel2(SqlTestFactory factory, String sql, boolean decorrelate, boolean trim)
SqlTesterconvertSqlToRel2 在接口中 SqlTesterpublic org.apache.calcite.rel.RelNode trimRelNode(SqlTestFactory factory, org.apache.calcite.rel.RelNode relNode)
SqlTestertrimRelNode 在接口中 SqlTesterpublic org.apache.calcite.sql2rel.RelFieldTrimmer createFieldTrimmer(org.apache.calcite.sql.validate.SqlValidator validator,
org.apache.calcite.tools.RelBuilder relBuilder)
validator - ValidatorrelBuilder - BuilderCopyright © 2012-2023 Apache Software Foundation. All Rights Reserved.