public class SqlValidatorImpl extends Object implements SqlValidatorWithHints
SqlValidator.| Modifier and Type | Class and Description |
|---|---|
static class |
SqlValidatorImpl.DmlNamespace
Common base class for DML statement namespaces.
|
protected static class |
SqlValidatorImpl.FunctionParamInfo
Utility object used to maintain information about the parameters in a
function call.
|
protected static class |
SqlValidatorImpl.IdInfo
Information about an identifier in a particular scope.
|
static class |
SqlValidatorImpl.Status
Validation status.
|
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
expandColumnReferences |
protected boolean |
expandIdentifiers |
protected Stack<SqlValidatorImpl.FunctionParamInfo> |
functionCallStack
Stack of objects that maintain information about function calls.
|
protected Map<String,SqlValidatorImpl.IdInfo> |
idPositions
Maps ParsePosition strings to the
SqlIdentifier identifier
objects at these positions |
protected Map<SqlNode,SqlValidatorNamespace> |
namespaces
|
protected Map<SqlNode,SqlValidatorScope> |
scopes
Maps
query node objects to the SqlValidatorScope
scope created from them}. |
static Logger |
TRACER |
protected RelDataTypeFactory |
typeFactory |
protected RelDataType |
unknownType |
static String |
UPDATE_ANON_PREFIX
Alias prefix generated for source columns when rewriting UPDATE to MERGE.
|
static String |
UPDATE_SRC_ALIAS
Alias generated for the source table when rewriting UPDATE to MERGE.
|
static String |
UPDATE_TGT_ALIAS
Alias generated for the target table when rewriting UPDATE to MERGE if no
alias was specified by the user.
|
STRICT| Modifier | Constructor and Description |
|---|---|
protected |
SqlValidatorImpl(SqlOperatorTable opTab,
SqlValidatorCatalogReader catalogReader,
RelDataTypeFactory typeFactory,
SqlConformance conformance)
Creates a validator.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
addToSelectList(List<SqlNode> list,
Set<String> aliases,
List<Map.Entry<String,RelDataType>> fieldList,
SqlNode exp,
SqlValidatorScope scope,
boolean includeSystemVars)
Adds an expression to a select list, ensuring that its alias does not
clash with any existing expressions on the list.
|
protected void |
checkTypeAssignment(RelDataType sourceRowType,
RelDataType targetRowType,
SqlNode query) |
protected SelectNamespace |
createSelectNamespace(SqlSelect select,
SqlNode enclosingNode)
Creates a namespace for a
SELECT node. |
protected SetopNamespace |
createSetopNamespace(SqlCall call,
SqlNode enclosingNode)
Creates a namespace for a set operation (
UNION,
INTERSECT, or EXCEPT). |
protected SqlSelect |
createSourceSelectForDelete(SqlDelete call)
Creates the SELECT statement that putatively feeds rows into a DELETE
statement to be deleted.
|
protected SqlSelect |
createSourceSelectForUpdate(SqlUpdate call)
Creates the SELECT statement that putatively feeds rows into an UPDATE
statement to be updated.
|
protected RelDataType |
createTargetRowType(SqlValidatorTable table,
SqlNodeList targetColumnList,
boolean append)
Derives a row-type for INSERT and UPDATE operations.
|
void |
declareCursor(SqlSelect select,
SqlValidatorScope parentScope)
Declares a SELECT expression as a cursor.
|
String |
deriveAlias(SqlNode node,
int ordinal)
Derives an alias for an expression.
|
RelDataType |
deriveConstructorType(SqlValidatorScope scope,
SqlCall call,
SqlFunction unresolvedConstructor,
SqlFunction resolvedConstructor,
List<RelDataType> argTypes)
Derives the type of a constructor.
|
RelDataType |
deriveType(SqlValidatorScope scope,
SqlNode expr)
Derives the type of a node in a given scope.
|
SqlNode |
expand(SqlNode expr,
SqlValidatorScope scope)
Expands an expression.
|
SqlNode |
expandOrderExpr(SqlSelect select,
SqlNode orderExpr)
Expands an expression in the ORDER BY clause into an expression with the
same semantics as expressions in the SELECT clause.
|
SqlNodeList |
expandStar(SqlNodeList selectList,
SqlSelect select,
boolean includeSystemVars)
Returns a list of expressions, with every occurrence of "*" or
"TABLE.*" expanded.
|
protected SqlNode |
getAggregate(SqlSelect select)
Returns the parse tree node (GROUP BY, HAVING, or an aggregate function
call) that causes
select to be an aggregate query, or null if it is
not an aggregate query. |
SqlValidatorCatalogReader |
getCatalogReader()
Returns the catalog reader used by this validator.
|
boolean |
getColumnReferenceExpansion() |
SqlConformance |
getConformance()
Returns the dialect of SQL (SQL:2003, etc.) this validator recognizes.
|
SqlValidatorScope |
getCursorScope(SqlSelect select) |
SqlValidatorScope |
getEmptyScope() |
List<List<String>> |
getFieldOrigins(SqlNode sqlQuery)
Returns a description of how each field in the row type maps to a
catalog, schema, table and column in the schema.
|
SqlValidatorScope |
getFromScope(SqlSelect select)
Returns a scope containing the objects visible from the FROM clause of a
query.
|
SqlValidatorScope |
getGroupScope(SqlSelect select)
Returns a scope containing the objects visible from the GROUP BY clause
of a query.
|
SqlValidatorScope |
getHavingScope(SqlSelect select)
Returns a scope containing the objects visible from the HAVING clause of
a query.
|
SqlValidatorScope |
getJoinScope(SqlNode node)
Returns a scope containing the objects visible from the ON and USING
sections of a JOIN clause.
|
protected RelDataType |
getLogicalSourceRowType(RelDataType sourceRowType,
SqlInsert insert) |
protected RelDataType |
getLogicalTargetRowType(RelDataType targetRowType,
SqlInsert insert) |
SqlValidatorNamespace |
getNamespace(SqlNode node)
Finds the namespace corresponding to a given node.
|
SqlOperatorTable |
getOperatorTable()
Returns the operator table used by this validator.
|
SqlValidatorScope |
getOrderScope(SqlSelect select)
Returns the scope that expressions in the SELECT and HAVING clause of
this query should use.
|
SqlNode |
getOriginal(SqlNode expr) |
SqlValidatorScope |
getOverScope(SqlNode node)
Returns the scope of an OVER or VALUES node.
|
RelDataType |
getParameterRowType(SqlNode sqlQuery)
Returns a record type that contains the name and type of each parameter.
|
String |
getParentCursor(String columnListParamName)
Retrieves the name of the parent cursor referenced by a column list
parameter.
|
SelectScope |
getRawSelectScope(SqlSelect select)
Returns the scope for resolving the SELECT, GROUP BY and HAVING clauses.
|
SqlValidatorScope |
getSelectScope(SqlSelect select)
Returns the appropriate scope for validating a particular clause of a
SELECT statement.
|
protected SqlNode |
getSelfJoinExprForUpdate(SqlNode table,
String alias)
Allows a subclass to provide information about how to convert an UPDATE
into a MERGE via self-join.
|
RelDataTypeFactory |
getTypeFactory()
Returns the type factory used by this validator.
|
RelDataType |
getUnknownType()
Returns an object representing the "unknown" type.
|
RelDataType |
getValidatedNodeType(SqlNode node)
Returns the type assigned to a node by validation.
|
RelDataType |
getValidatedNodeTypeIfKnown(SqlNode node)
Returns the type assigned to a node by validation, or null if unknown.
|
SqlValidatorScope |
getWhereScope(SqlSelect select)
Returns the scope that expressions in the WHERE and GROUP BY clause of
this query should use.
|
protected SqlWindow |
getWindowByName(SqlIdentifier id,
SqlValidatorScope scope) |
SqlValidatorScope |
getWithScope(SqlNode withItem) |
CalciteException |
handleUnresolvedFunction(SqlCall call,
SqlFunction unresolvedFunction,
List<RelDataType> argTypes)
Handles a call to a function which cannot be resolved.
|
protected void |
inferUnknownTypes(RelDataType inferredType,
SqlValidatorScope scope,
SqlNode node) |
boolean |
isAggregate(SqlNode selectNode)
Returns whether a select list expression is an aggregate function.
|
boolean |
isAggregate(SqlSelect select)
Returns whether a SELECT statement is an aggregation.
|
boolean |
isSystemField(RelDataTypeField field)
Returns whether a field is a system field.
|
List<SqlMoniker> |
lookupHints(SqlNode topNode,
SqlParserPos pos)
Looks up completion hints for a syntactically correct SQL statement that
has been parsed into an expression tree.
|
void |
lookupNameCompletionHints(SqlValidatorScope scope,
List<String> names,
SqlParserPos pos,
Collection<SqlMoniker> hintList)
Populates a list of all the valid alternatives for an identifier.
|
SqlMoniker |
lookupQualifiedName(SqlNode topNode,
SqlParserPos pos)
Looks up the fully qualified name for a
SqlIdentifier at a given
Parser Position in a parsed expression tree Note: call this only after
SqlValidator.validate(org.apache.calcite.sql.SqlNode) has been called. |
CalciteContextException |
newValidationError(SqlNode node,
Resources.ExInst<SqlValidatorException> e)
Adds "line x, column y" context to a validator exception.
|
protected SqlNode |
performUnconditionalRewrites(SqlNode node,
boolean underFrom)
Performs expression rewrites which are always used unconditionally.
|
void |
popFunctionCall()
Removes the topmost entry from the function call stack.
|
void |
pushFunctionCall()
Pushes a new instance of a function call on to a function call stack.
|
protected void |
registerNamespace(SqlValidatorScope usingScope,
String alias,
SqlValidatorNamespace ns,
boolean forceNullable)
Registers a new namespace, and adds it as a child of its parent scope.
|
void |
removeValidatedNodeType(SqlNode node)
Removes a node from the set of validated nodes
|
SqlWindow |
resolveWindow(SqlNode windowOrRef,
SqlValidatorScope scope,
boolean populateBounds)
Converts a window specification or window name into a fully-resolved
window specification.
|
void |
setCallRewrite(boolean rewriteCalls)
Enables or disables rewrite of "macro-like" calls such as COALESCE.
|
void |
setColumnReferenceExpansion(boolean expandColumnReferences)
Enables or disables expansion of column references.
|
void |
setIdentifierExpansion(boolean expandIdentifiers)
Enables or disables expansion of identifiers other than column
references.
|
void |
setOriginal(SqlNode expr,
SqlNode original) |
void |
setValidatedNodeType(SqlNode node,
RelDataType type)
Saves the type of a
SqlNode, now that it has been validated. |
protected boolean |
shouldAllowIntermediateOrderBy() |
protected boolean |
shouldAllowOverRelation() |
boolean |
shouldExpandIdentifiers()
Returns expansion of identifiers.
|
SqlNode |
validate(SqlNode topNode)
Validates an expression tree.
|
void |
validateAggregateParams(SqlCall aggFunction,
SqlValidatorScope scope)
Validates parameters for aggregate function.
|
void |
validateCall(SqlCall call,
SqlValidatorScope scope)
Validates a call to an operator.
|
void |
validateColumnListParams(SqlFunction function,
List<RelDataType> argTypes,
List<SqlNode> operands)
Validates a COLUMN_LIST parameter
|
void |
validateDataType(SqlDataTypeSpec dataType)
Validates a data type expression.
|
void |
validateDelete(SqlDelete call)
Validates a DELETE statement.
|
void |
validateDynamicParam(SqlDynamicParam dynamicParam)
Validates a dynamic parameter.
|
protected void |
validateFeature(Feature feature,
SqlParserPos context)
Validates that a particular feature is enabled.
|
protected void |
validateFrom(SqlNode node,
RelDataType targetRowType,
SqlValidatorScope scope)
Validates the FROM clause of a query, or (recursively) a child node of
the FROM clause: AS, OVER, JOIN, VALUES, or subquery.
|
protected void |
validateGroupClause(SqlSelect select)
Validates the GROUP BY clause of a SELECT statement.
|
protected void |
validateHavingClause(SqlSelect select) |
void |
validateIdentifier(SqlIdentifier id,
SqlValidatorScope scope)
Resolves an identifier to a fully-qualified name.
|
void |
validateInsert(SqlInsert insert)
Validates an INSERT statement.
|
void |
validateIntervalQualifier(SqlIntervalQualifier qualifier)
Validates a
SqlIntervalQualifier |
protected void |
validateJoin(SqlJoin join,
SqlValidatorScope scope) |
void |
validateLiteral(SqlLiteral literal)
Validates a literal.
|
void |
validateMerge(SqlMerge call)
Validates a MERGE statement.
|
boolean |
validateModality(SqlSelect select,
SqlModality modality,
boolean fail)
Validates that a query is capable of producing a return of given modality
(relational or streaming).
|
protected void |
validateNamespace(SqlValidatorNamespace namespace)
Validates a namespace.
|
protected void |
validateOrderList(SqlSelect select)
Validates the ORDER BY clause of a SELECT statement.
|
protected void |
validateOver(SqlCall call,
SqlValidatorScope scope) |
SqlNode |
validateParameterizedExpression(SqlNode topNode,
Map<String,RelDataType> nameToTypeMap)
Validates an expression tree.
|
void |
validateQuery(SqlNode node,
SqlValidatorScope scope)
Checks that a query is valid.
|
protected void |
validateSelect(SqlSelect select,
RelDataType targetRowType)
Validates a SELECT statement.
|
protected RelDataType |
validateSelectList(SqlNodeList selectItems,
SqlSelect select,
RelDataType targetRowType) |
void |
validateUpdate(SqlUpdate call)
Validates an UPDATE statement.
|
protected void |
validateValues(SqlCall node,
RelDataType targetRowType,
SqlValidatorScope scope)
Validates a VALUES clause.
|
protected void |
validateWhereClause(SqlSelect select) |
protected void |
validateWhereOrOn(SqlValidatorScope scope,
SqlNode condition,
String keyword) |
void |
validateWindow(SqlNode windowOrId,
SqlValidatorScope scope,
SqlCall call)
Validates the right-hand side of an OVER expression.
|
protected void |
validateWindowClause(SqlSelect select) |
void |
validateWith(SqlWith with,
SqlValidatorScope scope) |
void |
validateWithItem(SqlWithItem withItem) |
public static final Logger TRACER
public static final String UPDATE_SRC_ALIAS
public static final String UPDATE_TGT_ALIAS
public static final String UPDATE_ANON_PREFIX
protected final Map<String,SqlValidatorImpl.IdInfo> idPositions
SqlIdentifier identifier
objects at these positionsprotected final Map<SqlNode,SqlValidatorScope> scopes
query node objects to the SqlValidatorScope
scope created from them}.protected final Map<SqlNode,SqlValidatorNamespace> namespaces
protected final Stack<SqlValidatorImpl.FunctionParamInfo> functionCallStack
protected final RelDataTypeFactory typeFactory
protected final RelDataType unknownType
protected boolean expandIdentifiers
protected boolean expandColumnReferences
protected SqlValidatorImpl(SqlOperatorTable opTab, SqlValidatorCatalogReader catalogReader, RelDataTypeFactory typeFactory, SqlConformance conformance)
opTab - Operator tablecatalogReader - Catalog readertypeFactory - Type factoryconformance - Compatibility modepublic SqlValidatorScope getEmptyScope()
public SqlConformance getConformance()
SqlValidatorSqlConformance.DEFAULT.getConformance in interface SqlValidatorpublic SqlValidatorCatalogReader getCatalogReader()
SqlValidatorgetCatalogReader in interface SqlValidatorpublic SqlOperatorTable getOperatorTable()
SqlValidatorgetOperatorTable in interface SqlValidatorpublic RelDataTypeFactory getTypeFactory()
SqlValidatorgetTypeFactory in interface SqlValidatorpublic RelDataType getUnknownType()
SqlValidatorgetUnknownType in interface SqlValidatorpublic SqlNodeList expandStar(SqlNodeList selectList, SqlSelect select, boolean includeSystemVars)
SqlValidatorexpandStar in interface SqlValidatorselectList - Select clause to be expandedselect - QueryincludeSystemVars - Whether to include system variablespublic void declareCursor(SqlSelect select, SqlValidatorScope parentScope)
SqlValidatordeclareCursor in interface SqlValidatorselect - select expression associated with the cursorparentScope - scope of the parent query associated with the cursorpublic void pushFunctionCall()
SqlValidatorpushFunctionCall in interface SqlValidatorpublic void popFunctionCall()
SqlValidatorpopFunctionCall in interface SqlValidatorpublic String getParentCursor(String columnListParamName)
SqlValidatorgetParentCursor in interface SqlValidatorcolumnListParamName - name of the column list parameterpublic SqlNode validate(SqlNode topNode)
SqlValidatorvalidate in interface SqlValidatortopNode - top of expression tree to be validatedpublic List<SqlMoniker> lookupHints(SqlNode topNode, SqlParserPos pos)
SqlValidatorWithHintsSqlValidator.validate(org.apache.calcite.sql.SqlNode).lookupHints in interface SqlValidatorWithHintstopNode - top of expression tree in which to lookup completion hintspos - indicates the position in the sql statement we want to get
completion hints for. For example, "select a.ename, b.deptno
from sales.emp a join sales.dept b "on a.deptno=b.deptno
where empno=1"; setting pos to 'Line 1, Column 17' returns
all the possible column names that can be selected from
sales.dept table setting pos to 'Line 1, Column 31' returns
all the possible table names in 'sales' schemaSqlMoniker (sql identifiers) that can fill in
at the indicated positionpublic SqlMoniker lookupQualifiedName(SqlNode topNode, SqlParserPos pos)
SqlValidatorWithHintsSqlIdentifier at a given
Parser Position in a parsed expression tree Note: call this only after
SqlValidator.validate(org.apache.calcite.sql.SqlNode) has been called.lookupQualifiedName in interface SqlValidatorWithHintstopNode - top of expression tree in which to lookup the qualified
name for the SqlIdentifierpos - indicates the position of the SqlIdentifier in
the SQL statement we want to get the qualified
name forSqlIdentifier
if the Parser position represents a valid SqlIdentifier. Else
return an empty stringpublic final void lookupNameCompletionHints(SqlValidatorScope scope, List<String> names, SqlParserPos pos, Collection<SqlMoniker> hintList)
scope - Validation scopenames - Components of the identifierpos - positionhintList - a list of valid optionspublic SqlNode validateParameterizedExpression(SqlNode topNode, Map<String,RelDataType> nameToTypeMap)
SqlValidatorvalidateParameterizedExpression in interface SqlValidatortopNode - top of expression tree to be validatednameToTypeMap - map of simple name to RelDataType; used to
resolve SqlIdentifier referencespublic void validateQuery(SqlNode node, SqlValidatorScope scope)
SqlValidatorValid queries include:
SELECT statement,
UNION, INTERSECT,
EXCEPT)
AS operator
validateQuery in interface SqlValidatornode - Query nodescope - Scope in which the query occursprotected void validateNamespace(SqlValidatorNamespace namespace)
public SqlValidatorScope getCursorScope(SqlSelect select)
public SqlValidatorScope getWhereScope(SqlSelect select)
SqlValidatorgetWhereScope in interface SqlValidatorselect - Querypublic SqlValidatorScope getSelectScope(SqlSelect select)
SqlValidatorConsider
SELECT * FROM foo WHERE EXISTS ( SELECT deptno AS x FROM emp JOIN dept ON emp.deptno = dept.deptno WHERE emp.deptno = 5 GROUP BY deptno ORDER BY x)
What objects can be seen in each part of the sub-query?
SqlValidator.getFromScope(org.apache.calcite.sql.SqlSelect) , you can only see 'foo'.
SqlValidator.getWhereScope(org.apache.calcite.sql.SqlSelect)), GROUP BY (SqlValidator.getGroupScope(org.apache.calcite.sql.SqlSelect)),
SELECT (SqlValidator.getSelectScope(org.apache.calcite.sql.SqlSelect)), and the ON clause of the JOIN
(SqlValidator.getJoinScope(org.apache.calcite.sql.SqlNode)) you can see 'emp', 'dept', and 'foo'.
SqlValidator.getOrderScope(org.apache.calcite.sql.SqlSelect)), you can see the column alias 'x';
and tables 'emp', 'dept', and 'foo'.
getSelectScope in interface SqlValidatorselect - SELECT statementpublic SelectScope getRawSelectScope(SqlSelect select)
SqlValidatorSelectScope; if this is an aggregation query, the
AggregatingScope is stripped away.getRawSelectScope in interface SqlValidatorselect - SELECT statementpublic SqlValidatorScope getHavingScope(SqlSelect select)
SqlValidatorgetHavingScope in interface SqlValidatorselect - SELECT statementpublic SqlValidatorScope getGroupScope(SqlSelect select)
SqlValidatorgetGroupScope in interface SqlValidatorselect - SELECT statementpublic SqlValidatorScope getFromScope(SqlSelect select)
SqlValidatorgetFromScope in interface SqlValidatorselect - SELECT statementpublic SqlValidatorScope getOrderScope(SqlSelect select)
SqlValidatorgetOrderScope in interface SqlValidatorselect - SELECT statementpublic SqlValidatorScope getJoinScope(SqlNode node)
SqlValidatorgetJoinScope in interface SqlValidatornode - The item in the FROM clause which contains the ON or USING
expressionSqlValidator.getFromScope(org.apache.calcite.sql.SqlSelect)public SqlValidatorScope getOverScope(SqlNode node)
SqlValidatorgetOverScope in interface SqlValidatornode - Nodepublic SqlValidatorNamespace getNamespace(SqlNode node)
SqlValidatorFor example, in the query SELECT * FROM (SELECT * FROM t), t1 AS
alias, the both items in the FROM clause have a corresponding
namespace.
getNamespace in interface SqlValidatornode - Parse tree nodeprotected SqlNode performUnconditionalRewrites(SqlNode node, boolean underFrom)
node - expression to be rewrittenunderFrom - whether node appears directly under a FROM clauseprotected SqlNode getSelfJoinExprForUpdate(SqlNode table, String alias)
table - identifier for table being updatedalias - alias to use for qualifying columns in expression, or null
for unqualified references; if this is equal to
"SYS$SRC", then column references have been
anonymized to "SYS$ANONx", where x is the 1-based column
number.protected SqlSelect createSourceSelectForUpdate(SqlUpdate call)
call - Call to the UPDATE operatorprotected SqlSelect createSourceSelectForDelete(SqlDelete call)
call - Call to the DELETE operatorpublic RelDataType getValidatedNodeType(SqlNode node)
SqlValidatorgetValidatedNodeType in interface SqlValidatornode - the node of interestpublic RelDataType getValidatedNodeTypeIfKnown(SqlNode node)
SqlValidatorSqlValidator.getValidatedNodeType(org.apache.calcite.sql.SqlNode) instead.getValidatedNodeTypeIfKnown in interface SqlValidatornode - the node of interestpublic void setValidatedNodeType(SqlNode node, RelDataType type)
SqlValidatorSqlNode, now that it has been validated.setValidatedNodeType in interface SqlValidatornode - A SQL parse tree node, never nulltype - Its type; must not be nullpublic void removeValidatedNodeType(SqlNode node)
SqlValidatorremoveValidatedNodeType in interface SqlValidatornode - node to be removedpublic RelDataType deriveType(SqlValidatorScope scope, SqlNode expr)
SqlValidatorderiveType in interface SqlValidatorscope - Syntactic scopeexpr - Parse tree nodeNULLpublic RelDataType deriveConstructorType(SqlValidatorScope scope, SqlCall call, SqlFunction unresolvedConstructor, SqlFunction resolvedConstructor, List<RelDataType> argTypes)
SqlValidatorderiveConstructorType in interface SqlValidatorscope - Scopecall - CallunresolvedConstructor - TODOresolvedConstructor - TODOargTypes - Types of argumentspublic CalciteException handleUnresolvedFunction(SqlCall call, SqlFunction unresolvedFunction, List<RelDataType> argTypes)
SqlValidatorhandleUnresolvedFunction in interface SqlValidatorcall - CallunresolvedFunction - Overloaded function which is the target of the
callargTypes - Types of argumentsprotected void inferUnknownTypes(RelDataType inferredType, SqlValidatorScope scope, SqlNode node)
protected void addToSelectList(List<SqlNode> list, Set<String> aliases, List<Map.Entry<String,RelDataType>> fieldList, SqlNode exp, SqlValidatorScope scope, boolean includeSystemVars)
public String deriveAlias(SqlNode node, int ordinal)
SqlValidatorordinal is less than zero, otherwise generates an
alias EXPR$ordinal.deriveAlias in interface SqlValidatornode - Expressionordinal - Ordinal of expressionpublic void setIdentifierExpansion(boolean expandIdentifiers)
SqlValidatorsetIdentifierExpansion in interface SqlValidatorexpandIdentifiers - new settingpublic void setColumnReferenceExpansion(boolean expandColumnReferences)
SqlValidatorsetColumnReferenceExpansion in interface SqlValidatorexpandColumnReferences - new settingpublic boolean getColumnReferenceExpansion()
getColumnReferenceExpansion in interface SqlValidatorpublic void setCallRewrite(boolean rewriteCalls)
SqlValidatorsetCallRewrite in interface SqlValidatorrewriteCalls - new settingpublic boolean shouldExpandIdentifiers()
SqlValidatorshouldExpandIdentifiers in interface SqlValidatorprotected boolean shouldAllowIntermediateOrderBy()
protected void registerNamespace(SqlValidatorScope usingScope, String alias, SqlValidatorNamespace ns, boolean forceNullable)
usingScope - Parent scope (which will want to look for things in
this namespace)alias - Alias by which parent will refer to this namespacens - NamespaceforceNullable - Whether to force the type of namespace to beprotected boolean shouldAllowOverRelation()
protected SelectNamespace createSelectNamespace(SqlSelect select, SqlNode enclosingNode)
SELECT node. Derived class may
override this factory method.select - Select nodeenclosingNode - Enclosing nodeprotected SetopNamespace createSetopNamespace(SqlCall call, SqlNode enclosingNode)
UNION,
INTERSECT, or EXCEPT). Derived class may override
this factory method.call - Call to set operationenclosingNode - Enclosing nodepublic boolean isAggregate(SqlSelect select)
SqlValidatorSUM(x) OVER w, don't count.)isAggregate in interface SqlValidatorselect - SELECT statementprotected SqlNode getAggregate(SqlSelect select)
select to be an aggregate query, or null if it is
not an aggregate query.
The node is useful context for error messages.
public boolean isAggregate(SqlNode selectNode)
SqlValidatorisAggregate in interface SqlValidatorselectNode - Expression in SELECT clausepublic void validateIdentifier(SqlIdentifier id, SqlValidatorScope scope)
SqlValidatorvalidateIdentifier in interface SqlValidatorid - Identifierscope - Naming scopepublic void validateLiteral(SqlLiteral literal)
SqlValidatorvalidateLiteral in interface SqlValidatorliteral - Literalpublic void validateIntervalQualifier(SqlIntervalQualifier qualifier)
SqlValidatorSqlIntervalQualifiervalidateIntervalQualifier in interface SqlValidatorqualifier - Interval qualifierprotected void validateFrom(SqlNode node, RelDataType targetRowType, SqlValidatorScope scope)
node - Node in FROM clause, typically a table or derived
tabletargetRowType - Desired row type of this expression, or
unknownType if not fussy. Must not be null.scope - Scopeprotected void validateOver(SqlCall call, SqlValidatorScope scope)
protected void validateJoin(SqlJoin join, SqlValidatorScope scope)
protected void validateSelect(SqlSelect select, RelDataType targetRowType)
select - Select statementtargetRowType - Desired row type, must not be null, may be the data
type 'unknown'.public boolean validateModality(SqlSelect select, SqlModality modality, boolean fail)
SqlValidatorvalidateModality in interface SqlValidatorselect - Querymodality - Modality (streaming or relational)fail - Whether to throw a user error if does not support required
modalityprotected void validateWindowClause(SqlSelect select)
public void validateWith(SqlWith with, SqlValidatorScope scope)
validateWith in interface SqlValidatorpublic void validateWithItem(SqlWithItem withItem)
validateWithItem in interface SqlValidatorpublic SqlValidatorScope getWithScope(SqlNode withItem)
getWithScope in interface SqlValidatorprotected void validateOrderList(SqlSelect select)
select - Select statementpublic SqlNode expandOrderExpr(SqlSelect select, SqlNode orderExpr)
SqlValidatorThis is made necessary by a couple of dialect 'features':
expandOrderExpr in interface SqlValidatorselect - Select statement which contains ORDER BYorderExpr - Expression in the ORDER BY clause.protected void validateGroupClause(SqlSelect select)
protected void validateWhereClause(SqlSelect select)
protected void validateWhereOrOn(SqlValidatorScope scope, SqlNode condition, String keyword)
protected void validateHavingClause(SqlSelect select)
protected RelDataType validateSelectList(SqlNodeList selectItems, SqlSelect select, RelDataType targetRowType)
protected RelDataType createTargetRowType(SqlValidatorTable table, SqlNodeList targetColumnList, boolean append)
table - Target table for INSERT/UPDATEtargetColumnList - List of target columns, or null if not specifiedappend - Whether to append fields to those in
baseRowTypepublic void validateInsert(SqlInsert insert)
SqlValidatorvalidateInsert in interface SqlValidatorinsert - INSERT statementprotected RelDataType getLogicalTargetRowType(RelDataType targetRowType, SqlInsert insert)
protected RelDataType getLogicalSourceRowType(RelDataType sourceRowType, SqlInsert insert)
protected void checkTypeAssignment(RelDataType sourceRowType, RelDataType targetRowType, SqlNode query)
public void validateDelete(SqlDelete call)
SqlValidatorvalidateDelete in interface SqlValidatorcall - DELETE statementpublic void validateUpdate(SqlUpdate call)
SqlValidatorvalidateUpdate in interface SqlValidatorcall - UPDATE statementpublic void validateMerge(SqlMerge call)
SqlValidatorvalidateMerge in interface SqlValidatorcall - MERGE statementprotected void validateValues(SqlCall node, RelDataType targetRowType, SqlValidatorScope scope)
node - Values clausetargetRowType - Row type which expression must conform toscope - Scope within which clause occurspublic void validateDataType(SqlDataTypeSpec dataType)
SqlValidatorvalidateDataType in interface SqlValidatordataType - Data typepublic void validateDynamicParam(SqlDynamicParam dynamicParam)
SqlValidatorvalidateDynamicParam in interface SqlValidatordynamicParam - Dynamic parameterpublic CalciteContextException newValidationError(SqlNode node, Resources.ExInst<SqlValidatorException> e)
SqlValidatorNote that the input exception is checked (it derives from
Exception) and the output exception is unchecked (it derives from
RuntimeException). This is intentional -- it should remind code
authors to provide context for their validation errors.
newValidationError in interface SqlValidatornode - The place where the exception occurred, not nulle - The validation errorprotected SqlWindow getWindowByName(SqlIdentifier id, SqlValidatorScope scope)
public SqlWindow resolveWindow(SqlNode windowOrRef, SqlValidatorScope scope, boolean populateBounds)
SqlValidatorSELECT sum(x) OVER (PARTITION
BY x ORDER BY y), sum(y) OVER w1, sum(z) OVER (w ORDER BY y) FROM t
WINDOW w AS (PARTITION BY x) all aggregations have the same
resolved window specification (PARTITION BY x ORDER BY y).resolveWindow in interface SqlValidatorwindowOrRef - Either the name of a window (a SqlIdentifier)
or a window specification (a SqlWindow).scope - Scope in which to resolve window namespopulateBounds - Whether to populate bounds. Doing so may alter the
definition of the window. It is recommended that
populate bounds when translating to physical algebra,
but not when validating.public void validateWindow(SqlNode windowOrId, SqlValidatorScope scope, SqlCall call)
SqlValidatoridentifier referencing a window, or an
inline window specification.validateWindow in interface SqlValidatorwindowOrId - SqlNode that can be either SqlWindow with all the
components of a window spec or a SqlIdentifier with the
name of a window spec.scope - Naming scopecall - the SqlNode if a function call if the window is attached
to one.public void validateAggregateParams(SqlCall aggFunction, SqlValidatorScope scope)
SqlValidatorvalidateAggregateParams in interface SqlValidatoraggFunction - function containing COLUMN_LIST parameterscope - Syntactic scopepublic void validateCall(SqlCall call, SqlValidatorScope scope)
SqlValidatorvalidateCall in interface SqlValidatorcall - Operator callscope - Naming scopeprotected void validateFeature(Feature feature, SqlParserPos context)
feature - feature being used, represented as a resource instancecontext - parser position context for error reporting, or null ifpublic SqlNode expand(SqlNode expr, SqlValidatorScope scope)
SqlValidatorexpand in interface SqlValidatorexpr - Expressionscope - Scopepublic boolean isSystemField(RelDataTypeField field)
SqlValidatorIn the default implementation, always returns false.
isSystemField in interface SqlValidatorfield - Fieldpublic List<List<String>> getFieldOrigins(SqlNode sqlQuery)
SqlValidatorThe returned list is never null, and has one element for each field in the row type. Each element is a list of four elements (catalog, schema, table, column), or may be null if the column is an expression.
getFieldOrigins in interface SqlValidatorsqlQuery - Querypublic RelDataType getParameterRowType(SqlNode sqlQuery)
SqlValidatorgetParameterRowType in interface SqlValidatorsqlQuery - Querypublic void validateColumnListParams(SqlFunction function, List<RelDataType> argTypes, List<SqlNode> operands)
SqlValidatorvalidateColumnListParams in interface SqlValidatorfunction - function containing COLUMN_LIST parameterargTypes - function argumentsoperands - operands passed into the function callCopyright © 2012–2015 The Apache Software Foundation. All rights reserved.