@Override public Cursor<Record> fetchLazy(ResultSet rs, Field<?>... fields) { ExecuteContext ctx = new DefaultExecuteContext(configuration); ExecuteListener listener = new ExecuteListeners(ctx); ctx.resultSet(rs); return new CursorImpl<Record>(ctx, listener, fields, null, false, true); }
/** * [#5666] Handle the complexity of each dialect's understanding of * correctly calling {@link Statement#execute()}. */ static final SQLException executeStatementAndGetFirstResultSet(ExecuteContext ctx, int skipUpdateCounts) throws SQLException { PreparedStatement stmt = ctx.statement(); try { if (stmt.execute()) { ctx.resultSet(stmt.getResultSet()); } else { ctx.resultSet(null); ctx.rows(stmt.getUpdateCount()); } return null; } // [#3011] [#3054] [#6390] [#6413] Consume additional exceptions if there are any catch (SQLException e) { if (ctx.settings().getThrowExceptions() != THROW_NONE) { consumeExceptions(ctx.configuration(), ctx.statement(), e); throw e; } else { return e; } } }
/** * Safely close a statement */ static final void safeClose(ExecuteListener listener, ExecuteContext ctx, boolean keepStatement, boolean keepResultSet) { // [#2523] Set JDBC objects to null, to prevent repeated closing JDBCUtils.safeClose(ctx.resultSet()); ctx.resultSet(null); // [#385] Close statements only if not requested to keep open if (!keepStatement) { JDBCUtils.safeClose(ctx.statement()); ctx.statement(null); } // [#1868] [#2373] Terminate ExecuteListener lifecycle, if needed if (keepResultSet) listener.end(ctx); // [#1326] Clean up any potentially remaining temporary lobs DefaultExecuteContext.clean(); }
@Override public Cursor<Record> fetchLazy(ResultSet rs, Field<?>... fields) { ExecuteContext ctx = new DefaultExecuteContext(configuration()); ExecuteListener listener = ExecuteListeners.get(ctx); ctx.resultSet(rs); return new CursorImpl<Record>(ctx, listener, fields, null, false, true); }
ctx.resultSet(ctx.statement().getResultSet()); if (ctx.resultSet() != null) { Field<?>[] fields = getFields(ctx.resultSet().getMetaData()); cursor = new CursorImpl<R>(ctx, listener, fields, internIndexes(fields), keepStatement(), keepResultSet(), getRecordType()); boolean anyResults = false; while (ctx.resultSet() != null) { anyResults = true; Field<?>[] fields = new MetaDataFieldProvider(ctx.configuration(), ctx.resultSet().getMetaData()).getFields(); Cursor<Record> c = new CursorImpl<Record>(ctx, listener, fields, internIndexes(fields), true, false); results.add(c.fetch()); ctx.resultSet(ctx.statement().getResultSet()); ctx.resultSet(null);
@SuppressWarnings("unchecked") private static final <T> T getFromResultSet(ExecuteContext ctx, Class<T> type, int index) throws SQLException { ResultSet rs = ctx.resultSet();
boolean anyResults = false; int i = 0; int rows = (ctx.resultSet() == null) ? ctx.rows() : 0; if (ctx.resultSet() != null) { anyResults = true; Field<?>[] fields = new MetaDataFieldProvider(ctx.configuration(), ctx.resultSet().getMetaData()).getFields(); Cursor<Record> c = new CursorImpl<Record>(ctx, listener, fields, intern != null ? intern.internIndexes(fields) : null, true, false); results.resultsOrRows().add(new ResultOrRowsImpl(c.fetch())); ctx.resultSet(ctx.statement().getResultSet()); ctx.resultSet(null); else break;
if (ctx.resultSet() == null) { DSLContext dsl = DSL.using(ctx.configuration()); Field<Integer> c = field(name("UPDATE_COUNT"), int.class); Result<Record1<Integer>> r = dsl.newResult(c); r.add(dsl.newRecord(c).values(ctx.rows())); ctx.resultSet(new MockResultSet(r)); Field<?>[] fields = getFields(ctx.resultSet().getMetaData()); cursor = new CursorImpl<R>(ctx, listener, fields, intern.internIndexes(fields), keepStatement(), keepResultSet(), getRecordType(), SettingsTools.getMaxRows(maxRows, ctx.settings()));
ExecuteListener listener2 = new ExecuteListeners(ctx2); ctx2.resultSet(rs); returned = new CursorImpl<R>(ctx2, listener2, fieldArray(returning), null, false, true).fetch().into(getInto()); return result;
ExecuteListener listener2 = ExecuteListeners.get(ctx2); ctx2.resultSet(rs); returnedResult = new CursorImpl<Record>(ctx2, listener2, returningResolvedAsterisks.toArray(EMPTY_FIELD), null, false, true).fetch();