http://git-wip-us.apache.org/repos/asf/phoenix/blob/450dbc59/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
index 4171680..b6aed1a 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/generated/PTableProtos.java
@@ -269,6 +269,16 @@ public final class PTableProtos {
      * <code>optional bool isDynamic = 14;</code>
      */
     boolean getIsDynamic();
+
+    // optional int32 columnQualifier = 15;
+    /**
+     * <code>optional int32 columnQualifier = 15;</code>
+     */
+    boolean hasColumnQualifier();
+    /**
+     * <code>optional int32 columnQualifier = 15;</code>
+     */
+    int getColumnQualifier();
   }
   /**
    * Protobuf type {@code PColumn}
@@ -391,6 +401,11 @@ public final class PTableProtos {
               isDynamic_ = input.readBool();
               break;
             }
+            case 120: {
+              bitField0_ |= 0x00004000;
+              columnQualifier_ = input.readInt32();
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -709,6 +724,22 @@ public final class PTableProtos {
       return isDynamic_;
     }
 
+    // optional int32 columnQualifier = 15;
+    public static final int COLUMNQUALIFIER_FIELD_NUMBER = 15;
+    private int columnQualifier_;
+    /**
+     * <code>optional int32 columnQualifier = 15;</code>
+     */
+    public boolean hasColumnQualifier() {
+      return ((bitField0_ & 0x00004000) == 0x00004000);
+    }
+    /**
+     * <code>optional int32 columnQualifier = 15;</code>
+     */
+    public int getColumnQualifier() {
+      return columnQualifier_;
+    }
+
     private void initFields() {
       columnNameBytes_ = com.google.protobuf.ByteString.EMPTY;
       familyNameBytes_ = com.google.protobuf.ByteString.EMPTY;
@@ -724,6 +755,7 @@ public final class PTableProtos {
       expression_ = "";
       isRowTimestamp_ = false;
       isDynamic_ = false;
+      columnQualifier_ = 0;
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -799,6 +831,9 @@ public final class PTableProtos {
       if (((bitField0_ & 0x00002000) == 0x00002000)) {
         output.writeBool(14, isDynamic_);
       }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        output.writeInt32(15, columnQualifier_);
+      }
       getUnknownFields().writeTo(output);
     }
 
@@ -864,6 +899,10 @@ public final class PTableProtos {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(14, isDynamic_);
       }
+      if (((bitField0_ & 0x00004000) == 0x00004000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(15, columnQualifier_);
+      }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
       return size;
@@ -957,6 +996,11 @@ public final class PTableProtos {
         result = result && (getIsDynamic()
             == other.getIsDynamic());
       }
+      result = result && (hasColumnQualifier() == other.hasColumnQualifier());
+      if (hasColumnQualifier()) {
+        result = result && (getColumnQualifier()
+            == other.getColumnQualifier());
+      }
       result = result &&
           getUnknownFields().equals(other.getUnknownFields());
       return result;
@@ -1026,6 +1070,10 @@ public final class PTableProtos {
         hash = (37 * hash) + ISDYNAMIC_FIELD_NUMBER;
         hash = (53 * hash) + hashBoolean(getIsDynamic());
       }
+      if (hasColumnQualifier()) {
+        hash = (37 * hash) + COLUMNQUALIFIER_FIELD_NUMBER;
+        hash = (53 * hash) + getColumnQualifier();
+      }
       hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -1163,6 +1211,8 @@ public final class PTableProtos {
         bitField0_ = (bitField0_ & ~0x00001000);
         isDynamic_ = false;
         bitField0_ = (bitField0_ & ~0x00002000);
+        columnQualifier_ = 0;
+        bitField0_ = (bitField0_ & ~0x00004000);
         return this;
       }
 
@@ -1247,6 +1297,10 @@ public final class PTableProtos {
           to_bitField0_ |= 0x00002000;
         }
         result.isDynamic_ = isDynamic_;
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+          to_bitField0_ |= 0x00004000;
+        }
+        result.columnQualifier_ = columnQualifier_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -1309,6 +1363,9 @@ public final class PTableProtos {
         if (other.hasIsDynamic()) {
           setIsDynamic(other.getIsDynamic());
         }
+        if (other.hasColumnQualifier()) {
+          setColumnQualifier(other.getColumnQualifier());
+        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -1909,6 +1966,39 @@ public final class PTableProtos {
         return this;
       }
 
+      // optional int32 columnQualifier = 15;
+      private int columnQualifier_ ;
+      /**
+       * <code>optional int32 columnQualifier = 15;</code>
+       */
+      public boolean hasColumnQualifier() {
+        return ((bitField0_ & 0x00004000) == 0x00004000);
+      }
+      /**
+       * <code>optional int32 columnQualifier = 15;</code>
+       */
+      public int getColumnQualifier() {
+        return columnQualifier_;
+      }
+      /**
+       * <code>optional int32 columnQualifier = 15;</code>
+       */
+      public Builder setColumnQualifier(int value) {
+        bitField0_ |= 0x00004000;
+        columnQualifier_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 columnQualifier = 15;</code>
+       */
+      public Builder clearColumnQualifier() {
+        bitField0_ = (bitField0_ & ~0x00004000);
+        columnQualifier_ = 0;
+        onChanged();
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:PColumn)
     }
 
@@ -3140,38 +3230,25 @@ public final class PTableProtos {
      */
     boolean getIsImmutableRows();
 
-    // repeated .PTableStats guidePosts = 12;
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    
java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>
 
-        getGuidePostsList();
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats 
getGuidePosts(int index);
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    int getGuidePostsCount();
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    java.util.List<? extends 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder> 
-        getGuidePostsOrBuilderList();
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder 
getGuidePostsOrBuilder(
-        int index);
-
     // optional bytes dataTableNameBytes = 13;
     /**
      * <code>optional bytes dataTableNameBytes = 13;</code>
+     *
+     * <pre>
+     * Do NOT reuse the tag '12'. Stats are no longer passed
+     * along with the PTable.
+     *repeated PTableStats guidePosts = 12;
+     * </pre>
      */
     boolean hasDataTableNameBytes();
     /**
      * <code>optional bytes dataTableNameBytes = 13;</code>
+     *
+     * <pre>
+     * Do NOT reuse the tag '12'. Stats are no longer passed
+     * along with the PTable.
+     *repeated PTableStats guidePosts = 12;
+     * </pre>
      */
     com.google.protobuf.ByteString getDataTableNameBytes();
 
@@ -3349,30 +3426,50 @@ public final class PTableProtos {
      */
     boolean getIsNamespaceMapped();
 
-    // optional string autoParititonSeqName = 31;
+    // optional string autoParititonSeqName = 32;
     /**
-     * <code>optional string autoParititonSeqName = 31;</code>
+     * <code>optional string autoParititonSeqName = 32;</code>
      */
     boolean hasAutoParititonSeqName();
     /**
-     * <code>optional string autoParititonSeqName = 31;</code>
+     * <code>optional string autoParititonSeqName = 32;</code>
      */
     java.lang.String getAutoParititonSeqName();
     /**
-     * <code>optional string autoParititonSeqName = 31;</code>
+     * <code>optional string autoParititonSeqName = 32;</code>
      */
     com.google.protobuf.ByteString
         getAutoParititonSeqNameBytes();
 
-    // optional bool isAppendOnlySchema = 32;
+    // optional bool isAppendOnlySchema = 33;
     /**
-     * <code>optional bool isAppendOnlySchema = 32;</code>
+     * <code>optional bool isAppendOnlySchema = 33;</code>
      */
     boolean hasIsAppendOnlySchema();
     /**
-     * <code>optional bool isAppendOnlySchema = 32;</code>
+     * <code>optional bool isAppendOnlySchema = 33;</code>
      */
     boolean getIsAppendOnlySchema();
+
+    // optional bytes storageScheme = 34;
+    /**
+     * <code>optional bytes storageScheme = 34;</code>
+     */
+    boolean hasStorageScheme();
+    /**
+     * <code>optional bytes storageScheme = 34;</code>
+     */
+    com.google.protobuf.ByteString getStorageScheme();
+
+    // optional int32 encodedColumnQualifierCounter = 35;
+    /**
+     * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+     */
+    boolean hasEncodedColumnQualifierCounter();
+    /**
+     * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+     */
+    int getEncodedColumnQualifierCounter();
   }
   /**
    * Protobuf type {@code PTable}
@@ -3408,6 +3505,7 @@ public final class PTableProtos {
         throws com.google.protobuf.InvalidProtocolBufferException {
       initFields();
       int mutable_bitField0_ = 0;
+      int mutable_bitField1_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -3492,14 +3590,6 @@ public final class PTableProtos {
               isImmutableRows_ = input.readBool();
               break;
             }
-            case 98: {
-              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
-                guidePosts_ = new 
java.util.ArrayList<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>();
-                mutable_bitField0_ |= 0x00000800;
-              }
-              
guidePosts_.add(input.readMessage(org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.PARSER,
 extensionRegistry));
-              break;
-            }
             case 106: {
               bitField0_ |= 0x00000200;
               dataTableNameBytes_ = input.readBytes();
@@ -3531,9 +3621,9 @@ public final class PTableProtos {
               break;
             }
             case 154: {
-              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
                 physicalNames_ = new 
java.util.ArrayList<com.google.protobuf.ByteString>();
-                mutable_bitField0_ |= 0x00040000;
+                mutable_bitField0_ |= 0x00020000;
               }
               physicalNames_.add(input.readBytes());
               break;
@@ -3593,16 +3683,26 @@ public final class PTableProtos {
               isNamespaceMapped_ = input.readBool();
               break;
             }
-            case 250: {
+            case 258: {
               bitField0_ |= 0x04000000;
               autoParititonSeqName_ = input.readBytes();
               break;
             }
-            case 256: {
+            case 264: {
               bitField0_ |= 0x08000000;
               isAppendOnlySchema_ = input.readBool();
               break;
             }
+            case 274: {
+              bitField0_ |= 0x10000000;
+              storageScheme_ = input.readBytes();
+              break;
+            }
+            case 280: {
+              bitField0_ |= 0x20000000;
+              encodedColumnQualifierCounter_ = input.readInt32();
+              break;
+            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
@@ -3617,10 +3717,7 @@ public final class PTableProtos {
         if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
           indexes_ = java.util.Collections.unmodifiableList(indexes_);
         }
-        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
-          guidePosts_ = java.util.Collections.unmodifiableList(guidePosts_);
-        }
-        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
+        if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
           physicalNames_ = 
java.util.Collections.unmodifiableList(physicalNames_);
         }
         this.unknownFields = unknownFields.build();
@@ -3898,53 +3995,29 @@ public final class PTableProtos {
       return isImmutableRows_;
     }
 
-    // repeated .PTableStats guidePosts = 12;
-    public static final int GUIDEPOSTS_FIELD_NUMBER = 12;
-    private 
java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>
 guidePosts_;
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    public 
java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>
 getGuidePostsList() {
-      return guidePosts_;
-    }
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    public java.util.List<? extends 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder> 
-        getGuidePostsOrBuilderList() {
-      return guidePosts_;
-    }
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    public int getGuidePostsCount() {
-      return guidePosts_.size();
-    }
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats 
getGuidePosts(int index) {
-      return guidePosts_.get(index);
-    }
-    /**
-     * <code>repeated .PTableStats guidePosts = 12;</code>
-     */
-    public 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder 
getGuidePostsOrBuilder(
-        int index) {
-      return guidePosts_.get(index);
-    }
-
     // optional bytes dataTableNameBytes = 13;
     public static final int DATATABLENAMEBYTES_FIELD_NUMBER = 13;
     private com.google.protobuf.ByteString dataTableNameBytes_;
     /**
      * <code>optional bytes dataTableNameBytes = 13;</code>
+     *
+     * <pre>
+     * Do NOT reuse the tag '12'. Stats are no longer passed
+     * along with the PTable.
+     *repeated PTableStats guidePosts = 12;
+     * </pre>
      */
     public boolean hasDataTableNameBytes() {
       return ((bitField0_ & 0x00000200) == 0x00000200);
     }
     /**
      * <code>optional bytes dataTableNameBytes = 13;</code>
+     *
+     * <pre>
+     * Do NOT reuse the tag '12'. Stats are no longer passed
+     * along with the PTable.
+     *repeated PTableStats guidePosts = 12;
+     * </pre>
      */
     public com.google.protobuf.ByteString getDataTableNameBytes() {
       return dataTableNameBytes_;
@@ -4229,17 +4302,17 @@ public final class PTableProtos {
       return isNamespaceMapped_;
     }
 
-    // optional string autoParititonSeqName = 31;
-    public static final int AUTOPARITITONSEQNAME_FIELD_NUMBER = 31;
+    // optional string autoParititonSeqName = 32;
+    public static final int AUTOPARITITONSEQNAME_FIELD_NUMBER = 32;
     private java.lang.Object autoParititonSeqName_;
     /**
-     * <code>optional string autoParititonSeqName = 31;</code>
+     * <code>optional string autoParititonSeqName = 32;</code>
      */
     public boolean hasAutoParititonSeqName() {
       return ((bitField0_ & 0x04000000) == 0x04000000);
     }
     /**
-     * <code>optional string autoParititonSeqName = 31;</code>
+     * <code>optional string autoParititonSeqName = 32;</code>
      */
     public java.lang.String getAutoParititonSeqName() {
       java.lang.Object ref = autoParititonSeqName_;
@@ -4256,7 +4329,7 @@ public final class PTableProtos {
       }
     }
     /**
-     * <code>optional string autoParititonSeqName = 31;</code>
+     * <code>optional string autoParititonSeqName = 32;</code>
      */
     public com.google.protobuf.ByteString
         getAutoParititonSeqNameBytes() {
@@ -4272,22 +4345,54 @@ public final class PTableProtos {
       }
     }
 
-    // optional bool isAppendOnlySchema = 32;
-    public static final int ISAPPENDONLYSCHEMA_FIELD_NUMBER = 32;
+    // optional bool isAppendOnlySchema = 33;
+    public static final int ISAPPENDONLYSCHEMA_FIELD_NUMBER = 33;
     private boolean isAppendOnlySchema_;
     /**
-     * <code>optional bool isAppendOnlySchema = 32;</code>
+     * <code>optional bool isAppendOnlySchema = 33;</code>
      */
     public boolean hasIsAppendOnlySchema() {
       return ((bitField0_ & 0x08000000) == 0x08000000);
     }
     /**
-     * <code>optional bool isAppendOnlySchema = 32;</code>
+     * <code>optional bool isAppendOnlySchema = 33;</code>
      */
     public boolean getIsAppendOnlySchema() {
       return isAppendOnlySchema_;
     }
 
+    // optional bytes storageScheme = 34;
+    public static final int STORAGESCHEME_FIELD_NUMBER = 34;
+    private com.google.protobuf.ByteString storageScheme_;
+    /**
+     * <code>optional bytes storageScheme = 34;</code>
+     */
+    public boolean hasStorageScheme() {
+      return ((bitField0_ & 0x10000000) == 0x10000000);
+    }
+    /**
+     * <code>optional bytes storageScheme = 34;</code>
+     */
+    public com.google.protobuf.ByteString getStorageScheme() {
+      return storageScheme_;
+    }
+
+    // optional int32 encodedColumnQualifierCounter = 35;
+    public static final int ENCODEDCOLUMNQUALIFIERCOUNTER_FIELD_NUMBER = 35;
+    private int encodedColumnQualifierCounter_;
+    /**
+     * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+     */
+    public boolean hasEncodedColumnQualifierCounter() {
+      return ((bitField0_ & 0x20000000) == 0x20000000);
+    }
+    /**
+     * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+     */
+    public int getEncodedColumnQualifierCounter() {
+      return encodedColumnQualifierCounter_;
+    }
+
     private void initFields() {
       schemaNameBytes_ = com.google.protobuf.ByteString.EMPTY;
       tableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
@@ -4300,7 +4405,6 @@ public final class PTableProtos {
       columns_ = java.util.Collections.emptyList();
       indexes_ = java.util.Collections.emptyList();
       isImmutableRows_ = false;
-      guidePosts_ = java.util.Collections.emptyList();
       dataTableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
       defaultFamilyName_ = com.google.protobuf.ByteString.EMPTY;
       disableWAL_ = false;
@@ -4321,6 +4425,8 @@ public final class PTableProtos {
       isNamespaceMapped_ = false;
       autoParititonSeqName_ = "";
       isAppendOnlySchema_ = false;
+      storageScheme_ = com.google.protobuf.ByteString.EMPTY;
+      encodedColumnQualifierCounter_ = 0;
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
@@ -4375,12 +4481,6 @@ public final class PTableProtos {
           return false;
         }
       }
-      for (int i = 0; i < getGuidePostsCount(); i++) {
-        if (!getGuidePosts(i).isInitialized()) {
-          memoizedIsInitialized = 0;
-          return false;
-        }
-      }
       memoizedIsInitialized = 1;
       return true;
     }
@@ -4421,9 +4521,6 @@ public final class PTableProtos {
       if (((bitField0_ & 0x00000100) == 0x00000100)) {
         output.writeBool(11, isImmutableRows_);
       }
-      for (int i = 0; i < guidePosts_.size(); i++) {
-        output.writeMessage(12, guidePosts_.get(i));
-      }
       if (((bitField0_ & 0x00000200) == 0x00000200)) {
         output.writeBytes(13, dataTableNameBytes_);
       }
@@ -4479,10 +4576,16 @@ public final class PTableProtos {
         output.writeBool(30, isNamespaceMapped_);
       }
       if (((bitField0_ & 0x04000000) == 0x04000000)) {
-        output.writeBytes(31, getAutoParititonSeqNameBytes());
+        output.writeBytes(32, getAutoParititonSeqNameBytes());
       }
       if (((bitField0_ & 0x08000000) == 0x08000000)) {
-        output.writeBool(32, isAppendOnlySchema_);
+        output.writeBool(33, isAppendOnlySchema_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        output.writeBytes(34, storageScheme_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        output.writeInt32(35, encodedColumnQualifierCounter_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -4537,10 +4640,6 @@ public final class PTableProtos {
         size += com.google.protobuf.CodedOutputStream
           .computeBoolSize(11, isImmutableRows_);
       }
-      for (int i = 0; i < guidePosts_.size(); i++) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(12, guidePosts_.get(i));
-      }
       if (((bitField0_ & 0x00000200) == 0x00000200)) {
         size += com.google.protobuf.CodedOutputStream
           .computeBytesSize(13, dataTableNameBytes_);
@@ -4620,11 +4719,19 @@ public final class PTableProtos {
       }
       if (((bitField0_ & 0x04000000) == 0x04000000)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(31, getAutoParititonSeqNameBytes());
+          .computeBytesSize(32, getAutoParititonSeqNameBytes());
       }
       if (((bitField0_ & 0x08000000) == 0x08000000)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(32, isAppendOnlySchema_);
+          .computeBoolSize(33, isAppendOnlySchema_);
+      }
+      if (((bitField0_ & 0x10000000) == 0x10000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(34, storageScheme_);
+      }
+      if (((bitField0_ & 0x20000000) == 0x20000000)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt32Size(35, encodedColumnQualifierCounter_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
@@ -4698,8 +4805,6 @@ public final class PTableProtos {
         result = result && (getIsImmutableRows()
             == other.getIsImmutableRows());
       }
-      result = result && getGuidePostsList()
-          .equals(other.getGuidePostsList());
       result = result && (hasDataTableNameBytes() == 
other.hasDataTableNameBytes());
       if (hasDataTableNameBytes()) {
         result = result && getDataTableNameBytes()
@@ -4797,6 +4902,16 @@ public final class PTableProtos {
         result = result && (getIsAppendOnlySchema()
             == other.getIsAppendOnlySchema());
       }
+      result = result && (hasStorageScheme() == other.hasStorageScheme());
+      if (hasStorageScheme()) {
+        result = result && getStorageScheme()
+            .equals(other.getStorageScheme());
+      }
+      result = result && (hasEncodedColumnQualifierCounter() == 
other.hasEncodedColumnQualifierCounter());
+      if (hasEncodedColumnQualifierCounter()) {
+        result = result && (getEncodedColumnQualifierCounter()
+            == other.getEncodedColumnQualifierCounter());
+      }
       result = result &&
           getUnknownFields().equals(other.getUnknownFields());
       return result;
@@ -4854,10 +4969,6 @@ public final class PTableProtos {
         hash = (37 * hash) + ISIMMUTABLEROWS_FIELD_NUMBER;
         hash = (53 * hash) + hashBoolean(getIsImmutableRows());
       }
-      if (getGuidePostsCount() > 0) {
-        hash = (37 * hash) + GUIDEPOSTS_FIELD_NUMBER;
-        hash = (53 * hash) + getGuidePostsList().hashCode();
-      }
       if (hasDataTableNameBytes()) {
         hash = (37 * hash) + DATATABLENAMEBYTES_FIELD_NUMBER;
         hash = (53 * hash) + getDataTableNameBytes().hashCode();
@@ -4938,6 +5049,14 @@ public final class PTableProtos {
         hash = (37 * hash) + ISAPPENDONLYSCHEMA_FIELD_NUMBER;
         hash = (53 * hash) + hashBoolean(getIsAppendOnlySchema());
       }
+      if (hasStorageScheme()) {
+        hash = (37 * hash) + STORAGESCHEME_FIELD_NUMBER;
+        hash = (53 * hash) + getStorageScheme().hashCode();
+      }
+      if (hasEncodedColumnQualifierCounter()) {
+        hash = (37 * hash) + ENCODEDCOLUMNQUALIFIERCOUNTER_FIELD_NUMBER;
+        hash = (53 * hash) + getEncodedColumnQualifierCounter();
+      }
       hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -5041,7 +5160,6 @@ public final class PTableProtos {
         if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
           getColumnsFieldBuilder();
           getIndexesFieldBuilder();
-          getGuidePostsFieldBuilder();
         }
       }
       private static Builder create() {
@@ -5080,52 +5198,50 @@ public final class PTableProtos {
         }
         isImmutableRows_ = false;
         bitField0_ = (bitField0_ & ~0x00000400);
-        if (guidePostsBuilder_ == null) {
-          guidePosts_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000800);
-        } else {
-          guidePostsBuilder_.clear();
-        }
         dataTableNameBytes_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00001000);
+        bitField0_ = (bitField0_ & ~0x00000800);
         defaultFamilyName_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00002000);
+        bitField0_ = (bitField0_ & ~0x00001000);
         disableWAL_ = false;
-        bitField0_ = (bitField0_ & ~0x00004000);
+        bitField0_ = (bitField0_ & ~0x00002000);
         multiTenant_ = false;
-        bitField0_ = (bitField0_ & ~0x00008000);
+        bitField0_ = (bitField0_ & ~0x00004000);
         viewType_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00010000);
+        bitField0_ = (bitField0_ & ~0x00008000);
         viewStatement_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00020000);
+        bitField0_ = (bitField0_ & ~0x00010000);
         physicalNames_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00040000);
+        bitField0_ = (bitField0_ & ~0x00020000);
         tenantId_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00080000);
+        bitField0_ = (bitField0_ & ~0x00040000);
         viewIndexId_ = 0;
-        bitField0_ = (bitField0_ & ~0x00100000);
+        bitField0_ = (bitField0_ & ~0x00080000);
         indexType_ = com.google.protobuf.ByteString.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00200000);
+        bitField0_ = (bitField0_ & ~0x00100000);
         statsTimeStamp_ = 0L;
-        bitField0_ = (bitField0_ & ~0x00400000);
+        bitField0_ = (bitField0_ & ~0x00200000);
         storeNulls_ = false;
-        bitField0_ = (bitField0_ & ~0x00800000);
+        bitField0_ = (bitField0_ & ~0x00400000);
         baseColumnCount_ = 0;
-        bitField0_ = (bitField0_ & ~0x01000000);
+        bitField0_ = (bitField0_ & ~0x00800000);
         rowKeyOrderOptimizable_ = false;
-        bitField0_ = (bitField0_ & ~0x02000000);
+        bitField0_ = (bitField0_ & ~0x01000000);
         transactional_ = false;
-        bitField0_ = (bitField0_ & ~0x04000000);
+        bitField0_ = (bitField0_ & ~0x02000000);
         updateCacheFrequency_ = 0L;
-        bitField0_ = (bitField0_ & ~0x08000000);
+        bitField0_ = (bitField0_ & ~0x04000000);
         indexDisableTimestamp_ = 0L;
-        bitField0_ = (bitField0_ & ~0x10000000);
+        bitField0_ = (bitField0_ & ~0x08000000);
         isNamespaceMapped_ = false;
-        bitField0_ = (bitField0_ & ~0x20000000);
+        bitField0_ = (bitField0_ & ~0x10000000);
         autoParititonSeqName_ = "";
-        bitField0_ = (bitField0_ & ~0x40000000);
+        bitField0_ = (bitField0_ & ~0x20000000);
         isAppendOnlySchema_ = false;
+        bitField0_ = (bitField0_ & ~0x40000000);
+        storageScheme_ = com.google.protobuf.ByteString.EMPTY;
         bitField0_ = (bitField0_ & ~0x80000000);
+        encodedColumnQualifierCounter_ = 0;
+        bitField1_ = (bitField1_ & ~0x00000001);
         return this;
       }
 
@@ -5153,6 +5269,7 @@ public final class PTableProtos {
       public org.apache.phoenix.coprocessor.generated.PTableProtos.PTable 
buildPartial() {
         org.apache.phoenix.coprocessor.generated.PTableProtos.PTable result = 
new org.apache.phoenix.coprocessor.generated.PTableProtos.PTable(this);
         int from_bitField0_ = bitField0_;
+        int from_bitField1_ = bitField1_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
           to_bitField0_ |= 0x00000001;
@@ -5208,96 +5325,95 @@ public final class PTableProtos {
           to_bitField0_ |= 0x00000100;
         }
         result.isImmutableRows_ = isImmutableRows_;
-        if (guidePostsBuilder_ == null) {
-          if (((bitField0_ & 0x00000800) == 0x00000800)) {
-            guidePosts_ = java.util.Collections.unmodifiableList(guidePosts_);
-            bitField0_ = (bitField0_ & ~0x00000800);
-          }
-          result.guidePosts_ = guidePosts_;
-        } else {
-          result.guidePosts_ = guidePostsBuilder_.build();
-        }
-        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
+        if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
           to_bitField0_ |= 0x00000200;
         }
         result.dataTableNameBytes_ = dataTableNameBytes_;
-        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
+        if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
           to_bitField0_ |= 0x00000400;
         }
         result.defaultFamilyName_ = defaultFamilyName_;
-        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
+        if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
           to_bitField0_ |= 0x00000800;
         }
         result.disableWAL_ = disableWAL_;
-        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
+        if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
           to_bitField0_ |= 0x00001000;
         }
         result.multiTenant_ = multiTenant_;
-        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
+        if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
           to_bitField0_ |= 0x00002000;
         }
         result.viewType_ = viewType_;
-        if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
+        if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
           to_bitField0_ |= 0x00004000;
         }
         result.viewStatement_ = viewStatement_;
-        if (((bitField0_ & 0x00040000) == 0x00040000)) {
+        if (((bitField0_ & 0x00020000) == 0x00020000)) {
           physicalNames_ = 
java.util.Collections.unmodifiableList(physicalNames_);
-          bitField0_ = (bitField0_ & ~0x00040000);
+          bitField0_ = (bitField0_ & ~0x00020000);
         }
         result.physicalNames_ = physicalNames_;
-        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
+        if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
           to_bitField0_ |= 0x00008000;
         }
         result.tenantId_ = tenantId_;
-        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
+        if (((from_bitField0_ & 0x00080000) == 0x00080000)) {
           to_bitField0_ |= 0x00010000;
         }
         result.viewIndexId_ = viewIndexId_;
-        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
+        if (((from_bitField0_ & 0x00100000) == 0x00100000)) {
           to_bitField0_ |= 0x00020000;
         }
         result.indexType_ = indexType_;
-        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
+        if (((from_bitField0_ & 0x00200000) == 0x00200000)) {
           to_bitField0_ |= 0x00040000;
         }
         result.statsTimeStamp_ = statsTimeStamp_;
-        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
+        if (((from_bitField0_ & 0x00400000) == 0x00400000)) {
           to_bitField0_ |= 0x00080000;
         }
         result.storeNulls_ = storeNulls_;
-        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
+        if (((from_bitField0_ & 0x00800000) == 0x00800000)) {
           to_bitField0_ |= 0x00100000;
         }
         result.baseColumnCount_ = baseColumnCount_;
-        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
+        if (((from_bitField0_ & 0x01000000) == 0x01000000)) {
           to_bitField0_ |= 0x00200000;
         }
         result.rowKeyOrderOptimizable_ = rowKeyOrderOptimizable_;
-        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
+        if (((from_bitField0_ & 0x02000000) == 0x02000000)) {
           to_bitField0_ |= 0x00400000;
         }
         result.transactional_ = transactional_;
-        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
+        if (((from_bitField0_ & 0x04000000) == 0x04000000)) {
           to_bitField0_ |= 0x00800000;
         }
         result.updateCacheFrequency_ = updateCacheFrequency_;
-        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
+        if (((from_bitField0_ & 0x08000000) == 0x08000000)) {
           to_bitField0_ |= 0x01000000;
         }
         result.indexDisableTimestamp_ = indexDisableTimestamp_;
-        if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
+        if (((from_bitField0_ & 0x10000000) == 0x10000000)) {
           to_bitField0_ |= 0x02000000;
         }
         result.isNamespaceMapped_ = isNamespaceMapped_;
-        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
+        if (((from_bitField0_ & 0x20000000) == 0x20000000)) {
           to_bitField0_ |= 0x04000000;
         }
         result.autoParititonSeqName_ = autoParititonSeqName_;
-        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+        if (((from_bitField0_ & 0x40000000) == 0x40000000)) {
           to_bitField0_ |= 0x08000000;
         }
         result.isAppendOnlySchema_ = isAppendOnlySchema_;
+        if (((from_bitField0_ & 0x80000000) == 0x80000000)) {
+          to_bitField0_ |= 0x10000000;
+        }
+        result.storageScheme_ = storageScheme_;
+        if (((from_bitField1_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x20000000;
+        }
+        result.encodedColumnQualifierCounter_ = encodedColumnQualifierCounter_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
@@ -5395,32 +5511,6 @@ public final class PTableProtos {
         if (other.hasIsImmutableRows()) {
           setIsImmutableRows(other.getIsImmutableRows());
         }
-        if (guidePostsBuilder_ == null) {
-          if (!other.guidePosts_.isEmpty()) {
-            if (guidePosts_.isEmpty()) {
-              guidePosts_ = other.guidePosts_;
-              bitField0_ = (bitField0_ & ~0x00000800);
-            } else {
-              ensureGuidePostsIsMutable();
-              guidePosts_.addAll(other.guidePosts_);
-            }
-            onChanged();
-          }
-        } else {
-          if (!other.guidePosts_.isEmpty()) {
-            if (guidePostsBuilder_.isEmpty()) {
-              guidePostsBuilder_.dispose();
-              guidePostsBuilder_ = null;
-              guidePosts_ = other.guidePosts_;
-              bitField0_ = (bitField0_ & ~0x00000800);
-              guidePostsBuilder_ = 
-                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
-                   getGuidePostsFieldBuilder() : null;
-            } else {
-              guidePostsBuilder_.addAllMessages(other.guidePosts_);
-            }
-          }
-        }
         if (other.hasDataTableNameBytes()) {
           setDataTableNameBytes(other.getDataTableNameBytes());
         }
@@ -5442,7 +5532,7 @@ public final class PTableProtos {
         if (!other.physicalNames_.isEmpty()) {
           if (physicalNames_.isEmpty()) {
             physicalNames_ = other.physicalNames_;
-            bitField0_ = (bitField0_ & ~0x00040000);
+            bitField0_ = (bitField0_ & ~0x00020000);
           } else {
             ensurePhysicalNamesIsMutable();
             physicalNames_.addAll(other.physicalNames_);
@@ -5483,13 +5573,19 @@ public final class PTableProtos {
           setIsNamespaceMapped(other.getIsNamespaceMapped());
         }
         if (other.hasAutoParititonSeqName()) {
-          bitField0_ |= 0x40000000;
+          bitField0_ |= 0x20000000;
           autoParititonSeqName_ = other.autoParititonSeqName_;
           onChanged();
         }
         if (other.hasIsAppendOnlySchema()) {
           setIsAppendOnlySchema(other.getIsAppendOnlySchema());
         }
+        if (other.hasStorageScheme()) {
+          setStorageScheme(other.getStorageScheme());
+        }
+        if (other.hasEncodedColumnQualifierCounter()) {
+          
setEncodedColumnQualifierCounter(other.getEncodedColumnQualifierCounter());
+        }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
@@ -5543,12 +5639,6 @@ public final class PTableProtos {
             return false;
           }
         }
-        for (int i = 0; i < getGuidePostsCount(); i++) {
-          if (!getGuidePosts(i).isInitialized()) {
-            
-            return false;
-          }
-        }
         return true;
       }
 
@@ -5570,6 +5660,7 @@ public final class PTableProtos {
         return this;
       }
       private int bitField0_;
+      private int bitField1_;
 
       // required bytes schemaNameBytes = 1;
       private com.google.protobuf.ByteString schemaNameBytes_ = 
com.google.protobuf.ByteString.EMPTY;
@@ -6401,277 +6492,61 @@ public final class PTableProtos {
         return this;
       }
 
-      // repeated .PTableStats guidePosts = 12;
-      private 
java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>
 guidePosts_ =
-        java.util.Collections.emptyList();
-      private void ensureGuidePostsIsMutable() {
-        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
-          guidePosts_ = new 
java.util.ArrayList<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>(guidePosts_);
-          bitField0_ |= 0x00000800;
-         }
-      }
-
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder> 
guidePostsBuilder_;
-
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public 
java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats>
 getGuidePostsList() {
-        if (guidePostsBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(guidePosts_);
-        } else {
-          return guidePostsBuilder_.getMessageList();
-        }
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public int getGuidePostsCount() {
-        if (guidePostsBuilder_ == null) {
-          return guidePosts_.size();
-        } else {
-          return guidePostsBuilder_.getCount();
-        }
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats 
getGuidePosts(int index) {
-        if (guidePostsBuilder_ == null) {
-          return guidePosts_.get(index);
-        } else {
-          return guidePostsBuilder_.getMessage(index);
-        }
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder setGuidePosts(
-          int index, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats value) {
-        if (guidePostsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureGuidePostsIsMutable();
-          guidePosts_.set(index, value);
-          onChanged();
-        } else {
-          guidePostsBuilder_.setMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder setGuidePosts(
-          int index, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder 
builderForValue) {
-        if (guidePostsBuilder_ == null) {
-          ensureGuidePostsIsMutable();
-          guidePosts_.set(index, builderForValue.build());
-          onChanged();
-        } else {
-          guidePostsBuilder_.setMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder 
addGuidePosts(org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats 
value) {
-        if (guidePostsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureGuidePostsIsMutable();
-          guidePosts_.add(value);
-          onChanged();
-        } else {
-          guidePostsBuilder_.addMessage(value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder addGuidePosts(
-          int index, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats value) {
-        if (guidePostsBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          ensureGuidePostsIsMutable();
-          guidePosts_.add(index, value);
-          onChanged();
-        } else {
-          guidePostsBuilder_.addMessage(index, value);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder addGuidePosts(
-          
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder 
builderForValue) {
-        if (guidePostsBuilder_ == null) {
-          ensureGuidePostsIsMutable();
-          guidePosts_.add(builderForValue.build());
-          onChanged();
-        } else {
-          guidePostsBuilder_.addMessage(builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder addGuidePosts(
-          int index, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder 
builderForValue) {
-        if (guidePostsBuilder_ == null) {
-          ensureGuidePostsIsMutable();
-          guidePosts_.add(index, builderForValue.build());
-          onChanged();
-        } else {
-          guidePostsBuilder_.addMessage(index, builderForValue.build());
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder addAllGuidePosts(
-          java.lang.Iterable<? extends 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats> values) {
-        if (guidePostsBuilder_ == null) {
-          ensureGuidePostsIsMutable();
-          super.addAll(values, guidePosts_);
-          onChanged();
-        } else {
-          guidePostsBuilder_.addAllMessages(values);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder clearGuidePosts() {
-        if (guidePostsBuilder_ == null) {
-          guidePosts_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000800);
-          onChanged();
-        } else {
-          guidePostsBuilder_.clear();
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public Builder removeGuidePosts(int index) {
-        if (guidePostsBuilder_ == null) {
-          ensureGuidePostsIsMutable();
-          guidePosts_.remove(index);
-          onChanged();
-        } else {
-          guidePostsBuilder_.remove(index);
-        }
-        return this;
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder 
getGuidePostsBuilder(
-          int index) {
-        return getGuidePostsFieldBuilder().getBuilder(index);
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder 
getGuidePostsOrBuilder(
-          int index) {
-        if (guidePostsBuilder_ == null) {
-          return guidePosts_.get(index);  } else {
-          return guidePostsBuilder_.getMessageOrBuilder(index);
-        }
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public java.util.List<? extends 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder> 
-           getGuidePostsOrBuilderList() {
-        if (guidePostsBuilder_ != null) {
-          return guidePostsBuilder_.getMessageOrBuilderList();
-        } else {
-          return java.util.Collections.unmodifiableList(guidePosts_);
-        }
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder 
addGuidePostsBuilder() {
-        return getGuidePostsFieldBuilder().addBuilder(
-            
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder 
addGuidePostsBuilder(
-          int index) {
-        return getGuidePostsFieldBuilder().addBuilder(
-            index, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.getDefaultInstance());
-      }
-      /**
-       * <code>repeated .PTableStats guidePosts = 12;</code>
-       */
-      public 
java.util.List<org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder>
 
-           getGuidePostsBuilderList() {
-        return getGuidePostsFieldBuilder().getBuilderList();
-      }
-      private com.google.protobuf.RepeatedFieldBuilder<
-          org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder> 
-          getGuidePostsFieldBuilder() {
-        if (guidePostsBuilder_ == null) {
-          guidePostsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
-              
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStats.Builder, 
org.apache.phoenix.coprocessor.generated.PTableProtos.PTableStatsOrBuilder>(
-                  guidePosts_,
-                  ((bitField0_ & 0x00000800) == 0x00000800),
-                  getParentForChildren(),
-                  isClean());
-          guidePosts_ = null;
-        }
-        return guidePostsBuilder_;
-      }
-
       // optional bytes dataTableNameBytes = 13;
       private com.google.protobuf.ByteString dataTableNameBytes_ = 
com.google.protobuf.ByteString.EMPTY;
       /**
        * <code>optional bytes dataTableNameBytes = 13;</code>
+       *
+       * <pre>
+       * Do NOT reuse the tag '12'. Stats are no longer passed
+       * along with the PTable.
+       *repeated PTableStats guidePosts = 12;
+       * </pre>
        */
       public boolean hasDataTableNameBytes() {
-        return ((bitField0_ & 0x00001000) == 0x00001000);
+        return ((bitField0_ & 0x00000800) == 0x00000800);
       }
       /**
        * <code>optional bytes dataTableNameBytes = 13;</code>
+       *
+       * <pre>
+       * Do NOT reuse the tag '12'. Stats are no longer passed
+       * along with the PTable.
+       *repeated PTableStats guidePosts = 12;
+       * </pre>
        */
       public com.google.protobuf.ByteString getDataTableNameBytes() {
         return dataTableNameBytes_;
       }
       /**
        * <code>optional bytes dataTableNameBytes = 13;</code>
+       *
+       * <pre>
+       * Do NOT reuse the tag '12'. Stats are no longer passed
+       * along with the PTable.
+       *repeated PTableStats guidePosts = 12;
+       * </pre>
        */
       public Builder setDataTableNameBytes(com.google.protobuf.ByteString 
value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00001000;
+  bitField0_ |= 0x00000800;
         dataTableNameBytes_ = value;
         onChanged();
         return this;
       }
       /**
        * <code>optional bytes dataTableNameBytes = 13;</code>
+       *
+       * <pre>
+       * Do NOT reuse the tag '12'. Stats are no longer passed
+       * along with the PTable.
+       *repeated PTableStats guidePosts = 12;
+       * </pre>
        */
       public Builder clearDataTableNameBytes() {
-        bitField0_ = (bitField0_ & ~0x00001000);
+        bitField0_ = (bitField0_ & ~0x00000800);
         dataTableNameBytes_ = getDefaultInstance().getDataTableNameBytes();
         onChanged();
         return this;
@@ -6683,7 +6558,7 @@ public final class PTableProtos {
        * <code>optional bytes defaultFamilyName = 14;</code>
        */
       public boolean hasDefaultFamilyName() {
-        return ((bitField0_ & 0x00002000) == 0x00002000);
+        return ((bitField0_ & 0x00001000) == 0x00001000);
       }
       /**
        * <code>optional bytes defaultFamilyName = 14;</code>
@@ -6698,7 +6573,7 @@ public final class PTableProtos {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00002000;
+  bitField0_ |= 0x00001000;
         defaultFamilyName_ = value;
         onChanged();
         return this;
@@ -6707,7 +6582,7 @@ public final class PTableProtos {
        * <code>optional bytes defaultFamilyName = 14;</code>
        */
       public Builder clearDefaultFamilyName() {
-        bitField0_ = (bitField0_ & ~0x00002000);
+        bitField0_ = (bitField0_ & ~0x00001000);
         defaultFamilyName_ = getDefaultInstance().getDefaultFamilyName();
         onChanged();
         return this;
@@ -6719,7 +6594,7 @@ public final class PTableProtos {
        * <code>required bool disableWAL = 15;</code>
        */
       public boolean hasDisableWAL() {
-        return ((bitField0_ & 0x00004000) == 0x00004000);
+        return ((bitField0_ & 0x00002000) == 0x00002000);
       }
       /**
        * <code>required bool disableWAL = 15;</code>
@@ -6731,7 +6606,7 @@ public final class PTableProtos {
        * <code>required bool disableWAL = 15;</code>
        */
       public Builder setDisableWAL(boolean value) {
-        bitField0_ |= 0x00004000;
+        bitField0_ |= 0x00002000;
         disableWAL_ = value;
         onChanged();
         return this;
@@ -6740,7 +6615,7 @@ public final class PTableProtos {
        * <code>required bool disableWAL = 15;</code>
        */
       public Builder clearDisableWAL() {
-        bitField0_ = (bitField0_ & ~0x00004000);
+        bitField0_ = (bitField0_ & ~0x00002000);
         disableWAL_ = false;
         onChanged();
         return this;
@@ -6752,7 +6627,7 @@ public final class PTableProtos {
        * <code>required bool multiTenant = 16;</code>
        */
       public boolean hasMultiTenant() {
-        return ((bitField0_ & 0x00008000) == 0x00008000);
+        return ((bitField0_ & 0x00004000) == 0x00004000);
       }
       /**
        * <code>required bool multiTenant = 16;</code>
@@ -6764,7 +6639,7 @@ public final class PTableProtos {
        * <code>required bool multiTenant = 16;</code>
        */
       public Builder setMultiTenant(boolean value) {
-        bitField0_ |= 0x00008000;
+        bitField0_ |= 0x00004000;
         multiTenant_ = value;
         onChanged();
         return this;
@@ -6773,7 +6648,7 @@ public final class PTableProtos {
        * <code>required bool multiTenant = 16;</code>
        */
       public Builder clearMultiTenant() {
-        bitField0_ = (bitField0_ & ~0x00008000);
+        bitField0_ = (bitField0_ & ~0x00004000);
         multiTenant_ = false;
         onChanged();
         return this;
@@ -6785,7 +6660,7 @@ public final class PTableProtos {
        * <code>optional bytes viewType = 17;</code>
        */
       public boolean hasViewType() {
-        return ((bitField0_ & 0x00010000) == 0x00010000);
+        return ((bitField0_ & 0x00008000) == 0x00008000);
       }
       /**
        * <code>optional bytes viewType = 17;</code>
@@ -6800,7 +6675,7 @@ public final class PTableProtos {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00010000;
+  bitField0_ |= 0x00008000;
         viewType_ = value;
         onChanged();
         return this;
@@ -6809,7 +6684,7 @@ public final class PTableProtos {
        * <code>optional bytes viewType = 17;</code>
        */
       public Builder clearViewType() {
-        bitField0_ = (bitField0_ & ~0x00010000);
+        bitField0_ = (bitField0_ & ~0x00008000);
         viewType_ = getDefaultInstance().getViewType();
         onChanged();
         return this;
@@ -6821,7 +6696,7 @@ public final class PTableProtos {
        * <code>optional bytes viewStatement = 18;</code>
        */
       public boolean hasViewStatement() {
-        return ((bitField0_ & 0x00020000) == 0x00020000);
+        return ((bitField0_ & 0x00010000) == 0x00010000);
       }
       /**
        * <code>optional bytes viewStatement = 18;</code>
@@ -6836,7 +6711,7 @@ public final class PTableProtos {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00020000;
+  bitField0_ |= 0x00010000;
         viewStatement_ = value;
         onChanged();
         return this;
@@ -6845,7 +6720,7 @@ public final class PTableProtos {
        * <code>optional bytes viewStatement = 18;</code>
        */
       public Builder clearViewStatement() {
-        bitField0_ = (bitField0_ & ~0x00020000);
+        bitField0_ = (bitField0_ & ~0x00010000);
         viewStatement_ = getDefaultInstance().getViewStatement();
         onChanged();
         return this;
@@ -6854,9 +6729,9 @@ public final class PTableProtos {
       // repeated bytes physicalNames = 19;
       private java.util.List<com.google.protobuf.ByteString> physicalNames_ = 
java.util.Collections.emptyList();
       private void ensurePhysicalNamesIsMutable() {
-        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
+        if (!((bitField0_ & 0x00020000) == 0x00020000)) {
           physicalNames_ = new 
java.util.ArrayList<com.google.protobuf.ByteString>(physicalNames_);
-          bitField0_ |= 0x00040000;
+          bitField0_ |= 0x00020000;
          }
       }
       /**
@@ -6918,7 +6793,7 @@ public final class PTableProtos {
        */
       public Builder clearPhysicalNames() {
         physicalNames_ = java.util.Collections.emptyList();
-        bitField0_ = (bitField0_ & ~0x00040000);
+        bitField0_ = (bitField0_ & ~0x00020000);
         onChanged();
         return this;
       }
@@ -6929,7 +6804,7 @@ public final class PTableProtos {
        * <code>optional bytes tenantId = 20;</code>
        */
       public boolean hasTenantId() {
-        return ((bitField0_ & 0x00080000) == 0x00080000);
+        return ((bitField0_ & 0x00040000) == 0x00040000);
       }
       /**
        * <code>optional bytes tenantId = 20;</code>
@@ -6944,7 +6819,7 @@ public final class PTableProtos {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00080000;
+  bitField0_ |= 0x00040000;
         tenantId_ = value;
         onChanged();
         return this;
@@ -6953,7 +6828,7 @@ public final class PTableProtos {
        * <code>optional bytes tenantId = 20;</code>
        */
       public Builder clearTenantId() {
-        bitField0_ = (bitField0_ & ~0x00080000);
+        bitField0_ = (bitField0_ & ~0x00040000);
         tenantId_ = getDefaultInstance().getTenantId();
         onChanged();
         return this;
@@ -6965,7 +6840,7 @@ public final class PTableProtos {
        * <code>optional int32 viewIndexId = 21;</code>
        */
       public boolean hasViewIndexId() {
-        return ((bitField0_ & 0x00100000) == 0x00100000);
+        return ((bitField0_ & 0x00080000) == 0x00080000);
       }
       /**
        * <code>optional int32 viewIndexId = 21;</code>
@@ -6977,7 +6852,7 @@ public final class PTableProtos {
        * <code>optional int32 viewIndexId = 21;</code>
        */
       public Builder setViewIndexId(int value) {
-        bitField0_ |= 0x00100000;
+        bitField0_ |= 0x00080000;
         viewIndexId_ = value;
         onChanged();
         return this;
@@ -6986,7 +6861,7 @@ public final class PTableProtos {
        * <code>optional int32 viewIndexId = 21;</code>
        */
       public Builder clearViewIndexId() {
-        bitField0_ = (bitField0_ & ~0x00100000);
+        bitField0_ = (bitField0_ & ~0x00080000);
         viewIndexId_ = 0;
         onChanged();
         return this;
@@ -6998,7 +6873,7 @@ public final class PTableProtos {
        * <code>optional bytes indexType = 22;</code>
        */
       public boolean hasIndexType() {
-        return ((bitField0_ & 0x00200000) == 0x00200000);
+        return ((bitField0_ & 0x00100000) == 0x00100000);
       }
       /**
        * <code>optional bytes indexType = 22;</code>
@@ -7013,7 +6888,7 @@ public final class PTableProtos {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x00200000;
+  bitField0_ |= 0x00100000;
         indexType_ = value;
         onChanged();
         return this;
@@ -7022,7 +6897,7 @@ public final class PTableProtos {
        * <code>optional bytes indexType = 22;</code>
        */
       public Builder clearIndexType() {
-        bitField0_ = (bitField0_ & ~0x00200000);
+        bitField0_ = (bitField0_ & ~0x00100000);
         indexType_ = getDefaultInstance().getIndexType();
         onChanged();
         return this;
@@ -7034,7 +6909,7 @@ public final class PTableProtos {
        * <code>optional int64 statsTimeStamp = 23;</code>
        */
       public boolean hasStatsTimeStamp() {
-        return ((bitField0_ & 0x00400000) == 0x00400000);
+        return ((bitField0_ & 0x00200000) == 0x00200000);
       }
       /**
        * <code>optional int64 statsTimeStamp = 23;</code>
@@ -7046,7 +6921,7 @@ public final class PTableProtos {
        * <code>optional int64 statsTimeStamp = 23;</code>
        */
       public Builder setStatsTimeStamp(long value) {
-        bitField0_ |= 0x00400000;
+        bitField0_ |= 0x00200000;
         statsTimeStamp_ = value;
         onChanged();
         return this;
@@ -7055,7 +6930,7 @@ public final class PTableProtos {
        * <code>optional int64 statsTimeStamp = 23;</code>
        */
       public Builder clearStatsTimeStamp() {
-        bitField0_ = (bitField0_ & ~0x00400000);
+        bitField0_ = (bitField0_ & ~0x00200000);
         statsTimeStamp_ = 0L;
         onChanged();
         return this;
@@ -7067,7 +6942,7 @@ public final class PTableProtos {
        * <code>optional bool storeNulls = 24;</code>
        */
       public boolean hasStoreNulls() {
-        return ((bitField0_ & 0x00800000) == 0x00800000);
+        return ((bitField0_ & 0x00400000) == 0x00400000);
       }
       /**
        * <code>optional bool storeNulls = 24;</code>
@@ -7079,7 +6954,7 @@ public final class PTableProtos {
        * <code>optional bool storeNulls = 24;</code>
        */
       public Builder setStoreNulls(boolean value) {
-        bitField0_ |= 0x00800000;
+        bitField0_ |= 0x00400000;
         storeNulls_ = value;
         onChanged();
         return this;
@@ -7088,7 +6963,7 @@ public final class PTableProtos {
        * <code>optional bool storeNulls = 24;</code>
        */
       public Builder clearStoreNulls() {
-        bitField0_ = (bitField0_ & ~0x00800000);
+        bitField0_ = (bitField0_ & ~0x00400000);
         storeNulls_ = false;
         onChanged();
         return this;
@@ -7100,7 +6975,7 @@ public final class PTableProtos {
        * <code>optional int32 baseColumnCount = 25;</code>
        */
       public boolean hasBaseColumnCount() {
-        return ((bitField0_ & 0x01000000) == 0x01000000);
+        return ((bitField0_ & 0x00800000) == 0x00800000);
       }
       /**
        * <code>optional int32 baseColumnCount = 25;</code>
@@ -7112,7 +6987,7 @@ public final class PTableProtos {
        * <code>optional int32 baseColumnCount = 25;</code>
        */
       public Builder setBaseColumnCount(int value) {
-        bitField0_ |= 0x01000000;
+        bitField0_ |= 0x00800000;
         baseColumnCount_ = value;
         onChanged();
         return this;
@@ -7121,7 +6996,7 @@ public final class PTableProtos {
        * <code>optional int32 baseColumnCount = 25;</code>
        */
       public Builder clearBaseColumnCount() {
-        bitField0_ = (bitField0_ & ~0x01000000);
+        bitField0_ = (bitField0_ & ~0x00800000);
         baseColumnCount_ = 0;
         onChanged();
         return this;
@@ -7133,7 +7008,7 @@ public final class PTableProtos {
        * <code>optional bool rowKeyOrderOptimizable = 26;</code>
        */
       public boolean hasRowKeyOrderOptimizable() {
-        return ((bitField0_ & 0x02000000) == 0x02000000);
+        return ((bitField0_ & 0x01000000) == 0x01000000);
       }
       /**
        * <code>optional bool rowKeyOrderOptimizable = 26;</code>
@@ -7145,7 +7020,7 @@ public final class PTableProtos {
        * <code>optional bool rowKeyOrderOptimizable = 26;</code>
        */
       public Builder setRowKeyOrderOptimizable(boolean value) {
-        bitField0_ |= 0x02000000;
+        bitField0_ |= 0x01000000;
         rowKeyOrderOptimizable_ = value;
         onChanged();
         return this;
@@ -7154,7 +7029,7 @@ public final class PTableProtos {
        * <code>optional bool rowKeyOrderOptimizable = 26;</code>
        */
       public Builder clearRowKeyOrderOptimizable() {
-        bitField0_ = (bitField0_ & ~0x02000000);
+        bitField0_ = (bitField0_ & ~0x01000000);
         rowKeyOrderOptimizable_ = false;
         onChanged();
         return this;
@@ -7166,7 +7041,7 @@ public final class PTableProtos {
        * <code>optional bool transactional = 27;</code>
        */
       public boolean hasTransactional() {
-        return ((bitField0_ & 0x04000000) == 0x04000000);
+        return ((bitField0_ & 0x02000000) == 0x02000000);
       }
       /**
        * <code>optional bool transactional = 27;</code>
@@ -7178,7 +7053,7 @@ public final class PTableProtos {
        * <code>optional bool transactional = 27;</code>
        */
       public Builder setTransactional(boolean value) {
-        bitField0_ |= 0x04000000;
+        bitField0_ |= 0x02000000;
         transactional_ = value;
         onChanged();
         return this;
@@ -7187,7 +7062,7 @@ public final class PTableProtos {
        * <code>optional bool transactional = 27;</code>
        */
       public Builder clearTransactional() {
-        bitField0_ = (bitField0_ & ~0x04000000);
+        bitField0_ = (bitField0_ & ~0x02000000);
         transactional_ = false;
         onChanged();
         return this;
@@ -7199,7 +7074,7 @@ public final class PTableProtos {
        * <code>optional int64 updateCacheFrequency = 28;</code>
        */
       public boolean hasUpdateCacheFrequency() {
-        return ((bitField0_ & 0x08000000) == 0x08000000);
+        return ((bitField0_ & 0x04000000) == 0x04000000);
       }
       /**
        * <code>optional int64 updateCacheFrequency = 28;</code>
@@ -7211,7 +7086,7 @@ public final class PTableProtos {
        * <code>optional int64 updateCacheFrequency = 28;</code>
        */
       public Builder setUpdateCacheFrequency(long value) {
-        bitField0_ |= 0x08000000;
+        bitField0_ |= 0x04000000;
         updateCacheFrequency_ = value;
         onChanged();
         return this;
@@ -7220,7 +7095,7 @@ public final class PTableProtos {
        * <code>optional int64 updateCacheFrequency = 28;</code>
        */
       public Builder clearUpdateCacheFrequency() {
-        bitField0_ = (bitField0_ & ~0x08000000);
+        bitField0_ = (bitField0_ & ~0x04000000);
         updateCacheFrequency_ = 0L;
         onChanged();
         return this;
@@ -7232,7 +7107,7 @@ public final class PTableProtos {
        * <code>optional int64 indexDisableTimestamp = 29;</code>
        */
       public boolean hasIndexDisableTimestamp() {
-        return ((bitField0_ & 0x10000000) == 0x10000000);
+        return ((bitField0_ & 0x08000000) == 0x08000000);
       }
       /**
        * <code>optional int64 indexDisableTimestamp = 29;</code>
@@ -7244,7 +7119,7 @@ public final class PTableProtos {
        * <code>optional int64 indexDisableTimestamp = 29;</code>
        */
       public Builder setIndexDisableTimestamp(long value) {
-        bitField0_ |= 0x10000000;
+        bitField0_ |= 0x08000000;
         indexDisableTimestamp_ = value;
         onChanged();
         return this;
@@ -7253,7 +7128,7 @@ public final class PTableProtos {
        * <code>optional int64 indexDisableTimestamp = 29;</code>
        */
       public Builder clearIndexDisableTimestamp() {
-        bitField0_ = (bitField0_ & ~0x10000000);
+        bitField0_ = (bitField0_ & ~0x08000000);
         indexDisableTimestamp_ = 0L;
         onChanged();
         return this;
@@ -7265,7 +7140,7 @@ public final class PTableProtos {
        * <code>optional bool isNamespaceMapped = 30;</code>
        */
       public boolean hasIsNamespaceMapped() {
-        return ((bitField0_ & 0x20000000) == 0x20000000);
+        return ((bitField0_ & 0x10000000) == 0x10000000);
       }
       /**
        * <code>optional bool isNamespaceMapped = 30;</code>
@@ -7277,7 +7152,7 @@ public final class PTableProtos {
        * <code>optional bool isNamespaceMapped = 30;</code>
        */
       public Builder setIsNamespaceMapped(boolean value) {
-        bitField0_ |= 0x20000000;
+        bitField0_ |= 0x10000000;
         isNamespaceMapped_ = value;
         onChanged();
         return this;
@@ -7286,22 +7161,22 @@ public final class PTableProtos {
        * <code>optional bool isNamespaceMapped = 30;</code>
        */
       public Builder clearIsNamespaceMapped() {
-        bitField0_ = (bitField0_ & ~0x20000000);
+        bitField0_ = (bitField0_ & ~0x10000000);
         isNamespaceMapped_ = false;
         onChanged();
         return this;
       }
 
-      // optional string autoParititonSeqName = 31;
+      // optional string autoParititonSeqName = 32;
       private java.lang.Object autoParititonSeqName_ = "";
       /**
-       * <code>optional string autoParititonSeqName = 31;</code>
+       * <code>optional string autoParititonSeqName = 32;</code>
        */
       public boolean hasAutoParititonSeqName() {
-        return ((bitField0_ & 0x40000000) == 0x40000000);
+        return ((bitField0_ & 0x20000000) == 0x20000000);
       }
       /**
-       * <code>optional string autoParititonSeqName = 31;</code>
+       * <code>optional string autoParititonSeqName = 32;</code>
        */
       public java.lang.String getAutoParititonSeqName() {
         java.lang.Object ref = autoParititonSeqName_;
@@ -7315,7 +7190,7 @@ public final class PTableProtos {
         }
       }
       /**
-       * <code>optional string autoParititonSeqName = 31;</code>
+       * <code>optional string autoParititonSeqName = 32;</code>
        */
       public com.google.protobuf.ByteString
           getAutoParititonSeqNameBytes() {
@@ -7331,74 +7206,143 @@ public final class PTableProtos {
         }
       }
       /**
-       * <code>optional string autoParititonSeqName = 31;</code>
+       * <code>optional string autoParititonSeqName = 32;</code>
        */
       public Builder setAutoParititonSeqName(
           java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x40000000;
+  bitField0_ |= 0x20000000;
         autoParititonSeqName_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>optional string autoParititonSeqName = 31;</code>
+       * <code>optional string autoParititonSeqName = 32;</code>
        */
       public Builder clearAutoParititonSeqName() {
-        bitField0_ = (bitField0_ & ~0x40000000);
+        bitField0_ = (bitField0_ & ~0x20000000);
         autoParititonSeqName_ = getDefaultInstance().getAutoParititonSeqName();
         onChanged();
         return this;
       }
       /**
-       * <code>optional string autoParititonSeqName = 31;</code>
+       * <code>optional string autoParititonSeqName = 32;</code>
        */
       public Builder setAutoParititonSeqNameBytes(
           com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  bitField0_ |= 0x40000000;
+  bitField0_ |= 0x20000000;
         autoParititonSeqName_ = value;
         onChanged();
         return this;
       }
 
-      // optional bool isAppendOnlySchema = 32;
+      // optional bool isAppendOnlySchema = 33;
       private boolean isAppendOnlySchema_ ;
       /**
-       * <code>optional bool isAppendOnlySchema = 32;</code>
+       * <code>optional bool isAppendOnlySchema = 33;</code>
        */
       public boolean hasIsAppendOnlySchema() {
-        return ((bitField0_ & 0x80000000) == 0x80000000);
+        return ((bitField0_ & 0x40000000) == 0x40000000);
       }
       /**
-       * <code>optional bool isAppendOnlySchema = 32;</code>
+       * <code>optional bool isAppendOnlySchema = 33;</code>
        */
       public boolean getIsAppendOnlySchema() {
         return isAppendOnlySchema_;
       }
       /**
-       * <code>optional bool isAppendOnlySchema = 32;</code>
+       * <code>optional bool isAppendOnlySchema = 33;</code>
        */
       public Builder setIsAppendOnlySchema(boolean value) {
-        bitField0_ |= 0x80000000;
+        bitField0_ |= 0x40000000;
         isAppendOnlySchema_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>optional bool isAppendOnlySchema = 32;</code>
+       * <code>optional bool isAppendOnlySchema = 33;</code>
        */
       public Builder clearIsAppendOnlySchema() {
-        bitField0_ = (bitField0_ & ~0x80000000);
+        bitField0_ = (bitField0_ & ~0x40000000);
         isAppendOnlySchema_ = false;
         onChanged();
         return this;
       }
 
+      // optional bytes storageScheme = 34;
+      private com.google.protobuf.ByteString storageScheme_ = 
com.google.protobuf.ByteString.EMPTY;
+      /**
+       * <code>optional bytes storageScheme = 34;</code>
+       */
+      public boolean hasStorageScheme() {
+        return ((bitField0_ & 0x80000000) == 0x80000000);
+      }
+      /**
+       * <code>optional bytes storageScheme = 34;</code>
+       */
+      public com.google.protobuf.ByteString getStorageScheme() {
+        return storageScheme_;
+      }
+      /**
+       * <code>optional bytes storageScheme = 34;</code>
+       */
+      public Builder setStorageScheme(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x80000000;
+        storageScheme_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional bytes storageScheme = 34;</code>
+       */
+      public Builder clearStorageScheme() {
+        bitField0_ = (bitField0_ & ~0x80000000);
+        storageScheme_ = getDefaultInstance().getStorageScheme();
+        onChanged();
+        return this;
+      }
+
+      // optional int32 encodedColumnQualifierCounter = 35;
+      private int encodedColumnQualifierCounter_ ;
+      /**
+       * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+       */
+      public boolean hasEncodedColumnQualifierCounter() {
+        return ((bitField1_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+       */
+      public int getEncodedColumnQualifierCounter() {
+        return encodedColumnQualifierCounter_;
+      }
+      /**
+       * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+       */
+      public Builder setEncodedColumnQualifierCounter(int value) {
+        bitField1_ |= 0x00000001;
+        encodedColumnQualifierCounter_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>optional int32 encodedColumnQualifierCounter = 35;</code>
+       */
+      public Builder clearEncodedColumnQualifierCounter() {
+        bitField1_ = (bitField1_ & ~0x00000001);
+        encodedColumnQualifierCounter_ = 0;
+        onChanged();
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:PTable)
     }
 
@@ -7434,7 +7378,7 @@ public final class PTableProtos {
       descriptor;
   static {
     java.lang.String[] descriptorData = {
-      "\n\014PTable.proto\032\021PGuidePosts.proto\"\246\002\n\007PC" +
+      "\n\014PTable.proto\032\021PGuidePosts.proto\"\277\002\n\007PC" +
       "olumn\022\027\n\017columnNameBytes\030\001 
\002(\014\022\027\n\017family" +
       "NameBytes\030\002 \001(\014\022\020\n\010dataType\030\003 
\002(\t\022\021\n\tmax" +
       "Length\030\004 \001(\005\022\r\n\005scale\030\005 
\001(\005\022\020\n\010nullable\030" +
@@ -7442,34 +7386,35 @@ public final class PTableProtos {
       "(\005\022\021\n\tarraySize\030\t 
\001(\005\022\024\n\014viewConstant\030\n " +
       "\001(\014\022\026\n\016viewReferenced\030\013 
\001(\010\022\022\n\nexpressio" +
       "n\030\014 \001(\t\022\026\n\016isRowTimestamp\030\r 
\001(\010\022\021\n\tisDyn" +
-      "amic\030\016 
\001(\010\"\232\001\n\013PTableStats\022\013\n\003key\030\001 \002(\014\022" +
-      "\016\n\006values\030\002 
\003(\014\022\033\n\023guidePostsByteCount\030\003",
-      " \001(\003\022\025\n\rkeyBytesCount\030\004 
\001(\003\022\027\n\017guidePost" +
-      "sCount\030\005 \001(\005\022!\n\013pGuidePosts\030\006 
\001(\0132\014.PGui" +
-      "dePosts\"\230\006\n\006PTable\022\027\n\017schemaNameBytes\030\001 " +
-      "\002(\014\022\026\n\016tableNameBytes\030\002 
\002(\014\022\036\n\ttableType" +
-      "\030\003 \002(\0162\013.PTableType\022\022\n\nindexState\030\004 
\001(\t\022" +
-      "\026\n\016sequenceNumber\030\005 \002(\003\022\021\n\ttimeStamp\030\006 
\002" +
-      "(\003\022\023\n\013pkNameBytes\030\007 
\001(\014\022\021\n\tbucketNum\030\010 \002" +
-      "(\005\022\031\n\007columns\030\t 
\003(\0132\010.PColumn\022\030\n\007indexes" +
-      "\030\n \003(\0132\007.PTable\022\027\n\017isImmutableRows\030\013 
\002(\010" +
-      "\022 \n\nguidePosts\030\014 \003(\0132\014.PTableStats\022\032\n\022da",
-      "taTableNameBytes\030\r \001(\014\022\031\n\021defaultFamilyN" +
-      "ame\030\016 \001(\014\022\022\n\ndisableWAL\030\017 
\002(\010\022\023\n\013multiTe" +
-      "nant\030\020 \002(\010\022\020\n\010viewType\030\021 
\001(\014\022\025\n\rviewStat" +
-      "ement\030\022 \001(\014\022\025\n\rphysicalNames\030\023 
\003(\014\022\020\n\010te" +
-      "nantId\030\024 \001(\014\022\023\n\013viewIndexId\030\025 
\001(\005\022\021\n\tind" +
-      "exType\030\026 \001(\014\022\026\n\016statsTimeStamp\030\027 
\001(\003\022\022\n\n" +
-      "storeNulls\030\030 \001(\010\022\027\n\017baseColumnCount\030\031 
\001(" +
-      "\005\022\036\n\026rowKeyOrderOptimizable\030\032 
\001(\010\022\025\n\rtra" +
-      "nsactional\030\033 \001(\010\022\034\n\024updateCacheFrequency" +
-      "\030\034 \001(\003\022\035\n\025indexDisableTimestamp\030\035 
\001(\003\022\031\n",
-      "\021isNamespaceMapped\030\036 \001(\010\022\034\n\024autoParitito" +
-      "nSeqName\030\037 \001(\t\022\032\n\022isAppendOnlySchema\030  \001" +
-      
"(\010*A\n\nPTableType\022\n\n\006SYSTEM\020\000\022\010\n\004USER\020\001\022\010"
 +
-      
"\n\004VIEW\020\002\022\t\n\005INDEX\020\003\022\010\n\004JOIN\020\004B@\n(org.apa"
 +
-      "che.phoenix.coprocessor.generatedB\014PTabl" +
-      "eProtosH\001\210\001\001\240\001\001"
+      "amic\030\016 \001(\010\022\027\n\017columnQualifier\030\017 
\001(\005\"\232\001\n\013" +
+      "PTableStats\022\013\n\003key\030\001 
\002(\014\022\016\n\006values\030\002 \003(\014",
+      "\022\033\n\023guidePostsByteCount\030\003 \001(\003\022\025\n\rkeyByte" 
+
+      "sCount\030\004 \001(\003\022\027\n\017guidePostsCount\030\005 
\001(\005\022!\n" +
+      "\013pGuidePosts\030\006 \001(\0132\014.PGuidePosts\"\264\006\n\006PTa" +
+      "ble\022\027\n\017schemaNameBytes\030\001 
\002(\014\022\026\n\016tableNam" +
+      "eBytes\030\002 \002(\014\022\036\n\ttableType\030\003 
\002(\0162\013.PTable" +
+      "Type\022\022\n\nindexState\030\004 \001(\t\022\026\n\016sequenceNumb" +
+      "er\030\005 \002(\003\022\021\n\ttimeStamp\030\006 
\002(\003\022\023\n\013pkNameByt" +
+      "es\030\007 \001(\014\022\021\n\tbucketNum\030\010 
\002(\005\022\031\n\007columns\030\t" +
+      " \003(\0132\010.PColumn\022\030\n\007indexes\030\n 
\003(\0132\007.PTable" +
+      "\022\027\n\017isImmutableRows\030\013 
\002(\010\022\032\n\022dataTableNa",
+      "meBytes\030\r \001(\014\022\031\n\021defaultFamilyName\030\016 
\001(\014" +
+      "\022\022\n\ndisableWAL\030\017 
\002(\010\022\023\n\013multiTenant\030\020 \002(" +
+      "\010\022\020\n\010viewType\030\021 
\001(\014\022\025\n\rviewStatement\030\022 \001" +
+      "(\014\022\025\n\rphysicalNames\030\023 
\003(\014\022\020\n\010tenantId\030\024 " +
+      "\001(\014\022\023\n\013viewIndexId\030\025 
\001(\005\022\021\n\tindexType\030\026 " +
+      "\001(\014\022\026\n\016statsTimeStamp\030\027 
\001(\003\022\022\n\nstoreNull" +
+      "s\030\030 \001(\010\022\027\n\017baseColumnCount\030\031 
\001(\005\022\036\n\026rowK" +
+      "eyOrderOptimizable\030\032 \001(\010\022\025\n\rtransactiona" +
+      "l\030\033 \001(\010\022\034\n\024updateCacheFrequency\030\034 
\001(\003\022\035\n" +
+      "\025indexDisableTimestamp\030\035 \001(\003\022\031\n\021isNamesp",
+      "aceMapped\030\036 \001(\010\022\034\n\024autoParititonSeqName\030" +
+      "  \001(\t\022\032\n\022isAppendOnlySchema\030! 
\001(\010\022\025\n\rsto" +
+      "rageScheme\030\" \001(\014\022%\n\035encodedColumnQualifi" +
+      "erCounter\030# \001(\005*A\n\nPTableType\022\n\n\006SYSTEM\020" +
+      
"\000\022\010\n\004USER\020\001\022\010\n\004VIEW\020\002\022\t\n\005INDEX\020\003\022\010\n\004JOIN"
 +
+      "\020\004B@\n(org.apache.phoenix.coprocessor.gen" +
+      "eratedB\014PTableProtosH\001\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner 
assigner =
       new 
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -7481,7 +7426,7 @@ public final class PTableProtos {
           internal_static_PColumn_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_PColumn_descriptor,
-              new java.lang.String[] { "ColumnNameBytes", "FamilyNameBytes", 
"DataType", "MaxLength", "Scale", "Nullable", "Position", "SortOrder", 
"ArraySize", "ViewConstant", "ViewReferenced", "Expression", "IsRowTimestamp", 
"IsDynamic", });
+              new java.lang.String[] { "ColumnNameBytes", "FamilyNameBytes", 
"DataType", "MaxLength", "Scale", "Nullable", "Position", "SortOrder", 
"ArraySize", "ViewConstant", "ViewReferenced", "Expression", "IsRowTimestamp", 
"IsDynamic", "ColumnQualifier", });
           internal_static_PTableStats_descriptor =
             getDescriptor().getMessageTypes().get(1);
           internal_static_PTableStats_fieldAccessorTable = new
@@ -7493,7 +7438,7 @@ public final class PTableProtos {
           internal_static_PTable_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_PTable_descriptor,
-              new java.lang.String[] { "SchemaNameBytes", "TableNameBytes", 
"TableType", "IndexState", "SequenceNumber", "TimeStamp", "PkNameBytes", 
"BucketNum", "Columns", "Indexes", "IsImmutableRows", "GuidePosts", 
"DataTableNameBytes", "DefaultFamilyName", "DisableWAL", "MultiTenant", 
"ViewType", "ViewStatement", "PhysicalNames", "TenantId", "ViewIndexId", 
"IndexType", "StatsTimeStamp", "StoreNulls", "BaseColumnCount", 
"RowKeyOrderOptimizable", "Transactional", "UpdateCacheFrequency", 
"IndexDisableTimestamp", "IsNamespaceMapped", "AutoParititonSeqName", 
"IsAppendOnlySchema", });
+              new java.lang.String[] { "SchemaNameBytes", "TableNameBytes", 
"TableType", "IndexState", "SequenceNumber", "TimeStamp", "PkNameBytes", 
"BucketNum", "Columns", "Indexes", "IsImmutableRows", "DataTableNameBytes", 
"DefaultFamilyName", "DisableWAL", "MultiTenant", "ViewType", "ViewStatement", 
"PhysicalNames", "TenantId", "ViewIndexId", "IndexType", "StatsTimeStamp", 
"StoreNulls", "BaseColumnCount", "RowKeyOrderOptimizable", "Transactional", 
"UpdateCacheFrequency", "IndexDisableTimestamp", "IsNamespaceMapped", 
"AutoParititonSeqName", "IsAppendOnlySchema", "StorageScheme", 
"EncodedColumnQualifierCounter", });
           return null;
         }
       };

http://git-wip-us.apache.org/repos/asf/phoenix/blob/450dbc59/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
index ff44d2e..3453120 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/BaseQueryPlan.java
@@ -69,6 +69,7 @@ import org.apache.phoenix.schema.TableRef;
 import org.apache.phoenix.trace.TracingIterator;
 import org.apache.phoenix.trace.util.Tracing;
 import org.apache.phoenix.util.ByteUtil;
+import org.apache.phoenix.util.EncodedColumnsUtil;
 import org.apache.phoenix.util.IndexUtil;
 import org.apache.phoenix.util.LogUtil;
 import org.apache.phoenix.util.SQLCloseable;
@@ -297,11 +298,6 @@ public abstract class BaseQueryPlan implements QueryPlan {
             // TODO: can have an hint to skip joining back to data table, in 
that case if any column to
             // project is not present in the index then we need to skip this 
plan.
             if (!dataColumns.isEmpty()) {
-                // Set data columns to be join back from data table.
-                serializeDataTableColumnsToJoin(scan, dataColumns);
-                KeyValueSchema schema = 
ProjectedColumnExpression.buildSchema(dataColumns);
-                // Set key value schema of the data columns.
-                serializeSchemaIntoScan(scan, schema);
                 PTable parentTable = context.getCurrentTable().getTable();
                 String parentSchemaName = 
parentTable.getParentSchemaName().getString();
                 String parentTableName = 
parentTable.getParentTableName().getString();
@@ -312,6 +308,12 @@ public abstract class BaseQueryPlan implements QueryPlan {
                             FACTORY.namedTable(null, 
TableName.create(parentSchemaName, parentTableName)),
                             
context.getConnection()).resolveTable(parentSchemaName, parentTableName);
                 PTable dataTable = dataTableRef.getTable();
+                // Set data columns to be join back from data table.
+                serializeDataTableColumnsToJoin(scan, dataColumns, dataTable);
+                KeyValueSchema schema = 
ProjectedColumnExpression.buildSchema(dataColumns);
+                // Set key value schema of the data columns.
+                serializeSchemaIntoScan(scan, schema);
+                
                 // Set index maintainer of the local index.
                 serializeIndexMaintainerIntoScan(scan, dataTable);
                 // Set view constants if exists.
@@ -414,14 +416,14 @@ public abstract class BaseQueryPlan implements QueryPlan {
         }
     }
 
-    private void serializeDataTableColumnsToJoin(Scan scan, Set<PColumn> 
dataColumns) {
+    private void serializeDataTableColumnsToJoin(Scan scan, Set<PColumn> 
dataColumns, PTable dataTable) {
         ByteArrayOutputStream stream = new ByteArrayOutputStream();
         try {
             DataOutputStream output = new DataOutputStream(stream);
             WritableUtils.writeVInt(output, dataColumns.size());
             for (PColumn column : dataColumns) {
                 Bytes.writeByteArray(output, 
column.getFamilyName().getBytes());
-                Bytes.writeByteArray(output, column.getName().getBytes());
+                Bytes.writeByteArray(output, 
EncodedColumnsUtil.getColumnQualifier(column, dataTable));
             }
             
scan.setAttribute(BaseScannerRegionObserver.DATA_TABLE_COLUMNS_TO_JOIN, 
stream.toByteArray());
         } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/450dbc59/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
index ae78e97..51ca59c 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java
@@ -770,7 +770,7 @@ public class MutationState implements SQLCloseable {
                 }
                 for (PColumn column : columns) {
                     if (column != null) {
-                        
resolvedTable.getColumnFamily(column.getFamilyName().getString()).getColumn(column.getName().getString());
+                        
resolvedTable.getColumnFamily(column.getFamilyName().getString()).getPColumnForColumnName(column.getName().getString());
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/450dbc59/phoenix-core/src/main/java/org/apache/phoenix/execute/SortMergeJoinPlan.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/SortMergeJoinPlan.java 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/SortMergeJoinPlan.java
index f4ff289..087257f 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/SortMergeJoinPlan.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/SortMergeJoinPlan.java
@@ -656,6 +656,7 @@ public class SortMergeJoinPlan implements QueryPlan {
                 byte[] b = new byte[length];
                 buffer.get(b);
                 Result result = ResultUtil.toResult(new 
ImmutableBytesWritable(b));
+                //TODO: samarth make joins work with position based look up.
                 return new ResultTuple(result);
             }
             

http://git-wip-us.apache.org/repos/asf/phoenix/blob/450dbc59/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java 
b/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
index a884949..b6e1de2 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
@@ -17,6 +17,9 @@
  */
 package org.apache.phoenix.execute;
 
+import static org.apache.phoenix.query.QueryConstants.VALUE_COLUMN_FAMILY;
+import static org.apache.phoenix.query.QueryConstants.VALUE_COLUMN_QUALIFIER;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
@@ -50,9 +53,6 @@ import org.apache.phoenix.util.SchemaUtil;
 import com.google.common.base.Preconditions;
 
 public class TupleProjector {    
-    public static final byte[] VALUE_COLUMN_FAMILY = Bytes.toBytes("_v");
-    public static final byte[] VALUE_COLUMN_QUALIFIER = new byte[0];
-    
     private static final String SCAN_PROJECTOR = "scanProjector";
     
     private final KeyValueSchema schema;

Reply via email to