OmniSciDB  72c90bc290
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator Class Reference
+ Inheritance diagram for org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator:
+ Collaboration diagram for org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator:

Public Member Functions

Set< String > visit (SqlCall call)
 
Set< String > visit (SqlIdentifier identifier)
 
Set< String > visit (SqlLiteral literal)
 
Set< String > visit (SqlIntervalQualifier qualifier)
 
Set< String > visit (SqlDataTypeSpec type)
 
Set< String > visit (SqlDynamicParam param)
 

Package Functions

 PatternValidator (boolean isMeasure)
 
 PatternValidator (boolean isMeasure, int firstLastCount, int prevNextCount, int aggregateCount)
 

Package Attributes

int firstLastCount
 
int prevNextCount
 
int aggregateCount
 

Private Attributes

final boolean isMeasure
 

Detailed Description

Validates that within one navigation function, the pattern var is the same.

Definition at line 6452 of file SqlValidatorImpl.java.

Constructor & Destructor Documentation

org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.PatternValidator ( boolean  isMeasure)
inlinepackage

Definition at line 6458 of file SqlValidatorImpl.java.

References org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.isMeasure.

Referenced by org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit().

6458  {
6459  this(isMeasure, 0, 0, 0);
6460  }

+ Here is the caller graph for this function:

Member Function Documentation

Set<String> org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit ( SqlCall  call)
inline

Definition at line 6470 of file SqlValidatorImpl.java.

References org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.aggregateCount, COUNT, org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.firstLastCount, org.apache.calcite.sql.validate.SqlValidatorImpl.isAggregation(), org.apache.calcite.sql.validate.SqlValidatorImpl.isLogicalNavigation(), org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.isMeasure, org.apache.calcite.sql.validate.SqlValidatorImpl.isPhysicalNavigation(), org.apache.calcite.sql.validate.SqlValidatorImpl.isRunningOrFinal(), org.apache.calcite.sql.validate.SqlValidatorImpl.isSingleVarRequired(), org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(), org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.PatternValidator(), and org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.prevNextCount.

6470  {
6471  boolean isSingle = false;
6472  Set<String> vars = new HashSet<>();
6473  SqlKind kind = call.getKind();
6474  List<SqlNode> operands = call.getOperandList();
6475 
6476  if (isSingleVarRequired(kind)) {
6477  isSingle = true;
6478  if (isPhysicalNavigation(kind)) {
6479  if (isMeasure) {
6480  throw newValidationError(call,
6481  Static.RESOURCE.patternPrevFunctionInMeasure(call.toString()));
6482  }
6483  if (firstLastCount != 0) {
6484  throw newValidationError(call,
6485  Static.RESOURCE.patternPrevFunctionOrder(call.toString()));
6486  }
6487  prevNextCount++;
6488  } else if (isLogicalNavigation(kind)) {
6489  if (firstLastCount != 0) {
6490  throw newValidationError(call,
6491  Static.RESOURCE.patternPrevFunctionOrder(call.toString()));
6492  }
6493  firstLastCount++;
6494  } else if (isAggregation(kind)) {
6495  // cannot apply aggregation in PREV/NEXT, FIRST/LAST
6496  if (firstLastCount != 0 || prevNextCount != 0) {
6497  throw newValidationError(call,
6498  Static.RESOURCE.patternAggregationInNavigation(call.toString()));
6499  }
6500  if (kind == SqlKind.COUNT && call.getOperandList().size() > 1) {
6501  throw newValidationError(call,
6502  Static.RESOURCE.patternCountFunctionArg());
6503  }
6504  aggregateCount++;
6505  }
6506  }
6507 
6508  if (isRunningOrFinal(kind) && !isMeasure) {
6509  throw newValidationError(call,
6510  Static.RESOURCE.patternRunningFunctionInDefine(call.toString()));
6511  }
6512 
6513  for (SqlNode node : operands) {
6514  if (node != null) {
6515  vars.addAll(
6516  node.accept(
6518  aggregateCount)));
6519  }
6520  }
6521 
6522  if (isSingle) {
6523  switch (kind) {
6524  case COUNT:
6525  if (vars.size() > 1) {
6526  throw newValidationError(call,
6527  Static.RESOURCE.patternCountFunctionArg());
6528  }
6529  break;
6530  default:
6531  if (operands.size() == 0
6532  || !(operands.get(0) instanceof SqlCall)
6533  || ((SqlCall) operands.get(0)).getOperator() != SqlStdOperatorTable.CLASSIFIER) {
6534  if (vars.isEmpty()) {
6535  throw newValidationError(call,
6536  Static.RESOURCE.patternFunctionNullCheck(call.toString()));
6537  }
6538  if (vars.size() != 1) {
6539  throw newValidationError(call,
6540  Static.RESOURCE.patternFunctionVariableCheck(call.toString()));
6541  }
6542  }
6543  break;
6544  }
6545  }
6546  return vars;
6547  }
CalciteContextException newValidationError(SqlNode node, Resources.ExInst< SqlValidatorException > e)

+ Here is the call graph for this function:

Set<String> org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit ( SqlIdentifier  identifier)
inline
Set<String> org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit ( SqlLiteral  literal)
inline

Definition at line 6558 of file SqlValidatorImpl.java.

6558  {
6559  return ImmutableSet.of();
6560  }
Set<String> org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit ( SqlIntervalQualifier  qualifier)
inline

Definition at line 6562 of file SqlValidatorImpl.java.

6562  {
6563  return ImmutableSet.of();
6564  }
Set<String> org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit ( SqlDataTypeSpec  type)
inline

Definition at line 6566 of file SqlValidatorImpl.java.

6566  {
6567  return ImmutableSet.of();
6568  }
Set<String> org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.visit ( SqlDynamicParam  param)
inline

Definition at line 6570 of file SqlValidatorImpl.java.

6570  {
6571  return ImmutableSet.of();
6572  }

Member Data Documentation

int org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.aggregateCount
package
int org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.firstLastCount
package
final boolean org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.isMeasure
private
int org.apache.calcite.sql.validate.SqlValidatorImpl.PatternValidator.prevNextCount
package

The documentation for this class was generated from the following file: