@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 withHandle(Handle handle) throws Exception { return handle.createStatement( StringUtils.format( "UPDATE %s SET active = :active, status_payload = :status_payload WHERE id = :id AND active = TRUE", entryTable ) ) .bind("id", entryId) .bind("active", active) .bind("status_payload", jsonMapper.writeValueAsBytes(status)) .execute() == 1; } }
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) throws Exception { handle.createStatement( StringUtils.format( "INSERT INTO %s (spec_id, created_date, payload) VALUES (:spec_id, :created_date, :payload)", getSupervisorsTable() ) ) .bind("spec_id", id) .bind("created_date", DateTimes.nowUtc().toString()) .bind("payload", jsonMapper.writeValueAsBytes(spec)) .execute(); return null; } }
@Override public Boolean withHandle(Handle handle) throws Exception { return handle.createStatement( StringUtils.format( "INSERT INTO %1$s (%2$s_id, log_payload) VALUES (:entryId, :payload)", logTable, entryTypeName ) ) .bind("entryId", entryId) .bind("payload", jsonMapper.writeValueAsBytes(log)) .execute() == 1; } }
@Override public Boolean withHandle(Handle handle) { final int numRows = handle.createStatement( StringUtils.format( "UPDATE %s SET " + "commit_metadata_payload = :new_commit_metadata_payload, " + "commit_metadata_sha1 = :new_commit_metadata_sha1 " + "WHERE dataSource = :dataSource", dbTables.getDataSourceTable() ) ) .bind("dataSource", dataSource) .bind("new_commit_metadata_payload", newCommitMetadataBytes) .bind("new_commit_metadata_sha1", newCommitMetadataSha1) .execute(); return numRows == 1; } }
@Override public Void withHandle(Handle handle) { handle.createStatement(StringUtils.format( "MERGE INTO %1$s WITH (UPDLOCK, HOLDLOCK) as target" + " USING " + " (:key, :value) as source (%2$s, %3$s)" + " ON" + " (target.%2$s = source.%2$s)" + " WHEN MATCHED THEN UPDATE SET %3$s = :value" + " WHEN NOT MATCHED THEN INSERT (%2$s, %3$s) VALUES (:key, :value)", tableName, keyColumn, valueColumn)) .bind("key", key) .bind("value", value) .execute(); return null; } });
@Override public boolean insertDataSourceMetadata(String dataSource, DataSourceMetadata metadata) { return 1 == connector.getDBI().inTransaction( (handle, status) -> handle .createStatement( StringUtils.format( "INSERT INTO %s (dataSource, created_date, commit_metadata_payload, commit_metadata_sha1) VALUES" + " (:dataSource, :created_date, :commit_metadata_payload, :commit_metadata_sha1)", dbTables.getDataSourceTable() ) ) .bind("dataSource", dataSource) .bind("created_date", DateTimes.nowUtc().toString()) .bind("commit_metadata_payload", jsonMapper.writeValueAsBytes(metadata)) .bind("commit_metadata_sha1", BaseEncoding.base16().encode( Hashing.sha1().hashBytes(jsonMapper.writeValueAsBytes(metadata)).asBytes())) .execute() ); } }
@Override public int deletePendingSegments(String dataSource, Interval deleteInterval) { return connector.getDBI().inTransaction( (handle, status) -> handle .createStatement( StringUtils.format( "delete from %s where datasource = :dataSource and created_date >= :start and created_date < :end", dbTables.getPendingSegmentsTable() ) ) .bind("dataSource", dataSource) .bind("start", deleteInterval.getStart().toString()) .bind("end", deleteInterval.getEnd().toString()) .execute() ); }
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("UPDATE %s SET used=true WHERE id = :id", getSegmentsTable())) .bind("id", segmentId) .execute(); return null; } }
private static void disableDataSourceWithHandle(Handle handle, MetadataStorageTablesConfig metadataStorageTablesConfig, String dataSource) { handle.createStatement(String.format("UPDATE %s SET used=false WHERE dataSource = :dataSource", metadataStorageTablesConfig.getSegmentsTable())).bind("dataSource", dataSource).execute(); }
private void updatePayload(final Handle handle, final DataSegment segment) throws IOException { try { handle .createStatement( StringUtils.format("UPDATE %s SET payload = :payload WHERE id = :id", dbTables.getSegmentsTable()) ) .bind("id", segment.getId().toString()) .bind("payload", jsonMapper.writeValueAsBytes(segment)) .execute(); } catch (IOException e) { log.error(e, "Exception inserting into DB"); throw e; } }
@Override public Boolean withHandle(Handle handle) { int rows = handle.createStatement( StringUtils.format("DELETE from %s WHERE dataSource = :dataSource", dbTables.getDataSourceTable()) ) .bind("dataSource", dataSource) .execute(); return rows > 0; } }
@Override public void removeTasksOlderThan(final long timestamp) { DateTime dateTime = DateTimes.utc(timestamp); connector.retryWithHandle( (HandleCallback<Void>) handle -> { handle.createStatement(getSqlRemoveLogsOlderThan()) .bind("date_time", dateTime.toString()) .execute(); handle.createStatement( StringUtils.format( "DELETE FROM %s WHERE created_date < :date_time AND active = false", entryTable ) ) .bind("date_time", dateTime.toString()) .execute(); return null; } ); }
private void deleteSegment(final Handle handle, final DataSegment segment) { handle.createStatement(StringUtils.format("DELETE from %s WHERE id = :id", dbTables.getSegmentsTable())) .bind("id", segment.getId().toString()) .execute(); }
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 boolean removeDataSource(final String dataSource) { try { final int removed = connector.getDBI().withHandle( handle -> handle.createStatement( StringUtils.format("UPDATE %s SET used=false WHERE dataSource = :dataSource", getSegmentsTable()) ).bind("dataSource", dataSource).execute() ); dataSources.remove(dataSource); if (removed == 0) { return false; } } catch (Exception e) { log.error(e, "Error removing datasource %s", dataSource); return false; } return true; }
@Override public Integer withHandle(Handle handle) { String request = StringUtils.format( "UPDATE %s SET used = false WHERE id = :id", derbyConnectorRule.metadataTablesConfigSupplier().get().getSegmentsTable() ); return handle.createStatement(request).bind("id", segment.getId().toString()).execute(); } }