content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: lot/tablesink.proto
  
  package apsara.odps.lot;
  
  import apsara.odps.DynamicPartitionSpecProtos;
  import apsara.odps.ExpressionProtos;
  import apsara.odps.PartitionSpecProtos;
  
  public final class TableSinkProtos {
    private TableSinkProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public interface TableSinkOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string Table = 2;
      boolean hasTable();
      String getTable();
      
      // required bool IsOverwrite = 3;
      boolean hasIsOverwrite();
      boolean getIsOverwrite();
      
      // optional .apsara.odps.PartitionSpec Partition = 4;
      boolean hasPartition();
      PartitionSpecProtos.PartitionSpec getPartition();
      PartitionSpecProtos.PartitionSpecOrBuilder getPartitionOrBuilder();
      
      // optional .apsara.odps.DynamicPartitionSpec DynamicPartition = 5;
      boolean hasDynamicPartition();
      DynamicPartitionSpecProtos.DynamicPartitionSpec getDynamicPartition();
      DynamicPartitionSpecProtos.DynamicPartitionSpecOrBuilder getDynamicPartitionOrBuilder();
    }
    public static final class TableSink extends
        com.google.protobuf.GeneratedMessage
        implements TableSinkOrBuilder {
      // Use TableSink.newBuilder() to construct.
      private TableSink(Builder builder) {
        super(builder);
      }
      private TableSink(boolean noInit) {}
      
      private static final TableSink defaultInstance;
      public static TableSink getDefaultInstance() {
        return defaultInstance;
      }
      
      public TableSink getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return TableSinkProtos.internal_static_apsara_odps_lot_TableSink_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return TableSinkProtos.internal_static_apsara_odps_lot_TableSink_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string Project = 1;
      public static final int PROJECT_FIELD_NUMBER = 1;
      private Object project_;
      public boolean hasProject() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getProject() {
        Object ref = project_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            project_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getProjectBytes() {
        Object ref = project_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          project_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string Table = 2;
      public static final int TABLE_FIELD_NUMBER = 2;
      private Object table_;
      public boolean hasTable() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTable() {
        Object ref = table_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            table_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableBytes() {
        Object ref = table_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          table_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required bool IsOverwrite = 3;
      public static final int ISOVERWRITE_FIELD_NUMBER = 3;
      private boolean isOverwrite_;
      public boolean hasIsOverwrite() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public boolean getIsOverwrite() {
        return isOverwrite_;
      }
      
      // optional .apsara.odps.PartitionSpec Partition = 4;
      public static final int PARTITION_FIELD_NUMBER = 4;
      private PartitionSpecProtos.PartitionSpec partition_;
      public boolean hasPartition() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public PartitionSpecProtos.PartitionSpec getPartition() {
        return partition_;
      }
      public PartitionSpecProtos.PartitionSpecOrBuilder getPartitionOrBuilder() {
        return partition_;
      }
      
      // optional .apsara.odps.DynamicPartitionSpec DynamicPartition = 5;
      public static final int DYNAMICPARTITION_FIELD_NUMBER = 5;
      private DynamicPartitionSpecProtos.DynamicPartitionSpec dynamicPartition_;
      public boolean hasDynamicPartition() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public DynamicPartitionSpecProtos.DynamicPartitionSpec getDynamicPartition() {
        return dynamicPartition_;
      }
      public DynamicPartitionSpecProtos.DynamicPartitionSpecOrBuilder getDynamicPartitionOrBuilder() {
        return dynamicPartition_;
      }
      
      private void initFields() {
        project_ = "";
        table_ = "";
        isOverwrite_ = false;
        partition_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
        dynamicPartition_ = DynamicPartitionSpecProtos.DynamicPartitionSpec.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasProject()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTable()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasIsOverwrite()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasPartition()) {
          if (!getPartition().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDynamicPartition()) {
          if (!getDynamicPartition().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, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTableBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, isOverwrite_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, partition_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeMessage(5, dynamicPartition_);
        }
        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, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getTableBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, isOverwrite_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, partition_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, dynamicPartition_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @Override
      protected Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      public static TableSink parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static TableSink parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static TableSink parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static TableSink parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static TableSink parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static TableSink parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static TableSink parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static TableSink parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static TableSink parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static TableSink parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(TableSink prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements TableSinkOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return TableSinkProtos.internal_static_apsara_odps_lot_TableSink_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return TableSinkProtos.internal_static_apsara_odps_lot_TableSink_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.lot.TableSinkProtos.TableSink.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getPartitionFieldBuilder();
            getDynamicPartitionFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          isOverwrite_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          if (partitionBuilder_ == null) {
            partition_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
          } else {
            partitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (dynamicPartitionBuilder_ == null) {
            dynamicPartition_ = DynamicPartitionSpecProtos.DynamicPartitionSpec.getDefaultInstance();
          } else {
            dynamicPartitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return TableSink.getDescriptor();
        }
        
        public TableSink getDefaultInstanceForType() {
          return TableSink.getDefaultInstance();
        }
        
        public TableSink build() {
          TableSink result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private TableSink buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          TableSink result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public TableSink buildPartial() {
          TableSink result = new TableSink(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.project_ = project_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.table_ = table_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.isOverwrite_ = isOverwrite_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (partitionBuilder_ == null) {
            result.partition_ = partition_;
          } else {
            result.partition_ = partitionBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          if (dynamicPartitionBuilder_ == null) {
            result.dynamicPartition_ = dynamicPartition_;
          } else {
            result.dynamicPartition_ = dynamicPartitionBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof TableSink) {
            return mergeFrom((TableSink)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(TableSink other) {
          if (other == TableSink.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (other.hasIsOverwrite()) {
            setIsOverwrite(other.getIsOverwrite());
          }
          if (other.hasPartition()) {
            mergePartition(other.getPartition());
          }
          if (other.hasDynamicPartition()) {
            mergeDynamicPartition(other.getDynamicPartition());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTable()) {
            
            return false;
          }
          if (!hasIsOverwrite()) {
            
            return false;
          }
          if (hasPartition()) {
            if (!getPartition().isInitialized()) {
              
              return false;
            }
          }
          if (hasDynamicPartition()) {
            if (!getDynamicPartition().isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                project_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                table_ = input.readBytes();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                isOverwrite_ = input.readBool();
                break;
              }
              case 34: {
                PartitionSpecProtos.PartitionSpec.Builder subBuilder = PartitionSpecProtos.PartitionSpec.newBuilder();
                if (hasPartition()) {
                  subBuilder.mergeFrom(getPartition());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setPartition(subBuilder.buildPartial());
                break;
              }
              case 42: {
                DynamicPartitionSpecProtos.DynamicPartitionSpec.Builder subBuilder = DynamicPartitionSpecProtos.DynamicPartitionSpec.newBuilder();
                if (hasDynamicPartition()) {
                  subBuilder.mergeFrom(getDynamicPartition());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDynamicPartition(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string Project = 1;
        private Object project_ = "";
        public boolean hasProject() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getProject() {
          Object ref = project_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            project_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setProject(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          project_ = value;
          onChanged();
          return this;
        }
        public Builder clearProject() {
          bitField0_ = (bitField0_ & ~0x00000001);
          project_ = getDefaultInstance().getProject();
          onChanged();
          return this;
        }
        void setProject(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          project_ = value;
          onChanged();
        }
        
        // required string Table = 2;
        private Object table_ = "";
        public boolean hasTable() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getTable() {
          Object ref = table_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            table_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTable(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          table_ = value;
          onChanged();
          return this;
        }
        public Builder clearTable() {
          bitField0_ = (bitField0_ & ~0x00000002);
          table_ = getDefaultInstance().getTable();
          onChanged();
          return this;
        }
        void setTable(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          table_ = value;
          onChanged();
        }
        
        // required bool IsOverwrite = 3;
        private boolean isOverwrite_ ;
        public boolean hasIsOverwrite() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public boolean getIsOverwrite() {
          return isOverwrite_;
        }
        public Builder setIsOverwrite(boolean value) {
          bitField0_ |= 0x00000004;
          isOverwrite_ = value;
          onChanged();
          return this;
        }
        public Builder clearIsOverwrite() {
          bitField0_ = (bitField0_ & ~0x00000004);
          isOverwrite_ = false;
          onChanged();
          return this;
        }
        
        // optional .apsara.odps.PartitionSpec Partition = 4;
        private PartitionSpecProtos.PartitionSpec partition_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder> partitionBuilder_;
        public boolean hasPartition() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public PartitionSpecProtos.PartitionSpec getPartition() {
          if (partitionBuilder_ == null) {
            return partition_;
          } else {
            return partitionBuilder_.getMessage();
          }
        }
        public Builder setPartition(PartitionSpecProtos.PartitionSpec value) {
          if (partitionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            partition_ = value;
            onChanged();
          } else {
            partitionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setPartition(
            PartitionSpecProtos.PartitionSpec.Builder builderForValue) {
          if (partitionBuilder_ == null) {
            partition_ = builderForValue.build();
            onChanged();
          } else {
            partitionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergePartition(PartitionSpecProtos.PartitionSpec value) {
          if (partitionBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                partition_ != PartitionSpecProtos.PartitionSpec.getDefaultInstance()) {
              partition_ =
                PartitionSpecProtos.PartitionSpec.newBuilder(partition_).mergeFrom(value).buildPartial();
            } else {
              partition_ = value;
            }
            onChanged();
          } else {
            partitionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearPartition() {
          if (partitionBuilder_ == null) {
            partition_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
            onChanged();
          } else {
            partitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public PartitionSpecProtos.PartitionSpec.Builder getPartitionBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getPartitionFieldBuilder().getBuilder();
        }
        public PartitionSpecProtos.PartitionSpecOrBuilder getPartitionOrBuilder() {
          if (partitionBuilder_ != null) {
            return partitionBuilder_.getMessageOrBuilder();
          } else {
            return partition_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder>
            getPartitionFieldBuilder() {
          if (partitionBuilder_ == null) {
            partitionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder>(
                    partition_,
                    getParentForChildren(),
                    isClean());
            partition_ = null;
          }
          return partitionBuilder_;
        }
        
        // optional .apsara.odps.DynamicPartitionSpec DynamicPartition = 5;
        private DynamicPartitionSpecProtos.DynamicPartitionSpec dynamicPartition_ = DynamicPartitionSpecProtos.DynamicPartitionSpec.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            DynamicPartitionSpecProtos.DynamicPartitionSpec, DynamicPartitionSpecProtos.DynamicPartitionSpec.Builder, DynamicPartitionSpecProtos.DynamicPartitionSpecOrBuilder> dynamicPartitionBuilder_;
        public boolean hasDynamicPartition() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public DynamicPartitionSpecProtos.DynamicPartitionSpec getDynamicPartition() {
          if (dynamicPartitionBuilder_ == null) {
            return dynamicPartition_;
          } else {
            return dynamicPartitionBuilder_.getMessage();
          }
        }
        public Builder setDynamicPartition(DynamicPartitionSpecProtos.DynamicPartitionSpec value) {
          if (dynamicPartitionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            dynamicPartition_ = value;
            onChanged();
          } else {
            dynamicPartitionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder setDynamicPartition(
            DynamicPartitionSpecProtos.DynamicPartitionSpec.Builder builderForValue) {
          if (dynamicPartitionBuilder_ == null) {
            dynamicPartition_ = builderForValue.build();
            onChanged();
          } else {
            dynamicPartitionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder mergeDynamicPartition(DynamicPartitionSpecProtos.DynamicPartitionSpec value) {
          if (dynamicPartitionBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010) &&
                dynamicPartition_ != DynamicPartitionSpecProtos.DynamicPartitionSpec.getDefaultInstance()) {
              dynamicPartition_ =
                DynamicPartitionSpecProtos.DynamicPartitionSpec.newBuilder(dynamicPartition_).mergeFrom(value).buildPartial();
            } else {
              dynamicPartition_ = value;
            }
            onChanged();
          } else {
            dynamicPartitionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder clearDynamicPartition() {
          if (dynamicPartitionBuilder_ == null) {
            dynamicPartition_ = DynamicPartitionSpecProtos.DynamicPartitionSpec.getDefaultInstance();
            onChanged();
          } else {
            dynamicPartitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        public DynamicPartitionSpecProtos.DynamicPartitionSpec.Builder getDynamicPartitionBuilder() {
          bitField0_ |= 0x00000010;
          onChanged();
          return getDynamicPartitionFieldBuilder().getBuilder();
        }
        public DynamicPartitionSpecProtos.DynamicPartitionSpecOrBuilder getDynamicPartitionOrBuilder() {
          if (dynamicPartitionBuilder_ != null) {
            return dynamicPartitionBuilder_.getMessageOrBuilder();
          } else {
            return dynamicPartition_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            DynamicPartitionSpecProtos.DynamicPartitionSpec, DynamicPartitionSpecProtos.DynamicPartitionSpec.Builder, DynamicPartitionSpecProtos.DynamicPartitionSpecOrBuilder>
            getDynamicPartitionFieldBuilder() {
          if (dynamicPartitionBuilder_ == null) {
            dynamicPartitionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                DynamicPartitionSpecProtos.DynamicPartitionSpec, DynamicPartitionSpecProtos.DynamicPartitionSpec.Builder, DynamicPartitionSpecProtos.DynamicPartitionSpecOrBuilder>(
                    dynamicPartition_,
                    getParentForChildren(),
                    isClean());
            dynamicPartition_ = null;
          }
          return dynamicPartitionBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.lot.TableSink)
      }
      
      static {
        defaultInstance = new TableSink(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.lot.TableSink)
    }
    
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_lot_TableSink_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_lot_TableSink_fieldAccessorTable;
    
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      String[] descriptorData = {
        "\n\023lot/tablesink.proto\022\017apsara.odps.lot\032\032" +
        "common/partitionspec.proto\032!common/dynam" +
        "icpartitionspec.proto\032\027common/expression" +
        ".proto\"\254\001\n\tTableSink\022\017\n\007Project\030\001 \002(\t\022\r\n" +
        "\005Table\030\002 \002(\t\022\023\n\013IsOverwrite\030\003 \002(\010\022-\n\tPar" +
        "tition\030\004 \001(\0132\032.apsara.odps.PartitionSpec" +
        "\022;\n\020DynamicPartition\030\005 \001(\0132!.apsara.odps" +
        ".DynamicPartitionSpecB\021B\017TableSinkProtos"
      };
      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;
            internal_static_apsara_odps_lot_TableSink_descriptor =
              getDescriptor().getMessageTypes().get(0);
            internal_static_apsara_odps_lot_TableSink_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_lot_TableSink_descriptor,
                new String[] { "Project", "Table", "IsOverwrite", "Partition", "DynamicPartition", },
                TableSink.class,
                TableSink.Builder.class);
            return null;
          }
        };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            PartitionSpecProtos.getDescriptor(),
            DynamicPartitionSpecProtos.getDescriptor(),
            ExpressionProtos.getDescriptor(),
          }, assigner);
    }
    
    // @@protoc_insertion_point(outer_class_scope)
  }
  