content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: common/ddl.proto
  
  package apsara.odps;
  
  public final class DDLProtos {
    private DDLProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public interface ColumnDescriptionOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Name = 1;
      boolean hasName();
      String getName();
      
      // required .apsara.odps.Type Type = 2;
      boolean hasType();
      TypesProtos.Type getType();
      
      // required int32 Index = 3;
      boolean hasIndex();
      int getIndex();
      
      // optional string Comment = 4;
      boolean hasComment();
      String getComment();
    }
    public static final class ColumnDescription extends
        com.google.protobuf.GeneratedMessage
        implements ColumnDescriptionOrBuilder {
      // Use ColumnDescription.newBuilder() to construct.
      private ColumnDescription(Builder builder) {
        super(builder);
      }
      private ColumnDescription(boolean noInit) {}
      
      private static final ColumnDescription defaultInstance;
      public static ColumnDescription getDefaultInstance() {
        return defaultInstance;
      }
      
      public ColumnDescription getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_ColumnDescription_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_ColumnDescription_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string Name = 1;
      public static final int NAME_FIELD_NUMBER = 1;
      private Object name_;
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getName() {
        Object ref = name_;
        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)) {
            name_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required .apsara.odps.Type Type = 2;
      public static final int TYPE_FIELD_NUMBER = 2;
      private TypesProtos.Type type_;
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public TypesProtos.Type getType() {
        return type_;
      }
      
      // required int32 Index = 3;
      public static final int INDEX_FIELD_NUMBER = 3;
      private int index_;
      public boolean hasIndex() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public int getIndex() {
        return index_;
      }
      
      // optional string Comment = 4;
      public static final int COMMENT_FIELD_NUMBER = 4;
      private Object comment_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getComment() {
        Object ref = comment_;
        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)) {
            comment_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getCommentBytes() {
        Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        name_ = "";
        type_ = TypesProtos.Type.Integer;
        index_ = 0;
        comment_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasIndex()) {
          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, getNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeEnum(2, type_.getNumber());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeInt32(3, index_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, getCommentBytes());
        }
        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, getNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, type_.getNumber());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, index_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getCommentBytes());
        }
        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 ColumnDescription parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static ColumnDescription parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static ColumnDescription parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static ColumnDescription parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static ColumnDescription parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static ColumnDescription parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static ColumnDescription parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static ColumnDescription 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 ColumnDescription parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static ColumnDescription 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(ColumnDescription 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 ColumnDescriptionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_ColumnDescription_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_ColumnDescription_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.ColumnDescription.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(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();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = TypesProtos.Type.Integer;
          bitField0_ = (bitField0_ & ~0x00000002);
          index_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ColumnDescription.getDescriptor();
        }
        
        public ColumnDescription getDefaultInstanceForType() {
          return ColumnDescription.getDefaultInstance();
        }
        
        public ColumnDescription build() {
          ColumnDescription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private ColumnDescription buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          ColumnDescription result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public ColumnDescription buildPartial() {
          ColumnDescription result = new ColumnDescription(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.index_ = index_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.comment_ = comment_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ColumnDescription) {
            return mergeFrom((ColumnDescription)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(ColumnDescription other) {
          if (other == ColumnDescription.getDefaultInstance()) return this;
          if (other.hasName()) {
            setName(other.getName());
          }
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasIndex()) {
            setIndex(other.getIndex());
          }
          if (other.hasComment()) {
            setComment(other.getComment());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasName()) {
            
            return false;
          }
          if (!hasType()) {
            
            return false;
          }
          if (!hasIndex()) {
            
            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;
                name_ = input.readBytes();
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                TypesProtos.Type value = TypesProtos.Type.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  type_ = value;
                }
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                index_ = input.readInt32();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                comment_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string Name = 1;
        private Object name_ = "";
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        void setName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
        }
        
        // required .apsara.odps.Type Type = 2;
        private TypesProtos.Type type_ = TypesProtos.Type.Integer;
        public boolean hasType() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public TypesProtos.Type getType() {
          return type_;
        }
        public Builder setType(TypesProtos.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          type_ = value;
          onChanged();
          return this;
        }
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000002);
          type_ = TypesProtos.Type.Integer;
          onChanged();
          return this;
        }
        
        // required int32 Index = 3;
        private int index_ ;
        public boolean hasIndex() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public int getIndex() {
          return index_;
        }
        public Builder setIndex(int value) {
          bitField0_ |= 0x00000004;
          index_ = value;
          onChanged();
          return this;
        }
        public Builder clearIndex() {
          bitField0_ = (bitField0_ & ~0x00000004);
          index_ = 0;
          onChanged();
          return this;
        }
        
        // optional string Comment = 4;
        private Object comment_ = "";
        public boolean hasComment() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getComment() {
          Object ref = comment_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            comment_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setComment(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          comment_ = value;
          onChanged();
          return this;
        }
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00000008);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        void setComment(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          comment_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.ColumnDescription)
      }
      
      static {
        defaultInstance = new ColumnDescription(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.ColumnDescription)
    }
    
    public interface CreateTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string Table = 2;
      boolean hasTable();
      String getTable();
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      java.util.List<ColumnDescription>
          getColumnsList();
      ColumnDescription getColumns(int index);
      int getColumnsCount();
      java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList();
      ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index);
      
      // repeated .apsara.odps.ColumnDescription PartitionColumns = 4;
      java.util.List<ColumnDescription>
          getPartitionColumnsList();
      ColumnDescription getPartitionColumns(int index);
      int getPartitionColumnsCount();
      java.util.List<? extends ColumnDescriptionOrBuilder>
          getPartitionColumnsOrBuilderList();
      ColumnDescriptionOrBuilder getPartitionColumnsOrBuilder(
          int index);
      
      // optional string Comment = 5;
      boolean hasComment();
      String getComment();
      
      // optional bool IfNotExists = 6 [default = false];
      boolean hasIfNotExists();
      boolean getIfNotExists();
      
      // optional int32 LifeCycle = 7;
      boolean hasLifeCycle();
      int getLifeCycle();
    }
    public static final class CreateTable extends
        com.google.protobuf.GeneratedMessage
        implements CreateTableOrBuilder {
      // Use CreateTable.newBuilder() to construct.
      private CreateTable(Builder builder) {
        super(builder);
      }
      private CreateTable(boolean noInit) {}
      
      private static final CreateTable defaultInstance;
      public static CreateTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public CreateTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_CreateTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_CreateTable_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;
        }
      }
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      public static final int COLUMNS_FIELD_NUMBER = 3;
      private java.util.List<ColumnDescription> columns_;
      public java.util.List<ColumnDescription> getColumnsList() {
        return columns_;
      }
      public java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList() {
        return columns_;
      }
      public int getColumnsCount() {
        return columns_.size();
      }
      public ColumnDescription getColumns(int index) {
        return columns_.get(index);
      }
      public ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index) {
        return columns_.get(index);
      }
      
      // repeated .apsara.odps.ColumnDescription PartitionColumns = 4;
      public static final int PARTITIONCOLUMNS_FIELD_NUMBER = 4;
      private java.util.List<ColumnDescription> partitionColumns_;
      public java.util.List<ColumnDescription> getPartitionColumnsList() {
        return partitionColumns_;
      }
      public java.util.List<? extends ColumnDescriptionOrBuilder>
          getPartitionColumnsOrBuilderList() {
        return partitionColumns_;
      }
      public int getPartitionColumnsCount() {
        return partitionColumns_.size();
      }
      public ColumnDescription getPartitionColumns(int index) {
        return partitionColumns_.get(index);
      }
      public ColumnDescriptionOrBuilder getPartitionColumnsOrBuilder(
          int index) {
        return partitionColumns_.get(index);
      }
      
      // optional string Comment = 5;
      public static final int COMMENT_FIELD_NUMBER = 5;
      private Object comment_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getComment() {
        Object ref = comment_;
        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)) {
            comment_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getCommentBytes() {
        Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional bool IfNotExists = 6 [default = false];
      public static final int IFNOTEXISTS_FIELD_NUMBER = 6;
      private boolean ifNotExists_;
      public boolean hasIfNotExists() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public boolean getIfNotExists() {
        return ifNotExists_;
      }
      
      // optional int32 LifeCycle = 7;
      public static final int LIFECYCLE_FIELD_NUMBER = 7;
      private int lifeCycle_;
      public boolean hasLifeCycle() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public int getLifeCycle() {
        return lifeCycle_;
      }
      
      private void initFields() {
        project_ = "";
        table_ = "";
        columns_ = java.util.Collections.emptyList();
        partitionColumns_ = java.util.Collections.emptyList();
        comment_ = "";
        ifNotExists_ = false;
        lifeCycle_ = 0;
      }
      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;
        }
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getPartitionColumnsCount(); i++) {
          if (!getPartitionColumns(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.writeBytes(1, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          output.writeMessage(3, columns_.get(i));
        }
        for (int i = 0; i < partitionColumns_.size(); i++) {
          output.writeMessage(4, partitionColumns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(5, getCommentBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBool(6, ifNotExists_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeInt32(7, lifeCycle_);
        }
        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());
        }
        for (int i = 0; i < columns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, columns_.get(i));
        }
        for (int i = 0; i < partitionColumns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, partitionColumns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, getCommentBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, ifNotExists_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(7, lifeCycle_);
        }
        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 CreateTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static CreateTable 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 CreateTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateTable 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(CreateTable 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 CreateTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_CreateTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_CreateTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.CreateTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColumnsFieldBuilder();
            getPartitionColumnsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            columnsBuilder_.clear();
          }
          if (partitionColumnsBuilder_ == null) {
            partitionColumns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            partitionColumnsBuilder_.clear();
          }
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          ifNotExists_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          lifeCycle_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return CreateTable.getDescriptor();
        }
        
        public CreateTable getDefaultInstanceForType() {
          return CreateTable.getDefaultInstance();
        }
        
        public CreateTable build() {
          CreateTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private CreateTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          CreateTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public CreateTable buildPartial() {
          CreateTable result = new CreateTable(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 (columnsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              columns_ = java.util.Collections.unmodifiableList(columns_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.columns_ = columns_;
          } else {
            result.columns_ = columnsBuilder_.build();
          }
          if (partitionColumnsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              partitionColumns_ = java.util.Collections.unmodifiableList(partitionColumns_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.partitionColumns_ = partitionColumns_;
          } else {
            result.partitionColumns_ = partitionColumnsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000004;
          }
          result.comment_ = comment_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000008;
          }
          result.ifNotExists_ = ifNotExists_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000010;
          }
          result.lifeCycle_ = lifeCycle_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CreateTable) {
            return mergeFrom((CreateTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(CreateTable other) {
          if (other == CreateTable.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (columnsBuilder_ == null) {
            if (!other.columns_.isEmpty()) {
              if (columns_.isEmpty()) {
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureColumnsIsMutable();
                columns_.addAll(other.columns_);
              }
              onChanged();
            }
          } else {
            if (!other.columns_.isEmpty()) {
              if (columnsBuilder_.isEmpty()) {
                columnsBuilder_.dispose();
                columnsBuilder_ = null;
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
                columnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColumnsFieldBuilder() : null;
              } else {
                columnsBuilder_.addAllMessages(other.columns_);
              }
            }
          }
          if (partitionColumnsBuilder_ == null) {
            if (!other.partitionColumns_.isEmpty()) {
              if (partitionColumns_.isEmpty()) {
                partitionColumns_ = other.partitionColumns_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensurePartitionColumnsIsMutable();
                partitionColumns_.addAll(other.partitionColumns_);
              }
              onChanged();
            }
          } else {
            if (!other.partitionColumns_.isEmpty()) {
              if (partitionColumnsBuilder_.isEmpty()) {
                partitionColumnsBuilder_.dispose();
                partitionColumnsBuilder_ = null;
                partitionColumns_ = other.partitionColumns_;
                bitField0_ = (bitField0_ & ~0x00000008);
                partitionColumnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPartitionColumnsFieldBuilder() : null;
              } else {
                partitionColumnsBuilder_.addAllMessages(other.partitionColumns_);
              }
            }
          }
          if (other.hasComment()) {
            setComment(other.getComment());
          }
          if (other.hasIfNotExists()) {
            setIfNotExists(other.getIfNotExists());
          }
          if (other.hasLifeCycle()) {
            setLifeCycle(other.getLifeCycle());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTable()) {
            
            return false;
          }
          for (int i = 0; i < getColumnsCount(); i++) {
            if (!getColumns(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getPartitionColumnsCount(); i++) {
            if (!getPartitionColumns(i).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 26: {
                ColumnDescription.Builder subBuilder = ColumnDescription.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addColumns(subBuilder.buildPartial());
                break;
              }
              case 34: {
                ColumnDescription.Builder subBuilder = ColumnDescription.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addPartitionColumns(subBuilder.buildPartial());
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                comment_ = input.readBytes();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                ifNotExists_ = input.readBool();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                lifeCycle_ = input.readInt32();
                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();
        }
        
        // repeated .apsara.odps.ColumnDescription Columns = 3;
        private java.util.List<ColumnDescription> columns_ =
          java.util.Collections.emptyList();
        private void ensureColumnsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            columns_ = new java.util.ArrayList<ColumnDescription>(columns_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder> columnsBuilder_;
        
        public java.util.List<ColumnDescription> getColumnsList() {
          if (columnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(columns_);
          } else {
            return columnsBuilder_.getMessageList();
          }
        }
        public int getColumnsCount() {
          if (columnsBuilder_ == null) {
            return columns_.size();
          } else {
            return columnsBuilder_.getCount();
          }
        }
        public ColumnDescription getColumns(int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);
          } else {
            return columnsBuilder_.getMessage(index);
          }
        }
        public Builder setColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.set(index, value);
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.set(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(index, value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addColumns(
            ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllColumns(
            Iterable<? extends ColumnDescription> values) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            super.addAll(values, columns_);
            onChanged();
          } else {
            columnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearColumns() {
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        public Builder removeColumns(int index) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.remove(index);
            onChanged();
          } else {
            columnsBuilder_.remove(index);
          }
          return this;
        }
        public ColumnDescription.Builder getColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().getBuilder(index);
        }
        public ColumnDescriptionOrBuilder getColumnsOrBuilder(
            int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);  } else {
            return columnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ColumnDescriptionOrBuilder>
             getColumnsOrBuilderList() {
          if (columnsBuilder_ != null) {
            return columnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(columns_);
          }
        }
        public ColumnDescription.Builder addColumnsBuilder() {
          return getColumnsFieldBuilder().addBuilder(
              ColumnDescription.getDefaultInstance());
        }
        public ColumnDescription.Builder addColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().addBuilder(
              index, ColumnDescription.getDefaultInstance());
        }
        public java.util.List<ColumnDescription.Builder>
             getColumnsBuilderList() {
          return getColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>
            getColumnsFieldBuilder() {
          if (columnsBuilder_ == null) {
            columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>(
                    columns_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            columns_ = null;
          }
          return columnsBuilder_;
        }
        
        // repeated .apsara.odps.ColumnDescription PartitionColumns = 4;
        private java.util.List<ColumnDescription> partitionColumns_ =
          java.util.Collections.emptyList();
        private void ensurePartitionColumnsIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            partitionColumns_ = new java.util.ArrayList<ColumnDescription>(partitionColumns_);
            bitField0_ |= 0x00000008;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder> partitionColumnsBuilder_;
        
        public java.util.List<ColumnDescription> getPartitionColumnsList() {
          if (partitionColumnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(partitionColumns_);
          } else {
            return partitionColumnsBuilder_.getMessageList();
          }
        }
        public int getPartitionColumnsCount() {
          if (partitionColumnsBuilder_ == null) {
            return partitionColumns_.size();
          } else {
            return partitionColumnsBuilder_.getCount();
          }
        }
        public ColumnDescription getPartitionColumns(int index) {
          if (partitionColumnsBuilder_ == null) {
            return partitionColumns_.get(index);
          } else {
            return partitionColumnsBuilder_.getMessage(index);
          }
        }
        public Builder setPartitionColumns(
            int index, ColumnDescription value) {
          if (partitionColumnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePartitionColumnsIsMutable();
            partitionColumns_.set(index, value);
            onChanged();
          } else {
            partitionColumnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setPartitionColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (partitionColumnsBuilder_ == null) {
            ensurePartitionColumnsIsMutable();
            partitionColumns_.set(index, builderForValue.build());
            onChanged();
          } else {
            partitionColumnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addPartitionColumns(ColumnDescription value) {
          if (partitionColumnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePartitionColumnsIsMutable();
            partitionColumns_.add(value);
            onChanged();
          } else {
            partitionColumnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addPartitionColumns(
            int index, ColumnDescription value) {
          if (partitionColumnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePartitionColumnsIsMutable();
            partitionColumns_.add(index, value);
            onChanged();
          } else {
            partitionColumnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addPartitionColumns(
            ColumnDescription.Builder builderForValue) {
          if (partitionColumnsBuilder_ == null) {
            ensurePartitionColumnsIsMutable();
            partitionColumns_.add(builderForValue.build());
            onChanged();
          } else {
            partitionColumnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addPartitionColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (partitionColumnsBuilder_ == null) {
            ensurePartitionColumnsIsMutable();
            partitionColumns_.add(index, builderForValue.build());
            onChanged();
          } else {
            partitionColumnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllPartitionColumns(
            Iterable<? extends ColumnDescription> values) {
          if (partitionColumnsBuilder_ == null) {
            ensurePartitionColumnsIsMutable();
            super.addAll(values, partitionColumns_);
            onChanged();
          } else {
            partitionColumnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearPartitionColumns() {
          if (partitionColumnsBuilder_ == null) {
            partitionColumns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            partitionColumnsBuilder_.clear();
          }
          return this;
        }
        public Builder removePartitionColumns(int index) {
          if (partitionColumnsBuilder_ == null) {
            ensurePartitionColumnsIsMutable();
            partitionColumns_.remove(index);
            onChanged();
          } else {
            partitionColumnsBuilder_.remove(index);
          }
          return this;
        }
        public ColumnDescription.Builder getPartitionColumnsBuilder(
            int index) {
          return getPartitionColumnsFieldBuilder().getBuilder(index);
        }
        public ColumnDescriptionOrBuilder getPartitionColumnsOrBuilder(
            int index) {
          if (partitionColumnsBuilder_ == null) {
            return partitionColumns_.get(index);  } else {
            return partitionColumnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ColumnDescriptionOrBuilder>
             getPartitionColumnsOrBuilderList() {
          if (partitionColumnsBuilder_ != null) {
            return partitionColumnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(partitionColumns_);
          }
        }
        public ColumnDescription.Builder addPartitionColumnsBuilder() {
          return getPartitionColumnsFieldBuilder().addBuilder(
              ColumnDescription.getDefaultInstance());
        }
        public ColumnDescription.Builder addPartitionColumnsBuilder(
            int index) {
          return getPartitionColumnsFieldBuilder().addBuilder(
              index, ColumnDescription.getDefaultInstance());
        }
        public java.util.List<ColumnDescription.Builder>
             getPartitionColumnsBuilderList() {
          return getPartitionColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>
            getPartitionColumnsFieldBuilder() {
          if (partitionColumnsBuilder_ == null) {
            partitionColumnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>(
                    partitionColumns_,
                    ((bitField0_ & 0x00000008) == 0x00000008),
                    getParentForChildren(),
                    isClean());
            partitionColumns_ = null;
          }
          return partitionColumnsBuilder_;
        }
        
        // optional string Comment = 5;
        private Object comment_ = "";
        public boolean hasComment() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getComment() {
          Object ref = comment_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            comment_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setComment(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
          return this;
        }
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00000010);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        void setComment(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
        }
        
        // optional bool IfNotExists = 6 [default = false];
        private boolean ifNotExists_ ;
        public boolean hasIfNotExists() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public boolean getIfNotExists() {
          return ifNotExists_;
        }
        public Builder setIfNotExists(boolean value) {
          bitField0_ |= 0x00000020;
          ifNotExists_ = value;
          onChanged();
          return this;
        }
        public Builder clearIfNotExists() {
          bitField0_ = (bitField0_ & ~0x00000020);
          ifNotExists_ = false;
          onChanged();
          return this;
        }
        
        // optional int32 LifeCycle = 7;
        private int lifeCycle_ ;
        public boolean hasLifeCycle() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public int getLifeCycle() {
          return lifeCycle_;
        }
        public Builder setLifeCycle(int value) {
          bitField0_ |= 0x00000040;
          lifeCycle_ = value;
          onChanged();
          return this;
        }
        public Builder clearLifeCycle() {
          bitField0_ = (bitField0_ & ~0x00000040);
          lifeCycle_ = 0;
          onChanged();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.CreateTable)
      }
      
      static {
        defaultInstance = new CreateTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.CreateTable)
    }
    
    public interface CreateStreamTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string Table = 2;
      boolean hasTable();
      String getTable();
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      java.util.List<ColumnDescription>
          getColumnsList();
      ColumnDescription getColumns(int index);
      int getColumnsCount();
      java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList();
      ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index);
      
      // required string Uri = 4;
      boolean hasUri();
      String getUri();
      
      // optional string Comment = 5;
      boolean hasComment();
      String getComment();
    }
    public static final class CreateStreamTable extends
        com.google.protobuf.GeneratedMessage
        implements CreateStreamTableOrBuilder {
      // Use CreateStreamTable.newBuilder() to construct.
      private CreateStreamTable(Builder builder) {
        super(builder);
      }
      private CreateStreamTable(boolean noInit) {}
      
      private static final CreateStreamTable defaultInstance;
      public static CreateStreamTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public CreateStreamTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_CreateStreamTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_CreateStreamTable_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;
        }
      }
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      public static final int COLUMNS_FIELD_NUMBER = 3;
      private java.util.List<ColumnDescription> columns_;
      public java.util.List<ColumnDescription> getColumnsList() {
        return columns_;
      }
      public java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList() {
        return columns_;
      }
      public int getColumnsCount() {
        return columns_.size();
      }
      public ColumnDescription getColumns(int index) {
        return columns_.get(index);
      }
      public ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index) {
        return columns_.get(index);
      }
      
      // required string Uri = 4;
      public static final int URI_FIELD_NUMBER = 4;
      private Object uri_;
      public boolean hasUri() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getUri() {
        Object ref = uri_;
        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)) {
            uri_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getUriBytes() {
        Object ref = uri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          uri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string Comment = 5;
      public static final int COMMENT_FIELD_NUMBER = 5;
      private Object comment_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getComment() {
        Object ref = comment_;
        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)) {
            comment_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getCommentBytes() {
        Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        project_ = "";
        table_ = "";
        columns_ = java.util.Collections.emptyList();
        uri_ = "";
        comment_ = "";
      }
      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 (!hasUri()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(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.writeBytes(1, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          output.writeMessage(3, columns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(4, getUriBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(5, getCommentBytes());
        }
        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());
        }
        for (int i = 0; i < columns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, columns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getUriBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, getCommentBytes());
        }
        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 CreateStreamTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateStreamTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateStreamTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateStreamTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateStreamTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateStreamTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static CreateStreamTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static CreateStreamTable 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 CreateStreamTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateStreamTable 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(CreateStreamTable 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 CreateStreamTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_CreateStreamTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_CreateStreamTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.CreateStreamTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColumnsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            columnsBuilder_.clear();
          }
          uri_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return CreateStreamTable.getDescriptor();
        }
        
        public CreateStreamTable getDefaultInstanceForType() {
          return CreateStreamTable.getDefaultInstance();
        }
        
        public CreateStreamTable build() {
          CreateStreamTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private CreateStreamTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          CreateStreamTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public CreateStreamTable buildPartial() {
          CreateStreamTable result = new CreateStreamTable(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 (columnsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              columns_ = java.util.Collections.unmodifiableList(columns_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.columns_ = columns_;
          } else {
            result.columns_ = columnsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          result.uri_ = uri_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000008;
          }
          result.comment_ = comment_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CreateStreamTable) {
            return mergeFrom((CreateStreamTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(CreateStreamTable other) {
          if (other == CreateStreamTable.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (columnsBuilder_ == null) {
            if (!other.columns_.isEmpty()) {
              if (columns_.isEmpty()) {
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureColumnsIsMutable();
                columns_.addAll(other.columns_);
              }
              onChanged();
            }
          } else {
            if (!other.columns_.isEmpty()) {
              if (columnsBuilder_.isEmpty()) {
                columnsBuilder_.dispose();
                columnsBuilder_ = null;
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
                columnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColumnsFieldBuilder() : null;
              } else {
                columnsBuilder_.addAllMessages(other.columns_);
              }
            }
          }
          if (other.hasUri()) {
            setUri(other.getUri());
          }
          if (other.hasComment()) {
            setComment(other.getComment());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTable()) {
            
            return false;
          }
          if (!hasUri()) {
            
            return false;
          }
          for (int i = 0; i < getColumnsCount(); i++) {
            if (!getColumns(i).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 26: {
                ColumnDescription.Builder subBuilder = ColumnDescription.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addColumns(subBuilder.buildPartial());
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                uri_ = input.readBytes();
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                comment_ = input.readBytes();
                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();
        }
        
        // repeated .apsara.odps.ColumnDescription Columns = 3;
        private java.util.List<ColumnDescription> columns_ =
          java.util.Collections.emptyList();
        private void ensureColumnsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            columns_ = new java.util.ArrayList<ColumnDescription>(columns_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder> columnsBuilder_;
        
        public java.util.List<ColumnDescription> getColumnsList() {
          if (columnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(columns_);
          } else {
            return columnsBuilder_.getMessageList();
          }
        }
        public int getColumnsCount() {
          if (columnsBuilder_ == null) {
            return columns_.size();
          } else {
            return columnsBuilder_.getCount();
          }
        }
        public ColumnDescription getColumns(int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);
          } else {
            return columnsBuilder_.getMessage(index);
          }
        }
        public Builder setColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.set(index, value);
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.set(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(index, value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addColumns(
            ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllColumns(
            Iterable<? extends ColumnDescription> values) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            super.addAll(values, columns_);
            onChanged();
          } else {
            columnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearColumns() {
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        public Builder removeColumns(int index) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.remove(index);
            onChanged();
          } else {
            columnsBuilder_.remove(index);
          }
          return this;
        }
        public ColumnDescription.Builder getColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().getBuilder(index);
        }
        public ColumnDescriptionOrBuilder getColumnsOrBuilder(
            int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);  } else {
            return columnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ColumnDescriptionOrBuilder>
             getColumnsOrBuilderList() {
          if (columnsBuilder_ != null) {
            return columnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(columns_);
          }
        }
        public ColumnDescription.Builder addColumnsBuilder() {
          return getColumnsFieldBuilder().addBuilder(
              ColumnDescription.getDefaultInstance());
        }
        public ColumnDescription.Builder addColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().addBuilder(
              index, ColumnDescription.getDefaultInstance());
        }
        public java.util.List<ColumnDescription.Builder>
             getColumnsBuilderList() {
          return getColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>
            getColumnsFieldBuilder() {
          if (columnsBuilder_ == null) {
            columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>(
                    columns_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            columns_ = null;
          }
          return columnsBuilder_;
        }
        
        // required string Uri = 4;
        private Object uri_ = "";
        public boolean hasUri() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getUri() {
          Object ref = uri_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            uri_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setUri(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          uri_ = value;
          onChanged();
          return this;
        }
        public Builder clearUri() {
          bitField0_ = (bitField0_ & ~0x00000008);
          uri_ = getDefaultInstance().getUri();
          onChanged();
          return this;
        }
        void setUri(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          uri_ = value;
          onChanged();
        }
        
        // optional string Comment = 5;
        private Object comment_ = "";
        public boolean hasComment() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getComment() {
          Object ref = comment_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            comment_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setComment(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
          return this;
        }
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00000010);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        void setComment(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.CreateStreamTable)
      }
      
      static {
        defaultInstance = new CreateStreamTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.CreateStreamTable)
    }
    
    public interface CreateDimensionTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string Table = 2;
      boolean hasTable();
      String getTable();
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      java.util.List<ColumnDescription>
          getColumnsList();
      ColumnDescription getColumns(int index);
      int getColumnsCount();
      java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList();
      ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index);
      
      // required string Uri = 4;
      boolean hasUri();
      String getUri();
      
      // optional string Comment = 5;
      boolean hasComment();
      String getComment();
    }
    public static final class CreateDimensionTable extends
        com.google.protobuf.GeneratedMessage
        implements CreateDimensionTableOrBuilder {
      // Use CreateDimensionTable.newBuilder() to construct.
      private CreateDimensionTable(Builder builder) {
        super(builder);
      }
      private CreateDimensionTable(boolean noInit) {}
      
      private static final CreateDimensionTable defaultInstance;
      public static CreateDimensionTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public CreateDimensionTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_CreateDimensionTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_CreateDimensionTable_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;
        }
      }
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      public static final int COLUMNS_FIELD_NUMBER = 3;
      private java.util.List<ColumnDescription> columns_;
      public java.util.List<ColumnDescription> getColumnsList() {
        return columns_;
      }
      public java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList() {
        return columns_;
      }
      public int getColumnsCount() {
        return columns_.size();
      }
      public ColumnDescription getColumns(int index) {
        return columns_.get(index);
      }
      public ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index) {
        return columns_.get(index);
      }
      
      // required string Uri = 4;
      public static final int URI_FIELD_NUMBER = 4;
      private Object uri_;
      public boolean hasUri() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getUri() {
        Object ref = uri_;
        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)) {
            uri_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getUriBytes() {
        Object ref = uri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          uri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string Comment = 5;
      public static final int COMMENT_FIELD_NUMBER = 5;
      private Object comment_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getComment() {
        Object ref = comment_;
        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)) {
            comment_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getCommentBytes() {
        Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        project_ = "";
        table_ = "";
        columns_ = java.util.Collections.emptyList();
        uri_ = "";
        comment_ = "";
      }
      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 (!hasUri()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(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.writeBytes(1, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          output.writeMessage(3, columns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(4, getUriBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(5, getCommentBytes());
        }
        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());
        }
        for (int i = 0; i < columns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, columns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getUriBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, getCommentBytes());
        }
        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 CreateDimensionTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateDimensionTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateDimensionTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateDimensionTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateDimensionTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateDimensionTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static CreateDimensionTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static CreateDimensionTable 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 CreateDimensionTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateDimensionTable 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(CreateDimensionTable 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 CreateDimensionTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_CreateDimensionTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_CreateDimensionTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.CreateDimensionTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColumnsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            columnsBuilder_.clear();
          }
          uri_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return CreateDimensionTable.getDescriptor();
        }
        
        public CreateDimensionTable getDefaultInstanceForType() {
          return CreateDimensionTable.getDefaultInstance();
        }
        
        public CreateDimensionTable build() {
          CreateDimensionTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private CreateDimensionTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          CreateDimensionTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public CreateDimensionTable buildPartial() {
          CreateDimensionTable result = new CreateDimensionTable(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 (columnsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              columns_ = java.util.Collections.unmodifiableList(columns_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.columns_ = columns_;
          } else {
            result.columns_ = columnsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          result.uri_ = uri_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000008;
          }
          result.comment_ = comment_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CreateDimensionTable) {
            return mergeFrom((CreateDimensionTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(CreateDimensionTable other) {
          if (other == CreateDimensionTable.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (columnsBuilder_ == null) {
            if (!other.columns_.isEmpty()) {
              if (columns_.isEmpty()) {
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureColumnsIsMutable();
                columns_.addAll(other.columns_);
              }
              onChanged();
            }
          } else {
            if (!other.columns_.isEmpty()) {
              if (columnsBuilder_.isEmpty()) {
                columnsBuilder_.dispose();
                columnsBuilder_ = null;
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
                columnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColumnsFieldBuilder() : null;
              } else {
                columnsBuilder_.addAllMessages(other.columns_);
              }
            }
          }
          if (other.hasUri()) {
            setUri(other.getUri());
          }
          if (other.hasComment()) {
            setComment(other.getComment());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTable()) {
            
            return false;
          }
          if (!hasUri()) {
            
            return false;
          }
          for (int i = 0; i < getColumnsCount(); i++) {
            if (!getColumns(i).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 26: {
                ColumnDescription.Builder subBuilder = ColumnDescription.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addColumns(subBuilder.buildPartial());
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                uri_ = input.readBytes();
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                comment_ = input.readBytes();
                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();
        }
        
        // repeated .apsara.odps.ColumnDescription Columns = 3;
        private java.util.List<ColumnDescription> columns_ =
          java.util.Collections.emptyList();
        private void ensureColumnsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            columns_ = new java.util.ArrayList<ColumnDescription>(columns_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder> columnsBuilder_;
        
        public java.util.List<ColumnDescription> getColumnsList() {
          if (columnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(columns_);
          } else {
            return columnsBuilder_.getMessageList();
          }
        }
        public int getColumnsCount() {
          if (columnsBuilder_ == null) {
            return columns_.size();
          } else {
            return columnsBuilder_.getCount();
          }
        }
        public ColumnDescription getColumns(int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);
          } else {
            return columnsBuilder_.getMessage(index);
          }
        }
        public Builder setColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.set(index, value);
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.set(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(index, value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addColumns(
            ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllColumns(
            Iterable<? extends ColumnDescription> values) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            super.addAll(values, columns_);
            onChanged();
          } else {
            columnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearColumns() {
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        public Builder removeColumns(int index) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.remove(index);
            onChanged();
          } else {
            columnsBuilder_.remove(index);
          }
          return this;
        }
        public ColumnDescription.Builder getColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().getBuilder(index);
        }
        public ColumnDescriptionOrBuilder getColumnsOrBuilder(
            int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);  } else {
            return columnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ColumnDescriptionOrBuilder>
             getColumnsOrBuilderList() {
          if (columnsBuilder_ != null) {
            return columnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(columns_);
          }
        }
        public ColumnDescription.Builder addColumnsBuilder() {
          return getColumnsFieldBuilder().addBuilder(
              ColumnDescription.getDefaultInstance());
        }
        public ColumnDescription.Builder addColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().addBuilder(
              index, ColumnDescription.getDefaultInstance());
        }
        public java.util.List<ColumnDescription.Builder>
             getColumnsBuilderList() {
          return getColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>
            getColumnsFieldBuilder() {
          if (columnsBuilder_ == null) {
            columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>(
                    columns_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            columns_ = null;
          }
          return columnsBuilder_;
        }
        
        // required string Uri = 4;
        private Object uri_ = "";
        public boolean hasUri() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getUri() {
          Object ref = uri_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            uri_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setUri(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          uri_ = value;
          onChanged();
          return this;
        }
        public Builder clearUri() {
          bitField0_ = (bitField0_ & ~0x00000008);
          uri_ = getDefaultInstance().getUri();
          onChanged();
          return this;
        }
        void setUri(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          uri_ = value;
          onChanged();
        }
        
        // optional string Comment = 5;
        private Object comment_ = "";
        public boolean hasComment() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getComment() {
          Object ref = comment_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            comment_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setComment(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
          return this;
        }
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00000010);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        void setComment(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.CreateDimensionTable)
      }
      
      static {
        defaultInstance = new CreateDimensionTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.CreateDimensionTable)
    }
    
    public interface CreateResultTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string Table = 2;
      boolean hasTable();
      String getTable();
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      java.util.List<ColumnDescription>
          getColumnsList();
      ColumnDescription getColumns(int index);
      int getColumnsCount();
      java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList();
      ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index);
      
      // required string Uri = 4;
      boolean hasUri();
      String getUri();
      
      // optional string Comment = 5;
      boolean hasComment();
      String getComment();
      
      // repeated string PrimaryKeys = 6;
      java.util.List<String> getPrimaryKeysList();
      int getPrimaryKeysCount();
      String getPrimaryKeys(int index);
    }
    public static final class CreateResultTable extends
        com.google.protobuf.GeneratedMessage
        implements CreateResultTableOrBuilder {
      // Use CreateResultTable.newBuilder() to construct.
      private CreateResultTable(Builder builder) {
        super(builder);
      }
      private CreateResultTable(boolean noInit) {}
      
      private static final CreateResultTable defaultInstance;
      public static CreateResultTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public CreateResultTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_CreateResultTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_CreateResultTable_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;
        }
      }
      
      // repeated .apsara.odps.ColumnDescription Columns = 3;
      public static final int COLUMNS_FIELD_NUMBER = 3;
      private java.util.List<ColumnDescription> columns_;
      public java.util.List<ColumnDescription> getColumnsList() {
        return columns_;
      }
      public java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList() {
        return columns_;
      }
      public int getColumnsCount() {
        return columns_.size();
      }
      public ColumnDescription getColumns(int index) {
        return columns_.get(index);
      }
      public ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index) {
        return columns_.get(index);
      }
      
      // required string Uri = 4;
      public static final int URI_FIELD_NUMBER = 4;
      private Object uri_;
      public boolean hasUri() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getUri() {
        Object ref = uri_;
        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)) {
            uri_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getUriBytes() {
        Object ref = uri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          uri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional string Comment = 5;
      public static final int COMMENT_FIELD_NUMBER = 5;
      private Object comment_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getComment() {
        Object ref = comment_;
        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)) {
            comment_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getCommentBytes() {
        Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated string PrimaryKeys = 6;
      public static final int PRIMARYKEYS_FIELD_NUMBER = 6;
      private com.google.protobuf.LazyStringList primaryKeys_;
      public java.util.List<String>
          getPrimaryKeysList() {
        return primaryKeys_;
      }
      public int getPrimaryKeysCount() {
        return primaryKeys_.size();
      }
      public String getPrimaryKeys(int index) {
        return primaryKeys_.get(index);
      }
      
      private void initFields() {
        project_ = "";
        table_ = "";
        columns_ = java.util.Collections.emptyList();
        uri_ = "";
        comment_ = "";
        primaryKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }
      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 (!hasUri()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(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.writeBytes(1, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          output.writeMessage(3, columns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(4, getUriBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(5, getCommentBytes());
        }
        for (int i = 0; i < primaryKeys_.size(); i++) {
          output.writeBytes(6, primaryKeys_.getByteString(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
            .computeBytesSize(1, getProjectBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, columns_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getUriBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, getCommentBytes());
        }
        {
          int dataSize = 0;
          for (int i = 0; i < primaryKeys_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeBytesSizeNoTag(primaryKeys_.getByteString(i));
          }
          size += dataSize;
          size += 1 * getPrimaryKeysList().size();
        }
        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 CreateResultTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateResultTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateResultTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateResultTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateResultTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateResultTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static CreateResultTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static CreateResultTable 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 CreateResultTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateResultTable 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(CreateResultTable 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 CreateResultTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_CreateResultTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_CreateResultTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.CreateResultTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColumnsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            columnsBuilder_.clear();
          }
          uri_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          primaryKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return CreateResultTable.getDescriptor();
        }
        
        public CreateResultTable getDefaultInstanceForType() {
          return CreateResultTable.getDefaultInstance();
        }
        
        public CreateResultTable build() {
          CreateResultTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private CreateResultTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          CreateResultTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public CreateResultTable buildPartial() {
          CreateResultTable result = new CreateResultTable(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 (columnsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              columns_ = java.util.Collections.unmodifiableList(columns_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.columns_ = columns_;
          } else {
            result.columns_ = columnsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          result.uri_ = uri_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000008;
          }
          result.comment_ = comment_;
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            primaryKeys_ = new com.google.protobuf.UnmodifiableLazyStringList(
                primaryKeys_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.primaryKeys_ = primaryKeys_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CreateResultTable) {
            return mergeFrom((CreateResultTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(CreateResultTable other) {
          if (other == CreateResultTable.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (columnsBuilder_ == null) {
            if (!other.columns_.isEmpty()) {
              if (columns_.isEmpty()) {
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureColumnsIsMutable();
                columns_.addAll(other.columns_);
              }
              onChanged();
            }
          } else {
            if (!other.columns_.isEmpty()) {
              if (columnsBuilder_.isEmpty()) {
                columnsBuilder_.dispose();
                columnsBuilder_ = null;
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000004);
                columnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColumnsFieldBuilder() : null;
              } else {
                columnsBuilder_.addAllMessages(other.columns_);
              }
            }
          }
          if (other.hasUri()) {
            setUri(other.getUri());
          }
          if (other.hasComment()) {
            setComment(other.getComment());
          }
          if (!other.primaryKeys_.isEmpty()) {
            if (primaryKeys_.isEmpty()) {
              primaryKeys_ = other.primaryKeys_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensurePrimaryKeysIsMutable();
              primaryKeys_.addAll(other.primaryKeys_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTable()) {
            
            return false;
          }
          if (!hasUri()) {
            
            return false;
          }
          for (int i = 0; i < getColumnsCount(); i++) {
            if (!getColumns(i).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 26: {
                ColumnDescription.Builder subBuilder = ColumnDescription.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addColumns(subBuilder.buildPartial());
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                uri_ = input.readBytes();
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                comment_ = input.readBytes();
                break;
              }
              case 50: {
                ensurePrimaryKeysIsMutable();
                primaryKeys_.add(input.readBytes());
                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();
        }
        
        // repeated .apsara.odps.ColumnDescription Columns = 3;
        private java.util.List<ColumnDescription> columns_ =
          java.util.Collections.emptyList();
        private void ensureColumnsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            columns_ = new java.util.ArrayList<ColumnDescription>(columns_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder> columnsBuilder_;
        
        public java.util.List<ColumnDescription> getColumnsList() {
          if (columnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(columns_);
          } else {
            return columnsBuilder_.getMessageList();
          }
        }
        public int getColumnsCount() {
          if (columnsBuilder_ == null) {
            return columns_.size();
          } else {
            return columnsBuilder_.getCount();
          }
        }
        public ColumnDescription getColumns(int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);
          } else {
            return columnsBuilder_.getMessage(index);
          }
        }
        public Builder setColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.set(index, value);
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.set(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(index, value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addColumns(
            ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllColumns(
            Iterable<? extends ColumnDescription> values) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            super.addAll(values, columns_);
            onChanged();
          } else {
            columnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearColumns() {
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        public Builder removeColumns(int index) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.remove(index);
            onChanged();
          } else {
            columnsBuilder_.remove(index);
          }
          return this;
        }
        public ColumnDescription.Builder getColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().getBuilder(index);
        }
        public ColumnDescriptionOrBuilder getColumnsOrBuilder(
            int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);  } else {
            return columnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ColumnDescriptionOrBuilder>
             getColumnsOrBuilderList() {
          if (columnsBuilder_ != null) {
            return columnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(columns_);
          }
        }
        public ColumnDescription.Builder addColumnsBuilder() {
          return getColumnsFieldBuilder().addBuilder(
              ColumnDescription.getDefaultInstance());
        }
        public ColumnDescription.Builder addColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().addBuilder(
              index, ColumnDescription.getDefaultInstance());
        }
        public java.util.List<ColumnDescription.Builder>
             getColumnsBuilderList() {
          return getColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>
            getColumnsFieldBuilder() {
          if (columnsBuilder_ == null) {
            columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>(
                    columns_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            columns_ = null;
          }
          return columnsBuilder_;
        }
        
        // required string Uri = 4;
        private Object uri_ = "";
        public boolean hasUri() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getUri() {
          Object ref = uri_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            uri_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setUri(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          uri_ = value;
          onChanged();
          return this;
        }
        public Builder clearUri() {
          bitField0_ = (bitField0_ & ~0x00000008);
          uri_ = getDefaultInstance().getUri();
          onChanged();
          return this;
        }
        void setUri(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          uri_ = value;
          onChanged();
        }
        
        // optional string Comment = 5;
        private Object comment_ = "";
        public boolean hasComment() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public String getComment() {
          Object ref = comment_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            comment_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setComment(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
          return this;
        }
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00000010);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        void setComment(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000010;
          comment_ = value;
          onChanged();
        }
        
        // repeated string PrimaryKeys = 6;
        private com.google.protobuf.LazyStringList primaryKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensurePrimaryKeysIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            primaryKeys_ = new com.google.protobuf.LazyStringArrayList(primaryKeys_);
            bitField0_ |= 0x00000020;
           }
        }
        public java.util.List<String>
            getPrimaryKeysList() {
          return java.util.Collections.unmodifiableList(primaryKeys_);
        }
        public int getPrimaryKeysCount() {
          return primaryKeys_.size();
        }
        public String getPrimaryKeys(int index) {
          return primaryKeys_.get(index);
        }
        public Builder setPrimaryKeys(
            int index, String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensurePrimaryKeysIsMutable();
          primaryKeys_.set(index, value);
          onChanged();
          return this;
        }
        public Builder addPrimaryKeys(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensurePrimaryKeysIsMutable();
          primaryKeys_.add(value);
          onChanged();
          return this;
        }
        public Builder addAllPrimaryKeys(
            Iterable<String> values) {
          ensurePrimaryKeysIsMutable();
          super.addAll(values, primaryKeys_);
          onChanged();
          return this;
        }
        public Builder clearPrimaryKeys() {
          primaryKeys_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
        void addPrimaryKeys(com.google.protobuf.ByteString value) {
          ensurePrimaryKeysIsMutable();
          primaryKeys_.add(value);
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.CreateResultTable)
      }
      
      static {
        defaultInstance = new CreateResultTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.CreateResultTable)
    }
    
    public interface CreateTempTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Table = 1;
      boolean hasTable();
      String getTable();
      
      // repeated .apsara.odps.ColumnDescription Columns = 2;
      java.util.List<ColumnDescription>
          getColumnsList();
      ColumnDescription getColumns(int index);
      int getColumnsCount();
      java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList();
      ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index);
    }
    public static final class CreateTempTable extends
        com.google.protobuf.GeneratedMessage
        implements CreateTempTableOrBuilder {
      // Use CreateTempTable.newBuilder() to construct.
      private CreateTempTable(Builder builder) {
        super(builder);
      }
      private CreateTempTable(boolean noInit) {}
      
      private static final CreateTempTable defaultInstance;
      public static CreateTempTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public CreateTempTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_CreateTempTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_CreateTempTable_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string Table = 1;
      public static final int TABLE_FIELD_NUMBER = 1;
      private Object table_;
      public boolean hasTable() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      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;
        }
      }
      
      // repeated .apsara.odps.ColumnDescription Columns = 2;
      public static final int COLUMNS_FIELD_NUMBER = 2;
      private java.util.List<ColumnDescription> columns_;
      public java.util.List<ColumnDescription> getColumnsList() {
        return columns_;
      }
      public java.util.List<? extends ColumnDescriptionOrBuilder>
          getColumnsOrBuilderList() {
        return columns_;
      }
      public int getColumnsCount() {
        return columns_.size();
      }
      public ColumnDescription getColumns(int index) {
        return columns_.get(index);
      }
      public ColumnDescriptionOrBuilder getColumnsOrBuilder(
          int index) {
        return columns_.get(index);
      }
      
      private void initFields() {
        table_ = "";
        columns_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTable()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(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.writeBytes(1, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          output.writeMessage(2, columns_.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
            .computeBytesSize(1, getTableBytes());
        }
        for (int i = 0; i < columns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, columns_.get(i));
        }
        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 CreateTempTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateTempTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTempTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateTempTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTempTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateTempTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTempTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static CreateTempTable 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 CreateTempTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateTempTable 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(CreateTempTable 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 CreateTempTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_CreateTempTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_CreateTempTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.CreateTempTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColumnsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return CreateTempTable.getDescriptor();
        }
        
        public CreateTempTable getDefaultInstanceForType() {
          return CreateTempTable.getDefaultInstance();
        }
        
        public CreateTempTable build() {
          CreateTempTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private CreateTempTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          CreateTempTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public CreateTempTable buildPartial() {
          CreateTempTable result = new CreateTempTable(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.table_ = table_;
          if (columnsBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              columns_ = java.util.Collections.unmodifiableList(columns_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.columns_ = columns_;
          } else {
            result.columns_ = columnsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CreateTempTable) {
            return mergeFrom((CreateTempTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(CreateTempTable other) {
          if (other == CreateTempTable.getDefaultInstance()) return this;
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (columnsBuilder_ == null) {
            if (!other.columns_.isEmpty()) {
              if (columns_.isEmpty()) {
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureColumnsIsMutable();
                columns_.addAll(other.columns_);
              }
              onChanged();
            }
          } else {
            if (!other.columns_.isEmpty()) {
              if (columnsBuilder_.isEmpty()) {
                columnsBuilder_.dispose();
                columnsBuilder_ = null;
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000002);
                columnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColumnsFieldBuilder() : null;
              } else {
                columnsBuilder_.addAllMessages(other.columns_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTable()) {
            
            return false;
          }
          for (int i = 0; i < getColumnsCount(); i++) {
            if (!getColumns(i).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;
                table_ = input.readBytes();
                break;
              }
              case 18: {
                ColumnDescription.Builder subBuilder = ColumnDescription.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addColumns(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string Table = 1;
        private Object table_ = "";
        public boolean hasTable() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        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_ |= 0x00000001;
          table_ = value;
          onChanged();
          return this;
        }
        public Builder clearTable() {
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = getDefaultInstance().getTable();
          onChanged();
          return this;
        }
        void setTable(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          table_ = value;
          onChanged();
        }
        
        // repeated .apsara.odps.ColumnDescription Columns = 2;
        private java.util.List<ColumnDescription> columns_ =
          java.util.Collections.emptyList();
        private void ensureColumnsIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            columns_ = new java.util.ArrayList<ColumnDescription>(columns_);
            bitField0_ |= 0x00000002;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder> columnsBuilder_;
        
        public java.util.List<ColumnDescription> getColumnsList() {
          if (columnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(columns_);
          } else {
            return columnsBuilder_.getMessageList();
          }
        }
        public int getColumnsCount() {
          if (columnsBuilder_ == null) {
            return columns_.size();
          } else {
            return columnsBuilder_.getCount();
          }
        }
        public ColumnDescription getColumns(int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);
          } else {
            return columnsBuilder_.getMessage(index);
          }
        }
        public Builder setColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.set(index, value);
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.set(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(index, value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addColumns(
            ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(
            int index, ColumnDescription.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllColumns(
            Iterable<? extends ColumnDescription> values) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            super.addAll(values, columns_);
            onChanged();
          } else {
            columnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearColumns() {
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        public Builder removeColumns(int index) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.remove(index);
            onChanged();
          } else {
            columnsBuilder_.remove(index);
          }
          return this;
        }
        public ColumnDescription.Builder getColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().getBuilder(index);
        }
        public ColumnDescriptionOrBuilder getColumnsOrBuilder(
            int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);  } else {
            return columnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends ColumnDescriptionOrBuilder>
             getColumnsOrBuilderList() {
          if (columnsBuilder_ != null) {
            return columnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(columns_);
          }
        }
        public ColumnDescription.Builder addColumnsBuilder() {
          return getColumnsFieldBuilder().addBuilder(
              ColumnDescription.getDefaultInstance());
        }
        public ColumnDescription.Builder addColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().addBuilder(
              index, ColumnDescription.getDefaultInstance());
        }
        public java.util.List<ColumnDescription.Builder>
             getColumnsBuilderList() {
          return getColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>
            getColumnsFieldBuilder() {
          if (columnsBuilder_ == null) {
            columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                ColumnDescription, ColumnDescription.Builder, ColumnDescriptionOrBuilder>(
                    columns_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            columns_ = null;
          }
          return columnsBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.CreateTempTable)
      }
      
      static {
        defaultInstance = new CreateTempTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.CreateTempTable)
    }
    
    public interface CreateTableLikeOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string Table = 2;
      boolean hasTable();
      String getTable();
      
      // required string SourceProject = 3;
      boolean hasSourceProject();
      String getSourceProject();
      
      // required string SourceTable = 4;
      boolean hasSourceTable();
      String getSourceTable();
      
      // optional bool IfNotExists = 5 [default = false];
      boolean hasIfNotExists();
      boolean getIfNotExists();
    }
    public static final class CreateTableLike extends
        com.google.protobuf.GeneratedMessage
        implements CreateTableLikeOrBuilder {
      // Use CreateTableLike.newBuilder() to construct.
      private CreateTableLike(Builder builder) {
        super(builder);
      }
      private CreateTableLike(boolean noInit) {}
      
      private static final CreateTableLike defaultInstance;
      public static CreateTableLike getDefaultInstance() {
        return defaultInstance;
      }
      
      public CreateTableLike getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_CreateTableLike_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_CreateTableLike_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 string SourceProject = 3;
      public static final int SOURCEPROJECT_FIELD_NUMBER = 3;
      private Object sourceProject_;
      public boolean hasSourceProject() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getSourceProject() {
        Object ref = sourceProject_;
        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)) {
            sourceProject_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getSourceProjectBytes() {
        Object ref = sourceProject_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          sourceProject_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string SourceTable = 4;
      public static final int SOURCETABLE_FIELD_NUMBER = 4;
      private Object sourceTable_;
      public boolean hasSourceTable() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getSourceTable() {
        Object ref = sourceTable_;
        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)) {
            sourceTable_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getSourceTableBytes() {
        Object ref = sourceTable_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          sourceTable_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional bool IfNotExists = 5 [default = false];
      public static final int IFNOTEXISTS_FIELD_NUMBER = 5;
      private boolean ifNotExists_;
      public boolean hasIfNotExists() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public boolean getIfNotExists() {
        return ifNotExists_;
      }
      
      private void initFields() {
        project_ = "";
        table_ = "";
        sourceProject_ = "";
        sourceTable_ = "";
        ifNotExists_ = false;
      }
      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 (!hasSourceProject()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasSourceTable()) {
          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.writeBytes(3, getSourceProjectBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, getSourceTableBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBool(5, ifNotExists_);
        }
        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
            .computeBytesSize(3, getSourceProjectBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getSourceTableBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, ifNotExists_);
        }
        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 CreateTableLike parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateTableLike parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTableLike parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static CreateTableLike parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTableLike parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateTableLike parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static CreateTableLike parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static CreateTableLike 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 CreateTableLike parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static CreateTableLike 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(CreateTableLike 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 CreateTableLikeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_CreateTableLike_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_CreateTableLike_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.CreateTableLike.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(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();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          table_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          sourceProject_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          sourceTable_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          ifNotExists_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return CreateTableLike.getDescriptor();
        }
        
        public CreateTableLike getDefaultInstanceForType() {
          return CreateTableLike.getDefaultInstance();
        }
        
        public CreateTableLike build() {
          CreateTableLike result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private CreateTableLike buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          CreateTableLike result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public CreateTableLike buildPartial() {
          CreateTableLike result = new CreateTableLike(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.sourceProject_ = sourceProject_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.sourceTable_ = sourceTable_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.ifNotExists_ = ifNotExists_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof CreateTableLike) {
            return mergeFrom((CreateTableLike)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(CreateTableLike other) {
          if (other == CreateTableLike.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTable()) {
            setTable(other.getTable());
          }
          if (other.hasSourceProject()) {
            setSourceProject(other.getSourceProject());
          }
          if (other.hasSourceTable()) {
            setSourceTable(other.getSourceTable());
          }
          if (other.hasIfNotExists()) {
            setIfNotExists(other.getIfNotExists());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTable()) {
            
            return false;
          }
          if (!hasSourceProject()) {
            
            return false;
          }
          if (!hasSourceTable()) {
            
            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 26: {
                bitField0_ |= 0x00000004;
                sourceProject_ = input.readBytes();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                sourceTable_ = input.readBytes();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                ifNotExists_ = input.readBool();
                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 string SourceProject = 3;
        private Object sourceProject_ = "";
        public boolean hasSourceProject() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getSourceProject() {
          Object ref = sourceProject_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            sourceProject_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setSourceProject(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          sourceProject_ = value;
          onChanged();
          return this;
        }
        public Builder clearSourceProject() {
          bitField0_ = (bitField0_ & ~0x00000004);
          sourceProject_ = getDefaultInstance().getSourceProject();
          onChanged();
          return this;
        }
        void setSourceProject(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          sourceProject_ = value;
          onChanged();
        }
        
        // required string SourceTable = 4;
        private Object sourceTable_ = "";
        public boolean hasSourceTable() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getSourceTable() {
          Object ref = sourceTable_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            sourceTable_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setSourceTable(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          sourceTable_ = value;
          onChanged();
          return this;
        }
        public Builder clearSourceTable() {
          bitField0_ = (bitField0_ & ~0x00000008);
          sourceTable_ = getDefaultInstance().getSourceTable();
          onChanged();
          return this;
        }
        void setSourceTable(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          sourceTable_ = value;
          onChanged();
        }
        
        // optional bool IfNotExists = 5 [default = false];
        private boolean ifNotExists_ ;
        public boolean hasIfNotExists() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public boolean getIfNotExists() {
          return ifNotExists_;
        }
        public Builder setIfNotExists(boolean value) {
          bitField0_ |= 0x00000010;
          ifNotExists_ = value;
          onChanged();
          return this;
        }
        public Builder clearIfNotExists() {
          bitField0_ = (bitField0_ & ~0x00000010);
          ifNotExists_ = false;
          onChanged();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.CreateTableLike)
      }
      
      static {
        defaultInstance = new CreateTableLike(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.CreateTableLike)
    }
    
    public interface DropTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string TableName = 2;
      boolean hasTableName();
      String getTableName();
      
      // optional bool IfExists = 3 [default = false];
      boolean hasIfExists();
      boolean getIfExists();
    }
    public static final class DropTable extends
        com.google.protobuf.GeneratedMessage
        implements DropTableOrBuilder {
      // Use DropTable.newBuilder() to construct.
      private DropTable(Builder builder) {
        super(builder);
      }
      private DropTable(boolean noInit) {}
      
      private static final DropTable defaultInstance;
      public static DropTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public DropTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_DropTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_DropTable_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 TableName = 2;
      public static final int TABLENAME_FIELD_NUMBER = 2;
      private Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTableName() {
        Object ref = tableName_;
        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)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional bool IfExists = 3 [default = false];
      public static final int IFEXISTS_FIELD_NUMBER = 3;
      private boolean ifExists_;
      public boolean hasIfExists() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public boolean getIfExists() {
        return ifExists_;
      }
      
      private void initFields() {
        project_ = "";
        tableName_ = "";
        ifExists_ = false;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasProject()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTableName()) {
          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, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, ifExists_);
        }
        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, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, ifExists_);
        }
        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 DropTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static DropTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static DropTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static DropTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static DropTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static DropTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static DropTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static DropTable 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 DropTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static DropTable 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(DropTable 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 DropTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_DropTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_DropTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.DropTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(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();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          ifExists_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return DropTable.getDescriptor();
        }
        
        public DropTable getDefaultInstanceForType() {
          return DropTable.getDefaultInstance();
        }
        
        public DropTable build() {
          DropTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private DropTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          DropTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public DropTable buildPartial() {
          DropTable result = new DropTable(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.tableName_ = tableName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.ifExists_ = ifExists_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof DropTable) {
            return mergeFrom((DropTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(DropTable other) {
          if (other == DropTable.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (other.hasIfExists()) {
            setIfExists(other.getIfExists());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTableName()) {
            
            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;
                tableName_ = input.readBytes();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                ifExists_ = input.readBool();
                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 TableName = 2;
        private Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getTableName() {
          Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          tableName_ = value;
          onChanged();
        }
        
        // optional bool IfExists = 3 [default = false];
        private boolean ifExists_ ;
        public boolean hasIfExists() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public boolean getIfExists() {
          return ifExists_;
        }
        public Builder setIfExists(boolean value) {
          bitField0_ |= 0x00000004;
          ifExists_ = value;
          onChanged();
          return this;
        }
        public Builder clearIfExists() {
          bitField0_ = (bitField0_ & ~0x00000004);
          ifExists_ = false;
          onChanged();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.DropTable)
      }
      
      static {
        defaultInstance = new DropTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.DropTable)
    }
    
    public interface AlterTableOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string Project = 1;
      boolean hasProject();
      String getProject();
      
      // required string TableName = 2;
      boolean hasTableName();
      String getTableName();
      
      // optional group AddPartition = 3 {
      boolean hasAddPartition();
      AlterTable.AddPartition getAddPartition();
      AlterTable.AddPartitionOrBuilder getAddPartitionOrBuilder();
      
      // optional group DropPartition = 4 {
      boolean hasDropPartition();
      AlterTable.DropPartition getDropPartition();
      AlterTable.DropPartitionOrBuilder getDropPartitionOrBuilder();
    }
    public static final class AlterTable extends
        com.google.protobuf.GeneratedMessage
        implements AlterTableOrBuilder {
      // Use AlterTable.newBuilder() to construct.
      private AlterTable(Builder builder) {
        super(builder);
      }
      private AlterTable(boolean noInit) {}
      
      private static final AlterTable defaultInstance;
      public static AlterTable getDefaultInstance() {
        return defaultInstance;
      }
      
      public AlterTable getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DDLProtos.internal_static_apsara_odps_AlterTable_descriptor;
      }
      
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DDLProtos.internal_static_apsara_odps_AlterTable_fieldAccessorTable;
      }
      
      public interface AddPartitionOrBuilder
          extends com.google.protobuf.MessageOrBuilder {
        
        // required .apsara.odps.PartitionSpec PartSpec = 1;
        boolean hasPartSpec();
        PartitionSpecProtos.PartitionSpec getPartSpec();
        PartitionSpecProtos.PartitionSpecOrBuilder getPartSpecOrBuilder();
        
        // optional bool IfNotExists = 2 [default = false];
        boolean hasIfNotExists();
        boolean getIfNotExists();
      }
      public static final class AddPartition extends
          com.google.protobuf.GeneratedMessage
          implements AddPartitionOrBuilder {
        // Use AddPartition.newBuilder() to construct.
        private AddPartition(Builder builder) {
          super(builder);
        }
        private AddPartition(boolean noInit) {}
        
        private static final AddPartition defaultInstance;
        public static AddPartition getDefaultInstance() {
          return defaultInstance;
        }
        
        public AddPartition getDefaultInstanceForType() {
          return defaultInstance;
        }
        
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_AlterTable_AddPartition_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_AlterTable_AddPartition_fieldAccessorTable;
        }
        
        private int bitField0_;
        // required .apsara.odps.PartitionSpec PartSpec = 1;
        public static final int PARTSPEC_FIELD_NUMBER = 1;
        private PartitionSpecProtos.PartitionSpec partSpec_;
        public boolean hasPartSpec() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public PartitionSpecProtos.PartitionSpec getPartSpec() {
          return partSpec_;
        }
        public PartitionSpecProtos.PartitionSpecOrBuilder getPartSpecOrBuilder() {
          return partSpec_;
        }
        
        // optional bool IfNotExists = 2 [default = false];
        public static final int IFNOTEXISTS_FIELD_NUMBER = 2;
        private boolean ifNotExists_;
        public boolean hasIfNotExists() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public boolean getIfNotExists() {
          return ifNotExists_;
        }
        
        private void initFields() {
          partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
          ifNotExists_ = false;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized != -1) return isInitialized == 1;
          
          if (!hasPartSpec()) {
            memoizedIsInitialized = 0;
            return false;
          }
          if (!getPartSpec().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.writeMessage(1, partSpec_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBool(2, ifNotExists_);
          }
          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
              .computeMessageSize(1, partSpec_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(2, ifNotExists_);
          }
          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 AddPartition parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static AddPartition parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static AddPartition parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static AddPartition parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static AddPartition parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static AddPartition parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input, extensionRegistry)
                   .buildParsed();
        }
        public static AddPartition parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          Builder builder = newBuilder();
          if (builder.mergeDelimitedFrom(input)) {
            return builder.buildParsed();
          } else {
            return null;
          }
        }
        public static AddPartition 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 AddPartition parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static AddPartition 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(AddPartition 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 AddPartitionOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return DDLProtos.internal_static_apsara_odps_AlterTable_AddPartition_descriptor;
          }
          
          protected FieldAccessorTable
              internalGetFieldAccessorTable() {
            return DDLProtos.internal_static_apsara_odps_AlterTable_AddPartition_fieldAccessorTable;
          }
          
          // Construct using apsara.odps.DDLProtos.AlterTable.AddPartition.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
          
          private Builder(BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getPartSpecFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }
          
          public Builder clear() {
            super.clear();
            if (partSpecBuilder_ == null) {
              partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
            } else {
              partSpecBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000001);
            ifNotExists_ = false;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }
          
          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }
          
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return AddPartition.getDescriptor();
          }
          
          public AddPartition getDefaultInstanceForType() {
            return AddPartition.getDefaultInstance();
          }
          
          public AddPartition build() {
            AddPartition result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
          
          private AddPartition buildParsed()
              throws com.google.protobuf.InvalidProtocolBufferException {
            AddPartition result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(
                result).asInvalidProtocolBufferException();
            }
            return result;
          }
          
          public AddPartition buildPartial() {
            AddPartition result = new AddPartition(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            if (partSpecBuilder_ == null) {
              result.partSpec_ = partSpec_;
            } else {
              result.partSpec_ = partSpecBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.ifNotExists_ = ifNotExists_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
          
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof AddPartition) {
              return mergeFrom((AddPartition)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
          
          public Builder mergeFrom(AddPartition other) {
            if (other == AddPartition.getDefaultInstance()) return this;
            if (other.hasPartSpec()) {
              mergePartSpec(other.getPartSpec());
            }
            if (other.hasIfNotExists()) {
              setIfNotExists(other.getIfNotExists());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }
          
          public final boolean isInitialized() {
            if (!hasPartSpec()) {
              
              return false;
            }
            if (!getPartSpec().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: {
                  PartitionSpecProtos.PartitionSpec.Builder subBuilder = PartitionSpecProtos.PartitionSpec.newBuilder();
                  if (hasPartSpec()) {
                    subBuilder.mergeFrom(getPartSpec());
                  }
                  input.readMessage(subBuilder, extensionRegistry);
                  setPartSpec(subBuilder.buildPartial());
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  ifNotExists_ = input.readBool();
                  break;
                }
              }
            }
          }
          
          private int bitField0_;
          
          // required .apsara.odps.PartitionSpec PartSpec = 1;
          private PartitionSpecProtos.PartitionSpec partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
          private com.google.protobuf.SingleFieldBuilder<
              PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder> partSpecBuilder_;
          public boolean hasPartSpec() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          public PartitionSpecProtos.PartitionSpec getPartSpec() {
            if (partSpecBuilder_ == null) {
              return partSpec_;
            } else {
              return partSpecBuilder_.getMessage();
            }
          }
          public Builder setPartSpec(PartitionSpecProtos.PartitionSpec value) {
            if (partSpecBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              partSpec_ = value;
              onChanged();
            } else {
              partSpecBuilder_.setMessage(value);
            }
            bitField0_ |= 0x00000001;
            return this;
          }
          public Builder setPartSpec(
              PartitionSpecProtos.PartitionSpec.Builder builderForValue) {
            if (partSpecBuilder_ == null) {
              partSpec_ = builderForValue.build();
              onChanged();
            } else {
              partSpecBuilder_.setMessage(builderForValue.build());
            }
            bitField0_ |= 0x00000001;
            return this;
          }
          public Builder mergePartSpec(PartitionSpecProtos.PartitionSpec value) {
            if (partSpecBuilder_ == null) {
              if (((bitField0_ & 0x00000001) == 0x00000001) &&
                  partSpec_ != PartitionSpecProtos.PartitionSpec.getDefaultInstance()) {
                partSpec_ =
                  PartitionSpecProtos.PartitionSpec.newBuilder(partSpec_).mergeFrom(value).buildPartial();
              } else {
                partSpec_ = value;
              }
              onChanged();
            } else {
              partSpecBuilder_.mergeFrom(value);
            }
            bitField0_ |= 0x00000001;
            return this;
          }
          public Builder clearPartSpec() {
            if (partSpecBuilder_ == null) {
              partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
              onChanged();
            } else {
              partSpecBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }
          public PartitionSpecProtos.PartitionSpec.Builder getPartSpecBuilder() {
            bitField0_ |= 0x00000001;
            onChanged();
            return getPartSpecFieldBuilder().getBuilder();
          }
          public PartitionSpecProtos.PartitionSpecOrBuilder getPartSpecOrBuilder() {
            if (partSpecBuilder_ != null) {
              return partSpecBuilder_.getMessageOrBuilder();
            } else {
              return partSpec_;
            }
          }
          private com.google.protobuf.SingleFieldBuilder<
              PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder>
              getPartSpecFieldBuilder() {
            if (partSpecBuilder_ == null) {
              partSpecBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                  PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder>(
                      partSpec_,
                      getParentForChildren(),
                      isClean());
              partSpec_ = null;
            }
            return partSpecBuilder_;
          }
          
          // optional bool IfNotExists = 2 [default = false];
          private boolean ifNotExists_ ;
          public boolean hasIfNotExists() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          public boolean getIfNotExists() {
            return ifNotExists_;
          }
          public Builder setIfNotExists(boolean value) {
            bitField0_ |= 0x00000002;
            ifNotExists_ = value;
            onChanged();
            return this;
          }
          public Builder clearIfNotExists() {
            bitField0_ = (bitField0_ & ~0x00000002);
            ifNotExists_ = false;
            onChanged();
            return this;
          }
          
          // @@protoc_insertion_point(builder_scope:apsara.odps.AlterTable.AddPartition)
        }
        
        static {
          defaultInstance = new AddPartition(true);
          defaultInstance.initFields();
        }
        
        // @@protoc_insertion_point(class_scope:apsara.odps.AlterTable.AddPartition)
      }
      
      public interface DropPartitionOrBuilder
          extends com.google.protobuf.MessageOrBuilder {
        
        // required .apsara.odps.PartitionSpec PartSpec = 1;
        boolean hasPartSpec();
        PartitionSpecProtos.PartitionSpec getPartSpec();
        PartitionSpecProtos.PartitionSpecOrBuilder getPartSpecOrBuilder();
        
        // optional bool IfNotExists = 2 [default = false];
        boolean hasIfNotExists();
        boolean getIfNotExists();
      }
      public static final class DropPartition extends
          com.google.protobuf.GeneratedMessage
          implements DropPartitionOrBuilder {
        // Use DropPartition.newBuilder() to construct.
        private DropPartition(Builder builder) {
          super(builder);
        }
        private DropPartition(boolean noInit) {}
        
        private static final DropPartition defaultInstance;
        public static DropPartition getDefaultInstance() {
          return defaultInstance;
        }
        
        public DropPartition getDefaultInstanceForType() {
          return defaultInstance;
        }
        
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_AlterTable_DropPartition_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_AlterTable_DropPartition_fieldAccessorTable;
        }
        
        private int bitField0_;
        // required .apsara.odps.PartitionSpec PartSpec = 1;
        public static final int PARTSPEC_FIELD_NUMBER = 1;
        private PartitionSpecProtos.PartitionSpec partSpec_;
        public boolean hasPartSpec() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public PartitionSpecProtos.PartitionSpec getPartSpec() {
          return partSpec_;
        }
        public PartitionSpecProtos.PartitionSpecOrBuilder getPartSpecOrBuilder() {
          return partSpec_;
        }
        
        // optional bool IfNotExists = 2 [default = false];
        public static final int IFNOTEXISTS_FIELD_NUMBER = 2;
        private boolean ifNotExists_;
        public boolean hasIfNotExists() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public boolean getIfNotExists() {
          return ifNotExists_;
        }
        
        private void initFields() {
          partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
          ifNotExists_ = false;
        }
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized != -1) return isInitialized == 1;
          
          if (!hasPartSpec()) {
            memoizedIsInitialized = 0;
            return false;
          }
          if (!getPartSpec().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.writeMessage(1, partSpec_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBool(2, ifNotExists_);
          }
          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
              .computeMessageSize(1, partSpec_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(2, ifNotExists_);
          }
          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 DropPartition parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static DropPartition parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static DropPartition parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data).buildParsed();
        }
        public static DropPartition parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return newBuilder().mergeFrom(data, extensionRegistry)
                   .buildParsed();
        }
        public static DropPartition parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static DropPartition parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input, extensionRegistry)
                   .buildParsed();
        }
        public static DropPartition parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          Builder builder = newBuilder();
          if (builder.mergeDelimitedFrom(input)) {
            return builder.buildParsed();
          } else {
            return null;
          }
        }
        public static DropPartition 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 DropPartition parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return newBuilder().mergeFrom(input).buildParsed();
        }
        public static DropPartition 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(DropPartition 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 DropPartitionOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return DDLProtos.internal_static_apsara_odps_AlterTable_DropPartition_descriptor;
          }
          
          protected FieldAccessorTable
              internalGetFieldAccessorTable() {
            return DDLProtos.internal_static_apsara_odps_AlterTable_DropPartition_fieldAccessorTable;
          }
          
          // Construct using apsara.odps.DDLProtos.AlterTable.DropPartition.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
          
          private Builder(BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
              getPartSpecFieldBuilder();
            }
          }
          private static Builder create() {
            return new Builder();
          }
          
          public Builder clear() {
            super.clear();
            if (partSpecBuilder_ == null) {
              partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
            } else {
              partSpecBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000001);
            ifNotExists_ = false;
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }
          
          public Builder clone() {
            return create().mergeFrom(buildPartial());
          }
          
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return DropPartition.getDescriptor();
          }
          
          public DropPartition getDefaultInstanceForType() {
            return DropPartition.getDefaultInstance();
          }
          
          public DropPartition build() {
            DropPartition result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
          
          private DropPartition buildParsed()
              throws com.google.protobuf.InvalidProtocolBufferException {
            DropPartition result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(
                result).asInvalidProtocolBufferException();
            }
            return result;
          }
          
          public DropPartition buildPartial() {
            DropPartition result = new DropPartition(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            if (partSpecBuilder_ == null) {
              result.partSpec_ = partSpec_;
            } else {
              result.partSpec_ = partSpecBuilder_.build();
            }
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.ifNotExists_ = ifNotExists_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
          
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof DropPartition) {
              return mergeFrom((DropPartition)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
          
          public Builder mergeFrom(DropPartition other) {
            if (other == DropPartition.getDefaultInstance()) return this;
            if (other.hasPartSpec()) {
              mergePartSpec(other.getPartSpec());
            }
            if (other.hasIfNotExists()) {
              setIfNotExists(other.getIfNotExists());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            return this;
          }
          
          public final boolean isInitialized() {
            if (!hasPartSpec()) {
              
              return false;
            }
            if (!getPartSpec().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: {
                  PartitionSpecProtos.PartitionSpec.Builder subBuilder = PartitionSpecProtos.PartitionSpec.newBuilder();
                  if (hasPartSpec()) {
                    subBuilder.mergeFrom(getPartSpec());
                  }
                  input.readMessage(subBuilder, extensionRegistry);
                  setPartSpec(subBuilder.buildPartial());
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  ifNotExists_ = input.readBool();
                  break;
                }
              }
            }
          }
          
          private int bitField0_;
          
          // required .apsara.odps.PartitionSpec PartSpec = 1;
          private PartitionSpecProtos.PartitionSpec partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
          private com.google.protobuf.SingleFieldBuilder<
              PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder> partSpecBuilder_;
          public boolean hasPartSpec() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          public PartitionSpecProtos.PartitionSpec getPartSpec() {
            if (partSpecBuilder_ == null) {
              return partSpec_;
            } else {
              return partSpecBuilder_.getMessage();
            }
          }
          public Builder setPartSpec(PartitionSpecProtos.PartitionSpec value) {
            if (partSpecBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              partSpec_ = value;
              onChanged();
            } else {
              partSpecBuilder_.setMessage(value);
            }
            bitField0_ |= 0x00000001;
            return this;
          }
          public Builder setPartSpec(
              PartitionSpecProtos.PartitionSpec.Builder builderForValue) {
            if (partSpecBuilder_ == null) {
              partSpec_ = builderForValue.build();
              onChanged();
            } else {
              partSpecBuilder_.setMessage(builderForValue.build());
            }
            bitField0_ |= 0x00000001;
            return this;
          }
          public Builder mergePartSpec(PartitionSpecProtos.PartitionSpec value) {
            if (partSpecBuilder_ == null) {
              if (((bitField0_ & 0x00000001) == 0x00000001) &&
                  partSpec_ != PartitionSpecProtos.PartitionSpec.getDefaultInstance()) {
                partSpec_ =
                  PartitionSpecProtos.PartitionSpec.newBuilder(partSpec_).mergeFrom(value).buildPartial();
              } else {
                partSpec_ = value;
              }
              onChanged();
            } else {
              partSpecBuilder_.mergeFrom(value);
            }
            bitField0_ |= 0x00000001;
            return this;
          }
          public Builder clearPartSpec() {
            if (partSpecBuilder_ == null) {
              partSpec_ = PartitionSpecProtos.PartitionSpec.getDefaultInstance();
              onChanged();
            } else {
              partSpecBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000001);
            return this;
          }
          public PartitionSpecProtos.PartitionSpec.Builder getPartSpecBuilder() {
            bitField0_ |= 0x00000001;
            onChanged();
            return getPartSpecFieldBuilder().getBuilder();
          }
          public PartitionSpecProtos.PartitionSpecOrBuilder getPartSpecOrBuilder() {
            if (partSpecBuilder_ != null) {
              return partSpecBuilder_.getMessageOrBuilder();
            } else {
              return partSpec_;
            }
          }
          private com.google.protobuf.SingleFieldBuilder<
              PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder>
              getPartSpecFieldBuilder() {
            if (partSpecBuilder_ == null) {
              partSpecBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                  PartitionSpecProtos.PartitionSpec, PartitionSpecProtos.PartitionSpec.Builder, PartitionSpecProtos.PartitionSpecOrBuilder>(
                      partSpec_,
                      getParentForChildren(),
                      isClean());
              partSpec_ = null;
            }
            return partSpecBuilder_;
          }
          
          // optional bool IfNotExists = 2 [default = false];
          private boolean ifNotExists_ ;
          public boolean hasIfNotExists() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          public boolean getIfNotExists() {
            return ifNotExists_;
          }
          public Builder setIfNotExists(boolean value) {
            bitField0_ |= 0x00000002;
            ifNotExists_ = value;
            onChanged();
            return this;
          }
          public Builder clearIfNotExists() {
            bitField0_ = (bitField0_ & ~0x00000002);
            ifNotExists_ = false;
            onChanged();
            return this;
          }
          
          // @@protoc_insertion_point(builder_scope:apsara.odps.AlterTable.DropPartition)
        }
        
        static {
          defaultInstance = new DropPartition(true);
          defaultInstance.initFields();
        }
        
        // @@protoc_insertion_point(class_scope:apsara.odps.AlterTable.DropPartition)
      }
      
      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 TableName = 2;
      public static final int TABLENAME_FIELD_NUMBER = 2;
      private Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTableName() {
        Object ref = tableName_;
        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)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional group AddPartition = 3 {
      public static final int ADDPARTITION_FIELD_NUMBER = 3;
      private AddPartition addPartition_;
      public boolean hasAddPartition() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public AddPartition getAddPartition() {
        return addPartition_;
      }
      public AddPartitionOrBuilder getAddPartitionOrBuilder() {
        return addPartition_;
      }
      
      // optional group DropPartition = 4 {
      public static final int DROPPARTITION_FIELD_NUMBER = 4;
      private DropPartition dropPartition_;
      public boolean hasDropPartition() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public DropPartition getDropPartition() {
        return dropPartition_;
      }
      public DropPartitionOrBuilder getDropPartitionOrBuilder() {
        return dropPartition_;
      }
      
      private void initFields() {
        project_ = "";
        tableName_ = "";
        addPartition_ = AddPartition.getDefaultInstance();
        dropPartition_ = DropPartition.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 (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasAddPartition()) {
          if (!getAddPartition().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasDropPartition()) {
          if (!getDropPartition().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, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeGroup(3, addPartition_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeGroup(4, dropPartition_);
        }
        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, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeGroupSize(3, addPartition_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeGroupSize(4, dropPartition_);
        }
        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 AlterTable parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static AlterTable parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static AlterTable parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static AlterTable parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static AlterTable parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static AlterTable parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static AlterTable parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static AlterTable 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 AlterTable parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static AlterTable 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(AlterTable 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 AlterTableOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return DDLProtos.internal_static_apsara_odps_AlterTable_descriptor;
        }
        
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return DDLProtos.internal_static_apsara_odps_AlterTable_fieldAccessorTable;
        }
        
        // Construct using apsara.odps.DDLProtos.AlterTable.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getAddPartitionFieldBuilder();
            getDropPartitionFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          project_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (addPartitionBuilder_ == null) {
            addPartition_ = AddPartition.getDefaultInstance();
          } else {
            addPartitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (dropPartitionBuilder_ == null) {
            dropPartition_ = DropPartition.getDefaultInstance();
          } else {
            dropPartitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return AlterTable.getDescriptor();
        }
        
        public AlterTable getDefaultInstanceForType() {
          return AlterTable.getDefaultInstance();
        }
        
        public AlterTable build() {
          AlterTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private AlterTable buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          AlterTable result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public AlterTable buildPartial() {
          AlterTable result = new AlterTable(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.tableName_ = tableName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (addPartitionBuilder_ == null) {
            result.addPartition_ = addPartition_;
          } else {
            result.addPartition_ = addPartitionBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (dropPartitionBuilder_ == null) {
            result.dropPartition_ = dropPartition_;
          } else {
            result.dropPartition_ = dropPartitionBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof AlterTable) {
            return mergeFrom((AlterTable)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(AlterTable other) {
          if (other == AlterTable.getDefaultInstance()) return this;
          if (other.hasProject()) {
            setProject(other.getProject());
          }
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (other.hasAddPartition()) {
            mergeAddPartition(other.getAddPartition());
          }
          if (other.hasDropPartition()) {
            mergeDropPartition(other.getDropPartition());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasProject()) {
            
            return false;
          }
          if (!hasTableName()) {
            
            return false;
          }
          if (hasAddPartition()) {
            if (!getAddPartition().isInitialized()) {
              
              return false;
            }
          }
          if (hasDropPartition()) {
            if (!getDropPartition().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;
                tableName_ = input.readBytes();
                break;
              }
              case 27: {
                AddPartition.Builder subBuilder = AddPartition.newBuilder();
                if (hasAddPartition()) {
                  subBuilder.mergeFrom(getAddPartition());
                }
                input.readGroup(3, subBuilder, extensionRegistry);
                setAddPartition(subBuilder.buildPartial());
                break;
              }
              case 35: {
                DropPartition.Builder subBuilder = DropPartition.newBuilder();
                if (hasDropPartition()) {
                  subBuilder.mergeFrom(getDropPartition());
                }
                input.readGroup(4, subBuilder, extensionRegistry);
                setDropPartition(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 TableName = 2;
        private Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getTableName() {
          Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          tableName_ = value;
          onChanged();
        }
        
        // optional group AddPartition = 3 {
        private AddPartition addPartition_ = AddPartition.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            AddPartition, AddPartition.Builder, AddPartitionOrBuilder> addPartitionBuilder_;
        public boolean hasAddPartition() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public AddPartition getAddPartition() {
          if (addPartitionBuilder_ == null) {
            return addPartition_;
          } else {
            return addPartitionBuilder_.getMessage();
          }
        }
        public Builder setAddPartition(AddPartition value) {
          if (addPartitionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            addPartition_ = value;
            onChanged();
          } else {
            addPartitionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setAddPartition(
            AddPartition.Builder builderForValue) {
          if (addPartitionBuilder_ == null) {
            addPartition_ = builderForValue.build();
            onChanged();
          } else {
            addPartitionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeAddPartition(AddPartition value) {
          if (addPartitionBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                addPartition_ != AddPartition.getDefaultInstance()) {
              addPartition_ =
                AddPartition.newBuilder(addPartition_).mergeFrom(value).buildPartial();
            } else {
              addPartition_ = value;
            }
            onChanged();
          } else {
            addPartitionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearAddPartition() {
          if (addPartitionBuilder_ == null) {
            addPartition_ = AddPartition.getDefaultInstance();
            onChanged();
          } else {
            addPartitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public AddPartition.Builder getAddPartitionBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getAddPartitionFieldBuilder().getBuilder();
        }
        public AddPartitionOrBuilder getAddPartitionOrBuilder() {
          if (addPartitionBuilder_ != null) {
            return addPartitionBuilder_.getMessageOrBuilder();
          } else {
            return addPartition_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            AddPartition, AddPartition.Builder, AddPartitionOrBuilder>
            getAddPartitionFieldBuilder() {
          if (addPartitionBuilder_ == null) {
            addPartitionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                AddPartition, AddPartition.Builder, AddPartitionOrBuilder>(
                    addPartition_,
                    getParentForChildren(),
                    isClean());
            addPartition_ = null;
          }
          return addPartitionBuilder_;
        }
        
        // optional group DropPartition = 4 {
        private DropPartition dropPartition_ = DropPartition.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            DropPartition, DropPartition.Builder, DropPartitionOrBuilder> dropPartitionBuilder_;
        public boolean hasDropPartition() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public DropPartition getDropPartition() {
          if (dropPartitionBuilder_ == null) {
            return dropPartition_;
          } else {
            return dropPartitionBuilder_.getMessage();
          }
        }
        public Builder setDropPartition(DropPartition value) {
          if (dropPartitionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            dropPartition_ = value;
            onChanged();
          } else {
            dropPartitionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setDropPartition(
            DropPartition.Builder builderForValue) {
          if (dropPartitionBuilder_ == null) {
            dropPartition_ = builderForValue.build();
            onChanged();
          } else {
            dropPartitionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergeDropPartition(DropPartition value) {
          if (dropPartitionBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                dropPartition_ != DropPartition.getDefaultInstance()) {
              dropPartition_ =
                DropPartition.newBuilder(dropPartition_).mergeFrom(value).buildPartial();
            } else {
              dropPartition_ = value;
            }
            onChanged();
          } else {
            dropPartitionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearDropPartition() {
          if (dropPartitionBuilder_ == null) {
            dropPartition_ = DropPartition.getDefaultInstance();
            onChanged();
          } else {
            dropPartitionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public DropPartition.Builder getDropPartitionBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getDropPartitionFieldBuilder().getBuilder();
        }
        public DropPartitionOrBuilder getDropPartitionOrBuilder() {
          if (dropPartitionBuilder_ != null) {
            return dropPartitionBuilder_.getMessageOrBuilder();
          } else {
            return dropPartition_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            DropPartition, DropPartition.Builder, DropPartitionOrBuilder>
            getDropPartitionFieldBuilder() {
          if (dropPartitionBuilder_ == null) {
            dropPartitionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                DropPartition, DropPartition.Builder, DropPartitionOrBuilder>(
                    dropPartition_,
                    getParentForChildren(),
                    isClean());
            dropPartition_ = null;
          }
          return dropPartitionBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:apsara.odps.AlterTable)
      }
      
      static {
        defaultInstance = new AlterTable(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:apsara.odps.AlterTable)
    }
    
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_ColumnDescription_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_ColumnDescription_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_CreateTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_CreateTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_CreateStreamTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_CreateStreamTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_CreateDimensionTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_CreateDimensionTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_CreateResultTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_CreateResultTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_CreateTempTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_CreateTempTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_CreateTableLike_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_CreateTableLike_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_DropTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_DropTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_AlterTable_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_AlterTable_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_AlterTable_AddPartition_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_AlterTable_AddPartition_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_apsara_odps_AlterTable_DropPartition_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_apsara_odps_AlterTable_DropPartition_fieldAccessorTable;
    
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      String[] descriptorData = {
        "\n\020common/ddl.proto\022\013apsara.odps\032\027common/" +
        "expression.proto\032\022common/types.proto\032\032co" +
        "mmon/partitionspec.proto\"b\n\021ColumnDescri" +
        "ption\022\014\n\004Name\030\001 \002(\t\022\037\n\004Type\030\002 \002(\0162\021.apsa" +
        "ra.odps.Type\022\r\n\005Index\030\003 \002(\005\022\017\n\007Comment\030\004" +
        " \001(\t\"\330\001\n\013CreateTable\022\017\n\007Project\030\001 \002(\t\022\r\n" +
        "\005Table\030\002 \002(\t\022/\n\007Columns\030\003 \003(\0132\036.apsara.o" +
        "dps.ColumnDescription\0228\n\020PartitionColumn" +
        "s\030\004 \003(\0132\036.apsara.odps.ColumnDescription\022" +
        "\017\n\007Comment\030\005 \001(\t\022\032\n\013IfNotExists\030\006 \001(\010:\005f",
        "alse\022\021\n\tLifeCycle\030\007 \001(\005\"\202\001\n\021CreateStream" +
        "Table\022\017\n\007Project\030\001 \002(\t\022\r\n\005Table\030\002 \002(\t\022/\n" +
        "\007Columns\030\003 \003(\0132\036.apsara.odps.ColumnDescr" +
        "iption\022\013\n\003Uri\030\004 \002(\t\022\017\n\007Comment\030\005 \001(\t\"\205\001\n" +
        "\024CreateDimensionTable\022\017\n\007Project\030\001 \002(\t\022\r" +
        "\n\005Table\030\002 \002(\t\022/\n\007Columns\030\003 \003(\0132\036.apsara." +
        "odps.ColumnDescription\022\013\n\003Uri\030\004 \002(\t\022\017\n\007C" +
        "omment\030\005 \001(\t\"\227\001\n\021CreateResultTable\022\017\n\007Pr" +
        "oject\030\001 \002(\t\022\r\n\005Table\030\002 \002(\t\022/\n\007Columns\030\003 " +
        "\003(\0132\036.apsara.odps.ColumnDescription\022\013\n\003U",
        "ri\030\004 \002(\t\022\017\n\007Comment\030\005 \001(\t\022\023\n\013PrimaryKeys" +
        "\030\006 \003(\t\"Q\n\017CreateTempTable\022\r\n\005Table\030\001 \002(\t" +
        "\022/\n\007Columns\030\002 \003(\0132\036.apsara.odps.ColumnDe" +
        "scription\"y\n\017CreateTableLike\022\017\n\007Project\030" +
        "\001 \002(\t\022\r\n\005Table\030\002 \002(\t\022\025\n\rSourceProject\030\003 " +
        "\002(\t\022\023\n\013SourceTable\030\004 \002(\t\022\032\n\013IfNotExists\030" +
        "\005 \001(\010:\005false\"H\n\tDropTable\022\017\n\007Project\030\001 \002" +
        "(\t\022\021\n\tTableName\030\002 \002(\t\022\027\n\010IfExists\030\003 \001(\010:" +
        "\005false\"\337\002\n\nAlterTable\022\017\n\007Project\030\001 \002(\t\022\021" +
        "\n\tTableName\030\002 \002(\t\022:\n\014addpartition\030\003 \001(\n2",
        "$.apsara.odps.AlterTable.AddPartition\022<\n" +
        "\rdroppartition\030\004 \001(\n2%.apsara.odps.Alter" +
        "Table.DropPartition\032X\n\014AddPartition\022,\n\010P" +
        "artSpec\030\001 \002(\0132\032.apsara.odps.PartitionSpe" +
        "c\022\032\n\013IfNotExists\030\002 \001(\010:\005false\032Y\n\rDropPar" +
        "tition\022,\n\010PartSpec\030\001 \002(\0132\032.apsara.odps.P" +
        "artitionSpec\022\032\n\013IfNotExists\030\002 \001(\010:\005false" +
        "B\013B\tDDLProtos"
      };
      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_ColumnDescription_descriptor =
              getDescriptor().getMessageTypes().get(0);
            internal_static_apsara_odps_ColumnDescription_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_ColumnDescription_descriptor,
                new String[] { "Name", "Type", "Index", "Comment", },
                ColumnDescription.class,
                ColumnDescription.Builder.class);
            internal_static_apsara_odps_CreateTable_descriptor =
              getDescriptor().getMessageTypes().get(1);
            internal_static_apsara_odps_CreateTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_CreateTable_descriptor,
                new String[] { "Project", "Table", "Columns", "PartitionColumns", "Comment", "IfNotExists", "LifeCycle", },
                CreateTable.class,
                CreateTable.Builder.class);
            internal_static_apsara_odps_CreateStreamTable_descriptor =
              getDescriptor().getMessageTypes().get(2);
            internal_static_apsara_odps_CreateStreamTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_CreateStreamTable_descriptor,
                new String[] { "Project", "Table", "Columns", "Uri", "Comment", },
                CreateStreamTable.class,
                CreateStreamTable.Builder.class);
            internal_static_apsara_odps_CreateDimensionTable_descriptor =
              getDescriptor().getMessageTypes().get(3);
            internal_static_apsara_odps_CreateDimensionTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_CreateDimensionTable_descriptor,
                new String[] { "Project", "Table", "Columns", "Uri", "Comment", },
                CreateDimensionTable.class,
                CreateDimensionTable.Builder.class);
            internal_static_apsara_odps_CreateResultTable_descriptor =
              getDescriptor().getMessageTypes().get(4);
            internal_static_apsara_odps_CreateResultTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_CreateResultTable_descriptor,
                new String[] { "Project", "Table", "Columns", "Uri", "Comment", "PrimaryKeys", },
                CreateResultTable.class,
                CreateResultTable.Builder.class);
            internal_static_apsara_odps_CreateTempTable_descriptor =
              getDescriptor().getMessageTypes().get(5);
            internal_static_apsara_odps_CreateTempTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_CreateTempTable_descriptor,
                new String[] { "Table", "Columns", },
                CreateTempTable.class,
                CreateTempTable.Builder.class);
            internal_static_apsara_odps_CreateTableLike_descriptor =
              getDescriptor().getMessageTypes().get(6);
            internal_static_apsara_odps_CreateTableLike_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_CreateTableLike_descriptor,
                new String[] { "Project", "Table", "SourceProject", "SourceTable", "IfNotExists", },
                CreateTableLike.class,
                CreateTableLike.Builder.class);
            internal_static_apsara_odps_DropTable_descriptor =
              getDescriptor().getMessageTypes().get(7);
            internal_static_apsara_odps_DropTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_DropTable_descriptor,
                new String[] { "Project", "TableName", "IfExists", },
                DropTable.class,
                DropTable.Builder.class);
            internal_static_apsara_odps_AlterTable_descriptor =
              getDescriptor().getMessageTypes().get(8);
            internal_static_apsara_odps_AlterTable_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_AlterTable_descriptor,
                new String[] { "Project", "TableName", "AddPartition", "DropPartition", },
                AlterTable.class,
                AlterTable.Builder.class);
            internal_static_apsara_odps_AlterTable_AddPartition_descriptor =
              internal_static_apsara_odps_AlterTable_descriptor.getNestedTypes().get(0);
            internal_static_apsara_odps_AlterTable_AddPartition_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_AlterTable_AddPartition_descriptor,
                new String[] { "PartSpec", "IfNotExists", },
                AlterTable.AddPartition.class,
                AlterTable.AddPartition.Builder.class);
            internal_static_apsara_odps_AlterTable_DropPartition_descriptor =
              internal_static_apsara_odps_AlterTable_descriptor.getNestedTypes().get(1);
            internal_static_apsara_odps_AlterTable_DropPartition_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_apsara_odps_AlterTable_DropPartition_descriptor,
                new String[] { "PartSpec", "IfNotExists", },
                AlterTable.DropPartition.class,
                AlterTable.DropPartition.Builder.class);
            return null;
          }
        };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            ExpressionProtos.getDescriptor(),
            TypesProtos.getDescriptor(),
            PartitionSpecProtos.getDescriptor(),
          }, assigner);
    }
    
    // @@protoc_insertion_point(outer_class_scope)
  }
  