private void convertCurrentRow(ITuple tuple) { // give calcite a new array every time, see details in KYLIN-2134 Object[] values = tuple.getAllValues(); current = Arrays.copyOf(values, values.length); }
private Object[] convertCurrentRow(ITuple tuple) { // build field index map if (this.fieldIndexes == null) { List<String> fields = tuple.getAllFields(); int size = fields.size(); this.fieldIndexes = new int[size]; for (int i = 0; i < size; i++) { String field = fields.get(i); RelDataTypeField relField = olapContext.olapRowType.getField(field, true); if (relField != null) { fieldIndexes[i] = relField.getIndex(); } else { fieldIndexes[i] = -1; } } } // set field value Object[] values = tuple.getAllValues(); for (int i = 0, n = values.length; i < n; i++) { Object value = values[i]; int index = fieldIndexes[i]; if (index >= 0) { current[index] = value; } } return current; }
@Override public int compare(ITuple o1, ITuple o2) { Preconditions.checkNotNull(o1); Preconditions.checkNotNull(o2); for (int i = 0; i < dimensionIndexOnTuple.length; i++) { int index = dimensionIndexOnTuple[i]; if (index == -1) { //TODO: continue; } Comparable a = (Comparable) o1.getAllValues()[index]; Comparable b = (Comparable) o2.getAllValues()[index]; if (a == null && b == null) { continue; } else if (a == null) { return 1; } else if (b == null) { return -1; } else { int temp = a.compareTo(b); if (temp != 0) { return temp; } else { continue; } } } return 0; } };
@Override public boolean evaluate(ITuple tuple) { this.tupleValue = tuple.getValue(columnRef); return true; }
private void convertCurrentRow(ITuple tuple) { // give calcite a new array every time, see details in KYLIN-2134 Object[] values = tuple.getAllValues(); current = Arrays.copyOf(values, values.length); }
@Override public boolean evaluate(ITuple tuple) { this.tupleValue = tuple.getValue(columnRef); return true; }
@Override public int compare(ITuple o1, ITuple o2) { Preconditions.checkNotNull(o1); Preconditions.checkNotNull(o2); for (int i = 0; i < dimensionIndexOnTuple.length; i++) { int index = dimensionIndexOnTuple[i]; if (index == -1) { //TODO: continue; } Comparable a = (Comparable) o1.getAllValues()[index]; Comparable b = (Comparable) o2.getAllValues()[index]; if (a == null && b == null) { continue; } else if (a == null) { return 1; } else if (b == null) { return -1; } else { int temp = a.compareTo(b); if (temp != 0) { return temp; } else { continue; } } } return 0; } };