You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2017/02/27 03:34:16 UTC
[18/18] phoenix git commit: PHOENIX-1598 Encode column names to save
space and improve performance(Samarth Jain and Thomas D'Silva)
PHOENIX-1598 Encode column names to save space and improve performance(Samarth Jain and 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/dc6a6fc7
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/dc6a6fc7
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/dc6a6fc7
Branch: refs/heads/4.x-HBase-0.98
Commit: dc6a6fc75428a093414a7e801a645819805d6fcb
Parents: f0e6c4a
Author: Samarth <sa...@salesforce.com>
Authored: Sun Feb 26 19:32:25 2017 -0800
Committer: Samarth <sa...@salesforce.com>
Committed: Sun Feb 26 19:33:00 2017 -0800
----------------------------------------------------------------------
.../phoenix/end2end/AggregateQueryIT.java | 74 +-
.../AlterMultiTenantTableWithViewsIT.java | 25 +-
.../apache/phoenix/end2end/AlterTableIT.java | 493 +-
.../phoenix/end2end/AlterTableWithViewsIT.java | 133 +-
.../org/apache/phoenix/end2end/ArrayIT.java | 28 +
.../org/apache/phoenix/end2end/BaseJoinIT.java | 4 +-
.../org/apache/phoenix/end2end/BaseQueryIT.java | 99 +-
.../apache/phoenix/end2end/CaseStatementIT.java | 28 +-
.../apache/phoenix/end2end/CastAndCoerceIT.java | 34 +-
.../end2end/ClientTimeArithmeticQueryIT.java | 76 +-
.../end2end/ColumnEncodedBytesPropIT.java | 95 +
.../end2end/CountDistinctCompressionIT.java | 2 +-
.../apache/phoenix/end2end/CreateTableIT.java | 57 +
.../org/apache/phoenix/end2end/DateTimeIT.java | 2 +-
.../phoenix/end2end/DefaultColumnValueIT.java | 1 +
.../apache/phoenix/end2end/DerivedTableIT.java | 2 +-
.../apache/phoenix/end2end/DistinctCountIT.java | 4 +-
.../apache/phoenix/end2end/DynamicColumnIT.java | 63 +
.../phoenix/end2end/ExtendedQueryExecIT.java | 8 +-
.../apache/phoenix/end2end/FunkyNamesIT.java | 2 +-
.../org/apache/phoenix/end2end/GroupByIT.java | 162 +-
.../phoenix/end2end/ImmutableTablePropIT.java | 130 -
.../end2end/ImmutableTablePropertiesIT.java | 189 +
.../apache/phoenix/end2end/MutableQueryIT.java | 424 ++
.../phoenix/end2end/NativeHBaseTypesIT.java | 2 +-
.../org/apache/phoenix/end2end/NotQueryIT.java | 28 +-
.../org/apache/phoenix/end2end/OrderByIT.java | 2 -
.../apache/phoenix/end2end/PercentileIT.java | 4 +-
.../phoenix/end2end/PhoenixRuntimeIT.java | 4 +-
.../phoenix/end2end/PointInTimeQueryIT.java | 78 +-
.../phoenix/end2end/ProductMetricsIT.java | 2 +-
.../end2end/QueryDatabaseMetaDataIT.java | 16 +-
.../org/apache/phoenix/end2end/QueryIT.java | 112 +-
.../phoenix/end2end/ReadIsolationLevelIT.java | 2 +-
.../phoenix/end2end/RowValueConstructorIT.java | 36 +-
.../org/apache/phoenix/end2end/ScanQueryIT.java | 93 +-
.../phoenix/end2end/StatsCollectorIT.java | 124 +-
.../apache/phoenix/end2end/StoreNullsIT.java | 310 +-
.../phoenix/end2end/StoreNullsPropIT.java | 51 +
...SysTableNamespaceMappedStatsCollectorIT.java | 4 +-
.../java/org/apache/phoenix/end2end/TopNIT.java | 6 +-
.../apache/phoenix/end2end/UpsertSelectIT.java | 10 +-
.../apache/phoenix/end2end/UpsertValuesIT.java | 51 +-
.../phoenix/end2end/UserDefinedFunctionsIT.java | 3 +-
.../phoenix/end2end/VariableLengthPKIT.java | 38 +-
.../phoenix/end2end/index/DropMetadataIT.java | 13 +-
.../phoenix/end2end/index/ImmutableIndexIT.java | 20 +-
.../end2end/index/IndexExpressionIT.java | 28 +-
.../apache/phoenix/end2end/index/IndexIT.java | 58 +-
.../phoenix/end2end/index/IndexTestUtil.java | 11 +-
.../end2end/index/MutableIndexFailureIT.java | 2 +
.../phoenix/end2end/index/MutableIndexIT.java | 21 +-
.../phoenix/end2end/salted/SaltedTableIT.java | 2 +-
.../phoenix/tx/ParameterizedTransactionIT.java | 518 ++
.../org/apache/phoenix/tx/TransactionIT.java | 589 +-
.../org/apache/phoenix/tx/TxCheckpointIT.java | 42 +-
.../apache/phoenix/cache/ServerCacheClient.java | 2 +
.../org/apache/phoenix/cache/TenantCache.java | 2 +-
.../apache/phoenix/cache/TenantCacheImpl.java | 4 +-
.../phoenix/compile/CreateTableCompiler.java | 10 +-
.../apache/phoenix/compile/DeleteCompiler.java | 2 +-
.../phoenix/compile/ExpressionCompiler.java | 18 +-
.../apache/phoenix/compile/FromCompiler.java | 54 +-
.../apache/phoenix/compile/JoinCompiler.java | 15 +-
.../phoenix/compile/ListJarsQueryPlan.java | 6 +-
.../apache/phoenix/compile/PostDDLCompiler.java | 11 +-
.../compile/PostLocalIndexDDLCompiler.java | 9 +-
.../phoenix/compile/ProjectionCompiler.java | 35 +-
.../apache/phoenix/compile/TraceQueryPlan.java | 4 +-
.../compile/TupleProjectionCompiler.java | 31 +-
.../apache/phoenix/compile/UnionCompiler.java | 7 +-
.../apache/phoenix/compile/UpsertCompiler.java | 6 +-
.../apache/phoenix/compile/WhereCompiler.java | 24 +-
.../coprocessor/BaseScannerRegionObserver.java | 52 +-
.../coprocessor/DelegateRegionScanner.java | 5 +
.../GroupedAggregateRegionObserver.java | 37 +-
.../coprocessor/HashJoinRegionScanner.java | 19 +-
.../coprocessor/MetaDataEndpointImpl.java | 241 +-
.../phoenix/coprocessor/MetaDataProtocol.java | 4 +-
.../coprocessor/MetaDataRegionObserver.java | 2 +-
.../phoenix/coprocessor/ScanRegionObserver.java | 33 +-
.../coprocessor/ServerCachingEndpointImpl.java | 2 +-
.../coprocessor/ServerCachingProtocol.java | 2 +-
.../UngroupedAggregateRegionObserver.java | 65 +-
.../coprocessor/generated/PTableProtos.java | 1474 ++++-
.../generated/ServerCachingProtos.java | 5125 +++++++++++++++++-
.../phoenix/exception/SQLExceptionCode.java | 4 +
.../apache/phoenix/execute/BaseQueryPlan.java | 27 +-
.../apache/phoenix/execute/CorrelatePlan.java | 2 +-
.../apache/phoenix/execute/MutationState.java | 16 +-
.../phoenix/execute/SortMergeJoinPlan.java | 2 +-
.../apache/phoenix/execute/TupleProjector.java | 72 +-
.../apache/phoenix/execute/UnnestArrayPlan.java | 3 +-
.../expression/ArrayConstructorExpression.java | 82 +-
.../phoenix/expression/ExpressionType.java | 5 +-
.../expression/KeyValueColumnExpression.java | 32 +-
.../phoenix/expression/LiteralExpression.java | 11 +-
.../expression/ProjectedColumnExpression.java | 1 +
.../expression/SingleCellColumnExpression.java | 182 +
.../SingleCellConstructorExpression.java | 102 +
.../function/ArrayElemRefExpression.java | 4 +-
.../expression/function/ArrayIndexFunction.java | 4 +-
.../expression/util/regex/JONIPattern.java | 18 +-
.../visitor/BaseExpressionVisitor.java | 6 +
.../visitor/CloneExpressionVisitor.java | 12 +
.../CloneNonDeterministicExpressionVisitor.java | 1 +
.../expression/visitor/ExpressionVisitor.java | 6 +
.../StatelessTraverseAllExpressionVisitor.java | 13 +-
.../StatelessTraverseNoExpressionVisitor.java | 13 +-
.../phoenix/filter/ColumnProjectionFilter.java | 24 +-
...EncodedQualifiersColumnProjectionFilter.java | 151 +
.../MultiEncodedCQKeyValueComparisonFilter.java | 369 ++
.../filter/MultiKeyValueComparisonFilter.java | 6 +-
.../SingleCQKeyValueComparisonFilter.java | 3 +-
.../filter/SingleKeyValueComparisonFilter.java | 4 +-
.../apache/phoenix/hbase/index/ValueGetter.java | 1 +
.../example/CoveredColumnIndexCodec.java | 1 -
.../hbase/index/util/KeyValueBuilder.java | 1 +
.../apache/phoenix/index/IndexMaintainer.java | 530 +-
.../phoenix/index/IndexMetaDataCacheClient.java | 1 +
.../index/IndexMetaDataCacheFactory.java | 4 +-
.../phoenix/index/PhoenixIndexBuilder.java | 2 +-
.../apache/phoenix/index/PhoenixIndexCodec.java | 1 +
.../index/PhoenixIndexFailurePolicy.java | 2 +-
.../phoenix/index/PhoenixIndexMetaData.java | 9 +-
.../index/PhoenixTransactionalIndexer.java | 16 +-
.../phoenix/iterate/BaseResultIterators.java | 111 +-
.../iterate/LookAheadResultIterator.java | 2 +-
.../phoenix/iterate/MappedByteBufferQueue.java | 1 +
.../phoenix/iterate/OrderedResultIterator.java | 3 +-
.../iterate/RegionScannerResultIterator.java | 17 +-
.../phoenix/jdbc/PhoenixDatabaseMetaData.java | 14 +-
.../apache/phoenix/jdbc/PhoenixResultSet.java | 2 +-
.../apache/phoenix/join/HashCacheFactory.java | 2 +-
.../mapreduce/FormatToBytesWritableMapper.java | 21 +-
.../mapreduce/FormatToKeyValueReducer.java | 30 +-
.../index/PhoenixIndexPartialBuildMapper.java | 4 +-
.../query/ConnectionQueryServicesImpl.java | 135 +-
.../query/ConnectionlessQueryServicesImpl.java | 1 -
.../apache/phoenix/query/QueryConstants.java | 59 +-
.../org/apache/phoenix/query/QueryServices.java | 5 +-
.../phoenix/query/QueryServicesOptions.java | 6 +-
.../org/apache/phoenix/schema/ColumnRef.java | 16 +-
.../phoenix/schema/ColumnValueDecoder.java | 31 +
.../phoenix/schema/ColumnValueEncoder.java | 45 +
.../apache/phoenix/schema/DelegateColumn.java | 4 +
.../apache/phoenix/schema/DelegateTable.java | 24 +-
.../apache/phoenix/schema/MetaDataClient.java | 488 +-
.../java/org/apache/phoenix/schema/PColumn.java | 4 +-
.../apache/phoenix/schema/PColumnFamily.java | 14 +-
.../phoenix/schema/PColumnFamilyImpl.java | 49 +-
.../org/apache/phoenix/schema/PColumnImpl.java | 29 +-
.../apache/phoenix/schema/PMetaDataImpl.java | 4 +-
.../java/org/apache/phoenix/schema/PTable.java | 435 +-
.../org/apache/phoenix/schema/PTableImpl.java | 480 +-
.../org/apache/phoenix/schema/PTableKey.java | 6 +-
.../apache/phoenix/schema/ProjectedColumn.java | 12 +-
.../org/apache/phoenix/schema/SaltingUtil.java | 2 +-
.../apache/phoenix/schema/TableProperty.java | 42 +
.../apache/phoenix/schema/tuple/BaseTuple.java | 39 +
.../phoenix/schema/tuple/DelegateTuple.java | 7 +
.../tuple/EncodedColumnQualiferCellsList.java | 581 ++
.../schema/tuple/MultiKeyValueTuple.java | 1 +
.../tuple/PositionBasedMultiKeyValueTuple.java | 90 +
.../schema/tuple/PositionBasedResultTuple.java | 125 +
.../phoenix/schema/tuple/ResultTuple.java | 20 +-
.../org/apache/phoenix/schema/tuple/Tuple.java | 4 +
.../phoenix/schema/types/PArrayDataType.java | 340 +-
.../schema/types/PArrayDataTypeDecoder.java | 102 +
.../schema/types/PArrayDataTypeEncoder.java | 170 +
.../apache/phoenix/util/EncodedColumnsUtil.java | 205 +
.../java/org/apache/phoenix/util/IndexUtil.java | 78 +-
.../org/apache/phoenix/util/KeyValueUtil.java | 2 -
.../org/apache/phoenix/util/MetaDataUtil.java | 5 +
.../org/apache/phoenix/util/PhoenixRuntime.java | 12 +-
.../org/apache/phoenix/util/ResultUtil.java | 60 -
.../java/org/apache/phoenix/util/ScanUtil.java | 29 +-
.../org/apache/phoenix/util/SchemaUtil.java | 29 +-
.../apache/phoenix/cache/TenantCacheTest.java | 6 +-
.../phoenix/compile/HavingCompilerTest.java | 2 +-
.../phoenix/compile/QueryCompilerTest.java | 28 +-
.../phoenix/compile/QueryOptimizerTest.java | 51 +
.../compile/SelectStatementRewriterTest.java | 11 +-
.../phoenix/compile/WhereCompilerTest.java | 44 +-
.../phoenix/execute/CorrelatePlanTest.java | 12 +-
.../execute/LiteralResultIteratorPlanTest.java | 12 +-
.../phoenix/execute/MutationStateTest.java | 4 +-
.../phoenix/execute/UnnestArrayPlanTest.java | 8 +-
.../ArrayConstructorExpressionTest.java | 20 +-
.../expression/ColumnExpressionTest.java | 27 +-
.../phoenix/index/IndexMaintainerTest.java | 7 +-
.../iterate/AggregateResultScannerTest.java | 2 +-
.../query/BaseConnectionlessQueryTest.java | 18 +-
.../java/org/apache/phoenix/query/BaseTest.java | 61 +-
.../phoenix/query/ConnectionlessTest.java | 22 +-
.../EncodedColumnQualifierCellsListTest.java | 608 +++
.../schema/ImmutableStorageSchemeTest.java | 182 +
.../schema/types/PDataTypeForArraysTest.java | 38 +-
.../apache/phoenix/util/PhoenixRuntimeTest.java | 7 +-
.../util/QualifierEncodingSchemeTest.java | 119 +
.../java/org/apache/phoenix/util/TestUtil.java | 89 +-
phoenix-protocol/src/main/PTable.proto | 9 +
.../src/main/ServerCachingService.proto | 35 +
pom.xml | 2 +-
204 files changed, 15807 insertions(+), 3073 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/dc6a6fc7/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java
index c689373..a205814 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateQueryIT.java
@@ -17,12 +17,10 @@
*/
package org.apache.phoenix.end2end;
-import static org.apache.phoenix.util.TestUtil.ATABLE_NAME;
import static org.apache.phoenix.util.TestUtil.A_VALUE;
import static org.apache.phoenix.util.TestUtil.B_VALUE;
import static org.apache.phoenix.util.TestUtil.C_VALUE;
import static org.apache.phoenix.util.TestUtil.E_VALUE;
-import static org.apache.phoenix.util.TestUtil.ROW3;
import static org.apache.phoenix.util.TestUtil.ROW4;
import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES;
import static org.junit.Assert.assertEquals;
@@ -47,55 +45,13 @@ import org.junit.Test;
public class AggregateQueryIT extends BaseQueryIT {
- public AggregateQueryIT(String indexDDL) {
- super(indexDDL);
- }
-
- @Test
- public void testSumOverNullIntegerColumn() throws Exception {
- String query = "SELECT sum(a_integer) FROM aTable a";
- Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 20));
- Connection conn = DriverManager.getConnection(getUrl(), props);
- conn.setAutoCommit(true);
- conn.createStatement().execute("UPSERT INTO atable(organization_id,entity_id,a_integer) VALUES('" + getOrganizationId() + "','" + ROW3 + "',NULL)");
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 30));
- Connection conn1 = DriverManager.getConnection(getUrl(), props);
- analyzeTable(conn1, "ATABLE");
- conn1.close();
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 50));
- conn = DriverManager.getConnection(getUrl(), props);
- try {
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(42, rs.getInt(1));
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 70));
- conn = DriverManager.getConnection(getUrl(), props);
- conn.setAutoCommit(true);
- conn.createStatement().execute("UPSERT INTO atable(organization_id,entity_id,a_integer) SELECT organization_id, entity_id, CAST(null AS integer) FROM atable");
-
- props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 90));
- conn = DriverManager.getConnection(getUrl(), props);
- try {
- PreparedStatement statement = conn.prepareStatement(query);
- ResultSet rs = statement.executeQuery();
- assertTrue (rs.next());
- assertEquals(0, rs.getInt(1));
- assertTrue(rs.wasNull());
- assertFalse(rs.next());
- } finally {
- conn.close();
- }
+ public AggregateQueryIT(String indexDDL, boolean mutable, boolean columnEncoded) {
+ super(indexDDL, mutable, columnEncoded);
}
@Test
public void testGroupByPlusOne() throws Exception {
- String query = "SELECT a_integer+1 FROM aTable WHERE organization_id=? and a_integer = 5 GROUP BY a_integer+1";
+ String query = "SELECT a_integer+1 FROM " + tableName + " WHERE organization_id=? and a_integer = 5 GROUP BY a_integer+1";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at timestamp 2
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -114,7 +70,7 @@ public class AggregateQueryIT extends BaseQueryIT {
@Test
public void testSplitWithCachedMeta() throws Exception {
// Tests that you don't get an ambiguous column exception when using the same alias as the column name
- String query = "SELECT a_string, b_string, count(1) FROM atable WHERE organization_id=? and entity_id<=? GROUP BY a_string,b_string";
+ String query = "SELECT a_string, b_string, count(1) FROM " + tableName + " WHERE organization_id=? and entity_id<=? GROUP BY a_string,b_string";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at timestamp 2
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -138,12 +94,12 @@ public class AggregateQueryIT extends BaseQueryIT {
assertEquals(1, rs.getLong(3));
assertFalse(rs.next());
- byte[] tableName = Bytes.toBytes(ATABLE_NAME);
+ byte[] tableNameBytes = Bytes.toBytes(tableName);
admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin();
- HTable htable = (HTable) conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(tableName);
+ HTable htable = (HTable) conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(tableNameBytes);
htable.clearRegionCache();
int nRegions = htable.getRegionLocations().size();
- admin.split(tableName, ByteUtil.concat(Bytes.toBytes(tenantId), Bytes.toBytes("00A" + Character.valueOf((char) ('3' + nextRunCount())) + ts))); // vary split point with test run
+ admin.split(tableNameBytes, ByteUtil.concat(Bytes.toBytes(tenantId), Bytes.toBytes("00A" + Character.valueOf((char) ('3' + nextRunCount())) + ts))); // vary split point with test run
int retryCount = 0;
do {
Thread.sleep(2000);
@@ -177,7 +133,7 @@ public class AggregateQueryIT extends BaseQueryIT {
@Test
public void testCountIsNull() throws Exception {
- String query = "SELECT count(1) FROM aTable WHERE X_DECIMAL is null";
+ String query = "SELECT count(1) FROM " + tableName + " WHERE X_DECIMAL is null";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at timestamp 2
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -195,7 +151,7 @@ public class AggregateQueryIT extends BaseQueryIT {
@Test
public void testCountWithNoScanRanges() throws Exception {
- String query = "SELECT count(1) FROM aTable WHERE organization_id = 'not_existing_organization_id'";
+ String query = "SELECT count(1) FROM " + tableName + " WHERE organization_id = 'not_existing_organization_id'";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at timestamp 2
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -205,19 +161,19 @@ public class AggregateQueryIT extends BaseQueryIT {
assertTrue(rs.next());
assertEquals(0, rs.getLong(1));
assertFalse(rs.next());
- query = "SELECT count(1) FROM aTable WHERE organization_id = 'not_existing_organization_id' having count(*)>0";
+ query = "SELECT count(1) FROM " + tableName + " WHERE organization_id = 'not_existing_organization_id' having count(*)>0";
rs = conn.prepareStatement(query).executeQuery();
assertFalse(rs.next());
- query = "SELECT count(1) FROM aTable WHERE organization_id = 'not_existing_organization_id' limit 1 offset 1";
+ query = "SELECT count(1) FROM " + tableName + " WHERE organization_id = 'not_existing_organization_id' limit 1 offset 1";
rs = conn.prepareStatement(query).executeQuery();
assertFalse(rs.next());
- query = "SELECT count(1),123 FROM aTable WHERE organization_id = 'not_existing_organization_id'";
+ query = "SELECT count(1),123 FROM " + tableName + " WHERE organization_id = 'not_existing_organization_id'";
rs = conn.prepareStatement(query).executeQuery();
assertTrue(rs.next());
assertEquals(0, rs.getLong(1));
assertEquals("123", rs.getString(2));
assertFalse(rs.next());
- query = "SELECT count(1),sum(x_decimal) FROM aTable WHERE organization_id = 'not_existing_organization_id'";
+ query = "SELECT count(1),sum(x_decimal) FROM " + tableName + " WHERE organization_id = 'not_existing_organization_id'";
rs = conn.prepareStatement(query).executeQuery();
assertTrue(rs.next());
assertEquals(0, rs.getLong(1));
@@ -230,7 +186,7 @@ public class AggregateQueryIT extends BaseQueryIT {
@Test
public void testCountIsNotNull() throws Exception {
- String query = "SELECT count(1) FROM aTable WHERE X_DECIMAL is not null";
+ String query = "SELECT count(1) FROM " + tableName + " WHERE X_DECIMAL is not null";
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
props.setProperty(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 2)); // Execute at timestamp 2
Connection conn = DriverManager.getConnection(getUrl(), props);
@@ -250,7 +206,7 @@ public class AggregateQueryIT extends BaseQueryIT {
*/
@Test
public void testInFilterOnKey() throws Exception {
- String query = "SELECT count(entity_id) FROM ATABLE WHERE organization_id IN (?,?)";
+ String query = "SELECT count(entity_id) FROM " + tableName + " WHERE organization_id IN (?,?)";
String url = getUrl() + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
Connection conn = DriverManager.getConnection(url, props);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/dc6a6fc7/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
index d6f3a7f..7b4ff68 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterMultiTenantTableWithViewsIT.java
@@ -476,14 +476,15 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
// For a diverged view, only base table's pk column will be added and that too at the end.
assertTableDefinition(conn, divergedView, PTableType.VIEW, baseTable, 2, 7, DIVERGED_VIEW_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V3", "VIEW_COL1", "VIEW_COL2", "PK2");
- // Add existing column VIEW_COL2 to the base table
- alterBaseTable = "ALTER TABLE " + baseTable + " ADD VIEW_COL2 CHAR(256)";
- conn.createStatement().execute(alterBaseTable);
-
- // For the non-diverged view, adding the column VIEW_COL2 will end up changing its ordinal position in the view.
- assertTableDefinition(conn, view1, PTableType.VIEW, baseTable, 2, 9, 8, "TENANT_ID", "PK1", "V1", "V2", "V3", "KV", "PK2", "VIEW_COL2", "VIEW_COL1");
- // For the diverged view, adding the column VIEW_COL2 will not change its ordinal position in the view. It also won't change the base column count or the sequence number
- assertTableDefinition(conn, divergedView, PTableType.VIEW, baseTable, 2, 7, DIVERGED_VIEW_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V3", "VIEW_COL1", "VIEW_COL2", "PK2");
+ // Adding existing column VIEW_COL2 to the base table isn't allowed.
+ try {
+ alterBaseTable = "ALTER TABLE " + baseTable + " ADD VIEW_COL2 CHAR(256)";
+ conn.createStatement().execute(alterBaseTable);
+ fail();
+ }
+ catch (SQLException e) {
+ assertEquals("Unexpected exception", SQLExceptionCode.CANNOT_MUTATE_TABLE.getErrorCode(), e.getErrorCode());
+ }
}
}
@@ -500,13 +501,13 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
tenant1Conn.createStatement().execute(view1DDL);
}
- assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 0, 5, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V2", "V3");
+ assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 1, 5, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V2", "V3");
assertTableDefinition(conn, view1, PTableType.VIEW, baseTable, 0, 7, 5, "TENANT_ID", "PK1", "V1", "V2", "V3", "VIEW_COL1", "VIEW_COL2");
String alterBaseTable = "ALTER TABLE " + baseTable + " ADD KV VARCHAR, PK2 VARCHAR PRIMARY KEY";
conn.createStatement().execute(alterBaseTable);
- assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 1, 7, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V2", "V3", "KV", "PK2");
+ assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 2, 7, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V2", "V3", "KV", "PK2");
assertTableDefinition(conn, view1, PTableType.VIEW, baseTable, 1, 9, 7, "TENANT_ID", "PK1", "V1", "V2", "V3", "KV", "PK2", "VIEW_COL1", "VIEW_COL2");
// verify that the both columns were added to view1
@@ -530,13 +531,13 @@ public class AlterMultiTenantTableWithViewsIT extends ParallelStatsDisabledIT {
tenant1Conn.createStatement().execute(view1DDL);
}
- assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 0, 5, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V2", "V3");
+ assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 1, 5, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V2", "V3");
assertTableDefinition(conn, view1, PTableType.VIEW, baseTable, 0, 7, 5, "TENANT_ID", "PK1", "V1", "V2", "V3", "VIEW_COL1", "VIEW_COL2");
String alterBaseTable = "ALTER TABLE " + baseTable + " DROP COLUMN V2";
conn.createStatement().execute(alterBaseTable);
- assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 1, 4, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V3");
+ assertTableDefinition(conn, baseTable, PTableType.TABLE, null, 2, 4, BASE_TABLE_BASE_COLUMN_COUNT, "TENANT_ID", "PK1", "V1", "V3");
assertTableDefinition(conn, view1, PTableType.VIEW, baseTable, 1, 6, 4, "TENANT_ID", "PK1", "V1", "V3", "VIEW_COL1", "VIEW_COL2");
// verify that the dropped columns aren't visible