[8/9] phoenix git commit: PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy
PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/94203e1a Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/94203e1a Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/94203e1a Branch: refs/heads/4.14-cdh5.12 Commit: 94203e1a6a2fb60b4d5af0ecd03608f15995df44 Parents: b17bab6 Author: Vincent Poon Authored: Wed Oct 24 00:03:22 2018 +0100 Committer: pboado Committed: Mon Dec 3 20:27:23 2018 + -- .../phoenix/hbase/index/write/DelegateIndexFailurePolicy.java | 5 - .../org/apache/phoenix/index/PhoenixIndexFailurePolicy.java| 6 ++ .../src/main/java/org/apache/phoenix/query/QueryServices.java | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/94203e1a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java index a7fb7ec..caf2b38 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java @@ -28,7 +28,7 @@ import com.google.common.collect.Multimap; public class DelegateIndexFailurePolicy implements IndexFailurePolicy { -private final IndexFailurePolicy delegate; +private IndexFailurePolicy delegate; public DelegateIndexFailurePolicy(IndexFailurePolicy delegate) { this.delegate = delegate; @@ -55,4 +55,7 @@ public class DelegateIndexFailurePolicy implements IndexFailurePolicy { delegate.stop(arg0); } +public void setDelegate(IndexFailurePolicy delegate) { +this.delegate = delegate; +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/94203e1a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java index e7f5ac2..eabf481 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java @@ -60,6 +60,7 @@ import org.apache.phoenix.hbase.index.table.HTableInterfaceReference; import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; import org.apache.phoenix.hbase.index.write.DelegateIndexFailurePolicy; import org.apache.phoenix.hbase.index.write.KillServerOnFailurePolicy; +import org.apache.phoenix.hbase.index.write.LeaveIndexActiveFailurePolicy; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; import org.apache.phoenix.query.QueryServices; @@ -134,6 +135,11 @@ public class PhoenixIndexFailurePolicy extends DelegateIndexFailurePolicy { } else { throwIndexWriteFailure = Boolean.parseBoolean(value); } + +boolean killServer = env.getConfiguration().getBoolean(QueryServices.INDEX_FAILURE_KILL_SERVER, true); +if (!killServer) { +setDelegate(new LeaveIndexActiveFailurePolicy()); +} // else, default in constructor is KillServerOnFailurePolicy } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/94203e1a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java index 559d165..48b7b7f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java @@ -152,6 +152,7 @@ public interface QueryServices extends SQLCloseable { public static final String INDEX_FAILURE_BLOCK_WRITE = "phoenix.index.failure.block.write"; public static final String INDEX_FAILURE_DISABLE_INDEX = "phoenix.index.failure.disable.index"; public static final String INDEX_FAILURE_THROW_EXCEPTION_ATTRIB = "phoenix.index.failure.throw.exception"; +public static final String INDEX_FAILURE_KILL_SERVER = "phoenix.index.failure.unhandled.killserver"; // Index will be partiall
[3/9] phoenix git commit: PHOENIX-4907 - IndexScrutinyTool should use empty catalog instead of null
PHOENIX-4907 - IndexScrutinyTool should use empty catalog instead of null Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4736ec37 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4736ec37 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4736ec37 Branch: refs/heads/4.14-cdh5.12 Commit: 4736ec37104abc07093ddc7e44ee111f99f65798 Parents: 5b65a5f Author: Geoffrey Authored: Tue Sep 18 00:09:44 2018 +0100 Committer: pboado Committed: Mon Dec 3 20:27:04 2018 + -- .../java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4736ec37/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java index f3ff39e..d9a14bf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java @@ -499,7 +499,7 @@ public class IndexScrutinyTool extends Configured implements Tool { ResultSet rs = null; try { -rs = dbMetaData.getIndexInfo(null, schemaName, tableName, false, false); +rs = dbMetaData.getIndexInfo("", schemaName, tableName, false, false); while (rs.next()) { final String indexName = rs.getString(6); if (indexTable.equalsIgnoreCase(indexName)) {
[2/9] phoenix git commit: PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds
PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/5b65a5fe Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/5b65a5fe Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/5b65a5fe Branch: refs/heads/4.14-cdh5.12 Commit: 5b65a5fe55129a0588df38dd1a50a29fccb1f6fe Parents: 459518f Author: Geoffrey Authored: Fri Sep 7 00:18:09 2018 +0100 Committer: pboado Committed: Mon Dec 3 20:26:59 2018 + -- .../end2end/index/PhoenixMRJobSubmitterIT.java | 113 +++ .../index/automation/PhoenixMRJobSubmitter.java | 16 ++- .../apache/phoenix/schema/MetaDataClient.java | 2 +- 3 files changed, 126 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/5b65a5fe/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java new file mode 100644 index 000..7cc3aa0 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.index; + +import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; +import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest; +import org.apache.phoenix.mapreduce.index.automation.PhoenixAsyncIndex; +import org.apache.phoenix.mapreduce.index.automation.PhoenixMRJobSubmitter; +import org.apache.phoenix.schema.MetaDataClient; +import org.apache.phoenix.schema.PIndexState; +import org.apache.phoenix.util.ReadOnlyProps; +import org.apache.phoenix.util.RunUntilFailure; +import org.apache.phoenix.util.TestUtil; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.util.Map; + +@Category(NeedsOwnMiniClusterTest.class) +public class PhoenixMRJobSubmitterIT extends BaseUniqueNamesOwnClusterIT { + + private static String REQUEST_INDEX_REBUILD_SQL = "ALTER INDEX %s ON %s REBUILD ASYNC"; + + @BeforeClass + public static void setUp() throws Exception { +setUpTestDriver(ReadOnlyProps.EMPTY_PROPS); + + } + + @Test + public void testGetCandidateJobs() throws Exception { +String tableName = "TBL_" + generateUniqueName(); +String asyncIndexName = "IDX_" + generateUniqueName(); +String needsRebuildIndexName = "IDX_" + generateUniqueName(); +String tableDDL = "CREATE TABLE " + tableName + TestUtil.TEST_TABLE_SCHEMA; +String asyncIndexDDL = "CREATE INDEX " + asyncIndexName + " ON " + tableName + " (a.varchar_col1) ASYNC"; +String needsRebuildIndexDDL = "CREATE INDEX " + needsRebuildIndexName + " ON " + tableName + " (a.char_col1)"; +long rebuildTimestamp = 100L; + +createTestTable(getUrl(), tableDDL); + +createTestTable(getUrl(), needsRebuildIndexDDL); +Connection conn = null; +PreparedStatement stmt = null; +try { + conn = DriverManager.getConnection(getUrl()); + TestUtil.assertIndexState(conn, needsRebuildIndexName, PIndexState.ACTIVE, 0L); + + //first make sure that we don't return an active index + PhoenixMRJobSubmitter submitter = new PhoenixMRJobSubmitter(getUtility().getConfiguration()); + Map candidateMap = submitter.getCandidateJobs(conn); + Assert.assertNotNull(candidateMap); + Assert.assertEquals(0, candidateMap.size()); + + //create an index with ASYNC that will need buildin
phoenix git commit: PHOENIX-5056 Ignore failing IT
Repository: phoenix Updated Branches: refs/heads/4.14-cdh5.11 091ef8141 -> a6cfed7d4 PHOENIX-5056 Ignore failing IT Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a6cfed7d Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a6cfed7d Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a6cfed7d Branch: refs/heads/4.14-cdh5.11 Commit: a6cfed7d476cbbf3aeda186821dc968c601694a4 Parents: 091ef81 Author: Pedro Boado Authored: Mon Dec 3 13:49:42 2018 + Committer: pboado Committed: Mon Dec 3 20:21:09 2018 + -- .../org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java | 2 ++ .../java/org/apache/phoenix/end2end/index/MutableIndexIT.java | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a6cfed7d/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java index dc3e5d3..4dfe7b9 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java @@ -45,11 +45,13 @@ import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.SchemaUtil; import org.apache.phoenix.util.TestUtil; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import com.google.common.collect.Maps; +@Ignore @Category(NeedsOwnMiniClusterTest.class) public class LocalIndexSplitMergeIT extends BaseTest { http://git-wip-us.apache.org/repos/asf/phoenix/blob/a6cfed7d/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java index 1b9b8df..b4ddb5c 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java @@ -111,10 +111,10 @@ public class MutableIndexIT extends ParallelStatsDisabledIT { public static Collection data() { return Arrays.asList(new Object[][] { { false, null, false }, { false, null, true }, -{ false, "TEPHRA", false }, { false, "TEPHRA", true }, +{ false, "TEPHRA", false }, { false, "TEPHRA", true } // , //{ false, "OMID", false }, { false, "OMID", true }, -{ true, null, false }, { true, null, true }, -{ true, "TEPHRA", false }, { true, "TEPHRA", true }, +//{ true, null, false }, { true, null, true }, +//{ true, "TEPHRA", false }, { true, "TEPHRA", true }, //{ true, "OMID", false }, { true, "OMID", true }, }); }
[7/9] phoenix git commit: PHOENIX-4988 Incorrect index rowkey generated when updating only non-indexed columns after a delete
PHOENIX-4988 Incorrect index rowkey generated when updating only non-indexed columns after a delete Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b8298bbe Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b8298bbe Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b8298bbe Branch: refs/heads/4.14-cdh5.14 Commit: b8298bbedd8712bedcbb3539b7e8a2704da45878 Parents: 7348342 Author: Vincent Poon Authored: Mon Oct 22 21:20:10 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:37:14 2018 + -- .../phoenix/end2end/index/MutableIndexIT.java | 36 .../filter/ApplyAndFilterDeletesFilter.java | 9 +++-- 2 files changed, 43 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b8298bbe/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java index e968e99..1b9b8df 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java @@ -62,6 +62,7 @@ import org.apache.phoenix.schema.PIndexState; import org.apache.phoenix.schema.PTableKey; import org.apache.phoenix.util.ByteUtil; import org.apache.phoenix.util.EnvironmentEdgeManager; +import org.apache.phoenix.util.IndexScrutiny; import org.apache.phoenix.util.IndexUtil; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.PropertiesUtil; @@ -910,6 +911,41 @@ public class MutableIndexIT extends ParallelStatsDisabledIT { } } + /** + * PHOENIX-4988 + * Test updating only a non-indexed column after two successive deletes to an indexed row + */ + @Test + public void testUpdateNonIndexedColumn() throws Exception { + String tableName = "TBL_" + generateUniqueName(); + String indexName = "IDX_" + generateUniqueName(); + String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName); + String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName); + try (Connection conn = getConnection()) { + conn.setAutoCommit(false); + conn.createStatement().execute("CREATE TABLE " + fullTableName + " (k VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " + tableDDLOptions); + conn.createStatement().execute("CREATE " + (localIndex ? " LOCAL " : "") + " INDEX " + indexName + " ON " + fullTableName + " (v2)"); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_1','v2_1')"); + conn.commit(); + conn.createStatement().executeUpdate("DELETE FROM " + fullTableName); + conn.commit(); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_2','v2_2')"); + conn.commit(); + conn.createStatement().executeUpdate("DELETE FROM " + fullTableName); + conn.commit(); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1) VALUES ('testKey','v1_3')"); + conn.commit(); + IndexScrutiny.scrutinizeIndex(conn, fullTableName, fullIndexName); + // PHOENIX-4980 + // When there is a flush after a data table update of non-indexed columns, the + // index gets out of sync on the next write + getUtility().getHBaseAdmin().flush(TableName.valueOf(fullTableName)); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_4','v2_3')"); + conn.commit(); + IndexScrutiny.scrutinizeIndex(conn, fullTableName, fullIndexName); + } + } + private void upsertRow(String dml, Connection tenantConn, int i) throws SQLException { PreparedStatement stmt = tenantConn.prepareStatement(dml); stmt.setString(1, "00" + String.valueOf(i)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/b8298bbe/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java index a1f01ed..b5c3414 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java +++ b/phoenix-core
[6/9] phoenix git commit: PHOENIX-4960 Write to table with global index failed if meta of index changed (split, move, etc)
PHOENIX-4960 Write to table with global index failed if meta of index changed (split, move, etc) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/73483421 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/73483421 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/73483421 Branch: refs/heads/4.14-cdh5.14 Commit: 7348342153894b24df9cc3dfe6021c446df2d0c0 Parents: 60231fd Author: Vincent Poon Authored: Tue Oct 16 03:11:40 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:37:12 2018 + -- .../org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java | 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/73483421/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index ea72a01..68f8abf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -3902,6 +3902,10 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso newKVs.remove(disableTimeStampKVIndex); newKVs.set(indexStateKVIndex, KeyValueUtil.newKeyValue(key, TABLE_FAMILY_BYTES, INDEX_STATE_BYTES, timeStamp, Bytes.toBytes(newState.getSerializedValue(; +} else if (disableTimeStampKVIndex == -1) { // clear disableTimestamp if client didn't pass it in +newKVs.add(KeyValueUtil.newKeyValue(key, TABLE_FAMILY_BYTES, + PhoenixDatabaseMetaData.INDEX_DISABLE_TIMESTAMP_BYTES, timeStamp, PLong.INSTANCE.toBytes(0))); +disableTimeStampKVIndex = newKVs.size() - 1; } } else if (newState == PIndexState.DISABLE) { //reset the counter for pending disable when transitioning from PENDING_DISABLE to DISABLE
[1/9] phoenix git commit: PHOENIX-4935 - IndexTool should use empty catalog instead of null
Repository: phoenix Updated Branches: refs/heads/4.14-cdh5.14 af474b937 -> 7e43ebb5a PHOENIX-4935 - IndexTool should use empty catalog instead of null Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3b00c162 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3b00c162 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3b00c162 Branch: refs/heads/4.14-cdh5.14 Commit: 3b00c1621fe2fa007aed44b0295c4b45b30664ee Parents: af474b9 Author: Geoffrey Authored: Mon Oct 1 23:04:02 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:36:45 2018 + -- .../main/java/org/apache/phoenix/mapreduce/index/IndexTool.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/3b00c162/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java index ac0be01..15d41ea 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java @@ -737,7 +737,7 @@ public class IndexTool extends Configured implements Tool { ResultSet rs = null; try { -rs = dbMetaData.getIndexInfo(null, schemaName, tableName, false, false); +rs = dbMetaData.getIndexInfo("", schemaName, tableName, false, false); while (rs.next()) { final String indexName = rs.getString(6); if (indexTable.equalsIgnoreCase(indexName)) {
[3/9] phoenix git commit: PHOENIX-4907 - IndexScrutinyTool should use empty catalog instead of null
PHOENIX-4907 - IndexScrutinyTool should use empty catalog instead of null Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1d407cd5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1d407cd5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1d407cd5 Branch: refs/heads/4.14-cdh5.14 Commit: 1d407cd55b66bc113951e2c759512c70eee32e0f Parents: a9706bb Author: Geoffrey Authored: Tue Sep 18 00:09:44 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:36:51 2018 + -- .../java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1d407cd5/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java index f3ff39e..d9a14bf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java @@ -499,7 +499,7 @@ public class IndexScrutinyTool extends Configured implements Tool { ResultSet rs = null; try { -rs = dbMetaData.getIndexInfo(null, schemaName, tableName, false, false); +rs = dbMetaData.getIndexInfo("", schemaName, tableName, false, false); while (rs.next()) { final String indexName = rs.getString(6); if (indexTable.equalsIgnoreCase(indexName)) {
[2/9] phoenix git commit: PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds
PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a9706bb2 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a9706bb2 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a9706bb2 Branch: refs/heads/4.14-cdh5.14 Commit: a9706bb294c9781ff9687cbcb8737b3c4870e665 Parents: 3b00c16 Author: Geoffrey Authored: Fri Sep 7 00:18:09 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:36:48 2018 + -- .../end2end/index/PhoenixMRJobSubmitterIT.java | 113 +++ .../index/automation/PhoenixMRJobSubmitter.java | 16 ++- .../apache/phoenix/schema/MetaDataClient.java | 2 +- 3 files changed, 126 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a9706bb2/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java new file mode 100644 index 000..7cc3aa0 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.index; + +import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; +import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest; +import org.apache.phoenix.mapreduce.index.automation.PhoenixAsyncIndex; +import org.apache.phoenix.mapreduce.index.automation.PhoenixMRJobSubmitter; +import org.apache.phoenix.schema.MetaDataClient; +import org.apache.phoenix.schema.PIndexState; +import org.apache.phoenix.util.ReadOnlyProps; +import org.apache.phoenix.util.RunUntilFailure; +import org.apache.phoenix.util.TestUtil; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.util.Map; + +@Category(NeedsOwnMiniClusterTest.class) +public class PhoenixMRJobSubmitterIT extends BaseUniqueNamesOwnClusterIT { + + private static String REQUEST_INDEX_REBUILD_SQL = "ALTER INDEX %s ON %s REBUILD ASYNC"; + + @BeforeClass + public static void setUp() throws Exception { +setUpTestDriver(ReadOnlyProps.EMPTY_PROPS); + + } + + @Test + public void testGetCandidateJobs() throws Exception { +String tableName = "TBL_" + generateUniqueName(); +String asyncIndexName = "IDX_" + generateUniqueName(); +String needsRebuildIndexName = "IDX_" + generateUniqueName(); +String tableDDL = "CREATE TABLE " + tableName + TestUtil.TEST_TABLE_SCHEMA; +String asyncIndexDDL = "CREATE INDEX " + asyncIndexName + " ON " + tableName + " (a.varchar_col1) ASYNC"; +String needsRebuildIndexDDL = "CREATE INDEX " + needsRebuildIndexName + " ON " + tableName + " (a.char_col1)"; +long rebuildTimestamp = 100L; + +createTestTable(getUrl(), tableDDL); + +createTestTable(getUrl(), needsRebuildIndexDDL); +Connection conn = null; +PreparedStatement stmt = null; +try { + conn = DriverManager.getConnection(getUrl()); + TestUtil.assertIndexState(conn, needsRebuildIndexName, PIndexState.ACTIVE, 0L); + + //first make sure that we don't return an active index + PhoenixMRJobSubmitter submitter = new PhoenixMRJobSubmitter(getUtility().getConfiguration()); + Map candidateMap = submitter.getCandidateJobs(conn); + Assert.assertNotNull(candidateMap); + Assert.assertEquals(0, candidateMap.size()); + + //create an index with ASYNC that will need building via MapReduce + createTestTable(getUrl(), asyncIndexDDL); + TestUtil.assertIndexState(conn, asyncIndexName, PIndexState.BUILDING, 0L); + +
[4/9] phoenix git commit: PHOENIX-4964 ORDER BY should use a LOCAL index even if the query is not fully covered.
PHOENIX-4964 ORDER BY should use a LOCAL index even if the query is not fully covered. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/0a65646c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/0a65646c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/0a65646c Branch: refs/heads/4.14-cdh5.14 Commit: 0a65646c18abdf70568b7d837d00075a1c371f8c Parents: 1d407cd Author: Lars Hofhansl Authored: Fri Oct 12 06:46:53 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:36:53 2018 + -- .../phoenix/end2end/index/LocalIndexIT.java | 59 .../apache/phoenix/optimize/QueryOptimizer.java | 9 ++- 2 files changed, 66 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/0a65646c/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index 796d5a2..42cdab3 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -266,6 +266,65 @@ public class LocalIndexIT extends BaseLocalIndexIT { } indexTable.close(); } + +@Test +public void testLocalIndexUsedForUncoveredOrderBy() throws Exception { +String tableName = schemaName + "." + generateUniqueName(); +String indexName = "IDX_" + generateUniqueName(); +TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped); +String indexPhysicalTableName = physicalTableName.getNameAsString(); + +createBaseTable(tableName, null, "('e','i','o')"); +try (Connection conn1 = getConnection()) { +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')"); +conn1.commit(); +conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); + +String query = "SELECT * FROM " + tableName +" ORDER BY V1"; +ResultSet rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); + +HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); +int numRegions = admin.getTableRegions(physicalTableName).size(); + +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +String v = ""; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) <= 0); +v = next; +} +rs.close(); + +query = "SELECT * FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; +rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY REVERSE RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +v = "zz"; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) >= 0); +v = next; +} +rs.close(); + +} +} @Test public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception { http://git-wip-us.apache.org/repos/asf/phoenix/blob/0a65646c/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java b/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java index 6d66
[8/9] phoenix git commit: PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy
PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7267940a Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7267940a Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7267940a Branch: refs/heads/4.14-cdh5.14 Commit: 7267940aa91a7aecde93f43bcba04d9bb75dd177 Parents: b8298bb Author: Vincent Poon Authored: Wed Oct 24 00:03:22 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:37:16 2018 + -- .../phoenix/hbase/index/write/DelegateIndexFailurePolicy.java | 5 - .../org/apache/phoenix/index/PhoenixIndexFailurePolicy.java| 6 ++ .../src/main/java/org/apache/phoenix/query/QueryServices.java | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7267940a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java index a7fb7ec..caf2b38 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java @@ -28,7 +28,7 @@ import com.google.common.collect.Multimap; public class DelegateIndexFailurePolicy implements IndexFailurePolicy { -private final IndexFailurePolicy delegate; +private IndexFailurePolicy delegate; public DelegateIndexFailurePolicy(IndexFailurePolicy delegate) { this.delegate = delegate; @@ -55,4 +55,7 @@ public class DelegateIndexFailurePolicy implements IndexFailurePolicy { delegate.stop(arg0); } +public void setDelegate(IndexFailurePolicy delegate) { +this.delegate = delegate; +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/7267940a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java index e7f5ac2..eabf481 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java @@ -60,6 +60,7 @@ import org.apache.phoenix.hbase.index.table.HTableInterfaceReference; import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; import org.apache.phoenix.hbase.index.write.DelegateIndexFailurePolicy; import org.apache.phoenix.hbase.index.write.KillServerOnFailurePolicy; +import org.apache.phoenix.hbase.index.write.LeaveIndexActiveFailurePolicy; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; import org.apache.phoenix.query.QueryServices; @@ -134,6 +135,11 @@ public class PhoenixIndexFailurePolicy extends DelegateIndexFailurePolicy { } else { throwIndexWriteFailure = Boolean.parseBoolean(value); } + +boolean killServer = env.getConfiguration().getBoolean(QueryServices.INDEX_FAILURE_KILL_SERVER, true); +if (!killServer) { +setDelegate(new LeaveIndexActiveFailurePolicy()); +} // else, default in constructor is KillServerOnFailurePolicy } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/7267940a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java index 559d165..48b7b7f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java @@ -152,6 +152,7 @@ public interface QueryServices extends SQLCloseable { public static final String INDEX_FAILURE_BLOCK_WRITE = "phoenix.index.failure.block.write"; public static final String INDEX_FAILURE_DISABLE_INDEX = "phoenix.index.failure.disable.index"; public static final String INDEX_FAILURE_THROW_EXCEPTION_ATTRIB = "phoenix.index.failure.throw.exception"; +public static final String INDEX_FAILURE_KILL_SERVER = "phoenix.index.failure.unhandled.killserver"; // Index will be partially re-built from index disable time stamp
[5/9] phoenix git commit: PHOENIX-4967 Reverse scan along LOCAL index does not always return all data.
PHOENIX-4967 Reverse scan along LOCAL index does not always return all data. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/60231fde Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/60231fde Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/60231fde Branch: refs/heads/4.14-cdh5.14 Commit: 60231fde3c336aaeae92e6ae2be4b7fc3e053784 Parents: 0a65646 Author: Lars Hofhansl Authored: Sat Oct 13 22:34:44 2018 +0100 Committer: Pedro Boado Committed: Mon Dec 3 08:36:57 2018 + -- .../phoenix/end2end/index/LocalIndexIT.java | 55 +++- .../phoenix/iterate/BaseResultIterators.java| 3 +- 2 files changed, 56 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/60231fde/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index 42cdab3..cc3a2a5 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -298,11 +298,15 @@ public class LocalIndexIT extends BaseLocalIndexIT { rs = conn1.createStatement().executeQuery(query); String v = ""; +int i = 0; while(rs.next()) { String next = rs.getString("v1"); assertTrue(v.compareTo(next) <= 0); v = next; +i++; } +// see PHOENIX-4967 +assertEquals(4, i); rs.close(); query = "SELECT * FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; @@ -316,16 +320,65 @@ public class LocalIndexIT extends BaseLocalIndexIT { rs = conn1.createStatement().executeQuery(query); v = "zz"; +i = 0; while(rs.next()) { String next = rs.getString("v1"); assertTrue(v.compareTo(next) >= 0); v = next; +i++; } +// see PHOENIX-4967 +assertEquals(4, i); rs.close(); } } - + +@Test +public void testLocalIndexReverseScanShouldReturnAllRows() throws Exception { +String tableName = schemaName + "." + generateUniqueName(); +String indexName = "IDX_" + generateUniqueName(); +TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped); +String indexPhysicalTableName = physicalTableName.getNameAsString(); + +createBaseTable(tableName, null, "('e','i','o')"); +try (Connection conn1 = getConnection()) { +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'b')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')"); +conn1.commit(); +conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); + +String query = "SELECT V1 FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; +ResultSet rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); + +HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); +int numRegions = admin.getTableRegions(physicalTableName).size(); + +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY REVERSE RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +String v = "zz"; +int i = 0; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) >= 0); +v = next; +i++; +} +// see PHOENIX-4967 +assertEquals(4, i); +rs.close(); + +} +} + @Test public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception { String tableName = schemaName + "." + generateUniqueName(); http://git-wip-us.apache.org/repos/asf/phoeni
[9/9] phoenix git commit: PHOENIX-5056 Ignore failing IT
PHOENIX-5056 Ignore failing IT Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7e43ebb5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7e43ebb5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7e43ebb5 Branch: refs/heads/4.14-cdh5.14 Commit: 7e43ebb5a2963c7d9fa145357bf076721b250a35 Parents: 7267940 Author: Pedro Boado Authored: Mon Dec 3 13:49:42 2018 + Committer: Pedro Boado Committed: Mon Dec 3 18:21:59 2018 + -- .../org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java | 2 ++ .../java/org/apache/phoenix/end2end/index/MutableIndexIT.java | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7e43ebb5/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java index dc3e5d3..4dfe7b9 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java @@ -45,11 +45,13 @@ import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.SchemaUtil; import org.apache.phoenix.util.TestUtil; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import com.google.common.collect.Maps; +@Ignore @Category(NeedsOwnMiniClusterTest.class) public class LocalIndexSplitMergeIT extends BaseTest { http://git-wip-us.apache.org/repos/asf/phoenix/blob/7e43ebb5/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java index 1b9b8df..b4ddb5c 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java @@ -111,10 +111,10 @@ public class MutableIndexIT extends ParallelStatsDisabledIT { public static Collection data() { return Arrays.asList(new Object[][] { { false, null, false }, { false, null, true }, -{ false, "TEPHRA", false }, { false, "TEPHRA", true }, +{ false, "TEPHRA", false }, { false, "TEPHRA", true } // , //{ false, "OMID", false }, { false, "OMID", true }, -{ true, null, false }, { true, null, true }, -{ true, "TEPHRA", false }, { true, "TEPHRA", true }, +//{ true, null, false }, { true, null, true }, +//{ true, "TEPHRA", false }, { true, "TEPHRA", true }, //{ true, "OMID", false }, { true, "OMID", true }, }); }
[3/3] phoenix git commit: PHOENIX-5037 Fix maven site reporting warnings on build
PHOENIX-5037 Fix maven site reporting warnings on build Signed-off-by: Josh Elser Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4bea60d4 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4bea60d4 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4bea60d4 Branch: refs/heads/4.x-cdh5.15 Commit: 4bea60d456a45dc46959077d31bb05d5a4750195 Parents: 9ab8c1e Author: Artem Ervits Authored: Wed Nov 28 16:39:29 2018 + Committer: Pedro Boado Committed: Fri Nov 30 16:24:47 2018 + -- phoenix-core/pom.xml | 23 +-- phoenix-kafka/pom.xml | 22 -- pom.xml | 26 -- 3 files changed, 41 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4bea60d4/phoenix-core/pom.xml -- diff --git a/phoenix-core/pom.xml b/phoenix-core/pom.xml index 57fc81b..97091b9 100644 --- a/phoenix-core/pom.xml +++ b/phoenix-core/pom.xml @@ -44,7 +44,6 @@ org.apache.maven.plugins maven-site-plugin - 3.2 org.apache.maven.doxia @@ -62,15 +61,6 @@ 1.7 - - - - org.codehaus.mojo - findbugs-maven-plugin -2.5.2 - - - exec-maven-plugin @@ -491,4 +481,17 @@ disruptor + + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + org.codehaus.mojo + findbugs-maven-plugin + + + http://git-wip-us.apache.org/repos/asf/phoenix/blob/4bea60d4/phoenix-kafka/pom.xml -- diff --git a/phoenix-kafka/pom.xml b/phoenix-kafka/pom.xml index 30153a6..460eb5a 100644 --- a/phoenix-kafka/pom.xml +++ b/phoenix-kafka/pom.xml @@ -326,7 +326,6 @@ org.apache.maven.plugins maven-site-plugin - 3.2 org.apache.maven.doxia @@ -344,15 +343,6 @@ 1.7 - - - - org.codehaus.mojo - findbugs-maven-plugin - 2.5.2 - - - @@ -412,4 +402,16 @@ + + + +org.apache.maven.plugins +maven-project-info-reports-plugin + + +org.codehaus.mojo +findbugs-maven-plugin + + + http://git-wip-us.apache.org/repos/asf/phoenix/blob/4bea60d4/pom.xml -- diff --git a/pom.xml b/pom.xml index 1807e49..571ddb3 100644 --- a/pom.xml +++ b/pom.xml @@ -506,16 +506,7 @@ org.apache.maven.plugins maven-site-plugin -3.2 - - - - org.codehaus.mojo - findbugs-maven-plugin - 2.5.2 - - - +3.7.1 org.apache.rat @@ -1072,4 +1063,19 @@ + + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + 3.0.0 + + + org.codehaus.mojo + findbugs-maven-plugin + 3.0.5 + + +
[1/3] phoenix git commit: PHOENIX-4765 Add client and server side config property to enable rollback of splittable System Catalog if required (addendum)
Repository: phoenix Updated Branches: refs/heads/4.x-cdh5.15 55baa2aac -> 4bea60d45 PHOENIX-4765 Add client and server side config property to enable rollback of splittable System Catalog if required (addendum) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/219a55a1 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/219a55a1 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/219a55a1 Branch: refs/heads/4.x-cdh5.15 Commit: 219a55a131e1f3603b46096fd2e76321878078ac Parents: 55baa2a Author: Thomas D'Silva Authored: Tue Nov 27 21:46:19 2018 + Committer: Pedro Boado Committed: Fri Nov 30 16:24:42 2018 + -- .../java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java | 2 ++ .../src/main/java/org/apache/phoenix/query/QueryServices.java | 3 +++ 2 files changed, 5 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/219a55a1/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index 14caca3..d138132 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -2678,6 +2678,8 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso private MetaDataResponse processRemoteRegionMutations(byte[] systemTableName, List remoteMutations, MetaDataProtos.MutationCode mutationCode) throws IOException { +if (remoteMutations.isEmpty()) +return null; MetaDataResponse.Builder builder = MetaDataResponse.newBuilder(); try (Table hTable = env.getTable( http://git-wip-us.apache.org/repos/asf/phoenix/blob/219a55a1/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java index 728f3f8..becd116 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java @@ -345,6 +345,9 @@ public interface QueryServices extends SQLCloseable { // feature // // By default this config is false meaning that rolling back the upgrade is not possible +// If this config is true and you want to rollback the upgrade be sure to run the sql commands in +// UpgradeUtil.addParentToChildLink which will recreate the PARENT->CHILD links in SYSTEM.CATALOG. This is needed +// as from 4.15 onwards the PARENT->CHILD links are stored in a separate SYSTEM.CHILD_LINK table. public static final String ALLOW_SPLITTABLE_SYSTEM_CATALOG_ROLLBACK = "phoenix.allow.system.catalog.rollback";
[2/3] phoenix git commit: PHOENIX-5038 Use a single version of Scala in phoenix-spark
PHOENIX-5038 Use a single version of Scala in phoenix-spark Signed-off-by: Josh Elser Signed-off-by: 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/9ab8c1e9 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9ab8c1e9 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9ab8c1e9 Branch: refs/heads/4.x-cdh5.15 Commit: 9ab8c1e908ce4bb62a575f4f9dde8639993a48ba Parents: 219a55a Author: Artem Ervits Authored: Wed Nov 28 16:11:18 2018 + Committer: Pedro Boado Committed: Fri Nov 30 16:24:44 2018 + -- phoenix-spark/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ab8c1e9/phoenix-spark/pom.xml -- diff --git a/phoenix-spark/pom.xml b/phoenix-spark/pom.xml index 858895a..264ac77 100644 --- a/phoenix-spark/pom.xml +++ b/phoenix-spark/pom.xml @@ -503,13 +503,14 @@ net.alchim31.maven scala-maven-plugin -3.2.0 +3.4.4 ${project.build.sourceEncoding} -Xmx1024m ${scala.version} + ${scala.binary.version}
phoenix git commit: PHOENIX-5053 Ignore failing IT
Repository: phoenix Updated Branches: refs/heads/4.x-cdh5.15 f8836f7a2 -> 55baa2aac PHOENIX-5053 Ignore failing IT Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/55baa2aa Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/55baa2aa Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/55baa2aa Branch: refs/heads/4.x-cdh5.15 Commit: 55baa2aaced00e63530a1248db0ad98b1891e4d3 Parents: f8836f7 Author: Pedro Boado Authored: Fri Nov 30 15:55:18 2018 + Committer: Pedro Boado Committed: Fri Nov 30 15:55:18 2018 + -- .../phoenix/end2end/LocalIndexSplitMergeIT.java| 2 ++ .../apache/phoenix/end2end/PropertiesInSyncIT.java | 2 +- .../end2end/TableSnapshotReadsMapReduceIT.java | 6 ++ .../it/java/org/apache/phoenix/end2end/ViewIT.java | 17 ++--- .../phoenix/end2end/index/MutableIndexIT.java | 2 ++ pom.xml| 4 ++-- 6 files changed, 19 insertions(+), 14 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/55baa2aa/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java index dc3e5d3..4dfe7b9 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/LocalIndexSplitMergeIT.java @@ -45,11 +45,13 @@ import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.SchemaUtil; import org.apache.phoenix.util.TestUtil; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; import com.google.common.collect.Maps; +@Ignore @Category(NeedsOwnMiniClusterTest.class) public class LocalIndexSplitMergeIT extends BaseTest { http://git-wip-us.apache.org/repos/asf/phoenix/blob/55baa2aa/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java index 348b195..66379d4 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java @@ -577,7 +577,7 @@ public class PropertiesInSyncIT extends ParallelStatsDisabledIT { assertEquals("Mismatch in TTL", expectedTTL, cfd.getTimeToLive()); } assertEquals("Mismatch in KEEP_DELETED_CELLS", expectedKeepDeletedCells, -cfd.getKeepDeletedCells()); +cfd.getKeepDeletedCellsAsEnum()); assertEquals("Mismatch in REPLICATION_SCOPE", expectedReplicationScope, cfd.getScope()); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/55baa2aa/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java index e35e159..e8eacda 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java @@ -49,15 +49,13 @@ import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.mapreduce.index.PhoenixIndexDBWritable; import org.apache.phoenix.mapreduce.util.PhoenixMapReduceUtil; import org.apache.phoenix.util.ReadOnlyProps; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.*; import com.google.common.collect.Maps; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Ignore public class TableSnapshotReadsMapReduceIT extends BaseUniqueNamesOwnClusterIT { private static final Logger logger = LoggerFactory.getLogger(TableSnapshotReadsMapReduceIT.class); http://git-wip-us.apache.org/repos/asf/phoenix/blob/55baa2aa/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java index 6318
[23/28] phoenix git commit: PHOENIX-5028 Delay acquisition of port and increase Tephra test discovery timeouts
PHOENIX-5028 Delay acquisition of port and increase Tephra test discovery timeouts Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1a09ebf9 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1a09ebf9 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1a09ebf9 Branch: refs/heads/4.x-cdh5.15 Commit: 1a09ebf9d57c0dd50947cc33f1ec8415b54e6e9b Parents: b20b21d Author: James Taylor Authored: Sat Nov 17 23:13:59 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:10 2018 + -- .../end2end/ConnectionQueryServicesTestImpl.java | 4 +++- .../transaction/OmidTransactionProvider.java | 2 +- .../transaction/PhoenixTransactionProvider.java| 2 +- .../transaction/TephraTransactionProvider.java | 17 ++--- .../phoenix/query/QueryServicesTestImpl.java | 3 --- 5 files changed, 15 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1a09ebf9/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConnectionQueryServicesTestImpl.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConnectionQueryServicesTestImpl.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConnectionQueryServicesTestImpl.java index 6ebaa65..969e0f4 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConnectionQueryServicesTestImpl.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ConnectionQueryServicesTestImpl.java @@ -35,6 +35,7 @@ import org.apache.phoenix.transaction.PhoenixTransactionService; import org.apache.phoenix.transaction.TransactionFactory; import org.apache.phoenix.transaction.TransactionFactory.Provider; import org.apache.phoenix.util.SQLCloseables; +import org.apache.phoenix.util.TestUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -102,7 +103,8 @@ public class ConnectionQueryServicesTestImpl extends ConnectionQueryServicesImpl public synchronized PhoenixTransactionClient initTransactionClient(Provider provider) throws SQLException { PhoenixTransactionService txService = txServices[provider.ordinal()]; if (txService == null) { -txService = txServices[provider.ordinal()] = provider.getTransactionProvider().getTransactionService(config, connectionInfo); +int port = TestUtil.getRandomPort(); +txService = txServices[provider.ordinal()] = provider.getTransactionProvider().getTransactionService(config, connectionInfo, port); } return super.initTransactionClient(provider); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/1a09ebf9/phoenix-core/src/main/java/org/apache/phoenix/transaction/OmidTransactionProvider.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/transaction/OmidTransactionProvider.java b/phoenix-core/src/main/java/org/apache/phoenix/transaction/OmidTransactionProvider.java index c53215c..bace2bc 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/transaction/OmidTransactionProvider.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/transaction/OmidTransactionProvider.java @@ -72,7 +72,7 @@ public class OmidTransactionProvider implements PhoenixTransactionProvider { } @Override -public PhoenixTransactionService getTransactionService(Configuration config, ConnectionInfo connectionInfo) throws SQLException{ +public PhoenixTransactionService getTransactionService(Configuration config, ConnectionInfo connectionInfo, int port) throws SQLException{ return new OmidTransactionService(); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/1a09ebf9/phoenix-core/src/main/java/org/apache/phoenix/transaction/PhoenixTransactionProvider.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/transaction/PhoenixTransactionProvider.java b/phoenix-core/src/main/java/org/apache/phoenix/transaction/PhoenixTransactionProvider.java index b7f660e..3af554b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/transaction/PhoenixTransactionProvider.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/transaction/PhoenixTransactionProvider.java @@ -50,7 +50,7 @@ public interface PhoenixTransactionProvider { public PhoenixTransactionContext getTransactionContext(PhoenixConnection connection) throws SQLException; public PhoenixTransactionClient getTransactionClient(Configuration config, ConnectionInfo connectionInfo) throws SQLException; -public PhoenixTransactionService getTransactionService(Configuration config, ConnectionInfo connectionInfo) throws S
[18/28] phoenix git commit: PHOENIX-5000 Make SecureUserConnectionsTest as Integration test
PHOENIX-5000 Make SecureUserConnectionsTest as Integration test Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/60c19250 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/60c19250 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/60c19250 Branch: refs/heads/4.x-cdh5.15 Commit: 60c19250116d378a5f6f725d9dde9a8284d86ef5 Parents: 1c65619 Author: Karan Mehta Authored: Tue Oct 30 19:40:00 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:56 2018 + -- .../phoenix/jdbc/SecureUserConnectionsIT.java | 459 +++ .../phoenix/jdbc/SecureUserConnectionsTest.java | 459 --- 2 files changed, 459 insertions(+), 459 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/60c19250/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java new file mode 100644 index 000..eaf981b --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java @@ -0,0 +1,459 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.jdbc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Field; +import java.security.PrivilegedExceptionAction; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.CommonConfigurationKeys; +import org.apache.hadoop.hbase.security.User; +import org.apache.hadoop.minikdc.MiniKdc; +import org.apache.hadoop.security.UserGroupInformation; +import org.apache.hadoop.security.authentication.util.KerberosName; +import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.ConnectionInfo; +import org.apache.phoenix.query.ConfigurationFactory; +import org.apache.phoenix.util.InstanceResolver; +import org.apache.phoenix.util.PhoenixRuntime; +import org.apache.phoenix.util.ReadOnlyProps; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +/** + * Tests ConnectionQueryServices caching when Kerberos authentication is enabled. It's not + * trivial to directly test this, so we exploit the knowledge that the caching is driven by + * a ConcurrentHashMap. We can use a HashSet to determine when instances of ConnectionInfo + * collide and when they do not. + */ +public class SecureUserConnectionsIT { +private static final Log LOG = LogFactory.getLog(SecureUserConnectionsIT.class); +private static final int KDC_START_ATTEMPTS = 10; + +private static final File TEMP_DIR = new File(getClassTempDir()); +private static final File KEYTAB_DIR = new File(TEMP_DIR, "keytabs"); +private static final File KDC_DIR = new File(TEMP_DIR, "kdc"); +private static final List USER_KEYTAB_FILES = new ArrayList<>(); +private static final List SERVICE_KEYTAB_FILES = new ArrayList<>(); +private static final int NUM_USERS = 3; +private static final Properties EMPTY_PROPERTIES = new Properties(); +private static final String BASE_URL = PhoenixRuntime.JDBC_PROTOCOL + ":localhost:2181"; + +private static MiniKdc KDC; + +@BeforeClass +public static void setupKdc() throws Exception { +ensureIsEmptyDirectory(KDC_DIR); +ensureIsEmptyDirectory(KEYTAB_DIR); +// Create and start the KDC. MiniKDC appears to have a race condition in how it does +// port allocation (with apache-ds). See PHOENIX-3287. +boolean started = false; +for (i
[19/28] phoenix git commit: PHOENIX-5013 Increase timeout for Tephra discovery service
PHOENIX-5013 Increase timeout for Tephra discovery service Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b28a241c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b28a241c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b28a241c Branch: refs/heads/4.x-cdh5.15 Commit: b28a241c8b38414ee4cba6a3fc1a74a5cf8cdd39 Parents: 60c1925 Author: Thomas D'Silva Authored: Thu Nov 15 20:33:26 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:59 2018 + -- .../test/java/org/apache/phoenix/query/QueryServicesTestImpl.java | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b28a241c/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java -- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java index 49fb8e8..eae951a 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java @@ -130,6 +130,7 @@ public final class QueryServicesTestImpl extends BaseQueryServicesImpl { .set(TxConstants.Service.CFG_DATA_TX_CLIENT_RETRY_STRATEGY, "n-times") .set(TxConstants.Service.CFG_DATA_TX_CLIENT_ATTEMPTS, 1) .set(TxConstants.Service.CFG_DATA_TX_BIND_PORT, TestUtil.getRandomPort()) + .set(TxConstants.Service.CFG_DATA_TX_CLIENT_DISCOVERY_TIMEOUT_SEC, 60) .set(TxConstants.Manager.CFG_TX_SNAPSHOT_DIR, Files.createTempDir().getAbsolutePath()) .set(TxConstants.Manager.CFG_TX_TIMEOUT, DEFAULT_TXN_TIMEOUT_SECONDS) .set(TxConstants.Manager.CFG_TX_SNAPSHOT_INTERVAL, 5L)
[14/28] phoenix git commit: PHOENIX-5017 Fix testRecreateViewWhoseParentWasDropped test flapper
PHOENIX-5017 Fix testRecreateViewWhoseParentWasDropped test flapper Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7afa9549 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7afa9549 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7afa9549 Branch: refs/heads/4.x-cdh5.15 Commit: 7afa9549df2e5f14f963a5c61d0cce006fb4a014 Parents: 21c3a7c Author: Thomas D'Silva Authored: Tue Nov 13 23:42:19 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:45 2018 + -- .../phoenix/coprocessor/MetaDataEndpointImpl.java | 12 1 file changed, 8 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7afa9549/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index d899e32..5562340 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -2035,8 +2035,7 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso } } -// check if the table was dropped, but had child views that were have not yet -// been cleaned up by compaction +// check if the table was dropped, but had child views that were have not yet been cleaned up if (!Bytes.toString(schemaName).equals(QueryConstants.SYSTEM_SCHEMA_NAME)) { dropChildViews(env, tenantIdBytes, schemaName, tableName); } @@ -2434,8 +2433,13 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso MetaDataClient client = new MetaDataClient(connection); org.apache.phoenix.parse.TableName viewTableName = org.apache.phoenix.parse.TableName .create(Bytes.toString(viewSchemaName), Bytes.toString(viewName)); -client.dropTable( -new DropTableStatement(viewTableName, PTableType.VIEW, false, true, true)); +try { +client.dropTable( +new DropTableStatement(viewTableName, PTableType.VIEW, false, true, true)); +} +catch (TableNotFoundException e) { +logger.info("Ignoring view "+viewTableName+" as it has already been dropped"); +} } } }
[25/28] phoenix git commit: PHOENIX-5000 Make SecureUserConnectionsTest as Integration test (Addendum)
PHOENIX-5000 Make SecureUserConnectionsTest as Integration test (Addendum) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/bb17957c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/bb17957c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/bb17957c Branch: refs/heads/4.x-cdh5.15 Commit: bb17957ca2938093dd94bed6052cde92e28d176a Parents: d2e4a73 Author: Karan Mehta Authored: Mon Nov 19 22:48:32 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:15 2018 + -- .../it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java | 3 +++ 1 file changed, 3 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/bb17957c/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java index eaf981b..1ab54d2 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/jdbc/SecureUserConnectionsIT.java @@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.security.User; import org.apache.hadoop.minikdc.MiniKdc; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.authentication.util.KerberosName; +import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest; import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.ConnectionInfo; import org.apache.phoenix.query.ConfigurationFactory; import org.apache.phoenix.util.InstanceResolver; @@ -47,6 +48,7 @@ import org.apache.phoenix.util.ReadOnlyProps; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; +import org.junit.experimental.categories.Category; /** * Tests ConnectionQueryServices caching when Kerberos authentication is enabled. It's not @@ -54,6 +56,7 @@ import org.junit.Test; * a ConcurrentHashMap. We can use a HashSet to determine when instances of ConnectionInfo * collide and when they do not. */ +@Category(NeedsOwnMiniClusterTest.class) public class SecureUserConnectionsIT { private static final Log LOG = LogFactory.getLog(SecureUserConnectionsIT.class); private static final int KDC_START_ATTEMPTS = 10;
[16/28] phoenix git commit: PHOENIX-5008 (Addendum): CQSI.init should not bubble up RetriableUpgradeException to client in case of an UpgradeRequiredException
PHOENIX-5008 (Addendum): CQSI.init should not bubble up RetriableUpgradeException to client in case of an UpgradeRequiredException Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/bcf2cc7f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/bcf2cc7f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/bcf2cc7f Branch: refs/heads/4.x-cdh5.15 Commit: bcf2cc7f69a4a107229a01e514c9f6ec7fe4d534 Parents: f33f7d7 Author: Chinmay Kulkarni Authored: Wed Nov 14 01:11:53 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:50 2018 + -- .../phoenix/end2end/SystemCatalogCreationOnConnectionIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/bcf2cc7f/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java index eadd391..7a5f80c 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java @@ -504,7 +504,7 @@ public class SystemCatalogCreationOnConnectionIT { */ private Set getHBaseTables() throws IOException { Set tables = new HashSet<>(); -for (TableName tn : testUtil.getAdmin().listTableNames()) { +for (TableName tn : testUtil.getHBaseAdmin().listTableNames()) { tables.add(tn.getNameAsString()); } return tables;
[17/28] phoenix git commit: PHOENIX-4841 staging patch commit.
PHOENIX-4841 staging patch commit. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1c656192 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1c656192 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1c656192 Branch: refs/heads/4.x-cdh5.15 Commit: 1c656192f6d0ea061630c7d1ef8ab3f0970e7071 Parents: bcf2cc7 Author: Daniel Wong Authored: Wed Oct 10 00:38:11 2018 +0100 Committer: Pedro Boado Committed: Tue Nov 27 15:11:54 2018 + -- .../org/apache/phoenix/end2end/QueryMoreIT.java | 171 +-- .../apache/phoenix/compile/WhereOptimizer.java | 58 ++- .../expression/ComparisonExpression.java| 18 +- .../RowValueConstructorExpressionRewriter.java | 54 ++ .../org/apache/phoenix/schema/RowKeySchema.java | 4 + ...wValueConstructorExpressionRewriterTest.java | 78 + 6 files changed, 362 insertions(+), 21 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1c656192/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java index 04272fa..2b1d31e 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java @@ -17,11 +17,13 @@ */ package org.apache.phoenix.end2end; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import com.google.common.collect.Lists; +import org.apache.hadoop.hbase.util.Pair; +import org.apache.phoenix.jdbc.PhoenixConnection; +import org.apache.phoenix.query.QueryServices; +import org.apache.phoenix.util.PhoenixRuntime; +import org.apache.phoenix.util.TestUtil; +import org.junit.Test; import java.sql.Connection; import java.sql.Date; @@ -37,18 +39,19 @@ import java.util.Map; import java.util.Properties; import org.apache.hadoop.hbase.util.Base64; -import org.apache.hadoop.hbase.util.Pair; -import org.apache.phoenix.jdbc.PhoenixConnection; -import org.apache.phoenix.query.QueryServices; -import org.apache.phoenix.util.PhoenixRuntime; -import org.apache.phoenix.util.TestUtil; -import org.junit.Test; -import com.google.common.collect.Lists; +import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; public class QueryMoreIT extends ParallelStatsDisabledIT { +private final String TENANT_SPECIFIC_URL1 = getUrl() + ';' + TENANT_ID_ATTRIB + "=tenant1"; + private String dataTableName; //queryAgainstTenantSpecificView = true, dataTableSalted = true @Test @@ -510,4 +513,148 @@ public class QueryMoreIT extends ParallelStatsDisabledIT { stmt.execute(); } } + +@Test public void testRVCWithDescAndAscendingPK() throws Exception { +final Connection conn = DriverManager.getConnection(getUrl()); +String fullTableName = generateUniqueName(); +try (Statement stmt = conn.createStatement()) { +stmt.execute("CREATE TABLE " + fullTableName + "(\n" ++ "ORGANIZATION_ID CHAR(15) NOT NULL,\n" + "SCORE VARCHAR NOT NULL,\n" ++ "ENTITY_ID VARCHAR NOT NULL\n" ++ "CONSTRAINT PAGE_SNAPSHOT_PK PRIMARY KEY (\n" ++ "ORGANIZATION_ID,\n" + "SCORE DESC,\n" + "ENTITY_ID\n" ++ ")\n" + ") MULTI_TENANT=TRUE"); +} + +conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES ('org1','c','1')"); +conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES ('org1','b','3')"); +conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES ('org1','b','4')"); +conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES ('org1','a','2')"); +conn.commit(); + +try (Statement stmt = conn.createStatement()) { +final ResultSet +rs = +stmt.executeQuery("SELECT score, entity_id \n" + "FROM " + fullTableName + "\n" ++ "WHERE organization_id = 'org1'\n" ++ "AND (score, entity_id) < ('b', '4')\n" ++ "ORDER BY score DESC, entity_
[20/28] phoenix git commit: PHOENIX-5024 - Cleanup anonymous inner classes in PostDDLCompiler
PHOENIX-5024 - Cleanup anonymous inner classes in PostDDLCompiler Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/590f88bd Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/590f88bd Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/590f88bd Branch: refs/heads/4.x-cdh5.15 Commit: 590f88bdc0d93771e0659f0e20f67da0d99e001d Parents: b28a241 Author: Geoffrey Jacoby Authored: Fri Nov 16 17:55:49 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:02 2018 + -- .../apache/phoenix/compile/PostDDLCompiler.java | 478 ++- 1 file changed, 258 insertions(+), 220 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/590f88bd/phoenix-core/src/main/java/org/apache/phoenix/compile/PostDDLCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/PostDDLCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/PostDDLCompiler.java index 709534e..a74c5f1 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/PostDDLCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/PostDDLCompiler.java @@ -87,248 +87,286 @@ public class PostDDLCompiler { final long timestamp) throws SQLException { PhoenixStatement statement = new PhoenixStatement(connection); final StatementContext context = new StatementContext( -statement, -new ColumnResolver() { +statement, +new MultipleTableRefColumnResolver(tableRefs), +scan, +new SequenceManager(statement)); +return new PostDDLMutationPlan(context, tableRefs, timestamp, emptyCF, deleteList, projectCFs); +} -@Override -public List getTables() { -return tableRefs; -} +private static class MultipleTableRefColumnResolver implements ColumnResolver { -@Override -public TableRef resolveTable(String schemaName, String tableName) throws SQLException { -throw new UnsupportedOperationException(); -} +private final List tableRefs; -@Override -public ColumnRef resolveColumn(String schemaName, String tableName, String colName) -throws SQLException { -throw new UnsupportedOperationException(); -} +public MultipleTableRefColumnResolver(List tableRefs) { +this.tableRefs = tableRefs; +} - @Override - public List getFunctions() { - return Collections.emptyList(); - } - - @Override - public PFunction resolveFunction(String functionName) - throws SQLException { - throw new FunctionNotFoundException(functionName); - } - - @Override - public boolean hasUDFs() { - return false; - } - - @Override - public PSchema resolveSchema(String schemaName) throws SQLException { - throw new SchemaNotFoundException(schemaName); - } - - @Override - public List getSchemas() { - throw new UnsupportedOperationException(); - } - -}, -scan, -new SequenceManager(statement)); -return new BaseMutationPlan(context, Operation.UPSERT /* FIXME */) { - -@Override -public MutationState execute() throws SQLException { -if (tableRefs.isEmpty()) { -return new MutationState(0, 1000, connection); -} -boolean wasAutoCommit = connection.getAutoCommit(); -try { -connection.setAutoCommit(true); -SQLException sqlE = null; -/* - * Handles: - * 1) deletion of a
[12/28] phoenix git commit: PHOENIX-5013 Increase timeout for Tephra discovery service
PHOENIX-5013 Increase timeout for Tephra discovery service Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a0e98599 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a0e98599 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a0e98599 Branch: refs/heads/4.x-cdh5.15 Commit: a0e98599b8ffeca26c1d316d59585ccc7df6daa9 Parents: b296ddc Author: James Taylor Authored: Sat Nov 10 19:07:02 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:39 2018 + -- .../apache/phoenix/query/QueryServicesTestImpl.java | 6 +++--- .../test/java/org/apache/phoenix/util/TestUtil.java | 14 ++ 2 files changed, 17 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a0e98599/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java -- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java index 841abb6..49fb8e8 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/QueryServicesTestImpl.java @@ -25,8 +25,8 @@ import org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec; import org.apache.phoenix.transaction.OmidTransactionProvider; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.ReadOnlyProps; +import org.apache.phoenix.util.TestUtil; import org.apache.tephra.TxConstants; -import org.apache.twill.internal.utils.Networks; /** @@ -129,12 +129,12 @@ public final class QueryServicesTestImpl extends BaseQueryServicesImpl { .set(TxConstants.Manager.CFG_DO_PERSIST, false) .set(TxConstants.Service.CFG_DATA_TX_CLIENT_RETRY_STRATEGY, "n-times") .set(TxConstants.Service.CFG_DATA_TX_CLIENT_ATTEMPTS, 1) -.set(TxConstants.Service.CFG_DATA_TX_BIND_PORT, Networks.getRandomPort()) +.set(TxConstants.Service.CFG_DATA_TX_BIND_PORT, TestUtil.getRandomPort()) .set(TxConstants.Manager.CFG_TX_SNAPSHOT_DIR, Files.createTempDir().getAbsolutePath()) .set(TxConstants.Manager.CFG_TX_TIMEOUT, DEFAULT_TXN_TIMEOUT_SECONDS) .set(TxConstants.Manager.CFG_TX_SNAPSHOT_INTERVAL, 5L) // setup default test configs for Omid -.set(OmidTransactionProvider.OMID_TSO_PORT, Networks.getRandomPort()) +.set(OmidTransactionProvider.OMID_TSO_PORT, TestUtil.getRandomPort()) ; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/a0e98599/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java -- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java index f0a26b9..f3faa0c 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/util/TestUtil.java @@ -36,6 +36,7 @@ import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.math.BigDecimal; +import java.net.ServerSocket; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; @@ -1105,4 +1106,17 @@ public class TestUtil { } return filteredData; } + +/** + * Find a random free port in localhost for binding. + * @return A port number or -1 for failure. + */ +public static int getRandomPort() { +try (ServerSocket socket = new ServerSocket(0)) { +socket.setReuseAddress(true); +return socket.getLocalPort(); +} catch (IOException e) { +return -1; +} +} }
[27/28] phoenix git commit: PHOENIX-5026 Addendum; test-fix.
PHOENIX-5026 Addendum; test-fix. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/027d21e2 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/027d21e2 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/027d21e2 Branch: refs/heads/4.x-cdh5.15 Commit: 027d21e2a87aadaae030d9a06fc25ec8a59e4267 Parents: f6b7594 Author: Lars Hofhansl Authored: Thu Nov 22 21:11:19 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:22 2018 + -- .../java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java | 2 ++ 1 file changed, 2 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/027d21e2/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java index c56296c..6fad376 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java @@ -192,6 +192,8 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT { int upsertCount = stmt.executeUpdate(); assertEquals((int)Math.pow(2, i), upsertCount); } +// cleanup after ourselves +conn.createStatement().execute("DROP SEQUENCE keys"); admin.close(); conn.close(); }
[15/28] phoenix git commit: PHOENIX-5008: CQSI.init should not bubble up RetriableUpgradeException to client in case of an UpgradeRequiredException
PHOENIX-5008: CQSI.init should not bubble up RetriableUpgradeException to client in case of an UpgradeRequiredException Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f33f7d7c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f33f7d7c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f33f7d7c Branch: refs/heads/4.x-cdh5.15 Commit: f33f7d7c92ab75520b15fa158c7feccfb7041cae Parents: 7afa954 Author: Chinmay Kulkarni Authored: Sat Nov 10 03:22:57 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:48 2018 + -- .../SystemCatalogCreationOnConnectionIT.java| 97 +--- .../query/ConnectionQueryServicesImpl.java | 4 +- 2 files changed, 84 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/f33f7d7c/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java index a1685c44..eadd391 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java @@ -21,9 +21,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.apache.phoenix.query.BaseTest.generateUniqueName; import java.io.IOException; import java.sql.Connection; +import java.sql.DriverManager; import java.sql.SQLException; import java.util.Arrays; import java.util.HashMap; @@ -42,6 +44,7 @@ import org.apache.phoenix.coprocessor.MetaDataProtocol; import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.exception.UpgradeRequiredException; import org.apache.phoenix.jdbc.PhoenixConnection; +import org.apache.phoenix.jdbc.PhoenixDriver; import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver; import org.apache.phoenix.jdbc.PhoenixTestDriver; import org.apache.phoenix.query.ConnectionQueryServices; @@ -69,6 +72,12 @@ public class SystemCatalogCreationOnConnectionIT { private static final String PHOENIX_SYSTEM_CATALOG = "SYSTEM.CATALOG"; private static final String EXECUTE_UPGRADE_COMMAND = "EXECUTE UPGRADE"; private static final String MODIFIED_MAX_VERSIONS ="5"; +private static final String CREATE_TABLE_STMT = "CREATE TABLE %s" ++ " (k1 VARCHAR NOT NULL, k2 VARCHAR, CONSTRAINT PK PRIMARY KEY(K1,K2))"; +private static final String SELECT_STMT = "SELECT * FROM %s"; +private static final String DELETE_STMT = "DELETE FROM %s"; +private static final String CREATE_INDEX_STMT = "CREATE INDEX DUMMY_IDX ON %s (K1) INCLUDE (K2)"; +private static final String UPSERT_STMT = "UPSERT INTO %s VALUES ('A', 'B')"; private static final Set PHOENIX_SYSTEM_TABLES = new HashSet<>(Arrays.asList( "SYSTEM.CATALOG", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.FUNCTION", @@ -167,12 +176,8 @@ public class SystemCatalogCreationOnConnectionIT { UpgradeUtil.doNotUpgradeOnFirstConnection(propsDoNotUpgradePropSet); SystemCatalogCreationOnConnectionIT.PhoenixSysCatCreationTestingDriver driver = new SystemCatalogCreationOnConnectionIT.PhoenixSysCatCreationTestingDriver(ReadOnlyProps.EMPTY_PROPS); -try { -driver.getConnectionQueryServices(getJdbcUrl(), propsDoNotUpgradePropSet); -fail("Client should not be able to create SYSTEM.CATALOG since we set the doNotUpgrade property"); -} catch (Exception e) { -assertTrue(e instanceof UpgradeRequiredException); -} + +driver.getConnectionQueryServices(getJdbcUrl(), propsDoNotUpgradePropSet); hbaseTables = getHBaseTables(); assertFalse(hbaseTables.contains(PHOENIX_SYSTEM_CATALOG) || hbaseTables.contains(PHOENIX_NAMESPACE_MAPPED_SYSTEM_CATALOG)); assertTrue(hbaseTables.size() == 0); @@ -428,6 +433,70 @@ public class SystemCatalogCreationOnConnectionIT { assertEquals(Integer.parseInt(MODIFIED_MAX_VERSIONS), verifyModificationTableMetadata(driver, PHOENIX_SYSTEM_CATALOG)); } +// Test the case when an end-user uses the vanilla PhoenixDriver to create a connection and a +// requirement for upgrade is detected. In this case, the user should get a connection on which +// they are only able to run "EXECUTE UPGRADE" +@Test +public void testExecuteUpgradeSameConnWithPhoenixDriver() throws Exception { +// Register the
[26/28] phoenix git commit: PHOENIX-5026 Add client setting to disable server side mutations.
PHOENIX-5026 Add client setting to disable server side mutations. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f6b75942 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f6b75942 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f6b75942 Branch: refs/heads/4.x-cdh5.15 Commit: f6b75942701dbf90d7dc3d69be6265130e69ff94 Parents: bb17957 Author: Lars Hofhansl Authored: Thu Nov 22 03:53:14 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:18 2018 + -- .../org/apache/phoenix/end2end/DeleteIT.java| 62 --- .../end2end/UpsertSelectAutoCommitIT.java | 26 +++-- .../apache/phoenix/end2end/UpsertSelectIT.java | 103 +-- .../apache/phoenix/compile/DeleteCompiler.java | 6 +- .../apache/phoenix/compile/UpsertCompiler.java | 6 +- .../org/apache/phoenix/query/QueryServices.java | 3 + .../phoenix/query/QueryServicesOptions.java | 3 + 7 files changed, 159 insertions(+), 50 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/f6b75942/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java index 5e65927..39210fa 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DeleteIT.java @@ -40,12 +40,26 @@ import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.util.PropertiesUtil; import org.apache.phoenix.util.QueryUtil; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; - +@RunWith(Parameterized.class) public class DeleteIT extends ParallelStatsDisabledIT { private static final int NUMBER_OF_ROWS = 20; private static final int NTH_ROW_NULL = 5; - + +private final String allowServerSideMutations; + +public DeleteIT(String allowServerSideMutations) { +this.allowServerSideMutations = allowServerSideMutations; +} + +@Parameters(name="DeleteIT_allowServerSideMutations={0}") // name is used by failsafe as file name in reports +public static Object[] data() { +return new Object[] {"true", "false"}; +} + private static String initTableValues(Connection conn) throws SQLException { String tableName = generateUniqueName(); ensureTableCreated(getUrl(), tableName, "IntIntKeyTest"); @@ -75,7 +89,9 @@ public class DeleteIT extends ParallelStatsDisabledIT { } private void testDeleteFilter(boolean autoCommit) throws Exception { -Connection conn = DriverManager.getConnection(getUrl()); +Properties props = new Properties(); +props.setProperty(QueryServices.ENABLE_SERVER_SIDE_MUTATIONS, allowServerSideMutations); +Connection conn = DriverManager.getConnection(getUrl(), props); String tableName = initTableValues(conn); assertTableCount(conn, tableName, NUMBER_OF_ROWS); @@ -102,7 +118,9 @@ public class DeleteIT extends ParallelStatsDisabledIT { } private void testDeleteByFilterAndRow(boolean autoCommit) throws SQLException { -Connection conn = DriverManager.getConnection(getUrl()); +Properties props = new Properties(); +props.setProperty(QueryServices.ENABLE_SERVER_SIDE_MUTATIONS, allowServerSideMutations); +Connection conn = DriverManager.getConnection(getUrl(), props); String tableName = initTableValues(conn); assertTableCount(conn, tableName, NUMBER_OF_ROWS); @@ -167,7 +185,9 @@ public class DeleteIT extends ParallelStatsDisabledIT { } private void testDeleteRange(boolean autoCommit, boolean createIndex, boolean local) throws Exception { -Connection conn = DriverManager.getConnection(getUrl()); +Properties props = new Properties(); +props.setProperty(QueryServices.ENABLE_SERVER_SIDE_MUTATIONS, allowServerSideMutations); +Connection conn = DriverManager.getConnection(getUrl(), props); String tableName = initTableValues(conn); String indexName = generateUniqueName(); String localIndexName = generateUniqueName(); @@ -298,7 +318,9 @@ public class DeleteIT extends ParallelStatsDisabledIT { private void testDeleteAllFromTableWithIndex(boolean autoCommit, boolean isSalted, boolean localIndex) throws Exception { Connection con = null; try { -con = DriverManager.getConnection(getUrl()); +Properties props = new Properties(); +props.setProperty(QueryServices.ENABLE_SERVER_SID
[24/28] phoenix git commit: PHOENIX-5029 Increase parallelism of tests to decrease test time
PHOENIX-5029 Increase parallelism of tests to decrease test time Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/d2e4a737 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/d2e4a737 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/d2e4a737 Branch: refs/heads/4.x-cdh5.15 Commit: d2e4a737e87faa2b7148404e73ae047236bd2dbc Parents: 1a09ebf Author: James Taylor Authored: Sat Nov 17 23:18:39 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:13 2018 + -- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/d2e4a737/pom.xml -- diff --git a/pom.xml b/pom.xml index b6577ec..bcd8130 100644 --- a/pom.xml +++ b/pom.xml @@ -165,7 +165,7 @@ 8 -4 +7 false false
[09/28] phoenix git commit: PHOENIX-4996: Refactor PTableImpl to use Builder Pattern
PHOENIX-4996: Refactor PTableImpl to use Builder Pattern Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1767244a Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1767244a Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1767244a Branch: refs/heads/4.x-cdh5.15 Commit: 1767244a04e90b9d0c39b1f149342ee02e5c9a9d Parents: 7eb336d Author: Chinmay Kulkarni Authored: Fri Nov 2 21:00:09 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:22 2018 + -- .../apache/phoenix/compile/DeleteCompiler.java |5 +- .../apache/phoenix/compile/FromCompiler.java| 66 +- .../apache/phoenix/compile/JoinCompiler.java| 53 +- .../compile/TupleProjectionCompiler.java| 60 +- .../apache/phoenix/compile/UnionCompiler.java | 41 +- .../apache/phoenix/compile/UpsertCompiler.java | 12 +- .../coprocessor/MetaDataEndpointImpl.java | 96 +- .../UngroupedAggregateRegionObserver.java |6 +- .../coprocessor/WhereConstantParser.java|3 +- .../query/ConnectionlessQueryServicesImpl.java |9 +- .../apache/phoenix/schema/MetaDataClient.java | 215 ++- .../apache/phoenix/schema/PMetaDataImpl.java| 28 +- .../org/apache/phoenix/schema/PTableImpl.java | 1259 +++--- .../org/apache/phoenix/schema/TableRef.java | 17 +- .../phoenix/execute/CorrelatePlanTest.java | 32 +- .../execute/LiteralResultIteratorPlanTest.java | 33 +- 16 files changed, 1303 insertions(+), 632 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1767244a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java index 583085e..8c9a930 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/DeleteCompiler.java @@ -89,7 +89,6 @@ import org.apache.phoenix.schema.types.PLong; import org.apache.phoenix.transaction.PhoenixTransactionProvider.Feature; import org.apache.phoenix.util.ByteUtil; import org.apache.phoenix.util.IndexUtil; -import org.apache.phoenix.util.MetaDataUtil; import org.apache.phoenix.util.ScanUtil; import com.google.common.base.Preconditions; @@ -615,7 +614,9 @@ public class DeleteCompiler { } }); } -PTable projectedTable = PTableImpl.makePTable(table, PTableType.PROJECTED, adjustedProjectedColumns); +PTable projectedTable = PTableImpl.builderWithColumns(table, adjustedProjectedColumns) +.setType(PTableType.PROJECTED) +.build(); final TableRef projectedTableRef = new TableRef(projectedTable, targetTableRef.getLowerBoundTimeStamp(), targetTableRef.getTimeStamp()); QueryPlan bestPlanToBe = dataPlan; http://git-wip-us.apache.org/repos/asf/phoenix/blob/1767244a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java index efc66a9..2701af0 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java @@ -32,8 +32,6 @@ import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.coprocessor.MetaDataProtocol; import org.apache.phoenix.coprocessor.MetaDataProtocol.MetaDataMutationResult; import org.apache.phoenix.coprocessor.MetaDataProtocol.MutationCode; -import org.apache.phoenix.exception.SQLExceptionCode; -import org.apache.phoenix.exception.SQLExceptionInfo; import org.apache.phoenix.expression.Expression; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.parse.AliasedNode; @@ -82,6 +80,7 @@ import org.apache.phoenix.schema.PTableImpl; import org.apache.phoenix.schema.PTableKey; import org.apache.phoenix.schema.PTableType; import org.apache.phoenix.schema.ProjectedColumn; +import org.apache.phoenix.schema.RowKeySchema; import org.apache.phoenix.schema.SchemaNotFoundException; import org.apache.phoenix.schema.SortOrder; import org.apache.phoenix.schema.TableNotFoundException; @@ -284,7 +283,8 @@ public class FromCompiler { column.getTimestamp()); projectedColumns.add(projectedColumn); } -PTable t = PTableImpl.makePTable(table, projectedColumns); +PTable t = PTableImpl.builderW
[1/3] phoenix git commit: PHOENIX-4971 Drop index will execute successfully using Incorrect name of parent tables
Repository: phoenix Updated Branches: refs/heads/4.x-cdh5.15 505551251 -> f8836f7a2 PHOENIX-4971 Drop index will execute successfully using Incorrect name of parent tables Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/ce3c451f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/ce3c451f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/ce3c451f Branch: refs/heads/4.x-cdh5.15 Commit: ce3c451fc6e3dfd598b2de302901f5d1195bc3e3 Parents: 5055512 Author: Jaanai Authored: Sat Nov 24 17:22:49 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:20:58 2018 + -- .../java/org/apache/phoenix/end2end/ViewIT.java | 76 ++-- .../phoenix/end2end/index/DropMetadataIT.java | 23 +- .../phoenix/end2end/index/IndexMetadataIT.java | 5 +- .../coprocessor/MetaDataEndpointImpl.java | 2 +- .../phoenix/exception/SQLExceptionCode.java | 2 + .../apache/phoenix/schema/MetaDataClient.java | 16 + 6 files changed, 83 insertions(+), 41 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/ce3c451f/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java index 090ccaa..6318dca 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java @@ -59,6 +59,7 @@ import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.coprocessor.ObserverContext; @@ -908,60 +909,61 @@ public class ViewIT extends SplitSystemCatalogIT { props.setProperty(QueryServices.IS_NAMESPACE_MAPPING_ENABLED, Boolean.TRUE.toString()); try (Connection conn = DriverManager.getConnection(getUrl(), props); -HBaseAdmin admin = - conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) { +Admin admin = conn.unwrap(PhoenixConnection.class).getQueryServices().getAdmin()) { conn.createStatement().execute("CREATE SCHEMA " + NS); // test for a view that is in non-default schema -HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(NS, TBL)); -desc.addFamily(new HColumnDescriptor(CF)); -admin.createTable(desc); +{ +HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(NS, TBL)); +desc.addFamily(new HColumnDescriptor(CF)); +admin.createTable(desc); -String view1 = NS + "." + TBL; -conn.createStatement().execute( -"CREATE VIEW " + view1 + " (PK VARCHAR PRIMARY KEY, " + CF + ".COL VARCHAR)"); +String view1 = NS + "." + TBL; +conn.createStatement().execute( +"CREATE VIEW " + view1 + " (PK VARCHAR PRIMARY KEY, " + CF + ".COL VARCHAR)"); -assertTrue(QueryUtil -.getExplainPlan( +assertTrue(QueryUtil.getExplainPlan( conn.createStatement().executeQuery("explain select * from " + view1)) -.contains(NS + ":" + TBL)); +.contains(NS + ":" + TBL)); - +conn.createStatement().execute("DROP VIEW " + view1); +} + +// test for a view whose name contains a dot (e.g. "AAA.BBB") in default schema (for backward compatibility) +{ +HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(NS + "." + TBL)); +desc.addFamily(new HColumnDescriptor(CF)); +admin.createTable(desc); -// test for a view whose name contains a dot (e.g. "AAA.BBB") in default schema (for -// backward compatibility) -desc = new HTableDescriptor(TableName.valueOf(NS + "." + TBL)); -desc.addFamily(new HColumnDescriptor(CF)); -admin.createTable(desc); +String view2 = "\"" + NS + "." + TBL + "\""; +conn.createStatement().execute( +"CREATE VIEW " + view2 + " (PK VARCHAR PRIMARY KEY, " + CF + ".COL VARCHAR)"); -String view2 = "\"" + NS + "." + TBL + "\""; -conn.createStatement().execute( -"CREATE VIEW " + view
[3/3] phoenix git commit: PHOENIX-4765 Add client and server side config property to enable rollback of splittable System Catalog if required
PHOENIX-4765 Add client and server side config property to enable rollback of splittable System Catalog if required Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f8836f7a Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f8836f7a Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f8836f7a Branch: refs/heads/4.x-cdh5.15 Commit: f8836f7a2d12273a1bfdad96a79844d1d7db08e6 Parents: b7e6f2d Author: Thomas D'Silva Authored: Tue Nov 20 20:10:05 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:21:03 2018 + -- .../apache/phoenix/end2end/SystemCatalogIT.java | 40 - .../coprocessor/MetaDataEndpointImpl.java | 90 ++-- .../phoenix/coprocessor/MetaDataProtocol.java | 5 +- .../org/apache/phoenix/query/QueryServices.java | 17 .../phoenix/query/QueryServicesOptions.java | 2 + .../apache/phoenix/schema/MetaDataClient.java | 26 +- 6 files changed, 146 insertions(+), 34 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/f8836f7a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogIT.java index ae09bac..1203f3c 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogIT.java @@ -18,6 +18,7 @@ package org.apache.phoenix.end2end; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; import java.sql.Connection; import java.sql.DriverManager; @@ -31,10 +32,12 @@ import org.apache.hadoop.hbase.DoNotRetryIOException; import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.RegionLocator; +import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.query.BaseTest; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.ReadOnlyProps; +import org.apache.phoenix.util.SchemaUtil; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -44,11 +47,12 @@ import com.google.common.collect.Maps; @Category(NeedsOwnMiniClusterTest.class) public class SystemCatalogIT extends BaseTest { private HBaseTestingUtility testUtil = null; - + @BeforeClass public static void doSetup() throws Exception { Map serverProps = Maps.newHashMapWithExpectedSize(1); serverProps.put(QueryServices.SYSTEM_CATALOG_SPLITTABLE, "false"); + serverProps.put(QueryServices.ALLOW_SPLITTABLE_SYSTEM_CATALOG_ROLLBACK, "true"); Map clientProps = Collections.emptyMap(); setUpTestDriver(new ReadOnlyProps(serverProps.entrySet().iterator()), new ReadOnlyProps(clientProps.entrySet().iterator())); @@ -87,7 +91,8 @@ public class SystemCatalogIT extends BaseTest { Statement stmt = conn.createStatement();) { stmt.execute("DROP TABLE IF EXISTS " + tableName); stmt.execute("CREATE TABLE " + tableName -+ " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR CONSTRAINT PK PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT=true"); ++ " (TENANT_ID VARCHAR NOT NULL, PK1 VARCHAR NOT NULL, V1 VARCHAR CONSTRAINT PK " + +"PRIMARY KEY(TENANT_ID, PK1)) MULTI_TENANT=true"); try (Connection tenant1Conn = getTenantConnection("tenant1")) { String view1DDL = "CREATE VIEW " + tableName + "_view AS SELECT * FROM " + tableName; tenant1Conn.createStatement().execute(view1DDL); @@ -97,7 +102,7 @@ public class SystemCatalogIT extends BaseTest { } private String getJdbcUrl() { -return "jdbc:phoenix:localhost:" + testUtil.getZkCluster().getClientPort() + ":/hbase"; +return "jdbc:phoenix:localhost:" + getUtility().getZkCluster().getClientPort() + ":/hbase"; } private Connection getTenantConnection(String tenantId) throws SQLException { @@ -105,4 +110,31 @@ public class SystemCatalogIT extends BaseTest { tenantProps.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId); return DriverManager.getConnection(getJdbcUrl(), tenantProps); } -} + +/** + * Ensure that we cannot add a column to a base table if QueryServices.BLOCK_METADATA_CHANGES_REQUIRE_PROPAGATION + * is true + */ +@Test +public void testAddingColumnFails() throws Exception { +
[2/3] phoenix git commit: PHOENIX-5031 Fix TenantSpecificViewIndexIT test failures in HBase 1.2 branch
PHOENIX-5031 Fix TenantSpecificViewIndexIT test failures in HBase 1.2 branch Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b7e6f2dc Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b7e6f2dc Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b7e6f2dc Branch: refs/heads/4.x-cdh5.15 Commit: b7e6f2dcd034c34cabe7281bc9b60527b9c4df33 Parents: ce3c451 Author: Thomas D'Silva Authored: Mon Nov 26 22:48:10 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:21:01 2018 + -- .../org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java| 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b7e6f2dc/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java index ea8f004..a317693 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TenantSpecificViewIndexIT.java @@ -130,8 +130,8 @@ public class TenantSpecificViewIndexIT extends BaseTenantSpecificViewIndexIT { String sequenceNameA = getViewIndexSequenceName(PNameFactory.newName(tableName), PNameFactory.newName(tenantId2), isNamespaceEnabled); String sequenceNameB = getViewIndexSequenceName(PNameFactory.newName(tableName), PNameFactory.newName(tenantId1), isNamespaceEnabled); String sequenceSchemaName = getViewIndexSequenceSchemaName(PNameFactory.newName(tableName), isNamespaceEnabled); -verifySequenceValue(isNamespaceEnabled? tenantId2 : null, sequenceNameA, sequenceSchemaName, -32767); -verifySequenceValue(isNamespaceEnabled? tenantId1 : null, sequenceNameB, sequenceSchemaName, -32767); +verifySequenceValue(isNamespaceEnabled? tenantId2 : null, sequenceNameA, sequenceSchemaName, -9223372036854775807L); +verifySequenceValue(isNamespaceEnabled? tenantId1 : null, sequenceNameB, sequenceSchemaName, -9223372036854775807L); Properties props = new Properties(); props.setProperty(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId2);
[10/28] phoenix git commit: Revert "PHOENIX-4971 Drop index will execute successfully using Incorrect name of parent tables"
Revert "PHOENIX-4971 Drop index will execute successfully using Incorrect name of parent tables" This reverts commit 7b5482367eb010b5b2db285ff8bc4b345863c477. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1da0ad70 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1da0ad70 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1da0ad70 Branch: refs/heads/4.x-cdh5.15 Commit: 1da0ad70ee2d0c904d3d210c0f7584f03c102303 Parents: 1767244 Author: Thomas D'Silva Authored: Wed Nov 7 19:09:31 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:26 2018 + -- .../phoenix/end2end/index/DropMetadataIT.java | 24 +--- .../phoenix/exception/SQLExceptionCode.java | 2 -- .../apache/phoenix/schema/MetaDataClient.java | 15 3 files changed, 1 insertion(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1da0ad70/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java index a285526..b92ed8d 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java @@ -18,13 +18,9 @@ package org.apache.phoenix.end2end.index; import static org.apache.phoenix.util.TestUtil.HBASE_NATIVE_SCHEMA_NAME; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import java.sql.Connection; import java.sql.DriverManager; -import java.sql.SQLException; - import java.util.Properties; import org.apache.hadoop.hbase.HColumnDescriptor; @@ -33,7 +29,6 @@ import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.ParallelStatsDisabledIT; -import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.util.PropertiesUtil; @@ -61,24 +56,7 @@ public class DropMetadataIT extends ParallelStatsDisabledIT { String url = QueryUtil.getConnectionUrl(props, config, PRINCIPAL); return DriverManager.getConnection(url, props); } - -@Test -public void testDropIndexTableHasSameNameWithDataTable() { -String tableName = generateUniqueName(); -String indexName = "IDX_" + tableName; -try (Connection conn = DriverManager.getConnection(getUrl())) { -String createTable = "CREATE TABLE " + tableName + " (id varchar not null primary key, col integer)"; -conn.createStatement().execute(createTable); -String createIndex = "CREATE INDEX " + indexName + " on " + tableName + "(col)"; -conn.createStatement().execute(createIndex); -String dropIndex = "DROP INDEX " + indexName + " on " + indexName; -conn.createStatement().execute(dropIndex); -fail("should not execute successfully"); -} catch (SQLException e) { -assertTrue(SQLExceptionCode.PARENT_TABLE_NOT_FOUND.getErrorCode() == e.getErrorCode()); -} -} - + @Test public void testDropViewKeepsHTable() throws Exception { Connection conn = getConnection(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/1da0ad70/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java b/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java index 5bffed5..d557714 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java @@ -185,8 +185,6 @@ public enum SQLExceptionCode { INVALID_REPLAY_AT(533, "42910", "Value of REPLAY_AT cannot be less than zero."), UNEQUAL_SCN_AND_BUILD_INDEX_AT(534, "42911", "If both specified, values of CURRENT_SCN and BUILD_INDEX_AT must be equal."), ONLY_INDEX_UPDATABLE_AT_SCN(535, "42912", "Only an index may be updated when the BUILD_INDEX_AT property is specified"), - PARENT_TABLE_NOT_FOUND(536, "42913", "Can't drop the index because the parent table in the DROP statement is incorrect."), - /** * HBase and Phoenix specific implementation defined sub-classes. * Column family related exceptions. http://git-wip-us.apach
[03/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark
http://git-wip-us.apache.org/repos/asf/phoenix/blob/678563f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java index 578a3af..792d08f 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/OrderByIT.java @@ -17,17 +17,7 @@ */ package org.apache.phoenix.end2end; -import static org.apache.phoenix.util.TestUtil.ROW1; -import static org.apache.phoenix.util.TestUtil.ROW2; -import static org.apache.phoenix.util.TestUtil.ROW3; -import static org.apache.phoenix.util.TestUtil.ROW4; -import static org.apache.phoenix.util.TestUtil.ROW5; -import static org.apache.phoenix.util.TestUtil.ROW6; -import static org.apache.phoenix.util.TestUtil.ROW7; -import static org.apache.phoenix.util.TestUtil.ROW8; -import static org.apache.phoenix.util.TestUtil.ROW9; import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; -import static org.apache.phoenix.util.TestUtil.assertResultSet; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -40,83 +30,10 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; -import org.apache.phoenix.jdbc.PhoenixStatement; import org.apache.phoenix.util.PropertiesUtil; import org.junit.Test; - -public class OrderByIT extends ParallelStatsDisabledIT { - -@Test -public void testMultiOrderByExpr() throws Exception { -String tenantId = getOrganizationId(); -String tableName = initATableValues(tenantId, getDefaultSplits(tenantId), getUrl()); -String query = "SELECT entity_id FROM " + tableName + " ORDER BY b_string, entity_id"; -Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); -Connection conn = DriverManager.getConnection(getUrl(), props); -try { -PreparedStatement statement = conn.prepareStatement(query); -ResultSet rs = statement.executeQuery(); -assertTrue (rs.next()); -assertEquals(ROW1,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW4,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW7,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW2,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW5,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW8,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW3,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW6,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW9,rs.getString(1)); - -assertFalse(rs.next()); -} finally { -conn.close(); -} -} - - -@Test -public void testDescMultiOrderByExpr() throws Exception { -String tenantId = getOrganizationId(); -String tableName = initATableValues(tenantId, getDefaultSplits(tenantId), getUrl()); -String query = "SELECT entity_id FROM " + tableName + " ORDER BY b_string || entity_id desc"; -Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); -Connection conn = DriverManager.getConnection(getUrl(), props); -try { -PreparedStatement statement = conn.prepareStatement(query); -ResultSet rs = statement.executeQuery(); -assertTrue (rs.next()); -assertEquals(ROW9,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW6,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW3,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW8,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW5,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW2,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW7,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW4,rs.getString(1)); -assertTrue (rs.next()); -assertEquals(ROW1,rs.getString(1)); - -assertFalse(rs.next()); -} finally { -conn.close(); -} -} +public class OrderByIT extends BaseOrderByIT { @Test public void testOrderByWithPosition() throws Exception { @@ -151,8 +68,8 @@ public class OrderByIT extends ParallelStatsDisabledIT { assertTrue(rs.next()); assertEquals(1,rs.getInt(1)); assertTrue(rs.next()); -assertEquals(1,rs.getInt(1)); -assertFalse(rs.next()); +
[01/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark
Repository: phoenix Updated Branches: refs/heads/4.x-cdh5.15 7f13f87c5 -> 505551251 http://git-wip-us.apache.org/repos/asf/phoenix/blob/678563f5/phoenix-spark/src/main/java/org/apache/phoenix/spark/SparkResultSet.java -- diff --git a/phoenix-spark/src/main/java/org/apache/phoenix/spark/SparkResultSet.java b/phoenix-spark/src/main/java/org/apache/phoenix/spark/SparkResultSet.java new file mode 100644 index 000..0cb8009 --- /dev/null +++ b/phoenix-spark/src/main/java/org/apache/phoenix/spark/SparkResultSet.java @@ -0,0 +1,1056 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.spark; + +import org.apache.phoenix.exception.SQLExceptionCode; +import org.apache.phoenix.exception.SQLExceptionInfo; +import org.apache.phoenix.util.SQLCloseable; +import org.apache.spark.sql.Row; + +import java.io.InputStream; +import java.io.Reader; +import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.net.URL; +import java.sql.Array; +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Date; +import java.sql.NClob; +import java.sql.Ref; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.RowId; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLWarning; +import java.sql.SQLXML; +import java.sql.Statement; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; +import java.util.Map; + +/** + * Helper class to convert a List of Rows returned from a dataset to a sql ResultSet + */ +public class SparkResultSet implements ResultSet, SQLCloseable { + +private int index = -1; +private List dataSetRows; +private List columnNames; +private boolean wasNull = false; + +public SparkResultSet(List rows, String[] columnNames) { +this.dataSetRows = rows; +this.columnNames = Arrays.asList(columnNames); +} + +private Row getCurrentRow() { +return dataSetRows.get(index); +} + +@Override +public boolean absolute(int row) throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public void afterLast() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public void beforeFirst() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public void cancelRowUpdates() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public void clearWarnings() throws SQLException { +} + +@Override +public void close() throws SQLException { +} + +@Override +public void deleteRow() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public int findColumn(String columnLabel) throws SQLException { +return columnNames.indexOf(columnLabel.toUpperCase())+1; +} + +@Override +public boolean first() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public Array getArray(int columnIndex) throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public Array getArray(String columnLabel) throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public InputStream getAsciiStream(int columnIndex) throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public InputStream getAsciiStream(String columnLabel) throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +private void checkOpen() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +private void checkCursorState() throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Override +public BigDecimal getBigDecimal(int columnIndex) throws SQLException { +throw new SQLFeatureNotSupportedException(); +} + +@Overri
[05/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark
http://git-wip-us.apache.org/repos/asf/phoenix/blob/678563f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseAggregateIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseAggregateIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseAggregateIT.java new file mode 100644 index 000..5b466df --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseAggregateIT.java @@ -0,0 +1,1022 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end; + +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.apache.phoenix.util.TestUtil.assertResultSet; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.List; +import java.util.Properties; + +import com.google.common.collect.Lists; +import org.apache.hadoop.hbase.util.Bytes; +import org.apache.phoenix.compile.QueryPlan; +import org.apache.phoenix.jdbc.PhoenixConnection; +import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; +import org.apache.phoenix.jdbc.PhoenixStatement; +import org.apache.phoenix.query.KeyRange; +import org.apache.phoenix.query.QueryServices; +import org.apache.phoenix.schema.AmbiguousColumnException; +import org.apache.phoenix.schema.types.PChar; +import org.apache.phoenix.schema.types.PInteger; +import org.apache.phoenix.util.ByteUtil; +import org.apache.phoenix.util.PropertiesUtil; +import org.apache.phoenix.util.QueryBuilder; +import org.apache.phoenix.util.QueryUtil; +import org.apache.phoenix.util.TestUtil; +import org.junit.Test; + + +public abstract class BaseAggregateIT extends ParallelStatsDisabledIT { + +private static void initData(Connection conn, String tableName) throws SQLException { +conn.createStatement().execute("create table " + tableName + +" (id varchar not null primary key,\n" + +"uri varchar, appcpu integer)"); +insertRow(conn, tableName, "Report1", 10, 1); +insertRow(conn, tableName, "Report2", 10, 2); +insertRow(conn, tableName, "Report3", 30, 3); +insertRow(conn, tableName, "Report4", 30, 4); +insertRow(conn, tableName, "SOQL1", 10, 5); +insertRow(conn, tableName, "SOQL2", 10, 6); +insertRow(conn, tableName, "SOQL3", 30, 7); +insertRow(conn, tableName, "SOQL4", 30, 8); +conn.commit(); +} + +private static void insertRow(Connection conn, String tableName, String uri, int appcpu, int id) throws SQLException { +PreparedStatement statement = conn.prepareStatement("UPSERT INTO " + tableName + "(id, uri, appcpu) values (?,?,?)"); +statement.setString(1, "id" + id); +statement.setString(2, uri); +statement.setInt(3, appcpu); +statement.executeUpdate(); +} + +@Test +public void testDuplicateTrailingAggExpr() throws Exception { +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +props.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.FALSE.toString()); +Connection conn = DriverManager.getConnection(getUrl(), props); +String tableName = generateUniqueName(); + +conn.createStatement().execute("create table " + tableName + +" (nam VARCHAR(20), address VARCHAR(20), id BIGINT " ++ "constraint my_pk primary key (id))"); +PreparedStatement statement = conn.prepareStatement("UPSERT INTO " + tableName + "(nam, address, id) values (?,?,?)"); +statement.setString(1, "pulkit"); +statement.setString(2, "badaun"); +statement.setInt(3, 1); +statement.executeUpdate(); +conn.commit(); + +QueryBuilder queryBuilder = new QueryBuilder() +.setDistinct(true) +.setSelectExpression("'harshit' as TEST_CO
[06/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark
PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/678563f5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/678563f5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/678563f5 Branch: refs/heads/4.x-cdh5.15 Commit: 678563f5dc1fbaa37ef890ab135fb301dcf20ad6 Parents: 7f13f87 Author: Thomas D'Silva Authored: Fri Oct 19 06:00:01 2018 +0100 Committer: pboado Committed: Mon Nov 26 10:52:48 2018 + -- .../org/apache/phoenix/end2end/AggregateIT.java | 987 +--- .../apache/phoenix/end2end/BaseAggregateIT.java | 1022 + .../apache/phoenix/end2end/BaseOrderByIT.java | 940 .../org/apache/phoenix/end2end/OrderByIT.java | 943 ++-- .../end2end/ParallelStatsDisabledIT.java| 40 + .../end2end/salted/BaseSaltedTableIT.java | 474 .../phoenix/end2end/salted/SaltedTableIT.java | 450 +--- .../org/apache/phoenix/util/QueryBuilder.java | 211 .../java/org/apache/phoenix/util/QueryUtil.java | 38 +- .../index/IndexScrutinyTableOutputTest.java |6 +- .../util/PhoenixConfigurationUtilTest.java |6 +- .../org/apache/phoenix/util/QueryUtilTest.java | 10 +- phoenix-spark/pom.xml |8 + .../org/apache/phoenix/spark/AggregateIT.java | 91 ++ .../org/apache/phoenix/spark/OrderByIT.java | 460 .../org/apache/phoenix/spark/SaltedTableIT.java | 53 + .../org/apache/phoenix/spark/SparkUtil.java | 87 ++ .../apache/phoenix/spark/PhoenixSparkIT.scala |9 +- .../apache/phoenix/spark/SparkResultSet.java| 1056 ++ .../org/apache/phoenix/spark/PhoenixRDD.scala | 27 +- 20 files changed, 4649 insertions(+), 2269 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/678563f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateIT.java index 2059311..8916d4d 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AggregateIT.java @@ -18,506 +18,28 @@ package org.apache.phoenix.end2end; import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.apache.phoenix.util.TestUtil.assertResultSet; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.apache.phoenix.util.TestUtil.assertResultSet; -import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.sql.Statement; -import java.util.List; import java.util.Properties; -import org.apache.hadoop.hbase.util.Bytes; -import org.apache.phoenix.compile.QueryPlan; -import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; -import org.apache.phoenix.jdbc.PhoenixStatement; -import org.apache.phoenix.query.KeyRange; import org.apache.phoenix.schema.AmbiguousColumnException; -import org.apache.phoenix.schema.types.PChar; -import org.apache.phoenix.schema.types.PInteger; -import org.apache.phoenix.util.ByteUtil; import org.apache.phoenix.util.PropertiesUtil; -import org.apache.phoenix.util.QueryUtil; +import org.apache.phoenix.util.QueryBuilder; import org.apache.phoenix.util.TestUtil; import org.junit.Test; +public class AggregateIT extends BaseAggregateIT { -public class AggregateIT extends ParallelStatsDisabledIT { -private static void initData(Connection conn, String tableName) throws SQLException { -conn.createStatement().execute("create table " + tableName + -" (id varchar not null primary key,\n" + -"uri varchar, appcpu integer)"); -insertRow(conn, tableName, "Report1", 10, 1); -insertRow(conn, tableName, "Report2", 10, 2); -insertRow(conn, tableName, "Report3", 30, 3); -insertRow(conn, tableName, "Report4", 30, 4); -insertRow(conn, tableName, "SOQL1", 10, 5); -insertRow(conn, tableName, "SOQL2", 10, 6); -insertRow(conn, tableName, "SOQL3", 30, 7); -insertRow(conn, tableName, "SOQL4", 30, 8); -conn.commit(); -} - -private static void insertRow(Connection
[21/28] phoenix git commit: PHOENIX-4955 - PhoenixIndexImportDirectMapper undercounts failed records
PHOENIX-4955 - PhoenixIndexImportDirectMapper undercounts failed records Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/dd81989f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/dd81989f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/dd81989f Branch: refs/heads/4.x-cdh5.15 Commit: dd81989fab80cb283678218ada0c0359930731c8 Parents: 590f88b Author: Geoffrey Jacoby Authored: Fri Nov 16 21:57:45 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:05 2018 + -- .../mapreduce/index/PhoenixIndexImportDirectMapper.java | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/dd81989f/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectMapper.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectMapper.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectMapper.java index eb4bc0e..e2ac491 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectMapper.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectMapper.java @@ -68,6 +68,8 @@ public class PhoenixIndexImportDirectMapper extends private long batchSizeBytes; private MutationState mutationState; +private int currentBatchCount = 0; + @Override protected void setup(final Context context) throws IOException, InterruptedException { @@ -113,6 +115,7 @@ public class PhoenixIndexImportDirectMapper extends throws IOException, InterruptedException { try { +currentBatchCount++; final List values = record.getValues(); indxWritable.setValues(values); indxWritable.write(this.pStatement); @@ -125,9 +128,8 @@ public class PhoenixIndexImportDirectMapper extends } // Keep accumulating Mutations till batch size mutationState.join(currentMutationState); - // Write Mutation Batch -if (context.getCounter(PhoenixJobCounters.INPUT_RECORDS).getValue() % batchSize == 0) { +if (currentBatchCount % batchSize == 0) { writeBatch(mutationState, context); mutationState = null; } @@ -136,7 +138,7 @@ public class PhoenixIndexImportDirectMapper extends context.progress(); } catch (SQLException e) { LOG.error(" Error {} while read/write of a record ", e.getMessage()); -context.getCounter(PhoenixJobCounters.FAILED_RECORDS).increment(1); + context.getCounter(PhoenixJobCounters.FAILED_RECORDS).increment(currentBatchCount); throw new RuntimeException(e); } context.getCounter(PhoenixJobCounters.INPUT_RECORDS).increment(1); @@ -157,6 +159,7 @@ public class PhoenixIndexImportDirectMapper extends mutationPair.getSecond().size()); } connection.rollback(); +currentBatchCount = 0; } @Override @@ -173,7 +176,7 @@ public class PhoenixIndexImportDirectMapper extends super.cleanup(context); } catch (SQLException e) { LOG.error(" Error {} while read/write of a record ", e.getMessage()); -context.getCounter(PhoenixJobCounters.FAILED_RECORDS).increment(1); + context.getCounter(PhoenixJobCounters.FAILED_RECORDS).increment(currentBatchCount); throw new RuntimeException(e); } finally { if (connection != null) {
[13/28] phoenix git commit: PHOENIX-5010 Don't build client guidepost cache when phoenix.stats.collection.enabled is disabled
PHOENIX-5010 Don't build client guidepost cache when phoenix.stats.collection.enabled is disabled Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/21c3a7c2 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/21c3a7c2 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/21c3a7c2 Branch: refs/heads/4.x-cdh5.15 Commit: 21c3a7c2e9cd4d4f59623dd987c6602304ac9335 Parents: a0e9859 Author: Ankit Singhal Authored: Tue Nov 13 19:36:26 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:41 2018 + -- .../org/apache/phoenix/query/GuidePostsCache.java | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/21c3a7c2/phoenix-core/src/main/java/org/apache/phoenix/query/GuidePostsCache.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/GuidePostsCache.java b/phoenix-core/src/main/java/org/apache/phoenix/query/GuidePostsCache.java index d27be1b..1d9fa36 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/GuidePostsCache.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/GuidePostsCache.java @@ -16,6 +16,10 @@ */ package org.apache.phoenix.query; +import static org.apache.phoenix.query.QueryServices.STATS_COLLECTION_ENABLED; +import static org.apache.phoenix.query.QueryServices.STATS_ENABLED_ATTRIB; +import static org.apache.phoenix.query.QueryServicesOptions.DEFAULT_STATS_COLLECTION_ENABLED; + import java.io.IOException; import java.util.List; import java.util.Objects; @@ -66,6 +70,8 @@ public class GuidePostsCache { final long maxTableStatsCacheSize = config.getLong( QueryServices.STATS_MAX_CACHE_SIZE, QueryServicesOptions.DEFAULT_STATS_MAX_CACHE_SIZE); + final boolean isStatsEnabled = config.getBoolean(STATS_COLLECTION_ENABLED, DEFAULT_STATS_COLLECTION_ENABLED) + && config.getBoolean(STATS_ENABLED_ATTRIB, true); cache = CacheBuilder.newBuilder() // Expire entries a given amount of time after they were written .expireAfterWrite(statsUpdateFrequency, TimeUnit.MILLISECONDS) @@ -80,7 +86,7 @@ public class GuidePostsCache { // Log removals at TRACE for debugging .removalListener(new PhoenixStatsCacheRemovalListener()) // Automatically load the cache when entries are missing -.build(new StatsLoader()); +.build(isStatsEnabled ? new StatsLoader() : new EmptyStatsLoader()); } /** @@ -129,6 +135,16 @@ public class GuidePostsCache { } /** + * Empty stats loader if stats are disabled + */ + protected class EmptyStatsLoader extends CacheLoader { + @Override + public GuidePostsInfo load(GuidePostsKey statsKey) throws Exception { + return GuidePostsInfo.NO_GUIDEPOST; + } + } + +/** * Returns the underlying cache. Try to use the provided methods instead of accessing the cache * directly. */
[11/28] phoenix git commit: PHOENIX-5012 Don't derive IndexToolIT from ParallelStatsEnabled
PHOENIX-5012 Don't derive IndexToolIT from ParallelStatsEnabled Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b296ddc1 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b296ddc1 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b296ddc1 Branch: refs/heads/4.x-cdh5.15 Commit: b296ddc19a1533e105e01597a3b761a37922d261 Parents: 1da0ad7 Author: James Taylor Authored: Sat Nov 10 19:04:48 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:11:36 2018 + -- .../src/it/java/org/apache/phoenix/end2end/IndexToolIT.java | 8 +--- 1 file changed, 5 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b296ddc1/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java index c99f145..e096bb5 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexToolIT.java @@ -58,7 +58,6 @@ import org.apache.phoenix.util.SchemaUtil; import org.apache.phoenix.util.TestUtil; import org.junit.BeforeClass; import org.junit.Test; -import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; @@ -67,8 +66,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; @RunWith(Parameterized.class) -@Category(NeedsOwnMiniClusterTest.class) -public class IndexToolIT extends ParallelStatsEnabledIT { +public class IndexToolIT extends BaseUniqueNamesOwnClusterIT { private final boolean localIndex; private final boolean transactional; @@ -99,9 +97,13 @@ public class IndexToolIT extends ParallelStatsEnabledIT { @BeforeClass public static void setup() throws Exception { Map serverProps = Maps.newHashMapWithExpectedSize(2); +serverProps.put(QueryServices.STATS_GUIDEPOST_WIDTH_BYTES_ATTRIB, Long.toString(20)); + serverProps.put(QueryServices.MAX_SERVER_METADATA_CACHE_TIME_TO_LIVE_MS_ATTRIB, Long.toString(5)); serverProps.put(QueryServices.EXTRA_JDBC_ARGUMENTS_ATTRIB, QueryServicesOptions.DEFAULT_EXTRA_JDBC_ARGUMENTS); Map clientProps = Maps.newHashMapWithExpectedSize(2); +clientProps.put(QueryServices.USE_STATS_FOR_PARALLELIZATION, Boolean.toString(true)); +clientProps.put(QueryServices.STATS_UPDATE_FREQ_MS_ATTRIB, Long.toString(5)); clientProps.put(QueryServices.TRANSACTIONS_ENABLED, Boolean.TRUE.toString()); clientProps.put(QueryServices.FORCE_ROW_KEY_ORDER_ATTRIB, Boolean.TRUE.toString()); setUpTestDriver(new ReadOnlyProps(serverProps.entrySet().iterator()),
[04/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark
http://git-wip-us.apache.org/repos/asf/phoenix/blob/678563f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOrderByIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOrderByIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOrderByIT.java new file mode 100644 index 000..31bf050 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BaseOrderByIT.java @@ -0,0 +1,940 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end; + +import static org.apache.phoenix.util.TestUtil.ROW1; +import static org.apache.phoenix.util.TestUtil.ROW2; +import static org.apache.phoenix.util.TestUtil.ROW3; +import static org.apache.phoenix.util.TestUtil.ROW4; +import static org.apache.phoenix.util.TestUtil.ROW5; +import static org.apache.phoenix.util.TestUtil.ROW6; +import static org.apache.phoenix.util.TestUtil.ROW7; +import static org.apache.phoenix.util.TestUtil.ROW8; +import static org.apache.phoenix.util.TestUtil.ROW9; +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.apache.phoenix.util.TestUtil.assertResultSet; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Properties; + +import com.google.common.collect.Lists; +import org.apache.phoenix.util.PropertiesUtil; +import org.apache.phoenix.util.QueryBuilder; +import org.junit.Test; + + +public abstract class BaseOrderByIT extends ParallelStatsDisabledIT { + +@Test +public void testMultiOrderByExpr() throws Exception { +String tenantId = getOrganizationId(); +String tableName = initATableValues(tenantId, getDefaultSplits(tenantId), getUrl()); +QueryBuilder queryBuilder = new QueryBuilder() +.setSelectColumns( +Lists.newArrayList("ENTITY_ID", "B_STRING")) +.setFullTableName(tableName) +.setOrderByClause("B_STRING, ENTITY_ID"); +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +try (Connection conn = DriverManager.getConnection(getUrl(), props)) { +ResultSet rs = executeQuery(conn, queryBuilder); +assertTrue (rs.next()); +assertEquals(ROW1,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW4,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW7,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW2,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW5,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW8,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW3,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW6,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW9,rs.getString(1)); + +assertFalse(rs.next()); +} +} + + +@Test +public void testDescMultiOrderByExpr() throws Exception { +String tenantId = getOrganizationId(); +String tableName = initATableValues(tenantId, getDefaultSplits(tenantId), getUrl()); +QueryBuilder queryBuilder = new QueryBuilder() +.setSelectColumns( +Lists.newArrayList("ENTITY_ID", "B_STRING")) +.setFullTableName(tableName) +.setOrderByClause("B_STRING || ENTITY_ID DESC"); +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +try (Connection conn = DriverManager.getConnection(getUrl(), props)) { +ResultSet rs = executeQuery(conn, queryBuilder); +assertTrue (rs.next()); +assertEquals(ROW9,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW6,rs.getString(1)); +assertTrue (rs.next()); +assertEquals(ROW3,rs.getString(1)); +assertTrue
[07/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark ( changes for spark 1.6 - CDH 5.15 )
PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark ( changes for spark 1.6 - CDH 5.15 ) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7eb336de Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7eb336de Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7eb336de Branch: refs/heads/4.x-cdh5.15 Commit: 7eb336de12a350608c9e24f2c6d70eb35d2a0d52 Parents: 678563f Author: Pedro Boado Authored: Mon Nov 26 12:50:00 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:10:31 2018 + -- .gitignore | 3 + .../org/apache/phoenix/spark/AggregateIT.java | 23 .../org/apache/phoenix/spark/OrderByIT.java | 61 .../org/apache/phoenix/spark/SparkUtil.java | 32 ++ .../apache/phoenix/spark/PhoenixSparkIT.scala | 2 +- 5 files changed, 87 insertions(+), 34 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb336de/.gitignore -- diff --git a/.gitignore b/.gitignore index 2f47957..485e5b0 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ RESULTS/ CSV_EXPORT/ .DS_Store +# jenv stuff +.java-version + http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb336de/phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java -- diff --git a/phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java b/phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java index e4b96a3..72197c3 100644 --- a/phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java +++ b/phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java @@ -28,9 +28,32 @@ import java.sql.SQLException; import org.apache.phoenix.end2end.BaseAggregateIT; import org.apache.phoenix.util.QueryBuilder; +import org.junit.Ignore; +import org.junit.Test; public class AggregateIT extends BaseAggregateIT { +@Ignore("Not passing on CDH 4.15") +@Test +@Override +public void testExpressionInGroupBy() throws Exception { +super.testExpressionInGroupBy(); +} + +@Ignore("Not passing on CDH 4.15") +@Test +@Override +public void testGroupByCase() throws Exception { +super.testGroupByCase(); +} + +@Ignore("Not passing on CDH 4.15") +@Test +@Override +public void testGroupByDescColumnWithNullsLastBug3452() throws Exception { +super.testGroupByDescColumnWithNullsLastBug3452(); +} + @Override protected ResultSet executeQueryThrowsException(Connection conn, QueryBuilder queryBuilder, String expectedPhoenixExceptionMsg, String expectedSparkExceptionMsg) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/7eb336de/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java -- diff --git a/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java b/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java index bdffaf5..83578ba 100644 --- a/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java +++ b/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java @@ -18,7 +18,7 @@ import java.util.Properties; import org.apache.phoenix.end2end.BaseOrderByIT; import org.apache.phoenix.util.PropertiesUtil; import org.apache.phoenix.util.QueryBuilder; -import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.Row; import org.apache.spark.sql.SQLContext; import org.junit.Ignore; @@ -31,6 +31,28 @@ import scala.collection.JavaConverters; public class OrderByIT extends BaseOrderByIT { +@Ignore(" || operator not supported in order by Spark 1.6 ") +@Test +@Override +public void testDescMultiOrderByExpr() throws Exception { +super.testDescMultiOrderByExpr(); +} + +@Ignore("NULLS FIRST|LAST not supported in Spark 1.6") +@Test +@Override +public void testNullsLastWithDesc() throws Exception { +super.testNullsLastWithDesc(); +} + +@Ignore("NULLS FIRST|LAST not supported in Spark 1.6") +@Test +@Override +public void testOrderByReverseOptimizationWithNullsLast() throws Exception { +super.testOrderByReverseOptimizationWithNullsLast(); +} + + @Override protected ResultSet executeQueryThrowsException(Connection conn, QueryBuilder queryBuilder, String expectedPhoenixExceptionMsg, String expectedSparkExceptionMsg) { @@ -107,18 +129,16 @@ public class OrderByIT extends BaseOrderByIT { // create two PhoenixRDDs using the
[02/28] phoenix git commit: PHOENIX-4981 Add tests for ORDER BY, GROUP BY and salted tables using phoenix-spark
http://git-wip-us.apache.org/repos/asf/phoenix/blob/678563f5/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableIT.java index c9168f1..69c9869 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/salted/SaltedTableIT.java @@ -37,104 +37,18 @@ import org.apache.phoenix.util.QueryUtil; import org.apache.phoenix.util.SchemaUtil; import org.junit.Test; - /** * Tests for table with transparent salting. */ -public class SaltedTableIT extends ParallelStatsDisabledIT { - - private static String getUniqueTableName() { - return SchemaUtil.getTableName(generateUniqueName(), generateUniqueName()); - } - -private static String initTableValues(byte[][] splits) throws Exception { - String tableName = getUniqueTableName(); -Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); -Connection conn = DriverManager.getConnection(getUrl(), props); - -// Rows we inserted: -// 1ab123abc111 -// 1abc456abc111 -// 1de123abc111 -// 2abc123def222 -// 3abc123ghi333 -// 4abc123jkl444 -try { -// Upsert with no column specifies. -ensureTableCreated(getUrl(), tableName, TABLE_WITH_SALTING, splits, null, null); -String query = "UPSERT INTO " + tableName + " VALUES(?,?,?,?,?)"; -PreparedStatement stmt = conn.prepareStatement(query); -stmt.setInt(1, 1); -stmt.setString(2, "ab"); -stmt.setString(3, "123"); -stmt.setString(4, "abc"); -stmt.setInt(5, 111); -stmt.execute(); -conn.commit(); - -stmt.setInt(1, 1); -stmt.setString(2, "abc"); -stmt.setString(3, "456"); -stmt.setString(4, "abc"); -stmt.setInt(5, 111); -stmt.execute(); -conn.commit(); - -// Test upsert when statement explicitly specifies the columns to upsert into. -query = "UPSERT INTO " + tableName + -" (a_integer, a_string, a_id, b_string, b_integer) " + -" VALUES(?,?,?,?,?)"; -stmt = conn.prepareStatement(query); - -stmt.setInt(1, 1); -stmt.setString(2, "de"); -stmt.setString(3, "123"); -stmt.setString(4, "abc"); -stmt.setInt(5, 111); -stmt.execute(); -conn.commit(); - -stmt.setInt(1, 2); -stmt.setString(2, "abc"); -stmt.setString(3, "123"); -stmt.setString(4, "def"); -stmt.setInt(5, 222); -stmt.execute(); -conn.commit(); - -// Test upsert when order of column is shuffled. -query = "UPSERT INTO " + tableName + -" (a_string, a_integer, a_id, b_string, b_integer) " + -" VALUES(?,?,?,?,?)"; -stmt = conn.prepareStatement(query); -stmt.setString(1, "abc"); -stmt.setInt(2, 3); -stmt.setString(3, "123"); -stmt.setString(4, "ghi"); -stmt.setInt(5, 333); -stmt.execute(); -conn.commit(); - -stmt.setString(1, "abc"); -stmt.setInt(2, 4); -stmt.setString(3, "123"); -stmt.setString(4, "jkl"); -stmt.setInt(5, 444); -stmt.execute(); -conn.commit(); -} finally { -conn.close(); -} -return tableName; -} +public class SaltedTableIT extends BaseSaltedTableIT { @Test public void testTableWithInvalidBucketNumber() throws Exception { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(getUrl(), props); try { -String query = "create table " + getUniqueTableName() + " (a_integer integer not null CONSTRAINT pk PRIMARY KEY (a_integer)) SALT_BUCKETS = 257"; +String query = "create table " + generateUniqueName() + " (a_integer integer not null CONSTRAINT pk PRIMARY KEY (a_integer)) SALT_BUCKETS = 257"; PreparedStatement stmt = conn.prepareStatement(query); stmt.execute(); fail("Should have caught exception"); @@ -148,370 +62,12 @@ public class SaltedTableIT extends ParallelStatsDisabledIT { @Test public void testTableWithSplit() throws Exception { try { -createTestTable(getUrl(), "create table " + getUniqueTab
[08/28] phoenix git commit: PHOENIX-4996: Refactor PTableImpl to use Builder Pattern
http://git-wip-us.apache.org/repos/asf/phoenix/blob/1767244a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java index 9f06e04..7939b97 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java @@ -36,6 +36,7 @@ import java.util.Map.Entry; import javax.annotation.Nonnull; +import com.google.common.annotations.VisibleForTesting; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.client.Delete; @@ -69,7 +70,6 @@ import org.apache.phoenix.schema.types.PChar; import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.schema.types.PDouble; import org.apache.phoenix.schema.types.PFloat; -import org.apache.phoenix.schema.types.PLong; import org.apache.phoenix.schema.types.PVarchar; import org.apache.phoenix.transaction.TransactionFactory; import org.apache.phoenix.util.ByteUtil; @@ -102,164 +102,661 @@ import com.google.common.collect.Maps; public class PTableImpl implements PTable { private static final Integer NO_SALTING = -1; -private PTableKey key; -private PName name; -private PName schemaName = PName.EMPTY_NAME; -private PName tableName = PName.EMPTY_NAME; -private PName tenantId; -private PTableType type; -private PIndexState state; -private long sequenceNumber; -private long timeStamp; -private long indexDisableTimestamp; +private IndexMaintainer indexMaintainer; +private ImmutableBytesWritable indexMaintainersPtr; + +private final PTableKey key; +private final PName name; +private final PName schemaName; +private final PName tableName; +private final PName tenantId; +private final PTableType type; +private final PIndexState state; +private final long sequenceNumber; +private final long timeStamp; +private final long indexDisableTimestamp; // Have MultiMap for String->PColumn (may need family qualifier) -private List pkColumns; -private List allColumns; +private final List pkColumns; +private final List allColumns; // columns that were inherited from a parent table but that were dropped in the view -private List excludedColumns; -private List families; -private Map familyByBytes; -private Map familyByString; -private ListMultimap columnsByName; -private Map kvColumnsByQualifiers; -private PName pkName; -private Integer bucketNum; -private RowKeySchema rowKeySchema; +private final List excludedColumns; +private final List families; +private final Map familyByBytes; +private final Map familyByString; +private final ListMultimap columnsByName; +private final Map kvColumnsByQualifiers; +private final PName pkName; +private final Integer bucketNum; +private final RowKeySchema rowKeySchema; // Indexes associated with this table. -private List indexes; +private final List indexes; // Data table name that the index is created on. -private PName parentName; -private PName parentSchemaName; -private PName parentTableName; -private List physicalNames; -private boolean isImmutableRows; -private IndexMaintainer indexMaintainer; -private ImmutableBytesWritable indexMaintainersPtr; -private PName defaultFamilyName; -private String viewStatement; -private boolean disableWAL; -private boolean multiTenant; -private boolean storeNulls; -private TransactionFactory.Provider transactionProvider; -private ViewType viewType; -private PDataType viewIndexType; -private Long viewIndexId; -private int estimatedSize; -private IndexType indexType; -private int baseColumnCount; -private boolean rowKeyOrderOptimizable; // TODO: remove when required that tables have been upgrade for PHOENIX-2067 -private boolean hasColumnsRequiringUpgrade; // TODO: remove when required that tables have been upgrade for PHOENIX-2067 -private int rowTimestampColPos; -private long updateCacheFrequency; -private boolean isNamespaceMapped; -private String autoPartitionSeqName; -private boolean isAppendOnlySchema; -private ImmutableStorageScheme immutableStorageScheme; -private QualifierEncodingScheme qualifierEncodingScheme; -private EncodedCQCounter encodedCQCounter; -private Boolean useStatsForParallelization; - -public PTableImpl() { -this.indexes = Collections.emptyList(); -this.physicalNames = Collections.emptyList(); -this.rowKeySchema = RowKeySchema.EMPTY_SCHEMA; -} - -// Constructor used at table creation time -public PTableImpl(PName tenantId, String sch
[22/28] phoenix git commit: PHOENIX-5005 Server-side delete / upsert-select potentially blocked after a split
PHOENIX-5005 Server-side delete / upsert-select potentially blocked after a split Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b20b21d1 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b20b21d1 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b20b21d1 Branch: refs/heads/4.x-cdh5.15 Commit: b20b21d101bf95e42c21350b778ebd5352be37f8 Parents: dd81989 Author: Vincent Poon Authored: Thu Nov 8 23:38:20 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:08 2018 + -- .../UngroupedAggregateRegionObserver.java | 43 1 file changed, 26 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b20b21d1/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java index 73386a2..26e338f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java @@ -262,7 +262,7 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver // flush happen which decrease the memstore size and then writes allowed on the region. for (int i = 0; blockingMemstoreSize > 0 && region.getMemstoreSize() > blockingMemstoreSize && i < 30; i++) { try { - checkForRegionClosing(); + checkForRegionClosingOrSplitting(); Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); @@ -311,7 +311,7 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver * a high chance that flush might not proceed and memstore won't be freed up. * @throws IOException */ -private void checkForRegionClosing() throws IOException { +private void checkForRegionClosingOrSplitting() throws IOException { synchronized (lock) { if(isRegionClosingOrSplitting) { lock.notifyAll(); @@ -1333,13 +1333,31 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver @Override public void preSplit(ObserverContext c, byte[] splitRow) throws IOException { -// Don't allow splitting if operations need read and write to same region are going on in the -// the coprocessors to avoid dead lock scenario. See PHOENIX-3111. +waitForScansToFinish(c); +} + +// Don't allow splitting/closing if operations need read and write to same region are going on in the +// the coprocessors to avoid dead lock scenario. See PHOENIX-3111. +private void waitForScansToFinish(ObserverContext c) throws IOException { +int maxWaitTime = c.getEnvironment().getConfiguration().getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT, +HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT); +long start = EnvironmentEdgeManager.currentTimeMillis(); synchronized (lock) { isRegionClosingOrSplitting = true; -if (scansReferenceCount > 0) { -throw new IOException("Operations like local index building/delete/upsert select" -+ " might be going on so not allowing to split."); +while (scansReferenceCount > 0) { +try { +lock.wait(1000); +if (EnvironmentEdgeManager.currentTimeMillis() - start >= maxWaitTime) { +isRegionClosingOrSplitting = false; // must reset in case split is not retried +throw new IOException(String.format( +"Operations like local index building/delete/upsert select" ++ " might be going on so not allowing to split/close. scansReferenceCount=%s region=%s", +scansReferenceCount, + c.getEnvironment().getRegionInfo().getRegionNameAsString())); +} +} catch (InterruptedException e) { +Thread.currentThread().interrupt(); +} } } } @@ -1360,16 +1378,7 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver @Override public void preClose(ObserverContext c, boolean abortRequested) throws IOException { -synchronized (lock) { -isRegionClosingOrSplittin
[28/28] phoenix git commit: PHOENIX-5026; another test addendum.
PHOENIX-5026; another test addendum. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/50555125 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/50555125 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/50555125 Branch: refs/heads/4.x-cdh5.15 Commit: 5055512515c7c5cf3dc359a50c0b5bb07398f4aa Parents: 027d21e Author: Lars Hofhansl Authored: Sun Nov 25 00:23:38 2018 + Committer: Pedro Boado Committed: Tue Nov 27 15:12:24 2018 + -- .../phoenix/end2end/UpsertSelectAutoCommitIT.java | 14 ++ 1 file changed, 6 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/50555125/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java index 6fad376..4078578 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectAutoCommitIT.java @@ -175,16 +175,16 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT { props.setProperty(QueryServices.ENABLE_SERVER_SIDE_MUTATIONS, allowServerSideMutations); Connection conn = DriverManager.getConnection(getUrl(), props); conn.setAutoCommit(true); -conn.createStatement().execute("CREATE SEQUENCE keys CACHE 1000"); String tableName = generateUniqueName(); +conn.createStatement().execute("CREATE SEQUENCE " + tableName + "_seq CACHE 1000"); conn.createStatement().execute("CREATE TABLE " + tableName + " (pk INTEGER PRIMARY KEY, val INTEGER) UPDATE_CACHE_FREQUENCY=360"); conn.createStatement().execute( -"UPSERT INTO " + tableName + " VALUES (NEXT VALUE FOR keys,1)"); +"UPSERT INTO " + tableName + " VALUES (NEXT VALUE FOR "+ tableName + "_seq,1)"); PreparedStatement stmt = conn.prepareStatement("UPSERT INTO " + tableName -+ " SELECT NEXT VALUE FOR keys, val FROM " + tableName); ++ " SELECT NEXT VALUE FOR "+ tableName + "_seq, val FROM " + tableName); HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); for (int i=0; i<12; i++) { @@ -192,8 +192,6 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT { int upsertCount = stmt.executeUpdate(); assertEquals((int)Math.pow(2, i), upsertCount); } -// cleanup after ourselves -conn.createStatement().execute("DROP SEQUENCE keys"); admin.close(); conn.close(); } @@ -234,17 +232,17 @@ public class UpsertSelectAutoCommitIT extends ParallelStatsDisabledIT { conn.setAutoCommit(false); String tableName = generateUniqueName(); -conn.createStatement().execute("CREATE SEQUENCE "+ tableName); +conn.createStatement().execute("CREATE SEQUENCE "+ tableName + "_seq"); conn.createStatement().execute( "CREATE TABLE " + tableName + " (pk INTEGER PRIMARY KEY, val INTEGER)"); conn.createStatement().execute( -"UPSERT INTO " + tableName + " VALUES (NEXT VALUE FOR keys,1)"); +"UPSERT INTO " + tableName + " VALUES (NEXT VALUE FOR "+ tableName + "_seq, 1)"); conn.commit(); for (int i=0; i<6; i++) { Statement stmt = conn.createStatement(); int upsertCount = stmt.executeUpdate( -"UPSERT INTO " + tableName + " SELECT NEXT VALUE FOR keys, val FROM " +"UPSERT INTO " + tableName + " SELECT NEXT VALUE FOR "+ tableName + "_seq, val FROM " + tableName); conn.commit(); assertEquals((int)Math.pow(2, i), upsertCount);
[06/12] phoenix git commit: PHOENIX-4971 Drop index will execute successfully using Incorrect name of parent tables
PHOENIX-4971 Drop index will execute successfully using Incorrect name of parent tables Signed-off-by: Geoffrey Jacoby Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/76f07482 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/76f07482 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/76f07482 Branch: refs/heads/4.x-cdh5.15 Commit: 76f07482081a0115c503a4a226ba84e854d35513 Parents: 4bbe8e2 Author: Jaanai Authored: Sun Oct 28 11:10:51 2018 + Committer: pboado Committed: Sun Nov 25 22:09:09 2018 + -- .../phoenix/end2end/index/DropMetadataIT.java | 24 +++- .../phoenix/exception/SQLExceptionCode.java | 2 ++ .../apache/phoenix/schema/MetaDataClient.java | 15 3 files changed, 40 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/76f07482/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java index b92ed8d..a285526 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/DropMetadataIT.java @@ -18,9 +18,13 @@ package org.apache.phoenix.end2end.index; import static org.apache.phoenix.util.TestUtil.HBASE_NATIVE_SCHEMA_NAME; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.SQLException; + import java.util.Properties; import org.apache.hadoop.hbase.HColumnDescriptor; @@ -29,6 +33,7 @@ import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.ParallelStatsDisabledIT; +import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.util.PropertiesUtil; @@ -56,7 +61,24 @@ public class DropMetadataIT extends ParallelStatsDisabledIT { String url = QueryUtil.getConnectionUrl(props, config, PRINCIPAL); return DriverManager.getConnection(url, props); } - + +@Test +public void testDropIndexTableHasSameNameWithDataTable() { +String tableName = generateUniqueName(); +String indexName = "IDX_" + tableName; +try (Connection conn = DriverManager.getConnection(getUrl())) { +String createTable = "CREATE TABLE " + tableName + " (id varchar not null primary key, col integer)"; +conn.createStatement().execute(createTable); +String createIndex = "CREATE INDEX " + indexName + " on " + tableName + "(col)"; +conn.createStatement().execute(createIndex); +String dropIndex = "DROP INDEX " + indexName + " on " + indexName; +conn.createStatement().execute(dropIndex); +fail("should not execute successfully"); +} catch (SQLException e) { +assertTrue(SQLExceptionCode.PARENT_TABLE_NOT_FOUND.getErrorCode() == e.getErrorCode()); +} +} + @Test public void testDropViewKeepsHTable() throws Exception { Connection conn = getConnection(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/76f07482/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java b/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java index d84857d..6696521 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java @@ -184,6 +184,8 @@ public enum SQLExceptionCode { INVALID_REPLAY_AT(533, "42910", "Value of REPLAY_AT cannot be less than zero."), UNEQUAL_SCN_AND_BUILD_INDEX_AT(534, "42911", "If both specified, values of CURRENT_SCN and BUILD_INDEX_AT must be equal."), ONLY_INDEX_UPDATABLE_AT_SCN(535, "42912", "Only an index may be updated when the BUILD_INDEX_AT property is specified"), + PARENT_TABLE_NOT_FOUND(536, "42913", "Can't drop the index because the parent table in the DROP statement is incorrect."), + /** * HBas
[05/12] phoenix git commit: PHOENIX-4764 Cleanup metadata of child views for a base table that has been dropped
PHOENIX-4764 Cleanup metadata of child views for a base table that has been dropped Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4bbe8e20 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4bbe8e20 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4bbe8e20 Branch: refs/heads/4.x-cdh5.15 Commit: 4bbe8e20960e615c0136aa130f1e41587d7e742f Parents: b82843b Author: Kadir Authored: Thu Sep 27 07:32:31 2018 +0100 Committer: pboado Committed: Sun Nov 25 22:09:06 2018 + -- .../phoenix/end2end/BasePermissionsIT.java | 4 +- .../phoenix/end2end/DropTableWithViewsIT.java | 151 ++ .../end2end/QueryDatabaseMetaDataIT.java| 4 + .../end2end/TenantSpecificTablesDDLIT.java | 4 +- .../coprocessor/MetaDataEndpointImpl.java | 46 ++- .../phoenix/coprocessor/TaskRegionObserver.java | 292 +++ .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 9 +- .../query/ConnectionQueryServicesImpl.java | 20 +- .../query/ConnectionlessQueryServicesImpl.java | 9 + .../apache/phoenix/query/QueryConstants.java| 17 +- .../org/apache/phoenix/query/QueryServices.java | 6 + .../phoenix/query/QueryServicesOptions.java | 4 + .../java/org/apache/phoenix/schema/PTable.java | 31 +- .../phoenix/schema/stats/StatisticsUtil.java| 2 + .../org/apache/phoenix/util/SchemaUtil.java | 10 + .../java/org/apache/phoenix/query/BaseTest.java | 1 + 16 files changed, 589 insertions(+), 21 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4bbe8e20/phoenix-core/src/it/java/org/apache/phoenix/end2end/BasePermissionsIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BasePermissionsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BasePermissionsIT.java index 88a942e..932ce9f 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/BasePermissionsIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/BasePermissionsIT.java @@ -428,7 +428,7 @@ public class BasePermissionsIT extends BaseTest { @Override public Object run() throws Exception { try (Connection conn = getConnection(); Statement stmt = conn.createStatement();) { -assertFalse(stmt.execute("DROP TABLE IF EXISTS " + tableName)); +assertFalse(stmt.execute(String.format("DROP TABLE IF EXISTS %s CASCADE", tableName))); } return null; } @@ -653,7 +653,7 @@ public class BasePermissionsIT extends BaseTest { @Override public Object run() throws Exception { try (Connection conn = getConnection(); Statement stmt = conn.createStatement();) { -assertFalse(stmt.execute("DROP VIEW " + viewName)); +assertFalse(stmt.execute(String.format("DROP VIEW %s CASCADE", viewName))); } return null; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/4bbe8e20/phoenix-core/src/it/java/org/apache/phoenix/end2end/DropTableWithViewsIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/DropTableWithViewsIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DropTableWithViewsIT.java new file mode 100644 index 000..9502218 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/DropTableWithViewsIT.java @@ -0,0 +1,151 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end; + +import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.fail; + +import java.sql.Connection; +import java.sql.DriverManager; +
[02/12] phoenix git commit: PHOENIX-4988 Incorrect index rowkey generated when updating only non-indexed columns after a delete
PHOENIX-4988 Incorrect index rowkey generated when updating only non-indexed columns after a delete Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/2c2113ab Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/2c2113ab Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/2c2113ab Branch: refs/heads/4.x-cdh5.15 Commit: 2c2113abe4e29f204272ae793b41ad11ddd3d19b Parents: 8c7866f Author: Vincent Poon Authored: Mon Oct 22 18:59:33 2018 +0100 Committer: pboado Committed: Sun Nov 25 22:08:56 2018 + -- .../phoenix/end2end/index/MutableIndexIT.java | 38 +++- .../filter/ApplyAndFilterDeletesFilter.java | 9 +++-- 2 files changed, 44 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/2c2113ab/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java index a994094..5415e87 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java @@ -60,6 +60,7 @@ import org.apache.phoenix.schema.PIndexState; import org.apache.phoenix.schema.PTableKey; import org.apache.phoenix.util.ByteUtil; import org.apache.phoenix.util.EnvironmentEdgeManager; +import org.apache.phoenix.util.IndexScrutiny; import org.apache.phoenix.util.IndexUtil; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.PropertiesUtil; @@ -948,7 +949,42 @@ public class MutableIndexIT extends ParallelStatsDisabledIT { assertEquals(1, rs.getInt(2)); assertEquals(0.5F, rs.getFloat(1), 0.0); assertEquals("foo", rs.getString(3)); - } + } + } + + /** + * PHOENIX-4988 + * Test updating only a non-indexed column after two successive deletes to an indexed row + */ + @Test + public void testUpdateNonIndexedColumn() throws Exception { + String tableName = "TBL_" + generateUniqueName(); + String indexName = "IDX_" + generateUniqueName(); + String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName); + String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName); + try (Connection conn = getConnection()) { + conn.setAutoCommit(false); + conn.createStatement().execute("CREATE TABLE " + fullTableName + " (k VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " + tableDDLOptions); + conn.createStatement().execute("CREATE " + (localIndex ? " LOCAL " : "") + " INDEX " + indexName + " ON " + fullTableName + " (v2)"); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_1','v2_1')"); + conn.commit(); + conn.createStatement().executeUpdate("DELETE FROM " + fullTableName); + conn.commit(); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_2','v2_2')"); + conn.commit(); + conn.createStatement().executeUpdate("DELETE FROM " + fullTableName); + conn.commit(); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1) VALUES ('testKey','v1_3')"); + conn.commit(); + IndexScrutiny.scrutinizeIndex(conn, fullTableName, fullIndexName); + // PHOENIX-4980 + // When there is a flush after a data table update of non-indexed columns, the + // index gets out of sync on the next write + getUtility().getHBaseAdmin().flush(TableName.valueOf(fullTableName)); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_4','v2_3')"); + conn.commit(); + IndexScrutiny.scrutinizeIndex(conn, fullTableName, fullIndexName); + } } private void upsertRow(String dml, Connection tenantConn, int i) throws SQLException { http://git-wip-us.apache.org/repos/asf/phoenix/blob/2c2113ab/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java -- diff --git a/phoen
[01/12] phoenix git commit: PHOENIX-4960 Write to table with global index failed if meta of index changed (split, move, etc)
Repository: phoenix Updated Branches: refs/heads/4.x-cdh5.15 6b877d21b -> 7f13f87c5 PHOENIX-4960 Write to table with global index failed if meta of index changed (split, move, etc) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/8c7866f4 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/8c7866f4 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/8c7866f4 Branch: refs/heads/4.x-cdh5.15 Commit: 8c7866f4258d99f30d392e82c3f18218c909c68a Parents: 6b877d2 Author: Vincent Poon Authored: Tue Oct 16 03:11:40 2018 +0100 Committer: pboado Committed: Sun Nov 25 22:08:30 2018 + -- .../org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java | 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/8c7866f4/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index 21370f3..aa78b1b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -3987,6 +3987,10 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso newKVs.remove(disableTimeStampKVIndex); newKVs.set(indexStateKVIndex, KeyValueUtil.newKeyValue(key, TABLE_FAMILY_BYTES, INDEX_STATE_BYTES, timeStamp, Bytes.toBytes(newState.getSerializedValue(; +} else if (disableTimeStampKVIndex == -1) { // clear disableTimestamp if client didn't pass it in +newKVs.add(KeyValueUtil.newKeyValue(key, TABLE_FAMILY_BYTES, + PhoenixDatabaseMetaData.INDEX_DISABLE_TIMESTAMP_BYTES, timeStamp, PLong.INSTANCE.toBytes(0))); +disableTimeStampKVIndex = newKVs.size() - 1; } } else if (newState == PIndexState.DISABLE) { //reset the counter for pending disable when transitioning from PENDING_DISABLE to DISABLE
[11/12] phoenix git commit: PHOENIX-4989 Include disruptor jar in shaded dependency
PHOENIX-4989 Include disruptor jar in shaded dependency Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9bf6fc63 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9bf6fc63 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9bf6fc63 Branch: refs/heads/4.x-cdh5.15 Commit: 9bf6fc632b7ce49d5077329396b373a13d79be7b Parents: a434163 Author: Aman Poonia Authored: Tue Oct 30 20:57:52 2018 + Committer: pboado Committed: Sun Nov 25 22:09:29 2018 + -- phoenix-server/pom.xml | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/9bf6fc63/phoenix-server/pom.xml -- diff --git a/phoenix-server/pom.xml b/phoenix-server/pom.xml index faf42d6..648e4d1 100644 --- a/phoenix-server/pom.xml +++ b/phoenix-server/pom.xml @@ -139,6 +139,7 @@ com.ibm.icu:icu4j com.ibm.icu:icu4j-charset com.ibm.icu:icu4j-localespi + com.lmax:disruptor org.apache.phoenix:phoenix-server
[09/12] phoenix git commit: PHOENIX-4764 Cleanup metadata of child views for a base table that has been dropped (addendum)
PHOENIX-4764 Cleanup metadata of child views for a base table that has been dropped (addendum) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/c1dce9cf Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/c1dce9cf Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/c1dce9cf Branch: refs/heads/4.x-cdh5.15 Commit: c1dce9cfaf78e316d223f84a50b28b7128449efa Parents: 26f6ee6 Author: Kadir Authored: Wed Oct 31 00:47:26 2018 + Committer: pboado Committed: Sun Nov 25 22:09:23 2018 + -- .../end2end/MigrateSystemTablesToSystemNamespaceIT.java | 4 ++-- .../phoenix/end2end/SystemCatalogCreationOnConnectionIT.java | 4 ++-- .../org/apache/phoenix/monitoring/BasePhoenixMetricsIT.java | 4 +++- .../org/apache/phoenix/coprocessor/TaskRegionObserver.java| 7 +-- .../org/apache/phoenix/query/ConnectionQueryServicesImpl.java | 2 +- .../src/main/java/org/apache/phoenix/query/QueryServices.java | 2 ++ .../java/org/apache/phoenix/query/QueryServicesOptions.java | 3 ++- 7 files changed, 17 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/c1dce9cf/phoenix-core/src/it/java/org/apache/phoenix/end2end/MigrateSystemTablesToSystemNamespaceIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MigrateSystemTablesToSystemNamespaceIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MigrateSystemTablesToSystemNamespaceIT.java index 3f2d6f3..a26cfe5 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MigrateSystemTablesToSystemNamespaceIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MigrateSystemTablesToSystemNamespaceIT.java @@ -64,10 +64,10 @@ public class MigrateSystemTablesToSystemNamespaceIT extends BaseTest { private static final Set PHOENIX_SYSTEM_TABLES = new HashSet<>(Arrays.asList( "SYSTEM.CATALOG", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.FUNCTION", -"SYSTEM.MUTEX","SYSTEM.LOG", "SYSTEM.CHILD_LINK")); +"SYSTEM.MUTEX","SYSTEM.LOG", "SYSTEM.CHILD_LINK", "SYSTEM.TASK")); private static final Set PHOENIX_NAMESPACE_MAPPED_SYSTEM_TABLES = new HashSet<>( Arrays.asList("SYSTEM:CATALOG", "SYSTEM:SEQUENCE", "SYSTEM:STATS", "SYSTEM:FUNCTION", -"SYSTEM:MUTEX","SYSTEM:LOG", "SYSTEM:CHILD_LINK")); +"SYSTEM:MUTEX","SYSTEM:LOG", "SYSTEM:CHILD_LINK", "SYSTEM:TASK")); private static final String SCHEMA_NAME = "MIGRATETEST"; private static final String TABLE_NAME = SCHEMA_NAME + "." + MigrateSystemTablesToSystemNamespaceIT.class.getSimpleName().toUpperCase(); http://git-wip-us.apache.org/repos/asf/phoenix/blob/c1dce9cf/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java index aa2d971..a1685c44 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SystemCatalogCreationOnConnectionIT.java @@ -72,11 +72,11 @@ public class SystemCatalogCreationOnConnectionIT { private static final Set PHOENIX_SYSTEM_TABLES = new HashSet<>(Arrays.asList( "SYSTEM.CATALOG", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "SYSTEM.FUNCTION", - "SYSTEM.MUTEX", "SYSTEM.LOG", "SYSTEM.CHILD_LINK")); + "SYSTEM.MUTEX", "SYSTEM.LOG", "SYSTEM.CHILD_LINK", "SYSTEM.TASK")); private static final Set PHOENIX_NAMESPACE_MAPPED_SYSTEM_TABLES = new HashSet<>( Arrays.asList("SYSTEM:CATALOG", "SYSTEM:SEQUENCE", "SYSTEM:STATS", "SYSTEM:FUNCTION", -"SYSTEM:MUTEX", "SYSTEM:LOG", "SYSTEM:CHILD_LINK")); +"SYSTEM:MUTEX", "SYSTEM:LOG", "SYSTEM:CHILD_LINK", "SYSTEM:TASK")); private static class PhoenixSysCatCreationServices extends ConnectionQueryServicesImpl { http://git-wip-us.apache.org/repos/asf/phoenix/blob/c1dce9cf/phoenix-core/src/it/java/org/apache/phoenix/monitoring/BasePhoenixMe
[10/12] phoenix git commit: PHOENIX-4909 Missing the phoenix-loadbalancer module dependency in phoenix-assembly/pom.xml
PHOENIX-4909 Missing the phoenix-loadbalancer module dependency in phoenix-assembly/pom.xml Closes #352 Signed-off-by: Josh Elser Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a4341632 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a4341632 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a4341632 Branch: refs/heads/4.x-cdh5.15 Commit: a43416321368cea4644856271c6578c234cbcb05 Parents: c1dce9c Author: Vitaliy Authored: Tue Sep 18 23:09:01 2018 +0100 Committer: pboado Committed: Sun Nov 25 22:09:26 2018 + -- bin/phoenix_utils.py | 2 ++ phoenix-assembly/pom.xml | 4 phoenix-assembly/src/build/components/all-common-jars.xml | 8 3 files changed, 14 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a4341632/bin/phoenix_utils.py -- diff --git a/bin/phoenix_utils.py b/bin/phoenix_utils.py index aa04a5b..98a0896 100755 --- a/bin/phoenix_utils.py +++ b/bin/phoenix_utils.py @@ -166,6 +166,8 @@ def setPath(): global phoenix_loadbalancer_jar phoenix_loadbalancer_jar = find(PHOENIX_LOADBALANCER_JAR_PATTERN, os.path.join(current_dir, "..", "phoenix-loadbalancer", "target", "*")) if phoenix_loadbalancer_jar == "": +phoenix_loadbalancer_jar = findFileInPathWithoutRecursion(PHOENIX_LOADBALANCER_JAR_PATTERN, os.path.join(current_dir, "..", "lib")) +if phoenix_loadbalancer_jar == "": phoenix_loadbalancer_jar = findFileInPathWithoutRecursion(PHOENIX_LOADBALANCER_JAR_PATTERN, os.path.join(current_dir, "..")) global phoenix_traceserver_jar http://git-wip-us.apache.org/repos/asf/phoenix/blob/a4341632/phoenix-assembly/pom.xml -- diff --git a/phoenix-assembly/pom.xml b/phoenix-assembly/pom.xml index bce2089..61da2b3 100644 --- a/phoenix-assembly/pom.xml +++ b/phoenix-assembly/pom.xml @@ -126,5 +126,9 @@ org.apache.phoenix phoenix-queryserver-client + + org.apache.phoenix + phoenix-load-balancer + http://git-wip-us.apache.org/repos/asf/phoenix/blob/a4341632/phoenix-assembly/src/build/components/all-common-jars.xml -- diff --git a/phoenix-assembly/src/build/components/all-common-jars.xml b/phoenix-assembly/src/build/components/all-common-jars.xml index 3d27b26..08ca29a 100644 --- a/phoenix-assembly/src/build/components/all-common-jars.xml +++ b/phoenix-assembly/src/build/components/all-common-jars.xml @@ -158,5 +158,13 @@ 0644 + + ${project.basedir}/../phoenix-load-balancer/target/ + lib + +phoenix-*.jar + + 0644 +
[07/12] phoenix git commit: PHOENIX-4872: BulkLoad has bug when loading on single-cell-array-with-offsets table.
PHOENIX-4872: BulkLoad has bug when loading on single-cell-array-with-offsets table. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/e453b772 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/e453b772 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/e453b772 Branch: refs/heads/4.x-cdh5.15 Commit: e453b772fa399ebf1b34d67c11bb7ac22e46f64e Parents: 76f0748 Author: s.kadam Authored: Mon Oct 29 21:47:21 2018 + Committer: pboado Committed: Sun Nov 25 22:09:13 2018 + -- .../phoenix/end2end/CsvBulkLoadToolIT.java | 51 .../mapreduce/FormatToBytesWritableMapper.java | 10 ++-- 2 files changed, 56 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/e453b772/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java index 40fe900..7e4226d 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CsvBulkLoadToolIT.java @@ -35,7 +35,10 @@ import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapred.FileAlreadyExistsException; +import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.mapreduce.CsvBulkLoadTool; +import org.apache.phoenix.schema.PTable; +import org.apache.phoenix.schema.PTableKey; import org.apache.phoenix.util.DateUtil; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.ReadOnlyProps; @@ -446,4 +449,52 @@ public class CsvBulkLoadToolIT extends BaseOwnClusterIT { rs.close(); stmt.close(); } + +/** + * This test case validates the import using CsvBulkLoadTool in + * SingleCellArrayWithOffsets table. + * PHOENIX-4872 + */ + +@Test +public void testImportInSingleCellArrayWithOffsetsTable() throws Exception { +Statement stmt = conn.createStatement(); +stmt.execute("CREATE IMMUTABLE TABLE S.TABLE12 (ID INTEGER NOT NULL PRIMARY KEY," + +" CF0.NAME VARCHAR, CF0.T DATE, CF1.T2 DATE, CF2.T3 DATE) " + +"IMMUTABLE_STORAGE_SCHEME=SINGLE_CELL_ARRAY_WITH_OFFSETS"); +PhoenixConnection phxConn = conn.unwrap(PhoenixConnection.class); +PTable table = phxConn.getTable(new PTableKey(null, "S.TABLE12")); + + assertEquals(PTable.ImmutableStorageScheme.SINGLE_CELL_ARRAY_WITH_OFFSETS, +table.getImmutableStorageScheme()); + +FileSystem fs = FileSystem.get(getUtility().getConfiguration()); +FSDataOutputStream outputStream = fs.create(new Path("/tmp/inputSCAWO.csv")); +PrintWriter printWriter = new PrintWriter(outputStream); +printWriter.println("1,Name 1,1970/01/01,1970/02/01,1970/03/01"); +printWriter.println("2,Name 2,1970/01/02,1970/02/02,1970/03/02"); +printWriter.println("3,Name 1,1970/01/01,1970/02/03,1970/03/01"); +printWriter.println("4,Name 2,1970/01/02,1970/02/04,1970/03/02"); +printWriter.println("5,Name 1,1970/01/01,1970/02/05,1970/03/01"); +printWriter.println("6,Name 2,1970/01/02,1970/02/06,1970/03/02"); +printWriter.close(); + +CsvBulkLoadTool csvBulkLoadTool = new CsvBulkLoadTool(); +csvBulkLoadTool.setConf(new Configuration(getUtility().getConfiguration())); +csvBulkLoadTool.getConf().set(DATE_FORMAT_ATTRIB,"/MM/dd"); +int exitCode = csvBulkLoadTool.run(new String[] { +"--input", "/tmp/inputSCAWO.csv", +"--table", "table12", +"--schema", "s", +"--zookeeper", zkQuorum}); +assertEquals(0, exitCode); + +ResultSet rs = stmt.executeQuery("SELECT COUNT(1) FROM S.TABLE12"); +assertTrue(rs.next()); +assertEquals(6, rs.getInt(1)); + +rs.close(); +stmt.close(); + +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/e453b772/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToBytesWritableMapper.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToBytesWritableMapper.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/FormatToBytesWritable
[03/12] phoenix git commit: PHOENIX-4975 Addendum to fix failing unit tests for Omid due to shadow cells and no local indexes
PHOENIX-4975 Addendum to fix failing unit tests for Omid due to shadow cells and no local indexes Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b899734c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b899734c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b899734c Branch: refs/heads/4.x-cdh5.15 Commit: b899734cee335c2b0e55d6d606092a96d60eedd6 Parents: 2c2113a Author: James Taylor Authored: Wed Oct 17 07:49:23 2018 +0100 Committer: pboado Committed: Sun Nov 25 22:09:00 2018 + -- .../phoenix/end2end/StatsEnabledSplitSystemCatalogIT.java | 9 ++--- .../org/apache/phoenix/schema/stats/StatsCollectorIT.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b899734c/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsEnabledSplitSystemCatalogIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsEnabledSplitSystemCatalogIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsEnabledSplitSystemCatalogIT.java index 0a0dd21..9665fb6 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsEnabledSplitSystemCatalogIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/StatsEnabledSplitSystemCatalogIT.java @@ -74,9 +74,12 @@ public class StatsEnabledSplitSystemCatalogIT extends BaseUniqueNamesOwnClusterI this.tableDDLOptions = optionBuilder.toString(); } - @Parameters(name = "transactional = {0}") - public static Collection data() { - return Arrays.asList(new Object[] { null, "TEPHRA", "OMID" }); + @Parameters(name = "transactionProvider = {0}") + public static Collection data() { +return TestUtil.filterTxParamData(Arrays.asList(new Object[][] { +{ "TEPHRA" }, +{ "OMID" }, +{ null }}),0); } @BeforeClass http://git-wip-us.apache.org/repos/asf/phoenix/blob/b899734c/phoenix-core/src/it/java/org/apache/phoenix/schema/stats/StatsCollectorIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/schema/stats/StatsCollectorIT.java b/phoenix-core/src/it/java/org/apache/phoenix/schema/stats/StatsCollectorIT.java index 0caf61a..f1c4e45 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/schema/stats/StatsCollectorIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/schema/stats/StatsCollectorIT.java @@ -635,7 +635,7 @@ public abstract class StatsCollectorIT extends BaseUniqueNamesOwnClusterIT { // an exact byte count based on the number or rows is not possible because // it is variable on a row-by-row basis. long sumOfGuidePostsWidth = rs.getLong(3); -assertTrue(hasShadowCells ? sumOfGuidePostsWidth > 2 * c2Bytes && sumOfGuidePostsWidth <= 3 * c2Bytes: rs.getLong(3) == c2Bytes); +assertTrue(hasShadowCells ? sumOfGuidePostsWidth > c2Bytes : sumOfGuidePostsWidth == c2Bytes); count++; } }
[12/12] phoenix git commit: PHOENIX-4997 Phoenix MR on snapshots can produce duplicate rows
PHOENIX-4997 Phoenix MR on snapshots can produce duplicate rows Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7f13f87c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7f13f87c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7f13f87c Branch: refs/heads/4.x-cdh5.15 Commit: 7f13f87c52f0abac983041eb66ed302a5f9d9338 Parents: 9bf6fc6 Author: Karan Mehta Authored: Fri Nov 2 00:15:26 2018 + Committer: pboado Committed: Sun Nov 25 22:09:33 2018 + -- .../end2end/TableSnapshotReadsMapReduceIT.java | 122 +++ .../iterate/MapReduceParallelScanGrouper.java | 32 - .../iterate/TableSnapshotResultIterator.java| 28 +++-- .../java/org/apache/phoenix/query/BaseTest.java | 14 +-- 4 files changed, 122 insertions(+), 74 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7f13f87c/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java index cae91a3..e35e159 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/TableSnapshotReadsMapReduceIT.java @@ -36,6 +36,7 @@ import java.util.UUID; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; @@ -49,12 +50,18 @@ import org.apache.phoenix.mapreduce.index.PhoenixIndexDBWritable; import org.apache.phoenix.mapreduce.util.PhoenixMapReduceUtil; import org.apache.phoenix.util.ReadOnlyProps; import org.junit.Assert; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.google.common.collect.Maps; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class TableSnapshotReadsMapReduceIT extends BaseUniqueNamesOwnClusterIT { + + private static final Logger logger = LoggerFactory.getLogger(TableSnapshotReadsMapReduceIT.class); + private final static String SNAPSHOT_NAME = "FOO"; private static final String FIELD1 = "FIELD1"; private static final String FIELD2 = "FIELD2"; @@ -66,6 +73,9 @@ public class TableSnapshotReadsMapReduceIT extends BaseUniqueNamesOwnClusterIT { private static List> result; private long timestamp; private String tableName; + private Job job; + private Path tmpDir; + private Configuration conf; @BeforeClass public static void doSetup() throws Exception { @@ -73,8 +83,8 @@ public class TableSnapshotReadsMapReduceIT extends BaseUniqueNamesOwnClusterIT { setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator())); } - @Test - public void testMapReduceSnapshots() throws Exception { + @Before + public void before() throws SQLException, IOException { // create table Connection conn = DriverManager.getConnection(getUrl()); tableName = generateUniqueName(); @@ -82,58 +92,43 @@ public class TableSnapshotReadsMapReduceIT extends BaseUniqueNamesOwnClusterIT { conn.commit(); // configure Phoenix M/R job to read snapshot -final Configuration conf = getUtility().getConfiguration(); -Job job = Job.getInstance(conf); -Path tmpDir = getUtility().getRandomDir(); +conf = getUtility().getConfiguration(); +job = Job.getInstance(conf); +tmpDir = getUtility().getRandomDir(); + } - PhoenixMapReduceUtil.setInput(job,PhoenixIndexDBWritable.class,SNAPSHOT_NAME,tableName,tmpDir, null, FIELD1, FIELD2, FIELD3); + @Test + public void testMapReduceSnapshots() throws Exception { +PhoenixMapReduceUtil.setInput(job,PhoenixIndexDBWritable.class, +SNAPSHOT_NAME, tableName, tmpDir, null, FIELD1, FIELD2, FIELD3); +configureJob(job, tableName, null, null, false); + } -// configure and test job -configureJob(job, tableName, null, null); + @Test + public void testMapReduceSnapshotsMultiRegion() throws Exception { +PhoenixMapReduceUtil.setInput(job,PhoenixIndexDBWritable.class, +SNAPSHOT_NAME, tableName, tmpDir, null, FIELD1, FIELD2, FIELD3); +configureJob(job, tableName, null, null, true); } @Test public void testMapReduceSnapshotsWithCondition() throws Exception { -// create table -Connection conn = DriverManager.getConnection(getUrl()); -tableName = generateUniqueName(); -conn.createStatement().execute(Stri
[08/12] phoenix git commit: PHOENIX-4891: An index should inherit UPDATE_CACHE_FREQUENCY setting rom parent table
PHOENIX-4891: An index should inherit UPDATE_CACHE_FREQUENCY setting rom parent table Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/26f6ee62 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/26f6ee62 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/26f6ee62 Branch: refs/heads/4.x-cdh5.15 Commit: 26f6ee621541a53e650651e3008acc37bd1177ee Parents: e453b77 Author: Chinmay Kulkarni Authored: Tue Oct 30 21:52:26 2018 + Committer: pboado Committed: Sun Nov 25 22:09:17 2018 + -- .../phoenix/end2end/PropertiesInSyncIT.java | 172 ++- .../phoenix/end2end/index/IndexMetadataIT.java | 145 +++- .../org/apache/phoenix/rpc/UpdateCacheIT.java | 134 ++- .../phoenix/exception/SQLExceptionCode.java | 7 +- .../query/ConnectionQueryServicesImpl.java | 6 +- .../apache/phoenix/schema/MetaDataClient.java | 33 +++- .../org/apache/phoenix/util/MetaDataUtil.java | 6 +- .../org/apache/phoenix/util/UpgradeUtil.java| 79 - 8 files changed, 476 insertions(+), 106 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/26f6ee62/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java index db44735..348b195 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/PropertiesInSyncIT.java @@ -23,9 +23,12 @@ import org.apache.hadoop.hbase.KeepDeletedCells; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.Pair; import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.jdbc.PhoenixConnection; +import org.apache.phoenix.schema.PName; import org.apache.phoenix.schema.PTable; +import org.apache.phoenix.schema.PTableType; import org.apache.phoenix.util.MetaDataUtil; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.SchemaUtil; @@ -33,17 +36,23 @@ import org.junit.Test; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.PreparedStatement; import java.sql.SQLException; +import java.util.HashMap; import java.util.HashSet; +import java.util.Map; import java.util.Properties; import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.apache.phoenix.query.QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES; -import static org.apache.phoenix.util.MetaDataUtil.SYNCED_DATA_TABLE_AND_INDEX_PROPERTIES; +import static org.apache.phoenix.util.MetaDataUtil.SYNCED_DATA_TABLE_AND_INDEX_COL_FAM_PROPERTIES; import static org.apache.phoenix.util.MetaDataUtil.VIEW_INDEX_TABLE_PREFIX; +import static org.apache.phoenix.util.UpgradeUtil.UPSERT_UPDATE_CACHE_FREQUENCY; import static org.apache.phoenix.util.UpgradeUtil.syncTableAndIndexProperties; +import static org.apache.phoenix.util.UpgradeUtil.syncUpdateCacheFreqAllIndexes; +import static org.apache.phoenix.end2end.index.IndexMetadataIT.assertUpdateCacheFreq; /** * Test properties that need to be kept in sync amongst all column families and indexes of a table @@ -56,12 +65,16 @@ public class PropertiesInSyncIT extends ParallelStatsDisabledIT { private static final int INITIAL_TTL_VALUE = 700; private static final KeepDeletedCells INITIAL_KEEP_DELETED_CELLS_VALUE = KeepDeletedCells.TRUE; private static final int INITIAL_REPLICATION_SCOPE_VALUE = 1; +private static final int INITIAL_UPDATE_CACHE_FREQUENCY = 100; +private static final int INITIAL_UPDATE_CACHE_FREQUENCY_VIEWS = 900; private static final int MODIFIED_TTL_VALUE = INITIAL_TTL_VALUE + 300; private static final KeepDeletedCells MODIFIED_KEEP_DELETED_CELLS_VALUE = -(INITIAL_KEEP_DELETED_CELLS_VALUE == KeepDeletedCells.TRUE) -? KeepDeletedCells.FALSE: KeepDeletedCells.TRUE; +(INITIAL_KEEP_DELETED_CELLS_VALUE == KeepDeletedCells.TRUE) ? +KeepDeletedCells.FALSE: KeepDeletedCells.TRUE; private static final int MODIFIED_REPLICATION_SCOPE_VALUE = (INITIAL_REPLICATION_SCOPE_VALUE == 1) ? 0 : 1; +private static final int MODIFIED_UPDATE_CACHE_FREQUENCY = INITIAL_UPDATE_CACHE_FREQUENCY + 300; +private static final int MODIFIED_UPDATE_CACHE_FREQUENCY_VIEWS = INITIAL_UPDATE_CACHE_FREQUENCY_VIEWS + 300; // Test that we disallow specifying synced properties to be set per column
[04/12] phoenix git commit: PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy
PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b82843b9 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b82843b9 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b82843b9 Branch: refs/heads/4.x-cdh5.15 Commit: b82843b99396cfa48ff72d0da56d4b000ee16453 Parents: b899734 Author: Vincent Poon Authored: Wed Oct 24 00:03:22 2018 +0100 Committer: pboado Committed: Sun Nov 25 22:09:03 2018 + -- .../phoenix/hbase/index/write/DelegateIndexFailurePolicy.java | 5 - .../org/apache/phoenix/index/PhoenixIndexFailurePolicy.java| 6 ++ .../src/main/java/org/apache/phoenix/query/QueryServices.java | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/b82843b9/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java index a7fb7ec..caf2b38 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java @@ -28,7 +28,7 @@ import com.google.common.collect.Multimap; public class DelegateIndexFailurePolicy implements IndexFailurePolicy { -private final IndexFailurePolicy delegate; +private IndexFailurePolicy delegate; public DelegateIndexFailurePolicy(IndexFailurePolicy delegate) { this.delegate = delegate; @@ -55,4 +55,7 @@ public class DelegateIndexFailurePolicy implements IndexFailurePolicy { delegate.stop(arg0); } +public void setDelegate(IndexFailurePolicy delegate) { +this.delegate = delegate; +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/b82843b9/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java index b6c1c83..2d0c22c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java @@ -60,6 +60,7 @@ import org.apache.phoenix.hbase.index.table.HTableInterfaceReference; import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; import org.apache.phoenix.hbase.index.write.DelegateIndexFailurePolicy; import org.apache.phoenix.hbase.index.write.KillServerOnFailurePolicy; +import org.apache.phoenix.hbase.index.write.LeaveIndexActiveFailurePolicy; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; import org.apache.phoenix.query.QueryServices; @@ -134,6 +135,11 @@ public class PhoenixIndexFailurePolicy extends DelegateIndexFailurePolicy { } else { throwIndexWriteFailure = Boolean.parseBoolean(value); } + +boolean killServer = env.getConfiguration().getBoolean(QueryServices.INDEX_FAILURE_KILL_SERVER, true); +if (!killServer) { +setDelegate(new LeaveIndexActiveFailurePolicy()); +} // else, default in constructor is KillServerOnFailurePolicy } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/b82843b9/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java index d3c8dc0..337bb05 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java @@ -154,6 +154,7 @@ public interface QueryServices extends SQLCloseable { public static final String INDEX_FAILURE_BLOCK_WRITE = "phoenix.index.failure.block.write"; public static final String INDEX_FAILURE_DISABLE_INDEX = "phoenix.index.failure.disable.index"; public static final String INDEX_FAILURE_THROW_EXCEPTION_ATTRIB = "phoenix.index.failure.throw.exception"; +public static final String INDEX_FAILURE_KILL_SERVER = "phoenix.index.failure.unhandled.killserver"; // Index will be partiall
[1/8] phoenix git commit: PHOENIX-4935 - IndexTool should use empty catalog instead of null
Repository: phoenix Updated Branches: refs/heads/4.14-cdh5.11 4926fa969 -> 091ef8141 PHOENIX-4935 - IndexTool should use empty catalog instead of null Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/be3ed853 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/be3ed853 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/be3ed853 Branch: refs/heads/4.14-cdh5.11 Commit: be3ed853a036d11969ebb0106e1d925a9f4c0d11 Parents: 4926fa9 Author: Geoffrey Authored: Mon Oct 1 23:04:02 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:04 2018 +0100 -- .../main/java/org/apache/phoenix/mapreduce/index/IndexTool.java| 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/be3ed853/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java index ac0be01..15d41ea 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexTool.java @@ -737,7 +737,7 @@ public class IndexTool extends Configured implements Tool { ResultSet rs = null; try { -rs = dbMetaData.getIndexInfo(null, schemaName, tableName, false, false); +rs = dbMetaData.getIndexInfo("", schemaName, tableName, false, false); while (rs.next()) { final String indexName = rs.getString(6); if (indexTable.equalsIgnoreCase(indexName)) {
[3/8] phoenix git commit: PHOENIX-4907 - IndexScrutinyTool should use empty catalog instead of null
PHOENIX-4907 - IndexScrutinyTool should use empty catalog instead of null Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4043f117 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4043f117 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4043f117 Branch: refs/heads/4.14-cdh5.11 Commit: 4043f1176e0e853ce3baff8238a8fe93a490d636 Parents: 4bfa93d Author: Geoffrey Authored: Tue Sep 18 00:09:44 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:14 2018 +0100 -- .../java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4043f117/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java index f3ff39e..d9a14bf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/IndexScrutinyTool.java @@ -499,7 +499,7 @@ public class IndexScrutinyTool extends Configured implements Tool { ResultSet rs = null; try { -rs = dbMetaData.getIndexInfo(null, schemaName, tableName, false, false); +rs = dbMetaData.getIndexInfo("", schemaName, tableName, false, false); while (rs.next()) { final String indexName = rs.getString(6); if (indexTable.equalsIgnoreCase(indexName)) {
[5/8] phoenix git commit: PHOENIX-4967 Reverse scan along LOCAL index does not always return all data.
PHOENIX-4967 Reverse scan along LOCAL index does not always return all data. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9c27fcc6 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9c27fcc6 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9c27fcc6 Branch: refs/heads/4.14-cdh5.11 Commit: 9c27fcc66227bef7e40195842eed338ebcf88f0c Parents: 70b85a6 Author: Lars Hofhansl Authored: Sat Oct 13 22:34:44 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:21 2018 +0100 -- .../phoenix/end2end/index/LocalIndexIT.java | 55 +++- .../phoenix/iterate/BaseResultIterators.java| 3 +- 2 files changed, 56 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/9c27fcc6/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index 42cdab3..cc3a2a5 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -298,11 +298,15 @@ public class LocalIndexIT extends BaseLocalIndexIT { rs = conn1.createStatement().executeQuery(query); String v = ""; +int i = 0; while(rs.next()) { String next = rs.getString("v1"); assertTrue(v.compareTo(next) <= 0); v = next; +i++; } +// see PHOENIX-4967 +assertEquals(4, i); rs.close(); query = "SELECT * FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; @@ -316,16 +320,65 @@ public class LocalIndexIT extends BaseLocalIndexIT { rs = conn1.createStatement().executeQuery(query); v = "zz"; +i = 0; while(rs.next()) { String next = rs.getString("v1"); assertTrue(v.compareTo(next) >= 0); v = next; +i++; } +// see PHOENIX-4967 +assertEquals(4, i); rs.close(); } } - + +@Test +public void testLocalIndexReverseScanShouldReturnAllRows() throws Exception { +String tableName = schemaName + "." + generateUniqueName(); +String indexName = "IDX_" + generateUniqueName(); +TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped); +String indexPhysicalTableName = physicalTableName.getNameAsString(); + +createBaseTable(tableName, null, "('e','i','o')"); +try (Connection conn1 = getConnection()) { +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'b')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')"); +conn1.commit(); +conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); + +String query = "SELECT V1 FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; +ResultSet rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); + +HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); +int numRegions = admin.getTableRegions(physicalTableName).size(); + +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY REVERSE RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +String v = "zz"; +int i = 0; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) >= 0); +v = next; +i++; +} +// see PHOENIX-4967 +assertEquals(4, i); +rs.close(); + +} +} + @Test public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception { String tableName = schemaName + "." + generateUniqueName(); http://git-wip-us.apache.org/repos/asf/phoen
[7/8] phoenix git commit: PHOENIX-4988 Incorrect index rowkey generated when updating only non-indexed columns after a delete
PHOENIX-4988 Incorrect index rowkey generated when updating only non-indexed columns after a delete Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/65e9af0c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/65e9af0c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/65e9af0c Branch: refs/heads/4.14-cdh5.11 Commit: 65e9af0c09ea4c53673d74d00b60d4fb62b77915 Parents: 4d1e0d3 Author: Vincent Poon Authored: Mon Oct 22 21:20:10 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:49 2018 +0100 -- .../phoenix/end2end/index/MutableIndexIT.java | 36 .../filter/ApplyAndFilterDeletesFilter.java | 9 +++-- 2 files changed, 43 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/65e9af0c/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java index e968e99..1b9b8df 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexIT.java @@ -62,6 +62,7 @@ import org.apache.phoenix.schema.PIndexState; import org.apache.phoenix.schema.PTableKey; import org.apache.phoenix.util.ByteUtil; import org.apache.phoenix.util.EnvironmentEdgeManager; +import org.apache.phoenix.util.IndexScrutiny; import org.apache.phoenix.util.IndexUtil; import org.apache.phoenix.util.PhoenixRuntime; import org.apache.phoenix.util.PropertiesUtil; @@ -910,6 +911,41 @@ public class MutableIndexIT extends ParallelStatsDisabledIT { } } + /** + * PHOENIX-4988 + * Test updating only a non-indexed column after two successive deletes to an indexed row + */ + @Test + public void testUpdateNonIndexedColumn() throws Exception { + String tableName = "TBL_" + generateUniqueName(); + String indexName = "IDX_" + generateUniqueName(); + String fullTableName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, tableName); + String fullIndexName = SchemaUtil.getTableName(TestUtil.DEFAULT_SCHEMA_NAME, indexName); + try (Connection conn = getConnection()) { + conn.setAutoCommit(false); + conn.createStatement().execute("CREATE TABLE " + fullTableName + " (k VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " + tableDDLOptions); + conn.createStatement().execute("CREATE " + (localIndex ? " LOCAL " : "") + " INDEX " + indexName + " ON " + fullTableName + " (v2)"); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_1','v2_1')"); + conn.commit(); + conn.createStatement().executeUpdate("DELETE FROM " + fullTableName); + conn.commit(); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_2','v2_2')"); + conn.commit(); + conn.createStatement().executeUpdate("DELETE FROM " + fullTableName); + conn.commit(); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1) VALUES ('testKey','v1_3')"); + conn.commit(); + IndexScrutiny.scrutinizeIndex(conn, fullTableName, fullIndexName); + // PHOENIX-4980 + // When there is a flush after a data table update of non-indexed columns, the + // index gets out of sync on the next write + getUtility().getHBaseAdmin().flush(TableName.valueOf(fullTableName)); + conn.createStatement().executeUpdate("UPSERT INTO " + fullTableName + "(k,v1,v2) VALUES ('testKey','v1_4','v2_3')"); + conn.commit(); + IndexScrutiny.scrutinizeIndex(conn, fullTableName, fullIndexName); + } + } + private void upsertRow(String dml, Connection tenantConn, int i) throws SQLException { PreparedStatement stmt = tenantConn.prepareStatement(dml); stmt.setString(1, "00" + String.valueOf(i)); http://git-wip-us.apache.org/repos/asf/phoenix/blob/65e9af0c/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java index a1f01ed..b5c3414 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/covered/filter/ApplyAndFilterDeletesFilter.java +++ b/phoenix-cor
[8/8] phoenix git commit: PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy
PHOENIX-4977 Make KillServerOnFailurePolicy a configurable option in PhoenixIndexFailurePolicy Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/091ef814 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/091ef814 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/091ef814 Branch: refs/heads/4.14-cdh5.11 Commit: 091ef8141070b80ae1fb273a7282caffa4bf351b Parents: 65e9af0 Author: Vincent Poon Authored: Wed Oct 24 00:03:22 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:51 2018 +0100 -- .../phoenix/hbase/index/write/DelegateIndexFailurePolicy.java | 5 - .../org/apache/phoenix/index/PhoenixIndexFailurePolicy.java| 6 ++ .../src/main/java/org/apache/phoenix/query/QueryServices.java | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/091ef814/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java index a7fb7ec..caf2b38 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/write/DelegateIndexFailurePolicy.java @@ -28,7 +28,7 @@ import com.google.common.collect.Multimap; public class DelegateIndexFailurePolicy implements IndexFailurePolicy { -private final IndexFailurePolicy delegate; +private IndexFailurePolicy delegate; public DelegateIndexFailurePolicy(IndexFailurePolicy delegate) { this.delegate = delegate; @@ -55,4 +55,7 @@ public class DelegateIndexFailurePolicy implements IndexFailurePolicy { delegate.stop(arg0); } +public void setDelegate(IndexFailurePolicy delegate) { +this.delegate = delegate; +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/091ef814/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java index e7f5ac2..eabf481 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/index/PhoenixIndexFailurePolicy.java @@ -60,6 +60,7 @@ import org.apache.phoenix.hbase.index.table.HTableInterfaceReference; import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; import org.apache.phoenix.hbase.index.write.DelegateIndexFailurePolicy; import org.apache.phoenix.hbase.index.write.KillServerOnFailurePolicy; +import org.apache.phoenix.hbase.index.write.LeaveIndexActiveFailurePolicy; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; import org.apache.phoenix.query.QueryServices; @@ -134,6 +135,11 @@ public class PhoenixIndexFailurePolicy extends DelegateIndexFailurePolicy { } else { throwIndexWriteFailure = Boolean.parseBoolean(value); } + +boolean killServer = env.getConfiguration().getBoolean(QueryServices.INDEX_FAILURE_KILL_SERVER, true); +if (!killServer) { +setDelegate(new LeaveIndexActiveFailurePolicy()); +} // else, default in constructor is KillServerOnFailurePolicy } /** http://git-wip-us.apache.org/repos/asf/phoenix/blob/091ef814/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java index 559d165..48b7b7f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/QueryServices.java @@ -152,6 +152,7 @@ public interface QueryServices extends SQLCloseable { public static final String INDEX_FAILURE_BLOCK_WRITE = "phoenix.index.failure.block.write"; public static final String INDEX_FAILURE_DISABLE_INDEX = "phoenix.index.failure.disable.index"; public static final String INDEX_FAILURE_THROW_EXCEPTION_ATTRIB = "phoenix.index.failure.throw.exception"; +public static final String INDEX_FAILURE_KILL_SERVER = "phoenix.index.failure.unhandled.killserver"; // Index will be partially re-built from index disable time stam
[6/8] phoenix git commit: PHOENIX-4960 Write to table with global index failed if meta of index changed (split, move, etc)
PHOENIX-4960 Write to table with global index failed if meta of index changed (split, move, etc) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4d1e0d3b Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4d1e0d3b Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4d1e0d3b Branch: refs/heads/4.14-cdh5.11 Commit: 4d1e0d3b465041c941a17f3ea645c5eb9b3aa708 Parents: 9c27fcc Author: Vincent Poon Authored: Tue Oct 16 03:11:40 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:46 2018 +0100 -- .../org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java | 4 1 file changed, 4 insertions(+) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4d1e0d3b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index ea72a01..68f8abf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -3902,6 +3902,10 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso newKVs.remove(disableTimeStampKVIndex); newKVs.set(indexStateKVIndex, KeyValueUtil.newKeyValue(key, TABLE_FAMILY_BYTES, INDEX_STATE_BYTES, timeStamp, Bytes.toBytes(newState.getSerializedValue(; +} else if (disableTimeStampKVIndex == -1) { // clear disableTimestamp if client didn't pass it in +newKVs.add(KeyValueUtil.newKeyValue(key, TABLE_FAMILY_BYTES, + PhoenixDatabaseMetaData.INDEX_DISABLE_TIMESTAMP_BYTES, timeStamp, PLong.INSTANCE.toBytes(0))); +disableTimeStampKVIndex = newKVs.size() - 1; } } else if (newState == PIndexState.DISABLE) { //reset the counter for pending disable when transitioning from PENDING_DISABLE to DISABLE
[4/8] phoenix git commit: PHOENIX-4964 ORDER BY should use a LOCAL index even if the query is not fully covered.
PHOENIX-4964 ORDER BY should use a LOCAL index even if the query is not fully covered. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/70b85a62 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/70b85a62 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/70b85a62 Branch: refs/heads/4.14-cdh5.11 Commit: 70b85a62245b88718f4517009f9bac49f4175a8e Parents: 4043f11 Author: Lars Hofhansl Authored: Fri Oct 12 06:46:53 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:18 2018 +0100 -- .../phoenix/end2end/index/LocalIndexIT.java | 59 .../apache/phoenix/optimize/QueryOptimizer.java | 9 ++- 2 files changed, 66 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/70b85a62/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index 796d5a2..42cdab3 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -266,6 +266,65 @@ public class LocalIndexIT extends BaseLocalIndexIT { } indexTable.close(); } + +@Test +public void testLocalIndexUsedForUncoveredOrderBy() throws Exception { +String tableName = schemaName + "." + generateUniqueName(); +String indexName = "IDX_" + generateUniqueName(); +TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped); +String indexPhysicalTableName = physicalTableName.getNameAsString(); + +createBaseTable(tableName, null, "('e','i','o')"); +try (Connection conn1 = getConnection()) { +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')"); +conn1.commit(); +conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); + +String query = "SELECT * FROM " + tableName +" ORDER BY V1"; +ResultSet rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); + +HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); +int numRegions = admin.getTableRegions(physicalTableName).size(); + +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +String v = ""; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) <= 0); +v = next; +} +rs.close(); + +query = "SELECT * FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; +rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY REVERSE RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +v = "zz"; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) >= 0); +v = next; +} +rs.close(); + +} +} @Test public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception { http://git-wip-us.apache.org/repos/asf/phoenix/blob/70b85a62/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java b/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java index 6d6
[2/8] phoenix git commit: PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds
PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/4bfa93d2 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/4bfa93d2 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/4bfa93d2 Branch: refs/heads/4.14-cdh5.11 Commit: 4bfa93d2e96280106fb50b893d0f2e70a90470fc Parents: be3ed85 Author: Geoffrey Authored: Fri Sep 7 00:18:09 2018 +0100 Committer: Pedro Boado Committed: Fri Oct 26 23:05:11 2018 +0100 -- .../end2end/index/PhoenixMRJobSubmitterIT.java | 113 +++ .../index/automation/PhoenixMRJobSubmitter.java | 16 ++- .../apache/phoenix/schema/MetaDataClient.java | 2 +- 3 files changed, 126 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/4bfa93d2/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java new file mode 100644 index 000..7cc3aa0 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.index; + +import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; +import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest; +import org.apache.phoenix.mapreduce.index.automation.PhoenixAsyncIndex; +import org.apache.phoenix.mapreduce.index.automation.PhoenixMRJobSubmitter; +import org.apache.phoenix.schema.MetaDataClient; +import org.apache.phoenix.schema.PIndexState; +import org.apache.phoenix.util.ReadOnlyProps; +import org.apache.phoenix.util.RunUntilFailure; +import org.apache.phoenix.util.TestUtil; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.util.Map; + +@Category(NeedsOwnMiniClusterTest.class) +public class PhoenixMRJobSubmitterIT extends BaseUniqueNamesOwnClusterIT { + + private static String REQUEST_INDEX_REBUILD_SQL = "ALTER INDEX %s ON %s REBUILD ASYNC"; + + @BeforeClass + public static void setUp() throws Exception { +setUpTestDriver(ReadOnlyProps.EMPTY_PROPS); + + } + + @Test + public void testGetCandidateJobs() throws Exception { +String tableName = "TBL_" + generateUniqueName(); +String asyncIndexName = "IDX_" + generateUniqueName(); +String needsRebuildIndexName = "IDX_" + generateUniqueName(); +String tableDDL = "CREATE TABLE " + tableName + TestUtil.TEST_TABLE_SCHEMA; +String asyncIndexDDL = "CREATE INDEX " + asyncIndexName + " ON " + tableName + " (a.varchar_col1) ASYNC"; +String needsRebuildIndexDDL = "CREATE INDEX " + needsRebuildIndexName + " ON " + tableName + " (a.char_col1)"; +long rebuildTimestamp = 100L; + +createTestTable(getUrl(), tableDDL); + +createTestTable(getUrl(), needsRebuildIndexDDL); +Connection conn = null; +PreparedStatement stmt = null; +try { + conn = DriverManager.getConnection(getUrl()); + TestUtil.assertIndexState(conn, needsRebuildIndexName, PIndexState.ACTIVE, 0L); + + //first make sure that we don't return an active index + PhoenixMRJobSubmitter submitter = new PhoenixMRJobSubmitter(getUtility().getConfiguration()); + Map candidateMap = submitter.getCandidateJobs(conn); + Assert.assertNotNull(candidateMap); + Assert.assertEquals(0, candidateMap.size()); + + //create an index with ASYNC that will need building via MapReduce + createTestTable(getUrl(), asyncIndexDDL); + TestUtil.assertIndexState(conn, asyncIndexName, PIndexState.BUILDING, 0L); + +
[48/51] [abbrv] phoenix git commit: PHOENIX-4859 Using local index in where statement for join (only rhs table) query fails(Rajeshbabu)
PHOENIX-4859 Using local index in where statement for join (only rhs table) query fails(Rajeshbabu) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/87026452 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/87026452 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/87026452 Branch: refs/heads/4.x-cdh5.15 Commit: 87026452ce92866583bd4fd6999d2c8e37ebd39f Parents: 00ba63b Author: Rajeshbabu Chintaguntla Authored: Tue Oct 9 11:30:32 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../phoenix/end2end/index/LocalIndexIT.java | 29 .../phoenix/compile/ExpressionCompiler.java | 2 +- .../apache/phoenix/compile/JoinCompiler.java| 2 +- .../phoenix/compile/ProjectionCompiler.java | 4 +-- .../compile/TupleProjectionCompiler.java| 2 +- .../phoenix/schema/LocalIndexDataColumnRef.java | 18 ++-- 6 files changed, 44 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/87026452/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index ed1cf45..e260969 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -684,6 +684,35 @@ public class LocalIndexIT extends BaseLocalIndexIT { conn1.close(); } +@Test +public void testLocalIndexSelfJoin() throws Exception { + String tableName = generateUniqueName(); + String indexName = "IDX_" + generateUniqueName(); + Connection conn1 = DriverManager.getConnection(getUrl()); + if (isNamespaceMapped) { + conn1.createStatement().execute("CREATE SCHEMA IF NOT EXISTS " + schemaName); + } +String ddl = +"CREATE TABLE " ++ tableName ++ " (customer_id integer primary key, postal_code varchar, country_code varchar)"; +conn1.createStatement().execute(ddl); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values(1,'560103','IN')"); +conn1.commit(); +conn1.createStatement().execute( +"CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(postal_code)"); +ResultSet rs = +conn1.createStatement() +.executeQuery( +"SELECT * from " ++ tableName ++ " c1, " ++ tableName ++ " c2 where c1.customer_id=c2.customer_id and c2.postal_code='560103'"); +assertTrue(rs.next()); +conn1.close(); +} + private void copyLocalIndexHFiles(Configuration conf, HRegionInfo fromRegion, HRegionInfo toRegion, boolean move) throws IOException { Path root = FSUtils.getRootDir(conf); http://git-wip-us.apache.org/repos/asf/phoenix/blob/87026452/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java index 9daa744..077e1af 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java @@ -376,7 +376,7 @@ public class ExpressionCompiler extends UnsupportedAllParseNodeVisitorhttp://git-wip-us.apache.org/repos/asf/phoenix/blob/87026452/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java index 36bfc5f..880fa72 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/JoinCompiler.java @@ -869,7 +869,7 @@ public class JoinCompiler { if (columnRef.getTableRef().equals(tableRef) && (!retainPKColumns || !SchemaUtil.isPKColumn(columnRef.getColumn( { if (columnRef instanceof LocalIndexColumnRef) { -sourceColumns.add(new LocalIndexDataColumnRef(c
[40/51] [abbrv] phoenix git commit: PHOENIX-4966 Implement unhandledFilters in PhoenixRelation so that spark only evaluates filters when required
PHOENIX-4966 Implement unhandledFilters in PhoenixRelation so that spark only evaluates filters when required Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a694638f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a694638f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a694638f Branch: refs/heads/4.x-cdh5.15 Commit: a694638fa8b7a4c7bd1a0b3b2b8874830f7760e8 Parents: fb1e8f7 Author: Thomas D'Silva Authored: Thu Oct 11 23:46:48 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../org/apache/phoenix/spark/PhoenixSparkIT.scala | 14 +++--- .../org/apache/phoenix/spark/PhoenixRelation.scala | 16 2 files changed, 19 insertions(+), 11 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a694638f/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala -- diff --git a/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala b/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala index b8e44fe..4e11acc 100644 --- a/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala +++ b/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala @@ -285,13 +285,13 @@ class PhoenixSparkIT extends AbstractPhoenixSparkIT { // Make sure we got the right value back assert(res.first().getLong(0) == 1L) -/* - NOTE: There doesn't appear to be any way of verifying from the Spark query planner that - filtering is being pushed down and done server-side. However, since PhoenixRelation - implements PrunedFilteredScan, debugging has shown that both the SELECT columns and WHERE - predicates are being passed along to us, which we then forward it to Phoenix. - TODO: investigate further to find a way to verify server-side pushdown - */ +val plan = res.queryExecution.sparkPlan +// filters should be pushed into phoenix relation +assert(plan.toString.contains("PushedFilters: [IsNotNull(COL1), IsNotNull(ID), " + + "EqualTo(COL1,test_row_1), EqualTo(ID,1)]")) +// spark should run the filters on the rows returned by Phoenix +assert(!plan.toString.contains("Filter (((isnotnull(COL1#8) && isnotnull(ID#7L)) " + + "&& (COL1#8 = test_row_1)) && (ID#7L = 1))")) } test("Can persist a dataframe using 'DataFrame.saveToPhoenix'") { http://git-wip-us.apache.org/repos/asf/phoenix/blob/a694638f/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala -- diff --git a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala b/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala index d2eac8c..38bf29a 100644 --- a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala +++ b/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala @@ -36,11 +36,12 @@ case class PhoenixRelation(tableName: String, zkUrl: String, dateAsTimestamp: Bo but this prevents having to load the whole table into Spark first. */ override def buildScan(requiredColumns: Array[String], filters: Array[Filter]): RDD[Row] = { +val(pushedFilters, unhandledFilters) = buildFilter(filters) new PhoenixRDD( sqlContext.sparkContext, tableName, requiredColumns, - Some(buildFilter(filters)), + Some(pushedFilters), Some(zkUrl), new Configuration(), dateAsTimestamp @@ -62,12 +63,13 @@ case class PhoenixRelation(tableName: String, zkUrl: String, dateAsTimestamp: Bo // Attempt to create Phoenix-accepted WHERE clauses from Spark filters, // mostly inspired from Spark SQL JDBCRDD and the couchbase-spark-connector - private def buildFilter(filters: Array[Filter]): String = { + private def buildFilter(filters: Array[Filter]): (String, Array[Filter]) = { if (filters.isEmpty) { - return "" + return ("" , Array[Filter]()) } val filter = new StringBuilder("") +val unsupportedFilters = Array[Filter](); var i = 0 filters.foreach(f => { @@ -92,12 +94,18 @@ case class PhoenixRelation(tableName: String, zkUrl: String, dateAsTimestamp: Bo case StringStartsWith(attr, value) => filter.append(s" ${escapeKey(attr)} LIKE ${compileValue(value + "%")}") case StringEndsWith(attr, value) => filter.append(s" ${escapeKey(attr)} LIKE ${compileValue("%" + value)}") case StringContains(attr, value) => filter.append(s" ${escapeKey(attr)} LIKE ${compileValue("%" + value + "%")}") +case _ => unsupportedFilters :+ f } i = i + 1 }) -filter.t
[33/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/connection.py -- diff --git a/python/phoenixdb/connection.py b/python/phoenixdb/connection.py deleted file mode 100644 index 593a242..000 --- a/python/phoenixdb/connection.py +++ /dev/null @@ -1,187 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging -import uuid -import weakref -from phoenixdb import errors -from phoenixdb.avatica.client import OPEN_CONNECTION_PROPERTIES -from phoenixdb.cursor import Cursor -from phoenixdb.errors import ProgrammingError - -__all__ = ['Connection'] - -logger = logging.getLogger(__name__) - - -class Connection(object): -"""Database connection. - -You should not construct this object manually, use :func:`~phoenixdb.connect` instead. -""" - -cursor_factory = None -""" -The default cursor factory used by :meth:`cursor` if the parameter is not specified. -""" - -def __init__(self, client, cursor_factory=None, **kwargs): -self._client = client -self._closed = False -if cursor_factory is not None: -self.cursor_factory = cursor_factory -else: -self.cursor_factory = Cursor -self._cursors = [] -# Extract properties to pass to OpenConnectionRequest -self._connection_args = {} -# The rest of the kwargs -self._filtered_args = {} -for k in kwargs: -if k in OPEN_CONNECTION_PROPERTIES: -self._connection_args[k] = kwargs[k] -else: -self._filtered_args[k] = kwargs[k] -self.open() -self.set_session(**self._filtered_args) - -def __del__(self): -if not self._closed: -self.close() - -def __enter__(self): -return self - -def __exit__(self, exc_type, exc_value, traceback): -if not self._closed: -self.close() - -def open(self): -"""Opens the connection.""" -self._id = str(uuid.uuid4()) -self._client.open_connection(self._id, info=self._connection_args) - -def close(self): -"""Closes the connection. -No further operations are allowed, either on the connection or any -of its cursors, once the connection is closed. - -If the connection is used in a ``with`` statement, this method will -be automatically called at the end of the ``with`` block. -""" -if self._closed: -raise ProgrammingError('the connection is already closed') -for cursor_ref in self._cursors: -cursor = cursor_ref() -if cursor is not None and not cursor._closed: -cursor.close() -self._client.close_connection(self._id) -self._client.close() -self._closed = True - -@property -def closed(self): -"""Read-only attribute specifying if the connection is closed or not.""" -return self._closed - -def commit(self): -"""Commits pending database changes. - -Currently, this does nothing, because the RPC does not support -transactions. Only defined for DB API 2.0 compatibility. -You need to use :attr:`autocommit` mode. -""" -# TODO can support be added for this? -if self._closed: -raise ProgrammingError('the connection is already closed') - -def cursor(self, cursor_factory=None): -"""Creates a new cursor. - -:param cursor_factory: -This argument can be used to create non-standard cursors. -The class returned must be a subclass of -:class:`~phoenixdb.cursor.Cursor` (for example :class:`~phoenixdb.cursor.DictCursor`). -A default factory for the connection can also be specified using the -:attr:`cursor_factory` attribute. - -:returns: -A :class:`~phoenixdb.cursor.Cursor` object. -""" -if self._closed: -raise ProgrammingError('the connection is already closed') -cursor = (cursor_factory or self.cursor_factory)(self) -self._cursors.append(weakref.ref(cursor, self._cursors.remove)) -
[41/51] [abbrv] phoenix git commit: PHOENIX-4964 ORDER BY should use a LOCAL index even if the query is not fully covered.
PHOENIX-4964 ORDER BY should use a LOCAL index even if the query is not fully covered. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/e8fafd33 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/e8fafd33 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/e8fafd33 Branch: refs/heads/4.x-cdh5.15 Commit: e8fafd3319f2f6e8c6f5326938ede7150e2c040c Parents: eb13ffd Author: Lars Hofhansl Authored: Fri Oct 12 06:50:31 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../phoenix/end2end/index/LocalIndexIT.java | 59 .../apache/phoenix/optimize/QueryOptimizer.java | 9 ++- 2 files changed, 66 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/e8fafd33/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index e260969..5a59c81 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -266,6 +266,65 @@ public class LocalIndexIT extends BaseLocalIndexIT { } indexTable.close(); } + +@Test +public void testLocalIndexUsedForUncoveredOrderBy() throws Exception { +String tableName = schemaName + "." + generateUniqueName(); +String indexName = "IDX_" + generateUniqueName(); +TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped); +String indexPhysicalTableName = physicalTableName.getNameAsString(); + +createBaseTable(tableName, null, "('e','i','o')"); +try (Connection conn1 = getConnection()) { +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')"); +conn1.commit(); +conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); + +String query = "SELECT * FROM " + tableName +" ORDER BY V1"; +ResultSet rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); + +HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); +int numRegions = admin.getTableRegions(physicalTableName).size(); + +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +String v = ""; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) <= 0); +v = next; +} +rs.close(); + +query = "SELECT * FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; +rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY REVERSE RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +v = "zz"; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) >= 0); +v = next; +} +rs.close(); + +} +} @Test public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception { http://git-wip-us.apache.org/repos/asf/phoenix/blob/e8fafd33/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java b/phoenix-core/src/main/java/org/apache/phoenix/optimize/QueryOptimizer.java index 6d66
[37/51] [abbrv] phoenix git commit: PHOENIX-4942 Move MetaDataEndpointImplTest to integration test
PHOENIX-4942 Move MetaDataEndpointImplTest to integration test Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a4453b66 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a4453b66 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a4453b66 Branch: refs/heads/4.x-cdh5.15 Commit: a4453b66dbec9d78a0e44071918fc191083a7776 Parents: 1c38086 Author: Thomas D'Silva Authored: Tue Oct 16 06:17:24 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../phoenix/end2end/MetaDataEndpointImplIT.java | 301 +++ .../coprocessor/MetaDataEndpointImplTest.java | 299 -- 2 files changed, 301 insertions(+), 299 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a4453b66/phoenix-core/src/it/java/org/apache/phoenix/end2end/MetaDataEndpointImplIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/MetaDataEndpointImplIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MetaDataEndpointImplIT.java new file mode 100644 index 000..f14af9e --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/MetaDataEndpointImplIT.java @@ -0,0 +1,301 @@ +package org.apache.phoenix.end2end; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.hadoop.hbase.HConstants; +import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.client.HTable; +import org.apache.phoenix.coprocessor.TableViewFinderResult; +import org.apache.phoenix.coprocessor.ViewFinder; +import org.apache.phoenix.end2end.ParallelStatsDisabledIT; +import org.apache.phoenix.exception.SQLExceptionCode; +import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; +import org.apache.phoenix.schema.PColumn; +import org.apache.phoenix.schema.PTable; +import org.apache.phoenix.schema.TableNotFoundException; +import org.apache.phoenix.util.PhoenixRuntime; +import org.junit.Test; + +import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +public class MetaDataEndpointImplIT extends ParallelStatsDisabledIT { +private final TableName catalogTable = TableName.valueOf(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES); +private final TableName linkTable = TableName.valueOf(PhoenixDatabaseMetaData.SYSTEM_CHILD_LINK_NAME_BYTES); + +/* + The tree structure is as follows: Where ParentTable is the Base Table + and all children are views and child views respectively. + +ParentTable + / \ +leftChild rightChild + / + leftGrandChild + */ + +@Test +public void testGettingChildrenAndParentViews() throws Exception { +String baseTable = generateUniqueName(); +String leftChild = generateUniqueName(); +String rightChild = generateUniqueName(); +String leftGrandChild = generateUniqueName(); +Connection conn = DriverManager.getConnection(getUrl()); +String ddlFormat = +"CREATE TABLE IF NOT EXISTS " + baseTable + " (" + " PK2 VARCHAR NOT NULL, V1 VARCHAR, V2 VARCHAR " ++ " CONSTRAINT NAME_PK PRIMARY KEY (PK2)" + " )"; +conn.createStatement().execute(ddlFormat); + +conn.createStatement().execute("CREATE VIEW " + rightChild + " AS SELECT * FROM " + baseTable); +conn.createStatement().execute("CREATE VIEW " + leftChild + " (carrier VARCHAR) AS SELECT * FROM " + baseTable); +conn.createStatement().execute("CREATE VIEW " + leftGrandChild + " (dropped_calls BIGINT) AS SELE
[11/51] [abbrv] phoenix git commit: PHOENIX-4917 Fix ClassCastException when projecting array elements in hash join
PHOENIX-4917 Fix ClassCastException when projecting array elements in hash join Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/cea1c710 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/cea1c710 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/cea1c710 Branch: refs/heads/4.x-cdh5.15 Commit: cea1c710d79b7a1d3b9b7da765ff465b50efe4bf Parents: 8774744 Author: Gerald Sangudi Authored: Sun Sep 23 17:01:18 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../coprocessor/HashJoinRegionScanner.java | 50 1 file changed, 42 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/cea1c710/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java index 96af154..70eaa03 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java @@ -50,6 +50,7 @@ import org.apache.phoenix.schema.ValueBitSet; import org.apache.phoenix.schema.tuple.MultiKeyValueTuple; import org.apache.phoenix.schema.tuple.PositionBasedResultTuple; import org.apache.phoenix.schema.tuple.ResultTuple; +import org.apache.phoenix.schema.tuple.SingleKeyValueTuple; import org.apache.phoenix.schema.tuple.Tuple; import org.apache.phoenix.util.ServerUtil; import org.apache.phoenix.util.TupleUtil; @@ -207,19 +208,19 @@ public class HashJoinRegionScanner implements RegionScanner { } if (tempTuples[i] == null) { Tuple joined = tempSrcBitSet[i] == ValueBitSet.EMPTY_VALUE_BITSET ? -lhs : TupleProjector.mergeProjectedValue( -(ProjectedValueTuple) lhs, schema, tempDestBitSet, -null, joinInfo.getSchemas()[i], tempSrcBitSet[i], -joinInfo.getFieldPositions()[i], useNewValueColumnQualifier); +lhs : mergeProjectedValue( +lhs, schema, tempDestBitSet, null, +joinInfo.getSchemas()[i], tempSrcBitSet[i], +joinInfo.getFieldPositions()[i]); offerResult(joined, projected, result); continue; } for (Tuple t : tempTuples[i]) { Tuple joined = tempSrcBitSet[i] == ValueBitSet.EMPTY_VALUE_BITSET ? -lhs : TupleProjector.mergeProjectedValue( -(ProjectedValueTuple) lhs, schema, tempDestBitSet, -t, joinInfo.getSchemas()[i], tempSrcBitSet[i], -joinInfo.getFieldPositions()[i], useNewValueColumnQualifier); +lhs : mergeProjectedValue( +lhs, schema, tempDestBitSet, t, +joinInfo.getSchemas()[i], tempSrcBitSet[i], +joinInfo.getFieldPositions()[i]); offerResult(joined, projected, result); } } @@ -353,4 +354,37 @@ public class HashJoinRegionScanner implements RegionScanner { MultiKeyValueTuple multi = new MultiKeyValueTuple(cells); resultQueue.offer(multi); } + +// PHOENIX-4917 Merge array element cell through hash join. +// Merge into first cell, then reattach array cell. +private Tuple mergeProjectedValue( +Tuple dest, KeyValueSchema destSchema, ValueBitSet destBitSet, Tuple src, +KeyValueSchema srcSchema, ValueBitSet srcBitSet, int offset) +throws IOException { + +if (dest instanceof ProjectedValueTuple) { +return TupleProjector.mergeProjectedValue( +(ProjectedValueTuple) dest, destSchema, destBitSet, src, +srcSchema, srcBitSet, offset, useNewValueColumnQualifier); +} + +ProjectedValueTuple first = projector.projectResults( +new SingleKeyValueTuple(dest.getValue(0))); +ProjectedValueTuple merged = TupleProjector.mergeProjectedValue( +first, destSchema, de
[16/51] [abbrv] phoenix git commit: PHOENIX-4791 Array elements are nullified with joins
PHOENIX-4791 Array elements are nullified with joins Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/dedc04cc Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/dedc04cc Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/dedc04cc Branch: refs/heads/4.x-cdh5.15 Commit: dedc04cc3d323dff8c68d21cd91951ed44a7611c Parents: 1fcf43c Author: Gerald Sangudi Authored: Thu Aug 23 00:59:12 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../ProjectArrayElemAfterHashJoinIT.java| 177 +++ .../coprocessor/HashJoinRegionScanner.java | 69 ++-- .../NonAggregateRegionScannerFactory.java | 5 +- .../phoenix/iterate/RegionScannerFactory.java | 7 +- 4 files changed, 243 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/dedc04cc/phoenix-core/src/it/java/org/apache/phoenix/end2end/ProjectArrayElemAfterHashJoinIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ProjectArrayElemAfterHashJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ProjectArrayElemAfterHashJoinIT.java new file mode 100644 index 000..170eb69 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ProjectArrayElemAfterHashJoinIT.java @@ -0,0 +1,177 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end; + +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.Properties; + +import org.apache.phoenix.util.PropertiesUtil; +import org.apache.phoenix.util.QueryUtil; +import org.junit.Test; + +public class ProjectArrayElemAfterHashJoinIT extends ParallelStatsDisabledIT { + +@Test +public void testSalted() throws Exception { + +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +Connection conn = DriverManager.getConnection(getUrl(), props); + +try { +String table = createSalted(conn); +testTable(conn, table); +} finally { +conn.close(); +} +} + +@Test +public void testUnsalted() throws Exception { + +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +Connection conn = DriverManager.getConnection(getUrl(), props); + +try { +String table = createUnsalted(conn); +testTable(conn, table); +} finally { +conn.close(); +} +} + +private void testTable(Connection conn, String table) throws Exception { + +verifyExplain(conn, table, false, false); +verifyExplain(conn, table, false, true); +verifyExplain(conn, table, true, false); +verifyExplain(conn, table, true, true); + +verifyResults(conn, table, false, false); +verifyResults(conn, table, false, true); +verifyResults(conn, table, true, false); +verifyResults(conn, table, true, true); +} + +private String createSalted(Connection conn) throws Exception { + +String table = "SALTED_" + generateUniqueName(); +String create = "CREATE TABLE " + table + " (" ++ " id INTEGER NOT NULL," ++ " vals TINYINT[]," ++ " CONSTRAINT pk PRIMARY KEY (id)" ++ ") SALT_BUCKETS = 4"; + +conn.createStatement().execute(create); +return table; +} + +private String createUnsalted(Connection conn) throws Exception { + +String table = "UNSALTED_" + generateUniqueName(); +String create = "CREATE TABLE " + table + " (" ++ " id INTEGER NOT NULL," ++ " vals TINYINT[]," ++ " CONSTRAINT p
[42/51] [abbrv] phoenix git commit: PHOENIX-4874 psql doesn't support date/time with values smaller than milliseconds-addendum(Rajeshbabu)
PHOENIX-4874 psql doesn't support date/time with values smaller than milliseconds-addendum(Rajeshbabu) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/62c67d6e Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/62c67d6e Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/62c67d6e Branch: refs/heads/4.x-cdh5.15 Commit: 62c67d6e1788420812cd8e62264b0c8a41c83312 Parents: 50c2a3b Author: Rajeshbabu Chintaguntla Authored: Tue Oct 16 16:53:21 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../org/apache/phoenix/util/AbstractUpsertExecutorTest.java | 7 --- 1 file changed, 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62c67d6e/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java -- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java b/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java index 3ea997b..3b3ebff 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/util/AbstractUpsertExecutorTest.java @@ -25,20 +25,14 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import java.io.IOException; import java.sql.Connection; -import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; import java.sql.Types; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatterBuilder; import java.util.Arrays; import java.util.List; import java.util.Properties; -import java.util.TimeZone; import org.apache.hadoop.hbase.util.Base64; import org.apache.hadoop.hbase.util.Bytes; @@ -48,7 +42,6 @@ import org.apache.phoenix.schema.types.PArrayDataType; import org.apache.phoenix.schema.types.PBinary; import org.apache.phoenix.schema.types.PInteger; import org.apache.phoenix.schema.types.PIntegerArray; -import org.apache.phoenix.schema.types.PTimestamp; import org.junit.After; import org.junit.Before; import org.junit.Test;
[20/51] [abbrv] phoenix git commit: PHOENIX-4949 - IndexTool - updateIndexState called too many times unnecessarily
PHOENIX-4949 - IndexTool - updateIndexState called too many times unnecessarily Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/adbd986f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/adbd986f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/adbd986f Branch: refs/heads/4.x-cdh5.15 Commit: adbd986fe1f59a4dcdf8d14e8c153e96d6dc987a Parents: cea1c71 Author: Geoffrey Authored: Thu Oct 4 19:20:56 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../index/PhoenixIndexImportDirectReducer.java | 15 ++- 1 file changed, 2 insertions(+), 13 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/adbd986f/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectReducer.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectReducer.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectReducer.java index 51b88c1..0786b9b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectReducer.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/index/PhoenixIndexImportDirectReducer.java @@ -36,22 +36,11 @@ public class PhoenixIndexImportDirectReducer extends Reducer { private static final Logger LOG = LoggerFactory.getLogger(PhoenixIndexImportDirectReducer.class); -private Configuration configuration; -/** - * Called once at the start of the task. - */ @Override -protected void setup(Context context) throws IOException, InterruptedException { -configuration = context.getConfiguration(); -} - -@Override -protected void reduce(ImmutableBytesWritable arg0, Iterable arg1, -Reducer.Context arg2) -throws IOException, InterruptedException { +protected void cleanup(Context context) throws IOException, InterruptedException{ try { -IndexToolUtil.updateIndexState(configuration, PIndexState.ACTIVE); +IndexToolUtil.updateIndexState(context.getConfiguration(), PIndexState.ACTIVE); } catch (SQLException e) { LOG.error(" Failed to update the status to Active"); throw new RuntimeException(e.getMessage());
[18/51] [abbrv] phoenix git commit: PHOENIX-4855 Continue to write base table column metadata when creating a view in order to support rollback
http://git-wip-us.apache.org/repos/asf/phoenix/blob/a6c1aa45/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 a267629..361edf2 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 @@ -90,7 +90,8 @@ public class PColumnImpl implements PColumn { } } -// a derived column has null type +// a excluded column (a column that was derived from a parent but that has been deleted) is +// denoted by a column that has a null type public static PColumnImpl createExcludedColumn(PName familyName, PName columnName, Long timestamp) { return new PColumnImpl(familyName, columnName, timestamp); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/a6c1aa45/phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java index 1623175..8cbf757 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTable.java @@ -549,6 +549,12 @@ public interface PTable extends PMetaDataEntity { * @return a list of all columns */ List getColumns(); + +/** + * Get all excluded columns + * @return a list of excluded columns + */ +List getExcludedColumns(); /** * @return A list of the column families of this table http://git-wip-us.apache.org/repos/asf/phoenix/blob/a6c1aa45/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java index 8d57945..9f06e04 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/PTableImpl.java @@ -115,6 +115,8 @@ public class PTableImpl implements PTable { // Have MultiMap for String->PColumn (may need family qualifier) private List pkColumns; private List allColumns; +// columns that were inherited from a parent table but that were dropped in the view +private List excludedColumns; private List families; private Map familyByBytes; private Map familyByString; @@ -217,8 +219,8 @@ public class PTableImpl implements PTable { // For indexes stored in shared physical tables public PTableImpl(PName tenantId, PName schemaName, PName tableName, long timestamp, List families, -List columns, List physicalNames,PDataType viewIndexType, Long viewIndexId, boolean multiTenant, boolean isNamespaceMpped, ImmutableStorageScheme storageScheme, QualifierEncodingScheme qualifierEncodingScheme, -EncodedCQCounter encodedCQCounter, Boolean useStatsForParallelization) throws SQLException { +List columns, List physicalNames, PDataType viewIndexType, Long viewIndexId, boolean multiTenant, boolean isNamespaceMpped, ImmutableStorageScheme storageScheme, QualifierEncodingScheme qualifierEncodingScheme, +EncodedCQCounter encodedCQCounter, Boolean useStatsForParallelization, Integer bucketNum) throws SQLException { this.pkColumns = this.allColumns = Collections.emptyList(); this.rowKeySchema = RowKeySchema.EMPTY_SCHEMA; this.indexes = Collections.emptyList(); @@ -229,10 +231,14 @@ public class PTableImpl implements PTable { familyByString.put(family.getName().getString(), family); } this.families = families; +if (bucketNum!=null) { +columns = columns.subList(1, columns.size()); +} init(tenantId, this.schemaName, this.tableName, PTableType.INDEX, state, timeStamp, sequenceNumber, pkName, bucketNum, columns, this.schemaName, parentTableName, indexes, isImmutableRows, physicalNames, defaultFamilyName, null, disableWAL, multiTenant, storeNulls, viewType, viewIndexType, viewIndexId, indexType, baseColumnCount, rowKeyOrderOptimizable, -transactionProvider, updateCacheFrequency, indexDisableTimestamp, isNamespaceMpped, null, false, storageScheme, qualifierEncodingScheme, encodedCQCounter, useStatsForParallelization); +transactionProvider, updateCacheFrequency, indexDisableTimestamp, isNamespaceMpped, null, +false, storageScheme, qualifierEncodingScheme, encodedCQCounter, useStatsForParallelization, null); }
[51/51] [abbrv] phoenix git commit: PHOENIX-4358 Case Sensitive String match on SqlType in PDataType (Dave Angulo)
PHOENIX-4358 Case Sensitive String match on SqlType in PDataType (Dave Angulo) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/fb1e8f74 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/fb1e8f74 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/fb1e8f74 Branch: refs/heads/4.x-cdh5.15 Commit: fb1e8f74fd142b38709b8b08ed7af14d186c1e5f Parents: e8fafd3 Author: Thomas D'Silva Authored: Fri Oct 12 21:46:15 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../main/java/org/apache/phoenix/schema/types/PDataType.java | 2 +- .../java/org/apache/phoenix/schema/types/PDataTypeTest.java| 6 ++ 2 files changed, 7 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/fb1e8f74/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDataType.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDataType.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDataType.java index 1e29d6f..eba6079 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDataType.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/types/PDataType.java @@ -1041,7 +1041,7 @@ public abstract class PDataType implements DataType, Comparablehttp://git-wip-us.apache.org/repos/asf/phoenix/blob/fb1e8f74/phoenix-core/src/test/java/org/apache/phoenix/schema/types/PDataTypeTest.java -- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/schema/types/PDataTypeTest.java b/phoenix-core/src/test/java/org/apache/phoenix/schema/types/PDataTypeTest.java index 4b02cea..e868f4e 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/schema/types/PDataTypeTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/schema/types/PDataTypeTest.java @@ -1949,4 +1949,10 @@ public class PDataTypeTest { } } } + +@Test +public void testFromSqlTypeName() { +assertEquals(PVarchar.INSTANCE, PDataType.fromSqlTypeName("varchar")); +} + }
[21/51] [abbrv] phoenix git commit: PHOENIX-4666 Persistent subquery cache for hash joins
http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb697933/phoenix-protocol/src/main/build-proto.sh -- diff --git a/phoenix-protocol/src/main/build-proto.sh b/phoenix-protocol/src/main/build-proto.sh index b80bf1d..555651b 100755 --- a/phoenix-protocol/src/main/build-proto.sh +++ b/phoenix-protocol/src/main/build-proto.sh @@ -27,6 +27,12 @@ if [ $? != 0 ] ; then exit 1 fi +if [[ `protoc --version` != *"2.5.0"* ]]; then +echo "Must use protoc version 2.5.0" +exit 1 +fi + + PROTO_ROOT_DIR=`dirname $0` PROTO_DIR=$PROTO_ROOT_DIR JAVA_DIR=$PROTO_ROOT_DIR/../../../phoenix-core/src/main/java
[34/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/avatica/proto/requests_pb2.py -- diff --git a/python/phoenixdb/avatica/proto/requests_pb2.py b/python/phoenixdb/avatica/proto/requests_pb2.py deleted file mode 100644 index 203f945..000 --- a/python/phoenixdb/avatica/proto/requests_pb2.py +++ /dev/null @@ -1,1206 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: requests.proto - -import sys -_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from . import common_pb2 as common__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='requests.proto', - package='', - syntax='proto3', - serialized_pb=_b('\n\x0erequests.proto\x1a\x0c\x63ommon.proto\"(\n\x0f\x43\x61talogsRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"0\n\x17\x44\x61tabasePropertyRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"P\n\x0eSchemasRequest\x12\x0f\n\x07\x63\x61talog\x18\x01 \x01(\t\x12\x16\n\x0eschema_pattern\x18\x02 \x01(\t\x12\x15\n\rconnection_id\x18\x03 \x01(\t\"\x95\x01\n\rTablesRequest\x12\x0f\n\x07\x63\x61talog\x18\x01 \x01(\t\x12\x16\n\x0eschema_pattern\x18\x02 \x01(\t\x12\x1a\n\x12table_name_pattern\x18\x03 \x01(\t\x12\x11\n\ttype_list\x18\x04 \x03(\t\x12\x15\n\rhas_type_list\x18\x06 \x01(\x08\x12\x15\n\rconnection_id\x18\x07 \x01(\t\"*\n\x11TableTypesRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"\x89\x01\n\x0e\x43olumnsRequest\x12\x0f\n\x07\x63\x61talog\x18\x01 \x01(\t\x12\x16\n\x0eschema_pattern\x18\x02 \x01(\t\x12\x1a\n\x12table_name_pattern\x18\x03 \x01(\t\x12\x1b\n\x13\x63olumn_name_pattern\x18\x04 \x01(\t\x12\x15\n\rconnection_id\x18\x05 \x01(\t\"(\n\x0fTypeInfoReque st\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"\xa1\x01\n\x18PrepareAndExecuteRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x0b\n\x03sql\x18\x02 \x01(\t\x12\x15\n\rmax_row_count\x18\x03 \x01(\x04\x12\x14\n\x0cstatement_id\x18\x04 \x01(\r\x12\x16\n\x0emax_rows_total\x18\x05 \x01(\x03\x12\x1c\n\x14\x66irst_frame_max_size\x18\x06 \x01(\x05\"c\n\x0ePrepareRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x0b\n\x03sql\x18\x02 \x01(\t\x12\x15\n\rmax_row_count\x18\x03 \x01(\x04\x12\x16\n\x0emax_rows_total\x18\x04 \x01(\x03\"\x80\x01\n\x0c\x46\x65tchRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x1b\n\x13\x66\x65tch_max_row_count\x18\x04 \x01(\r\x12\x16\n\x0e\x66rame_max_size\x18\x05 \x01(\x05\"/\n\x16\x43reateStatementRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"D\n\x15\x43loseStatementRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\"\x8b\x01\n\x15Op enConnectionRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12.\n\x04info\x18\x02 \x03(\x0b\x32 .OpenConnectionRequest.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"/\n\x16\x43loseConnectionRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"Y\n\x15\x43onnectionSyncRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12)\n\nconn_props\x18\x02 \x01(\x0b\x32\x15.ConnectionProperties\"\xc7\x01\n\x0e\x45xecuteRequest\x12)\n\x0fstatementHandle\x18\x01 \x01(\x0b\x32\x10.StatementHandle\x12%\n\x10parameter_values\x18\x02 \x03(\x0b\x32\x0b.TypedValue\x12\'\n\x1f\x64\x65precated_first_frame_max_size\x18\x03 \x01(\x04\x12\x1c\n\x14has_parameter_values\x18\x04 \x01(\x08\x12\x1c\n\x14\x66irst_frame_max_size\x18\x05 \x01(\x05\"m\n\x12SyncResultsRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x1a\n\x05state\x18\x03 \x01(\x0b\x32\x0b.QueryState\x12\x0e\n\x06offset\x18\x04 \x01(\x04\"&\n\rCommi tRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"(\n\x0fRollbackRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"b\n\x1dPrepareAndExecuteBatchRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x14\n\x0csql_commands\x18\x03 \x03(\t\"4\n\x0bUpdateBatch\x12%\n\x10parameter_values\x18\x01 \x03(\x0b\x32\x0b.TypedValue\"a\n\x13\x45xecuteBatchRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x1d\n\x07updates\x18\x03 \x03(\x0b\x32\x0c.UpdateBatchB\"\n org.apache.calcite.avatica.protob\x06proto3') - , - dependencies=[common__pb2.DESCRIPTOR,]) -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - - - - -_CATALOGSREQUEST = _descriptor.Descriptor( - name='CatalogsRequest', - full_name='CatalogsRequest', - filename=None, - file=DESCRIPTOR, - containing_type=None,
[32/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/phoenixdb/avatica/proto/common_pb2.py -- diff --git a/python/phoenixdb/phoenixdb/avatica/proto/common_pb2.py b/python/phoenixdb/phoenixdb/avatica/proto/common_pb2.py new file mode 100644 index 000..3c99502 --- /dev/null +++ b/python/phoenixdb/phoenixdb/avatica/proto/common_pb2.py @@ -0,0 +1,1667 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: common.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='common.proto', + package='', + syntax='proto3', + serialized_pb=_b('\n\x0c\x63ommon.proto\"\xc0\x01\n\x14\x43onnectionProperties\x12\x10\n\x08is_dirty\x18\x01 \x01(\x08\x12\x13\n\x0b\x61uto_commit\x18\x02 \x01(\x08\x12\x17\n\x0fhas_auto_commit\x18\x07 \x01(\x08\x12\x11\n\tread_only\x18\x03 \x01(\x08\x12\x15\n\rhas_read_only\x18\x08 \x01(\x08\x12\x1d\n\x15transaction_isolation\x18\x04 \x01(\r\x12\x0f\n\x07\x63\x61talog\x18\x05 \x01(\t\x12\x0e\n\x06schema\x18\x06 \x01(\t\"S\n\x0fStatementHandle\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\r\x12\x1d\n\tsignature\x18\x03 \x01(\x0b\x32\n.Signature\"\xb0\x01\n\tSignature\x12 \n\x07\x63olumns\x18\x01 \x03(\x0b\x32\x0f.ColumnMetaData\x12\x0b\n\x03sql\x18\x02 \x01(\t\x12%\n\nparameters\x18\x03 \x03(\x0b\x32\x11.AvaticaParameter\x12&\n\x0e\x63ursor_factory\x18\x04 \x01(\x0b\x32\x0e.CursorFactory\x12%\n\rstatementType\x18\x05 \x01(\x0e\x32\x0e.StatementType\"\xad\x03\n\x0e\x43olumnMetaData\x12\x0f\n\x07ordinal\x18\x01 \x01(\r\x12\x16\n\x0e\x61uto_increment\x18\x02 \x 01(\x08\x12\x16\n\x0e\x63\x61se_sensitive\x18\x03 \x01(\x08\x12\x12\n\nsearchable\x18\x04 \x01(\x08\x12\x10\n\x08\x63urrency\x18\x05 \x01(\x08\x12\x10\n\x08nullable\x18\x06 \x01(\r\x12\x0e\n\x06signed\x18\x07 \x01(\x08\x12\x14\n\x0c\x64isplay_size\x18\x08 \x01(\r\x12\r\n\x05label\x18\t \x01(\t\x12\x13\n\x0b\x63olumn_name\x18\n \x01(\t\x12\x13\n\x0bschema_name\x18\x0b \x01(\t\x12\x11\n\tprecision\x18\x0c \x01(\r\x12\r\n\x05scale\x18\r \x01(\r\x12\x12\n\ntable_name\x18\x0e \x01(\t\x12\x14\n\x0c\x63\x61talog_name\x18\x0f \x01(\t\x12\x11\n\tread_only\x18\x10 \x01(\x08\x12\x10\n\x08writable\x18\x11 \x01(\x08\x12\x1b\n\x13\x64\x65\x66initely_writable\x18\x12 \x01(\x08\x12\x19\n\x11\x63olumn_class_name\x18\x13 \x01(\t\x12\x1a\n\x04type\x18\x14 \x01(\x0b\x32\x0c.AvaticaType\"}\n\x0b\x41vaticaType\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\x03rep\x18\x03 \x01(\x0e\x32\x04.Rep\x12 \n\x07\x63olumns\x18\x04 \x03(\x0b\x32\x0f.ColumnMetaData\x12\x1f\n\tcomponent\x18 \x05 \x01(\x0b\x32\x0c.AvaticaType\"\x91\x01\n\x10\x41vaticaParameter\x12\x0e\n\x06signed\x18\x01 \x01(\x08\x12\x11\n\tprecision\x18\x02 \x01(\r\x12\r\n\x05scale\x18\x03 \x01(\r\x12\x16\n\x0eparameter_type\x18\x04 \x01(\r\x12\x11\n\ttype_name\x18\x05 \x01(\t\x12\x12\n\nclass_name\x18\x06 \x01(\t\x12\x0c\n\x04name\x18\x07 \x01(\t\"\xb3\x01\n\rCursorFactory\x12#\n\x05style\x18\x01 \x01(\x0e\x32\x14.CursorFactory.Style\x12\x12\n\nclass_name\x18\x02 \x01(\t\x12\x13\n\x0b\x66ield_names\x18\x03 \x03(\t\"T\n\x05Style\x12\n\n\x06OBJECT\x10\x00\x12\n\n\x06RECORD\x10\x01\x12\x15\n\x11RECORD_PROJECTION\x10\x02\x12\t\n\x05\x41RRAY\x10\x03\x12\x08\n\x04LIST\x10\x04\x12\x07\n\x03MAP\x10\x05\"9\n\x05\x46rame\x12\x0e\n\x06offset\x18\x01 \x01(\x04\x12\x0c\n\x04\x64one\x18\x02 \x01(\x08\x12\x12\n\x04rows\x18\x03 \x03(\x0b\x32\x04.Row\"\"\n\x03Row\x12\x1b\n\x05value\x18\x01 \x03(\x0b\x32\x0c.ColumnValue\"3\n\x10\x44\x61tabaseProperty\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tfunctions\x18\x02 \x03( \t\"4\n\x0bWireMessage\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x17\n\x0fwrapped_message\x18\x02 \x01(\x0c\"\x87\x01\n\x0b\x43olumnValue\x12\x1a\n\x05value\x18\x01 \x03(\x0b\x32\x0b.TypedValue\x12 \n\x0b\x61rray_value\x18\x02 \x03(\x0b\x32\x0b.TypedValue\x12\x17\n\x0fhas_array_value\x18\x03 \x01(\x08\x12!\n\x0cscalar_value\x18\x04 \x01(\x0b\x32\x0b.TypedValue\"\xf2\x01\n\nTypedValue\x12\x12\n\x04type\x18\x01 \x01(\x0e\x32\x04.Rep\x12\x12\n\nbool_value\x18\x02 \x01(\x08\x12\x14\n\x0cstring_value\x18\x03 \x01(\t\x12\x14\n\x0cnumber_value\x18\x04 \x01(\x12\x12\x13\n\x0b\x62ytes_value\x18\x05 \x01(\x0c\x12\x14\n\x0c\x64ouble_value\x18\x06 \x01(\x01\x12\x0c\n\x04null\x18\x07 \x01(\x08\x12 \n\x0b\x61rray_value\x18\x08 \x03(\x0b\x32\x0b.TypedValue\x12\x1c\n\x0e\x63omponent_type\x18\t \x01(\x0e\x32\x04.Rep\
[45/51] [abbrv] phoenix git commit: PHOENIX-4785 Unable to write to table if index is made active during retry (addendum for test)
PHOENIX-4785 Unable to write to table if index is made active during retry (addendum for test) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f9cee604 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f9cee604 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f9cee604 Branch: refs/heads/4.x-cdh5.15 Commit: f9cee6043d96f146f7f36bab159570b084270490 Parents: 1cbd79d Author: Vincent Poon Authored: Fri Oct 12 23:49:39 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../org/apache/phoenix/end2end/index/MutableIndexFailureIT.java | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/f9cee604/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java index 9bf82fe..06f8f68 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java @@ -433,7 +433,7 @@ public class MutableIndexFailureIT extends BaseTest { private void addRowsInTableDuringRetry(final String tableName) throws SQLException, InterruptedException, ExecutionException { -int threads=10; +int threads=9; boolean wasFailWrite = FailingRegionObserver.FAIL_WRITE; boolean wasToggleFailWriteForRetry = FailingRegionObserver.TOGGLE_FAIL_WRITE_FOR_RETRY; try { @@ -610,6 +610,9 @@ public class MutableIndexFailureIT extends BaseTest { } } } +if (TOGGLE_FAIL_WRITE_FOR_RETRY) { +FAIL_WRITE = !FAIL_WRITE; +} } } if (throwException) {
[15/51] [abbrv] phoenix git commit: PHOENIX-4941 Handle TableExistsException when wrapped under RemoteException for SYSTEM.MUTEX table(addendum)
PHOENIX-4941 Handle TableExistsException when wrapped under RemoteException for SYSTEM.MUTEX table(addendum) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/87747449 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/87747449 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/87747449 Branch: refs/heads/4.x-cdh5.15 Commit: 877474490a031d55449dfda7be79792043e4e418 Parents: ec91f62 Author: Ankit Singhal Authored: Tue Oct 2 20:29:04 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../phoenix/query/ConnectionQueryServicesImpl.java | 15 +-- 1 file changed, 9 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/87747449/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java index 39ad967..f78db9d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java @@ -2568,12 +2568,15 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement boolean foundAccessDeniedException = false; // when running spark/map reduce jobs the ADE might be wrapped // in a RemoteException -if (inspectIfAnyExceptionInChain(e, Collections.singletonList(AccessDeniedException.class))) { +if (inspectIfAnyExceptionInChain(e, Collections +.> singletonList(AccessDeniedException.class))) { // Pass logger.warn("Could not check for Phoenix SYSTEM tables, assuming they exist and are properly configured"); checkClientServerCompatibility(SchemaUtil.getPhysicalName(SYSTEM_CATALOG_NAME_BYTES, getProps()).getName()); success = true; -} else if (inspectIfAnyExceptionInChain(e, Collections.singletonList(NamespaceNotFoundException.class))) { +} else if (inspectIfAnyExceptionInChain(e, +Collections.> singletonList( + NamespaceNotFoundException.class))) { // This exception is only possible if SYSTEM namespace mapping is enabled and SYSTEM namespace is missing // It implies that SYSTEM tables are not created and hence we shouldn't provide a connection AccessDeniedException ade = new AccessDeniedException("Insufficient permissions to create SYSTEM namespace and SYSTEM Tables"); @@ -2670,7 +2673,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement admin.createTable(tableDesc); } catch (IOException e) { -if (inspectIfAnyExceptionInChain(e, Arrays.> asList( +if (inspectIfAnyExceptionInChain(e, Arrays.> asList( AccessDeniedException.class, org.apache.hadoop.hbase.TableExistsException.class))) { // Ignore TableExistsException as another client might beat us during upgrade. // Ignore AccessDeniedException, as it may be possible underpriviliged user trying to use the connection @@ -2683,10 +2686,10 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement } } -private boolean inspectIfAnyExceptionInChain(Throwable io, List> ioList) { +private boolean inspectIfAnyExceptionInChain(Throwable io, List> ioList) { boolean exceptionToIgnore = false; for (Throwable t : Throwables.getCausalChain(io)) { -for (Class exception : ioList) { +for (Class exception : ioList) { exceptionToIgnore |= isExceptionInstanceOf(t, exception); } if (exceptionToIgnore) { @@ -2697,7 +2700,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement return exceptionToIgnore; } -private boolean isExceptionInstanceOf(Throwable io, Class exception) { +private boolean isExceptionInstanceOf(Throwable io, Class exception) { return exception
[13/51] [abbrv] phoenix git commit: PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds
PHOENIX-4519 - Index rebuild MR jobs not created for "alter index rebuild async" rebuilds Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3ace7979 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3ace7979 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3ace7979 Branch: refs/heads/4.x-cdh5.15 Commit: 3ace7979b8ecbd1f30bcf34fd6086e25c7305b84 Parents: 3dcd586 Author: Geoffrey Authored: Fri Sep 7 00:18:09 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../end2end/index/PhoenixMRJobSubmitterIT.java | 113 +++ .../index/automation/PhoenixMRJobSubmitter.java | 16 ++- .../apache/phoenix/schema/MetaDataClient.java | 2 +- 3 files changed, 126 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/3ace7979/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java new file mode 100644 index 000..7cc3aa0 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PhoenixMRJobSubmitterIT.java @@ -0,0 +1,113 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.index; + +import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; +import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest; +import org.apache.phoenix.mapreduce.index.automation.PhoenixAsyncIndex; +import org.apache.phoenix.mapreduce.index.automation.PhoenixMRJobSubmitter; +import org.apache.phoenix.schema.MetaDataClient; +import org.apache.phoenix.schema.PIndexState; +import org.apache.phoenix.util.ReadOnlyProps; +import org.apache.phoenix.util.RunUntilFailure; +import org.apache.phoenix.util.TestUtil; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.util.Map; + +@Category(NeedsOwnMiniClusterTest.class) +public class PhoenixMRJobSubmitterIT extends BaseUniqueNamesOwnClusterIT { + + private static String REQUEST_INDEX_REBUILD_SQL = "ALTER INDEX %s ON %s REBUILD ASYNC"; + + @BeforeClass + public static void setUp() throws Exception { +setUpTestDriver(ReadOnlyProps.EMPTY_PROPS); + + } + + @Test + public void testGetCandidateJobs() throws Exception { +String tableName = "TBL_" + generateUniqueName(); +String asyncIndexName = "IDX_" + generateUniqueName(); +String needsRebuildIndexName = "IDX_" + generateUniqueName(); +String tableDDL = "CREATE TABLE " + tableName + TestUtil.TEST_TABLE_SCHEMA; +String asyncIndexDDL = "CREATE INDEX " + asyncIndexName + " ON " + tableName + " (a.varchar_col1) ASYNC"; +String needsRebuildIndexDDL = "CREATE INDEX " + needsRebuildIndexName + " ON " + tableName + " (a.char_col1)"; +long rebuildTimestamp = 100L; + +createTestTable(getUrl(), tableDDL); + +createTestTable(getUrl(), needsRebuildIndexDDL); +Connection conn = null; +PreparedStatement stmt = null; +try { + conn = DriverManager.getConnection(getUrl()); + TestUtil.assertIndexState(conn, needsRebuildIndexName, PIndexState.ACTIVE, 0L); + + //first make sure that we don't return an active index + PhoenixMRJobSubmitter submitter = new PhoenixMRJobSubmitter(getUtility().getConfiguration()); + Map candidateMap = submitter.getCandidateJobs(conn); + Assert.assertNotNull(candidateMap); + Assert.assertEquals(0, candidateMap.size()); + + //create an index with ASYNC that will need building via MapReduce + createTestTable(getUrl(), asyncIndexDDL); + TestUtil.assertIndexState(conn, asyncIndexName, PIndexState.BUILDING, 0L); + +
[29/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/phoenixdb/types.py -- diff --git a/python/phoenixdb/phoenixdb/types.py b/python/phoenixdb/phoenixdb/types.py new file mode 100644 index 000..f41355a --- /dev/null +++ b/python/phoenixdb/phoenixdb/types.py @@ -0,0 +1,202 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import time +import datetime +from decimal import Decimal +from phoenixdb.avatica.proto import common_pb2 + +__all__ = [ +'Date', 'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', 'TimestampFromTicks', +'Binary', 'STRING', 'BINARY', 'NUMBER', 'DATETIME', 'ROWID', 'BOOLEAN', +'JAVA_CLASSES', 'JAVA_CLASSES_MAP', 'TypeHelper', +] + + +def Date(year, month, day): +"""Constructs an object holding a date value.""" +return datetime.date(year, month, day) + + +def Time(hour, minute, second): +"""Constructs an object holding a time value.""" +return datetime.time(hour, minute, second) + + +def Timestamp(year, month, day, hour, minute, second): +"""Constructs an object holding a datetime/timestamp value.""" +return datetime.datetime(year, month, day, hour, minute, second) + + +def DateFromTicks(ticks): +"""Constructs an object holding a date value from the given UNIX timestamp.""" +return Date(*time.localtime(ticks)[:3]) + + +def TimeFromTicks(ticks): +"""Constructs an object holding a time value from the given UNIX timestamp.""" +return Time(*time.localtime(ticks)[3:6]) + + +def TimestampFromTicks(ticks): +"""Constructs an object holding a datetime/timestamp value from the given UNIX timestamp.""" +return Timestamp(*time.localtime(ticks)[:6]) + + +def Binary(value): +"""Constructs an object capable of holding a binary (long) string value.""" +return bytes(value) + + +def time_from_java_sql_time(n): +dt = datetime.datetime(1970, 1, 1) + datetime.timedelta(milliseconds=n) +return dt.time() + + +def time_to_java_sql_time(t): +return ((t.hour * 60 + t.minute) * 60 + t.second) * 1000 + t.microsecond // 1000 + + +def date_from_java_sql_date(n): +return datetime.date(1970, 1, 1) + datetime.timedelta(days=n) + + +def date_to_java_sql_date(d): +if isinstance(d, datetime.datetime): +d = d.date() +td = d - datetime.date(1970, 1, 1) +return td.days + + +def datetime_from_java_sql_timestamp(n): +return datetime.datetime(1970, 1, 1) + datetime.timedelta(milliseconds=n) + + +def datetime_to_java_sql_timestamp(d): +td = d - datetime.datetime(1970, 1, 1) +return td.microseconds // 1000 + (td.seconds + td.days * 24 * 3600) * 1000 + + +class ColumnType(object): + +def __init__(self, eq_types): +self.eq_types = tuple(eq_types) +self.eq_types_set = set(eq_types) + +def __eq__(self, other): +return other in self.eq_types_set + +def __cmp__(self, other): +if other in self.eq_types_set: +return 0 +if other < self.eq_types: +return 1 +else: +return -1 + + +STRING = ColumnType(['VARCHAR', 'CHAR']) +"""Type object that can be used to describe string-based columns.""" + +BINARY = ColumnType(['BINARY', 'VARBINARY']) +"""Type object that can be used to describe (long) binary columns.""" + +NUMBER = ColumnType([ +'INTEGER', 'UNSIGNED_INT', 'BIGINT', 'UNSIGNED_LONG', 'TINYINT', 'UNSIGNED_TINYINT', +'SMALLINT', 'UNSIGNED_SMALLINT', 'FLOAT', 'UNSIGNED_FLOAT', 'DOUBLE', 'UNSIGNED_DOUBLE', 'DECIMAL' +]) +"""Type object that can be used to describe numeric columns.""" + +DATETIME = ColumnType(['TIME', 'DATE', 'TIMESTAMP', 'UNSIGNED_TIME', 'UNSIGNED_DATE', 'UNSIGNED_TIMESTAMP']) +"""Type object that can be used to describe date/time columns.""" + +ROWID = ColumnType([]) +"""Only implemented for DB API 2.0 compatibility, not used.""" + +BOOLEAN = ColumnType(['BOOLEAN']) +"""Type object that can be used to describe boolean columns. This is a phoenixdb-specific extension.""" + + +# XXX ARRAY + +if sys.version_info[0] < 3: +_long = long # noqa: F821 +else: +_long = int + +JAVA_CLASSES = { +'bool_value': [ +('java.lang.Boolean', common_pb2.BOOLEA
[30/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/phoenixdb/cursor.py -- diff --git a/python/phoenixdb/phoenixdb/cursor.py b/python/phoenixdb/phoenixdb/cursor.py new file mode 100644 index 000..8be7bed --- /dev/null +++ b/python/phoenixdb/phoenixdb/cursor.py @@ -0,0 +1,347 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import logging +import collections +from phoenixdb.types import TypeHelper +from phoenixdb.errors import ProgrammingError, InternalError +from phoenixdb.avatica.proto import common_pb2 + +__all__ = ['Cursor', 'ColumnDescription', 'DictCursor'] + +logger = logging.getLogger(__name__) + +# TODO see note in Cursor.rowcount() +MAX_INT = 2 ** 64 - 1 + +ColumnDescription = collections.namedtuple('ColumnDescription', 'name type_code display_size internal_size precision scale null_ok') +"""Named tuple for representing results from :attr:`Cursor.description`.""" + + +class Cursor(object): +"""Database cursor for executing queries and iterating over results. + +You should not construct this object manually, use :meth:`Connection.cursor() ` instead. +""" + +arraysize = 1 +""" +Read/write attribute specifying the number of rows to fetch +at a time with :meth:`fetchmany`. It defaults to 1 meaning to +fetch a single row at a time. +""" + +itersize = 2000 +""" +Read/write attribute specifying the number of rows to fetch +from the backend at each network roundtrip during iteration +on the cursor. The default is 2000. +""" + +def __init__(self, connection, id=None): +self._connection = connection +self._id = id +self._signature = None +self._column_data_types = [] +self._frame = None +self._pos = None +self._closed = False +self.arraysize = self.__class__.arraysize +self.itersize = self.__class__.itersize +self._updatecount = -1 + +def __del__(self): +if not self._connection._closed and not self._closed: +self.close() + +def __enter__(self): +return self + +def __exit__(self, exc_type, exc_value, traceback): +if not self._closed: +self.close() + +def __iter__(self): +return self + +def __next__(self): +row = self.fetchone() +if row is None: +raise StopIteration +return row + +next = __next__ + +def close(self): +"""Closes the cursor. +No further operations are allowed once the cursor is closed. + +If the cursor is used in a ``with`` statement, this method will +be automatically called at the end of the ``with`` block. +""" +if self._closed: +raise ProgrammingError('the cursor is already closed') +if self._id is not None: +self._connection._client.close_statement(self._connection._id, self._id) +self._id = None +self._signature = None +self._column_data_types = [] +self._frame = None +self._pos = None +self._closed = True + +@property +def closed(self): +"""Read-only attribute specifying if the cursor is closed or not.""" +return self._closed + +@property +def description(self): +if self._signature is None: +return None +description = [] +for column in self._signature.columns: +description.append(ColumnDescription( +column.column_name, +column.type.name, +column.display_size, +None, +column.precision, +column.scale, +None if column.nullable == 2 else bool(column.nullable), +)) +return description + +def _set_id(self, id): +if self._id is not None and self._id != id: +self._connection._client.close_statement(self._connection._id, self._id) +self._id = id + +def _set_signature(self, signature): +self._signature = signature +self._column_data_types = [] +self._parameter_data_types = [] +if signature is None
[39/51] [abbrv] phoenix git commit: PHOENIX-4963 Do not throw when transitioning to PENDING_DISABLE if index is already disabled
PHOENIX-4963 Do not throw when transitioning to PENDING_DISABLE if index is already disabled Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1cbd79d5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1cbd79d5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1cbd79d5 Branch: refs/heads/4.x-cdh5.15 Commit: 1cbd79d520005d39b6d4376d8a0d6401d28cd573 Parents: 62c67d6 Author: Vincent Poon Authored: Wed Oct 17 00:13:11 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../phoenix/coprocessor/MetaDataEndpointImpl.java| 15 --- 1 file changed, 8 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1cbd79d5/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index 83c7f4d..21370f3 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -3949,6 +3949,14 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso return; } } else if (currentState == PIndexState.DISABLE) { +// Index already disabled, so can't revert to PENDING_DISABLE +if (newState == PIndexState.PENDING_DISABLE) { +// returning TABLE_ALREADY_EXISTS here means the client doesn't throw an exception + builder.setReturnCode(MetaDataProtos.MutationCode.TABLE_ALREADY_EXISTS); + builder.setMutationTime(EnvironmentEdgeManager.currentTimeMillis()); +done.run(builder.build()); +return; +} // Can't transition back to INACTIVE if INDEX_DISABLE_TIMESTAMP is 0 if (newState != PIndexState.BUILDING && newState != PIndexState.DISABLE && (newState != PIndexState.INACTIVE || curTimeStampVal == 0)) { @@ -3961,13 +3969,6 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso if (newState == PIndexState.ACTIVE) { newState = PIndexState.DISABLE; } -// Can't transition from DISABLE to PENDING_DISABLE -if (newState == PIndexState.PENDING_DISABLE) { - builder.setReturnCode(MetaDataProtos.MutationCode.UNALLOWED_TABLE_MUTATION); - builder.setMutationTime(EnvironmentEdgeManager.currentTimeMillis()); -done.run(builder.build()); -return; -} } if (newState == PIndexState.PENDING_DISABLE && currentState != PIndexState.PENDING_DISABLE) { // reset count for first PENDING_DISABLE
[12/51] [abbrv] phoenix git commit: PHOENIX-4941 Handle TableExistsException when wrapped under RemoteException for SYSTEM.MUTEX table
PHOENIX-4941 Handle TableExistsException when wrapped under RemoteException for SYSTEM.MUTEX table Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/ec91f62a Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/ec91f62a Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/ec91f62a Branch: refs/heads/4.x-cdh5.15 Commit: ec91f62ac4aea6d82f9c315fbf0e7b6e3e6b513b Parents: 3ace797 Author: Ankit Singhal Authored: Tue Oct 2 20:12:07 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../query/ConnectionQueryServicesImpl.java | 47 +--- 1 file changed, 31 insertions(+), 16 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/ec91f62a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java index 9ee33a5..39ad967 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java @@ -71,6 +71,7 @@ import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -2567,22 +2568,12 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement boolean foundAccessDeniedException = false; // when running spark/map reduce jobs the ADE might be wrapped // in a RemoteException -for (Throwable t : Throwables.getCausalChain(e)) { -if (t instanceof AccessDeniedException -|| (t instanceof RemoteException -&& ((RemoteException) t).getClassName() - .equals(AccessDeniedException.class - .getName( { -foundAccessDeniedException = true; -break; -} -} -if (foundAccessDeniedException) { +if (inspectIfAnyExceptionInChain(e, Collections.singletonList(AccessDeniedException.class))) { // Pass logger.warn("Could not check for Phoenix SYSTEM tables, assuming they exist and are properly configured"); checkClientServerCompatibility(SchemaUtil.getPhysicalName(SYSTEM_CATALOG_NAME_BYTES, getProps()).getName()); success = true; -} else if (!Iterables.isEmpty(Iterables.filter(Throwables.getCausalChain(e), NamespaceNotFoundException.class))) { +} else if (inspectIfAnyExceptionInChain(e, Collections.singletonList(NamespaceNotFoundException.class))) { // This exception is only possible if SYSTEM namespace mapping is enabled and SYSTEM namespace is missing // It implies that SYSTEM tables are not created and hence we shouldn't provide a connection AccessDeniedException ade = new AccessDeniedException("Insufficient permissions to create SYSTEM namespace and SYSTEM Tables"); @@ -2677,15 +2668,39 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement columnDesc.setTimeToLive(TTL_FOR_MUTEX); // Let mutex expire after some time tableDesc.addFamily(columnDesc); admin.createTable(tableDesc); -} catch (IOException e) { - if(!Iterables.isEmpty(Iterables.filter(Throwables.getCausalChain(e), AccessDeniedException.class)) || - !Iterables.isEmpty(Iterables.filter(Throwables.getCausalChain(e), org.apache.hadoop.hbase.TableNotFoundException.class))) { -// Ignore +} +catch (IOException e) { +if (inspectIfAnyExceptionInChain(e, Arrays.> asList( +AccessDeniedException.class, org.apache.hadoop.hba
[31/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/phoenixdb/avatica/proto/requests_pb2.py -- diff --git a/python/phoenixdb/phoenixdb/avatica/proto/requests_pb2.py b/python/phoenixdb/phoenixdb/avatica/proto/requests_pb2.py new file mode 100644 index 000..203f945 --- /dev/null +++ b/python/phoenixdb/phoenixdb/avatica/proto/requests_pb2.py @@ -0,0 +1,1206 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: requests.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from . import common_pb2 as common__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='requests.proto', + package='', + syntax='proto3', + serialized_pb=_b('\n\x0erequests.proto\x1a\x0c\x63ommon.proto\"(\n\x0f\x43\x61talogsRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"0\n\x17\x44\x61tabasePropertyRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"P\n\x0eSchemasRequest\x12\x0f\n\x07\x63\x61talog\x18\x01 \x01(\t\x12\x16\n\x0eschema_pattern\x18\x02 \x01(\t\x12\x15\n\rconnection_id\x18\x03 \x01(\t\"\x95\x01\n\rTablesRequest\x12\x0f\n\x07\x63\x61talog\x18\x01 \x01(\t\x12\x16\n\x0eschema_pattern\x18\x02 \x01(\t\x12\x1a\n\x12table_name_pattern\x18\x03 \x01(\t\x12\x11\n\ttype_list\x18\x04 \x03(\t\x12\x15\n\rhas_type_list\x18\x06 \x01(\x08\x12\x15\n\rconnection_id\x18\x07 \x01(\t\"*\n\x11TableTypesRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"\x89\x01\n\x0e\x43olumnsRequest\x12\x0f\n\x07\x63\x61talog\x18\x01 \x01(\t\x12\x16\n\x0eschema_pattern\x18\x02 \x01(\t\x12\x1a\n\x12table_name_pattern\x18\x03 \x01(\t\x12\x1b\n\x13\x63olumn_name_pattern\x18\x04 \x01(\t\x12\x15\n\rconnection_id\x18\x05 \x01(\t\"(\n\x0fTypeInfoReque st\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"\xa1\x01\n\x18PrepareAndExecuteRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x0b\n\x03sql\x18\x02 \x01(\t\x12\x15\n\rmax_row_count\x18\x03 \x01(\x04\x12\x14\n\x0cstatement_id\x18\x04 \x01(\r\x12\x16\n\x0emax_rows_total\x18\x05 \x01(\x03\x12\x1c\n\x14\x66irst_frame_max_size\x18\x06 \x01(\x05\"c\n\x0ePrepareRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x0b\n\x03sql\x18\x02 \x01(\t\x12\x15\n\rmax_row_count\x18\x03 \x01(\x04\x12\x16\n\x0emax_rows_total\x18\x04 \x01(\x03\"\x80\x01\n\x0c\x46\x65tchRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x1b\n\x13\x66\x65tch_max_row_count\x18\x04 \x01(\r\x12\x16\n\x0e\x66rame_max_size\x18\x05 \x01(\x05\"/\n\x16\x43reateStatementRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"D\n\x15\x43loseStatementRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\"\x8b\x01\n\x15Op enConnectionRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12.\n\x04info\x18\x02 \x03(\x0b\x32 .OpenConnectionRequest.InfoEntry\x1a+\n\tInfoEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"/\n\x16\x43loseConnectionRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"Y\n\x15\x43onnectionSyncRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12)\n\nconn_props\x18\x02 \x01(\x0b\x32\x15.ConnectionProperties\"\xc7\x01\n\x0e\x45xecuteRequest\x12)\n\x0fstatementHandle\x18\x01 \x01(\x0b\x32\x10.StatementHandle\x12%\n\x10parameter_values\x18\x02 \x03(\x0b\x32\x0b.TypedValue\x12\'\n\x1f\x64\x65precated_first_frame_max_size\x18\x03 \x01(\x04\x12\x1c\n\x14has_parameter_values\x18\x04 \x01(\x08\x12\x1c\n\x14\x66irst_frame_max_size\x18\x05 \x01(\x05\"m\n\x12SyncResultsRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x1a\n\x05state\x18\x03 \x01(\x0b\x32\x0b.QueryState\x12\x0e\n\x06offset\x18\x04 \x01(\x04\"&\n\rCommi tRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"(\n\x0fRollbackRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\"b\n\x1dPrepareAndExecuteBatchRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x14\n\x0csql_commands\x18\x03 \x03(\t\"4\n\x0bUpdateBatch\x12%\n\x10parameter_values\x18\x01 \x03(\x0b\x32\x0b.TypedValue\"a\n\x13\x45xecuteBatchRequest\x12\x15\n\rconnection_id\x18\x01 \x01(\t\x12\x14\n\x0cstatement_id\x18\x02 \x01(\r\x12\x1d\n\x07updates\x18\x03 \x03(\x0b\x32\x0c.UpdateBatchB\"\n org.apache.calcite.avatica.protob\x06proto3') + , + dependencies=[common__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_CATALOGSREQUEST = _descriptor.Descriptor( + name='CatalogsRequest', + full_name='CatalogsRequest', + filename=None, + file=D
[27/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/requests-kerberos/tests/test_requests_kerberos.py -- diff --git a/python/requests-kerberos/tests/test_requests_kerberos.py b/python/requests-kerberos/tests/test_requests_kerberos.py new file mode 100644 index 000..ebaca37 --- /dev/null +++ b/python/requests-kerberos/tests/test_requests_kerberos.py @@ -0,0 +1,904 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Tests for requests_kerberos.""" + +import base64 +from mock import Mock, patch +from requests.compat import urlparse +import requests +import warnings + + +try: +import kerberos +kerberos_module_name='kerberos' +except ImportError: +import winkerberos as kerberos # On Windows +kerberos_module_name = 'winkerberos' + +import requests_kerberos +import unittest +from requests_kerberos.kerberos_ import _get_certificate_hash + +# kerberos.authClientInit() is called with the service name (HTTP@FQDN) and +# returns 1 and a kerberos context object on success. Returns -1 on failure. +clientInit_complete = Mock(return_value=(1, "CTX")) +clientInit_error = Mock(return_value=(-1, "CTX")) + +# kerberos.authGSSClientStep() is called with the kerberos context object +# returned by authGSSClientInit and the negotiate auth token provided in the +# http response's www-authenticate header. It returns 0 or 1 on success. 0 +# Indicates that authentication is progressing but not complete. +clientStep_complete = Mock(return_value=1) +clientStep_continue = Mock(return_value=0) +clientStep_error = Mock(return_value=-1) +clientStep_exception = Mock(side_effect=kerberos.GSSError) + +# kerberos.authGSSCLientResponse() is called with the kerberos context which +# was initially returned by authGSSClientInit and had been mutated by a call by +# authGSSClientStep. It returns a string. +clientResponse = Mock(return_value="GSSRESPONSE") + +# Note: we're not using the @mock.patch decorator: +# > My only word of warning is that in the past, the patch decorator hides +# > tests when using the standard unittest library. +# > -- sigmavirus24 in https://github.com/requests/requests-kerberos/issues/1 + + +class KerberosTestCase(unittest.TestCase): + +def setUp(self): +"""Setup.""" +clientInit_complete.reset_mock() +clientInit_error.reset_mock() +clientStep_complete.reset_mock() +clientStep_continue.reset_mock() +clientStep_error.reset_mock() +clientStep_exception.reset_mock() +clientResponse.reset_mock() + +def tearDown(self): +"""Teardown.""" +pass + +def test_negotate_value_extraction(self): +response = requests.Response() +response.headers = {'www-authenticate': 'negotiate token'} +self.assertEqual( +requests_kerberos.kerberos_._negotiate_value(response), +'token' +) + +def test_negotate_value_extraction_none(self): +response = requests.Response() +response.headers = {} +self.assertTrue( +requests_kerberos.kerberos_._negotiate_value(response) is None +) + +def test_force_preemptive(self): +with patch.multiple(kerberos_module_name, +authGSSClientInit=clientInit_complete, +authGSSClientResponse=clientResponse, +authGSSClientStep=clientStep_continue): +auth = requests_kerberos.HTTPKerberosAuth(force_preemptive=True) + +request = requests.Request(url="http://www.example.org";) + +auth.__call__(request) + +self.assertTrue('Authorization' in request.headers) +self.assertEqual(request.headers.get('Authorization'), 'Negotiate GSSRESPONSE') + +def test_no_force_preemptive(self): +with patch.multiple(kerberos_module_name, +authGSSClientInit=clientInit_complete, +authGSSClientResponse=clientResponse, +authGSSClientStep=clientStep_continue): +auth = requests_kerberos.HTTPKerberosAuth() + +request = requests.Request(url="http://www.example.org";) + +auth.__call__(request) + +self.assertTrue('Authorization' not in request.headers) + +def test_generate_request_header(self): +with patch.multiple(kerberos_module_name, +authGSSClientInit=clientInit_complete, +authGSSClientResponse=clientResponse, +authGSSClientStep=clientStep_continue): +response = requests.Response() +response.url = "http://www.example.org/"; +response.headers = {'www-authenticate': 'negotiate token'} +host = urlparse(response.url).hostname +auth = requests_kerberos.HTTPKerberosAuth() +self.assertEqual( +aut
[47/51] [abbrv] phoenix git commit: PHOENIX-4855 Continue to write base table column metadata when creating a view in order to support rollback (addendum)
PHOENIX-4855 Continue to write base table column metadata when creating a view in order to support rollback (addendum) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/00ba63b5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/00ba63b5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/00ba63b5 Branch: refs/heads/4.x-cdh5.15 Commit: 00ba63b5ab575365013bb15990fdda045a18d63c Parents: 708a788 Author: Thomas D'Silva Authored: Sat Oct 6 20:40:54 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/00ba63b5/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java index 18c9000..52dfe99 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java @@ -737,9 +737,10 @@ public class PhoenixDatabaseMetaData implements DatabaseMetaData { boolean isSalted = table.getBucketNum()!=null; boolean tenantColSkipped = false; List columns = table.getColumns(); -columns = Lists.newArrayList(columns.subList(isSalted ? 1 : 0, columns.size())); +int startOffset = isSalted ? 1 : 0; + columns = Lists.newArrayList(columns.subList(startOffset, columns.size())); for (PColumn column : columns) { -if (isTenantSpecificConnection && column.equals(table.getPKColumns().get(0))) { +if (isTenantSpecificConnection && column.equals(table.getPKColumns().get(startOffset))) { // skip the tenant column tenantColSkipped = true; continue; @@ -874,7 +875,7 @@ public class PhoenixDatabaseMetaData implements DatabaseMetaData { byte[] keySeqBytes = ByteUtil.EMPTY_BYTE_ARRAY; int pkPos = table.getPKColumns().indexOf(column); if (pkPos!=-1) { -short keySeq = (short) (pkPos + 1 - (isSalted ? 1 : 0) - (tenantColSkipped ? 1 : 0)); +short keySeq = (short) (pkPos + 1 - startOffset - (tenantColSkipped ? 1 : 0)); keySeqBytes = PSmallint.INSTANCE.toBytes(keySeq); } cells.add(KeyValueUtil.newKeyValue(rowKey, TABLE_FAMILY_BYTES, KEY_SEQ_BYTES,
[22/51] [abbrv] phoenix git commit: PHOENIX-4666 Persistent subquery cache for hash joins
PHOENIX-4666 Persistent subquery cache for hash joins Signed-off-by: Josh Elser Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/cb697933 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/cb697933 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/cb697933 Branch: refs/heads/4.x-cdh5.15 Commit: cb6979333155b3d6b9fd0684304f52e9b33f42f4 Parents: 912215c Author: Marcell Ortutay Authored: Thu Mar 29 20:59:03 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../end2end/join/HashJoinPersistentCacheIT.java | 167 +++ .../org/apache/phoenix/cache/GlobalCache.java | 22 +- .../apache/phoenix/cache/ServerCacheClient.java | 59 -- .../org/apache/phoenix/cache/TenantCache.java | 2 +- .../apache/phoenix/cache/TenantCacheImpl.java | 209 --- .../apache/phoenix/compile/QueryCompiler.java | 9 +- .../phoenix/compile/StatementContext.java | 21 +- .../coprocessor/HashJoinRegionScanner.java | 4 +- .../coprocessor/ServerCachingEndpointImpl.java | 2 +- .../generated/ServerCachingProtos.java | 117 +-- .../apache/phoenix/execute/HashJoinPlan.java| 104 +++-- .../phoenix/iterate/BaseResultIterators.java| 8 +- .../phoenix/iterate/TableResultIterator.java| 6 +- .../apache/phoenix/join/HashCacheClient.java| 24 ++- .../apache/phoenix/join/HashCacheFactory.java | 11 + .../java/org/apache/phoenix/parse/HintNode.java | 4 + .../org/apache/phoenix/query/QueryServices.java | 1 + .../phoenix/query/QueryServicesOptions.java | 1 + .../apache/phoenix/cache/TenantCacheTest.java | 112 -- .../src/main/ServerCachingService.proto | 1 + phoenix-protocol/src/main/build-proto.sh| 6 + 21 files changed, 773 insertions(+), 117 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/cb697933/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinPersistentCacheIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinPersistentCacheIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinPersistentCacheIT.java new file mode 100644 index 000..2f072b8 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/join/HashJoinPersistentCacheIT.java @@ -0,0 +1,167 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.phoenix.end2end.join; + +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.junit.Assert.assertEquals; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.util.Properties; + +import org.apache.phoenix.end2end.join.HashJoinCacheIT.InvalidateHashCache; +import org.apache.phoenix.util.PropertiesUtil; +import org.apache.phoenix.util.SchemaUtil; +import org.apache.phoenix.util.TestUtil; +import org.junit.Test; + +public class HashJoinPersistentCacheIT extends BaseJoinIT { + +@Override +protected String getTableName(Connection conn, String virtualName) throws Exception { +String realName = super.getTableName(conn, virtualName); +TestUtil.addCoprocessor(conn, SchemaUtil.normalizeFullTableName(realName), +InvalidateHashCache.class); +return realName; +} + +@Test +public void testPersistentCache() throws Exception { +Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); +Connection conn = DriverManager.getConnection(getUrl(), props); + +createTestTable(getUrl(), +"CREATE TABLE IF NOT EXISTS states (state CHAR(2) " + +"NOT NULL, name VARCHAR NOT NULL CONSTRAINT my_pk PRIMARY KEY (state, name))"); +createTestTable(getUrl(), +"CREATE TABLE IF NOT EXISTS cities (state CHAR(2) " + + "NOT NULL, city VARCHAR NOT NULL, population BIGINT " + + "CONSTRAINT
[03/51] [abbrv] phoenix git commit: PHOENIX-4882 The client re-resolves the table for every projected non-indexed column when there's a local index.
PHOENIX-4882 The client re-resolves the table for every projected non-indexed column when there's a local index. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/bb297e78 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/bb297e78 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/bb297e78 Branch: refs/heads/4.x-cdh5.15 Commit: bb297e7815bedaa2253299f60d189f13b220ccef Parents: dedc04c Author: Lars Hofhansl Authored: Thu Sep 6 19:23:22 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../src/main/java/org/apache/phoenix/compile/FromCompiler.java | 5 + .../java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/bb297e78/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java index 6eb5952..efc66a9 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/FromCompiler.java @@ -249,6 +249,11 @@ public class FromCompiler { return visitor; } +public static ColumnResolver getResolver(NamedTableNode tableNode, PhoenixConnection connection, boolean updateCacheImmediately) throws SQLException { +SingleTableColumnResolver visitor = new SingleTableColumnResolver(connection, tableNode, updateCacheImmediately); +return visitor; +} + public static ColumnResolver getResolver(NamedTableNode tableNode, PhoenixConnection connection, Map udfParseNodes) throws SQLException { SingleTableColumnResolver visitor = new SingleTableColumnResolver(connection, tableNode, true, 0, udfParseNodes); http://git-wip-us.apache.org/repos/asf/phoenix/blob/bb297e78/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java index 270c66d..0061331 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java @@ -37,7 +37,7 @@ public class LocalIndexDataColumnRef extends ColumnRef { super(FromCompiler.getResolver( FACTORY.namedTable(null, TableName.create(context.getCurrentTable().getTable() .getSchemaName().getString(), context.getCurrentTable().getTable() -.getParentTableName().getString())), context.getConnection()).resolveTable( +.getParentTableName().getString())), context.getConnection(), false).resolveTable( context.getCurrentTable().getTable().getSchemaName().getString(), context.getCurrentTable().getTable().getParentTableName().getString()), IndexUtil .getDataColumnFamilyName(indexColumnName), IndexUtil
[24/51] [abbrv] phoenix git commit: PHOENIX-4874 psql doesn't support date/time with values smaller than milliseconds(Rajeshbabu)
PHOENIX-4874 psql doesn't support date/time with values smaller than milliseconds(Rajeshbabu) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9e47f1e8 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9e47f1e8 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9e47f1e8 Branch: refs/heads/4.x-cdh5.15 Commit: 9e47f1e80967b88d402f7588cf50dd313addb22c Parents: b881226 Author: Rajeshbabu Chintaguntla Authored: Mon Sep 24 00:39:31 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../phoenix/util/csv/CsvUpsertExecutor.java | 20 +--- .../phoenix/util/json/JsonUpsertExecutor.java | 3 ++ .../util/AbstractUpsertExecutorTest.java| 51 +++- 3 files changed, 54 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/9e47f1e8/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java b/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java index 4f98ada..0b5881f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/csv/CsvUpsertExecutor.java @@ -20,6 +20,7 @@ package org.apache.phoenix.util.csv; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.sql.Timestamp; import java.sql.Types; import java.util.Base64; import java.util.List; @@ -30,6 +31,7 @@ import javax.annotation.Nullable; import org.apache.commons.csv.CSVRecord; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.expression.function.EncodeFormat; +import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.IllegalDataException; @@ -41,6 +43,7 @@ import org.apache.phoenix.schema.types.PTimestamp; import org.apache.phoenix.schema.types.PVarbinary; import org.apache.phoenix.util.ColumnInfo; import org.apache.phoenix.util.DateUtil; +import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.UpsertExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,9 +128,9 @@ public class CsvUpsertExecutor extends UpsertExecutor { private final String binaryEncoding; SimpleDatatypeConversionFunction(PDataType dataType, Connection conn) { -Properties props; +ReadOnlyProps props; try { -props = conn.getClientInfo(); +props = conn.unwrap(PhoenixConnection.class).getQueryServices().getProps(); } catch (SQLException e) { throw new RuntimeException(e); } @@ -139,23 +142,23 @@ public class CsvUpsertExecutor extends UpsertExecutor { String dateFormat; int dateSqlType = dataType.getResultSetSqlType(); if (dateSqlType == Types.DATE) { -dateFormat = props.getProperty(QueryServices.DATE_FORMAT_ATTRIB, +dateFormat = props.get(QueryServices.DATE_FORMAT_ATTRIB, DateUtil.DEFAULT_DATE_FORMAT); } else if (dateSqlType == Types.TIME) { -dateFormat = props.getProperty(QueryServices.TIME_FORMAT_ATTRIB, +dateFormat = props.get(QueryServices.TIME_FORMAT_ATTRIB, DateUtil.DEFAULT_TIME_FORMAT); } else { -dateFormat = props.getProperty(QueryServices.TIMESTAMP_FORMAT_ATTRIB, +dateFormat = props.get(QueryServices.TIMESTAMP_FORMAT_ATTRIB, DateUtil.DEFAULT_TIMESTAMP_FORMAT); } -String timeZoneId = props.getProperty(QueryServices.DATE_FORMAT_TIMEZONE_ATTRIB, +String timeZoneId = props.get(QueryServices.DATE_FORMAT_TIMEZONE_ATTRIB, QueryServicesOptions.DEFAULT_DATE_FORMAT_TIMEZONE); this.dateTimeParser = DateUtil.getDateTimeParser(dateFormat, dataType, timeZoneId); } else { this.dateTimeParser = null; } this.codec = codec; -this.binaryEncoding = props.getProperty(QueryServices.UPLOAD_BINARY_DATA_TYPE_ENCODING, +this.binaryEncoding = props.get(QueryServices.UPLOAD_BINARY_DATA_TYPE_ENCODING, QueryServicesOptions.DEFAULT_UPLOAD_BINARY_DATA_TYPE_ENCODING); } @@ -165,6 +168,9 @@ public class
[44/51] [abbrv] phoenix git commit: Revert "PHOENIX-4825 Replace usage of HBase Base64 implementation with java.util.Base64"
Revert "PHOENIX-4825 Replace usage of HBase Base64 implementation with java.util.Base64" This reverts commit 22934e5af7af79580bf54feeb7667eccafaafc71 in order to support JDK 1.7 for 4.x releases. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/708a7885 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/708a7885 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/708a7885 Branch: refs/heads/4.x-cdh5.15 Commit: 708a7885b3878ae1f0f44248b05a6016b8a0abbe Parents: 3cac921 Author: Ankit Singhal Authored: Sat Oct 6 00:53:31 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../org/apache/phoenix/end2end/QueryMoreIT.java | 7 ++--- .../phoenix/mapreduce/CsvBulkImportUtil.java| 8 ++ .../util/PhoenixConfigurationUtil.java | 7 ++--- .../apache/phoenix/schema/types/PVarbinary.java | 4 +-- .../phoenix/util/csv/CsvUpsertExecutor.java | 4 +-- .../phoenix/util/json/JsonUpsertExecutor.java | 4 +-- .../util/AbstractUpsertExecutorTest.java| 12 .../util/TenantIdByteConversionTest.java| 30 8 files changed, 26 insertions(+), 50 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/708a7885/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java index 528fe7f..04272fa 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryMoreIT.java @@ -31,13 +31,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; -import java.util.Base64; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; -import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.Base64; import org.apache.hadoop.hbase.util.Pair; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.query.QueryServices; @@ -279,7 +278,7 @@ public class QueryMoreIT extends ParallelStatsDisabledIT { values[i] = rs.getObject(i + 1); } conn = getTenantSpecificConnection(tenantId); - pkIds.add(Bytes.toString(Base64.getEncoder().encode(PhoenixRuntime.encodeColumnValues(conn, tableOrViewName.toUpperCase(), values, columns; + pkIds.add(Base64.encodeBytes(PhoenixRuntime.encodeColumnValues(conn, tableOrViewName.toUpperCase(), values, columns))); } return pkIds.toArray(new String[pkIds.size()]); } @@ -297,7 +296,7 @@ public class QueryMoreIT extends ParallelStatsDisabledIT { PreparedStatement stmt = conn.prepareStatement(query); int bindCounter = 1; for (int i = 0; i < cursorIds.length; i++) { -Object[] pkParts = PhoenixRuntime.decodeColumnValues(conn, tableName.toUpperCase(), Base64.getDecoder().decode(cursorIds[i]), columns); +Object[] pkParts = PhoenixRuntime.decodeColumnValues(conn, tableName.toUpperCase(), Base64.decode(cursorIds[i]), columns); for (int j = 0; j < pkParts.length; j++) { stmt.setObject(bindCounter++, pkParts[j]); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/708a7885/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/CsvBulkImportUtil.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/CsvBulkImportUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/CsvBulkImportUtil.java index bf5a538..ff9ff72 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/CsvBulkImportUtil.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/mapreduce/CsvBulkImportUtil.java @@ -17,11 +17,9 @@ */ package org.apache.phoenix.mapreduce; -import java.util.Base64; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.hbase.util.Bytes; +import org.apache.hadoop.hbase.util.Base64; import org.apache.phoenix.mapreduce.util.PhoenixConfigurationUtil; import org.apache.phoenix.query.QueryConstants; import org.apache.phoenix.query.QueryServices; @@ -70,7 +68,7 @@ public class CsvBulkImportUtil { @VisibleForTesting static void setChar(Configuration conf, String confKey, char charValue) { -conf.set(confKey, Bytes.toString(Base64.getEncoder().encode(Character.toString(charValue).getBytes(; +conf.set(confKey, Base64.encodeBytes(Character.toString(charV
[43/51] [abbrv] phoenix git commit: PHOENIX-4967 Reverse scan along LOCAL index does not always return all data.
PHOENIX-4967 Reverse scan along LOCAL index does not always return all data. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1c380865 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1c380865 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1c380865 Branch: refs/heads/4.x-cdh5.15 Commit: 1c3808654abbeb3e2f6042064a38439b6d20589c Parents: a694638 Author: Lars Hofhansl Authored: Sat Oct 13 22:45:19 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:50:43 2018 +0100 -- .../phoenix/end2end/index/LocalIndexIT.java | 55 +++- .../phoenix/iterate/BaseResultIterators.java| 3 +- 2 files changed, 56 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1c380865/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java index 5a59c81..d70a505 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/LocalIndexIT.java @@ -298,11 +298,15 @@ public class LocalIndexIT extends BaseLocalIndexIT { rs = conn1.createStatement().executeQuery(query); String v = ""; +int i = 0; while(rs.next()) { String next = rs.getString("v1"); assertTrue(v.compareTo(next) <= 0); v = next; +i++; } +// see PHOENIX-4967 +assertEquals(4, i); rs.close(); query = "SELECT * FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; @@ -316,16 +320,65 @@ public class LocalIndexIT extends BaseLocalIndexIT { rs = conn1.createStatement().executeQuery(query); v = "zz"; +i = 0; while(rs.next()) { String next = rs.getString("v1"); assertTrue(v.compareTo(next) >= 0); v = next; +i++; } +// see PHOENIX-4967 +assertEquals(4, i); rs.close(); } } - + +@Test +public void testLocalIndexReverseScanShouldReturnAllRows() throws Exception { +String tableName = schemaName + "." + generateUniqueName(); +String indexName = "IDX_" + generateUniqueName(); +TableName physicalTableName = SchemaUtil.getPhysicalTableName(tableName.getBytes(), isNamespaceMapped); +String indexPhysicalTableName = physicalTableName.getNameAsString(); + +createBaseTable(tableName, null, "('e','i','o')"); +try (Connection conn1 = getConnection()) { +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('b',1,2,4,'z')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('f',1,2,3,'a')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('j',2,4,2,'b')"); +conn1.createStatement().execute("UPSERT INTO " + tableName + " values('q',3,1,1,'c')"); +conn1.commit(); +conn1.createStatement().execute("CREATE LOCAL INDEX " + indexName + " ON " + tableName + "(v1)"); + +String query = "SELECT V1 FROM " + tableName +" ORDER BY V1 DESC NULLS LAST"; +ResultSet rs = conn1.createStatement().executeQuery("EXPLAIN "+ query); + +HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), TestUtil.TEST_PROPERTIES).getAdmin(); +int numRegions = admin.getTableRegions(physicalTableName).size(); + +assertEquals( +"CLIENT PARALLEL " + numRegions + "-WAY REVERSE RANGE SCAN OVER " ++ indexPhysicalTableName + " [1]\n" ++ "SERVER FILTER BY FIRST KEY ONLY\n" ++ "CLIENT MERGE SORT", +QueryUtil.getExplainPlan(rs)); + +rs = conn1.createStatement().executeQuery(query); +String v = "zz"; +int i = 0; +while(rs.next()) { +String next = rs.getString("v1"); +assertTrue(v.compareTo(next) >= 0); +v = next; +i++; +} +// see PHOENIX-4967 +assertEquals(4, i); +rs.close(); + +} +} + @Test public void testLocalIndexScanJoinColumnsFromDataTable() throws Exception { String tableName = schemaName + "." + generateUniqueName(); http://git-wip-us.apache.org/repos/asf/phoeni
[08/51] [abbrv] phoenix git commit: PHOENIX-4884 Update INSTR to handle literals and non-literals in either function argument
PHOENIX-4884 Update INSTR to handle literals and non-literals in either function argument INSTR previously only handled arguments of the form non-literal and literal, but the documentation doesn't clearly state this. We can support all variants though. Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/e83c6147 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/e83c6147 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/e83c6147 Branch: refs/heads/4.x-cdh5.15 Commit: e83c6147e5696b34d76de7ae16ab2233bda864ae Parents: cb69793 Author: Josh Elser Authored: Fri Aug 31 15:59:47 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- .../apache/phoenix/end2end/InstrFunctionIT.java | 35 + .../expression/function/InstrFunction.java | 78 +--- .../expression/function/InstrFunctionTest.java | 44 +++ 3 files changed, 114 insertions(+), 43 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/e83c6147/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java index 270b1ec..bc86980 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/InstrFunctionIT.java @@ -131,4 +131,39 @@ public class InstrFunctionIT extends ParallelStatsDisabledIT { testInstrFilter(conn, queryToExecute,"abcdefghijkl"); } +@Test +public void testNonLiteralExpression() throws Exception { +Connection conn = DriverManager.getConnection(getUrl()); +String tableName = generateUniqueName(); +initTable(conn, tableName, "ASC", "asdf", "sdf"); +// Should be able to use INSTR with a non-literal expression as the 2nd argument +String query = "SELECT INSTR(name, substr) FROM " + tableName; +testInstr(conn, query, 2); +} + +@Test +public void testNonLiteralSourceExpression() throws Exception { +Connection conn = DriverManager.getConnection(getUrl()); +String tableName = generateUniqueName(); +initTable(conn, tableName, "ASC", "asdf", "sdf"); +// Using the function inside the SELECT will test client-side. +String query = "SELECT INSTR('asdf', 'sdf') FROM " + tableName; +testInstr(conn, query, 2); +query = "SELECT INSTR('asdf', substr) FROM " + tableName; +testInstr(conn, query, 2); +query = "SELECT INSTR('qwerty', 'sdf') FROM " + tableName; +testInstr(conn, query, 0); +query = "SELECT INSTR('qwerty', substr) FROM " + tableName; +testInstr(conn, query, 0); +// Test the built-in function in a where clause to make sure +// it works server-side (and not just client-side). +query = "SELECT name FROM " + tableName + " WHERE INSTR(name, substr) = 2"; +testInstrFilter(conn, query, "asdf"); +query = "SELECT name FROM " + tableName + " WHERE INSTR(name, 'sdf') = 2"; +testInstrFilter(conn, query, "asdf"); +query = "SELECT name FROM " + tableName + " WHERE INSTR('asdf', substr) = 2"; +testInstrFilter(conn, query, "asdf"); +query = "SELECT name FROM " + tableName + " WHERE INSTR('asdf', 'sdf') = 2"; +testInstrFilter(conn, query, "asdf"); +} } http://git-wip-us.apache.org/repos/asf/phoenix/blob/e83c6147/phoenix-core/src/main/java/org/apache/phoenix/expression/function/InstrFunction.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/InstrFunction.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/InstrFunction.java index 7a002f8..e6b4c16 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/InstrFunction.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/InstrFunction.java @@ -30,7 +30,6 @@ import org.apache.phoenix.schema.tuple.Tuple; import org.apache.phoenix.schema.types.PDataType; import org.apache.phoenix.schema.types.PInteger; import org.apache.phoenix.schema.types.PVarchar; -import org.apache.phoenix.util.ByteUtil; @BuiltInFunction(name=InstrFunction.NAME, args={ @Argument(allowedTypes={ PVarchar.class }), @@ -38,8 +37,9 @@ import org.apache.phoenix.util.ByteUtil; public class InstrFunction extends ScalarFunction{ public static final String NAME = "INSTR"; - -private String strToSearch = null; + +private String literalSourceStr = null; +private S
[10/51] [abbrv] phoenix git commit: PHOENIX-4946 Switch from HC's annotations (since removed) to JCIP annotations
PHOENIX-4946 Switch from HC's annotations (since removed) to JCIP annotations Avoids an old httpclient artifact conflicting with Hadoop3 implementation. Signed-off-by: Sergey Soldatov Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/02995aa3 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/02995aa3 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/02995aa3 Branch: refs/heads/4.x-cdh5.15 Commit: 02995aa3b439f6f137f6f11ce48cb52a2941785f Parents: a6c1aa4 Author: Josh Elser Authored: Wed Oct 3 22:43:05 2018 +0100 Committer: Pedro Boado Committed: Wed Oct 17 22:49:38 2018 +0100 -- phoenix-core/pom.xml | 6 -- .../src/main/java/org/apache/phoenix/cache/HashCache.java | 3 ++- .../main/java/org/apache/phoenix/compile/GroupByCompiler.java | 3 ++- .../java/org/apache/phoenix/memory/ChildMemoryManager.java | 5 +++-- .../java/org/apache/phoenix/memory/GlobalMemoryManager.java| 4 +++- .../main/java/org/apache/phoenix/parse/FunctionParseNode.java | 3 ++- .../src/main/java/org/apache/phoenix/query/QueryServices.java | 3 ++- .../src/main/java/org/apache/phoenix/schema/ColumnRef.java | 3 ++- .../main/java/org/apache/phoenix/schema/KeyValueSchema.java| 3 ++- .../src/main/java/org/apache/phoenix/schema/PNameImpl.java | 5 +++-- 10 files changed, 21 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/02995aa3/phoenix-core/pom.xml -- diff --git a/phoenix-core/pom.xml b/phoenix-core/pom.xml index c20c89c..57fc81b 100644 --- a/phoenix-core/pom.xml +++ b/phoenix-core/pom.xml @@ -283,12 +283,6 @@ protobuf-java ${protobuf-java.version} - - - org.apache.httpcomponents - httpclient - 4.0.1 - log4j log4j http://git-wip-us.apache.org/repos/asf/phoenix/blob/02995aa3/phoenix-core/src/main/java/org/apache/phoenix/cache/HashCache.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/cache/HashCache.java b/phoenix-core/src/main/java/org/apache/phoenix/cache/HashCache.java index 764fd17..80e37ce 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/cache/HashCache.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/cache/HashCache.java @@ -21,7 +21,8 @@ import java.io.Closeable; import java.io.IOException; import java.util.List; -import org.apache.http.annotation.Immutable; +import net.jcip.annotations.Immutable; + import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr; import org.apache.phoenix.schema.tuple.Tuple; http://git-wip-us.apache.org/repos/asf/phoenix/blob/02995aa3/phoenix-core/src/main/java/org/apache/phoenix/compile/GroupByCompiler.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/GroupByCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/GroupByCompiler.java index 0a9e1bc..4777c29 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/GroupByCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/GroupByCompiler.java @@ -23,8 +23,9 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import net.jcip.annotations.Immutable; + import org.apache.hadoop.hbase.util.Pair; -import org.apache.http.annotation.Immutable; import org.apache.phoenix.compile.OrderPreservingTracker.Ordering; import org.apache.phoenix.coprocessor.BaseScannerRegionObserver; import org.apache.phoenix.exception.SQLExceptionCode; http://git-wip-us.apache.org/repos/asf/phoenix/blob/02995aa3/phoenix-core/src/main/java/org/apache/phoenix/memory/ChildMemoryManager.java -- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/memory/ChildMemoryManager.java b/phoenix-core/src/main/java/org/apache/phoenix/memory/ChildMemoryManager.java index da009fb..f5ad5dd 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/memory/ChildMemoryManager.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/memory/ChildMemoryManager.java @@ -17,8 +17,9 @@ */ package org.apache.phoenix.memory; -import org.apache.http.annotation.GuardedBy; -import org.apache.http.annotation.ThreadSafe; +import net.jcip.annotations.GuardedBy; +import net.jcip.annotations.ThreadSafe; + import org.apache.phoenix.exception.SQLExceptionCode; import org.apache.phoenix.exception.SQLExceptionInfo; http://git-wip-us.apache.org/repos/asf/phoenix/blob/02995aa3/phoenix-core/src/main/java/org/apache/phoenix/memory/GlobalMemoryManager.java --
[28/51] [abbrv] phoenix git commit: PHOENIX-4688 Support SPNEGO for python driver via requests-kerberos
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3cac9217/python/phoenixdb/types.py -- diff --git a/python/phoenixdb/types.py b/python/phoenixdb/types.py deleted file mode 100644 index f41355a..000 --- a/python/phoenixdb/types.py +++ /dev/null @@ -1,202 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys -import time -import datetime -from decimal import Decimal -from phoenixdb.avatica.proto import common_pb2 - -__all__ = [ -'Date', 'Time', 'Timestamp', 'DateFromTicks', 'TimeFromTicks', 'TimestampFromTicks', -'Binary', 'STRING', 'BINARY', 'NUMBER', 'DATETIME', 'ROWID', 'BOOLEAN', -'JAVA_CLASSES', 'JAVA_CLASSES_MAP', 'TypeHelper', -] - - -def Date(year, month, day): -"""Constructs an object holding a date value.""" -return datetime.date(year, month, day) - - -def Time(hour, minute, second): -"""Constructs an object holding a time value.""" -return datetime.time(hour, minute, second) - - -def Timestamp(year, month, day, hour, minute, second): -"""Constructs an object holding a datetime/timestamp value.""" -return datetime.datetime(year, month, day, hour, minute, second) - - -def DateFromTicks(ticks): -"""Constructs an object holding a date value from the given UNIX timestamp.""" -return Date(*time.localtime(ticks)[:3]) - - -def TimeFromTicks(ticks): -"""Constructs an object holding a time value from the given UNIX timestamp.""" -return Time(*time.localtime(ticks)[3:6]) - - -def TimestampFromTicks(ticks): -"""Constructs an object holding a datetime/timestamp value from the given UNIX timestamp.""" -return Timestamp(*time.localtime(ticks)[:6]) - - -def Binary(value): -"""Constructs an object capable of holding a binary (long) string value.""" -return bytes(value) - - -def time_from_java_sql_time(n): -dt = datetime.datetime(1970, 1, 1) + datetime.timedelta(milliseconds=n) -return dt.time() - - -def time_to_java_sql_time(t): -return ((t.hour * 60 + t.minute) * 60 + t.second) * 1000 + t.microsecond // 1000 - - -def date_from_java_sql_date(n): -return datetime.date(1970, 1, 1) + datetime.timedelta(days=n) - - -def date_to_java_sql_date(d): -if isinstance(d, datetime.datetime): -d = d.date() -td = d - datetime.date(1970, 1, 1) -return td.days - - -def datetime_from_java_sql_timestamp(n): -return datetime.datetime(1970, 1, 1) + datetime.timedelta(milliseconds=n) - - -def datetime_to_java_sql_timestamp(d): -td = d - datetime.datetime(1970, 1, 1) -return td.microseconds // 1000 + (td.seconds + td.days * 24 * 3600) * 1000 - - -class ColumnType(object): - -def __init__(self, eq_types): -self.eq_types = tuple(eq_types) -self.eq_types_set = set(eq_types) - -def __eq__(self, other): -return other in self.eq_types_set - -def __cmp__(self, other): -if other in self.eq_types_set: -return 0 -if other < self.eq_types: -return 1 -else: -return -1 - - -STRING = ColumnType(['VARCHAR', 'CHAR']) -"""Type object that can be used to describe string-based columns.""" - -BINARY = ColumnType(['BINARY', 'VARBINARY']) -"""Type object that can be used to describe (long) binary columns.""" - -NUMBER = ColumnType([ -'INTEGER', 'UNSIGNED_INT', 'BIGINT', 'UNSIGNED_LONG', 'TINYINT', 'UNSIGNED_TINYINT', -'SMALLINT', 'UNSIGNED_SMALLINT', 'FLOAT', 'UNSIGNED_FLOAT', 'DOUBLE', 'UNSIGNED_DOUBLE', 'DECIMAL' -]) -"""Type object that can be used to describe numeric columns.""" - -DATETIME = ColumnType(['TIME', 'DATE', 'TIMESTAMP', 'UNSIGNED_TIME', 'UNSIGNED_DATE', 'UNSIGNED_TIMESTAMP']) -"""Type object that can be used to describe date/time columns.""" - -ROWID = ColumnType([]) -"""Only implemented for DB API 2.0 compatibility, not used.""" - -BOOLEAN = ColumnType(['BOOLEAN']) -"""Type object that can be used to describe boolean columns. This is a phoenixdb-specific extension.""" - - -# XXX ARRAY - -if sys.version_info[0] < 3: -_long = long # noqa: F821 -else: -_long = int - -JAVA_CLASSES = { -'bool_value': [ -('java.lang.Boolean', common_pb2.BOOLEAN, None, None), -], -'string_