private static boolean isCountStar(AggregateSymbol as) { return as.isCount() && (as.getArgs().length == 0 || EvaluatableVisitor.willBecomeConstant(as.getArg(0))); }
private Map<Integer, Object> createAggregateMetadata(String shortColumnName, AggregateSymbol symbol) throws QueryMetadataException, TeiidComponentException { Type function = symbol.getAggregateFunction(); if(function == Type.MIN || function == Type.MAX){ Expression expression = symbol.getArg(0); if(expression instanceof ElementSymbol) { return createColumnMetadata(shortColumnName, expression); } } return createTypedMetadata(shortColumnName, symbol); }
private static boolean isCountStar(AggregateSymbol as) { return as.getAggregateFunction() == Type.COUNT && (as.getArgs().length == 0 || EvaluatableVisitor.willBecomeConstant(as.getArg(0))); }
private Map<Integer, Object> createAggregateMetadata(String shortColumnName, AggregateSymbol symbol) throws QueryMetadataException, TeiidComponentException { Type function = symbol.getAggregateFunction(); if(function == Type.MIN || function == Type.MAX){ Expression expression = symbol.getArg(0); if(expression instanceof ElementSymbol) { return createColumnMetadata(shortColumnName, expression); } } return createTypedMetadata(shortColumnName, symbol); }
private static boolean isCountStar(AggregateSymbol as) { return as.isCount() && (as.getArgs().length == 0 || EvaluatableVisitor.willBecomeConstant(as.getArg(0))); }
private Map<Integer, Object> createAggregateMetadata(String shortColumnName, AggregateSymbol symbol) throws QueryMetadataException, TeiidComponentException { Type function = symbol.getAggregateFunction(); if(function == Type.MIN || function == Type.MAX){ Expression expression = symbol.getArg(0); if(expression instanceof ElementSymbol) { return createColumnMetadata(shortColumnName, expression); } } return createTypedMetadata(shortColumnName, symbol); }
continue; Expression expr = symbol.getArg(0); if (stagedGroupingSymbols.contains(expr)) { iterator.remove();
} else if (aggFunction == Type.AVG) { AggregateSymbol countAgg = new AggregateSymbol(NonReserved.COUNT, false, partitionAgg.getArg(0)); AggregateSymbol sumAgg = new AggregateSymbol(NonReserved.SUM, false, partitionAgg.getArg(0)); } else if (partitionAgg.isEnhancedNumeric()) { AggregateSymbol countAgg = new AggregateSymbol(NonReserved.COUNT, false, partitionAgg.getArg(0)); AggregateSymbol sumAgg = new AggregateSymbol(NonReserved.SUM, false, partitionAgg.getArg(0)); AggregateSymbol sumSqAgg = new AggregateSymbol(NonReserved.SUM, false, new Function(SourceSystemFunctions.POWER, new Expression[] {partitionAgg.getArg(0), new Constant(2)}));
continue; Expression expr = symbol.getArg(0); if (stagedGroupingSymbols.contains(expr)) { iterator.remove();
continue; Expression expr = symbol.getArg(0); if (stagedGroupingSymbols.contains(expr)) { iterator.remove();
return COUNT_TYPE; case SUM: Class<?> expressionType = this.getArg(0).getType(); return SUM_TYPES.get(expressionType); case AVG: expressionType = this.getArg(0).getType(); return AVG_TYPES.get(expressionType); case ARRAY_AGG: if (this.getArg(0) == null) { return null; return DataTypeManager.getArrayType(this.getArg(0).getType()); case TEXTAGG: return DataTypeManager.DefaultDataClasses.BLOB; return null; return this.getArg(0).getType();
return COUNT_TYPE; case SUM: Class<?> expressionType = this.getArg(0).getType(); return SUM_TYPES.get(expressionType); case AVG: expressionType = this.getArg(0).getType(); return AVG_TYPES.get(expressionType); case ARRAY_AGG: if (this.getArg(0) == null) { return null; return DataTypeManager.getArrayType(this.getArg(0).getType()); case TEXTAGG: return DataTypeManager.DefaultDataClasses.BLOB; return null; return this.getArg(0).getType();
return COUNT_TYPE; case SUM: Class<?> expressionType = this.getArg(0).getType(); return SUM_TYPES.get(expressionType); case AVG: expressionType = this.getArg(0).getType(); return AVG_TYPES.get(expressionType); case ARRAY_AGG: if (this.getArg(0) == null) { return null; return DataTypeManager.getArrayType(this.getArg(0).getType()); case TEXTAGG: return DataTypeManager.DefaultDataClasses.BLOB; return null; return this.getArg(0).getType();
expression.setDistinct(false); if (rewriteAggs && expression.getArg(0) != null && EvaluatableVisitor.willBecomeConstant(expression.getArg(0))) { return expression.getArg(0); if (args.length == 1 && expression.getCondition() != null && !expression.respectsNulls()) { Expression cond = expression.getCondition(); Expression ex = expression.getArg(0); if (!(cond instanceof Criteria)) { cond = new ExpressionCriteria(cond); args[i] = rewriteExpressionDirect(expression.getArg(i));
expression.setDistinct(false); if (rewriteAggs && expression.getArg(0) != null && EvaluatableVisitor.willBecomeConstant(expression.getArg(0))) { return expression.getArg(0); if (args.length == 1 && expression.getCondition() != null && !expression.respectsNulls()) { Expression cond = expression.getCondition(); Expression ex = expression.getArg(0); if (!(cond instanceof Criteria)) { cond = new ExpressionCriteria(cond); args[i] = rewriteExpressionDirect(expression.getArg(i));
expression.setDistinct(false); if (rewriteAggs && expression.getArg(0) != null && EvaluatableVisitor.willBecomeConstant(expression.getArg(0))) { return expression.getArg(0); if (args.length == 1 && expression.getCondition() != null && !expression.respectsNulls()) { Expression cond = expression.getCondition(); Expression ex = expression.getArg(0); if (!(cond instanceof Criteria)) { cond = new ExpressionCriteria(cond); args[i] = rewriteExpressionDirect(expression.getArg(i));
allSymbols.addSymbol(new ExpressionSymbol("stagedAgg", new Constant(1))); //$NON-NLS-1$ } else { SearchedCaseExpression count = new SearchedCaseExpression(Arrays.asList(new IsNullCriteria(agg.getArg(0))), Arrays.asList(new Constant(Integer.valueOf(0)))); count.setElseExpression(new Constant(Integer.valueOf(1))); count.setType(DataTypeManager.DefaultDataClasses.INTEGER); Expression ex = agg.getArg(0); ex = ResolverUtil.convertExpression(ex, DataTypeManager.getDataTypeName(agg.getType()), metadata); allSymbols.addSymbol(new ExpressionSymbol("stagedAgg", ex)); //$NON-NLS-1$
allSymbols.addSymbol(new ExpressionSymbol("stagedAgg", newLiteral(1, agg.getType()))); //$NON-NLS-1$ } else { SearchedCaseExpression count = new SearchedCaseExpression(Arrays.asList(new IsNullCriteria(agg.getArg(0))), Arrays.asList(newLiteral(0, agg.getType()))); count.setElseExpression(newLiteral(1, agg.getType())); count.setType(agg.getType()); Expression ex = agg.getArg(0); ex = ResolverUtil.convertExpression(ex, DataTypeManager.getDataTypeName(agg.getType()), metadata); allSymbols.addSymbol(new ExpressionSymbol("stagedAgg", ex)); //$NON-NLS-1$
allSymbols.addSymbol(new ExpressionSymbol("stagedAgg", newLiteral(1, agg.getType()))); //$NON-NLS-1$ } else { SearchedCaseExpression count = new SearchedCaseExpression(Arrays.asList(new IsNullCriteria(agg.getArg(0))), Arrays.asList(newLiteral(0, agg.getType()))); count.setElseExpression(newLiteral(1, agg.getType())); count.setType(agg.getType()); Expression ex = agg.getArg(0); ex = ResolverUtil.convertExpression(ex, DataTypeManager.getDataTypeName(agg.getType()), metadata); allSymbols.addSymbol(new ExpressionSymbol("stagedAgg", ex)); //$NON-NLS-1$
continue; Collection<GroupSymbol> expressionGroups = GroupsUsedByElementsVisitor.getGroups(as.getArg(0)); Collection<GroupSymbol> innerGroups = null; if (joinType == JoinType.JOIN_LEFT_OUTER) { return null; if (as.getArgs().length == 1 && JoinUtil.isNullDependent(metadata, innerGroups, as.getArg(0))) { return null;