DBZ-3 Adds the structure for a Postgres connector which uses a Debezium Postgres docker image that has the decoderbufs plugin enabled to read WAL changes

This commit is contained in:
Horia Chiorean 2016-08-23 17:56:43 +03:00
parent 49e6231b69
commit 8e14f150db
9 changed files with 4184 additions and 2 deletions

View File

@ -0,0 +1,254 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>io.debezium</groupId>
<artifactId>debezium-parent</artifactId>
<version>0.4.0-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>debezium-connector-postgres</artifactId>
<name>Debezium Connector for PostgreSQL</name>
<packaging>jar</packaging>
<properties>
<version.com.google.protobuf>2.6.1</version.com.google.protobuf>
<!--
Specify the properties that will be used for setting up the integration tests' Docker container.
Note that the `dockerhost.ip` property is computed from the IP address of DOCKER_HOST, which will
work on all platforms. We'll set some of these as system properties during integration testing.
-->
<version.postgres.server>9.6</version.postgres.server>
<database.port>5432</database.port>
<database.user>postgres</database.user>
<database.password>postgres</database.password>
<database.name>postgres</database.name>
<docker.image>debezium/postgres:${version.postgres.server}</docker.image>
<docker.skip>false</docker.skip>
<docker.showLogs>true</docker.showLogs>
</properties>
<dependencies>
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-core</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1209.jre7</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${version.com.google.protobuf}</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>connect-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<!-- Testing -->
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-embedded</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-core</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.debezium</groupId>
<artifactId>debezium-embedded</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.easytesting</groupId>
<artifactId>fest-assert</artifactId>
</dependency>
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-connect-avro-converter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.0.0.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>${version.com.google.protobuf}</protocVersion> <!-- 2.4.1, 2.5.0, 2.6.1, 3.0.0 -->
<outputDirectory>${project.build.sourceDirectory}</outputDirectory>
<inputDirectories>
<include>src/main/proto</include>
</inputDirectories>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<watchInterval>500</watchInterval>
<logDate>default</logDate>
<verbose>true</verbose>
<autoPull>off</autoPull>
<images>
<image>
<!-- A Docker image using a partial MySQL installation maintained by MySQL team. -->
<name>debezium/postgres:${version.postgres.server}</name>
<alias>database</alias>
<run>
<namingStrategy>alias</namingStrategy>
<env>
<POSTGRES_USER>${database.user}</POSTGRES_USER>
<POSTGRES_PASSWORD>${database.password}</POSTGRES_PASSWORD>
<POSTGRES_DB>${database.name}</POSTGRES_DB>
</env>
<ports>
<port>${database.port}:5432</port>
</ports>
<log>
<prefix>postgres</prefix>
<enabled>true</enabled>
<color>yellow</color>
</log>
<wait>
<log>ready to accept connections</log>
<time>30000</time> <!-- 30 seconds max -->
</wait>
</run>
</image>
</images>
</configuration>
<!--
Connect this plugin to the maven lifecycle around the integration-test phase:
start the container in pre-integration-test and stop it in post-integration-test.
-->
<executions>
<execution>
<id>start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
<!--
Unlike surefire, the failsafe plugin ensures 'post-integration-test' phase always runs, even
when there are failed integration tests. We rely upon this to always shut down the Docker container
after the integration tests (defined as '*IT.java') are run.
-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<skipTests>${skipITs}</skipTests>
<enableAssertions>true</enableAssertions>
<systemPropertyVariables>
<!-- Make these available to the tests via system properties -->
<database.hostname>${docker.host.address}</database.hostname>
<database.port>${database.port}</database.port>
<database.user>${database.user}</database.user>
<database.password>${database.password}</database.password>
<database.dbname>${database.name}</database.dbname>
<skipLongRunningTests>${skipLongRunningTests}</skipLongRunningTests>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
<resources>
<!-- Apply the properties set in the POM to the resource files -->
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<includes>
<include>*</include>
<include>**/*</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
<includes>
<include>*</include>
<include>**/*</include>
</includes>
</testResource>
</testResources>
</build>
<!--
Define several useful profiles
-->
<profiles>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Do not perform any Docker-related functionality
To use, specify "-DskipITs" on the Maven command line.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<profile>
<id>skip-integration-tests</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>skipITs</name>
</property>
</activation>
<properties>
<docker.skip>true</docker.skip>
</properties>
</profile>
</profiles>
</project>

View File

