/** * Creates a copy of the {@link SelectItem}, with a different {@link FunctionType}. * * @param function * @return */ public SelectItem replaceFunction(FunctionType function) { return replaceFunction(function, new Object[0]); }
/** * Creates a copy of the {@link SelectItem}, with a different {@link FunctionType}. * * @param function * @return */ public SelectItem replaceFunction(FunctionType function) { return replaceFunction(function, new Object[0]); }
@Override public Object getValue(int index) throws IndexOutOfBoundsException { final List<SelectItem> scalarFunctionSelectItems = _scalarFunctionDataSet .getScalarFunctionSelectItemsToEvaluate(); final int scalarFunctionCount = scalarFunctionSelectItems.size(); if (index >= scalarFunctionCount) { return _row.getValue(index - scalarFunctionCount); } final SelectItem selectItem = scalarFunctionSelectItems.get(index); final SelectItem selectItemWithoutFunction = selectItem.replaceFunction(null); return selectItem.getScalarFunction().evaluate(_row, selectItem.getFunctionParameters(), selectItemWithoutFunction); }
public static DataSet getSelection(final List<SelectItem> selectItems, final DataSet dataSet) { final List<SelectItem> dataSetSelectItems = dataSet.getSelectItems(); // check if the selection is already the same if (selectItems.equals(dataSetSelectItems)) { // return the DataSet unmodified return dataSet; } final List<SelectItem> scalarFunctionSelectItemsToEvaluate = new ArrayList<>(); for (SelectItem selectItem : selectItems) { if (selectItem.getScalarFunction() != null) { if (!dataSetSelectItems.contains(selectItem) && dataSetSelectItems.contains(selectItem.replaceFunction(null))) { scalarFunctionSelectItemsToEvaluate.add(selectItem); } } } if (scalarFunctionSelectItemsToEvaluate.isEmpty()) { return new SubSelectionDataSet(selectItems, dataSet); } final ScalarFunctionDataSet scalaFunctionDataSet = new ScalarFunctionDataSet(scalarFunctionSelectItemsToEvaluate, dataSet); return new SubSelectionDataSet(selectItems, scalaFunctionDataSet); }
public static DataSet getSelection(final List<SelectItem> selectItems, final DataSet dataSet) { final List<SelectItem> dataSetSelectItems = dataSet.getSelectItems(); // check if the selection is already the same if (selectItems.equals(dataSetSelectItems)) { // return the DataSet unmodified return dataSet; } final List<SelectItem> scalarFunctionSelectItemsToEvaluate = new ArrayList<>(); for (SelectItem selectItem : selectItems) { if (selectItem.getScalarFunction() != null) { if (!dataSetSelectItems.contains(selectItem) && dataSetSelectItems.contains(selectItem.replaceFunction(null))) { scalarFunctionSelectItemsToEvaluate.add(selectItem); } } } if (scalarFunctionSelectItemsToEvaluate.isEmpty()) { return new SubSelectionDataSet(selectItems, dataSet); } final ScalarFunctionDataSet scalaFunctionDataSet = new ScalarFunctionDataSet(scalarFunctionSelectItemsToEvaluate, dataSet); return new SubSelectionDataSet(selectItems, scalaFunctionDataSet); }
protected String rewriteSelectClause(Query query, SelectClause selectClause) { StringBuilder sb = new StringBuilder(); if (selectClause.getItemCount() > 0) { sb.append(AbstractQueryClause.PREFIX_SELECT); if (selectClause.isDistinct()) { sb.append("DISTINCT "); } List<SelectItem> items = selectClause.getItems(); for (int i = 0; i < items.size(); i++) { SelectItem item = items.get(i); if (i != 0) { sb.append(AbstractQueryClause.DELIM_COMMA); } final ScalarFunction scalarFunction = item.getScalarFunction(); if (scalarFunction != null && !isScalarFunctionSupported(scalarFunction)) { // replace with a SelectItem without the function - the // function will be applied in post-processing. item = item.replaceFunction(null); } sb.append(rewriteSelectItem(query, item)); } } return sb.toString(); }
@Override public Object getValue(int index) throws IndexOutOfBoundsException { final List<SelectItem> scalarFunctionSelectItems = _scalarFunctionDataSet .getScalarFunctionSelectItemsToEvaluate(); final int scalarFunctionCount = scalarFunctionSelectItems.size(); if (index >= scalarFunctionCount) { return _row.getValue(index - scalarFunctionCount); } final SelectItem selectItem = scalarFunctionSelectItems.get(index); final SelectItem selectItemWithoutFunction = selectItem.replaceFunction(null); return selectItem.getScalarFunction().evaluate(_row, selectItem.getFunctionParameters(), selectItemWithoutFunction); }
protected String rewriteSelectClause(Query query, SelectClause selectClause) { StringBuilder sb = new StringBuilder(); if (selectClause.getItemCount() > 0) { sb.append(AbstractQueryClause.PREFIX_SELECT); if (selectClause.isDistinct()) { sb.append("DISTINCT "); } List<SelectItem> items = selectClause.getItems(); for (int i = 0; i < items.size(); i++) { SelectItem item = items.get(i); if (i != 0) { sb.append(AbstractQueryClause.DELIM_COMMA); } final ScalarFunction scalarFunction = item.getScalarFunction(); if (scalarFunction != null && !isScalarFunctionSupported(scalarFunction)) { // replace with a SelectItem without the function - the // function will be applied in post-processing. item = item.replaceFunction(null); } sb.append(rewriteSelectItem(query, item)); } } return sb.toString(); }
if (selectedFromItem != null) { if (selectedFromItem.equals(fromItem)) { selectItemsToMaterialize.add(selectItem.replaceFunction(null)); selectItemsToMaterialize.add(selectItem.replaceFunction(null));
if (selectedFromItem != null) { if (selectedFromItem.equals(fromItem)) { selectItemsToMaterialize.add(selectItem.replaceFunction(null)); selectItemsToMaterialize.add(selectItem.replaceFunction(null));