public Row getTemplateRow() { return new Row(new Value[columns.length], memoryPerRow); }
public boolean next() throws SQLException { if (beforeFirst) { beforeFirst = false; current = min; } else { current++; } currentRow = new Row(new Value[]{ValueLong.get(current)}, 0); return current <= max; }
public Row getNullRow() { synchronized (this) { if (nullRow == null) { nullRow = new Row(new Value[columns.length], 0); for (int i = 0; i < columns.length; i++) { nullRow.setValue(i, ValueNull.INSTANCE); } } return nullRow; } }
public boolean next() throws SQLException { if (result.next()) { row = new Row(result.currentRow(), 0); } else { row = null; } return row != null; }
public Record read(Session session, DataPage s) throws SQLException { int len = s.readInt(); Value[] data = new Value[len]; for (int i = 0; i < len; i++) { data[i] = s.readValue(); } Row row = new Row(data, memoryPerRow); return row; }
private Row convertToRow(Value[] values) { ValueArray data = ValueArray.get(values); return new Row(new Value[]{data}, data.getMemory()); }
private void add(ObjectArray rows, String[] strings) throws SQLException { Value[] values = new Value[strings.length]; for (int i = 0; i < strings.length; i++) { String s = strings[i]; Value v = (s == null) ? (Value) ValueNull.INSTANCE : ValueString.get(s); Column col = columns[i]; v = v.convertTo(col.getType()); values[i] = v; } Row row = new Row(values, 0); row.setPos(rows.size()); rows.add(row); }
@Override public Cursor find(Session session, SearchRow first, SearchRow last) { if (!isScanIndex) { Row remakefirst = new Row(null, 0); if(first != null) { remakefirst.setKey(first.getValue(0).getLong()); } else { remakefirst.setKey(1); } Row remakeLast = new Row(null, 0); if(last != null) { remakeLast.setKey(last.getValue(0).getLong()); } else { remakeLast.setKey(getRowCount(session)); } first = remakefirst; last = remakeLast; } return new SHPCursor(this, first, last, session); }
@Override public SearchRow getSearchRow() { Row row = new Row(new Value[tIndex.getTable().getColumns().length], Row.MEMORY_CALCULATE); row.setKey(rowIndex); // Add indexed columns values for(IndexColumn column : tIndex.getIndexColumns()) { if(column.column.getColumnId() >= 0) { row.setValue(column.column.getColumnId(), ValueLong.get(rowIndex)); } } return row; }
@Override public Row getRow(Session session, long key) { try { Object[] driverRow = driver.getRow(key - 1); Value[] values = new Value[driverRow.length + 1]; Column[] columns = table.getColumns(); values[0] = ValueLong.get(key); for(int idField=1;idField<=driverRow.length;idField++) { // TODO in H2, switch on type parameter instead of if elseif values[idField] = DataType.convertToValue(session, driverRow[idField - 1], columns[idField - 1].getType()); } Row row = new Row(values, Row.MEMORY_CALCULATE); row.setKey(key); return row; } catch (IOException ex) { throw DbException.get(ErrorCode.IO_EXCEPTION_1,ex); } }
Row free = new Row(null, 0); free.setPos(firstFree); int key = row.getPos();
public void load(DataPage buff, FileStore file, Session session) throws SQLException { int min = Constants.FILE_BLOCK_SIZE; seek(file); buff.reset(); file.readFully(buff.getBytes(), 0, min); int len = buff.readInt() * Constants.FILE_BLOCK_SIZE; buff.checkCapacity(len); if (len - min > 0) { file.readFully(buff.getBytes(), min, len - min); } buff.check(len); int op = buff.readInt(); if (SysProperties.CHECK) { if (operation != op) { throw Message.getInternalError("operation=" + operation + " op=" + op); } } int columnCount = buff.readInt(); Value[] values = new Value[columnCount]; for (int i = 0; i < columnCount; i++) { values[i] = buff.readValue(); } row = new Row(values, 0); state = IN_MEMORY_READ_POS; }
Row row = new Row(values, memory); row.setPos(pos); row.setVersion(version);