protected <T> T wrapPreparedStatement(Connection c, FinalSQLString query, Object[] vs, PreparedStatementVisitor<T> visitor, String description) throws PalantirSqlException, PalantirInterruptedException { return wrapPreparedStatement(c, query, vs, visitor, description, AutoClose.TRUE); }
protected PreparedStatement execute(final Connection c, final FinalSQLString sql, final Object vs[], final AutoClose autoClose) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL execution query: {}", sql.getQuery()); } return BasicSQLUtils.runUninterruptably (executeStatementExecutor, () -> { return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.execute(ps); return ps; }, "execute", autoClose); //$NON-NLS-1$ }, sql.toString(), c); }
protected boolean selectExistsInternal(final Connection c, final FinalSQLString sql, Object... vs) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL selectExistsInternal query: {}", sql.getQuery()); } return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.setMaxRows(ps, 1); return runCancellably(ps, rs -> ResultSets.next(rs), sql, null); }, "selectExists"); //$NON-NLS-1$ }
PreparedStatement updateInternal(final Connection c, final FinalSQLString sql, final Object vs[], final AutoClose autoClose) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL update interval query: {}", sql.getQuery()); } return BasicSQLUtils.runUninterruptably (executeStatementExecutor, () -> { return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.execute(ps); return ps; }, "update", autoClose); //$NON-NLS-1$ }, sql.toString(), c); }
protected int insertOneCountRowsInternal(final Connection c, final FinalSQLString sql, final Object... vs) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL insert one count rows internal query: {}", sql.getQuery()); } return BasicSQLUtils.runUninterruptably (executeStatementExecutor, () -> { return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.execute(ps); return PreparedStatements.getUpdateCount(ps); }, "insertOne"); //$NON-NLS-1$ }, sql.toString(), c); }
protected AgnosticResultSet selectResultSetSpecifyingDBType(final Connection c, final FinalSQLString sql, Object[] vs, final DBType dbType) throws PalantirSqlException, PalantirInterruptedException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL result set query: {}", sql.getQuery()); } return wrapPreparedStatement(c, sql, vs, ps -> runCancellably(ps, (ResultSetVisitor<AgnosticResultSet>) rs -> { List<List<Object>> rvs = new ArrayList<List<Object>>(); ResultSetMetaData meta = ResultSets.getMetaData(rs); int columnCount = ResultSets.getColumnCount(meta); Map<String, Integer> columnMap = ResultSets.buildInMemoryColumnMap(meta, dbType); while (ResultSets.next(rs)) { List<Object> row = Lists.newArrayListWithCapacity(columnCount); for (int i=0; i < columnCount; i++) { row.add(ResultSets.getObject(rs, i+1)); } rvs.add(row); } return new AgnosticResultSetImpl(rvs, dbType, columnMap); }, sql, null), "selectList"); //$NON-NLS-1$ }
protected int selectIntegerInternal(final Connection c, final FinalSQLString sql, Object... vs) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL selectIntegerInternal query: {}", sql.getQuery()); } return wrapPreparedStatement(c, sql, vs, ps -> runCancellably(ps, rs -> { if (ResultSets.next(rs)) { int ret = ResultSets.getInt(rs, 1); if (ResultSets.next(rs)) { SqlLoggers.LOGGER.error( "In selectIntegerInternal more than one row was returned for query: {}", sql); //$NON-NLS-1$ assert false : "Found more than one row in SQL#selectInteger"; //$NON-NLS-1$ } return ret; } // indicate failure throw PalantirSqlException.create("No rows returned."); //$NON-NLS-1$ }, sql, null), "selectInteger"); //$NON-NLS-1$ }
SqlLoggers.LOGGER.trace("SQL selectLongInternal query: {}", sql.getQuery()); return wrapPreparedStatement(c, sql, vs, ps -> runCancellably(ps, rs -> { if (ResultSets.next(rs)) { Long ret = null;
return wrapPreparedStatement( c, sql,
protected <T> T wrapPreparedStatement(Connection c, FinalSQLString query, Object[] vs, PreparedStatementVisitor<T> visitor, String description) throws PalantirSqlException, PalantirInterruptedException { return wrapPreparedStatement(c, query, vs, visitor, description, AutoClose.TRUE); }
protected PreparedStatement execute(final Connection c, final FinalSQLString sql, final Object vs[], final AutoClose autoClose) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL execution query: {}", sql.getQuery()); } return BasicSQLUtils.runUninterruptably (executeStatementExecutor, () -> { return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.execute(ps); return ps; }, "execute", autoClose); //$NON-NLS-1$ }, sql.toString(), c); }
protected boolean selectExistsInternal(final Connection c, final FinalSQLString sql, Object... vs) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL selectExistsInternal query: {}", sql.getQuery()); } return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.setMaxRows(ps, 1); return runCancellably(ps, rs -> ResultSets.next(rs), sql, null); }, "selectExists"); //$NON-NLS-1$ }
PreparedStatement updateInternal(final Connection c, final FinalSQLString sql, final Object vs[], final AutoClose autoClose) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL update interval query: {}", sql.getQuery()); } return BasicSQLUtils.runUninterruptably (executeStatementExecutor, () -> { return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.execute(ps); return ps; }, "update", autoClose); //$NON-NLS-1$ }, sql.toString(), c); }
protected int insertOneCountRowsInternal(final Connection c, final FinalSQLString sql, final Object... vs) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL insert one count rows internal query: {}", sql.getQuery()); } return BasicSQLUtils.runUninterruptably (executeStatementExecutor, () -> { return wrapPreparedStatement(c, sql, vs, ps -> { PreparedStatements.execute(ps); return PreparedStatements.getUpdateCount(ps); }, "insertOne"); //$NON-NLS-1$ }, sql.toString(), c); }
protected AgnosticResultSet selectResultSetSpecifyingDBType(final Connection c, final FinalSQLString sql, Object[] vs, final DBType dbType) throws PalantirSqlException, PalantirInterruptedException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL result set query: {}", sql.getQuery()); } return wrapPreparedStatement(c, sql, vs, ps -> runCancellably(ps, (ResultSetVisitor<AgnosticResultSet>) rs -> { List<List<Object>> rvs = new ArrayList<List<Object>>(); ResultSetMetaData meta = ResultSets.getMetaData(rs); int columnCount = ResultSets.getColumnCount(meta); Map<String, Integer> columnMap = ResultSets.buildInMemoryColumnMap(meta, dbType); while (ResultSets.next(rs)) { List<Object> row = Lists.newArrayListWithCapacity(columnCount); for (int i=0; i < columnCount; i++) { row.add(ResultSets.getObject(rs, i+1)); } rvs.add(row); } return new AgnosticResultSetImpl(rvs, dbType, columnMap); }, sql, null), "selectList"); //$NON-NLS-1$ }
protected int selectIntegerInternal(final Connection c, final FinalSQLString sql, Object... vs) throws PalantirSqlException { if (SqlLoggers.LOGGER.isTraceEnabled()) { SqlLoggers.LOGGER.trace("SQL selectIntegerInternal query: {}", sql.getQuery()); } return wrapPreparedStatement(c, sql, vs, ps -> runCancellably(ps, rs -> { if (ResultSets.next(rs)) { int ret = ResultSets.getInt(rs, 1); if (ResultSets.next(rs)) { SqlLoggers.LOGGER.error( "In selectIntegerInternal more than one row was returned for query: {}", sql); //$NON-NLS-1$ assert false : "Found more than one row in SQL#selectInteger"; //$NON-NLS-1$ } return ret; } // indicate failure throw PalantirSqlException.create("No rows returned."); //$NON-NLS-1$ }, sql, null), "selectInteger"); //$NON-NLS-1$ }
SqlLoggers.LOGGER.trace("SQL selectLongInternal query: {}", sql.getQuery()); return wrapPreparedStatement(c, sql, vs, ps -> runCancellably(ps, rs -> { if (ResultSets.next(rs)) { Long ret = null;
return wrapPreparedStatement( c, sql,