You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by td...@apache.org on 2015/12/12 01:31:17 UTC
phoenix git commit: PHOENIX-2518 IndexMaintainer does not populate
indexedColumnTypes correctly
Repository: phoenix
Updated Branches:
refs/heads/4.x-HBase-0.98 cecc5cc9d -> 7ebdf46a9
PHOENIX-2518 IndexMaintainer does not populate indexedColumnTypes correctly
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7ebdf46a
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7ebdf46a
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7ebdf46a
Branch: refs/heads/4.x-HBase-0.98
Commit: 7ebdf46a907e936ed16b27d30b6a1cf3af528807
Parents: cecc5cc
Author: Thomas D'Silva <td...@salesforce.com>
Authored: Fri Dec 11 14:34:33 2015 -0800
Committer: Thomas D'Silva <td...@salesforce.com>
Committed: Fri Dec 11 16:30:44 2015 -0800
----------------------------------------------------------------------
.../apache/phoenix/index/IndexMaintainer.java | 5 ++--
.../phoenix/index/IndexMaintainerTest.java | 26 ++++++++++++++++++++
2 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ebdf46a/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 ab7534a..4d545a2 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
@@ -1221,8 +1221,9 @@ public class IndexMaintainer implements Writable, Iterable<ColumnReference> {
KeyValueExpressionVisitor visitor = new KeyValueExpressionVisitor() {
@Override
public Void visit(KeyValueColumnExpression expression) {
- indexedColumns.add(new ColumnReference(expression.getColumnFamily(), expression.getColumnName()));
- indexedColumnTypes.add(expression.getDataType());
+ if (indexedColumns.add(new ColumnReference(expression.getColumnFamily(), expression.getColumnName()))) {
+ indexedColumnTypes.add(expression.getDataType());
+ }
return null;
}
};
http://git-wip-us.apache.org/repos/asf/phoenix/blob/7ebdf46a/phoenix-core/src/test/java/org/apache/phoenix/index/IndexMaintainerTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/index/IndexMaintainerTest.java b/phoenix-core/src/test/java/org/apache/phoenix/index/IndexMaintainerTest.java
index 7af178f..435f0fe 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/index/IndexMaintainerTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/index/IndexMaintainerTest.java
@@ -31,6 +31,8 @@ import java.sql.Timestamp;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Mutation;
@@ -48,7 +50,9 @@ import org.apache.phoenix.query.BaseConnectionlessQueryTest;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTableKey;
import org.apache.phoenix.util.PhoenixRuntime;
+import org.apache.phoenix.util.PropertiesUtil;
import org.apache.phoenix.util.SchemaUtil;
+import org.apache.phoenix.util.TestUtil;
import org.junit.Test;
import com.google.common.collect.Maps;
@@ -294,4 +298,26 @@ public class IndexMaintainerTest extends BaseConnectionlessQueryTest {
"k1 CHAR(1) NOT NULL, k2 INTEGER NOT NULL, v1 BOOLEAN, v2 CHAR(2), v3 BIGINT, v4 CHAR(10)", "k1, k2",
"v1 DESC, k2 DESC", new Object[] { "a", 1, false, "bb" });
}
+
+ @Test
+ public void tesIndexedExpressionSerialization() throws Exception {
+ Properties props = PropertiesUtil.deepCopy(TestUtil.TEST_PROPERTIES);
+ Connection conn = DriverManager.getConnection(getUrl(), props);
+ try {
+ conn.setAutoCommit(true);
+ conn.createStatement().execute("CREATE TABLE IF NOT EXISTS FHA (ORGANIZATION_ID CHAR(15) NOT NULL, PARENT_ID CHAR(15) NOT NULL, CREATED_DATE DATE NOT NULL, ENTITY_HISTORY_ID CHAR(15) NOT NULL, FIELD_HISTORY_ARCHIVE_ID CHAR(15), CREATED_BY_ID VARCHAR, FIELD VARCHAR, DATA_TYPE VARCHAR, OLDVAL_STRING VARCHAR, NEWVAL_STRING VARCHAR, OLDVAL_FIRST_NAME VARCHAR, NEWVAL_FIRST_NAME VARCHAR, OLDVAL_LAST_NAME VARCHAR, NEWVAL_LAST_NAME VARCHAR, OLDVAL_NUMBER DECIMAL, NEWVAL_NUMBER DECIMAL, OLDVAL_DATE DATE, NEWVAL_DATE DATE, ARCHIVE_PARENT_TYPE VARCHAR, ARCHIVE_FIELD_NAME VARCHAR, ARCHIVE_TIMESTAMP DATE, ARCHIVE_PARENT_NAME VARCHAR, DIVISION INTEGER, CONNECTION_ID VARCHAR CONSTRAINT PK PRIMARY KEY (ORGANIZATION_ID, PARENT_ID, CREATED_DATE DESC, ENTITY_HISTORY_ID )) VERSIONS=1,MULTI_TENANT=true");
+ conn.createStatement().execute("CREATE INDEX IDX ON FHA (FIELD_HISTORY_ARCHIVE_ID, UPPER(OLDVAL_STRING) || UPPER(NEWVAL_STRING), NEWVAL_DATE - NEWVAL_DATE)");
+ PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class);
+ PTable table = pconn.getTable(new PTableKey(pconn.getTenantId(), "FHA"));
+ ImmutableBytesWritable ptr = new ImmutableBytesWritable();
+ table.getIndexMaintainers(ptr, pconn);
+ List<IndexMaintainer> indexMaintainerList = IndexMaintainer.deserialize(ptr, GenericKeyValueBuilder.INSTANCE);
+ assertEquals(1,indexMaintainerList.size());
+ IndexMaintainer indexMaintainer = indexMaintainerList.get(0);
+ Set<ColumnReference> indexedColumns = indexMaintainer.getIndexedColumns();
+ assertEquals("Unexpected Number of indexed columns ", indexedColumns.size(), 4);
+ } finally {
+ conn.close();
+ }
+ }
}