fix test failures

Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f8ce60c0
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f8ce60c0
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f8ce60c0

Branch: refs/heads/system-catalog
Commit: f8ce60c0655f012d01db4a863c0734475b2b2973
Parents: d615dc0
Author: Thomas D'Silva <tdsi...@apache.org>
Authored: Wed Apr 25 14:45:33 2018 -0700
Committer: Thomas D'Silva <tdsi...@apache.org>
Committed: Wed Apr 25 14:45:33 2018 -0700

----------------------------------------------------------------------
 .../query/ConnectionQueryServicesImpl.java      |   9 +-
 .../query/ConnectionlessQueryServicesImpl.java  |   6 +-
 .../apache/phoenix/query/QueryConstants.java    | 406 ++++++++-----------
 .../org/apache/phoenix/schema/PTableImpl.java   |   2 +-
 4 files changed, 191 insertions(+), 232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/f8ce60c0/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index c453e13..45016c6 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -2473,6 +2473,11 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
     protected String getLogTableDDL() {
         return setSystemLogDDLProperties(QueryConstants.CREATE_LOG_METADATA);
     }
+    
+    // Available for testing
+    protected String getChildLinkDDL() {
+        return 
setSystemDDLProperties(QueryConstants.CREATE_CHILD_LINK_METADATA);
+    }
 
     private String setSystemDDLProperties(String ddl) {
         return String.format(ddl,
@@ -2693,7 +2698,7 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
             metaConnection.createStatement().execute(getLogTableDDL());
         } catch (TableAlreadyExistsException ignore) {}
         try {
-            
metaConnection.createStatement().executeUpdate(QueryConstants.CREATE_CHILD_LINK_METADATA);
+            metaConnection.createStatement().executeUpdate(getChildLinkDDL());
         } catch (TableAlreadyExistsException e) {}
         // Catch the IOException to log the error message and then bubble it 
up for the client to retry.
         try {
@@ -3129,7 +3134,7 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
                 
metaConnection.createStatement().executeUpdate(getLogTableDDL());
             } catch (NewerTableAlreadyExistsException e) {} catch 
(TableAlreadyExistsException e) {}
             try {
-                
metaConnection.createStatement().executeUpdate(QueryConstants.CREATE_CHILD_LINK_METADATA);
+                
metaConnection.createStatement().executeUpdate(getChildLinkDDL());
             } catch (NewerTableAlreadyExistsException e) {} catch 
(TableAlreadyExistsException e) {}
 
             // In case namespace mapping is enabled and system table to system 
namespace mapping is also enabled,

http://git-wip-us.apache.org/repos/asf/phoenix/blob/f8ce60c0/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
index 21f4f74..0fdf5e6 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionlessQueryServicesImpl.java
@@ -166,6 +166,10 @@ public class ConnectionlessQueryServicesImpl extends 
DelegateQueryServices imple
     protected String getLogTableDDL() {
         return setSystemLogDDLProperties(QueryConstants.CREATE_LOG_METADATA);
     }
+    
+    protected String getChildLinkDDL() {
+        return 
setSystemDDLProperties(QueryConstants.CREATE_CHILD_LINK_METADATA);
+    }
 
     private String setSystemDDLProperties(String ddl) {
         return String.format(ddl,
@@ -367,7 +371,7 @@ public class ConnectionlessQueryServicesImpl extends 
DelegateQueryServices imple
                 } catch (NewerTableAlreadyExistsException ignore) {}
                 try {
                     metaConnection.createStatement()
-                            
.executeUpdate(QueryConstants.CREATE_CHILD_LINK_METADATA);
+                            .executeUpdate(getChildLinkDDL());
                 } catch (NewerTableAlreadyExistsException ignore) {
                 }
             } catch (SQLException e) {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/f8ce60c0/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java 
b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
index c7fa438..aa37517 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryConstants.java
@@ -1,23 +1,15 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license
+ * agreements. See the NOTICE file distributed with this work for additional 
information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache 
License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the 
License. You may obtain a
+ * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless 
required by applicable
+ * law or agreed to in writing, software distributed under the License is 
distributed on an "AS IS"
+ * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
implied. See the License
+ * for the specific language governing permissions and limitations under the 
License.
  */
 package org.apache.phoenix.query;
 
-
 import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.*;
 
 import java.math.BigDecimal;
@@ -36,12 +28,8 @@ import 
org.apache.phoenix.schema.PTable.QualifierEncodingScheme;
 import org.apache.phoenix.schema.SortOrder;
 import org.apache.phoenix.schema.TableProperty;
 
-
 /**
- *
  * Constants used during querying
- *
- *
  * @since 0.1
  */
 public interface QueryConstants {
@@ -57,110 +45,125 @@ public interface QueryConstants {
     public static final String NULL_DISPLAY_TEXT = "<null>";
     public static final long UNSET_TIMESTAMP = -1;
 
-    public enum JoinType {INNER, LEFT_OUTER}
+    public enum JoinType {
+        INNER, LEFT_OUTER
+    }
+
     public final static String SYSTEM_SCHEMA_NAME = "SYSTEM";
     public final static byte[] SYSTEM_SCHEMA_NAME_BYTES = 
Bytes.toBytes(SYSTEM_SCHEMA_NAME);
     public final static String PHOENIX_METADATA = "table";
     public final static String OFFSET_ROW_KEY = "_OFFSET_";
     public final static byte[] OFFSET_ROW_KEY_BYTES = 
Bytes.toBytes(OFFSET_ROW_KEY);
-    public final static ImmutableBytesPtr OFFSET_ROW_KEY_PTR = new 
ImmutableBytesPtr(OFFSET_ROW_KEY_BYTES);
+    public final static ImmutableBytesPtr OFFSET_ROW_KEY_PTR =
+            new ImmutableBytesPtr(OFFSET_ROW_KEY_BYTES);
 
     public static final long AGG_TIMESTAMP = HConstants.LATEST_TIMESTAMP;
     /**
      * Key used for a single row aggregation where there is no group by
      */
     public final static byte[] UNGROUPED_AGG_ROW_KEY = Bytes.toBytes("a");
-    
+
     /** BEGIN Set of reserved column qualifiers **/
-    
+
     public static final String RESERVED_COLUMN_FAMILY = "_v";
     public static final byte[] RESERVED_COLUMN_FAMILY_BYTES = 
Bytes.toBytes(RESERVED_COLUMN_FAMILY);
-    
+
     public static final byte[] VALUE_COLUMN_FAMILY = 
RESERVED_COLUMN_FAMILY_BYTES;
-    public static final byte[] VALUE_COLUMN_QUALIFIER = 
QualifierEncodingScheme.FOUR_BYTE_QUALIFIERS.encode(1);
-    
+    public static final byte[] VALUE_COLUMN_QUALIFIER =
+            QualifierEncodingScheme.FOUR_BYTE_QUALIFIERS.encode(1);
+
     public static final byte[] ARRAY_VALUE_COLUMN_FAMILY = 
RESERVED_COLUMN_FAMILY_BYTES;
-    public static final byte[] ARRAY_VALUE_COLUMN_QUALIFIER = 
QualifierEncodingScheme.FOUR_BYTE_QUALIFIERS.encode(2);
-    
+    public static final byte[] ARRAY_VALUE_COLUMN_QUALIFIER =
+            QualifierEncodingScheme.FOUR_BYTE_QUALIFIERS.encode(2);
+
     public final static PName SINGLE_COLUMN_NAME = 
PNameFactory.newNormalizedName("s");
     public final static PName SINGLE_COLUMN_FAMILY_NAME = 
PNameFactory.newNormalizedName("s");
     public final static byte[] SINGLE_COLUMN = SINGLE_COLUMN_NAME.getBytes();
     public final static byte[] SINGLE_COLUMN_FAMILY = 
SINGLE_COLUMN_FAMILY_NAME.getBytes();
 
     /** END Set of reserved column qualifiers **/
-    
-    public static final byte[] TRUE = new byte[] {1};
-    
+
+    public static final byte[] TRUE = new byte[] { 1 };
+
     /**
-     * The priority property for an hbase table. This is already in HTD, but 
older versions of
-     * HBase do not have this, so we re-defined it here. Once Phoenix is 
HBase-1.3+, we can remote.
+     * The priority property for an hbase table. This is already in HTD, but 
older versions of HBase
+     * do not have this, so we re-defined it here. Once Phoenix is HBase-1.3+, 
we can remote.
      */
     public static final String PRIORITY = "PRIORITY";
 
     /**
-     * Separator used between variable length keys for a composite key.
-     * Variable length data types may not use this byte value.
+     * Separator used between variable length keys for a composite key. 
Variable length data types
+     * may not use this byte value.
      */
     public static final byte SEPARATOR_BYTE = (byte) 0;
-    public static final byte[] SEPARATOR_BYTE_ARRAY = new byte[] 
{SEPARATOR_BYTE};
+    public static final byte[] SEPARATOR_BYTE_ARRAY = new byte[] { 
SEPARATOR_BYTE };
     public static final byte DESC_SEPARATOR_BYTE = 
SortOrder.invert(SEPARATOR_BYTE);
-    public static final byte[] DESC_SEPARATOR_BYTE_ARRAY = new byte[] 
{DESC_SEPARATOR_BYTE};
+    public static final byte[] DESC_SEPARATOR_BYTE_ARRAY = new byte[] { 
DESC_SEPARATOR_BYTE };
 
     public static final String DEFAULT_COPROCESS_PATH = "phoenix.jar";
     public static final String DEFAULT_COPROCESS_JAR_NAME = 
"phoenix-[version]-server.jar";
-    
+
     public final static int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
 
     public static final String EMPTY_COLUMN_NAME = "_0";
     // For transactional tables, the value of our empty key value can no 
longer be empty
     // since empty values are treated as column delete markers.
     public static final byte[] EMPTY_COLUMN_BYTES = 
Bytes.toBytes(EMPTY_COLUMN_NAME);
-    public static final ImmutableBytesPtr EMPTY_COLUMN_BYTES_PTR = new 
ImmutableBytesPtr(
-            EMPTY_COLUMN_BYTES);
+    public static final ImmutableBytesPtr EMPTY_COLUMN_BYTES_PTR =
+            new ImmutableBytesPtr(EMPTY_COLUMN_BYTES);
     public static final Integer ENCODED_EMPTY_COLUMN_NAME = 0;
-    public static final byte[] ENCODED_EMPTY_COLUMN_BYTES = 
QualifierEncodingScheme.FOUR_BYTE_QUALIFIERS.encode(ENCODED_EMPTY_COLUMN_NAME);
+    public static final byte[] ENCODED_EMPTY_COLUMN_BYTES =
+            
QualifierEncodingScheme.FOUR_BYTE_QUALIFIERS.encode(ENCODED_EMPTY_COLUMN_NAME);
     public final static String EMPTY_COLUMN_VALUE = "x";
     public final static byte[] EMPTY_COLUMN_VALUE_BYTES = 
Bytes.toBytes(EMPTY_COLUMN_VALUE);
-    public static final ImmutableBytesPtr EMPTY_COLUMN_VALUE_BYTES_PTR = new 
ImmutableBytesPtr(
-            EMPTY_COLUMN_VALUE_BYTES);
+    public static final ImmutableBytesPtr EMPTY_COLUMN_VALUE_BYTES_PTR =
+            new ImmutableBytesPtr(EMPTY_COLUMN_VALUE_BYTES);
     public static final String ENCODED_EMPTY_COLUMN_VALUE = EMPTY_COLUMN_VALUE;
     public final static byte[] ENCODED_EMPTY_COLUMN_VALUE_BYTES = 
Bytes.toBytes(EMPTY_COLUMN_VALUE);
-    public static final ImmutableBytesPtr ENCODED_EMPTY_COLUMN_VALUE_BYTES_PTR 
= new ImmutableBytesPtr(
-            ENCODED_EMPTY_COLUMN_VALUE_BYTES);
+    public static final ImmutableBytesPtr ENCODED_EMPTY_COLUMN_VALUE_BYTES_PTR 
=
+            new ImmutableBytesPtr(ENCODED_EMPTY_COLUMN_VALUE_BYTES);
     public static final String DEFAULT_COLUMN_FAMILY = "0";
     public static final byte[] DEFAULT_COLUMN_FAMILY_BYTES = 
Bytes.toBytes(DEFAULT_COLUMN_FAMILY);
-    public static final ImmutableBytesPtr DEFAULT_COLUMN_FAMILY_BYTES_PTR = 
new ImmutableBytesPtr(
-            DEFAULT_COLUMN_FAMILY_BYTES);
-    // column qualifier of the single key value used to store all columns for 
the COLUMNS_STORED_IN_SINGLE_CELL storage scheme
+    public static final ImmutableBytesPtr DEFAULT_COLUMN_FAMILY_BYTES_PTR =
+            new ImmutableBytesPtr(DEFAULT_COLUMN_FAMILY_BYTES);
+    // column qualifier of the single key value used to store all columns for 
the
+    // COLUMNS_STORED_IN_SINGLE_CELL storage scheme
     public static final String SINGLE_KEYVALUE_COLUMN_QUALIFIER = "1";
-    public final static byte[] SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES = 
Bytes.toBytes(SINGLE_KEYVALUE_COLUMN_QUALIFIER);
-    public static final ImmutableBytesPtr 
SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES_PTR = new ImmutableBytesPtr(
-            SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES);
+    public final static byte[] SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES =
+            Bytes.toBytes(SINGLE_KEYVALUE_COLUMN_QUALIFIER);
+    public static final ImmutableBytesPtr 
SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES_PTR =
+            new ImmutableBytesPtr(SINGLE_KEYVALUE_COLUMN_QUALIFIER_BYTES);
 
     public static final String LOCAL_INDEX_COLUMN_FAMILY_PREFIX = "L#";
-    public static final byte[] LOCAL_INDEX_COLUMN_FAMILY_PREFIX_BYTES = 
Bytes.toBytes(LOCAL_INDEX_COLUMN_FAMILY_PREFIX);
-    public static final ImmutableBytesPtr LOCAL_INDEX_COLUMN_FAMILY_PREFIX_PTR 
= new ImmutableBytesPtr(
-        LOCAL_INDEX_COLUMN_FAMILY_PREFIX_BYTES);
-    
-    public static final String DEFAULT_LOCAL_INDEX_COLUMN_FAMILY = 
LOCAL_INDEX_COLUMN_FAMILY_PREFIX + DEFAULT_COLUMN_FAMILY;
-    public static final byte[] DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES = 
Bytes.toBytes(DEFAULT_LOCAL_INDEX_COLUMN_FAMILY);
-    public static final ImmutableBytesPtr 
DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES_PTR = new ImmutableBytesPtr(
-               DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES);
+    public static final byte[] LOCAL_INDEX_COLUMN_FAMILY_PREFIX_BYTES =
+            Bytes.toBytes(LOCAL_INDEX_COLUMN_FAMILY_PREFIX);
+    public static final ImmutableBytesPtr LOCAL_INDEX_COLUMN_FAMILY_PREFIX_PTR 
=
+            new ImmutableBytesPtr(LOCAL_INDEX_COLUMN_FAMILY_PREFIX_BYTES);
+
+    public static final String DEFAULT_LOCAL_INDEX_COLUMN_FAMILY =
+            LOCAL_INDEX_COLUMN_FAMILY_PREFIX + DEFAULT_COLUMN_FAMILY;
+    public static final byte[] DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES =
+            Bytes.toBytes(DEFAULT_LOCAL_INDEX_COLUMN_FAMILY);
+    public static final ImmutableBytesPtr 
DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES_PTR =
+            new ImmutableBytesPtr(DEFAULT_LOCAL_INDEX_COLUMN_FAMILY_BYTES);
 
     public static final String ALL_FAMILY_PROPERTIES_KEY = "";
     public static final String SYSTEM_TABLE_PK_NAME = "pk";
 
     public static final double MILLIS_TO_NANOS_CONVERTOR = Math.pow(10, 6);
-    public static final BigDecimal BD_MILLIS_NANOS_CONVERSION = 
BigDecimal.valueOf(MILLIS_TO_NANOS_CONVERTOR);
-    public static final BigDecimal BD_MILLIS_IN_DAY = 
BigDecimal.valueOf(QueryConstants.MILLIS_IN_DAY);
+    public static final BigDecimal BD_MILLIS_NANOS_CONVERSION =
+            BigDecimal.valueOf(MILLIS_TO_NANOS_CONVERTOR);
+    public static final BigDecimal BD_MILLIS_IN_DAY =
+            BigDecimal.valueOf(QueryConstants.MILLIS_IN_DAY);
     public static final int MAX_ALLOWED_NANOS = 999999999;
     public static final int NANOS_IN_SECOND = BigDecimal.valueOf(Math.pow(10, 
9)).intValue();
     public static final int DIVERGED_VIEW_BASE_COLUMN_COUNT = -100;
     public static final int BASE_TABLE_BASE_COLUMN_COUNT = -1;
-    
+
     /**
-     * We mark counter values 0 to 10 as reserved. Value 0 is used by {@link 
#ENCODED_EMPTY_COLUMN_NAME}. Values 1-10
-     * are reserved for special column qualifiers returned by Phoenix 
co-processors.
+     * We mark counter values 0 to 10 as reserved. Value 0 is used by
+     * {@link #ENCODED_EMPTY_COLUMN_NAME}. Values 1-10 are reserved for 
special column qualifiers
+     * returned by Phoenix co-processors.
      */
     public static final int ENCODED_CQ_COUNTER_INITIAL_VALUE = 11;
     public static final String CREATE_TABLE_METADATA =
@@ -168,190 +171,137 @@ public interface QueryConstants {
             // exception and add columns to the SYSTEM.TABLE dynamically.
             "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_CATALOG_TABLE + "\"(\n" +
             // PK columns
-            TENANT_ID + " VARCHAR NULL," +
-            TABLE_SCHEM + " VARCHAR NULL," +
-            TABLE_NAME + " VARCHAR NOT NULL," +
-            COLUMN_NAME + " VARCHAR NULL," + // null for table row
-            COLUMN_FAMILY + " VARCHAR NULL," + // using for CF to uniqueness 
for columns
-            // Table metadata (will be null for column rows)
-            TABLE_SEQ_NUM + " BIGINT," +
-            TABLE_TYPE + " CHAR(1)," +
-            PK_NAME + " VARCHAR," +
-            COLUMN_COUNT + " INTEGER," +
-            SALT_BUCKETS + " INTEGER," +
-            DATA_TABLE_NAME + " VARCHAR," +
-            INDEX_STATE + " CHAR(1),\n" +
-            IMMUTABLE_ROWS + " BOOLEAN,\n" +
-            VIEW_STATEMENT + " VARCHAR,\n" +
-            DEFAULT_COLUMN_FAMILY_NAME + " VARCHAR,\n" +
-            DISABLE_WAL + " BOOLEAN,\n" +
-            MULTI_TENANT + " BOOLEAN,\n" +
-            VIEW_TYPE + " UNSIGNED_TINYINT,\n" +
-            VIEW_INDEX_ID + " SMALLINT,\n" +
-            // Column metadata (will be null for table row)
-            DATA_TYPE + " INTEGER," +
-            COLUMN_SIZE + " INTEGER," +
-            DECIMAL_DIGITS + " INTEGER," +
-            NULLABLE + " INTEGER," +
-            ORDINAL_POSITION + " INTEGER," +
-            SORT_ORDER + " INTEGER," +
-            ARRAY_SIZE + " INTEGER,\n" +
-            VIEW_CONSTANT + " VARBINARY,\n" +
-            IS_VIEW_REFERENCED + " BOOLEAN,\n" +
-            KEY_SEQ + " SMALLINT,\n" +
-            // Link metadata (only set on rows linking table to index or view)
-            LINK_TYPE + " UNSIGNED_TINYINT,\n" +
-            // Unused
-            TYPE_NAME + " VARCHAR," +
-            REMARKS + " VARCHAR," +
-            SELF_REFERENCING_COL_NAME + " VARCHAR," +
-            REF_GENERATION + " VARCHAR," +
-            BUFFER_LENGTH + " INTEGER," +
-            NUM_PREC_RADIX + " INTEGER," +
-            COLUMN_DEF + " VARCHAR," +
-            SQL_DATA_TYPE + " INTEGER," +
-            SQL_DATETIME_SUB + " INTEGER," +
-            CHAR_OCTET_LENGTH + " INTEGER," +
-            IS_NULLABLE + " VARCHAR," +
-            SCOPE_CATALOG + " VARCHAR," +
-            SCOPE_SCHEMA + " VARCHAR," +
-            SCOPE_TABLE + " VARCHAR," +
-            SOURCE_DATA_TYPE + " SMALLINT," +
-            IS_AUTOINCREMENT + " VARCHAR," +
-            INDEX_TYPE + " UNSIGNED_TINYINT," +
-            INDEX_DISABLE_TIMESTAMP + " BIGINT," +
-            STORE_NULLS + " BOOLEAN," +
-            BASE_COLUMN_COUNT + " INTEGER," +
-            // Column metadata (will be null for table row)
-            IS_ROW_TIMESTAMP + " BOOLEAN, " +
-            TRANSACTIONAL + " BOOLEAN," +
-            UPDATE_CACHE_FREQUENCY + " BIGINT," +
-            IS_NAMESPACE_MAPPED + " BOOLEAN," +
-            AUTO_PARTITION_SEQ + " VARCHAR," +
-            APPEND_ONLY_SCHEMA + " BOOLEAN," +
-            GUIDE_POSTS_WIDTH + " BIGINT," +
-            COLUMN_QUALIFIER + " VARBINARY," +
-            IMMUTABLE_STORAGE_SCHEME + " TINYINT, " +
-            ENCODING_SCHEME + " TINYINT, " +
-            COLUMN_QUALIFIER_COUNTER + " INTEGER, " +
-            USE_STATS_FOR_PARALLELIZATION + " BOOLEAN, " +
-            TRANSACTION_PROVIDER + " TINYINT, " +
-            "CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + 
TENANT_ID + ","
-            + TABLE_SCHEM + "," + TABLE_NAME + "," + COLUMN_NAME + "," + 
COLUMN_FAMILY + "))\n" +
-            HConstants.VERSIONS + "=%s,\n" +
-            HColumnDescriptor.KEEP_DELETED_CELLS + "=%s,\n" +
-            // Install split policy to prevent a tenant's metadata from being 
split across regions.
-            HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName() + "',\n" + 
-            PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + Boolean.FALSE;
+                    TENANT_ID + " VARCHAR NULL," + TABLE_SCHEM + " VARCHAR 
NULL," + TABLE_NAME
+                    + " VARCHAR NOT NULL," + COLUMN_NAME + " VARCHAR NULL," + 
// null for table row
+                    COLUMN_FAMILY + " VARCHAR NULL," + // using for CF to 
uniqueness for columns
+                    // Table metadata (will be null for column rows)
+                    TABLE_SEQ_NUM + " BIGINT," + TABLE_TYPE + " CHAR(1)," + 
PK_NAME + " VARCHAR,"
+                    + COLUMN_COUNT + " INTEGER," + SALT_BUCKETS + " INTEGER," 
+ DATA_TABLE_NAME
+                    + " VARCHAR," + INDEX_STATE + " CHAR(1),\n" + 
IMMUTABLE_ROWS + " BOOLEAN,\n"
+                    + VIEW_STATEMENT + " VARCHAR,\n" + 
DEFAULT_COLUMN_FAMILY_NAME + " VARCHAR,\n"
+                    + DISABLE_WAL + " BOOLEAN,\n" + MULTI_TENANT + " 
BOOLEAN,\n" + VIEW_TYPE
+                    + " UNSIGNED_TINYINT,\n" + VIEW_INDEX_ID + " SMALLINT,\n" +
+                    // Column metadata (will be null for table row)
+                    DATA_TYPE + " INTEGER," + COLUMN_SIZE + " INTEGER," + 
DECIMAL_DIGITS
+                    + " INTEGER," + NULLABLE + " INTEGER," + ORDINAL_POSITION 
+ " INTEGER,"
+                    + SORT_ORDER + " INTEGER," + ARRAY_SIZE + " INTEGER,\n" + 
VIEW_CONSTANT
+                    + " VARBINARY,\n" + IS_VIEW_REFERENCED + " BOOLEAN,\n" + 
KEY_SEQ
+                    + " SMALLINT,\n" +
+                    // Link metadata (only set on rows linking table to index 
or view)
+                    LINK_TYPE + " UNSIGNED_TINYINT,\n" +
+                    // Unused
+                    TYPE_NAME + " VARCHAR," + REMARKS + " VARCHAR," + 
SELF_REFERENCING_COL_NAME
+                    + " VARCHAR," + REF_GENERATION + " VARCHAR," + 
BUFFER_LENGTH + " INTEGER,"
+                    + NUM_PREC_RADIX + " INTEGER," + COLUMN_DEF + " VARCHAR," 
+ SQL_DATA_TYPE
+                    + " INTEGER," + SQL_DATETIME_SUB + " INTEGER," + 
CHAR_OCTET_LENGTH + " INTEGER,"
+                    + IS_NULLABLE + " VARCHAR," + SCOPE_CATALOG + " VARCHAR," 
+ SCOPE_SCHEMA
+                    + " VARCHAR," + SCOPE_TABLE + " VARCHAR," + 
SOURCE_DATA_TYPE + " SMALLINT,"
+                    + IS_AUTOINCREMENT + " VARCHAR," + INDEX_TYPE + " 
UNSIGNED_TINYINT,"
+                    + INDEX_DISABLE_TIMESTAMP + " BIGINT," + STORE_NULLS + " 
BOOLEAN,"
+                    + BASE_COLUMN_COUNT + " INTEGER," +
+                    // Column metadata (will be null for table row)
+                    IS_ROW_TIMESTAMP + " BOOLEAN, " + TRANSACTIONAL + " 
BOOLEAN,"
+                    + UPDATE_CACHE_FREQUENCY + " BIGINT," + 
IS_NAMESPACE_MAPPED + " BOOLEAN,"
+                    + AUTO_PARTITION_SEQ + " VARCHAR," + APPEND_ONLY_SCHEMA + 
" BOOLEAN,"
+                    + GUIDE_POSTS_WIDTH + " BIGINT," + COLUMN_QUALIFIER + " 
VARBINARY,"
+                    + IMMUTABLE_STORAGE_SCHEME + " TINYINT, " + 
ENCODING_SCHEME + " TINYINT, "
+                    + COLUMN_QUALIFIER_COUNTER + " INTEGER, " + 
USE_STATS_FOR_PARALLELIZATION
+                    + " BOOLEAN, " + TRANSACTION_PROVIDER + " TINYINT, " + 
"CONSTRAINT "
+                    + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + TENANT_ID + 
"," + TABLE_SCHEM + ","
+                    + TABLE_NAME + "," + COLUMN_NAME + "," + COLUMN_FAMILY + 
"))\n"
+                    + HConstants.VERSIONS + "=%s,\n" + 
HColumnDescriptor.KEEP_DELETED_CELLS
+                    + "=%s,\n" +
+                    // Install split policy to prevent a tenant's metadata 
from being split across
+                    // regions.
+                    HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName()
+                    + "',\n" + PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + 
Boolean.FALSE;
 
     public static final String CREATE_STATS_TABLE_METADATA =
             "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_STATS_TABLE + "\"(\n" +
             // PK columns
-            PHYSICAL_NAME  + " VARCHAR NOT NULL," +
-            COLUMN_FAMILY + " VARCHAR," +
-            GUIDE_POST_KEY  + " VARBINARY," +
-            GUIDE_POSTS_WIDTH + " BIGINT," +
-            LAST_STATS_UPDATE_TIME+ " DATE, "+
-            GUIDE_POSTS_ROW_COUNT+ " BIGINT, "+
-            "CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY ("
-            + PHYSICAL_NAME + ","
-            + COLUMN_FAMILY + ","+ GUIDE_POST_KEY+"))\n" +
-            // Install split policy to prevent a physical table's stats from 
being split across regions.
-            HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName() + "',\n" + 
-            PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + Boolean.FALSE;
+                    PHYSICAL_NAME + " VARCHAR NOT NULL," + COLUMN_FAMILY + " 
VARCHAR,"
+                    + GUIDE_POST_KEY + " VARBINARY," + GUIDE_POSTS_WIDTH + " 
BIGINT,"
+                    + LAST_STATS_UPDATE_TIME + " DATE, " + 
GUIDE_POSTS_ROW_COUNT + " BIGINT, "
+                    + "CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" 
+ PHYSICAL_NAME + ","
+                    + COLUMN_FAMILY + "," + GUIDE_POST_KEY + "))\n" +
+                    // Install split policy to prevent a physical table's 
stats from being split
+                    // across regions.
+                    HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName()
+                    + "',\n" + PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + 
Boolean.FALSE;
 
     public static final String CREATE_SEQUENCE_METADATA =
-            "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + TYPE_SEQUENCE + 
"\"(\n" +
-            TENANT_ID + " VARCHAR NULL," +
-            SEQUENCE_SCHEMA + " VARCHAR NULL, \n" +
-            SEQUENCE_NAME +  " VARCHAR NOT NULL, \n" +
-            START_WITH + " BIGINT, \n" +
-            CURRENT_VALUE + " BIGINT, \n" +
-            INCREMENT_BY  + " BIGINT, \n" +
-            CACHE_SIZE  + " BIGINT, \n" +
-            //  the following three columns were added in 3.1/4.1
-            MIN_VALUE + " BIGINT, \n" +
-            MAX_VALUE + " BIGINT, \n" +
-            CYCLE_FLAG + " BOOLEAN, \n" +
-            LIMIT_REACHED_FLAG + " BOOLEAN \n" +
-            " CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + 
TENANT_ID + "," + SEQUENCE_SCHEMA + "," + SEQUENCE_NAME + "))\n" +
-            PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + Boolean.FALSE;
+            "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + TYPE_SEQUENCE + 
"\"(\n" + TENANT_ID
+                    + " VARCHAR NULL," + SEQUENCE_SCHEMA + " VARCHAR NULL, \n" 
+ SEQUENCE_NAME
+                    + " VARCHAR NOT NULL, \n" + START_WITH + " BIGINT, \n" + 
CURRENT_VALUE
+                    + " BIGINT, \n" + INCREMENT_BY + " BIGINT, \n" + 
CACHE_SIZE + " BIGINT, \n" +
+                    // the following three columns were added in 3.1/4.1
+                    MIN_VALUE + " BIGINT, \n" + MAX_VALUE + " BIGINT, \n" + 
CYCLE_FLAG
+                    + " BOOLEAN, \n" + LIMIT_REACHED_FLAG + " BOOLEAN \n" + " 
CONSTRAINT "
+                    + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + TENANT_ID + 
"," + SEQUENCE_SCHEMA
+                    + "," + SEQUENCE_NAME + "))\n" + 
PhoenixDatabaseMetaData.TRANSACTIONAL + "="
+                    + Boolean.FALSE;
     public static final String CREATE_SYSTEM_SCHEMA = "CREATE SCHEMA " + 
SYSTEM_CATALOG_SCHEMA;
     public static final String UPGRADE_TABLE_SNAPSHOT_PREFIX = 
"_UPGRADING_TABLE_";
 
     public static final String CREATE_FUNCTION_METADATA =
             "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_FUNCTION_TABLE + "\"(\n" +
-             // Pk columns
-            TENANT_ID + " VARCHAR NULL," +
-            FUNCTION_NAME + " VARCHAR NOT NULL, \n" +
-            NUM_ARGS + " INTEGER, \n" +
-            // Function metadata (will be null for argument row)
-            CLASS_NAME +  " VARCHAR, \n" +
-            JAR_PATH + "  VARCHAR, \n" +
-            RETURN_TYPE + " VARCHAR, \n" +
-            // Argument metadata (will be null for function row)
-            TYPE + " VARCHAR, \n" +
-            ARG_POSITION + " VARBINARY, \n" +
-            IS_ARRAY + " BOOLEAN, \n" +
-            IS_CONSTANT + " BOOLEAN, \n" +
-            DEFAULT_VALUE + " VARCHAR, \n" +
-            MIN_VALUE + " VARCHAR, \n" +
-            MAX_VALUE + " VARCHAR, \n" +
-            " CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + 
TENANT_ID + ", " + FUNCTION_NAME + ", " + TYPE + ", " + ARG_POSITION + "))\n" +
-            HConstants.VERSIONS + "=%s,\n" +
-            HColumnDescriptor.KEEP_DELETED_CELLS + "=%s,\n"+
-            // Install split policy to prevent a tenant's metadata from being 
split across regions.
-            HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName() + "',\n" + 
-            PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + Boolean.FALSE;
-    
+            // Pk columns
+                    TENANT_ID + " VARCHAR NULL," + FUNCTION_NAME + " VARCHAR 
NOT NULL, \n"
+                    + NUM_ARGS + " INTEGER, \n" +
+                    // Function metadata (will be null for argument row)
+                    CLASS_NAME + " VARCHAR, \n" + JAR_PATH + "  VARCHAR, \n" + 
RETURN_TYPE
+                    + " VARCHAR, \n" +
+                    // Argument metadata (will be null for function row)
+                    TYPE + " VARCHAR, \n" + ARG_POSITION + " VARBINARY, \n" + 
IS_ARRAY
+                    + " BOOLEAN, \n" + IS_CONSTANT + " BOOLEAN, \n" + 
DEFAULT_VALUE + " VARCHAR, \n"
+                    + MIN_VALUE + " VARCHAR, \n" + MAX_VALUE + " VARCHAR, \n" 
+ " CONSTRAINT "
+                    + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + TENANT_ID + ", 
" + FUNCTION_NAME
+                    + ", " + TYPE + ", " + ARG_POSITION + "))\n" + 
HConstants.VERSIONS + "=%s,\n"
+                    + HColumnDescriptor.KEEP_DELETED_CELLS + "=%s,\n" +
+                    // Install split policy to prevent a tenant's metadata 
from being split across
+                    // regions.
+                    HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName()
+                    + "',\n" + PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + 
Boolean.FALSE;
+
     public static final String CREATE_LOG_METADATA =
             "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_LOG_TABLE 
+ "\"(\n" +
-             // Pk columns
-            TENANT_ID + " VARCHAR ," +
-            QUERY_ID + " VARCHAR NOT NULL,\n" +
-            USER + " VARCHAR , \n" +
-            CLIENT_IP + " VARCHAR, \n" +
-            // Function metadata (will be null for argument row)
-            QUERY +  " VARCHAR, \n" +
-            EXPLAIN_PLAN + " VARCHAR, \n" +
-            // Argument metadata (will be null for function row)
-            START_TIME + " TIMESTAMP, \n" +
-            TOTAL_EXECUTION_TIME + " BIGINT, \n" +
-            NO_OF_RESULTS_ITERATED + " BIGINT, \n" +
-            QUERY_STATUS + " VARCHAR, \n" +
-            EXCEPTION_TRACE + " VARCHAR, \n" +
-            GLOBAL_SCAN_DETAILS + " VARCHAR, \n" +
-            BIND_PARAMETERS + " VARCHAR, \n" +
-            SCAN_METRICS_JSON + " VARCHAR, \n" +
-            " CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY 
(QUERY_ID))\n" +
-            HConstants.VERSIONS + "= " + MetaDataProtocol.DEFAULT_LOG_VERSIONS 
+ ",\n" +
-            HColumnDescriptor.KEEP_DELETED_CELLS + "=%s,\n"+
-            // Install split policy to prevent a tenant's metadata from being 
split across regions.
-            HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName() + "',\n" + 
-            PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + Boolean.FALSE+ ",\n" 
+ 
-            HColumnDescriptor.TTL + "=" + 
MetaDataProtocol.DEFAULT_LOG_TTL+",\n"+
-            TableProperty.COLUMN_ENCODED_BYTES.toString()+" = 0";
-    
+            // Pk columns
+                    TENANT_ID + " VARCHAR ," + QUERY_ID + " VARCHAR NOT 
NULL,\n" + USER
+                    + " VARCHAR , \n" + CLIENT_IP + " VARCHAR, \n" +
+                    // Function metadata (will be null for argument row)
+                    QUERY + " VARCHAR, \n" + EXPLAIN_PLAN + " VARCHAR, \n" +
+                    // Argument metadata (will be null for function row)
+                    START_TIME + " TIMESTAMP, \n" + TOTAL_EXECUTION_TIME + " 
BIGINT, \n"
+                    + NO_OF_RESULTS_ITERATED + " BIGINT, \n" + QUERY_STATUS + 
" VARCHAR, \n"
+                    + EXCEPTION_TRACE + " VARCHAR, \n" + GLOBAL_SCAN_DETAILS + 
" VARCHAR, \n"
+                    + BIND_PARAMETERS + " VARCHAR, \n" + SCAN_METRICS_JSON + " 
VARCHAR, \n"
+                    + " CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY 
(QUERY_ID))\n"
+                    + HConstants.VERSIONS + "= " + 
MetaDataProtocol.DEFAULT_LOG_VERSIONS + ",\n"
+                    + HColumnDescriptor.KEEP_DELETED_CELLS + "=%s,\n" +
+                    // Install split policy to prevent a tenant's metadata 
from being split across
+                    // regions.
+                    HTableDescriptor.SPLIT_POLICY + "='" + 
MetaDataSplitPolicy.class.getName()
+                    + "',\n" + PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + 
Boolean.FALSE + ",\n"
+                    + HColumnDescriptor.TTL + "=" + 
MetaDataProtocol.DEFAULT_LOG_TTL + ",\n"
+                    + TableProperty.COLUMN_ENCODED_BYTES.toString() + " = 0";
+
     public static final byte[] OFFSET_FAMILY = "f_offset".getBytes();
     public static final byte[] OFFSET_COLUMN = "c_offset".getBytes();
     public static final String LAST_SCAN = "LAST_SCAN";
     public static final byte[] UPGRADE_MUTEX = "UPGRADE_MUTEX".getBytes();
     public static final String HASH_JOIN_CACHE_RETRIES = 
"hashjoin.client.retries.number";
     public static final int DEFAULT_HASH_JOIN_CACHE_RETRIES = 5;
-    
+
     // Links from parent to child views are stored in a separate table for 
scalability
     public static final String CREATE_CHILD_LINK_METADATA =
             "CREATE TABLE " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_CHILD_LINK_TABLE + "\"(\n" +
             // PK columns
-            TENANT_ID + " VARCHAR NULL," +
-            TABLE_SCHEM + " VARCHAR NULL," +
-            TABLE_NAME + " VARCHAR NOT NULL," +
-            COLUMN_NAME + " VARCHAR NULL," + 
-            COLUMN_FAMILY + " VARCHAR NULL," +
-            LINK_TYPE + " UNSIGNED_TINYINT,\n" +
-            "CONSTRAINT " + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + 
TENANT_ID + ","
-            + TABLE_SCHEM + "," + TABLE_NAME + "," + COLUMN_NAME + "," + 
COLUMN_FAMILY + "))\n" +
-            HConstants.VERSIONS + "=" + 
MetaDataProtocol.DEFAULT_MAX_META_DATA_VERSIONS + ",\n" +
-            HColumnDescriptor.KEEP_DELETED_CELLS + "="  + 
MetaDataProtocol.DEFAULT_META_DATA_KEEP_DELETED_CELLS + ",\n" +
-            PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + Boolean.FALSE;
+                    TENANT_ID + " VARCHAR NULL," + TABLE_SCHEM + " VARCHAR 
NULL," + TABLE_NAME
+                    + " VARCHAR NOT NULL," + COLUMN_NAME + " VARCHAR NULL," + 
COLUMN_FAMILY
+                    + " VARCHAR NULL," + LINK_TYPE + " UNSIGNED_TINYINT,\n" + 
"CONSTRAINT "
+                    + SYSTEM_TABLE_PK_NAME + " PRIMARY KEY (" + TENANT_ID + 
"," + TABLE_SCHEM + ","
+                    + TABLE_NAME + "," + COLUMN_NAME + "," + COLUMN_FAMILY + 
"))\n"
+                    + HConstants.VERSIONS + "=%s,\n" + 
HColumnDescriptor.KEEP_DELETED_CELLS
+                    + "=%s,\n" 
+                    + PhoenixDatabaseMetaData.TRANSACTIONAL + "=" + 
Boolean.FALSE;
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/f8ce60c0/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java 
b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
index fbd7b7a..76d6267 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java
@@ -307,7 +307,7 @@ public class PTableImpl implements PTable {
             table.getSequenceNumber(), table.getPKName(), 
basePTable.getBucketNum(), columns, table.getParentSchemaName(), 
table.getParentTableName(),
             table.getIndexes(), basePTable.isImmutableRows(), 
table.getPhysicalNames(), table.getDefaultFamilyName(), 
table.getViewStatement(),
             table.isWALDisabled(), basePTable.isMultiTenant(), 
table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), 
table.getIndexType(),
-            baseTableColumnCount, table.rowKeyOrderOptimizable(), 
basePTable.isTransactional(), table.getUpdateCacheFrequency(),
+            baseTableColumnCount, table.rowKeyOrderOptimizable(), 
basePTable.getTransactionProvider(), table.getUpdateCacheFrequency(),
             table.getIndexDisableTimestamp(), basePTable.isNamespaceMapped(), 
basePTable.getAutoPartitionSeqName(), basePTable.isAppendOnlySchema(),
             basePTable.getImmutableStorageScheme(), 
basePTable.getEncodingScheme(), table.getEncodedCQCounter(), 
table.useStatsForParallelization());
     }

Reply via email to