/** * Set the current row number. * * @param rowNumber the row number */ public void setCurrentRowNumber(int rowNumber) { if ((++rowScanCount & 127) == 0) { checkCanceled(); } this.currentRowNumber = rowNumber; }
@Override public int update() { recompileIfRequired(); start(); session.setLastScopeIdentity(ValueNull.INSTANCE); prepared.checkParameters(); int updateCount = prepared.update(); prepared.trace(startTime, updateCount); return updateCount; }
@Override public Value getValue(Session session) { return ValueInt.get(prepared.getCurrentRowNumber()); }
private void recompileIfRequired() { if (prepared.needRecompile()) { // TODO test with 'always recompile' String sql = prepared.getSQL(); ArrayList<Parameter> oldParams = prepared.getParameters(); Parser parser = new Parser(session); prepared = parser.parse(sql); ArrayList<Parameter> newParams = prepared.getParameters(); for (int i = 0, size = newParams.size(); i < size; i++) { Parameter old = oldParams.get(i); if (old.isValueSet()) { Value v = old.getValue(session); Parameter p = newParams.get(i); p.setValue(v); } } prepared.prepare(); } }
@Override public ResultInterface query(int maxrows) { Column column = new Column("PLAN", Value.STRING); Database db = session.getDatabase(); ExpressionColumn expr = new ExpressionColumn(db, column); Expression[] expressions = {expr}; result = new LocalResult(session, expressions, 1); if (maxrows >= 0) { String plan; if (executeCommand) { if (command.isQuery()) { command.query(maxrows); } else { command.update(); } plan = command.explainPlan(); } else { plan = command.explainPlan(); } add(plan); } result.done(); return result; }
@Override public ResultInterface query(int maxrows) { recompileIfRequired(); start(); prepared.checkParameters(); ResultInterface result = prepared.query(maxrows); prepared.trace(startTime, result.getRowCount()); return result; }
newRow.setValue(index, v); } catch (DbException ex) { throw prepared.setRow(ex, x, Prepared.getSQL(expr));
@Override public ArrayList<? extends ParameterInterface> getParameters() { return prepared.getParameters(); }
@Override public boolean isReadOnly() { if (!readOnlyKnown) { readOnly = prepared.isReadOnly(); readOnlyKnown = true; } return readOnly; }
@Override public int getCommandType() { return prepared.getType(); }
@Override public boolean isCacheable() { return prepared.isCacheable(); }
@Override public boolean isQuery() { return prepared.isQuery(); }
newRow.setValue(index, v); } catch (DbException ex) { throw prepared.setRow(ex, x, Prepared.getSQL(expr));
private static Prepared prepare(Session s, String sql, ArrayList<Value> paramValues) { Prepared prep = s.prepare(sql); ArrayList<Parameter> params = prep.getParameters(); if (params != null) { for (int i = 0, size = params.size(); i < size; i++) { Parameter p = params.get(i); p.setValue(paramValues.get(i)); } } return prep; }
@Override public boolean isReadOnly() { return command.isReadOnly(); }
private Executor create(Prepared prepared) { int type = prepared.getType(); switch (type) {
@Override public void addRow(Value[] values) { TableMate table = toTableMate(prepared.getTable()); Row newRow = table.getTemplateRow(); Column[] columns = prepared.getColumns(); prepared.setCurrentRowNumber(++rowNumber); for (int j = 0, len = columns.length; j < len; j++) { Column c = columns[j]; int index = c.getColumnId(); try { Value v = c.convert(values[j]); newRow.setValue(index, v); } catch (DbException ex) { throw prepared.setRow(ex, rowNumber, Prepared.getSQL(values)); } } addNewRowFlushIfNeed(newRow); }
newRow.setValue(index, v); } catch (DbException ex) { throw prepared.setRow(ex, x, Prepared.getSQL(expr));
newRow.setValue(index, v); } catch (DbException ex) { throw prepared.setRow(ex, rowNumber, Prepared.getSQL(r));
newRow.setValue(index, v); } catch (DbException ex) { throw prepared.setRow(ex, rowNumber, Prepared.getSQL(r));