/*
 * Copyright (c) 2016, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql.replication;

import org.postgresql.PGProperty;
import org.postgresql.replication.fluent.ChainedCreateReplicationSlotBuilder;
import org.postgresql.replication.fluent.ChainedStreamBuilder;

import java.sql.SQLException;

Api available only if connection was create with required for replication properties: PGProperty.REPLICATION and PGProperty.ASSUME_MIN_SERVER_VERSION. Without it property building replication stream fail with exception.
/** * Api available only if connection was create with required for replication properties: {@link * PGProperty#REPLICATION} and {@link PGProperty#ASSUME_MIN_SERVER_VERSION}. Without it property * building replication stream fail with exception. */
public interface PGReplicationConnection {
After start replication stream this connection not available to use for another queries until replication stream will not close.
Returns:not null fluent api for build replication stream
/** * After start replication stream this connection not available to use for another queries until * replication stream will not close. * * @return not null fluent api for build replication stream */
ChainedStreamBuilder replicationStream();

Create replication slot, that can be next use in replicationStream()

Replication slots provide an automated way to ensure that the master does not remove WAL segments until they have been received by all standbys, and that the master does not remove rows which could cause a recovery conflict even when the standby is disconnected.

Returns:not null fluent api for build create replication slot
/** * <p>Create replication slot, that can be next use in {@link PGReplicationConnection#replicationStream()}</p> * * <p>Replication slots provide an automated way to ensure that the master does not remove WAL * segments until they have been received by all standbys, and that the master does not remove * rows which could cause a recovery conflict even when the standby is disconnected.</p> * * @return not null fluent api for build create replication slot */
ChainedCreateReplicationSlotBuilder createReplicationSlot();
Params:
  • slotName – not null replication slot name exists in database that should be drop
Throws:
/** * @param slotName not null replication slot name exists in database that should be drop * @throws SQLException if the replication slot cannot be dropped. */
void dropReplicationSlot(String slotName) throws SQLException; }