com.amazon.redshift.replication.fluent.physical.PhysicalCreateSlotBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of redshift-jdbc42 Show documentation
Show all versions of redshift-jdbc42 Show documentation
Java JDBC 4.2 (JRE 8+) driver for Redshift database
The newest version!
/*
* Copyright (c) 2016, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
*/
package com.amazon.redshift.replication.fluent.physical;
import com.amazon.redshift.core.BaseConnection;
import com.amazon.redshift.replication.LogSequenceNumber;
import com.amazon.redshift.replication.ReplicationSlotInfo;
import com.amazon.redshift.replication.ReplicationType;
import com.amazon.redshift.replication.fluent.AbstractCreateSlotBuilder;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class PhysicalCreateSlotBuilder
extends AbstractCreateSlotBuilder
implements ChainedPhysicalCreateSlotBuilder {
public PhysicalCreateSlotBuilder(BaseConnection connection) {
super(connection);
}
@Override
protected ChainedPhysicalCreateSlotBuilder self() {
return this;
}
@Override
public ReplicationSlotInfo make() throws SQLException {
if (slotName == null || slotName.isEmpty()) {
throw new IllegalArgumentException("Replication slotName can't be null");
}
Statement statement = connection.createStatement();
ResultSet result = null;
ReplicationSlotInfo slotInfo = null;
try {
statement.execute(String.format(
"CREATE_REPLICATION_SLOT %s %s PHYSICAL",
slotName,
temporaryOption ? "TEMPORARY" : ""
));
result = statement.getResultSet();
if (result != null && result.next()) {
slotInfo = new ReplicationSlotInfo(
result.getString("slot_name"),
ReplicationType.PHYSICAL,
LogSequenceNumber.valueOf(result.getString("consistent_point")),
result.getString("snapshot_name"),
result.getString("output_plugin"));
}
} finally {
if (result != null) {
result.close();
}
statement.close();
}
return slotInfo;
}
}