if (subQuery.getOperator().getType() != SubQueryType.EXISTS && subQuery.getOperator().getType() != SubQueryType.NOT_EXISTS && sqRR.getColumnInfos().size() - subQuery.getNumOfCorrelationExprsAddedToSQSelect() > 1) { throw new SemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg(subQueryAST, if (subQuery.getOperator().getType() != SubQueryType.NOT_EXISTS || subQuery.getOperator().getType() != SubQueryType.NOT_IN) { srcRel = projectLeftOuterSide(srcRel, numSrcColumns);
if ( operator.getType() != SubQueryType.EXISTS && operator.getType() != SubQueryType.NOT_EXISTS && selectClause.getChildCount() - selectExprStart > 1 ) { subQueryAST.setOrigin(originalSQASTOrigin); if ( operator.getType() == SubQueryType.EXISTS && containsAggregationExprs && groupbyAddedToSQ ) { "cannot be rewritten. (predicate will always return true).")); if ( operator.getType() == SubQueryType.NOT_EXISTS && containsAggregationExprs && groupbyAddedToSQ ) { if ( ( operator.getType() == SubQueryType.EXISTS || operator.getType() == SubQueryType.NOT_EXISTS ) && !hasCorrelation ) { throw new SemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg(
public QBSubQuery(String outerQueryId, int sqIdx, ASTNode subQueryAST, ASTNode parentQueryExpression, SubQueryTypeDef operator, ASTNode originalSQAST, Context ctx) { super(); this.subQueryAST = subQueryAST; this.parentQueryExpression = parentQueryExpression; this.operator = operator; this.outerQueryId = outerQueryId; this.sqIdx = sqIdx; this.alias = "sq_" + this.sqIdx; this.numCorrExprsinSQ = 0; this.numOuterCorrExprsForHaving = 0; String s = ctx.getTokenRewriteStream().toString( originalSQAST.getTokenStartIndex(), originalSQAST.getTokenStopIndex()); originalSQASTOrigin = new ASTNodeOrigin("SubQuery", alias, s, alias, originalSQAST); numOfCorrelationExprsAddedToSQSelect = 0; groupbyAddedToSQ = false; if ( operator.getType() == SubQueryType.NOT_IN ) { notInCheck = new NotInCheck(); } subQueryDiagnostic = SubQueryDiagnostic.getRewrite(this, ctx.getTokenRewriteStream(), ctx); }
static SubQueryTypeDef buildSQOperator(ASTNode astSQOp) throws SemanticException { ASTNode opAST = (ASTNode) astSQOp.getChild(0); SubQueryType type = SubQueryType.get(opAST); return new SubQueryTypeDef(opAST, type); }
if ( operator.getType() != SubQueryType.EXISTS && operator.getType() != SubQueryType.NOT_EXISTS && selectClause.getChildCount() - selectExprStart > 1 ) { subQueryAST.setOrigin(originalSQASTOrigin); noImplicityGby) { if(operator.getType() == SubQueryType.EXISTS || operator.getType() == SubQueryType.NOT_EXISTS) { if(hasCorrelation) { throw new CalciteSubquerySemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg( else if(operator.getType() == SubQueryType.SCALAR) { if(hasNonEquiJoinPred) { throw new CalciteSubquerySemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg( else if(operator.getType() == SubQueryType.IN) { if(hasCount && hasCorrelation) { return true; else if (operator.getType() == SubQueryType.NOT_IN) { if(hasCorrelation) { return true;
if ( operator.getType() != SubQueryType.EXISTS && operator.getType() != SubQueryType.NOT_EXISTS && selectClause.getChildCount() - selectExprStart > 1 ) { subQueryAST.setOrigin(originalSQASTOrigin); if ( operator.getType() == SubQueryType.EXISTS && containsAggregationExprs && groupbyAddedToSQ ) { "cannot be rewritten. (predicate will always return true).")); if ( operator.getType() == SubQueryType.NOT_EXISTS && containsAggregationExprs && groupbyAddedToSQ ) { if ( ( operator.getType() == SubQueryType.EXISTS || operator.getType() == SubQueryType.NOT_EXISTS ) && !hasCorrelation ) { throw new SemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg(
if ( operator.getType() != SubQueryType.EXISTS && operator.getType() != SubQueryType.NOT_EXISTS && selectClause.getChildCount() - selectExprStart > 1 ) { subQueryAST.setOrigin(originalSQASTOrigin); noImplicityGby) { if(operator.getType() == SubQueryType.EXISTS || operator.getType() == SubQueryType.NOT_EXISTS) { if(hasCorrelation) { throw new CalciteSubquerySemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg( else if(operator.getType() == SubQueryType.SCALAR) { if(!hasWindowing) { subqueryConfig[1] = true; else if(operator.getType() == SubQueryType.IN) { if(hasCount && hasCorrelation) { subqueryConfig[0] = true; else if (operator.getType() == SubQueryType.NOT_IN) { if(hasCorrelation) { subqueryConfig[0] = true;
if ( operator.getType() != SubQueryType.EXISTS && operator.getType() != SubQueryType.NOT_EXISTS && selectClause.getChildCount() - selectExprStart > 1 ) { subQueryAST.setOrigin(originalSQASTOrigin); if ( operator.getType() == SubQueryType.EXISTS && containsAggregationExprs && groupbyAddedToSQ ) { "cannot be rewritten. (predicate will always return true).")); if ( operator.getType() == SubQueryType.NOT_EXISTS && containsAggregationExprs && groupbyAddedToSQ ) { if ( ( operator.getType() == SubQueryType.EXISTS || operator.getType() == SubQueryType.NOT_EXISTS ) && !hasCorrelation ) { throw new SemanticException(ErrorMsg.INVALID_SUBQUERY_EXPRESSION.getMsg(
public QBSubQuery(String outerQueryId, int sqIdx, ASTNode subQueryAST, ASTNode parentQueryExpression, SubQueryTypeDef operator, ASTNode originalSQAST, Context ctx) { super(); this.subQueryAST = subQueryAST; this.parentQueryExpression = parentQueryExpression; this.operator = operator; this.outerQueryId = outerQueryId; this.sqIdx = sqIdx; this.alias = "sq_" + this.sqIdx; this.numCorrExprsinSQ = 0; this.numOuterCorrExprsForHaving = 0; String s = ctx.getTokenRewriteStream().toString( originalSQAST.getTokenStartIndex(), originalSQAST.getTokenStopIndex()); originalSQASTOrigin = new ASTNodeOrigin("SubQuery", alias, s, alias, originalSQAST); numOfCorrelationExprsAddedToSQSelect = 0; groupbyAddedToSQ = false; if ( operator.getType() == SubQueryType.NOT_IN ) { notInCheck = new NotInCheck(); } subQueryDiagnostic = SubQueryDiagnostic.getRewrite(this, ctx.getTokenRewriteStream(), ctx); }
public QBSubQuery(String outerQueryId, int sqIdx, ASTNode subQueryAST, ASTNode parentQueryExpression, SubQueryTypeDef operator, ASTNode originalSQAST, Context ctx) { super(); this.subQueryAST = subQueryAST; this.parentQueryExpression = parentQueryExpression; this.operator = operator; this.outerQueryId = outerQueryId; this.sqIdx = sqIdx; this.alias = "sq_" + this.sqIdx; this.numCorrExprsinSQ = 0; this.numOuterCorrExprsForHaving = 0; String s = ctx.getTokenRewriteStream().toString( originalSQAST.getTokenStartIndex(), originalSQAST.getTokenStopIndex()); originalSQASTOrigin = new ASTNodeOrigin("SubQuery", alias, s, alias, originalSQAST); numOfCorrelationExprsAddedToSQSelect = 0; groupbyAddedToSQ = false; if ( operator.getType() == SubQueryType.NOT_IN ) { notInCheck = new NotInCheck(); } subQueryDiagnostic = SubQueryDiagnostic.getRewrite(this, ctx.getTokenRewriteStream(), ctx); }