org.herodbsql.replication.ReplicationSlotInfo Maven / Gradle / Ivy
/*
 * Copyright (c) 2018, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */
package org.herodbsql.replication;
import org.checkerframework.checker.nullness.qual.Nullable;
/**
 * Information returned on replication slot creation.
 *
 * Returned keys of CREATE_REPLICATION_SLOT:
 * 
 * - slot_name String {@code =>} the slot name
 * 
 - consistent_point String {@code =>} LSN at which we became consistent
 * 
 - snapshot_name String {@code =>} exported snapshot's name (may be 
null)
 *  - output_plugin String {@code =>} output plugin (may be 
null)
 *  
 *
 * @see CREATE_REPLICATION_SLOT documentation
 */
public final class ReplicationSlotInfo {
  private final String slotName;
  private final ReplicationType replicationType;
  private final LogSequenceNumber consistentPoint;
  private final @Nullable String snapshotName;
  private final @Nullable String outputPlugin;
  public ReplicationSlotInfo(String slotName, ReplicationType replicationType,
      LogSequenceNumber consistentPoint, @Nullable String snapshotName,
      @Nullable String outputPlugin) {
    this.slotName = slotName;
    this.replicationType = replicationType;
    this.consistentPoint = consistentPoint;
    this.snapshotName = snapshotName;
    this.outputPlugin = outputPlugin;
  }
  /**
   * Replication slot name.
   *
   * @return the slot name
   */
  public String getSlotName() {
    return slotName;
  }
  /**
   * Replication type of the slot created, might be PHYSICAL or LOGICAL.
   *
   * @return ReplicationType, PHYSICAL or LOGICAL
   */
  public ReplicationType getReplicationType() {
    return replicationType;
  }
  /**
   * LSN at which we became consistent.
   *
   * @return LogSequenceNumber with the consistent_point
   */
  public LogSequenceNumber getConsistentPoint() {
    return consistentPoint;
  }
  /**
   * Exported snapshot name at the point of replication slot creation.
   *
   * As long as the exporting transaction remains open, other transactions can import its snapshot,
   * and thereby be guaranteed that they see exactly the same view of the database that the first
   * transaction sees.
   *
   * @return exported snapshot_name (may be null)
   */
  public @Nullable String getSnapshotName() {
    return snapshotName;
  }
  /**
   * Output Plugin used on slot creation.
   *
   * @return output_plugin (may be null)
   */
  public @Nullable String getOutputPlugin() {
    return outputPlugin;
  }
}
    © 2015 - 2025 Weber Informatics LLC | Privacy Policy