@Override public List<String> inTransaction(Handle handle, TransactionStatus status) { return handle.createQuery(reverseFetchQuery) .bind("val", value) .map(StringMapper.FIRST) .list(); } });
/** * This creates a vanilla DBI instance based on the specified data source; * this can be overridden if required * * @param dataSource * @return */ protected DBI newInstance(final ManagedDataSource dataSource) { return new DBI(dataSource); }
@Override public Void withHandle(Handle handle) { handle.createStatement(statement) .bind("id", segmentId) .bind("dataSource", dataSource) .bind("created_date", createdDate) .bind("start", start) .bind("end", end) .bind("partitioned", partitioned) .bind("version", version) .bind("used", used) .bind("payload", payload) .execute(); return null; } }
@Override public boolean tableExists(Handle handle, String tableName) { return !handle.createQuery("select * from SYS.SYSTABLES where tablename = :tableName") .bind("tableName", StringUtils.toUpperCase(tableName)) .list() .isEmpty(); }
@Override public Iterable<Map.Entry<String, String>> fetchAll() { return inReadOnlyTransaction((handle, status) -> { return handle.createQuery(fetchAllQuery) .setFetchSize(streamingFetchSize) .map(new KeyValueResultSetMapper(keyColumn, valueColumn)) .list(); }); }
@Override public Timestamp withHandle(Handle handle) { final String query = StringUtils.format( "SELECT MAX(%s) FROM %s", tsColumn, table ); return handle .createQuery(query) .map(TimestampMapper.FIRST) .first(); } }
@Override public List<String> withHandle(Handle handle) { return handle.createQuery("SELECT id FROM " + table + " WHERE used = true ORDER BY id") .map(StringMapper.FIRST) .list(); } }
private boolean removeSegmentFromTable(String segmentId) { final int removed = connector.getDBI().withHandle( handle -> handle .createStatement(StringUtils.format("UPDATE %s SET used=false WHERE id = :segmentID", getSegmentsTable())) .bind("segmentID", segmentId) .execute() ); return removed > 0; }
@Override public Void withHandle(Handle handle) { handle.createStatement(StringUtils.format("DROP TABLE %s", tableName)) .execute(); return null; } }
@Override public void doAudit(final AuditEntry auditEntry) { dbi.withHandle( new HandleCallback<Void>() { @Override public Void withHandle(Handle handle) throws Exception { doAudit(auditEntry, handle); return null; } } ); }
@Override public List<String> inTransaction(Handle handle, TransactionStatus status) { return handle.createQuery(fetchQuery) .bind("val", key) .map(StringMapper.FIRST) .list(); } }
@Override public List<Map<String, Object>> withHandle(Handle handle) { return handle.createQuery( StringUtils.format("SELECT id FROM %s WHERE id=:id", config.getSegmentsTable()) ) .bind("id", segmentId) .list(); } }
private int removeLock(Handle handle, long lockId) { return handle.createStatement(StringUtils.format("DELETE FROM %s WHERE id = :id", lockTable)) .bind("id", lockId) .execute(); }
@Override public Void withHandle(Handle handle) { handle.createStatement(StringUtils.format("DROP TABLE %s", tableName)) .execute(); return null; } }
@Override public boolean tableExists(final Handle handle, final String tableName) { return !handle.createQuery("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = :tableName") .bind("tableName", tableName) .map(StringMapper.FIRST) .list() .isEmpty(); }
@Override public Void withHandle(Handle handle) { handle.createStatement(StringUtils.format("UPDATE %s SET used=true WHERE id = :id", getSegmentsTable())) .bind("id", segmentId) .execute(); return null; } }
@Override public Void withHandle(Handle handle) { handle.createStatement(StringUtils.format("DROP TABLE %s", tableName)) .execute(); return null; } }
@Override public boolean tableExists(final Handle handle, final String tableName) { return !handle.createQuery( "SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public' AND tablename ILIKE :tableName" ) .bind("tableName", tableName) .map(StringMapper.FIRST) .list() .isEmpty(); }
private boolean addLock(Handle handle, String entryId, LockType lock) throws JsonProcessingException { final String statement = StringUtils.format( "INSERT INTO %1$s (%2$s_id, lock_payload) VALUES (:entryId, :payload)", lockTable, entryTypeName ); return handle.createStatement(statement) .bind("entryId", entryId) .bind("payload", jsonMapper.writeValueAsBytes(lock)) .execute() == 1; }
@Override public Void withHandle(Handle handle) { handle.createStatement(StringUtils.format("DROP TABLE %s", tableName)) .execute(); return null; } }