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) {