本文整理汇总了Java中org.apache.calcite.sql.validate.SqlValidatorScope类的典型用法代码示例。如果您正苦于以下问题:Java SqlValidatorScope类的具体用法?Java SqlValidatorScope怎么用?Java SqlValidatorScope使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SqlValidatorScope类属于org.apache.calcite.sql.validate包,在下文中一共展示了SqlValidatorScope类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: makeNullableIfOperandsAre
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Recreates a given RelDataType with nullability iff any of the operands
* of a call are nullable.
*/
public static RelDataType makeNullableIfOperandsAre(
final SqlValidator validator,
final SqlValidatorScope scope,
final SqlCall call,
RelDataType type) {
for (SqlNode operand : call.getOperandList()) {
RelDataType operandType = validator.deriveType(scope, operand);
if (containsNullable(operandType)) {
RelDataTypeFactory typeFactory = validator.getTypeFactory();
type = typeFactory.createTypeWithNullability(type, true);
break;
}
}
return type;
}
开发者ID:apache,项目名称:kylin,代码行数:21,代码来源:SqlTypeUtil.java
示例2: getMonotonicity
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public SqlMonotonicity getMonotonicity(SqlValidatorScope scope) {
// for "star" column, whether it's static or dynamic return not_monotonic directly.
if (Util.last(names).equals("") || DynamicRecordType.isDynamicStarColName(Util.last(names))) {
return SqlMonotonicity.NOT_MONOTONIC;
}
// First check for builtin functions which don't have parentheses,
// like "LOCALTIME".
final SqlValidator validator = scope.getValidator();
SqlCall call =
SqlUtil.makeCall(
validator.getOperatorTable(),
this);
if (call != null) {
return call.getMonotonicity(scope);
}
final SqlQualified qualified = scope.fullyQualify(this);
final SqlIdentifier fqId = qualified.identifier;
return qualified.namespace.resolve().getMonotonicity(Util.last(fqId.names));
}
开发者ID:apache,项目名称:calcite,代码行数:21,代码来源:SqlIdentifier.java
示例3: validateCall
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void validateCall(
SqlCall call,
SqlValidator validator,
SqlValidatorScope scope,
SqlValidatorScope operandScope) {
// The base method validates all operands. We override because
// we don't want to validate the identifier.
final List<SqlNode> operands = call.getOperandList();
assert operands.size() == 2;
assert operands.get(1) instanceof SqlIdentifier;
operands.get(0).validateExpr(validator, scope);
SqlIdentifier id = (SqlIdentifier) operands.get(1);
if (!id.isSimple()) {
throw validator.newValidationError(id,
RESOURCE.aliasMustBeSimpleIdentifier());
}
}
开发者ID:apache,项目名称:calcite,代码行数:18,代码来源:SqlAsOperator.java
示例4: deriveType
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Calls the parent class method and mask Farrago exception thrown.
*/
public RelDataType deriveType(
SqlValidatorScope scope,
SqlNode operand) {
// REVIEW Do not mask Error (indicates a serious system problem) or
// UnsupportedOperationException (a bug). I have to mask
// UnsupportedOperationException because
// SqlValidatorImpl.getValidatedNodeType throws it for an unrecognized
// identifier node I have to mask Error as well because
// AbstractNamespace.getRowType called in super.deriveType can do a
// Util.permAssert that throws Error
try {
return super.deriveType(scope, operand);
} catch (CalciteException | UnsupportedOperationException | Error e) {
return unknownType;
}
}
开发者ID:apache,项目名称:calcite,代码行数:20,代码来源:SqlAdvisorValidator.java
示例5: validateExpr
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void validateExpr(SqlValidator validator, SqlValidatorScope scope) {
// While a SqlNodeList is not always a valid expression, this
// implementation makes that assumption. It just validates the members
// of the list.
//
// One example where this is valid is the IN operator. The expression
//
// empno IN (10, 20)
//
// results in a call with operands
//
// { SqlIdentifier({"empno"}),
// SqlNodeList(SqlLiteral(10), SqlLiteral(20)) }
for (SqlNode node : list) {
node.validateExpr(validator, scope);
}
}
开发者ID:apache,项目名称:calcite,代码行数:19,代码来源:SqlNodeList.java
示例6: validateCall
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void validateCall(
SqlCall call,
SqlValidator validator,
SqlValidatorScope scope,
SqlValidatorScope operandScope) {
assert call.getOperator() == this;
assert call.operandCount() == 2;
SqlCall aggCall = call.operand(0);
if (!aggCall.getOperator().isAggregator()) {
throw validator.newValidationError(aggCall,
RESOURCE.filterNonAggregate());
}
final SqlNode condition = call.operand(1);
validator.validateAggregateParams(aggCall, condition, scope);
final RelDataType type = validator.deriveType(scope, condition);
if (!SqlTypeUtil.inBooleanFamily(type)) {
throw validator.newValidationError(condition,
RESOURCE.condMustBeBoolean("FILTER"));
}
}
开发者ID:apache,项目名称:calcite,代码行数:22,代码来源:SqlFilterOperator.java
示例7: validateCall
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void validateCall(
SqlCall call,
SqlValidator validator,
SqlValidatorScope scope,
SqlValidatorScope operandScope) {
// per the SQL std, each string fragment must be on a different line
final List<SqlNode> operandList = call.getOperandList();
for (int i = 1; i < operandList.size(); i++) {
SqlParserPos prevPos = operandList.get(i - 1).getParserPosition();
final SqlNode operand = operandList.get(i);
SqlParserPos pos = operand.getParserPosition();
if (pos.getLineNum() <= prevPos.getLineNum()) {
throw validator.newValidationError(operand,
RESOURCE.stringFragsOnSameLine());
}
}
}
开发者ID:apache,项目名称:calcite,代码行数:18,代码来源:SqlLiteralChainOperator.java
示例8: deriveType
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
@Override public RelDataType deriveType(SqlValidator validator,
SqlValidatorScope scope, SqlCall call) {
RelDataType nodeType = validator.deriveType(scope, call.getOperandList().get(0));
assert nodeType != null;
final String fieldName = call.getOperandList().get(1).toString();
RelDataTypeField field =
nodeType.getField(fieldName, false, false);
if (field == null) {
throw SqlUtil.newContextException(SqlParserPos.ZERO, Static.RESOURCE.unknownField(fieldName));
}
RelDataType type = field.getType();
// Validate and determine coercibility and resulting collation
// name of binary operator if needed.
type = adjustType(validator, call, type);
SqlValidatorUtil.checkCharsetAndCollateConsistentIfCharType(type);
return type;
}
开发者ID:apache,项目名称:calcite,代码行数:20,代码来源:SqlDotOperator.java
示例9: validateCall
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void validateCall(
SqlCall call,
SqlValidator validator,
SqlValidatorScope scope,
SqlValidatorScope operandScope) {
// This implementation looks for the quantifier keywords DISTINCT or
// ALL as the first operand in the list. If found then the literal is
// not called to validate itself. Further the function is checked to
// make sure that a quantifier is valid for that particular function.
//
// If the first operand does not appear to be a quantifier then the
// parent ValidateCall is invoked to do normal function validation.
super.validateCall(call, validator, scope, operandScope);
validateQuantifier(validator, call);
}
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:SqlFunction.java
示例10: findValidOptions
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void findValidOptions(
SqlValidator validator,
SqlValidatorScope scope,
SqlParserPos pos,
Collection<SqlMoniker> hintList) {
for (SqlNode operand : getOperandList()) {
if (operand instanceof SqlIdentifier) {
SqlIdentifier id = (SqlIdentifier) operand;
SqlParserPos idPos = id.getParserPosition();
if (idPos.toString().equals(pos.toString())) {
((SqlValidatorImpl) validator).lookupNameCompletionHints(
scope, id.names, pos, hintList);
return;
}
}
}
// no valid options
}
开发者ID:apache,项目名称:calcite,代码行数:19,代码来源:SqlCall.java
示例11: validateOperands
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Validates the operands of a call, inferring the return type in the
* process.
*
* @param validator active validator
* @param scope validation scope
* @param call call to be validated
* @return inferred type
*/
public final RelDataType validateOperands(
SqlValidator validator,
SqlValidatorScope scope,
SqlCall call) {
// Let subclasses know what's up.
preValidateCall(validator, scope, call);
// Check the number of operands
checkOperandCount(validator, operandTypeChecker, call);
SqlCallBinding opBinding = new SqlCallBinding(validator, scope, call);
checkOperandTypes(
opBinding,
true);
// Now infer the result type.
RelDataType ret = inferReturnType(opBinding);
((SqlValidatorImpl) validator).setValidatedNodeType(call, ret);
return ret;
}
开发者ID:apache,项目名称:calcite,代码行数:31,代码来源:SqlOperator.java
示例12: makeNullableIfOperandsAre
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Recreates a given RelDataType with nullability iff any of the operands
* of a call are nullable.
*/
public static RelDataType makeNullableIfOperandsAre(
final SqlValidator validator,
final SqlValidatorScope scope,
final SqlCall call,
RelDataType type) {
for (SqlNode operand : call.getOperandList()) {
RelDataType operandType = validator.deriveType(scope, operand);
if (containsNullable(operandType)) {
RelDataTypeFactory typeFactory = validator.getTypeFactory();
type = typeFactory.createTypeWithNullability(type, true);
break;
}
}
return type;
}
开发者ID:apache,项目名称:calcite,代码行数:21,代码来源:SqlTypeUtil.java
示例13: deriveType
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
@Override
public RelDataType deriveType(SqlValidator validator, SqlValidatorScope scope, SqlCall call) {
if (NONE.equals(returnType)) {
return validator.getTypeFactory().createSqlType(SqlTypeName.ANY);
}
/*
* We return a nullable output type both in validation phase and in
* Sql to Rel phase. We don't know the type of the output until runtime
* hence have to choose the least restrictive type to avoid any wrong
* results.
*/
return getNullableReturnDataType(validator.getTypeFactory());
}
开发者ID:skhalifa,项目名称:QDrill,代码行数:14,代码来源:DrillSqlOperator.java
示例14: convertSelect
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Converts a SELECT statement's parse tree into a relational expression.
*/
public RelNode convertSelect(SqlSelect select, boolean top) {
final SqlValidatorScope selectScope = validator.getWhereScope(select);
final Blackboard bb = createBlackboard(selectScope, null, top);
convertSelectImpl(bb, select);
return bb.root;
}
开发者ID:axbaretto,项目名称:flink,代码行数:10,代码来源:SqlToRelConverter.java
示例15: isSubQueryNonCorrelated
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Determines whether a sub-query is non-correlated. Note that a
* non-correlated sub-query can contain correlated references, provided those
* references do not reference select statements that are parents of the
* sub-query.
*
* @param subq the sub-query
* @param bb blackboard used while converting the sub-query, i.e., the
* blackboard of the parent query of this sub-query
* @return true if the sub-query is non-correlated
*/
private boolean isSubQueryNonCorrelated(RelNode subq, Blackboard bb) {
Set<CorrelationId> correlatedVariables = RelOptUtil.getVariablesUsed(subq);
for (CorrelationId correlName : correlatedVariables) {
DeferredLookup lookup = mapCorrelToDeferred.get(correlName);
String originalRelName = lookup.getOriginalRelName();
final SqlNameMatcher nameMatcher =
lookup.bb.scope.getValidator().getCatalogReader().nameMatcher();
final SqlValidatorScope.ResolvedImpl resolved =
new SqlValidatorScope.ResolvedImpl();
lookup.bb.scope.resolve(ImmutableList.of(originalRelName), nameMatcher,
false, resolved);
SqlValidatorScope ancestorScope = resolved.only().scope;
// If the correlated reference is in a scope that's "above" the
// sub-query, then this is a correlated sub-query.
SqlValidatorScope parentScope = bb.scope;
do {
if (ancestorScope == parentScope) {
return false;
}
if (parentScope instanceof DelegatingScope) {
parentScope = ((DelegatingScope) parentScope).getParent();
} else {
break;
}
} while (parentScope != null);
}
return true;
}
开发者ID:axbaretto,项目名称:flink,代码行数:43,代码来源:SqlToRelConverter.java
示例16: deriveType
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
@Override
public RelDataType deriveType(
SqlValidator validator,
SqlValidatorScope scope,
SqlCall call) {
return operator.deriveType(validator,
scope,
call);
}
开发者ID:axbaretto,项目名称:drill,代码行数:10,代码来源:DrillCalciteSqlFunctionWrapper.java
示例17: convertSelect
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Converts a SELECT statement's parse tree into a relational expression.
*/
public RelNode convertSelect(SqlSelect select, boolean top) {
final SqlValidatorScope selectScope = validator.getWhereScope(select);
final Blackboard bb = createBlackboard(selectScope, null, top);
convertSelectImpl(bb, select);
return bb.root;
}
开发者ID:apache,项目名称:kylin,代码行数:10,代码来源:SqlToRelConverter.java
示例18: isSubQueryNonCorrelated
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Determines whether a sub-query is non-correlated. Note that a
* non-correlated sub-query can contain correlated references, provided those
* references do not reference select statements that are parents of the
* sub-query.
*
* @param subq the sub-query
* @param bb blackboard used while converting the sub-query, i.e., the
* blackboard of the parent query of this sub-query
* @return true if the sub-query is non-correlated
*/
private boolean isSubQueryNonCorrelated(RelNode subq, Blackboard bb) {
Set<CorrelationId> correlatedVariables = RelOptUtil.getVariablesUsed(subq);
for (CorrelationId correlName : correlatedVariables) {
DeferredLookup lookup = mapCorrelToDeferred.get(correlName);
String originalRelName = lookup.getOriginalRelName();
final SqlNameMatcher nameMatcher =
lookup.bb.scope.getValidator().getCatalogReader().nameMatcher();
final SqlValidatorScope.ResolvedImpl resolved =
new SqlValidatorScope.ResolvedImpl();
lookup.bb.scope.resolve(ImmutableList.of(originalRelName), nameMatcher,
false, resolved);
SqlValidatorScope ancestorScope = resolved.only().scope;
// If the correlated reference is in a scope that's "above" the
// sub-query, then this is a correlated sub-query.
SqlValidatorScope parentScope = bb.scope;
do {
if (ancestorScope == parentScope) {
return false;
}
if (parentScope instanceof DelegatingScope) {
parentScope = ((DelegatingScope) parentScope).getParent();
} else {
break;
}
} while (parentScope != null);
}
return true;
}
开发者ID:apache,项目名称:kylin,代码行数:43,代码来源:SqlToRelConverter.java
示例19: deriveAndCollectTypes
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
/**
* Iterates over all operands, derives their types, and collects them into
* a list.
*/
public static List<RelDataType> deriveAndCollectTypes(
SqlValidator validator,
SqlValidatorScope scope,
List<SqlNode> operands) {
// NOTE: Do not use an AbstractList. Don't want to be lazy. We want
// errors.
List<RelDataType> types = new ArrayList<RelDataType>();
for (SqlNode operand : operands) {
types.add(validator.deriveType(scope, operand));
}
return types;
}
开发者ID:apache,项目名称:kylin,代码行数:17,代码来源:SqlTypeUtil.java
示例20: validateCall
import org.apache.calcite.sql.validate.SqlValidatorScope; //导入依赖的package包/类
public void validateCall(
SqlCall call,
SqlValidator validator,
SqlValidatorScope scope,
SqlValidatorScope operandScope) {
validator.validateQuery(call, operandScope, validator.getUnknownType());
}
开发者ID:apache,项目名称:calcite,代码行数:8,代码来源:SqlSetOperator.java
注:本文中的org.apache.calcite.sql.validate.SqlValidatorScope类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论