You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2015/03/04 23:40:50 UTC

[15/50] [abbrv] phoenix git commit: PHOENIX-1643 Ensure index usage is backward compatible for 4.2 client against 4.3 server (Thomas D'Silva)

PHOENIX-1643 Ensure index usage is backward compatible for 4.2 client against 4.3 server (Thomas D'Silva)


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

Branch: refs/heads/calcite
Commit: 9db37bd90005695c703f9d092651891a5e39a80a
Parents: 54c4ed8
Author: James Taylor <jt...@salesforce.com>
Authored: Fri Feb 6 16:08:43 2015 -0800
Committer: James Taylor <jt...@salesforce.com>
Committed: Fri Feb 6 16:08:43 2015 -0800

----------------------------------------------------------------------
 .../apache/phoenix/index/IndexMaintainer.java   |  9 ++------
 .../parse/IndexExpressionParseNodeRewriter.java |  6 ++---
 .../org/apache/phoenix/schema/PColumnImpl.java  |  2 +-
 .../java/org/apache/phoenix/util/IndexUtil.java | 16 +++++++------
 .../org/apache/phoenix/util/SchemaUtil.java     | 24 ++++++++++++--------
 5 files changed, 29 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/9db37bd9/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java b/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
index 31f6c76..7199dad 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/index/IndexMaintainer.java
@@ -282,9 +282,6 @@ public class IndexMaintainer implements Writable, Iterable<ColumnReference> {
         int indexedExpressionCount = 0;
         for (int i = indexPosOffset; i<index.getPKColumns().size();i++) {
         	PColumn indexColumn = index.getPKColumns().get(i);
-        	if (!IndexUtil.isIndexColumn(indexColumn)) {
-                continue;
-            }
         	String indexColumnName = indexColumn.getName().getString();
             String dataFamilyName = IndexUtil.getDataColumnFamilyName(indexColumnName);
             String dataColumnName = IndexUtil.getDataColumnName(indexColumnName);
@@ -341,14 +338,12 @@ public class IndexMaintainer implements Writable, Iterable<ColumnReference> {
         IndexExpressionCompiler expressionIndexCompiler = new IndexExpressionCompiler(context);
         for (int i = indexPosOffset; i < index.getPKColumns().size(); i++) {
             PColumn indexColumn = index.getPKColumns().get(i);
-            if (!IndexUtil.isIndexColumn(indexColumn)) {
-                continue;
-            }
             int indexPos = i - indexPosOffset;
             Expression expression = null;
             try {
                 expressionIndexCompiler.reset();
-                ParseNode parseNode  = SQLParser.parseCondition(indexColumn.getExpressionStr());
+                String expressionStr = IndexUtil.getIndexColumnExpressionStr(indexColumn);
+                ParseNode parseNode  = SQLParser.parseCondition(expressionStr);
                 expression = parseNode.accept(expressionIndexCompiler);
             } catch (SQLException e) {
                 throw new RuntimeException(e); // Impossible

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9db37bd9/phoenix-core/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
index efa3835..43cb9f3 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/IndexExpressionParseNodeRewriter.java
@@ -71,10 +71,8 @@ public class IndexExpressionParseNodeRewriter extends ParseNodeRewriter {
         List<PColumn> pkColumns = index.getPKColumns();
 		for (int i=indexPosOffset; i<pkColumns.size(); ++i) {
         	PColumn column = pkColumns.get(i);
-            if (column.getExpressionStr()==null) {
-                continue;
-            }
-            ParseNode expressionParseNode = SQLParser.parseCondition(column.getExpressionStr());
+        	String expressionStr = IndexUtil.getIndexColumnExpressionStr(column);
+            ParseNode expressionParseNode  = SQLParser.parseCondition(expressionStr);
             columnParseNodeVisitor.reset();
             expressionParseNode.accept(columnParseNodeVisitor);
             String colName = column.getName().getString();

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9db37bd9/phoenix-core/src/main/java/org/apache/phoenix/schema/PColumnImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/PColumnImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/PColumnImpl.java
index 11cc53d..ac044df 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/PColumnImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/PColumnImpl.java
@@ -38,7 +38,7 @@ public class PColumnImpl implements PColumn {
     private byte[] viewConstant;
     private boolean isViewReferenced;
     private String expressionStr;
-
+    
     public PColumnImpl() {
     }
 

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9db37bd9/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java
index 8dd4f4d..c058eb8 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java
@@ -137,12 +137,9 @@ public class IndexUtil {
         return name.substring(0,name.indexOf(INDEX_COLUMN_NAME_SEP));
     }
 
-    public static String getDataColumnFullName(String name) {
+    public static String getCaseSensitiveDataColumnFullName(String name) {
         int index = name.indexOf(INDEX_COLUMN_NAME_SEP) ;
-        if (index == 0) {
-            return name.substring(index+1);
-        }
-        return SchemaUtil.getColumnDisplayName(name.substring(0, index), name.substring(index+1));
+        return SchemaUtil.getCaseSensitiveColumnDisplayName(name.substring(0, index), name.substring(index+1));
     }
 
     public static String getIndexColumnName(String dataColumnFamilyName, String dataColumnName) {
@@ -272,8 +269,8 @@ public class IndexUtil {
         return column.getName().getString().startsWith(INDEX_COLUMN_NAME_SEP);
     }
     
-    public static boolean isIndexColumn(PColumn column) {
-        return column.getName().getString().contains(INDEX_COLUMN_NAME_SEP);
+    public static boolean isIndexColumn(String name) {
+        return name.contains(INDEX_COLUMN_NAME_SEP);
     }
     
     public static boolean getViewConstantValue(PColumn column, ImmutableBytesWritable ptr) {
@@ -627,4 +624,9 @@ public class IndexUtil {
             result.set(i, newCell);
         }
     }
+    
+    public static String getIndexColumnExpressionStr(PColumn col) {
+        return col.getExpressionStr() == null ? IndexUtil.getCaseSensitiveDataColumnFullName(col.getName().getString())
+                : col.getExpressionStr();
+    }
 }

http://git-wip-us.apache.org/repos/asf/phoenix/blob/9db37bd9/phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java
index afd61ad..c9574e3 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java
@@ -206,14 +206,16 @@ public class SchemaUtil {
     }
 
     public static String getTableName(String schemaName, String tableName) {
-        return getName(schemaName,tableName);
+        return getName(schemaName,tableName, false);
     }
 
-    private static String getName(String optionalQualifier, String name) {
+    private static String getName(String optionalQualifier, String name, boolean caseSensitive) {
+        String cq = caseSensitive ? "\"" + name + "\"" : name;
         if (optionalQualifier == null || optionalQualifier.isEmpty()) {
-            return name;
+            return cq;
         }
-        return optionalQualifier + QueryConstants.NAME_SEPARATOR + name;
+        String cf = caseSensitive ? "\"" + optionalQualifier + "\"" : optionalQualifier;
+        return cf + QueryConstants.NAME_SEPARATOR + cq;
     }
 
     public static String getTableName(byte[] schemaName, byte[] tableName) {
@@ -225,21 +227,25 @@ public class SchemaUtil {
     }
 
     public static String getColumnDisplayName(String cf, String cq) {
-        return getName(cf == null || cf.isEmpty() ? null : cf, cq);
+        return getName(cf == null || cf.isEmpty() ? null : cf, cq, false);
+    }
+    
+    public static String getCaseSensitiveColumnDisplayName(String cf, String cq) {
+        return getName(cf == null || cf.isEmpty() ? null : cf, cq, true);
     }
 
     public static String getMetaDataEntityName(String schemaName, String tableName, String familyName, String columnName) {
         if ((schemaName == null || schemaName.isEmpty()) && (tableName == null || tableName.isEmpty())) {
-            return getName(familyName, columnName);
+            return getName(familyName, columnName, false);
         }
         if ((familyName == null || familyName.isEmpty()) && (columnName == null || columnName.isEmpty())) {
-            return getName(schemaName, tableName);
+            return getName(schemaName, tableName, false);
         }
-        return getName(getName(schemaName, tableName), getName(familyName, columnName));
+        return getName(getName(schemaName, tableName, false), getName(familyName, columnName, false), false);
     }
 
     public static String getColumnName(String familyName, String columnName) {
-        return getName(familyName, columnName);
+        return getName(familyName, columnName, false);
     }
 
     public static byte[] getTableNameAsBytes(String schemaName, String tableName) {