/** * @param val Value. * @throws IgniteCheckedException If failed. */ public GridH2Array(Value val) throws IgniteCheckedException { assert val.getType() == Value.ARRAY : val.getType(); ValueArray arr = (ValueArray)val; x = new ArrayList<>(arr.getList().length); for (Value v : arr.getList()) x.add(toMessage(v)); }
@Override public int compare(Object a, Object b) { if (a == b) { return 0; } if (a instanceof ValueArray && b instanceof ValueArray) { Value[] ax = ((ValueArray) a).getList(); Value[] bx = ((ValueArray) b).getList(); int al = ax.length; int bl = bx.length; int len = Math.min(al, bl); for (int i = 0; i < len; i++) { int sortType = sortTypes == null ? SortOrder.ASCENDING : sortTypes[i]; int comp = compareValues(ax[i], bx[i], sortType); if (comp != 0) { return comp; } } if (len < al) { return -1; } else if (len < bl) { return 1; } return 0; } return compareValues((Value) a, (Value) b, SortOrder.ASCENDING); }
@Override public Row get() { if (row == null) { if (current != null) { ValueArray array = (ValueArray) current.getValue(); row = session.createRow(array.getList(), 0); row.setKey(current.getKey().getLong()); } } return row; }
@Override public int size() { if (!parameter.isValueSet()) { return 0; } Value value = parameter.getParamValue(); if (value instanceof ValueArray) { return ((ValueArray) value).getList().length; } return 1; } }
@Override public Expression get(int index) { Value value = parameter.getParamValue(); if (value instanceof ValueArray) { return ValueExpression.get(((ValueArray) value).getList()[index]); } if (index != 0) { throw new IndexOutOfBoundsException(); } return ValueExpression.get(value); }
@Override public Cursor findFirstOrLast(Session session, boolean first) { TransactionMap<Value, Value> map = getMap(session); Value key = first ? map.firstKey() : map.lastKey(); while (true) { if (key == null) { return new MVStoreCursor(session, Collections.<Value>emptyList().iterator(), null); } if (((ValueArray) key).getList()[0] != ValueNull.INSTANCE) { break; } key = first ? map.higherKey(key) : map.lowerKey(key); } ArrayList<Value> list = New.arrayList(); list.add(key); MVStoreCursor cursor = new MVStoreCursor(session, list.iterator(), null); cursor.next(); return cursor; }
} else { op = UndoLogRecord.DELETE; row = createRow(value.getList(), Row.MEMORY_CALCULATE);
@Override public Row getRow(Session session, long key) { TransactionMap<Value, Value> map = getMap(session); Value v = map.get(ValueLong.get(key)); if (v == null) { throw DbException.get(ErrorCode.ROW_NOT_FOUND_IN_PRIMARY_INDEX, getSQL() + ": " + key); } ValueArray array = (ValueArray) v; Row row = session.createRow(array.getList(), 0); row.setKey(key); return row; }
/** * Convert array of values to a SearchRow. * * @param key the index key * @return the row */ SearchRow convertToSearchRow(ValueArray key) { Value[] array = key.getList(); SearchRow searchRow = mvTable.getTemplateRow(); searchRow.setKey((array[array.length - 1]).getLong()); Column[] cols = getColumns(); for (int i = 0; i < array.length - 1; i++) { Column c = cols[i]; int idx = c.getColumnId(); Value v = array[i]; searchRow.setValue(idx, v); } return searchRow; }
Value[] array = rowData.getList();
/** * Check if this result set contains the given row. * * @param values the row * @return true if the row exists */ @Override public boolean containsDistinct(Value[] values) { if (external != null) { return external.contains(values); } if (distinctRows == null) { distinctRows = ValueHashMap.newInstance(); for (Value[] row : rows) { ValueArray array = getArrayOfVisible(row); distinctRows.put(array, array.getList()); } } ValueArray array = ValueArray.get(values); return distinctRows.get(array) != null; }
/** * Extracts expression columns from ValueArray * * @param session the current session * @param value the value to extract columns from * @return array of expression columns */ static Expression[] getExpressionColumns(Session session, ValueArray value) { Value[] list = value.getList(); ExpressionColumn[] expr = new ExpressionColumn[list.length]; for (int i = 0, len = list.length; i < len; i++) { Value v = list[i]; Column col = new Column("C" + (i + 1), v.getType(), v.getPrecision(), v.getScale(), v.getDisplaySize()); expr[i] = new ExpressionColumn(session.getDatabase(), col); } return expr; }
ValueArray key = (ValueArray) v; currentGroup = groups.get(key); Value[] keyValues = key.getList(); Value[] row = new Value[columnCount]; for (int j = 0; groupIndex != null && j < groupIndex.length; j++) {
Value value = parameter.getValue(session); if (value instanceof ValueArray) { for (Value r : ((ValueArray) value).getList()) { if (r == ValueNull.INSTANCE) { hasNull = true;
unique.getList()[keyColumns - 1] = ValueLong.MIN; if (mayHaveNullDuplicates(row)) {
} else { ValueArray array = (ValueArray) v.convertTo(Value.ARRAY); Value[] l = array.getList(); list[i] = l; rows = Math.max(rows, l.length);