Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-1.0 63c7ba11a -> 8935a94d6


PHOENIX-2326 Fix upgrade from 4.x to 4.6 and update MetadataProtocol with new 
versions


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

Branch: refs/heads/4.x-HBase-1.0
Commit: 8935a94d6b59f7f25eeeb46588a440958af10b0d
Parents: 63c7ba1
Author: Samarth <[email protected]>
Authored: Fri Oct 16 16:27:19 2015 -0700
Committer: Samarth <[email protected]>
Committed: Fri Oct 16 16:27:19 2015 -0700

----------------------------------------------------------------------
 .../phoenix/coprocessor/MetaDataProtocol.java   |  3 +-
 .../query/ConnectionQueryServicesImpl.java      | 13 +++++---
 .../apache/phoenix/schema/MetaDataClient.java   | 33 +++++++++++++++++---
 3 files changed, 38 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/8935a94d/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
index 7d65eb2..7cc4123 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
@@ -62,7 +62,6 @@ public abstract class MetaDataProtocol extends 
MetaDataService {
 
     public static final long MIN_TABLE_TIMESTAMP = 0;
 
-    public static final long MIN_SYSTEM_TABLE_TIMESTAMP = MIN_TABLE_TIMESTAMP 
+ 8;
     public static final int DEFAULT_MAX_META_DATA_VERSIONS = 1000;
     public static final int DEFAULT_MAX_STAT_DATA_VERSIONS = 3;
     public static final boolean DEFAULT_META_DATA_KEEP_DELETED_CELLS = true;
@@ -74,7 +73,7 @@ public abstract class MetaDataProtocol extends 
MetaDataService {
     public static final long MIN_SYSTEM_TABLE_TIMESTAMP_4_3_0 = 
MIN_TABLE_TIMESTAMP + 7;
     public static final long MIN_SYSTEM_TABLE_TIMESTAMP_4_5_0 = 
MIN_TABLE_TIMESTAMP + 8;
     public static final long MIN_SYSTEM_TABLE_TIMESTAMP_4_6_0 = 
MIN_TABLE_TIMESTAMP + 9;
-    
+    public static final long MIN_SYSTEM_TABLE_TIMESTAMP = 
MIN_SYSTEM_TABLE_TIMESTAMP_4_6_0;
     // TODO: pare this down to minimum, as we don't need duplicates for both 
table and column errors, nor should we need
     // a different code for every type of error.
     // ENTITY_ALREADY_EXISTS, ENTITY_NOT_FOUND, NEWER_ENTITY_FOUND, 
ENTITY_NOT_IN_REGION, CONCURRENT_MODIFICATION

http://git-wip-us.apache.org/repos/asf/phoenix/blob/8935a94d/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 f7d5920..b718089 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
@@ -1936,9 +1936,6 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
                                 long currentServerSideTableTimeStamp = 
e.getTable().getTimeStamp();
 
                                 String columnsToAdd = "";
-                                if (currentServerSideTableTimeStamp < 
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_6_0) {
-                                    columnsToAdd += 
PhoenixDatabaseMetaData.IS_ROW_TIMESTAMP + " " + 
PBoolean.INSTANCE.getSqlTypeName();
-                                }
                                 if(currentServerSideTableTimeStamp < 
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_3_0) {
                                     // We know that we always need to add the 
STORE_NULLS column for 4.3 release
                                     columnsToAdd = ", " + 
PhoenixDatabaseMetaData.STORE_NULLS + " " + PBoolean.INSTANCE.getSqlTypeName();
@@ -1980,7 +1977,7 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
                                     // Ugh..need to assign to another local 
variable to keep eclipse happy.
                                     PhoenixConnection newMetaConnection = 
addColumnsIfNotExists(metaConnection,
                                             
PhoenixDatabaseMetaData.SYSTEM_CATALOG,
-                                            
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP, columnsToAdd);
+                                            
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_3_0, columnsToAdd);
                                     metaConnection = newMetaConnection;
                                 }
                                 
@@ -1989,7 +1986,7 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
                                             + 
PInteger.INSTANCE.getSqlTypeName();
                                     try {
                                         metaConnection = 
addColumn(metaConnection, PhoenixDatabaseMetaData.SYSTEM_CATALOG,
-                                                
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP, columnsToAdd, false);
+                                                
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_5_0, columnsToAdd, false);
                                         upgradeTo4_5_0(metaConnection);
                                     } catch (ColumnAlreadyExistsException 
ignored) {
                                         /* 
@@ -2018,6 +2015,12 @@ public class ConnectionQueryServicesImpl extends 
DelegateQueryServices implement
                                         conn.close();
                                     }
                                 }
+                                if (currentServerSideTableTimeStamp < 
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_6_0) {
+                                    columnsToAdd = 
PhoenixDatabaseMetaData.IS_ROW_TIMESTAMP + " " + 
PBoolean.INSTANCE.getSqlTypeName();
+                                    metaConnection = addColumn(metaConnection, 
PhoenixDatabaseMetaData.SYSTEM_CATALOG,
+                                            
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP_4_6_0, columnsToAdd, false);
+                                }
+                                
                             }
                             int nSaltBuckets = 
ConnectionQueryServicesImpl.this.props.getInt(QueryServices.SEQUENCE_SALT_BUCKETS_ATTRIB,
                                     
QueryServicesOptions.DEFAULT_SEQUENCE_TABLE_SALT_BUCKETS);

http://git-wip-us.apache.org/repos/asf/phoenix/blob/8935a94d/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java 
b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
index 341b07d..77ca2c3 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
@@ -282,7 +282,9 @@ public class MetaDataClient {
             INDEX_STATE + "," +
             INDEX_DISABLE_TIMESTAMP +
             ") VALUES (?, ?, ?, ?, ?)";
-    private static final String INSERT_COLUMN =
+    //TODO: merge INSERT_COLUMN_CREATE_TABLE and INSERT_COLUMN_ALTER_TABLE 
column when
+    // the new major release is out.
+    private static final String INSERT_COLUMN_CREATE_TABLE =
         "UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_CATALOG_TABLE 
+ "\"( " +
         TENANT_ID + "," +
         TABLE_SCHEM + "," +
@@ -304,6 +306,27 @@ public class MetaDataClient {
         COLUMN_DEF + "," +
         IS_ROW_TIMESTAMP + 
         ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+    private static final String INSERT_COLUMN_ALTER_TABLE =
+            "UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + 
SYSTEM_CATALOG_TABLE + "\"( " +
+            TENANT_ID + "," +
+            TABLE_SCHEM + "," +
+            TABLE_NAME + "," +
+            COLUMN_NAME + "," +
+            COLUMN_FAMILY + "," +
+            DATA_TYPE + "," +
+            NULLABLE + "," +
+            COLUMN_SIZE + "," +
+            DECIMAL_DIGITS + "," +
+            ORDINAL_POSITION + "," +
+            SORT_ORDER + "," +
+            DATA_TABLE_NAME + "," + // write this both in the column and table 
rows for access by metadata APIs
+            ARRAY_SIZE + "," +
+            VIEW_CONSTANT + "," +
+            IS_VIEW_REFERENCED + "," +
+            PK_NAME + "," +  // write this both in the column and table rows 
for access by metadata APIs
+            KEY_SEQ + "," +
+            COLUMN_DEF +
+            ") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
     private static final String UPDATE_COLUMN_POSITION =
         "UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_CATALOG_TABLE 
+ "\" ( " +
         TENANT_ID + "," +
@@ -681,7 +704,9 @@ public class MetaDataClient {
         } else {
             colUpsert.setString(18, column.getExpressionStr());
         }
-        colUpsert.setBoolean(19, column.isRowTimestamp());
+        if (colUpsert.getParameterMetaData().getParameterCount() > 18) {
+            colUpsert.setBoolean(19, column.isRowTimestamp());
+        }
         colUpsert.execute();
     }
 
@@ -1713,7 +1738,7 @@ public class MetaDataClient {
                 }
             }
 
-            PreparedStatement colUpsert = 
connection.prepareStatement(INSERT_COLUMN);
+            PreparedStatement colUpsert = 
connection.prepareStatement(INSERT_COLUMN_CREATE_TABLE);
             Map<String, PName> familyNames = Maps.newLinkedHashMap();
             boolean isPK = false;
             boolean rowTimeStampColumnAlreadyFound = false;
@@ -2485,7 +2510,7 @@ public class MetaDataClient {
                 }
 
                 int numPkColumnsAdded = 0;
-                PreparedStatement colUpsert = 
connection.prepareStatement(INSERT_COLUMN);
+                PreparedStatement colUpsert = 
connection.prepareStatement(INSERT_COLUMN_ALTER_TABLE);
 
                 List<PColumn> columns = 
Lists.newArrayListWithExpectedSize(columnDefs.size());
                 Set<String> colFamiliesForPColumnsToBeAdded = new 
LinkedHashSet<>();

Reply via email to