public static boolean isCountAllItem(SelectItem item) { if (item != null && item.getAggregateFunction() != null && item.getAggregateFunction().toString().equals("COUNT") && item.getExpression() == "*") { return true; } return false; }
public static boolean isCountAllItem(SelectItem item) { if (item != null && item.getAggregateFunction() != null && item.getAggregateFunction().toString().equals("COUNT") && item.getExpression() == "*") { return true; } return false; }
public static List<SelectItem> getAggregateFunctionSelectItems(Iterable<SelectItem> selectItems) { return CollectionUtils.filter(selectItems, arg -> { return arg.getAggregateFunction() != null; }); }
public static List<SelectItem> getAggregateFunctionSelectItems(Iterable<SelectItem> selectItems) { return CollectionUtils.filter(selectItems, arg -> { return arg.getAggregateFunction() != null; }); }
@Override public List<InputColumn<?>> getInputColumns() { final List<InputColumn<?>> result = new ArrayList<>(); final List<SelectItem> selectItems = _row.getSelectItems(); for (final SelectItem selectItem : selectItems) { if (selectItem.getColumn() != null && selectItem.getAggregateFunction() == null) { result.add(new MetaModelInputColumn(selectItem.getColumn())); } } return result; } }
@Override public final DataSet intercept(DataSet dataSet) { Map<Column, TypeConverter<?, ?>> converters = getConverters(dataSet); if (converters.isEmpty()) { return dataSet; } boolean hasConverter = false; List<SelectItem> selectItems = dataSet.getSelectItems(); TypeConverter<?, ?>[] converterArray = new TypeConverter[selectItems.size()]; for (int i = 0; i < selectItems.size(); i++) { SelectItem selectItem = selectItems.get(i); Column column = selectItem.getColumn(); if (column != null && selectItem.getAggregateFunction() == null) { TypeConverter<?, ?> converter = converters.get(column); if (converter != null) { hasConverter = true; converterArray[i] = converter; } } } if (!hasConverter) { return dataSet; } return new ConvertedDataSet(dataSet, converterArray); }
@Override public final DataSet intercept(DataSet dataSet) { Map<Column, TypeConverter<?, ?>> converters = getConverters(dataSet); if (converters.isEmpty()) { return dataSet; } boolean hasConverter = false; List<SelectItem> selectItems = dataSet.getSelectItems(); TypeConverter<?, ?>[] converterArray = new TypeConverter[selectItems.size()]; for (int i = 0; i < selectItems.size(); i++) { SelectItem selectItem = selectItems.get(i); Column column = selectItem.getColumn(); if (column != null && selectItem.getAggregateFunction() == null) { TypeConverter<?, ?> converter = converters.get(column); if (converter != null) { hasConverter = true; converterArray[i] = converter; } } } if (!hasConverter) { return dataSet; } return new ConvertedDataSet(dataSet, converterArray); }
/** * Determines if all the select items are 'simple' meaning that they just represent scans of values in columns. * * @param clause * @return */ private boolean isSimpleSelect(SelectClause clause) { if (clause.isDistinct()) { return false; } for (SelectItem item : clause.getItems()) { if (item.getAggregateFunction() != null || item.getExpression() != null) { return false; } } return true; }
/** * Determines if all the select items are 'simple' meaning that they just represent scans of values in columns. * * @param clause * @return */ private boolean isSimpleSelect(SelectClause clause) { if (clause.isDistinct()) { return false; } for (SelectItem item : clause.getItems()) { if (item.getAggregateFunction() != null || item.getExpression() != null) { return false; } } return true; }
@Override public boolean containsInputColumn(final InputColumn<?> inputColumn) { if (!inputColumn.isPhysicalColumn()) { return false; } final Column physicalColumn = inputColumn.getPhysicalColumn(); final List<SelectItem> selectItems = _row.getSelectItems(); for (final SelectItem selectItem : selectItems) { if (selectItem.getColumn() != null && selectItem.getAggregateFunction() == null) { final Column column = selectItem.getColumn(); if (physicalColumn.equals(column)) { return true; } } } return false; }
Object functionResult = item.getAggregateFunction().evaluate(objects.toArray()); resultRow[i] = functionResult; } else { if (item.getAggregateFunction() != null) { logger.error("No function input found for SelectItem: {}", item);
private Object getValue(ResultSet resultSet, int i) throws SQLException { final SelectItem selectItem = getHeader().getSelectItem(i); final int columnIndex = i + 1; if (selectItem.getAggregateFunction() == null) { final Column column = selectItem.getColumn(); if (column != null) { final IQueryRewriter queryRewriter; if (_jdbcDataContext == null) { queryRewriter = new DefaultQueryRewriter(null); } else { queryRewriter = _jdbcDataContext.getQueryRewriter(); } return queryRewriter.getResultSetValue(resultSet, columnIndex, column); } } return resultSet.getObject(columnIndex); }
/** * Gets whether a query is guaranteed to only yield a single row. Such * queries are queries that only consist of aggregation functions and no * group by clause. * * @param query * @return */ private boolean isSingleRowQuery(Query query) { if (!query.getGroupByClause().isEmpty()) { return false; } List<SelectItem> items = query.getSelectClause().getItems(); for (SelectItem item : items) { if (item.getAggregateFunction() == null) { return false; } } return true; }
private Object getValue(ResultSet resultSet, int i) throws SQLException { final SelectItem selectItem = getHeader().getSelectItem(i); final int columnIndex = i + 1; if (selectItem.getAggregateFunction() == null) { final Column column = selectItem.getColumn(); if (column != null) { final IQueryRewriter queryRewriter; if (_jdbcDataContext == null) { queryRewriter = new DefaultQueryRewriter(null); } else { queryRewriter = _jdbcDataContext.getQueryRewriter(); } return queryRewriter.getResultSetValue(resultSet, columnIndex, column); } } return resultSet.getObject(columnIndex); }
/** * Gets whether a query is guaranteed to only yield a single row. Such * queries are queries that only consist of aggregation functions and no * group by clause. * * @param query * @return */ private boolean isSingleRowQuery(Query query) { if (!query.getGroupByClause().isEmpty()) { return false; } List<SelectItem> items = query.getSelectClause().getItems(); for (SelectItem item : items) { if (item.getAggregateFunction() == null) { return false; } } return true; }
private boolean isOptimizable(FilterItem whereItem) { if (whereItem.isCompoundFilter()) { return false; } if (whereItem.getExpression() != null) { return false; } final SelectItem selectItem = whereItem.getSelectItem(); if (selectItem.getExpression() != null || selectItem.getAggregateFunction() != null || selectItem .getScalarFunction() != null) { return false; } final Column column = selectItem.getColumn(); if (column == null) { return false; } switch (column.getName()) { case COLUMN_OFFSET: return OPTIMIZED_OFFSET_OPERATORS.contains(whereItem.getOperator()); case COLUMN_PARTITION: return OPTIMIZED_PARTITION_OPERATORS.contains(whereItem.getOperator()); default: return false; } }
private boolean isOptimizable(FilterItem whereItem) { if (whereItem.isCompoundFilter()) { return false; } if (whereItem.getExpression() != null) { return false; } final SelectItem selectItem = whereItem.getSelectItem(); if (selectItem.getExpression() != null || selectItem.getAggregateFunction() != null || selectItem .getScalarFunction() != null) { return false; } final Column column = selectItem.getColumn(); if (column == null) { return false; } switch (column.getName()) { case COLUMN_OFFSET: return OPTIMIZED_OFFSET_OPERATORS.contains(whereItem.getOperator()); case COLUMN_PARTITION: return OPTIMIZED_PARTITION_OPERATORS.contains(whereItem.getOperator()); default: return false; } }
aggregateBuilders.put(item, item.getAggregateFunction().createAggregateBuilder());
assert selectItem.getAggregateFunction() == null; assert selectItem.getScalarFunction() == null;
assert selectItem.getAggregateFunction() == null; assert selectItem.getScalarFunction() == null;