Merge branch 'PHOENIX-3534' into system-catalog
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/15d4dace Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/15d4dace Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/15d4dace Branch: refs/heads/system-catalog Commit: 15d4dace4169009ac4fd11261d6c8cc72905fcec Parents: ae359fe 41f8142 Author: Thomas D'Silva <tdsi...@apache.org> Authored: Fri Jan 19 10:00:46 2018 -0800 Committer: Thomas D'Silva <tdsi...@apache.org> Committed: Fri Jan 19 10:00:46 2018 -0800 ---------------------------------------------------------------------- .gitignore | 2 + LICENSE | 43 +- NOTICE | 2 + bin/argparse-1.4.0/argparse.py | 2392 ++++++++++++ bin/daemon.py | 16 +- bin/queryserver.py | 2 +- bin/sqlline-thin.py | 9 +- bin/sqlline.py | 14 +- dev/make_rc.sh | 26 +- dev/release_files/LICENSE | 2 + dev/release_files/NOTICE | 8 + dev/test-patch.properties | 7 +- dev/test-patch.sh | 66 +- phoenix-assembly/pom.xml | 2 +- phoenix-client/pom.xml | 2 +- phoenix-core/pom.xml | 19 +- .../wal/ReadWriteKeyValuesWithCodecIT.java | 184 - .../wal/WALRecoveryRegionPostOpenIT.java | 330 ++ ...ReplayWithIndexWritesAndCompressedWALIT.java | 18 +- .../org/apache/phoenix/end2end/AggregateIT.java | 1012 +++++ .../phoenix/end2end/AggregateQueryIT.java | 23 +- .../AlterMultiTenantTableWithViewsIT.java | 118 +- .../apache/phoenix/end2end/AlterTableIT.java | 1249 +------ .../phoenix/end2end/AlterTableWithViewsIT.java | 223 +- .../org/apache/phoenix/end2end/Array1IT.java | 1004 +++++ .../org/apache/phoenix/end2end/Array2IT.java | 815 +++++ .../org/apache/phoenix/end2end/Array3IT.java | 770 ++++ .../phoenix/end2end/ArrayAppendFunctionIT.java | 42 +- .../phoenix/end2end/ArrayConcatFunctionIT.java | 39 +- .../org/apache/phoenix/end2end/ArrayIT.java | 2731 +------------- .../phoenix/end2end/AutoPartitionViewsIT.java | 22 +- .../phoenix/end2end/AutomaticRebuildIT.java | 219 -- .../end2end/BaseClientManagedTimeIT.java | 79 - .../org/apache/phoenix/end2end/BaseJoinIT.java | 456 --- .../phoenix/end2end/BasePermissionsIT.java | 754 ++++ .../org/apache/phoenix/end2end/BaseQueryIT.java | 169 +- .../end2end/BaseUniqueNamesOwnClusterIT.java | 5 - .../apache/phoenix/end2end/CaseStatementIT.java | 56 +- .../apache/phoenix/end2end/CastAndCoerceIT.java | 20 +- .../phoenix/end2end/ChangePermissionsIT.java | 270 ++ .../phoenix/end2end/ClientManagedTimeTest.java | 42 - .../end2end/ClientTimeArithmeticQueryIT.java | 808 ---- .../phoenix/end2end/CoalesceFunctionIT.java | 76 +- .../phoenix/end2end/CollationKeyFunctionIT.java | 181 + ...mnEncodedImmutableNonTxStatsCollectorIT.java | 39 + ...olumnEncodedImmutableTxStatsCollectorIT.java | 38 + ...lumnEncodedMutableNonTxStatsCollectorIT.java | 38 + .../ColumnEncodedMutableTxStatsCollectorIT.java | 38 + .../end2end/ColumnProjectionOptimizationIT.java | 70 +- .../phoenix/end2end/ConcurrentMutationsIT.java | 730 ++++ .../ConnectionQueryServicesTestImpl.java | 4 +- .../phoenix/end2end/ConnectionUtilIT.java | 10 - .../phoenix/end2end/ContextClassloaderIT.java | 9 - .../phoenix/end2end/CostBasedDecisionIT.java | 466 +++ .../CountDistinctApproximateHyperLogLogIT.java | 154 + .../apache/phoenix/end2end/CreateSchemaIT.java | 86 +- .../apache/phoenix/end2end/CreateTableIT.java | 924 +++-- .../phoenix/end2end/CsvBulkLoadToolIT.java | 38 + .../CursorWithRowValueConstructorIT.java | 672 ++++ .../phoenix/end2end/CustomEntityDataIT.java | 75 +- .../phoenix/end2end/DateArithmeticIT.java | 309 ++ .../org/apache/phoenix/end2end/DateTimeIT.java | 347 +- .../phoenix/end2end/DefaultColumnValueIT.java | 10 +- .../org/apache/phoenix/end2end/DeleteIT.java | 216 +- .../apache/phoenix/end2end/DerivedTableIT.java | 340 +- .../apache/phoenix/end2end/DistinctCountIT.java | 118 +- .../apache/phoenix/end2end/DropSchemaIT.java | 80 +- .../phoenix/end2end/EncodeFunctionIT.java | 20 + .../phoenix/end2end/ExecuteStatementsIT.java | 4 +- .../end2end/ExplainPlanWithStatsDisabledIT.java | 259 ++ .../end2end/ExplainPlanWithStatsEnabledIT.java | 1107 ++++++ .../phoenix/end2end/ExtendedQueryExecIT.java | 30 +- .../phoenix/end2end/FirstValuesFunctionIT.java | 638 ++++ .../phoenix/end2end/FlappingAlterTableIT.java | 4 +- .../phoenix/end2end/FlappingLocalIndexIT.java | 79 +- .../apache/phoenix/end2end/FunkyNamesIT.java | 47 +- .../apache/phoenix/end2end/GroupByCaseIT.java | 948 ----- .../org/apache/phoenix/end2end/GroupByIT.java | 397 +- .../org/apache/phoenix/end2end/HashJoinIT.java | 3456 ------------------ .../phoenix/end2end/HashJoinLocalIndexIT.java | 128 - .../apache/phoenix/end2end/HashJoinMoreIT.java | 909 ----- .../org/apache/phoenix/end2end/InListIT.java | 13 +- .../org/apache/phoenix/end2end/InQueryIT.java | 247 ++ .../apache/phoenix/end2end/IndexExtendedIT.java | 401 +- .../phoenix/end2end/IndexScrutinyToolIT.java | 759 ++++ .../end2end/IndexToolForPartialBuildIT.java | 81 +- ...olForPartialBuildWithNamespaceEnabledIT.java | 22 +- .../org/apache/phoenix/end2end/IndexToolIT.java | 309 ++ .../apache/phoenix/end2end/IntArithmeticIT.java | 214 ++ .../phoenix/end2end/LastValuesFunctionIT.java | 640 ++++ .../phoenix/end2end/LikeExpressionIT.java | 149 +- .../phoenix/end2end/LocalIndexSplitMergeIT.java | 266 ++ .../phoenix/end2end/MetaDataEndPointIT.java | 55 + .../MigrateSystemTablesToSystemNamespaceIT.java | 410 +++ .../phoenix/end2end/MultiCfQueryExecIT.java | 69 + .../apache/phoenix/end2end/MutableQueryIT.java | 424 --- .../apache/phoenix/end2end/MutationStateIT.java | 161 + .../phoenix/end2end/NativeHBaseTypesIT.java | 151 +- ...mnEncodedImmutableNonTxStatsCollectorIT.java | 38 + ...olumnEncodedImmutableTxStatsCollectorIT.java | 38 + .../org/apache/phoenix/end2end/NotQueryIT.java | 25 +- .../NotQueryWithGlobalImmutableIndexesIT.java | 42 + .../NotQueryWithLocalImmutableIndexesIT.java | 42 + .../phoenix/end2end/NthValueFunctionIT.java | 154 + .../java/org/apache/phoenix/end2end/NullIT.java | 157 + .../phoenix/end2end/NumericArithmeticIT.java | 426 +++ .../end2end/OctetLengthFunctionEnd2EndIT.java | 9 +- .../phoenix/end2end/OnDuplicateKeyIT.java | 39 +- .../phoenix/end2end/ParallelRunListener.java | 42 - .../end2end/ParallelStatsDisabledIT.java | 8 +- .../phoenix/end2end/ParallelStatsEnabledIT.java | 14 +- .../PartialResultServerConfigurationIT.java | 148 + .../PartialScannerResultsDisabledIT.java | 193 + .../apache/phoenix/end2end/PercentileIT.java | 168 +- .../apache/phoenix/end2end/PhoenixDriverIT.java | 160 + .../phoenix/end2end/PhoenixRuntimeIT.java | 1 - .../phoenix/end2end/PointInTimeQueryIT.java | 246 +- .../phoenix/end2end/ProductMetricsIT.java | 1031 ++---- .../end2end/QueryDatabaseMetaDataIT.java | 1697 ++++----- .../phoenix/end2end/QueryExecWithoutSCNIT.java | 3 +- .../org/apache/phoenix/end2end/QueryIT.java | 378 +- .../org/apache/phoenix/end2end/QueryMoreIT.java | 40 +- .../phoenix/end2end/QueryWithOffsetIT.java | 10 +- .../phoenix/end2end/QueryWithTableSampleIT.java | 305 ++ .../org/apache/phoenix/end2end/RangeScanIT.java | 281 ++ .../phoenix/end2end/ReadIsolationLevelIT.java | 46 +- .../end2end/RebuildIndexConnectionPropsIT.java | 130 + .../phoenix/end2end/RoundFloorCeilFuncIT.java | 21 +- .../apache/phoenix/end2end/RowTimestampIT.java | 369 ++ .../phoenix/end2end/RowValueConstructorIT.java | 365 +- .../org/apache/phoenix/end2end/ScanQueryIT.java | 439 --- .../end2end/SequenceBulkAllocationIT.java | 551 ++- .../org/apache/phoenix/end2end/SequenceIT.java | 973 ++--- .../apache/phoenix/end2end/SetPropertyIT.java | 1022 ++++++ .../end2end/SetPropertyOnEncodedTableIT.java | 34 + .../end2end/SetPropertyOnNonEncodedTableIT.java | 34 + .../apache/phoenix/end2end/SkipScanQueryIT.java | 88 + .../apache/phoenix/end2end/SortMergeJoinIT.java | 2563 ------------- .../phoenix/end2end/SortMergeJoinMoreIT.java | 135 + .../org/apache/phoenix/end2end/SortOrderIT.java | 11 +- .../phoenix/end2end/SpillableGroupByIT.java | 2 +- .../phoenix/end2end/StatsCollectorIT.java | 648 ---- .../apache/phoenix/end2end/StoreNullsIT.java | 80 +- .../phoenix/end2end/StoreNullsPropIT.java | 2 +- .../org/apache/phoenix/end2end/StringIT.java | 60 + .../org/apache/phoenix/end2end/SubqueryIT.java | 788 ---- .../end2end/SubqueryUsingSortMergeJoinIT.java | 566 --- ...SysTableNamespaceMappedStatsCollectorIT.java | 21 +- .../apache/phoenix/end2end/SystemCatalogIT.java | 96 + .../phoenix/end2end/SystemCatalogUpgradeIT.java | 121 + .../end2end/SystemTablePermissionsIT.java | 88 + .../phoenix/end2end/TableDDLPermissionsIT.java | 233 ++ .../end2end/TableSnapshotReadsMapReduceIT.java | 234 ++ .../apache/phoenix/end2end/TenantIdTypeIT.java | 6 +- .../end2end/TenantSpecificTablesDDLIT.java | 5 +- .../end2end/TenantSpecificViewIndexIT.java | 8 +- .../phoenix/end2end/ToNumberFunctionIT.java | 273 +- .../java/org/apache/phoenix/end2end/TopNIT.java | 64 +- .../phoenix/end2end/TruncateFunctionIT.java | 26 +- .../UngroupedAggregateRegionObserverIT.java | 171 + .../org/apache/phoenix/end2end/UngroupedIT.java | 244 ++ .../apache/phoenix/end2end/UnnestArrayIT.java | 99 +- .../UpdateCacheAcrossDifferentClientsIT.java | 337 ++ .../org/apache/phoenix/end2end/UpgradeIT.java | 395 +- .../phoenix/end2end/UpsertBigValuesIT.java | 72 +- .../apache/phoenix/end2end/UpsertSelectIT.java | 705 ++-- .../apache/phoenix/end2end/UpsertValuesIT.java | 492 +-- .../phoenix/end2end/UserDefinedFunctionsIT.java | 11 +- .../phoenix/end2end/VariableLengthPKIT.java | 1171 +++--- .../java/org/apache/phoenix/end2end/ViewIT.java | 252 +- .../phoenix/end2end/index/BaseIndexIT.java | 1215 ++++++ .../phoenix/end2end/index/BaseLocalIndexIT.java | 9 +- .../index/ChildViewsUseParentViewIndexIT.java | 7 +- .../phoenix/end2end/index/DropColumnIT.java | 26 +- .../index/GlobalImmutableNonTxIndexIT.java | 38 + .../end2end/index/GlobalImmutableTxIndexIT.java | 38 + .../index/GlobalMutableNonTxIndexIT.java | 38 + .../end2end/index/GlobalMutableTxIndexIT.java | 38 + .../phoenix/end2end/index/ImmutableIndexIT.java | 149 +- .../end2end/index/IndexExpressionIT.java | 1552 -------- .../phoenix/end2end/index/IndexHandlerIT.java | 166 - .../apache/phoenix/end2end/index/IndexIT.java | 1150 ------ .../end2end/index/IndexMaintenanceIT.java | 444 +++ .../phoenix/end2end/index/IndexMetadataIT.java | 132 +- .../phoenix/end2end/index/IndexTestUtil.java | 2 +- .../phoenix/end2end/index/IndexUsageIT.java | 775 ++++ .../index/IndexWithTableSchemaChangeIT.java | 692 ++++ .../index/LocalImmutableNonTxIndexIT.java | 38 + .../end2end/index/LocalImmutableTxIndexIT.java | 38 + .../phoenix/end2end/index/LocalIndexIT.java | 143 +- .../end2end/index/LocalMutableNonTxIndexIT.java | 38 + .../end2end/index/LocalMutableTxIndexIT.java | 37 + .../end2end/index/MutableIndexFailureIT.java | 373 +- .../phoenix/end2end/index/MutableIndexIT.java | 162 +- .../index/MutableIndexReplicationIT.java | 13 - .../index/MutableIndexSplitForwardScanIT.java | 34 + .../end2end/index/MutableIndexSplitIT.java | 182 + .../index/MutableIndexSplitReverseScanIT.java | 34 + .../end2end/index/PartialIndexRebuilderIT.java | 1035 ++++++ .../end2end/index/ReadOnlyIndexFailureIT.java | 291 -- .../phoenix/end2end/index/ViewIndexIT.java | 41 +- .../apache/phoenix/end2end/join/BaseJoinIT.java | 473 +++ .../phoenix/end2end/join/HashJoinCacheIT.java | 101 + .../end2end/join/HashJoinGlobalIndexIT.java | 399 ++ .../apache/phoenix/end2end/join/HashJoinIT.java | 2316 ++++++++++++ .../end2end/join/HashJoinLocalIndexIT.java | 528 +++ .../phoenix/end2end/join/HashJoinMoreIT.java | 915 +++++ .../phoenix/end2end/join/HashJoinNoIndexIT.java | 391 ++ .../join/SortMergeJoinGlobalIndexIT.java | 84 + .../phoenix/end2end/join/SortMergeJoinIT.java | 2431 ++++++++++++ .../end2end/join/SortMergeJoinLocalIndexIT.java | 84 + .../end2end/join/SortMergeJoinNoIndexIT.java | 66 + .../apache/phoenix/end2end/join/SubqueryIT.java | 788 ++++ .../join/SubqueryUsingSortMergeJoinIT.java | 566 +++ .../phoenix/end2end/salted/SaltedTableIT.java | 103 +- .../apache/phoenix/execute/PartialCommitIT.java | 36 +- .../UpsertSelectOverlappingBatchesIT.java | 306 ++ .../FailForUnsupportedHBaseVersionsIT.java | 6 +- .../EndToEndCoveredColumnsIndexBuilderIT.java | 346 -- .../example/EndToEndCoveredIndexingIT.java | 903 ----- .../EndtoEndIndexingWithCompressionIT.java | 45 - .../covered/example/FailWithoutRetriesIT.java | 143 - .../DelayedTableResultIteratorFactory.java | 22 +- .../phoenix/iterate/ScannerLeaseRenewalIT.java | 9 - .../phoenix/monitoring/PhoenixMetricsIT.java | 302 +- .../SystemCatalogWALEntryFilterIT.java | 85 +- .../apache/phoenix/rpc/PhoenixClientRpcIT.java | 1 - .../apache/phoenix/rpc/PhoenixServerRpcIT.java | 111 +- .../org/apache/phoenix/rpc/UpdateCacheIT.java | 32 +- .../phoenix/rpc/UpdateCacheWithScnIT.java | 49 - .../phoenix/schema/stats/StatsCollectorIT.java | 832 +++++ .../apache/phoenix/trace/BaseTracingTestIT.java | 149 +- .../phoenix/trace/DelegateConnection.java | 324 -- .../phoenix/trace/DisableableMetricsWriter.java | 84 - .../trace/PhoenixTableMetricsWriterIT.java | 45 +- .../phoenix/trace/PhoenixTraceReaderIT.java | 180 - .../phoenix/trace/PhoenixTracingEndToEndIT.java | 243 +- .../phoenix/tx/FlappingTransactionIT.java | 43 +- .../phoenix/tx/ParameterizedTransactionIT.java | 15 +- .../org/apache/phoenix/tx/TransactionIT.java | 44 +- .../org/apache/phoenix/tx/TxCheckpointIT.java | 81 +- .../apache/phoenix/util/IndexScrutinyIT.java | 106 + phoenix-core/src/main/antlr3/PhoenixSQL.g | 90 +- .../hadoop/hbase/ipc/PhoenixRpcScheduler.java | 10 + .../org/apache/hadoop/hbase/ipc/RpcUtil.java | 32 + .../ipc/controller/IndexRpcController.java | 6 + ...erRegionServerIndexRpcControllerFactory.java | 65 + ...egionServerMetadataRpcControllerFactory.java | 62 + .../ipc/controller/MetadataRpcController.java | 5 + .../controller/ServerRpcControllerFactory.java | 42 +- .../DataTableLocalIndexRegionScanner.java | 74 +- .../IndexHalfStoreFileReaderGenerator.java | 17 +- .../hadoop/hbase/regionserver/ScanInfoUtil.java | 35 + .../hbase/regionserver/ScannerContextUtil.java | 41 + .../org/apache/phoenix/cache/GlobalCache.java | 4 +- .../phoenix/cache/IndexMetaDataCache.java | 7 +- .../org/apache/phoenix/cache/NoOpCache.java | 93 + .../apache/phoenix/cache/ServerCacheClient.java | 368 +- .../apache/phoenix/cache/TenantCacheImpl.java | 2 + .../phoenix/compile/AggregationManager.java | 18 +- .../phoenix/compile/BaseMutationPlan.java | 20 + .../phoenix/compile/CloseStatementCompiler.java | 56 + .../ColumnNameTrackingExpressionCompiler.java | 46 + .../phoenix/compile/CreateTableCompiler.java | 24 +- .../phoenix/compile/DeclareCursorCompiler.java | 75 + .../phoenix/compile/DelegateMutationPlan.java | 20 + .../apache/phoenix/compile/DeleteCompiler.java | 1095 +++--- .../phoenix/compile/ExpressionCompiler.java | 2 +- .../apache/phoenix/compile/FromCompiler.java | 159 +- .../apache/phoenix/compile/JoinCompiler.java | 51 +- .../phoenix/compile/ListJarsQueryPlan.java | 26 +- .../apache/phoenix/compile/MutationPlan.java | 5 +- .../phoenix/compile/OpenStatementCompiler.java | 56 + .../phoenix/compile/OrderPreservingTracker.java | 2 +- .../apache/phoenix/compile/PostDDLCompiler.java | 4 +- .../phoenix/compile/PostIndexDDLCompiler.java | 9 +- .../compile/PostLocalIndexDDLCompiler.java | 2 +- .../phoenix/compile/ProjectionCompiler.java | 57 +- .../apache/phoenix/compile/QueryCompiler.java | 6 +- .../org/apache/phoenix/compile/QueryPlan.java | 6 +- .../org/apache/phoenix/compile/ScanRanges.java | 32 +- .../phoenix/compile/StatementContext.java | 4 +- .../apache/phoenix/compile/StatementPlan.java | 19 + .../phoenix/compile/SubselectRewriter.java | 137 +- .../apache/phoenix/compile/TraceQueryPlan.java | 26 +- .../compile/TupleProjectionCompiler.java | 8 +- .../apache/phoenix/compile/UnionCompiler.java | 11 +- .../apache/phoenix/compile/UpsertCompiler.java | 1179 +++--- .../apache/phoenix/compile/WhereCompiler.java | 54 +- .../apache/phoenix/compile/WhereOptimizer.java | 13 +- .../BaseMetaDataEndpointObserver.java | 111 + .../phoenix/coprocessor/BaseRegionScanner.java | 4 +- .../coprocessor/BaseScannerRegionObserver.java | 339 +- .../DelegateRegionCoprocessorEnvironment.java | 114 + .../coprocessor/DelegateRegionScanner.java | 4 +- .../HashJoinCacheNotFoundException.java | 45 + .../coprocessor/HashJoinRegionScanner.java | 53 +- .../coprocessor/MetaDataEndpointImpl.java | 2380 ++++++------ .../coprocessor/MetaDataEndpointObserver.java | 68 + .../phoenix/coprocessor/MetaDataProtocol.java | 27 +- .../coprocessor/MetaDataRegionObserver.java | 403 +- .../phoenix/coprocessor/OrphanCleaner.java | 68 + .../coprocessor/PhoenixAccessController.java | 611 ++++ .../PhoenixMetaDataCoprocessorHost.java | 236 ++ .../PhoenixTransactionalProcessor.java | 4 +- .../phoenix/coprocessor/ScanRegionObserver.java | 329 +- .../coprocessor/ServerCachingEndpointImpl.java | 48 +- .../apache/phoenix/coprocessor/TableInfo.java | 82 + .../coprocessor/TableViewFinderResult.java | 49 + .../UngroupedAggregateRegionObserver.java | 439 ++- .../apache/phoenix/coprocessor/ViewFinder.java | 221 ++ .../coprocessor/WhereConstantParser.java | 117 + .../coprocessor/generated/MetaDataProtos.java | 61 +- .../coprocessor/generated/PTableProtos.java | 340 +- .../phoenix/exception/SQLExceptionCode.java | 39 +- .../exception/UpgradeInProgressException.java | 8 +- .../apache/phoenix/execute/AggregatePlan.java | 51 +- .../apache/phoenix/execute/BaseQueryPlan.java | 113 +- .../phoenix/execute/ClientAggregatePlan.java | 28 + .../apache/phoenix/execute/ClientScanPlan.java | 25 + .../apache/phoenix/execute/CommitException.java | 8 +- .../apache/phoenix/execute/CorrelatePlan.java | 25 + .../apache/phoenix/execute/CursorFetchPlan.java | 71 + .../apache/phoenix/execute/DelegateHTable.java | 22 +- .../phoenix/execute/DelegateQueryPlan.java | 25 + .../apache/phoenix/execute/HashJoinPlan.java | 204 +- .../execute/LiteralResultIterationPlan.java | 34 +- .../apache/phoenix/execute/MutationState.java | 642 ++-- .../org/apache/phoenix/execute/ScanPlan.java | 96 +- .../phoenix/execute/SortMergeJoinPlan.java | 115 +- .../apache/phoenix/execute/TupleProjector.java | 12 +- .../org/apache/phoenix/execute/UnionPlan.java | 64 +- .../phoenix/expression/ExpressionType.java | 10 +- .../phoenix/expression/LikeExpression.java | 2 +- .../expression/ProjectedColumnExpression.java | 7 +- .../RowValueConstructorExpression.java | 4 +- .../expression/SingleCellColumnExpression.java | 35 +- .../expression/StringConcatExpression.java | 3 + .../FirstLastValueBaseClientAggregator.java | 65 +- .../FirstLastValueServerAggregator.java | 15 +- .../aggregator/PercentileClientAggregator.java | 6 +- .../function/ArrayConcatFunction.java | 12 +- .../function/ArrayModifierFunction.java | 2 - .../expression/function/CoalesceFunction.java | 2 +- .../function/CollationKeyFunction.java | 199 + .../function/ConvertTimezoneFunction.java | 10 + .../function/CurrentDateFunction.java | 14 +- .../function/CurrentTimeFunction.java | 12 +- ...stinctCountHyperLogLogAggregateFunction.java | 192 + .../expression/function/EncodeFunction.java | 5 +- .../function/FirstLastValueBaseFunction.java | 20 +- .../expression/function/FirstValueFunction.java | 8 +- .../function/FirstValuesFunction.java | 97 + .../function/FloorDateExpression.java | 11 +- .../expression/function/GetBitFunction.java | 1 + .../expression/function/GetByteFunction.java | 1 + .../expression/function/LastValueFunction.java | 8 +- .../expression/function/LastValuesFunction.java | 97 + .../expression/function/LowerFunction.java | 6 +- .../expression/function/LpadFunction.java | 11 +- .../expression/function/MD5Function.java | 3 +- .../expression/function/NthValueFunction.java | 12 +- .../function/OctetLengthFunction.java | 1 + .../function/RegexpReplaceFunction.java | 9 + .../function/RoundDecimalExpression.java | 9 +- .../function/RoundTimestampExpression.java | 11 +- .../expression/function/ScalarFunction.java | 9 + .../expression/function/SetBitFunction.java | 3 + .../expression/function/SetByteFunction.java | 2 + .../expression/function/SignFunction.java | 3 + .../expression/function/SubstrFunction.java | 13 +- .../function/TimezoneOffsetFunction.java | 11 +- .../visitor/CloneExpressionVisitor.java | 2 +- .../visitor/TraverseNoExpressionVisitor.java | 5 +- .../MultiCFCQKeyValueComparisonFilter.java | 4 +- .../filter/MultiCQKeyValueComparisonFilter.java | 4 +- .../MultiEncodedCQKeyValueComparisonFilter.java | 69 +- .../filter/MultiKeyValueComparisonFilter.java | 41 +- .../org/apache/phoenix/hbase/index/Indexer.java | 552 ++- .../apache/phoenix/hbase/index/LockManager.java | 252 ++ .../apache/phoenix/hbase/index/ValueGetter.java | 10 +- .../hbase/index/builder/BaseIndexBuilder.java | 6 + .../hbase/index/builder/BaseIndexCodec.java | 33 +- .../hbase/index/builder/IndexBuildManager.java | 91 +- .../hbase/index/builder/IndexBuilder.java | 3 + .../hbase/index/covered/IndexMetaData.java | 24 +- .../hbase/index/covered/LocalTableState.java | 91 +- .../hbase/index/covered/NonTxIndexBuilder.java | 200 +- .../phoenix/hbase/index/covered/TableState.java | 3 +- .../index/covered/data/LazyValueGetter.java | 107 +- .../hbase/index/covered/data/LocalTable.java | 22 +- .../index/covered/example/ColumnGroup.java | 112 - .../index/covered/example/CoveredColumn.java | 107 - .../example/CoveredColumnIndexCodec.java | 364 -- .../CoveredColumnIndexSpecifierBuilder.java | 184 - .../covered/example/CoveredColumnIndexer.java | 164 - .../filter/ApplyAndFilterDeletesFilter.java | 7 +- .../covered/update/IndexUpdateManager.java | 26 +- .../index/covered/update/SortedCollection.java | 128 - .../index/metrics/MetricsIndexerSource.java | 150 + .../metrics/MetricsIndexerSourceFactory.java | 38 + .../index/metrics/MetricsIndexerSourceImpl.java | 136 + .../hbase/index/scanner/EmptyScanner.java | 16 +- .../hbase/index/scanner/ScannerBuilder.java | 25 +- .../hbase/index/table/CachingHTableFactory.java | 184 - .../hbase/index/util/IndexManagementUtil.java | 96 +- .../phoenix/hbase/index/write/IndexWriter.java | 15 +- .../hbase/index/write/IndexWriterUtils.java | 99 +- .../write/LeaveIndexActiveFailurePolicy.java | 62 + .../write/ParallelWriterIndexCommitter.java | 15 +- .../hbase/index/write/RecoveryIndexWriter.java | 1 - .../TrackingParallelWriterIndexCommitter.java | 245 ++ .../recovery/StoreFailuresInCachePolicy.java | 1 + .../TrackingParallelWriterIndexCommitter.java | 241 -- .../apache/phoenix/index/IndexMaintainer.java | 167 +- .../index/IndexMetaDataCacheFactory.java | 15 +- .../phoenix/index/PhoenixIndexBuilder.java | 16 +- .../apache/phoenix/index/PhoenixIndexCodec.java | 4 +- .../index/PhoenixIndexFailurePolicy.java | 190 +- .../phoenix/index/PhoenixIndexMetaData.java | 45 +- .../index/PhoenixTransactionalIndexer.java | 175 +- .../phoenix/iterate/BaseResultIterators.java | 428 ++- .../phoenix/iterate/ChunkedResultIterator.java | 11 +- .../phoenix/iterate/CursorResultIterator.java | 75 + .../iterate/DefaultParallelScanGrouper.java | 64 +- .../DefaultTableResultIteratorFactory.java | 15 +- .../DistinctAggregatingResultIterator.java | 6 +- .../apache/phoenix/iterate/ExplainTable.java | 6 +- .../phoenix/iterate/FilterResultIterator.java | 5 +- .../iterate/MapReduceParallelScanGrouper.java | 67 +- .../NonAggregateRegionScannerFactory.java | 376 ++ .../phoenix/iterate/OrderedResultIterator.java | 2 +- .../phoenix/iterate/ParallelIterators.java | 23 +- .../phoenix/iterate/ParallelScanGrouper.java | 9 +- .../phoenix/iterate/RegionScannerFactory.java | 303 ++ .../phoenix/iterate/ScanningResultIterator.java | 96 +- .../apache/phoenix/iterate/SerialIterators.java | 26 +- .../apache/phoenix/iterate/SnapshotScanner.java | 183 + .../phoenix/iterate/TableResultIterator.java | 71 +- .../iterate/TableResultIteratorFactory.java | 10 +- .../phoenix/iterate/TableSamplerPredicate.java | 114 + .../iterate/TableSnapshotResultIterator.java | 156 + .../apache/phoenix/jdbc/DelegateConnection.java | 321 ++ .../phoenix/jdbc/DelegatePreparedStatement.java | 553 +++ .../apache/phoenix/jdbc/DelegateResultSet.java | 1008 +++++ .../apache/phoenix/jdbc/DelegateStatement.java | 254 ++ .../phoenix/jdbc/LoggingPhoenixConnection.java | 109 + .../jdbc/LoggingPhoenixPreparedStatement.java | 53 + .../phoenix/jdbc/LoggingPhoenixResultSet.java | 45 + .../phoenix/jdbc/LoggingPhoenixStatement.java | 48 + .../apache/phoenix/jdbc/PhoenixConnection.java | 612 ++-- .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 537 ++- .../phoenix/jdbc/PhoenixEmbeddedDriver.java | 46 +- .../apache/phoenix/jdbc/PhoenixMetricsLog.java | 35 + .../phoenix/jdbc/PhoenixPreparedStatement.java | 6 +- .../apache/phoenix/jdbc/PhoenixResultSet.java | 5 +- .../apache/phoenix/jdbc/PhoenixStatement.java | 335 +- .../apache/phoenix/join/HashCacheClient.java | 20 +- .../mapreduce/FormatToBytesWritableMapper.java | 1 + .../mapreduce/FormatToKeyValueReducer.java | 7 +- .../mapreduce/MultiHfileOutputFormat.java | 5 +- .../phoenix/mapreduce/PhoenixInputFormat.java | 12 +- .../phoenix/mapreduce/PhoenixOutputFormat.java | 13 +- .../phoenix/mapreduce/PhoenixRecordReader.java | 42 +- .../phoenix/mapreduce/PhoenixRecordWriter.java | 8 +- .../mapreduce/index/IndexScrutinyMapper.java | 377 ++ .../index/IndexScrutinyTableOutput.java | 345 ++ .../mapreduce/index/IndexScrutinyTool.java | 522 +++ .../phoenix/mapreduce/index/IndexTool.java | 57 +- .../mapreduce/index/PhoenixIndexDBWritable.java | 11 +- .../index/PhoenixIndexImportDirectMapper.java | 2 +- .../index/PhoenixIndexImportMapper.java | 2 +- .../index/PhoenixIndexPartialBuildMapper.java | 7 +- .../index/PhoenixScrutinyJobCounters.java | 41 + .../index/SourceTargetColumnNames.java | 195 + .../phoenix/mapreduce/util/ConnectionUtil.java | 25 +- .../mapreduce/util/IndexColumnNames.java | 251 ++ .../util/PhoenixConfigurationUtil.java | 144 +- .../mapreduce/util/PhoenixMapReduceUtil.java | 64 + .../phoenix/memory/GlobalMemoryManager.java | 52 +- .../apache/phoenix/monitoring/AtomicMetric.java | 11 +- .../phoenix/monitoring/CombinableMetric.java | 12 +- .../monitoring/CombinableMetricImpl.java | 11 +- .../phoenix/monitoring/GlobalClientMetrics.java | 9 +- .../phoenix/monitoring/GlobalMetricImpl.java | 11 +- .../org/apache/phoenix/monitoring/Metric.java | 10 +- .../apache/phoenix/monitoring/MetricType.java | 83 +- .../phoenix/monitoring/MutationMetricQueue.java | 25 +- .../phoenix/monitoring/NonAtomicMetric.java | 13 +- .../phoenix/monitoring/OverAllQueryMetrics.java | 16 +- .../phoenix/monitoring/ReadMetricQueue.java | 12 +- .../phoenix/monitoring/ScanMetricsHolder.java | 121 + .../java/org/apache/phoenix/optimize/Cost.java | 123 + .../apache/phoenix/optimize/QueryOptimizer.java | 44 +- .../phoenix/parse/AddColumnStatement.java | 2 +- .../phoenix/parse/AlterIndexStatement.java | 14 + .../phoenix/parse/ChangePermsStatement.java | 102 + .../apache/phoenix/parse/CloseStatement.java | 40 + .../apache/phoenix/parse/ConcreteTableNode.java | 22 + .../phoenix/parse/CreateSchemaStatement.java | 2 +- .../org/apache/phoenix/parse/CursorName.java | 44 + .../phoenix/parse/DeclareCursorStatement.java | 60 + .../apache/phoenix/parse/DeleteStatement.java | 5 + ...tinctCountHyperLogLogAggregateParseNode.java | 39 + .../apache/phoenix/parse/FetchStatement.java | 52 + .../phoenix/parse/FilterableStatement.java | 1 + .../parse/FirstValuesAggregateParseNode.java | 38 + .../parse/LastValuesAggregateParseNode.java | 38 + .../apache/phoenix/parse/NamedTableNode.java | 21 +- .../org/apache/phoenix/parse/OpenStatement.java | 40 + .../apache/phoenix/parse/ParseNodeFactory.java | 59 +- .../org/apache/phoenix/parse/SQLParser.java | 76 + .../apache/phoenix/parse/SelectStatement.java | 15 + .../phoenix/query/BaseQueryServicesImpl.java | 3 +- .../phoenix/query/ConnectionQueryServices.java | 4 +- .../query/ConnectionQueryServicesImpl.java | 606 ++- .../query/ConnectionlessQueryServicesImpl.java | 29 +- .../query/DelegateConnectionQueryServices.java | 14 +- .../query/PropertyNotAllowedException.java | 35 + .../apache/phoenix/query/PropertyPolicy.java | 63 + .../phoenix/query/PropertyPolicyProvider.java | 39 + .../apache/phoenix/query/QueryConstants.java | 23 + .../org/apache/phoenix/query/QueryServices.java | 57 +- .../phoenix/query/QueryServicesOptions.java | 173 +- .../SystemCatalogWALEntryFilter.java | 42 +- .../schema/ColumnFamilyNotFoundException.java | 4 +- .../phoenix/schema/ColumnNotFoundException.java | 14 +- .../org/apache/phoenix/schema/ColumnRef.java | 4 +- .../apache/phoenix/schema/DelegateColumn.java | 15 + .../apache/phoenix/schema/DelegateTable.java | 5 + .../schema/FunctionNotFoundException.java | 2 +- .../apache/phoenix/schema/MetaDataClient.java | 1026 ++++-- .../schema/MetaDataEntityNotFoundException.java | 20 +- .../phoenix/schema/MetaDataSplitPolicy.java | 23 +- .../java/org/apache/phoenix/schema/PColumn.java | 12 + .../phoenix/schema/PColumnFamilyImpl.java | 3 - .../org/apache/phoenix/schema/PColumnImpl.java | 114 +- .../org/apache/phoenix/schema/PIndexState.java | 3 +- .../apache/phoenix/schema/PMetaDataImpl.java | 3 +- .../java/org/apache/phoenix/schema/PTable.java | 39 +- .../org/apache/phoenix/schema/PTableImpl.java | 164 +- .../org/apache/phoenix/schema/RowKeySchema.java | 4 +- .../org/apache/phoenix/schema/SaltingUtil.java | 4 +- .../phoenix/schema/SchemaNotFoundException.java | 10 +- .../schema/SequenceNotFoundException.java | 14 +- .../phoenix/schema/TableNotFoundException.java | 19 +- .../apache/phoenix/schema/TableProperty.java | 18 + .../org/apache/phoenix/schema/TableRef.java | 9 +- .../schema/TablesNotInSyncException.java | 22 + .../UpsertColumnsValuesMismatchException.java | 41 + .../org/apache/phoenix/schema/ValueSchema.java | 2 +- .../stats/DefaultStatisticsCollector.java | 127 +- .../phoenix/schema/stats/GuidePostsInfo.java | 59 +- .../schema/stats/GuidePostsInfoBuilder.java | 48 +- .../stats/StatisticsCollectorFactory.java | 13 +- .../phoenix/schema/stats/StatisticsScanner.java | 6 +- .../phoenix/schema/stats/StatisticsUtil.java | 62 +- .../phoenix/schema/stats/StatisticsWriter.java | 102 +- .../tuple/EncodedColumnQualiferCellsList.java | 85 +- .../schema/tuple/MultiKeyValueTuple.java | 7 +- .../phoenix/schema/tuple/ValueGetterTuple.java | 12 +- .../phoenix/schema/types/PArrayDataType.java | 107 +- .../schema/types/PArrayDataTypeDecoder.java | 79 +- .../schema/types/PArrayDataTypeEncoder.java | 81 +- .../apache/phoenix/schema/types/PBoolean.java | 9 + .../apache/phoenix/schema/types/PDataType.java | 23 +- .../org/apache/phoenix/schema/types/PDate.java | 9 + .../apache/phoenix/schema/types/PDecimal.java | 9 + .../apache/phoenix/schema/types/PDouble.java | 9 + .../org/apache/phoenix/schema/types/PLong.java | 18 +- .../apache/phoenix/schema/types/PTimestamp.java | 9 + .../phoenix/schema/types/PUnsignedDouble.java | 259 +- .../phoenix/schema/types/PUnsignedLong.java | 9 + .../apache/phoenix/schema/types/PVarchar.java | 9 + .../apache/phoenix/trace/TraceMetricSource.java | 183 - .../org/apache/phoenix/trace/TraceReader.java | 16 +- .../apache/phoenix/trace/TraceSpanReceiver.java | 104 + .../org/apache/phoenix/trace/TraceWriter.java | 333 ++ .../org/apache/phoenix/trace/util/Tracing.java | 16 +- .../transaction/OmidTransactionContext.java | 174 + .../transaction/OmidTransactionTable.java | 364 ++ .../transaction/PhoenixTransactionContext.java | 191 + .../transaction/PhoenixTransactionalTable.java | 149 + .../transaction/TephraTransactionContext.java | 514 +++ .../transaction/TephraTransactionTable.java | 350 ++ .../phoenix/transaction/TransactionFactory.java | 143 + .../java/org/apache/phoenix/util/ByteUtil.java | 15 + .../java/org/apache/phoenix/util/CostUtil.java | 90 + .../org/apache/phoenix/util/CursorUtil.java | 189 + .../phoenix/util/DefaultEnvironmentEdge.java | 3 +- .../apache/phoenix/util/EncodedColumnsUtil.java | 50 +- .../apache/phoenix/util/EnvironmentEdge.java | 5 +- .../phoenix/util/EnvironmentEdgeManager.java | 1 + .../org/apache/phoenix/util/ExpressionUtil.java | 14 + .../util/FirstLastNthValueDataContainer.java | 7 +- .../java/org/apache/phoenix/util/IndexUtil.java | 121 +- .../java/org/apache/phoenix/util/JDBCUtil.java | 6 +- .../org/apache/phoenix/util/KeyValueUtil.java | 46 + .../java/org/apache/phoenix/util/LogUtil.java | 10 + .../org/apache/phoenix/util/MetaDataUtil.java | 175 +- .../org/apache/phoenix/util/NumberUtil.java | 32 + .../org/apache/phoenix/util/PhoenixRuntime.java | 140 +- .../org/apache/phoenix/util/PropertiesUtil.java | 53 +- .../java/org/apache/phoenix/util/QueryUtil.java | 122 +- .../org/apache/phoenix/util/RepairUtil.java | 10 +- .../java/org/apache/phoenix/util/ScanUtil.java | 9 +- .../org/apache/phoenix/util/SchemaUtil.java | 139 +- .../org/apache/phoenix/util/ServerUtil.java | 59 + .../apache/phoenix/util/TransactionUtil.java | 38 +- .../org/apache/phoenix/util/UpgradeUtil.java | 130 +- .../apache/phoenix/util/VarBinaryFormatter.java | 52 + .../hbase/ipc/PhoenixIndexRpcSchedulerTest.java | 2 +- .../wal/ReadWriteKeyValuesWithCodecTest.java | 186 + .../apache/phoenix/cache/TenantCacheTest.java | 43 +- .../phoenix/compile/CursorCompilerTest.java | 87 + .../phoenix/compile/QueryCompilerTest.java | 384 +- .../phoenix/compile/QueryOptimizerTest.java | 13 +- .../phoenix/compile/WhereOptimizerTest.java | 3 +- .../coprocessor/MetaDataEndpointImplTest.java | 287 ++ .../phoenix/execute/CorrelatePlanTest.java | 8 +- .../execute/LiteralResultIteratorPlanTest.java | 9 +- .../phoenix/execute/UnnestArrayPlanTest.java | 7 +- .../expression/ArrayConcatFunctionTest.java | 27 +- .../expression/ColumnExpressionTest.java | 9 +- .../expression/OctetLengthFunctionTest.java | 7 +- .../function/CollationKeyFunctionTest.java | 243 ++ .../phoenix/filter/SkipScanBigFilterTest.java | 3 +- .../hbase/index/covered/ColumnGroup.java | 112 + .../hbase/index/covered/CoveredColumn.java | 106 + .../index/covered/CoveredColumnIndexCodec.java | 372 ++ .../CoveredColumnIndexSpecifierBuilder.java | 182 + .../hbase/index/covered/CoveredColumnsTest.java | 46 + .../index/covered/LocalTableStateTest.java | 295 ++ .../index/covered/NonTxIndexBuilderTest.java | 342 ++ .../hbase/index/covered/TestColumnTracker.java | 61 + .../covered/TestCoveredColumnIndexCodec.java | 246 ++ .../hbase/index/covered/TestCoveredColumns.java | 46 - .../TestCoveredIndexSpecifierBuilder.java | 72 + .../index/covered/TestLocalTableState.java | 198 - .../index/covered/data/TestLocalTable.java | 63 + .../covered/example/TestColumnTracker.java | 61 - .../example/TestCoveredColumnIndexCodec.java | 250 -- .../TestCoveredIndexSpecifierBuilder.java | 75 - .../covered/update/TestIndexUpdateManager.java | 20 +- .../index/util/TestIndexManagementUtil.java | 29 + .../index/write/TestCachingHTableFactory.java | 69 - .../hbase/index/write/TestIndexWriter.java | 102 +- .../index/write/TestParalleIndexWriter.java | 12 +- .../write/TestParalleWriterIndexCommitter.java | 12 +- .../index/write/TestWALRecoveryCaching.java | 10 +- .../recovery/TestPerRegionIndexWriteCache.java | 2 +- .../phoenix/index/IndexMaintainerTest.java | 5 +- .../iterate/SpoolingResultIteratorTest.java | 2 +- .../apache/phoenix/jdbc/PhoenixDriverTest.java | 8 +- .../phoenix/jdbc/PhoenixEmbeddedDriverTest.java | 19 + .../phoenix/mapreduce/index/BaseIndexTest.java | 97 + .../index/IndexScrutinyTableOutputTest.java | 87 + .../mapreduce/util/IndexColumnNamesTest.java | 74 + .../phoenix/memory/MemoryManagerTest.java | 208 +- .../apache/phoenix/metrics/MetricTypeTest.java | 42 + .../apache/phoenix/parse/CursorParserTest.java | 367 ++ .../apache/phoenix/parse/QueryParserTest.java | 80 +- .../java/org/apache/phoenix/query/BaseTest.java | 318 +- .../query/ConnectionQueryServicesImplTest.java | 76 + .../query/ParallelIteratorsSplitTest.java | 23 +- .../query/PropertyPolicyProviderTest.java | 52 + .../phoenix/query/QueryServicesTestImpl.java | 12 +- .../phoenix/query/TestPropertyPolicy.java | 47 + .../schema/ImmutableStorageSchemeTest.java | 241 +- .../apache/phoenix/schema/RowKeySchemaTest.java | 2 +- .../phoenix/schema/RowKeyValueAccessorTest.java | 2 +- .../schema/stats/StatisticsScannerTest.java | 4 +- .../schema/types/PDataTypeForArraysTest.java | 73 + .../phoenix/schema/types/PDataTypeTest.java | 31 + .../phoenix/trace/TraceMetricsSourceTest.java | 95 - .../phoenix/trace/TraceSpanReceiverTest.java | 82 + .../org/apache/phoenix/util/IndexScrutiny.java | 165 + .../apache/phoenix/util/MetaDataUtilTest.java | 22 +- .../apache/phoenix/util/PropertiesUtilTest.java | 19 +- .../org/apache/phoenix/util/QueryUtilTest.java | 18 +- .../java/org/apache/phoenix/util/Repeat.java | 30 + .../apache/phoenix/util/RunUntilFailure.java | 90 + .../java/org/apache/phoenix/util/TestUtil.java | 199 +- .../org.apache.phoenix.query.PropertyPolicy | 16 + phoenix-flume/pom.xml | 6 +- phoenix-hive/pom.xml | 40 +- .../phoenix/hive/BaseHivePhoenixStoreIT.java | 5 +- .../apache/phoenix/hive/HiveMapReduceIT.java | 1 - .../apache/phoenix/hive/HivePhoenixStoreIT.java | 3 + .../org/apache/phoenix/hive/HiveTestUtil.java | 9 +- .../java/org/apache/phoenix/hive/HiveTezIT.java | 1 - .../org/apache/phoenix/hive/PhoenixRowKey.java | 17 +- .../phoenix/hive/PhoenixStorageHandler.java | 14 +- .../org/apache/phoenix/hive/PrimaryKeyData.java | 88 + .../hive/mapreduce/PhoenixRecordReader.java | 11 +- .../phoenix/hive/query/PhoenixQueryBuilder.java | 4 +- .../hive/util/PhoenixConnectionUtil.java | 2 +- .../hive/util/PhoenixStorageHandlerUtil.java | 9 +- .../apache/phoenix/hive/PrimaryKeyDataTest.java | 79 + phoenix-kafka/pom.xml | 32 +- phoenix-load-balancer/pom.xml | 84 + .../phoenix/end2end/LoadBalancerEnd2EndIT.java | 144 + .../service/LoadBalanceZookeeperConfImpl.java | 103 + .../loadbalancer/service/LoadBalancer.java | 178 + .../queryserver/register/ZookeeperRegistry.java | 72 + ...oadbalancer.service.LoadBalanceZookeeperConf | 1 + .../config/scenario/user_defined_scenario.xml | 4 +- phoenix-pherf/pom.xml | 6 +- .../org/apache/phoenix/pherf/DataIngestIT.java | 19 + .../apache/phoenix/pherf/ResultBaseTestIT.java | 4 +- .../phoenix/pherf/configuration/DataModel.java | 1 + .../apache/phoenix/pherf/configuration/Ddl.java | 68 + .../phoenix/pherf/configuration/Scenario.java | 49 +- .../pherf/configuration/XMLConfigParser.java | 15 +- .../pherf/result/impl/XMLResultHandler.java | 17 +- .../apache/phoenix/pherf/util/PhoenixUtil.java | 75 +- .../phoenix/pherf/workload/WriteWorkload.java | 14 +- .../scenario/prod_test_unsalted_scenario.xml | 11 +- .../phoenix/pherf/ConfigurationParserTest.java | 10 +- .../phoenix/pherf/XMLConfigParserTest.java | 53 + .../pherf/result/impl/XMLResultHandlerTest.java | 53 + .../resources/malicious_results_with_dtd.xml | 676 ++++ .../scenario/malicious_scenario_with_dtd.xml | 48 + .../test/resources/scenario/test_scenario.xml | 26 +- phoenix-pig/pom.xml | 2 +- .../java/org/apache/phoenix/pig/BasePigIT.java | 4 + .../apache/phoenix/pig/PhoenixHBaseStorage.java | 12 +- phoenix-protocol/src/main/MetaDataService.proto | 1 + phoenix-protocol/src/main/PTable.proto | 3 + phoenix-queryserver-client/pom.xml | 18 +- phoenix-queryserver/pom.xml | 12 +- .../HttpParamImpersonationQueryServerIT.java | 434 +++ .../phoenix/end2end/QueryServerBasicsIT.java | 183 +- .../phoenix/end2end/SecureQueryServerIT.java | 320 ++ .../src/it/resources/log4j.properties | 9 +- .../service/LoadBalanceZookeeperConf.java | 42 + .../phoenix/queryserver/register/Registry.java | 48 + .../phoenix/queryserver/server/QueryServer.java | 164 +- .../server/RemoteUserExtractorFactory.java | 36 + .../server/PhoenixRemoteUserExtractorTest.java | 108 + .../server/RemoteUserExtractorFactoryTest.java | 35 + phoenix-server/pom.xml | 7 +- phoenix-spark/pom.xml | 24 +- phoenix-spark/src/it/resources/globalSetup.sql | 3 +- .../phoenix/spark/AbstractPhoenixSparkIT.scala | 17 +- .../apache/phoenix/spark/PhoenixSparkIT.scala | 27 +- .../phoenix/spark/DataFrameFunctions.scala | 19 +- .../apache/phoenix/spark/DefaultSource.scala | 2 +- .../org/apache/phoenix/spark/PhoenixRDD.scala | 4 +- phoenix-tracing-webapp/pom.xml | 2 +- pom.xml | 94 +- 751 files changed, 79056 insertions(+), 40002 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/15d4dace/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java ---------------------------------------------------------------------- diff --cc phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index 4ad3a8c,6277b78..d48d0b7 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@@ -1904,20 -2401,16 +2401,16 @@@ public class MetaDataEndpointImpl exten PName parentTenantId = parentTenantIdCell!=null ? PNameFactory.newName(parentTenantIdCell.getValueArray(), parentTenantIdCell.getValueOffset(), parentTenantIdCell.getValueLength()) : null; byte[] linkKey = MetaDataUtil.getChildLinkKey(parentTenantId, table.getParentSchemaName(), table.getParentTableName(), table.getTenantId(), table.getName()); Delete linkDelete = new Delete(linkKey, clientTimeStamp); - rowsToDelete.add(linkDelete); + childLinkMutations.add(linkDelete); } } - // FIXME: Remove when unintentionally deprecated method is fixed (HBASE-7870). - // FIXME: the version of the Delete constructor without the lock args was introduced - // in 0.94.4, thus if we try to use it here we can no longer use the 0.94.2 version - // of the client. - Delete delete = new Delete(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), clientTimeStamp); - rowsToDelete.add(delete); - results.clear(); - scanner.next(results); - } while (!results.isEmpty()); + catalogMutations.add(scannerAdaptor.getRowDelete(clientTimeStamp)); + } while (scannerAdaptor.next()); + } + finally { + scanner.close(); } - + // Recursively delete indexes for (byte[] indexName : indexNames) { byte[] indexKey = SchemaUtil.getTableKey(tenantId, schemaName, indexName); @@@ -3537,56 -3790,30 +3790,37 @@@ return checkKeyInRegion(key, region, MutationCode.SCHEMA_NOT_IN_REGION); } - - /** - * Certain operations, such as DROP TABLE are not allowed if there a table has child views. This class wraps the - * Results of a scanning the Phoenix Metadata for child views for a specific table and stores an additional flag for - * whether whether SYSTEM.CATALOG has split across multiple regions. - */ - private static class TableViewFinderResult { - - private List<Result> results = Lists.newArrayList(); - private boolean allViewsNotInSingleRegion = false; - - private TableViewFinderResult() { - } - - private TableViewFinderResult(List<Result> results) { - this.results = results; - } + + private static class ViewInfo { + private byte[] tenantId; + private byte[] schemaName; + private byte[] viewName; - public boolean hasViews() { - return !results.isEmpty(); + public ViewInfo(byte[] tenantId, byte[] schemaName, byte[] viewName) { + super(); + this.tenantId = tenantId; + this.schemaName = schemaName; + this.viewName = viewName; } - private void setAllViewsNotInSingleRegion() { - allViewsNotInSingleRegion = true; + public byte[] getTenantId() { + return tenantId; } - private List<Result> getResults() { - return results; + public byte[] getSchemaName() { + return schemaName; } - /** - * Returns true is the table has views and they are all in the same HBase region. - */ - private boolean allViewsInSingleRegion() { - return results.size() > 0 && !allViewsNotInSingleRegion; - } - - /** - * Returns true is the table has views and they are all NOT in the same HBase region. - */ - private boolean allViewsInMultipleRegions() { - return results.size() > 0 && allViewsNotInSingleRegion; + public byte[] getViewName() { + return viewName; } + + private void addResult(TableViewFinderResult result) { + this.results.addAll(result.getResults()); + if (result.allViewsInMultipleRegions()) { + this.setAllViewsNotInSingleRegion(); + } + } } @Override