@ -0,0 +1,3640 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: pg_logicaldec.proto
package io.debezium.connector.postgresql.proto;
public final class PgProto {
private PgProto() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
}
/**
* Protobuf enum {@code decoderbufs.Op}
*/
public enum Op
implements com.google.protobuf.ProtocolMessageEnum {
/**
* <code>INSERT = 0;</code>
*/
INSERT(0, 0),
/**
* <code>UPDATE = 1;</code>
*/
UPDATE(1, 1),
/**
* <code>DELETE = 2;</code>
*/
DELETE(2, 2),
;
/**
* <code>INSERT = 0;</code>
*/
public static final int INSERT_VALUE = 0;
/**
* <code>UPDATE = 1;</code>
*/
public static final int UPDATE_VALUE = 1;
/**
* <code>DELETE = 2;</code>
*/
public static final int DELETE_VALUE = 2;
public final int getNumber() { return value; }
public static Op valueOf(int value) {
switch (value) {
case 0: return INSERT;
case 1: return UPDATE;
case 2: return DELETE;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap<Op>
internalGetValueMap() {
return internalValueMap;
}
private static com.google.protobuf.Internal.EnumLiteMap<Op>
internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap<Op>() {
public Op findValueByNumber(int number) {
return Op.valueOf(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(index);
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.getDescriptor().getEnumTypes().get(0);
}
private static final Op[] VALUES = values();
public static Op valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int index;
private final int value;
private Op(int index, int value) {
this.index = index;
this.value = value;
}
// @@protoc_insertion_point(enum_scope:decoderbufs.Op)
}
public interface PointOrBuilder extends
// @@protoc_insertion_point(interface_extends:decoderbufs.Point)
com.google.protobuf.MessageOrBuilder {
/**
* <code>required double x = 1;</code>
*/
boolean hasX();
/**
* <code>required double x = 1;</code>
*/
double getX();
/**
* <code>required double y = 2;</code>
*/
boolean hasY();
/**
* <code>required double y = 2;</code>
*/
double getY();
}
/**
* Protobuf type {@code decoderbufs.Point}
*/
public static final class Point extends
com.google.protobuf.GeneratedMessage implements
// @@protoc_insertion_point(message_implements:decoderbufs.Point)
PointOrBuilder {
// Use Point.newBuilder() to construct.
private Point(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private Point(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
private static final Point defaultInstance;
public static Point getDefaultInstance() {
return defaultInstance;
}
public Point getDefaultInstanceForType() {
return defaultInstance;
}
private final com.google.protobuf.UnknownFieldSet unknownFields;
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private Point(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
initFields();
int mutable_bitField0_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
done = true;
}
break;
}
case 9: {
bitField0_ |= 0x00000001;
x_ = input.readDouble();
break;
}
case 17: {
bitField0_ |= 0x00000002;
y_ = input.readDouble();
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_Point_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_Point_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.debezium.connector.postgresql.proto.PgProto.Point.class, io.debezium.connector.postgresql.proto.PgProto.Point.Builder.class);
}
public static com.google.protobuf.Parser<Point> PARSER =
new com.google.protobuf.AbstractParser<Point>() {
public Point parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new Point(input, extensionRegistry);
}
};
@java.lang.Override
public com.google.protobuf.Parser<Point> getParserForType() {
return PARSER;
}
private int bitField0_;
public static final int X_FIELD_NUMBER = 1;
private double x_;
/**
* <code>required double x = 1;</code>
*/
public boolean hasX() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>required double x = 1;</code>
*/
public double getX() {
return x_;
}
public static final int Y_FIELD_NUMBER = 2;
private double y_;
/**
* <code>required double y = 2;</code>
*/
public boolean hasY() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
/**
* <code>required double y = 2;</code>
*/
public double getY() {
return y_;
}
private void initFields() {
x_ = 0D;
y_ = 0D;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
if (!hasX()) {
memoizedIsInitialized = 0;
return false;
}
if (!hasY()) {
memoizedIsInitialized = 0;
return false;
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeDouble(1, x_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeDouble(2, y_);
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(1, x_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(2, y_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.Point parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(io.debezium.connector.postgresql.proto.PgProto.Point prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code decoderbufs.Point}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:decoderbufs.Point)
io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_Point_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_Point_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.debezium.connector.postgresql.proto.PgProto.Point.class, io.debezium.connector.postgresql.proto.PgProto.Point.Builder.class);
}
// Construct using io.debezium.connector.postgresql.proto.PgProto.Point.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
x_ = 0D;
bitField0_ = (bitField0_ & ~0x00000001);
y_ = 0D;
bitField0_ = (bitField0_ & ~0x00000002);
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_Point_descriptor;
}
public io.debezium.connector.postgresql.proto.PgProto.Point getDefaultInstanceForType() {
return io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
}
public io.debezium.connector.postgresql.proto.PgProto.Point build() {
io.debezium.connector.postgresql.proto.PgProto.Point result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
public io.debezium.connector.postgresql.proto.PgProto.Point buildPartial() {
io.debezium.connector.postgresql.proto.PgProto.Point result = new io.debezium.connector.postgresql.proto.PgProto.Point(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.x_ = x_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
result.y_ = y_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof io.debezium.connector.postgresql.proto.PgProto.Point) {
return mergeFrom((io.debezium.connector.postgresql.proto.PgProto.Point)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.debezium.connector.postgresql.proto.PgProto.Point other) {
if (other == io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance()) return this;
if (other.hasX()) {
setX(other.getX());
}
if (other.hasY()) {
setY(other.getY());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
if (!hasX()) {
return false;
}
if (!hasY()) {
return false;
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
io.debezium.connector.postgresql.proto.PgProto.Point parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.debezium.connector.postgresql.proto.PgProto.Point) e.getUnfinishedMessage();
throw e;
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private double x_ ;
/**
* <code>required double x = 1;</code>
*/
public boolean hasX() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>required double x = 1;</code>
*/
public double getX() {
return x_;
}
/**
* <code>required double x = 1;</code>
*/
public Builder setX(double value) {
bitField0_ |= 0x00000001;
x_ = value;
onChanged();
return this;
}
/**
* <code>required double x = 1;</code>
*/
public Builder clearX() {
bitField0_ = (bitField0_ & ~0x00000001);
x_ = 0D;
onChanged();
return this;
}
private double y_ ;
/**
* <code>required double y = 2;</code>
*/
public boolean hasY() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
/**
* <code>required double y = 2;</code>
*/
public double getY() {
return y_;
}
/**
* <code>required double y = 2;</code>
*/
public Builder setY(double value) {
bitField0_ |= 0x00000002;
y_ = value;
onChanged();
return this;
}
/**
* <code>required double y = 2;</code>
*/
public Builder clearY() {
bitField0_ = (bitField0_ & ~0x00000002);
y_ = 0D;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:decoderbufs.Point)
}
static {
defaultInstance = new Point(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:decoderbufs.Point)
}
public interface DatumMessageOrBuilder extends
// @@protoc_insertion_point(interface_extends:decoderbufs.DatumMessage)
com.google.protobuf.MessageOrBuilder {
/**
* <code>optional string column_name = 1;</code>
*/
boolean hasColumnName();
/**
* <code>optional string column_name = 1;</code>
*/
java.lang.String getColumnName();
/**
* <code>optional string column_name = 1;</code>
*/
com.google.protobuf.ByteString
getColumnNameBytes();
/**
* <code>optional int64 column_type = 2;</code>
*/
boolean hasColumnType();
/**
* <code>optional int64 column_type = 2;</code>
*/
long getColumnType();
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
boolean hasDatumInt32();
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
int getDatumInt32();
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
boolean hasDatumInt64();
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
long getDatumInt64();
/**
* <code>optional float datum_float = 5;</code>
*/
boolean hasDatumFloat();
/**
* <code>optional float datum_float = 5;</code>
*/
float getDatumFloat();
/**
* <code>optional double datum_double = 6;</code>
*/
boolean hasDatumDouble();
/**
* <code>optional double datum_double = 6;</code>
*/
double getDatumDouble();
/**
* <code>optional bool datum_bool = 7;</code>
*/
boolean hasDatumBool();
/**
* <code>optional bool datum_bool = 7;</code>
*/
boolean getDatumBool();
/**
* <code>optional string datum_string = 8;</code>
*/
boolean hasDatumString();
/**
* <code>optional string datum_string = 8;</code>
*/
java.lang.String getDatumString();
/**
* <code>optional string datum_string = 8;</code>
*/
com.google.protobuf.ByteString
getDatumStringBytes();
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
boolean hasDatumBytes();
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
com.google.protobuf.ByteString getDatumBytes();
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
boolean hasDatumPoint();
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.Point getDatumPoint();
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder getDatumPointOrBuilder();
}
/**
* Protobuf type {@code decoderbufs.DatumMessage}
*/
public static final class DatumMessage extends
com.google.protobuf.GeneratedMessage implements
// @@protoc_insertion_point(message_implements:decoderbufs.DatumMessage)
DatumMessageOrBuilder {
// Use DatumMessage.newBuilder() to construct.
private DatumMessage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private DatumMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
private static final DatumMessage defaultInstance;
public static DatumMessage getDefaultInstance() {
return defaultInstance;
}
public DatumMessage getDefaultInstanceForType() {
return defaultInstance;
}
private final com.google.protobuf.UnknownFieldSet unknownFields;
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private DatumMessage(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
initFields();
int mutable_bitField0_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
done = true;
}
break;
}
case 10: {
com.google.protobuf.ByteString bs = input.readBytes();
bitField0_ |= 0x00000001;
columnName_ = bs;
break;
}
case 16: {
bitField0_ |= 0x00000002;
columnType_ = input.readInt64();
break;
}
case 24: {
datumCase_ = 3;
datum_ = input.readInt32();
break;
}
case 32: {
datumCase_ = 4;
datum_ = input.readInt64();
break;
}
case 45: {
datumCase_ = 5;
datum_ = input.readFloat();
break;
}
case 49: {
datumCase_ = 6;
datum_ = input.readDouble();
break;
}
case 56: {
datumCase_ = 7;
datum_ = input.readBool();
break;
}
case 66: {
com.google.protobuf.ByteString bs = input.readBytes();
datumCase_ = 8;
datum_ = bs;
break;
}
case 74: {
datumCase_ = 9;
datum_ = input.readBytes();
break;
}
case 82: {
io.debezium.connector.postgresql.proto.PgProto.Point.Builder subBuilder = null;
if (datumCase_ == 10) {
subBuilder = ((io.debezium.connector.postgresql.proto.PgProto.Point) datum_).toBuilder();
}
datum_ = input.readMessage(io.debezium.connector.postgresql.proto.PgProto.Point.PARSER, extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom((io.debezium.connector.postgresql.proto.PgProto.Point) datum_);
datum_ = subBuilder.buildPartial();
}
datumCase_ = 10;
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_DatumMessage_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_DatumMessage_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.debezium.connector.postgresql.proto.PgProto.DatumMessage.class, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder.class);
}
public static com.google.protobuf.Parser<DatumMessage> PARSER =
new com.google.protobuf.AbstractParser<DatumMessage>() {
public DatumMessage parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new DatumMessage(input, extensionRegistry);
}
};
@java.lang.Override
public com.google.protobuf.Parser<DatumMessage> getParserForType() {
return PARSER;
}
private int bitField0_;
private int datumCase_ = 0;
private java.lang.Object datum_;
public enum DatumCase
implements com.google.protobuf.Internal.EnumLite {
DATUM_INT32(3),
DATUM_INT64(4),
DATUM_FLOAT(5),
DATUM_DOUBLE(6),
DATUM_BOOL(7),
DATUM_STRING(8),
DATUM_BYTES(9),
DATUM_POINT(10),
DATUM_NOT_SET(0);
private int value = 0;
private DatumCase(int value) {
this.value = value;
}
public static DatumCase valueOf(int value) {
switch (value) {
case 3: return DATUM_INT32;
case 4: return DATUM_INT64;
case 5: return DATUM_FLOAT;
case 6: return DATUM_DOUBLE;
case 7: return DATUM_BOOL;
case 8: return DATUM_STRING;
case 9: return DATUM_BYTES;
case 10: return DATUM_POINT;
case 0: return DATUM_NOT_SET;
default: throw new java.lang.IllegalArgumentException(
"Value is undefined for this oneof enum.");
}
}
public int getNumber() {
return this.value;
}
};
public DatumCase
getDatumCase() {
return DatumCase.valueOf(
datumCase_);
}
public static final int COLUMN_NAME_FIELD_NUMBER = 1;
private java.lang.Object columnName_;
/**
* <code>optional string column_name = 1;</code>
*/
public boolean hasColumnName() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>optional string column_name = 1;</code>
*/
public java.lang.String getColumnName() {
java.lang.Object ref = columnName_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
columnName_ = s;
}
return s;
}
}
/**
* <code>optional string column_name = 1;</code>
*/
public com.google.protobuf.ByteString
getColumnNameBytes() {
java.lang.Object ref = columnName_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
columnName_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int COLUMN_TYPE_FIELD_NUMBER = 2;
private long columnType_;
/**
* <code>optional int64 column_type = 2;</code>
*/
public boolean hasColumnType() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
/**
* <code>optional int64 column_type = 2;</code>
*/
public long getColumnType() {
return columnType_;
}
public static final int DATUM_INT32_FIELD_NUMBER = 3;
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
public boolean hasDatumInt32() {
return datumCase_ == 3;
}
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
public int getDatumInt32() {
if (datumCase_ == 3) {
return (java.lang.Integer) datum_;
}
return 0;
}
public static final int DATUM_INT64_FIELD_NUMBER = 4;
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
public boolean hasDatumInt64() {
return datumCase_ == 4;
}
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
public long getDatumInt64() {
if (datumCase_ == 4) {
return (java.lang.Long) datum_;
}
return 0L;
}
public static final int DATUM_FLOAT_FIELD_NUMBER = 5;
/**
* <code>optional float datum_float = 5;</code>
*/
public boolean hasDatumFloat() {
return datumCase_ == 5;
}
/**
* <code>optional float datum_float = 5;</code>
*/
public float getDatumFloat() {
if (datumCase_ == 5) {
return (java.lang.Float) datum_;
}
return 0F;
}
public static final int DATUM_DOUBLE_FIELD_NUMBER = 6;
/**
* <code>optional double datum_double = 6;</code>
*/
public boolean hasDatumDouble() {
return datumCase_ == 6;
}
/**
* <code>optional double datum_double = 6;</code>
*/
public double getDatumDouble() {
if (datumCase_ == 6) {
return (java.lang.Double) datum_;
}
return 0D;
}
public static final int DATUM_BOOL_FIELD_NUMBER = 7;
/**
* <code>optional bool datum_bool = 7;</code>
*/
public boolean hasDatumBool() {
return datumCase_ == 7;
}
/**
* <code>optional bool datum_bool = 7;</code>
*/
public boolean getDatumBool() {
if (datumCase_ == 7) {
return (java.lang.Boolean) datum_;
}
return false;
}
public static final int DATUM_STRING_FIELD_NUMBER = 8;
/**
* <code>optional string datum_string = 8;</code>
*/
public boolean hasDatumString() {
return datumCase_ == 8;
}
/**
* <code>optional string datum_string = 8;</code>
*/
public java.lang.String getDatumString() {
java.lang.Object ref = "";
if (datumCase_ == 8) {
ref = datum_;
}
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8() && (datumCase_ == 8)) {
datum_ = s;
}
return s;
}
}
/**
* <code>optional string datum_string = 8;</code>
*/
public com.google.protobuf.ByteString
getDatumStringBytes() {
java.lang.Object ref = "";
if (datumCase_ == 8) {
ref = datum_;
}
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
if (datumCase_ == 8) {
datum_ = b;
}
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int DATUM_BYTES_FIELD_NUMBER = 9;
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
public boolean hasDatumBytes() {
return datumCase_ == 9;
}
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
public com.google.protobuf.ByteString getDatumBytes() {
if (datumCase_ == 9) {
return (com.google.protobuf.ByteString) datum_;
}
return com.google.protobuf.ByteString.EMPTY;
}
public static final int DATUM_POINT_FIELD_NUMBER = 10;
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public boolean hasDatumPoint() {
return datumCase_ == 10;
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.Point getDatumPoint() {
if (datumCase_ == 10) {
return (io.debezium.connector.postgresql.proto.PgProto.Point) datum_;
}
return io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder getDatumPointOrBuilder() {
if (datumCase_ == 10) {
return (io.debezium.connector.postgresql.proto.PgProto.Point) datum_;
}
return io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
}
private void initFields() {
columnName_ = "";
columnType_ = 0L;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
if (hasDatumPoint()) {
if (!getDatumPoint().isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeBytes(1, getColumnNameBytes());
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeInt64(2, columnType_);
}
if (datumCase_ == 3) {
output.writeInt32(
3, (int)((java.lang.Integer) datum_));
}
if (datumCase_ == 4) {
output.writeInt64(
4, (long)((java.lang.Long) datum_));
}
if (datumCase_ == 5) {
output.writeFloat(
5, (float)((java.lang.Float) datum_));
}
if (datumCase_ == 6) {
output.writeDouble(
6, (double)((java.lang.Double) datum_));
}
if (datumCase_ == 7) {
output.writeBool(
7, (boolean)((java.lang.Boolean) datum_));
}
if (datumCase_ == 8) {
output.writeBytes(8, getDatumStringBytes());
}
if (datumCase_ == 9) {
output.writeBytes(
9, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) datum_));
}
if (datumCase_ == 10) {
output.writeMessage(10, (io.debezium.connector.postgresql.proto.PgProto.Point) datum_);
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(1, getColumnNameBytes());
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(2, columnType_);
}
if (datumCase_ == 3) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(
3, (int)((java.lang.Integer) datum_));
}
if (datumCase_ == 4) {
size += com.google.protobuf.CodedOutputStream
.computeInt64Size(
4, (long)((java.lang.Long) datum_));
}
if (datumCase_ == 5) {
size += com.google.protobuf.CodedOutputStream
.computeFloatSize(
5, (float)((java.lang.Float) datum_));
}
if (datumCase_ == 6) {
size += com.google.protobuf.CodedOutputStream
.computeDoubleSize(
6, (double)((java.lang.Double) datum_));
}
if (datumCase_ == 7) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(
7, (boolean)((java.lang.Boolean) datum_));
}
if (datumCase_ == 8) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(8, getDatumStringBytes());
}
if (datumCase_ == 9) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(
9, (com.google.protobuf.ByteString)((com.google.protobuf.ByteString) datum_));
}
if (datumCase_ == 10) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(10, (io.debezium.connector.postgresql.proto.PgProto.Point) datum_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.DatumMessage parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(io.debezium.connector.postgresql.proto.PgProto.DatumMessage prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code decoderbufs.DatumMessage}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:decoderbufs.DatumMessage)
io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_DatumMessage_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_DatumMessage_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.debezium.connector.postgresql.proto.PgProto.DatumMessage.class, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder.class);
}
// Construct using io.debezium.connector.postgresql.proto.PgProto.DatumMessage.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
columnName_ = "";
bitField0_ = (bitField0_ & ~0x00000001);
columnType_ = 0L;
bitField0_ = (bitField0_ & ~0x00000002);
datumCase_ = 0;
datum_ = null;
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_DatumMessage_descriptor;
}
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage getDefaultInstanceForType() {
return io.debezium.connector.postgresql.proto.PgProto.DatumMessage.getDefaultInstance();
}
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage build() {
io.debezium.connector.postgresql.proto.PgProto.DatumMessage result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage buildPartial() {
io.debezium.connector.postgresql.proto.PgProto.DatumMessage result = new io.debezium.connector.postgresql.proto.PgProto.DatumMessage(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.columnName_ = columnName_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
result.columnType_ = columnType_;
if (datumCase_ == 3) {
result.datum_ = datum_;
}
if (datumCase_ == 4) {
result.datum_ = datum_;
}
if (datumCase_ == 5) {
result.datum_ = datum_;
}
if (datumCase_ == 6) {
result.datum_ = datum_;
}
if (datumCase_ == 7) {
result.datum_ = datum_;
}
if (datumCase_ == 8) {
result.datum_ = datum_;
}
if (datumCase_ == 9) {
result.datum_ = datum_;
}
if (datumCase_ == 10) {
if (datumPointBuilder_ == null) {
result.datum_ = datum_;
} else {
result.datum_ = datumPointBuilder_.build();
}
}
result.bitField0_ = to_bitField0_;
result.datumCase_ = datumCase_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof io.debezium.connector.postgresql.proto.PgProto.DatumMessage) {
return mergeFrom((io.debezium.connector.postgresql.proto.PgProto.DatumMessage)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.debezium.connector.postgresql.proto.PgProto.DatumMessage other) {
if (other == io.debezium.connector.postgresql.proto.PgProto.DatumMessage.getDefaultInstance()) return this;
if (other.hasColumnName()) {
bitField0_ |= 0x00000001;
columnName_ = other.columnName_;
onChanged();
}
if (other.hasColumnType()) {
setColumnType(other.getColumnType());
}
switch (other.getDatumCase()) {
case DATUM_INT32: {
setDatumInt32(other.getDatumInt32());
break;
}
case DATUM_INT64: {
setDatumInt64(other.getDatumInt64());
break;
}
case DATUM_FLOAT: {
setDatumFloat(other.getDatumFloat());
break;
}
case DATUM_DOUBLE: {
setDatumDouble(other.getDatumDouble());
break;
}
case DATUM_BOOL: {
setDatumBool(other.getDatumBool());
break;
}
case DATUM_STRING: {
datumCase_ = 8;
datum_ = other.datum_;
onChanged();
break;
}
case DATUM_BYTES: {
setDatumBytes(other.getDatumBytes());
break;
}
case DATUM_POINT: {
mergeDatumPoint(other.getDatumPoint());
break;
}
case DATUM_NOT_SET: {
break;
}
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
if (hasDatumPoint()) {
if (!getDatumPoint().isInitialized()) {
return false;
}
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
io.debezium.connector.postgresql.proto.PgProto.DatumMessage parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.debezium.connector.postgresql.proto.PgProto.DatumMessage) e.getUnfinishedMessage();
throw e;
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int datumCase_ = 0;
private java.lang.Object datum_;
public DatumCase
getDatumCase() {
return DatumCase.valueOf(
datumCase_);
}
public Builder clearDatum() {
datumCase_ = 0;
datum_ = null;
onChanged();
return this;
}
private int bitField0_;
private java.lang.Object columnName_ = "";
/**
* <code>optional string column_name = 1;</code>
*/
public boolean hasColumnName() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>optional string column_name = 1;</code>
*/
public java.lang.String getColumnName() {
java.lang.Object ref = columnName_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
columnName_ = s;
}
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>optional string column_name = 1;</code>
*/
public com.google.protobuf.ByteString
getColumnNameBytes() {
java.lang.Object ref = columnName_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
columnName_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>optional string column_name = 1;</code>
*/
public Builder setColumnName(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000001;
columnName_ = value;
onChanged();
return this;
}
/**
* <code>optional string column_name = 1;</code>
*/
public Builder clearColumnName() {
bitField0_ = (bitField0_ & ~0x00000001);
columnName_ = getDefaultInstance().getColumnName();
onChanged();
return this;
}
/**
* <code>optional string column_name = 1;</code>
*/
public Builder setColumnNameBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000001;
columnName_ = value;
onChanged();
return this;
}
private long columnType_ ;
/**
* <code>optional int64 column_type = 2;</code>
*/
public boolean hasColumnType() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
/**
* <code>optional int64 column_type = 2;</code>
*/
public long getColumnType() {
return columnType_;
}
/**
* <code>optional int64 column_type = 2;</code>
*/
public Builder setColumnType(long value) {
bitField0_ |= 0x00000002;
columnType_ = value;
onChanged();
return this;
}
/**
* <code>optional int64 column_type = 2;</code>
*/
public Builder clearColumnType() {
bitField0_ = (bitField0_ & ~0x00000002);
columnType_ = 0L;
onChanged();
return this;
}
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
public boolean hasDatumInt32() {
return datumCase_ == 3;
}
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
public int getDatumInt32() {
if (datumCase_ == 3) {
return (java.lang.Integer) datum_;
}
return 0;
}
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
public Builder setDatumInt32(int value) {
datumCase_ = 3;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional int32 datum_int32 = 3;</code>
*/
public Builder clearDatumInt32() {
if (datumCase_ == 3) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
public boolean hasDatumInt64() {
return datumCase_ == 4;
}
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
public long getDatumInt64() {
if (datumCase_ == 4) {
return (java.lang.Long) datum_;
}
return 0L;
}
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
public Builder setDatumInt64(long value) {
datumCase_ = 4;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional int64 datum_int64 = 4;</code>
*/
public Builder clearDatumInt64() {
if (datumCase_ == 4) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
/**
* <code>optional float datum_float = 5;</code>
*/
public boolean hasDatumFloat() {
return datumCase_ == 5;
}
/**
* <code>optional float datum_float = 5;</code>
*/
public float getDatumFloat() {
if (datumCase_ == 5) {
return (java.lang.Float) datum_;
}
return 0F;
}
/**
* <code>optional float datum_float = 5;</code>
*/
public Builder setDatumFloat(float value) {
datumCase_ = 5;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional float datum_float = 5;</code>
*/
public Builder clearDatumFloat() {
if (datumCase_ == 5) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
/**
* <code>optional double datum_double = 6;</code>
*/
public boolean hasDatumDouble() {
return datumCase_ == 6;
}
/**
* <code>optional double datum_double = 6;</code>
*/
public double getDatumDouble() {
if (datumCase_ == 6) {
return (java.lang.Double) datum_;
}
return 0D;
}
/**
* <code>optional double datum_double = 6;</code>
*/
public Builder setDatumDouble(double value) {
datumCase_ = 6;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional double datum_double = 6;</code>
*/
public Builder clearDatumDouble() {
if (datumCase_ == 6) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
/**
* <code>optional bool datum_bool = 7;</code>
*/
public boolean hasDatumBool() {
return datumCase_ == 7;
}
/**
* <code>optional bool datum_bool = 7;</code>
*/
public boolean getDatumBool() {
if (datumCase_ == 7) {
return (java.lang.Boolean) datum_;
}
return false;
}
/**
* <code>optional bool datum_bool = 7;</code>
*/
public Builder setDatumBool(boolean value) {
datumCase_ = 7;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional bool datum_bool = 7;</code>
*/
public Builder clearDatumBool() {
if (datumCase_ == 7) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
/**
* <code>optional string datum_string = 8;</code>
*/
public boolean hasDatumString() {
return datumCase_ == 8;
}
/**
* <code>optional string datum_string = 8;</code>
*/
public java.lang.String getDatumString() {
java.lang.Object ref = "";
if (datumCase_ == 8) {
ref = datum_;
}
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (datumCase_ == 8) {
if (bs.isValidUtf8()) {
datum_ = s;
}
}
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>optional string datum_string = 8;</code>
*/
public com.google.protobuf.ByteString
getDatumStringBytes() {
java.lang.Object ref = "";
if (datumCase_ == 8) {
ref = datum_;
}
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
if (datumCase_ == 8) {
datum_ = b;
}
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>optional string datum_string = 8;</code>
*/
public Builder setDatumString(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
datumCase_ = 8;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional string datum_string = 8;</code>
*/
public Builder clearDatumString() {
if (datumCase_ == 8) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
/**
* <code>optional string datum_string = 8;</code>
*/
public Builder setDatumStringBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
datumCase_ = 8;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
public boolean hasDatumBytes() {
return datumCase_ == 9;
}
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
public com.google.protobuf.ByteString getDatumBytes() {
if (datumCase_ == 9) {
return (com.google.protobuf.ByteString) datum_;
}
return com.google.protobuf.ByteString.EMPTY;
}
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
public Builder setDatumBytes(com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
datumCase_ = 9;
datum_ = value;
onChanged();
return this;
}
/**
* <code>optional bytes datum_bytes = 9;</code>
*/
public Builder clearDatumBytes() {
if (datumCase_ == 9) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
return this;
}
private com.google.protobuf.SingleFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.Point, io.debezium.connector.postgresql.proto.PgProto.Point.Builder, io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder> datumPointBuilder_;
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public boolean hasDatumPoint() {
return datumCase_ == 10;
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.Point getDatumPoint() {
if (datumPointBuilder_ == null) {
if (datumCase_ == 10) {
return (io.debezium.connector.postgresql.proto.PgProto.Point) datum_;
}
return io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
} else {
if (datumCase_ == 10) {
return datumPointBuilder_.getMessage();
}
return io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
}
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public Builder setDatumPoint(io.debezium.connector.postgresql.proto.PgProto.Point value) {
if (datumPointBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
datum_ = value;
onChanged();
} else {
datumPointBuilder_.setMessage(value);
}
datumCase_ = 10;
return this;
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public Builder setDatumPoint(
io.debezium.connector.postgresql.proto.PgProto.Point.Builder builderForValue) {
if (datumPointBuilder_ == null) {
datum_ = builderForValue.build();
onChanged();
} else {
datumPointBuilder_.setMessage(builderForValue.build());
}
datumCase_ = 10;
return this;
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public Builder mergeDatumPoint(io.debezium.connector.postgresql.proto.PgProto.Point value) {
if (datumPointBuilder_ == null) {
if (datumCase_ == 10 &&
datum_ != io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance()) {
datum_ = io.debezium.connector.postgresql.proto.PgProto.Point.newBuilder((io.debezium.connector.postgresql.proto.PgProto.Point) datum_)
.mergeFrom(value).buildPartial();
} else {
datum_ = value;
}
onChanged();
} else {
if (datumCase_ == 10) {
datumPointBuilder_.mergeFrom(value);
}
datumPointBuilder_.setMessage(value);
}
datumCase_ = 10;
return this;
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public Builder clearDatumPoint() {
if (datumPointBuilder_ == null) {
if (datumCase_ == 10) {
datumCase_ = 0;
datum_ = null;
onChanged();
}
} else {
if (datumCase_ == 10) {
datumCase_ = 0;
datum_ = null;
}
datumPointBuilder_.clear();
}
return this;
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.Point.Builder getDatumPointBuilder() {
return getDatumPointFieldBuilder().getBuilder();
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder getDatumPointOrBuilder() {
if ((datumCase_ == 10) && (datumPointBuilder_ != null)) {
return datumPointBuilder_.getMessageOrBuilder();
} else {
if (datumCase_ == 10) {
return (io.debezium.connector.postgresql.proto.PgProto.Point) datum_;
}
return io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
}
}
/**
* <code>optional .decoderbufs.Point datum_point = 10;</code>
*/
private com.google.protobuf.SingleFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.Point, io.debezium.connector.postgresql.proto.PgProto.Point.Builder, io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder>
getDatumPointFieldBuilder() {
if (datumPointBuilder_ == null) {
if (!(datumCase_ == 10)) {
datum_ = io.debezium.connector.postgresql.proto.PgProto.Point.getDefaultInstance();
}
datumPointBuilder_ = new com.google.protobuf.SingleFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.Point, io.debezium.connector.postgresql.proto.PgProto.Point.Builder, io.debezium.connector.postgresql.proto.PgProto.PointOrBuilder>(
(io.debezium.connector.postgresql.proto.PgProto.Point) datum_,
getParentForChildren(),
isClean());
datum_ = null;
}
datumCase_ = 10;
return datumPointBuilder_;
}
// @@protoc_insertion_point(builder_scope:decoderbufs.DatumMessage)
}
static {
defaultInstance = new DatumMessage(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:decoderbufs.DatumMessage)
}
public interface RowMessageOrBuilder extends
// @@protoc_insertion_point(interface_extends:decoderbufs.RowMessage)
com.google.protobuf.MessageOrBuilder {
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
boolean hasTransactionId();
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
int getTransactionId();
/**
* <code>optional uint64 commit_time = 2;</code>
*/
boolean hasCommitTime();
/**
* <code>optional uint64 commit_time = 2;</code>
*/
long getCommitTime();
/**
* <code>optional string table = 3;</code>
*/
boolean hasTable();
/**
* <code>optional string table = 3;</code>
*/
java.lang.String getTable();
/**
* <code>optional string table = 3;</code>
*/
com.google.protobuf.ByteString
getTableBytes();
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
boolean hasOp();
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.Op getOp();
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage>
getNewTupleList();
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.DatumMessage getNewTuple(int index);
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
int getNewTupleCount();
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
java.util.List<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getNewTupleOrBuilderList();
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder getNewTupleOrBuilder(
int index);
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage>
getOldTupleList();
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.DatumMessage getOldTuple(int index);
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
int getOldTupleCount();
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
java.util.List<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getOldTupleOrBuilderList();
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder getOldTupleOrBuilder(
int index);
}
/**
* Protobuf type {@code decoderbufs.RowMessage}
*/
public static final class RowMessage extends
com.google.protobuf.GeneratedMessage implements
// @@protoc_insertion_point(message_implements:decoderbufs.RowMessage)
RowMessageOrBuilder {
// Use RowMessage.newBuilder() to construct.
private RowMessage(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private RowMessage(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
private static final RowMessage defaultInstance;
public static RowMessage getDefaultInstance() {
return defaultInstance;
}
public RowMessage getDefaultInstanceForType() {
return defaultInstance;
}
private final com.google.protobuf.UnknownFieldSet unknownFields;
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private RowMessage(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
initFields();
int mutable_bitField0_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
done = true;
}
break;
}
case 8: {
bitField0_ |= 0x00000001;
transactionId_ = input.readUInt32();
break;
}
case 16: {
bitField0_ |= 0x00000002;
commitTime_ = input.readUInt64();
break;
}
case 26: {
com.google.protobuf.ByteString bs = input.readBytes();
bitField0_ |= 0x00000004;
table_ = bs;
break;
}
case 32: {
int rawValue = input.readEnum();
io.debezium.connector.postgresql.proto.PgProto.Op value = io.debezium.connector.postgresql.proto.PgProto.Op.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(4, rawValue);
} else {
bitField0_ |= 0x00000008;
op_ = value;
}
break;
}
case 42: {
if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
newTuple_ = new java.util.ArrayList<io.debezium.connector.postgresql.proto.PgProto.DatumMessage>();
mutable_bitField0_ |= 0x00000010;
}
newTuple_.add(input.readMessage(io.debezium.connector.postgresql.proto.PgProto.DatumMessage.PARSER, extensionRegistry));
break;
}
case 50: {
if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
oldTuple_ = new java.util.ArrayList<io.debezium.connector.postgresql.proto.PgProto.DatumMessage>();
mutable_bitField0_ |= 0x00000020;
}
oldTuple_.add(input.readMessage(io.debezium.connector.postgresql.proto.PgProto.DatumMessage.PARSER, extensionRegistry));
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
newTuple_ = java.util.Collections.unmodifiableList(newTuple_);
}
if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
oldTuple_ = java.util.Collections.unmodifiableList(oldTuple_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_RowMessage_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_RowMessage_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.debezium.connector.postgresql.proto.PgProto.RowMessage.class, io.debezium.connector.postgresql.proto.PgProto.RowMessage.Builder.class);
}
public static com.google.protobuf.Parser<RowMessage> PARSER =
new com.google.protobuf.AbstractParser<RowMessage>() {
public RowMessage parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new RowMessage(input, extensionRegistry);
}
};
@java.lang.Override
public com.google.protobuf.Parser<RowMessage> getParserForType() {
return PARSER;
}
private int bitField0_;
public static final int TRANSACTION_ID_FIELD_NUMBER = 1;
private int transactionId_;
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
public boolean hasTransactionId() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
public int getTransactionId() {
return transactionId_;
}
public static final int COMMIT_TIME_FIELD_NUMBER = 2;
private long commitTime_;
/**
* <code>optional uint64 commit_time = 2;</code>
*/
public boolean hasCommitTime() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
/**
* <code>optional uint64 commit_time = 2;</code>
*/
public long getCommitTime() {
return commitTime_;
}
public static final int TABLE_FIELD_NUMBER = 3;
private java.lang.Object table_;
/**
* <code>optional string table = 3;</code>
*/
public boolean hasTable() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
/**
* <code>optional string table = 3;</code>
*/
public java.lang.String getTable() {
java.lang.Object ref = table_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
table_ = s;
}
return s;
}
}
/**
* <code>optional string table = 3;</code>
*/
public com.google.protobuf.ByteString
getTableBytes() {
java.lang.Object ref = table_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
table_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int OP_FIELD_NUMBER = 4;
private io.debezium.connector.postgresql.proto.PgProto.Op op_;
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
public boolean hasOp() {
return ((bitField0_ & 0x00000008) == 0x00000008);
}
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.Op getOp() {
return op_;
}
public static final int NEW_TUPLE_FIELD_NUMBER = 5;
private java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> newTuple_;
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> getNewTupleList() {
return newTuple_;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public java.util.List<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getNewTupleOrBuilderList() {
return newTuple_;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public int getNewTupleCount() {
return newTuple_.size();
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage getNewTuple(int index) {
return newTuple_.get(index);
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder getNewTupleOrBuilder(
int index) {
return newTuple_.get(index);
}
public static final int OLD_TUPLE_FIELD_NUMBER = 6;
private java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> oldTuple_;
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> getOldTupleList() {
return oldTuple_;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public java.util.List<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getOldTupleOrBuilderList() {
return oldTuple_;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public int getOldTupleCount() {
return oldTuple_.size();
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage getOldTuple(int index) {
return oldTuple_.get(index);
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder getOldTupleOrBuilder(
int index) {
return oldTuple_.get(index);
}
private void initFields() {
transactionId_ = 0;
commitTime_ = 0L;
table_ = "";
op_ = io.debezium.connector.postgresql.proto.PgProto.Op.INSERT;
newTuple_ = java.util.Collections.emptyList();
oldTuple_ = java.util.Collections.emptyList();
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
for (int i = 0; i < getNewTupleCount(); i++) {
if (!getNewTuple(i).isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
}
for (int i = 0; i < getOldTupleCount(); i++) {
if (!getOldTuple(i).isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
output.writeUInt32(1, transactionId_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
output.writeUInt64(2, commitTime_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
output.writeBytes(3, getTableBytes());
}
if (((bitField0_ & 0x00000008) == 0x00000008)) {
output.writeEnum(4, op_.getNumber());
}
for (int i = 0; i < newTuple_.size(); i++) {
output.writeMessage(5, newTuple_.get(i));
}
for (int i = 0; i < oldTuple_.size(); i++) {
output.writeMessage(6, oldTuple_.get(i));
}
getUnknownFields().writeTo(output);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(1, transactionId_);
}
if (((bitField0_ & 0x00000002) == 0x00000002)) {
size += com.google.protobuf.CodedOutputStream
.computeUInt64Size(2, commitTime_);
}
if (((bitField0_ & 0x00000004) == 0x00000004)) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(3, getTableBytes());
}
if (((bitField0_ & 0x00000008) == 0x00000008)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(4, op_.getNumber());
}
for (int i = 0; i < newTuple_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(5, newTuple_.get(i));
}
for (int i = 0; i < oldTuple_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, oldTuple_.get(i));
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static io.debezium.connector.postgresql.proto.PgProto.RowMessage parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(io.debezium.connector.postgresql.proto.PgProto.RowMessage prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code decoderbufs.RowMessage}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:decoderbufs.RowMessage)
io.debezium.connector.postgresql.proto.PgProto.RowMessageOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_RowMessage_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_RowMessage_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.debezium.connector.postgresql.proto.PgProto.RowMessage.class, io.debezium.connector.postgresql.proto.PgProto.RowMessage.Builder.class);
}
// Construct using io.debezium.connector.postgresql.proto.PgProto.RowMessage.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
getNewTupleFieldBuilder();
getOldTupleFieldBuilder();
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
transactionId_ = 0;
bitField0_ = (bitField0_ & ~0x00000001);
commitTime_ = 0L;
bitField0_ = (bitField0_ & ~0x00000002);
table_ = "";
bitField0_ = (bitField0_ & ~0x00000004);
op_ = io.debezium.connector.postgresql.proto.PgProto.Op.INSERT;
bitField0_ = (bitField0_ & ~0x00000008);
if (newTupleBuilder_ == null) {
newTuple_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000010);
} else {
newTupleBuilder_.clear();
}
if (oldTupleBuilder_ == null) {
oldTuple_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000020);
} else {
oldTupleBuilder_.clear();
}
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.debezium.connector.postgresql.proto.PgProto.internal_static_decoderbufs_RowMessage_descriptor;
}
public io.debezium.connector.postgresql.proto.PgProto.RowMessage getDefaultInstanceForType() {
return io.debezium.connector.postgresql.proto.PgProto.RowMessage.getDefaultInstance();
}
public io.debezium.connector.postgresql.proto.PgProto.RowMessage build() {
io.debezium.connector.postgresql.proto.PgProto.RowMessage result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
public io.debezium.connector.postgresql.proto.PgProto.RowMessage buildPartial() {
io.debezium.connector.postgresql.proto.PgProto.RowMessage result = new io.debezium.connector.postgresql.proto.PgProto.RowMessage(this);
int from_bitField0_ = bitField0_;
int to_bitField0_ = 0;
if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
to_bitField0_ |= 0x00000001;
}
result.transactionId_ = transactionId_;
if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
to_bitField0_ |= 0x00000002;
}
result.commitTime_ = commitTime_;
if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
to_bitField0_ |= 0x00000004;
}
result.table_ = table_;
if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
to_bitField0_ |= 0x00000008;
}
result.op_ = op_;
if (newTupleBuilder_ == null) {
if (((bitField0_ & 0x00000010) == 0x00000010)) {
newTuple_ = java.util.Collections.unmodifiableList(newTuple_);
bitField0_ = (bitField0_ & ~0x00000010);
}
result.newTuple_ = newTuple_;
} else {
result.newTuple_ = newTupleBuilder_.build();
}
if (oldTupleBuilder_ == null) {
if (((bitField0_ & 0x00000020) == 0x00000020)) {
oldTuple_ = java.util.Collections.unmodifiableList(oldTuple_);
bitField0_ = (bitField0_ & ~0x00000020);
}
result.oldTuple_ = oldTuple_;
} else {
result.oldTuple_ = oldTupleBuilder_.build();
}
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof io.debezium.connector.postgresql.proto.PgProto.RowMessage) {
return mergeFrom((io.debezium.connector.postgresql.proto.PgProto.RowMessage)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.debezium.connector.postgresql.proto.PgProto.RowMessage other) {
if (other == io.debezium.connector.postgresql.proto.PgProto.RowMessage.getDefaultInstance()) return this;
if (other.hasTransactionId()) {
setTransactionId(other.getTransactionId());
}
if (other.hasCommitTime()) {
setCommitTime(other.getCommitTime());
}
if (other.hasTable()) {
bitField0_ |= 0x00000004;
table_ = other.table_;
onChanged();
}
if (other.hasOp()) {
setOp(other.getOp());
}
if (newTupleBuilder_ == null) {
if (!other.newTuple_.isEmpty()) {
if (newTuple_.isEmpty()) {
newTuple_ = other.newTuple_;
bitField0_ = (bitField0_ & ~0x00000010);
} else {
ensureNewTupleIsMutable();
newTuple_.addAll(other.newTuple_);
}
onChanged();
}
} else {
if (!other.newTuple_.isEmpty()) {
if (newTupleBuilder_.isEmpty()) {
newTupleBuilder_.dispose();
newTupleBuilder_ = null;
newTuple_ = other.newTuple_;
bitField0_ = (bitField0_ & ~0x00000010);
newTupleBuilder_ =
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
getNewTupleFieldBuilder() : null;
} else {
newTupleBuilder_.addAllMessages(other.newTuple_);
}
}
}
if (oldTupleBuilder_ == null) {
if (!other.oldTuple_.isEmpty()) {
if (oldTuple_.isEmpty()) {
oldTuple_ = other.oldTuple_;
bitField0_ = (bitField0_ & ~0x00000020);
} else {
ensureOldTupleIsMutable();
oldTuple_.addAll(other.oldTuple_);
}
onChanged();
}
} else {
if (!other.oldTuple_.isEmpty()) {
if (oldTupleBuilder_.isEmpty()) {
oldTupleBuilder_.dispose();
oldTupleBuilder_ = null;
oldTuple_ = other.oldTuple_;
bitField0_ = (bitField0_ & ~0x00000020);
oldTupleBuilder_ =
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
getOldTupleFieldBuilder() : null;
} else {
oldTupleBuilder_.addAllMessages(other.oldTuple_);
}
}
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
public final boolean isInitialized() {
for (int i = 0; i < getNewTupleCount(); i++) {
if (!getNewTuple(i).isInitialized()) {
return false;
}
}
for (int i = 0; i < getOldTupleCount(); i++) {
if (!getOldTuple(i).isInitialized()) {
return false;
}
}
return true;
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
io.debezium.connector.postgresql.proto.PgProto.RowMessage parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.debezium.connector.postgresql.proto.PgProto.RowMessage) e.getUnfinishedMessage();
throw e;
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private int transactionId_ ;
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
public boolean hasTransactionId() {
return ((bitField0_ & 0x00000001) == 0x00000001);
}
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
public int getTransactionId() {
return transactionId_;
}
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
public Builder setTransactionId(int value) {
bitField0_ |= 0x00000001;
transactionId_ = value;
onChanged();
return this;
}
/**
* <code>optional uint32 transaction_id = 1;</code>
*/
public Builder clearTransactionId() {
bitField0_ = (bitField0_ & ~0x00000001);
transactionId_ = 0;
onChanged();
return this;
}
private long commitTime_ ;
/**
* <code>optional uint64 commit_time = 2;</code>
*/
public boolean hasCommitTime() {
return ((bitField0_ & 0x00000002) == 0x00000002);
}
/**
* <code>optional uint64 commit_time = 2;</code>
*/
public long getCommitTime() {
return commitTime_;
}
/**
* <code>optional uint64 commit_time = 2;</code>
*/
public Builder setCommitTime(long value) {
bitField0_ |= 0x00000002;
commitTime_ = value;
onChanged();
return this;
}
/**
* <code>optional uint64 commit_time = 2;</code>
*/
public Builder clearCommitTime() {
bitField0_ = (bitField0_ & ~0x00000002);
commitTime_ = 0L;
onChanged();
return this;
}
private java.lang.Object table_ = "";
/**
* <code>optional string table = 3;</code>
*/
public boolean hasTable() {
return ((bitField0_ & 0x00000004) == 0x00000004);
}
/**
* <code>optional string table = 3;</code>
*/
public java.lang.String getTable() {
java.lang.Object ref = table_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
table_ = s;
}
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>optional string table = 3;</code>
*/
public com.google.protobuf.ByteString
getTableBytes() {
java.lang.Object ref = table_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
table_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>optional string table = 3;</code>
*/
public Builder setTable(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000004;
table_ = value;
onChanged();
return this;
}
/**
* <code>optional string table = 3;</code>
*/
public Builder clearTable() {
bitField0_ = (bitField0_ & ~0x00000004);
table_ = getDefaultInstance().getTable();
onChanged();
return this;
}
/**
* <code>optional string table = 3;</code>
*/
public Builder setTableBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000004;
table_ = value;
onChanged();
return this;
}
private io.debezium.connector.postgresql.proto.PgProto.Op op_ = io.debezium.connector.postgresql.proto.PgProto.Op.INSERT;
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
public boolean hasOp() {
return ((bitField0_ & 0x00000008) == 0x00000008);
}
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.Op getOp() {
return op_;
}
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
public Builder setOp(io.debezium.connector.postgresql.proto.PgProto.Op value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000008;
op_ = value;
onChanged();
return this;
}
/**
* <code>optional .decoderbufs.Op op = 4;</code>
*/
public Builder clearOp() {
bitField0_ = (bitField0_ & ~0x00000008);
op_ = io.debezium.connector.postgresql.proto.PgProto.Op.INSERT;
onChanged();
return this;
}
private java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> newTuple_ =
java.util.Collections.emptyList();
private void ensureNewTupleIsMutable() {
if (!((bitField0_ & 0x00000010) == 0x00000010)) {
newTuple_ = new java.util.ArrayList<io.debezium.connector.postgresql.proto.PgProto.DatumMessage>(newTuple_);
bitField0_ |= 0x00000010;
}
}
private com.google.protobuf.RepeatedFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.DatumMessage, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder, io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder> newTupleBuilder_;
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> getNewTupleList() {
if (newTupleBuilder_ == null) {
return java.util.Collections.unmodifiableList(newTuple_);
} else {
return newTupleBuilder_.getMessageList();
}
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public int getNewTupleCount() {
if (newTupleBuilder_ == null) {
return newTuple_.size();
} else {
return newTupleBuilder_.getCount();
}
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage getNewTuple(int index) {
if (newTupleBuilder_ == null) {
return newTuple_.get(index);
} else {
return newTupleBuilder_.getMessage(index);
}
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder setNewTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage value) {
if (newTupleBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureNewTupleIsMutable();
newTuple_.set(index, value);
onChanged();
} else {
newTupleBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder setNewTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder builderForValue) {
if (newTupleBuilder_ == null) {
ensureNewTupleIsMutable();
newTuple_.set(index, builderForValue.build());
onChanged();
} else {
newTupleBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder addNewTuple(io.debezium.connector.postgresql.proto.PgProto.DatumMessage value) {
if (newTupleBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureNewTupleIsMutable();
newTuple_.add(value);
onChanged();
} else {
newTupleBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder addNewTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage value) {
if (newTupleBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureNewTupleIsMutable();
newTuple_.add(index, value);
onChanged();
} else {
newTupleBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder addNewTuple(
io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder builderForValue) {
if (newTupleBuilder_ == null) {
ensureNewTupleIsMutable();
newTuple_.add(builderForValue.build());
onChanged();
} else {
newTupleBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder addNewTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder builderForValue) {
if (newTupleBuilder_ == null) {
ensureNewTupleIsMutable();
newTuple_.add(index, builderForValue.build());
onChanged();
} else {
newTupleBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder addAllNewTuple(
java.lang.Iterable<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessage> values) {
if (newTupleBuilder_ == null) {
ensureNewTupleIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, newTuple_);
onChanged();
} else {
newTupleBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder clearNewTuple() {
if (newTupleBuilder_ == null) {
newTuple_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000010);
onChanged();
} else {
newTupleBuilder_.clear();
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public Builder removeNewTuple(int index) {
if (newTupleBuilder_ == null) {
ensureNewTupleIsMutable();
newTuple_.remove(index);
onChanged();
} else {
newTupleBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder getNewTupleBuilder(
int index) {
return getNewTupleFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder getNewTupleOrBuilder(
int index) {
if (newTupleBuilder_ == null) {
return newTuple_.get(index); } else {
return newTupleBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public java.util.List<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getNewTupleOrBuilderList() {
if (newTupleBuilder_ != null) {
return newTupleBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(newTuple_);
}
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder addNewTupleBuilder() {
return getNewTupleFieldBuilder().addBuilder(
io.debezium.connector.postgresql.proto.PgProto.DatumMessage.getDefaultInstance());
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder addNewTupleBuilder(
int index) {
return getNewTupleFieldBuilder().addBuilder(
index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.getDefaultInstance());
}
/**
* <code>repeated .decoderbufs.DatumMessage new_tuple = 5;</code>
*/
public java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder>
getNewTupleBuilderList() {
return getNewTupleFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.DatumMessage, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder, io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getNewTupleFieldBuilder() {
if (newTupleBuilder_ == null) {
newTupleBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.DatumMessage, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder, io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>(
newTuple_,
((bitField0_ & 0x00000010) == 0x00000010),
getParentForChildren(),
isClean());
newTuple_ = null;
}
return newTupleBuilder_;
}
private java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> oldTuple_ =
java.util.Collections.emptyList();
private void ensureOldTupleIsMutable() {
if (!((bitField0_ & 0x00000020) == 0x00000020)) {
oldTuple_ = new java.util.ArrayList<io.debezium.connector.postgresql.proto.PgProto.DatumMessage>(oldTuple_);
bitField0_ |= 0x00000020;
}
}
private com.google.protobuf.RepeatedFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.DatumMessage, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder, io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder> oldTupleBuilder_;
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage> getOldTupleList() {
if (oldTupleBuilder_ == null) {
return java.util.Collections.unmodifiableList(oldTuple_);
} else {
return oldTupleBuilder_.getMessageList();
}
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public int getOldTupleCount() {
if (oldTupleBuilder_ == null) {
return oldTuple_.size();
} else {
return oldTupleBuilder_.getCount();
}
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage getOldTuple(int index) {
if (oldTupleBuilder_ == null) {
return oldTuple_.get(index);
} else {
return oldTupleBuilder_.getMessage(index);
}
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder setOldTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage value) {
if (oldTupleBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureOldTupleIsMutable();
oldTuple_.set(index, value);
onChanged();
} else {
oldTupleBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder setOldTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder builderForValue) {
if (oldTupleBuilder_ == null) {
ensureOldTupleIsMutable();
oldTuple_.set(index, builderForValue.build());
onChanged();
} else {
oldTupleBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder addOldTuple(io.debezium.connector.postgresql.proto.PgProto.DatumMessage value) {
if (oldTupleBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureOldTupleIsMutable();
oldTuple_.add(value);
onChanged();
} else {
oldTupleBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder addOldTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage value) {
if (oldTupleBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureOldTupleIsMutable();
oldTuple_.add(index, value);
onChanged();
} else {
oldTupleBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder addOldTuple(
io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder builderForValue) {
if (oldTupleBuilder_ == null) {
ensureOldTupleIsMutable();
oldTuple_.add(builderForValue.build());
onChanged();
} else {
oldTupleBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder addOldTuple(
int index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder builderForValue) {
if (oldTupleBuilder_ == null) {
ensureOldTupleIsMutable();
oldTuple_.add(index, builderForValue.build());
onChanged();
} else {
oldTupleBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder addAllOldTuple(
java.lang.Iterable<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessage> values) {
if (oldTupleBuilder_ == null) {
ensureOldTupleIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, oldTuple_);
onChanged();
} else {
oldTupleBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder clearOldTuple() {
if (oldTupleBuilder_ == null) {
oldTuple_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000020);
onChanged();
} else {
oldTupleBuilder_.clear();
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public Builder removeOldTuple(int index) {
if (oldTupleBuilder_ == null) {
ensureOldTupleIsMutable();
oldTuple_.remove(index);
onChanged();
} else {
oldTupleBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder getOldTupleBuilder(
int index) {
return getOldTupleFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder getOldTupleOrBuilder(
int index) {
if (oldTupleBuilder_ == null) {
return oldTuple_.get(index); } else {
return oldTupleBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public java.util.List<? extends io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getOldTupleOrBuilderList() {
if (oldTupleBuilder_ != null) {
return oldTupleBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(oldTuple_);
}
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder addOldTupleBuilder() {
return getOldTupleFieldBuilder().addBuilder(
io.debezium.connector.postgresql.proto.PgProto.DatumMessage.getDefaultInstance());
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder addOldTupleBuilder(
int index) {
return getOldTupleFieldBuilder().addBuilder(
index, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.getDefaultInstance());
}
/**
* <code>repeated .decoderbufs.DatumMessage old_tuple = 6;</code>
*/
public java.util.List<io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder>
getOldTupleBuilderList() {
return getOldTupleFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.DatumMessage, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder, io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>
getOldTupleFieldBuilder() {
if (oldTupleBuilder_ == null) {
oldTupleBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
io.debezium.connector.postgresql.proto.PgProto.DatumMessage, io.debezium.connector.postgresql.proto.PgProto.DatumMessage.Builder, io.debezium.connector.postgresql.proto.PgProto.DatumMessageOrBuilder>(
oldTuple_,
((bitField0_ & 0x00000020) == 0x00000020),
getParentForChildren(),
isClean());
oldTuple_ = null;
}
return oldTupleBuilder_;
}
// @@protoc_insertion_point(builder_scope:decoderbufs.RowMessage)
}
static {
defaultInstance = new RowMessage(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:decoderbufs.RowMessage)
}
private static final com.google.protobuf.Descriptors.Descriptor
internal_static_decoderbufs_Point_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_decoderbufs_Point_fieldAccessorTable;
private static final com.google.protobuf.Descriptors.Descriptor
internal_static_decoderbufs_DatumMessage_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_decoderbufs_DatumMessage_fieldAccessorTable;
private static final com.google.protobuf.Descriptors.Descriptor
internal_static_decoderbufs_RowMessage_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_decoderbufs_RowMessage_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
}
private static com.google.protobuf.Descriptors.FileDescriptor
descriptor;
static {
java.lang.String[] descriptorData = {
"\n\023pg_logicaldec.proto\022\013decoderbufs\"\035\n\005Po" +
"int\022\t\n\001x\030\001 \002(\001\022\t\n\001y\030\002 \002(\001\"\216\002\n\014DatumMessa" +
"ge\022\023\n\013column_name\030\001 \001(\t\022\023\n\013column_type\030\002" +
" \001(\003\022\025\n\013datum_int32\030\003 \001(\005H\000\022\025\n\013datum_int" +
"64\030\004 \001(\003H\000\022\025\n\013datum_float\030\005 \001(\002H\000\022\026\n\014dat" +
"um_double\030\006 \001(\001H\000\022\024\n\ndatum_bool\030\007 \001(\010H\000\022" +
"\026\n\014datum_string\030\010 \001(\tH\000\022\025\n\013datum_bytes\030\t" +
" \001(\014H\000\022)\n\013datum_point\030\n \001(\0132\022.decoderbuf" +
"s.PointH\000B\007\n\005datum\"\301\001\n\nRowMessage\022\026\n\016tra" +
"nsaction_id\030\001 \001(\r\022\023\n\013commit_time\030\002 \001(\004\022\r",
"\n\005table\030\003 \001(\t\022\033\n\002op\030\004 \001(\0162\017.decoderbufs." +
"Op\022,\n\tnew_tuple\030\005 \003(\0132\031.decoderbufs.Datu" +
"mMessage\022,\n\told_tuple\030\006 \003(\0132\031.decoderbuf" +
"s.DatumMessage*(\n\002Op\022\n\n\006INSERT\020\000\022\n\n\006UPDA" +
"TE\020\001\022\n\n\006DELETE\020\002B3\n&io.debezium.connecto" +
"r.postgresql.protoB\007PgProtoH\001"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
public com.google.protobuf.ExtensionRegistry assignDescriptors(
com.google.protobuf.Descriptors.FileDescriptor root) {
descriptor = root;
return null;
}
};
com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
}, assigner);
internal_static_decoderbufs_Point_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_decoderbufs_Point_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_decoderbufs_Point_descriptor,
new java.lang.String[] { "X", "Y", });
internal_static_decoderbufs_DatumMessage_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_decoderbufs_DatumMessage_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_decoderbufs_DatumMessage_descriptor,
new java.lang.String[] { "ColumnName", "ColumnType", "DatumInt32", "DatumInt64", "DatumFloat", "DatumDouble", "DatumBool", "DatumString", "DatumBytes", "DatumPoint", "Datum", });
internal_static_decoderbufs_RowMessage_descriptor =
getDescriptor().getMessageTypes().get(2);
internal_static_decoderbufs_RowMessage_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_decoderbufs_RowMessage_descriptor,
new java.lang.String[] { "TransactionId", "CommitTime", "Table", "Op", "NewTuple", "OldTuple", });
}
// @@protoc_insertion_point(outer_class_scope)
}

View File

@ -0,0 +1,40 @@
package decoderbufs;
option java_package="io.debezium.connector.postgresql.proto";
option java_outer_classname = "PgProto";
option optimize_for = SPEED;
enum Op {
INSERT = 0;
UPDATE = 1;
DELETE = 2;
}
message Point {
required double x = 1;
required double y = 2;
}
message DatumMessage {
optional string column_name = 1;
optional int64 column_type = 2;
oneof datum {
int32 datum_int32 = 3;
int64 datum_int64 = 4;
float datum_float = 5;
double datum_double = 6;
bool datum_bool = 7;
string datum_string = 8;
bytes datum_bytes = 9;
Point datum_point = 10;
}
}
message RowMessage {
optional uint32 transaction_id = 1;
optional uint64 commit_time = 2;
optional string table = 3;
optional Op op = 4;
repeated DatumMessage new_tuple = 5;
repeated DatumMessage old_tuple = 6;
}

View File

@ -0,0 +1 @@
version=${project.version}

View File

@ -0,0 +1,76 @@
/*
* Copyright Debezium Authors.
*
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package io.debezium.connector.postgres;
import io.debezium.config.Configuration;
import io.debezium.jdbc.JdbcConfiguration;
import io.debezium.jdbc.JdbcConnection;
/**
* A utility for integration test cases to connect the PostgreSQL server running in the Docker container created by this module's
* build.
*
* @author Randall Hauch
*/
public class PostgresConnection extends JdbcConnection {
/**
* Obtain a connection instance to the named test database.
*
* @return the PostgresConnection instance; never null
*/
public static PostgresConnection forTestDatabase() {
return new PostgresConnection(JdbcConfiguration.copy(Configuration.fromSystemProperties("database."))
.build());
}
/**
* Obtain a connection instance to the named test database.
*
* @param databaseName the name of the test database
* @return the PostgresConnection instance; never null
*/
public static PostgresConnection forTestDatabase(String databaseName) {
return new PostgresConnection(JdbcConfiguration.copy(Configuration.fromSystemProperties("database."))
.withDatabase(databaseName)
.build());
}
/**
* Obtain a connection instance to the named test database.
*
* @param databaseName the name of the test database
* @param username the username
* @param password the password
* @return the PostgresConnection instance; never null
*/
public static PostgresConnection forTestDatabase(String databaseName, String username, String password) {
return new PostgresConnection(JdbcConfiguration.copy(Configuration.fromSystemProperties("database."))
.withDatabase(databaseName)
.withUser(username)
.withPassword(password)
.build());
}
protected static void addDefaults(Configuration.Builder builder) {
builder.withDefault(JdbcConfiguration.HOSTNAME, "localhost")
.withDefault(JdbcConfiguration.PORT, 5432)
.withDefault(JdbcConfiguration.USER, "postgres")
.withDefault(JdbcConfiguration.PASSWORD, "postgres");
}
protected static ConnectionFactory FACTORY = JdbcConnection.patternBasedFactory("jdbc:postgresql://${hostname}:${port}/${dbname}");
/**
* Create a new instance with the given configuration and connection factory.
*
* @param config the configuration; may not be null
*/
protected PostgresConnection(Configuration config) {
super(config, FACTORY, null, PostgresConnection::addDefaults);
}
}

View File

@ -0,0 +1,129 @@
/*
* Copyright Debezium Authors.
*
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
*/
package io.debezium.connector.postgres;
import java.sql.SQLException;
import java.sql.Types;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.junit.Ignore;
import org.junit.Test;
import org.postgresql.util.PGobject;
import com.google.protobuf.InvalidProtocolBufferException;
import io.debezium.connector.postgresql.proto.PgProto;
import io.debezium.util.Testing;
@Ignore
public class PostgresConnectionIT implements Testing {
@Test
public void shouldInitWALReaderAndReadLog() throws SQLException {
try (PostgresConnection conn = PostgresConnection.forTestDatabase("postgres")) {
conn.connect();
conn.execute("DROP TABLE IF EXISTS table_with_pk ");
conn.execute("DROP TABLE IF EXISTS table_without_pk ");
conn.execute("CREATE TABLE table_with_pk (a SERIAL, b VARCHAR(30), c TIMESTAMP NOT NULL, PRIMARY KEY(a, c));",
"CREATE TABLE table_without_pk (a SERIAL, b NUMERIC(5,2), c TEXT);");
conn.execute("INSERT INTO table_with_pk (b, c) VALUES('Backup and Restore', now());");
conn.execute("INSERT INTO table_with_pk (b, c) VALUES('Tuning', now());");
conn.execute("DELETE FROM table_with_pk WHERE a < 3;");
initLogicalReplication(conn);
consumeChanges(conn);
// Postgres WILL NOT fire any changes (UPDATES or DELETES) for tables which don't have a PK by default EXCEPT
// if that table has a REPLICA IDENTITY of FULL.
// See http://michael.otacoo.com/postgresql-2/postgres-9-4-feature-highlight-replica-identity-logical-replication/
conn.execute("ALTER TABLE table_without_pk REPLICA IDENTITY FULL");
conn.execute("INSERT INTO table_with_pk (b, c) VALUES('Backup and Restore', now());");
conn.execute("INSERT INTO table_with_pk (b, c) VALUES('Tuning', now());");
conn.execute("DELETE FROM table_with_pk WHERE a < 3;");
conn.execute("INSERT INTO table_without_pk (b,c) VALUES (1, 'Tapir');");
conn.execute("UPDATE table_without_pk SET c = 'Anita' WHERE c = 'Tapir';");
consumeChanges(conn);
// peekChanges(conn);
// consumeChanges(conn);
}
}
private void stopLogicalReplication(PostgresConnection conn) throws Exception {
conn.call("SELECT * FROM pg_drop_replication_slot(?);", statement -> statement.setString(1, "test_slot"), null);
}
@Test
public void startMonitoring() throws Exception {
ExecutorService executorService = Executors.newFixedThreadPool(1);
try (PostgresConnection conn = PostgresConnection.forTestDatabase("postgres")) {
conn.connect();
initLogicalReplication(conn);
executorService.submit(() -> {
try {
while (true) {
consumeChanges(conn);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
return null;
}
}).get();
} finally {
executorService.shutdown();
}
}
private void peekChanges(PostgresConnection conn) throws SQLException {
callStatementAndPrintMessage(conn, "SELECT data FROM pg_logical_slot_peek_binary_changes(?, ?, ?, ?, ?);");
}
private void consumeChanges(PostgresConnection conn) throws SQLException {
callStatementAndPrintMessage(conn, "SELECT data FROM pg_logical_slot_get_binary_changes(?, ?, ?, ?, ?);");
}
private void callStatementAndPrintMessage(PostgresConnection conn, String stmt) throws SQLException {
conn.call(stmt,
statement -> {
statement.setString(1, "test_slot");
PGobject pgLSN = new PGobject();
pgLSN.setType("pg_lsn");
pgLSN.setValue(null);
statement.setObject(2, null);
statement.setNull(3, Types.INTEGER);
statement.setString(4, "debug-mode");
statement.setString(5, "0");
}, rs -> {
while (rs.next()) {
byte[] protobufContent = rs.getBytes(1);
PgProto.RowMessage message = null;
try {
message = PgProto.RowMessage.parseFrom(protobufContent);
System.out.println(message.toString());
} catch (InvalidProtocolBufferException e) {
throw new RuntimeException(e);
}
}
});
}
private void initLogicalReplication(PostgresConnection conn) throws SQLException {
try {
conn.call("SELECT * FROM pg_create_logical_replication_slot(?, ?)", statement -> {
statement.setString(1, "test_slot");
statement.setString(2, "decoderbufs");
}, null);
} catch (SQLException e) {
if (!e.getMessage().toLowerCase().contains("already exists")) {
throw e;
}
}
}
}

View File

@ -0,0 +1,12 @@
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext} %m [%c]%n
# Root logger option
log4j.rootLogger=INFO, stdout
# Set up the default logging to be INFO level, then override specific units
log4j.logger.io.debezium=INFO
log4j.logger.io.debezium.embedded.EmbeddedEngine$EmbeddedConfig=WARN

View File

@ -5,6 +5,7 @@
*/
package io.debezium.jdbc;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
@ -27,7 +28,6 @@
import java.util.concurrent.ConcurrentMap;
import java.util.function.Consumer;
import java.util.stream.Stream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -274,6 +274,11 @@ public static interface StatementPreparer {
void accept(PreparedStatement statement) throws SQLException;
}
@FunctionalInterface
public static interface CallPreparer {
void accept(CallableStatement statement) throws SQLException;
}
/**
* Execute a SQL query.
*
@ -287,6 +292,30 @@ public JdbcConnection query(String query, ResultSetConsumer resultConsumer) thro
return query(query,conn->conn.createStatement(),resultConsumer);
}
/**
* Execute a stored procedure.
*
* @param sql the SQL query; may not be {@code null}
* @param callPreparer a {@link CallPreparer} instance which can be used to set additional parameters; may be null
* @param resultSetConsumer a {@link ResultSetConsumer} instance which can be used to process the results; may be null
* @return this object for chaining methods together
* @throws SQLException if anything unexpected fails
*/
public JdbcConnection call(String sql, CallPreparer callPreparer, ResultSetConsumer resultSetConsumer) throws SQLException {
Connection conn = connection();
try (CallableStatement callableStatement = conn.prepareCall(sql)) {
if (callPreparer != null) {
callPreparer.accept(callableStatement);
}
try (ResultSet rs = callableStatement.executeQuery()) {
if (resultSetConsumer != null) {
resultSetConsumer.accept(rs);
}
}
}
return this;
}
/**
* Execute a SQL query.
*

View File

@ -98,6 +98,7 @@
<module>debezium-core</module>
<module>debezium-embedded</module>
<module>debezium-connector-mysql</module>
<module>debezium-connector-postgres</module>
<module>debezium-connector-mongodb</module>
</modules>