/** * Determines if a particular {@link FilterItem} will have it's parameter (operand) replaced during SQL generation. * Such filter items should succesively have their parameters set at execution time. * * @param whereItem * @return */ public static boolean isPreparedParameterCandidate(FilterItem whereItem) { return !whereItem.isCompoundFilter() && !OperatorType.IN.equals(whereItem.getOperator()) && whereItem.getOperand() != null; }
/** * Determines if a particular {@link FilterItem} will have it's parameter (operand) replaced during SQL generation. * Such filter items should succesively have their parameters set at execution time. * * @param whereItem * @return */ public static boolean isPreparedParameterCandidate(FilterItem whereItem) { return !whereItem.isCompoundFilter() && !OperatorType.IN.equals(whereItem.getOperator()) && whereItem.getOperand() != null; }
private void buildParameterFromFilterItem(List<QueryParameter> parameters, FilterItem item) { if (item.isCompoundFilter()) { FilterItem[] childItems = item.getChildItems(); for (FilterItem childItem : childItems) { buildParameterFromFilterItem(parameters, childItem); } } else { if (item.getOperand() instanceof QueryParameter) { parameters.add((QueryParameter) item.getOperand()); } } }
private void buildParameterFromFilterItem(List<QueryParameter> parameters, FilterItem item) { if (item.isCompoundFilter()) { FilterItem[] childItems = item.getChildItems(); for (FilterItem childItem : childItems) { buildParameterFromFilterItem(parameters, childItem); } } else { if (item.getOperand() instanceof QueryParameter) { parameters.add((QueryParameter) item.getOperand()); } } }
@Override public String rewriteFilterItem(FilterItem item) { if (!item.isCompoundFilter()) { final SelectItem selectItem = item.getSelectItem(); final Column column = selectItem.getColumn(); if (column != null) { if (column.getType() == ColumnType.TIMESTAMP) { // HSQLDB does not treat (TIMESTAMP 'yyyy-MM-dd hh:mm:ss') // tokens correctly String result = super.rewriteFilterItem(item); int indexOfTimestamp = result.lastIndexOf("TIMESTAMP"); if (indexOfTimestamp != -1) { result = result.substring(0, indexOfTimestamp) + result.substring(indexOfTimestamp + "TIMESTAMP".length()); } return result; } } } return super.rewriteFilterItem(item); }
@Override public String rewriteFilterItem(FilterItem item) { if (!item.isCompoundFilter()) { final SelectItem selectItem = item.getSelectItem(); final Column column = selectItem.getColumn(); if (column != null) { if (column.getType() == ColumnType.TIMESTAMP) { // HSQLDB does not treat (TIMESTAMP 'yyyy-MM-dd hh:mm:ss') // tokens correctly String result = super.rewriteFilterItem(item); int indexOfTimestamp = result.lastIndexOf("TIMESTAMP"); if (indexOfTimestamp != -1) { result = result.substring(0, indexOfTimestamp) + result.substring(indexOfTimestamp + "TIMESTAMP".length()); } return result; } } } return super.rewriteFilterItem(item); }
private List<Object> getRowKeys(final FilterItem whereItem) { final List<Object> rowKeys = new ArrayList<>(); if (whereItem.isCompoundFilter()) { final LogicalOperator logicalOperator = whereItem.getLogicalOperator(); if (logicalOperator != LogicalOperator.OR) {
private List<Object> getRowKeys(final FilterItem whereItem) { final List<Object> rowKeys = new ArrayList<>(); if (whereItem.isCompoundFilter()) { final LogicalOperator logicalOperator = whereItem.getLogicalOperator(); if (logicalOperator != LogicalOperator.OR) {
@Override public String rewriteFilterItem(FilterItem item) { if (item.isCompoundFilter()) { FilterItem[] childItems = item.getChildItems(); StringBuilder sb = new StringBuilder();
if (whereItem.isCompoundFilter()) { final LogicalOperator logicalOperator = whereItem.getLogicalOperator(); if (logicalOperator != LogicalOperator.OR) {
@Override public String rewriteFilterItem(FilterItem item) { if (item.isCompoundFilter()) { FilterItem[] childItems = item.getChildItems(); StringBuilder sb = new StringBuilder();
@Override public String rewriteFilterItem(FilterItem item) { if (item.isCompoundFilter()) { return super.rewriteFilterItem(item);
@Override public String rewriteFilterItem(FilterItem item) { if (item.isCompoundFilter()) { return super.rewriteFilterItem(item);
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; } }
private FilterItem copyFilterItem(FilterItem item, Object[] values, AtomicInteger parameterIndex) { if (item.isCompoundFilter()) { final FilterItem[] childItems = item.getChildItems(); final FilterItem[] newChildItems = new FilterItem[childItems.length]; for (int i = 0; i < childItems.length; i++) { final FilterItem childItem = childItems[i]; final FilterItem newChildItem = copyFilterItem(childItem, values, parameterIndex); newChildItems[i] = newChildItem; } final FilterItem newFilter = new FilterItem(item.getLogicalOperator(), newChildItems); return newFilter; } else { if (item.getOperand() instanceof QueryParameter) { final Object newOperand = values[parameterIndex.getAndIncrement()]; final FilterItem newFilter = new FilterItem(item.getSelectItem(), item.getOperator(), newOperand); return newFilter; } else { return item; } } }
private FilterItem copyFilterItem(FilterItem item, Object[] values, AtomicInteger parameterIndex) { if (item.isCompoundFilter()) { final FilterItem[] childItems = item.getChildItems(); final FilterItem[] newChildItems = new FilterItem[childItems.length]; for (int i = 0; i < childItems.length; i++) { final FilterItem childItem = childItems[i]; final FilterItem newChildItem = copyFilterItem(childItem, values, parameterIndex); newChildItems[i] = newChildItem; } final FilterItem newFilter = new FilterItem(item.getLogicalOperator(), newChildItems); return newFilter; } else { if (item.getOperand() instanceof QueryParameter) { final Object newOperand = values[parameterIndex.getAndIncrement()]; final FilterItem newFilter = new FilterItem(item.getSelectItem(), item.getOperator(), newOperand); return newFilter; } else { return item; } } }
if (item.isCompoundFilter()) {
private void convertToCursorObject(BasicDBObject query, FilterItem item) { if (item.isCompoundFilter()) {
private void convertToCursorObject(BasicDBObject query, FilterItem item) { if (item.isCompoundFilter()) {