Repository: phoenix Updated Branches: refs/heads/encodecolumns2 4a9360f89 -> 8b886e3e2
Bring back check for existing HBase table Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/8b886e3e Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/8b886e3e Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/8b886e3e Branch: refs/heads/encodecolumns2 Commit: 8b886e3e25781116f28404f355b55be9f02b60ba Parents: 4a9360f Author: Samarth <samarth.j...@salesforce.com> Authored: Wed Nov 23 10:10:01 2016 -0800 Committer: Samarth <samarth.j...@salesforce.com> Committed: Wed Nov 23 10:10:01 2016 -0800 ---------------------------------------------------------------------- .../org/apache/phoenix/schema/MetaDataClient.java | 18 +++++++++++++----- .../apache/phoenix/compile/WhereCompilerTest.java | 4 ++-- .../apache/phoenix/execute/MutationStateTest.java | 4 ++-- .../apache/phoenix/query/ConnectionlessTest.java | 14 ++++++++------ 4 files changed, 25 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/8b886e3e/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 1fd9a5f..4ad1069 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 @@ -2029,10 +2029,7 @@ public class MetaDataClient { * We can't control what column qualifiers are used in HTable mapped to Phoenix views. So we are not * able to encode column names. */ - if (viewType == MAPPED) { - storageScheme = ONE_CELL_PER_KEYVALUE_COLUMN; - encodingScheme = FOUR_BYTE_QUALIFIERS; - } else { + if (viewType != MAPPED) { /* * For regular phoenix views, use the storage scheme of the physical table since they all share the * the same HTable. Views always use the base table's column qualifier counter for doling out @@ -2066,7 +2063,18 @@ public class MetaDataClient { * because we cannot control the column qualifiers that were used when populating the hbase table. * TODO: samarth add a test case for this */ - if (parent != null) { + + byte[] tableNameBytes = SchemaUtil.getTableNameAsBytes(schemaName, tableName); + boolean tableExists = true; + try { + connection.getQueryServices().getTableDescriptor(tableNameBytes); + } catch (org.apache.phoenix.schema.TableNotFoundException e) { + tableExists = false; + } + if (tableExists) { + storageScheme = ONE_CELL_PER_KEYVALUE_COLUMN; + encodingScheme = NON_ENCODED_QUALIFIERS; + } else if (parent != null) { storageScheme = parent.getStorageScheme(); encodingScheme = parent.getEncodingScheme(); } else if (isImmutableRows) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/8b886e3e/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereCompilerTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereCompilerTest.java b/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereCompilerTest.java index 06c20d3..c65408e 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereCompilerTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/compile/WhereCompilerTest.java @@ -121,7 +121,7 @@ public class WhereCompilerTest extends BaseConnectionlessQueryTest { Filter filter = scan.getFilter(); Expression idExpression = new ColumnRef(plan.getTableRef(), plan.getTableRef().getTable().getPColumnForColumnName("ID").getPosition()).newColumnExpression(); Expression id = new RowKeyColumnExpression(idExpression,new RowKeyValueAccessor(plan.getTableRef().getTable().getPKColumns(),0)); - Expression company = new KeyValueColumnExpression(plan.getTableRef().getTable().getPColumnForColumnName("COMPANY"), true); + Expression company = new KeyValueColumnExpression(plan.getTableRef().getTable().getPColumnForColumnName("COMPANY"), false); // FilterList has no equals implementation assertTrue(filter instanceof FilterList); FilterList filterList = (FilterList)filter; @@ -153,7 +153,7 @@ public class WhereCompilerTest extends BaseConnectionlessQueryTest { assertEquals( singleKVFilter(constantComparison( CompareOp.EQUAL, - new KeyValueColumnExpression(column, true), + new KeyValueColumnExpression(column, false), "c3")), filter); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/8b886e3e/phoenix-core/src/test/java/org/apache/phoenix/execute/MutationStateTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/execute/MutationStateTest.java b/phoenix-core/src/test/java/org/apache/phoenix/execute/MutationStateTest.java index 8553b73..276d946 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/execute/MutationStateTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/execute/MutationStateTest.java @@ -127,11 +127,11 @@ public class MutationStateTest { private void assertTable(String tableName1,List<KeyValue> keyValues1,String tableName2,List<KeyValue> keyValues2) { assertTrue("MUTATION_TEST1".equals(tableName1)); assertTrue(Bytes.equals(PUnsignedInt.INSTANCE.toBytes(111),CellUtil.cloneRow(keyValues1.get(0)))); - assertTrue("app1".equals(PVarchar.INSTANCE.toObject(CellUtil.cloneValue(keyValues1.get(1))))); + assertTrue("app1".equals(PVarchar.INSTANCE.toObject(CellUtil.cloneValue(keyValues1.get(0))))); assertTrue("MUTATION_TEST2".equals(tableName2)); assertTrue(Bytes.equals(PUnsignedInt.INSTANCE.toBytes(222),CellUtil.cloneRow(keyValues2.get(0)))); - assertTrue("app2".equals(PVarchar.INSTANCE.toObject(CellUtil.cloneValue(keyValues2.get(1))))); + assertTrue("app2".equals(PVarchar.INSTANCE.toObject(CellUtil.cloneValue(keyValues2.get(0))))); } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/8b886e3e/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionlessTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionlessTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionlessTest.java index 84cc65c..089c5f1 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionlessTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionlessTest.java @@ -141,21 +141,19 @@ public class ConnectionlessTest { assertTrue(iterator.hasNext()); kv = iterator.next(); assertArrayEquals(expectedRowKey1, kv.getRow()); - assertEquals(QueryConstants.EMPTY_COLUMN_VALUE, PVarchar.INSTANCE.toObject(kv.getValue())); - kv = iterator.next(); - assertArrayEquals(expectedRowKey1, kv.getRow()); assertEquals(name1, PVarchar.INSTANCE.toObject(kv.getValue())); assertTrue(iterator.hasNext()); kv = iterator.next(); assertArrayEquals(expectedRowKey1, kv.getRow()); assertEquals(now, PDate.INSTANCE.toObject(kv.getValue())); + assertTrue(iterator.hasNext()); + kv = iterator.next(); + assertArrayEquals(expectedRowKey1, kv.getRow()); + assertEquals(QueryConstants.EMPTY_COLUMN_VALUE, PVarchar.INSTANCE.toObject(kv.getValue())); } private static void assertRow2(Iterator<KeyValue> iterator, byte[] expectedRowKey2) { KeyValue kv; - kv = iterator.next(); - assertArrayEquals(expectedRowKey2, kv.getRow()); - assertEquals(QueryConstants.EMPTY_COLUMN_VALUE, PVarchar.INSTANCE.toObject(kv.getValue())); assertTrue(iterator.hasNext()); kv = iterator.next(); assertArrayEquals(expectedRowKey2, kv.getRow()); @@ -164,6 +162,10 @@ public class ConnectionlessTest { kv = iterator.next(); assertArrayEquals(expectedRowKey2, kv.getRow()); assertEquals(now, PDate.INSTANCE.toObject(kv.getValue())); + assertTrue(iterator.hasNext()); + kv = iterator.next(); + assertArrayEquals(expectedRowKey2, kv.getRow()); + assertEquals(QueryConstants.EMPTY_COLUMN_VALUE, PVarchar.INSTANCE.toObject(kv.getValue())); } @Test