merge master
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7d3b544a Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7d3b544a Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7d3b544a Branch: refs/heads/txn Commit: 7d3b544ad3ae11f1da03f3db518052794faa702e Parents: d81e660 72633b9 Author: Thomas D'Silva <[email protected]> Authored: Mon Nov 2 14:48:30 2015 -0800 Committer: Thomas D'Silva <[email protected]> Committed: Mon Nov 2 14:48:30 2015 -0800 ---------------------------------------------------------------------- .gitignore | 8 + NOTICE | 15 + bin/daemon.py | 989 + bin/end2endTest.py | 8 +- bin/log4j.properties | 9 +- bin/performance.py | 21 +- bin/phoenix_sandbox.py | 3 + bin/phoenix_utils.py | 155 +- bin/psql.py | 43 +- bin/queryserver.py | 203 + bin/sqlline-thin.py | 123 + bin/sqlline.py | 44 +- bin/traceserver.py | 188 + dev/eclipse_prefs_phoenix.epf | 2 +- dev/jenkinsEnv.sh | 31 + dev/make_rc.sh | 53 +- dev/smart-apply-patch.sh | 96 + dev/test-patch.properties | 35 + dev/test-patch.sh | 1081 + phoenix-assembly/pom.xml | 62 +- phoenix-assembly/src/build/client.xml | 41 +- .../src/build/components-major-client.xml | 2 + .../src/build/components-minimal.xml | 2 + .../components/all-common-dependencies.xml | 1 + .../src/build/components/all-common-files.xml | 17 +- .../src/build/components/all-common-jars.xml | 35 +- .../src/build/server-without-antlr.xml | 2 + phoenix-assembly/src/build/server.xml | 3 + phoenix-assembly/src/build/src.xml | 4 +- phoenix-core/pom.xml | 32 +- .../wal/ReadWriteKeyValuesWithCodecIT.java | 14 +- ...ReplayWithIndexWritesAndCompressedWALIT.java | 38 +- .../phoenix/end2end/AbsFunctionEnd2EndIT.java | 108 + .../apache/phoenix/end2end/AlterSessionIT.java | 92 + .../apache/phoenix/end2end/AlterTableIT.java | 86 +- .../phoenix/end2end/AlterTableWithViewsIT.java | 1118 + .../phoenix/end2end/ArithmeticQueryIT.java | 88 + .../phoenix/end2end/ArrayAppendFunctionIT.java | 650 + .../phoenix/end2end/ArrayConcatFunctionIT.java | 578 + .../phoenix/end2end/ArrayFillFunctionIT.java | 531 + .../org/apache/phoenix/end2end/ArrayIT.java | 955 +- .../phoenix/end2end/ArrayPrependFunctionIT.java | 652 + .../end2end/ArrayToStringFunctionIT.java | 654 + .../phoenix/end2end/ArraysWithNullsIT.java | 300 + .../org/apache/phoenix/end2end/BaseQueryIT.java | 10 - .../end2end/BaseTenantSpecificViewIndexIT.java | 33 +- .../org/apache/phoenix/end2end/BaseViewIT.java | 3 + .../phoenix/end2end/CSVCommonsLoaderIT.java | 58 +- .../phoenix/end2end/CbrtFunctionEnd2EndIT.java | 143 + .../end2end/ClientTimeArithmeticQueryIT.java | 10 +- .../phoenix/end2end/CoalesceFunctionIT.java | 2 +- .../phoenix/end2end/ConnectionUtilIT.java | 84 + .../end2end/ConvertTimezoneFunctionIT.java | 42 +- .../apache/phoenix/end2end/CreateTableIT.java | 25 + .../org/apache/phoenix/end2end/DateTimeIT.java | 637 + .../phoenix/end2end/DecodeFunctionIT.java | 9 +- .../org/apache/phoenix/end2end/DeleteIT.java | 63 + .../apache/phoenix/end2end/DerivedTableIT.java | 6 +- .../phoenix/end2end/EncodeFunctionIT.java | 16 +- .../phoenix/end2end/End2EndTestDriver.java | 19 +- .../phoenix/end2end/EvaluationOfORIT.java | 11 + .../phoenix/end2end/ExpFunctionEnd2EndIT.java | 152 + .../end2end/GetSetByteBitFunctionEnd2EndIT.java | 100 + .../org/apache/phoenix/end2end/GroupByIT.java | 72 + .../org/apache/phoenix/end2end/HashJoinIT.java | 64 +- .../org/apache/phoenix/end2end/InListIT.java | 53 +- .../apache/phoenix/end2end/InstrFunctionIT.java | 126 + .../org/apache/phoenix/end2end/IsNullIT.java | 52 +- .../org/apache/phoenix/end2end/KeyOnlyIT.java | 2 +- .../phoenix/end2end/LikeExpressionIT.java | 126 + .../phoenix/end2end/LnLogFunctionEnd2EndIT.java | 143 + .../apache/phoenix/end2end/LpadFunctionIT.java | 60 + .../apache/phoenix/end2end/MD5FunctionIT.java | 19 + .../org/apache/phoenix/end2end/NotQueryIT.java | 8 +- .../end2end/OctetLengthFunctionEnd2EndIT.java | 73 + .../org/apache/phoenix/end2end/OrderByIT.java | 396 +- .../phoenix/end2end/ParallelIteratorsIT.java | 29 + .../phoenix/end2end/PhoenixMetricsIT.java | 151 - .../phoenix/end2end/PowerFunctionEnd2EndIT.java | 144 + .../end2end/QueryDatabaseMetaDataIT.java | 253 +- .../org/apache/phoenix/end2end/QueryMoreIT.java | 6 +- .../phoenix/end2end/QueryWithLimitIT.java | 2 +- .../apache/phoenix/end2end/RTrimFunctionIT.java | 71 + .../end2end/RegexpReplaceFunctionIT.java | 100 + .../phoenix/end2end/RegexpSubstrFunctionIT.java | 43 +- .../apache/phoenix/end2end/ReverseScanIT.java | 59 +- .../RoundFloorCeilFunctionsEnd2EndIT.java | 114 + .../phoenix/end2end/RowValueConstructorIT.java | 292 +- .../end2end/SequenceBulkAllocationIT.java | 1286 + .../org/apache/phoenix/end2end/SequenceIT.java | 84 + .../phoenix/end2end/SignFunctionEnd2EndIT.java | 141 + .../end2end/SkipScanAfterManualSplitIT.java | 2 +- .../apache/phoenix/end2end/SortMergeJoinIT.java | 89 +- .../apache/phoenix/end2end/SortOrderFIT.java | 563 - .../org/apache/phoenix/end2end/SortOrderIT.java | 768 + .../phoenix/end2end/SqrtFunctionEnd2EndIT.java | 143 + .../phoenix/end2end/StatsCollectorIT.java | 1 + .../StatsCollectorWithSplitsAndMultiCFIT.java | 39 +- .../end2end/StringToArrayFunctionIT.java | 423 + .../org/apache/phoenix/end2end/SubqueryIT.java | 26 +- .../end2end/SubqueryUsingSortMergeJoinIT.java | 22 +- .../apache/phoenix/end2end/TenantIdTypeIT.java | 226 + .../end2end/TenantSpecificTablesDDLIT.java | 104 +- .../end2end/TenantSpecificViewIndexIT.java | 5 + .../end2end/TimezoneOffsetFunctionIT.java | 15 +- .../phoenix/end2end/ToDateFunctionIT.java | 103 +- .../org/apache/phoenix/end2end/UnionAllIT.java | 682 + .../apache/phoenix/end2end/UnnestArrayIT.java | 356 + .../org/apache/phoenix/end2end/UpgradeIT.java | 332 + .../apache/phoenix/end2end/UpsertSelectIT.java | 531 + .../apache/phoenix/end2end/UpsertValuesIT.java | 284 + .../phoenix/end2end/UserDefinedFunctionsIT.java | 920 + .../phoenix/end2end/VariableLengthPKIT.java | 6 +- .../java/org/apache/phoenix/end2end/ViewIT.java | 146 + .../end2end/index/DropIndexDuringUpsertIT.java | 2 +- .../index/GlobalIndexOptimizationIT.java | 11 +- .../index/ImmutableIndexWithStatsIT.java | 89 + .../end2end/index/IndexExpressionIT.java | 233 +- .../phoenix/end2end/index/IndexHandlerIT.java | 12 +- .../phoenix/end2end/index/LocalIndexIT.java | 32 +- .../end2end/index/MutableIndexFailureIT.java | 11 +- .../apache/phoenix/execute/PartialCommitIT.java | 318 + .../index/balancer/IndexLoadBalancerIT.java | 6 +- .../EndToEndCoveredColumnsIndexBuilderIT.java | 10 +- .../iterate/MockParallelIteratorFactory.java | 47 + .../iterate/MockTableResultIterator.java | 66 + .../phoenix/iterate/PhoenixQueryTimeoutIT.java | 114 + .../iterate/RoundRobinResultIteratorIT.java | 437 + .../RoundRobinResultIteratorWithStatsIT.java | 104 + .../phoenix/mapreduce/CsvBulkLoadToolIT.java | 45 +- .../apache/phoenix/mapreduce/IndexToolIT.java | 334 + .../phoenix/monitoring/PhoenixMetricsIT.java | 815 + .../apache/phoenix/rpc/PhoenixClientRpcIT.java | 113 + .../apache/phoenix/rpc/PhoenixServerRpcIT.java | 232 + .../TestPhoenixIndexRpcSchedulerFactory.java | 64 + .../org/apache/phoenix/rpc/UpdateCacheIT.java | 156 + .../phoenix/trace/PhoenixTraceReaderIT.java | 2 +- .../phoenix/trace/PhoenixTracingEndToEndIT.java | 57 +- phoenix-core/src/it/resources/hbase-default.xml | 36 - phoenix-core/src/it/resources/hbase-site.xml | 36 + phoenix-core/src/main/antlr3/PhoenixSQL.g | 286 +- .../hbase/ipc/PhoenixIndexRpcScheduler.java | 120 - .../hadoop/hbase/ipc/PhoenixRpcScheduler.java | 129 + .../hbase/ipc/PhoenixRpcSchedulerFactory.java | 95 + .../controller/ClientRpcControllerFactory.java | 60 + .../ipc/controller/IndexRpcController.java | 51 + .../ipc/controller/MetadataRpcController.java | 55 + .../controller/ServerRpcControllerFactory.java | 62 + .../regionserver/IndexHalfStoreFileReader.java | 79 +- .../IndexHalfStoreFileReaderGenerator.java | 19 +- .../regionserver/IndexSplitTransaction.java | 132 +- .../hbase/regionserver/KeyValueSkipListSet.java | 183 + .../hbase/regionserver/LocalIndexMerger.java | 23 +- .../hbase/regionserver/LocalIndexSplitter.java | 40 +- .../org/apache/phoenix/cache/GlobalCache.java | 30 +- .../apache/phoenix/cache/JodaTimezoneCache.java | 84 + .../apache/phoenix/cache/ServerCacheClient.java | 16 +- .../cache/aggcache/SpillableGroupByCache.java | 13 +- .../apache/phoenix/compile/ColumnResolver.java | 17 + .../phoenix/compile/CreateFunctionCompiler.java | 72 + .../phoenix/compile/CreateIndexCompiler.java | 2 +- .../phoenix/compile/CreateTableCompiler.java | 37 + .../apache/phoenix/compile/DeleteCompiler.java | 73 +- .../phoenix/compile/ExpressionCompiler.java | 62 +- .../apache/phoenix/compile/FromCompiler.java | 218 +- .../apache/phoenix/compile/GroupByCompiler.java | 56 +- .../apache/phoenix/compile/HavingCompiler.java | 2 +- .../apache/phoenix/compile/JoinCompiler.java | 17 +- .../org/apache/phoenix/compile/KeyPart.java | 8 +- .../phoenix/compile/ListJarsQueryPlan.java | 245 + .../MutatingParallelIteratorFactory.java | 51 +- .../apache/phoenix/compile/OrderByCompiler.java | 52 +- .../phoenix/compile/OrderPreservingTracker.java | 281 + .../apache/phoenix/compile/PostDDLCompiler.java | 34 + .../phoenix/compile/PostIndexDDLCompiler.java | 43 +- .../phoenix/compile/ProjectionCompiler.java | 134 +- .../apache/phoenix/compile/QueryCompiler.java | 108 +- .../org/apache/phoenix/compile/QueryPlan.java | 14 + .../apache/phoenix/compile/RowProjector.java | 36 +- .../org/apache/phoenix/compile/ScanRanges.java | 250 +- .../apache/phoenix/compile/SequenceManager.java | 70 +- .../compile/SequenceValueExpression.java | 14 +- .../phoenix/compile/StatementContext.java | 60 +- .../phoenix/compile/StatementNormalizer.java | 5 +- .../phoenix/compile/SubqueryRewriter.java | 21 +- .../phoenix/compile/SubselectRewriter.java | 5 +- .../apache/phoenix/compile/TraceQueryPlan.java | 49 +- .../TrackOrderPreservingExpressionCompiler.java | 249 - .../compile/TupleProjectionCompiler.java | 5 +- .../apache/phoenix/compile/UnionCompiler.java | 89 + .../apache/phoenix/compile/UpsertCompiler.java | 211 +- .../apache/phoenix/compile/WhereCompiler.java | 2 +- .../apache/phoenix/compile/WhereOptimizer.java | 243 +- .../phoenix/coprocessor/BaseRegionScanner.java | 16 +- .../coprocessor/BaseScannerRegionObserver.java | 124 +- .../coprocessor/DelegateRegionScanner.java | 23 +- .../GroupedAggregateRegionObserver.java | 66 +- .../coprocessor/HashJoinRegionScanner.java | 60 +- .../coprocessor/MetaDataEndpointImpl.java | 1838 +- .../phoenix/coprocessor/MetaDataProtocol.java | 50 +- .../coprocessor/MetaDataRegionObserver.java | 23 +- .../phoenix/coprocessor/ScanRegionObserver.java | 28 +- .../coprocessor/SequenceRegionObserver.java | 80 +- .../UngroupedAggregateRegionObserver.java | 225 +- .../coprocessor/generated/MetaDataProtos.java | 5283 +++- .../coprocessor/generated/PFunctionProtos.java | 3032 ++ .../coprocessor/generated/PTableProtos.java | 362 +- .../exception/DataExceedsCapacityException.java | 40 + .../phoenix/exception/SQLExceptionCode.java | 116 +- .../phoenix/exception/SQLExceptionInfo.java | 16 + .../ValueTypeIncompatibleException.java | 36 - .../apache/phoenix/execute/AggregatePlan.java | 36 +- .../apache/phoenix/execute/BaseQueryPlan.java | 98 +- .../phoenix/execute/ClientAggregatePlan.java | 5 +- .../phoenix/execute/ClientProcessingPlan.java | 9 + .../apache/phoenix/execute/ClientScanPlan.java | 5 +- .../apache/phoenix/execute/CommitException.java | 28 +- .../apache/phoenix/execute/CorrelatePlan.java | 208 + .../phoenix/execute/DegenerateQueryPlan.java | 10 +- .../execute/DelegateHTableInterface.java | 18 + .../phoenix/execute/DelegateQueryPlan.java | 6 + .../DescVarLengthFastByteComparisons.java | 231 + .../apache/phoenix/execute/HashJoinPlan.java | 36 +- .../execute/LiteralResultIterationPlan.java | 109 + .../apache/phoenix/execute/MutationState.java | 640 +- .../apache/phoenix/execute/RuntimeContext.java | 33 + .../phoenix/execute/RuntimeContextImpl.java | 86 + .../org/apache/phoenix/execute/ScanPlan.java | 56 +- .../phoenix/execute/SortMergeJoinPlan.java | 26 +- .../phoenix/execute/TupleProjectionPlan.java | 11 +- .../apache/phoenix/execute/TupleProjector.java | 10 + .../org/apache/phoenix/execute/UnionPlan.java | 220 + .../apache/phoenix/execute/UnnestArrayPlan.java | 189 + .../expression/ArrayConstructorExpression.java | 47 +- .../phoenix/expression/BaseExpression.java | 43 +- .../expression/ByteBasedLikeExpression.java | 48 + .../phoenix/expression/CoerceExpression.java | 39 +- .../expression/ComparisonExpression.java | 36 +- .../CorrelateVariableFieldAccessExpression.java | 75 + .../expression/DecimalAddExpression.java | 4 +- .../expression/DecimalDivideExpression.java | 4 +- .../expression/DecimalMultiplyExpression.java | 4 +- .../expression/DecimalSubtractExpression.java | 4 +- .../phoenix/expression/ExpressionType.java | 95 +- .../phoenix/expression/InListExpression.java | 26 +- .../phoenix/expression/LikeExpression.java | 70 +- .../phoenix/expression/LiteralExpression.java | 40 +- .../phoenix/expression/OrderByExpression.java | 13 +- .../expression/ProjectedColumnExpression.java | 7 +- .../expression/RowKeyColumnExpression.java | 2 +- .../RowValueConstructorExpression.java | 8 +- .../expression/StringBasedLikeExpression.java | 48 + .../aggregator/ServerAggregators.java | 1 + .../expression/function/AbsFunction.java | 66 + .../function/ArrayAppendFunction.java | 51 + .../function/ArrayConcatFunction.java | 90 + .../expression/function/ArrayFillFunction.java | 96 + .../function/ArrayLengthFunction.java | 4 +- .../function/ArrayModifierFunction.java | 189 + .../function/ArrayPrependFunction.java | 54 + .../function/ArrayToStringFunction.java | 84 + .../ByteBasedRegexpReplaceFunction.java | 40 + .../function/ByteBasedRegexpSplitFunction.java | 38 + .../function/ByteBasedRegexpSubstrFunction.java | 38 + .../expression/function/CbrtFunction.java | 55 + .../function/ConvertTimezoneFunction.java | 38 +- .../expression/function/DayOfMonthFunction.java | 83 + .../expression/function/ExpFunction.java | 55 + .../expression/function/GetBitFunction.java | 96 + .../expression/function/GetByteFunction.java | 96 + .../expression/function/HourFunction.java | 81 + .../expression/function/InstrFunction.java | 105 + .../expression/function/InvertFunction.java | 14 +- .../function/JavaMathOneArgumentFunction.java | 68 + .../function/JavaMathTwoArgumentFunction.java | 69 + .../phoenix/expression/function/LnFunction.java | 55 + .../expression/function/LogFunction.java | 56 + .../expression/function/LpadFunction.java | 8 +- .../expression/function/MinuteFunction.java | 81 + .../expression/function/MonthFunction.java | 83 + .../expression/function/NowFunction.java | 48 + .../function/OctetLengthFunction.java | 66 + .../expression/function/PowerFunction.java | 51 + .../expression/function/PrefixFunction.java | 37 +- .../expression/function/RTrimFunction.java | 64 +- .../expression/function/RandomFunction.java | 17 + .../function/RegexpReplaceFunction.java | 92 +- .../function/RegexpSplitFunction.java | 85 +- .../function/RegexpSubstrFunction.java | 129 +- .../function/RoundDateExpression.java | 12 +- .../function/RoundDecimalExpression.java | 22 +- .../expression/function/ScalarFunction.java | 6 +- .../expression/function/SecondFunction.java | 81 + .../expression/function/SetBitFunction.java | 81 + .../expression/function/SetByteFunction.java | 81 + .../expression/function/SignFunction.java | 79 + .../expression/function/SqrtFunction.java | 55 + .../StringBasedRegexpReplaceFunction.java | 40 + .../StringBasedRegexpSplitFunction.java | 38 + .../StringBasedRegexpSubstrFunction.java | 38 + .../function/StringToArrayFunction.java | 91 + .../function/TimezoneOffsetFunction.java | 25 +- .../expression/function/UDFExpression.java | 244 + .../expression/function/WeekFunction.java | 83 + .../expression/function/YearFunction.java | 82 + .../util/regex/AbstractBasePattern.java | 32 + .../util/regex/AbstractBaseSplitter.java | 24 + .../expression/util/regex/GuavaSplitter.java | 54 + .../expression/util/regex/JONIPattern.java | 200 + .../expression/util/regex/JavaPattern.java | 94 + .../visitor/CloneExpressionVisitor.java | 58 +- .../CloneNonDeterministicExpressionVisitor.java | 30 + .../expression/visitor/ExpressionVisitor.java | 2 + .../ProjectedColumnExpressionVisitor.java | 25 + .../ReplaceArrayFunctionExpressionVisitor.java | 46 + .../StatelessTraverseAllExpressionVisitor.java | 7 + .../StatelessTraverseNoExpressionVisitor.java | 7 + .../phoenix/filter/RowKeyComparisonFilter.java | 5 +- .../filter/SingleKeyValueComparisonFilter.java | 4 +- .../apache/phoenix/filter/SkipScanFilter.java | 44 +- .../phoenix/hbase/index/IndexQosCompat.java | 98 - .../index/IndexQosRpcControllerFactory.java | 86 - .../org/apache/phoenix/hbase/index/Indexer.java | 11 +- .../hbase/index/balancer/IndexLoadBalancer.java | 7 +- .../phoenix/hbase/index/covered/Batch.java | 11 +- .../hbase/index/covered/LocalTableState.java | 30 +- .../hbase/index/covered/NonTxIndexBuilder.java | 2 +- .../phoenix/hbase/index/covered/TableState.java | 3 +- .../hbase/index/covered/data/IndexMemStore.java | 27 +- .../hbase/index/covered/data/LocalTable.java | 7 +- .../example/CoveredColumnIndexCodec.java | 2 +- .../filter/ApplyAndFilterDeletesFilter.java | 8 +- .../index/covered/filter/FamilyOnlyFilter.java | 80 - .../index/covered/update/ColumnReference.java | 7 +- .../ipc/PhoenixIndexRpcSchedulerFactory.java | 91 - .../index/scanner/FilteredKeyValueScanner.java | 28 +- .../hbase/index/scanner/ScannerBuilder.java | 4 +- .../index/table/CoprocessorHTableFactory.java | 20 - .../hbase/index/wal/IndexedKeyValue.java | 17 - .../write/ParallelWriterIndexCommitter.java | 8 +- .../recovery/PerRegionIndexWriteCache.java | 10 +- .../recovery/StoreFailuresInCachePolicy.java | 4 +- .../TrackingParallelWriterIndexCommitter.java | 8 +- .../apache/phoenix/index/IndexMaintainer.java | 181 +- .../phoenix/index/PhoenixIndexBuilder.java | 11 +- .../apache/phoenix/index/PhoenixIndexCodec.java | 6 +- .../index/PhoenixTransactionalIndexer.java | 16 +- .../phoenix/iterate/BaseResultIterators.java | 195 +- .../phoenix/iterate/ChunkedResultIterator.java | 24 +- .../iterate/DefaultParallelScanGrouper.java | 62 + .../apache/phoenix/iterate/ExplainTable.java | 106 +- .../iterate/MapReduceParallelScanGrouper.java | 45 + .../iterate/MergeSortTopNResultIterator.java | 3 - .../phoenix/iterate/OrderedResultIterator.java | 52 +- .../iterate/ParallelIteratorFactory.java | 5 +- .../phoenix/iterate/ParallelIterators.java | 41 +- .../phoenix/iterate/ParallelScanGrouper.java | 41 + .../iterate/RegionScannerResultIterator.java | 9 +- .../iterate/RoundRobinResultIterator.java | 329 + .../phoenix/iterate/ScanningResultIterator.java | 38 +- .../apache/phoenix/iterate/SerialIterators.java | 30 +- .../phoenix/iterate/SpoolingResultIterator.java | 50 +- .../phoenix/iterate/TableResultIterator.java | 26 +- .../UngroupedAggregatingResultIterator.java | 3 +- .../phoenix/iterate/UnionResultIterators.java | 142 + .../apache/phoenix/jdbc/PhoenixConnection.java | 215 +- .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 60 +- .../org/apache/phoenix/jdbc/PhoenixDriver.java | 46 +- .../phoenix/jdbc/PhoenixEmbeddedDriver.java | 31 +- .../phoenix/jdbc/PhoenixPreparedStatement.java | 8 +- .../apache/phoenix/jdbc/PhoenixResultSet.java | 68 +- .../apache/phoenix/jdbc/PhoenixStatement.java | 460 +- .../java/org/apache/phoenix/job/JobManager.java | 65 +- .../org/apache/phoenix/join/HashJoinInfo.java | 17 +- .../phoenix/mapreduce/CsvBulkImportUtil.java | 28 +- .../phoenix/mapreduce/CsvBulkLoadTool.java | 361 +- .../phoenix/mapreduce/CsvToKeyValueMapper.java | 123 +- .../phoenix/mapreduce/CsvToKeyValueReducer.java | 55 + .../mapreduce/MultiHfileOutputFormat.java | 716 + .../phoenix/mapreduce/PhoenixInputFormat.java | 28 +- .../phoenix/mapreduce/PhoenixInputSplit.java | 1 + .../phoenix/mapreduce/PhoenixJobCounters.java | 29 + .../phoenix/mapreduce/PhoenixRecordReader.java | 19 +- .../phoenix/mapreduce/PhoenixRecordWriter.java | 2 +- .../mapreduce/bulkload/CsvTableRowkeyPair.java | 139 + .../mapreduce/index/DirectHTableWriter.java | 113 + .../phoenix/mapreduce/index/IndexTool.java | 377 + .../phoenix/mapreduce/index/IndexToolUtil.java | 76 + .../mapreduce/index/PhoenixIndexDBWritable.java | 91 + .../index/PhoenixIndexImportDirectMapper.java | 182 + .../index/PhoenixIndexImportMapper.java | 133 + .../index/PhoenixIndexToolReducer.java | 60 + .../util/ColumnInfoToStringEncoderDecoder.java | 41 +- .../phoenix/mapreduce/util/ConnectionUtil.java | 81 +- .../util/PhoenixConfigurationUtil.java | 250 +- .../mapreduce/util/PhoenixMapReduceUtil.java | 24 +- .../phoenix/memory/GlobalMemoryManager.java | 5 - .../apache/phoenix/monitoring/AtomicMetric.java | 70 + .../phoenix/monitoring/CombinableMetric.java | 77 + .../monitoring/CombinableMetricImpl.java | 77 + .../org/apache/phoenix/monitoring/Counter.java | 85 - .../phoenix/monitoring/GlobalClientMetrics.java | 117 + .../apache/phoenix/monitoring/GlobalMetric.java | 37 + .../phoenix/monitoring/GlobalMetricImpl.java | 74 + .../phoenix/monitoring/MemoryMetricsHolder.java | 43 + .../org/apache/phoenix/monitoring/Metric.java | 45 +- .../apache/phoenix/monitoring/MetricType.java | 55 + .../phoenix/monitoring/MetricsStopWatch.java | 59 + .../phoenix/monitoring/MutationMetricQueue.java | 131 + .../phoenix/monitoring/NonAtomicMetric.java | 71 + .../phoenix/monitoring/OverAllQueryMetrics.java | 121 + .../phoenix/monitoring/PhoenixMetrics.java | 118 - .../phoenix/monitoring/ReadMetricQueue.java | 180 + .../phoenix/monitoring/SizeStatistic.java | 78 - .../monitoring/SpoolingMetricsHolder.java | 43 + .../monitoring/TaskExecutionMetricsHolder.java | 68 + .../apache/phoenix/optimize/QueryOptimizer.java | 8 +- .../apache/phoenix/parse/AddJarsStatement.java | 38 + .../phoenix/parse/AlterSessionStatement.java | 38 + .../org/apache/phoenix/parse/CastParseNode.java | 2 +- .../org/apache/phoenix/parse/ColumnDef.java | 227 +- .../phoenix/parse/ColumnDefInPkConstraint.java | 44 + .../phoenix/parse/CreateFunctionStatement.java | 47 + .../phoenix/parse/CreateIndexStatement.java | 14 +- .../org/apache/phoenix/parse/DMLStatement.java | 11 +- .../phoenix/parse/DeleteJarStatement.java | 36 + .../apache/phoenix/parse/DeleteStatement.java | 5 +- .../phoenix/parse/DropFunctionStatement.java | 41 + .../apache/phoenix/parse/FunctionParseNode.java | 73 +- .../parse/IndexExpressionParseNodeRewriter.java | 34 +- .../apache/phoenix/parse/ListJarsStatement.java | 34 + .../apache/phoenix/parse/LiteralParseNode.java | 5 + .../org/apache/phoenix/parse/NamedNode.java | 2 +- .../org/apache/phoenix/parse/PFunction.java | 280 + .../apache/phoenix/parse/ParseNodeFactory.java | 216 +- .../apache/phoenix/parse/ParseNodeRewriter.java | 5 +- .../phoenix/parse/PrimaryKeyConstraint.java | 48 +- .../phoenix/parse/RegexpReplaceParseNode.java | 55 + .../phoenix/parse/RegexpSplitParseNode.java | 55 + .../phoenix/parse/RegexpSubstrParseNode.java | 55 + .../apache/phoenix/parse/SelectStatement.java | 61 +- .../phoenix/parse/SequenceValueParseNode.java | 8 +- .../apache/phoenix/parse/TraceStatement.java | 12 +- .../org/apache/phoenix/parse/UDFParseNode.java | 27 + .../parse/UpdateStatisticsStatement.java | 11 +- .../apache/phoenix/parse/UpsertStatement.java | 9 +- .../apache/phoenix/protobuf/ProtobufUtil.java | 14 +- .../phoenix/query/BaseQueryServicesImpl.java | 2 +- .../phoenix/query/ConnectionQueryServices.java | 9 +- .../query/ConnectionQueryServicesImpl.java | 440 +- .../query/ConnectionlessQueryServicesImpl.java | 69 +- .../query/DelegateConnectionQueryServices.java | 43 +- .../org/apache/phoenix/query/HTableFactory.java | 4 +- .../java/org/apache/phoenix/query/KeyRange.java | 69 +- .../apache/phoenix/query/MetaDataMutated.java | 3 + .../apache/phoenix/query/QueryConstants.java | 46 + .../org/apache/phoenix/query/QueryServices.java | 26 +- .../phoenix/query/QueryServicesOptions.java | 71 +- .../schema/ConstraintViolationException.java | 18 +- .../apache/phoenix/schema/DelegateColumn.java | 15 +- .../apache/phoenix/schema/DelegateTable.java | 19 + .../schema/FunctionAlreadyExistsException.java | 58 + .../schema/FunctionNotFoundException.java | 52 + .../phoenix/schema/IllegalDataException.java | 18 +- .../apache/phoenix/schema/MetaDataClient.java | 732 +- .../NewerFunctionAlreadyExistsException.java | 39 + .../java/org/apache/phoenix/schema/PColumn.java | 5 + .../org/apache/phoenix/schema/PColumnImpl.java | 27 +- .../java/org/apache/phoenix/schema/PDatum.java | 1 + .../org/apache/phoenix/schema/PMetaData.java | 6 +- .../apache/phoenix/schema/PMetaDataEntity.java | 22 + .../apache/phoenix/schema/PMetaDataImpl.java | 124 +- .../java/org/apache/phoenix/schema/PTable.java | 19 +- .../org/apache/phoenix/schema/PTableImpl.java | 176 +- .../org/apache/phoenix/schema/RowKeySchema.java | 83 +- .../phoenix/schema/RowKeyValueAccessor.java | 12 +- .../org/apache/phoenix/schema/SaltingUtil.java | 2 +- .../org/apache/phoenix/schema/Sequence.java | 110 +- .../phoenix/schema/SequenceAllocation.java | 65 + .../org/apache/phoenix/schema/TableRef.java | 4 +- .../org/apache/phoenix/schema/ValueSchema.java | 30 +- .../phoenix/schema/stats/GuidePostsInfo.java | 9 +- .../schema/stats/StatisticsCollector.java | 68 +- .../phoenix/schema/stats/StatisticsScanner.java | 26 +- .../phoenix/schema/stats/StatisticsUtil.java | 6 +- .../phoenix/schema/stats/StatisticsWriter.java | 57 +- .../phoenix/schema/types/PArrayDataType.java | 1006 +- .../apache/phoenix/schema/types/PBinary.java | 36 +- .../phoenix/schema/types/PBinaryArray.java | 122 +- .../phoenix/schema/types/PBinaryBase.java | 98 + .../apache/phoenix/schema/types/PBoolean.java | 224 +- .../phoenix/schema/types/PBooleanArray.java | 123 +- .../org/apache/phoenix/schema/types/PChar.java | 27 +- .../apache/phoenix/schema/types/PCharArray.java | 128 +- .../apache/phoenix/schema/types/PDataType.java | 2047 +- .../org/apache/phoenix/schema/types/PDate.java | 21 +- .../apache/phoenix/schema/types/PDateArray.java | 131 +- .../apache/phoenix/schema/types/PDecimal.java | 32 +- .../phoenix/schema/types/PDecimalArray.java | 126 +- .../apache/phoenix/schema/types/PDouble.java | 30 +- .../phoenix/schema/types/PDoubleArray.java | 128 +- .../org/apache/phoenix/schema/types/PFloat.java | 27 +- .../phoenix/schema/types/PFloatArray.java | 130 +- .../apache/phoenix/schema/types/PInteger.java | 9 +- .../phoenix/schema/types/PIntegerArray.java | 130 +- .../org/apache/phoenix/schema/types/PLong.java | 13 +- .../apache/phoenix/schema/types/PLongArray.java | 130 +- .../phoenix/schema/types/PNumericType.java | 52 + .../phoenix/schema/types/PRealNumber.java | 47 + .../apache/phoenix/schema/types/PSmallint.java | 9 +- .../phoenix/schema/types/PSmallintArray.java | 130 +- .../apache/phoenix/schema/types/PTimeArray.java | 133 +- .../apache/phoenix/schema/types/PTimestamp.java | 22 +- .../phoenix/schema/types/PTimestampArray.java | 132 +- .../apache/phoenix/schema/types/PTinyint.java | 11 +- .../phoenix/schema/types/PTinyintArray.java | 130 +- .../schema/types/PUnsignedDateArray.java | 128 +- .../phoenix/schema/types/PUnsignedDouble.java | 9 +- .../schema/types/PUnsignedDoubleArray.java | 136 +- .../phoenix/schema/types/PUnsignedFloat.java | 5 +- .../schema/types/PUnsignedFloatArray.java | 130 +- .../phoenix/schema/types/PUnsignedInt.java | 5 +- .../phoenix/schema/types/PUnsignedIntArray.java | 130 +- .../phoenix/schema/types/PUnsignedLong.java | 16 +- .../schema/types/PUnsignedLongArray.java | 130 +- .../phoenix/schema/types/PUnsignedSmallint.java | 5 +- .../schema/types/PUnsignedSmallintArray.java | 132 +- .../schema/types/PUnsignedTimeArray.java | 132 +- .../schema/types/PUnsignedTimestamp.java | 2 +- .../schema/types/PUnsignedTimestampArray.java | 134 +- .../phoenix/schema/types/PUnsignedTinyint.java | 5 +- .../schema/types/PUnsignedTinyintArray.java | 132 +- .../apache/phoenix/schema/types/PVarbinary.java | 2 +- .../phoenix/schema/types/PVarbinaryArray.java | 130 +- .../apache/phoenix/schema/types/PVarchar.java | 2 +- .../phoenix/schema/types/PVarcharArray.java | 130 +- .../phoenix/schema/types/PWholeNumber.java | 43 + .../phoenix/schema/types/PhoenixArray.java | 131 +- .../apache/phoenix/trace/TraceMetricSource.java | 15 +- .../org/apache/phoenix/trace/TraceReader.java | 2 +- .../apache/phoenix/trace/TracingIterator.java | 2 +- .../org/apache/phoenix/trace/TracingUtils.java | 2 +- .../org/apache/phoenix/trace/util/NullSpan.java | 10 +- .../org/apache/phoenix/trace/util/Tracing.java | 51 +- .../java/org/apache/phoenix/util/ByteUtil.java | 12 +- .../apache/phoenix/util/CSVCommonsLoader.java | 15 +- .../org/apache/phoenix/util/ColumnInfo.java | 20 +- .../phoenix/util/DefaultEnvironmentEdge.java | 34 + .../apache/phoenix/util/EnvironmentEdge.java | 34 + .../phoenix/util/EnvironmentEdgeManager.java | 74 + .../java/org/apache/phoenix/util/IndexUtil.java | 58 +- .../apache/phoenix/util/InstanceResolver.java | 26 +- .../java/org/apache/phoenix/util/JDBCUtil.java | 46 +- .../org/apache/phoenix/util/KeyValueUtil.java | 91 +- .../org/apache/phoenix/util/MetaDataUtil.java | 37 +- .../phoenix/util/PhoenixContextExecutor.java | 9 +- .../org/apache/phoenix/util/PhoenixRuntime.java | 383 +- .../apache/phoenix/util/PhoenixStopWatch.java | 81 + .../org/apache/phoenix/util/PropertiesUtil.java | 22 + .../java/org/apache/phoenix/util/QueryUtil.java | 104 +- .../org/apache/phoenix/util/ReadOnlyProps.java | 37 + .../java/org/apache/phoenix/util/ScanUtil.java | 219 +- .../org/apache/phoenix/util/SchemaUtil.java | 72 +- .../org/apache/phoenix/util/SequenceUtil.java | 47 +- .../org/apache/phoenix/util/StringUtil.java | 80 +- .../java/org/apache/phoenix/util/TupleUtil.java | 7 +- .../org/apache/phoenix/util/UpgradeUtil.java | 824 +- .../phoenix/util/csv/CsvUpsertExecutor.java | 14 +- .../hbase/ipc/PhoenixIndexRpcSchedulerTest.java | 26 +- .../PhoenixIndexRpcSchedulerFactoryTest.java | 106 - .../PhoenixRpcSchedulerFactoryTest.java | 125 + .../phoenix/cache/JodaTimezoneCacheTest.java | 53 + .../phoenix/compile/QueryCompilerTest.java | 571 +- .../phoenix/compile/QueryMetaDataTest.java | 11 + .../phoenix/compile/QueryOptimizerTest.java | 30 +- .../compile/ScanRangesIntersectTest.java | 37 +- .../apache/phoenix/compile/ScanRangesTest.java | 3 +- .../TenantSpecificViewIndexCompileTest.java | 172 + .../phoenix/compile/ViewCompilerTest.java | 1 - .../phoenix/compile/WhereCompilerTest.java | 13 +- .../phoenix/compile/WhereOptimizerTest.java | 198 +- .../phoenix/execute/CorrelatePlanTest.java | 248 + .../DescVarLengthFastByteComparisonsTest.java | 45 + .../phoenix/execute/MutationStateTest.java | 64 + .../phoenix/execute/UnnestArrayPlanTest.java | 162 + .../phoenix/expression/AbsFunctionTest.java | 180 + .../expression/ArithmeticOperationTest.java | 24 +- .../expression/ArrayAppendFunctionTest.java | 406 + .../expression/ArrayConcatFunctionTest.java | 713 + .../expression/ArrayFillFunctionTest.java | 221 + .../expression/ArrayPrependFunctionTest.java | 613 + .../expression/ArrayToStringFunctionTest.java | 379 + .../phoenix/expression/CbrtFunctionTest.java | 127 + .../expression/ColumnExpressionTest.java | 8 +- .../phoenix/expression/ExpFunctionTest.java | 150 + .../expression/GetSetByteBitFunctionTest.java | 189 + .../phoenix/expression/ILikeExpressionTest.java | 32 +- .../phoenix/expression/LikeExpressionTest.java | 39 +- .../phoenix/expression/LnLogFunctionTest.java | 182 + .../phoenix/expression/NullValueTest.java | 111 + .../expression/OctetLengthFunctionTest.java | 67 + .../phoenix/expression/PowerFunctionTest.java | 182 + .../expression/RegexpReplaceFunctionTest.java | 81 + .../expression/RegexpSplitFunctionTest.java | 94 + .../expression/RegexpSubstrFunctionTest.java | 83 + .../phoenix/expression/SignFunctionTest.java | 125 + .../expression/SortOrderExpressionTest.java | 25 +- .../phoenix/expression/SqrtFunctionTest.java | 150 + .../expression/StringToArrayFunctionTest.java | 275 + .../expression/function/InstrFunctionTest.java | 108 + .../util/regex/PatternPerformanceTest.java | 152 + .../phoenix/filter/SkipScanBigFilterTest.java | 2 +- .../index/covered/TestLocalTableState.java | 26 +- .../index/covered/data/TestIndexMemStore.java | 5 +- .../example/TestCoveredColumnIndexCodec.java | 10 +- .../covered/filter/TestFamilyOnlyFilter.java | 106 - .../hbase/index/write/TestIndexWriter.java | 2 +- .../index/write/TestWALRecoveryCaching.java | 33 +- .../recovery/TestPerRegionIndexWriteCache.java | 39 +- .../iterate/AggregateResultScannerTest.java | 4 + .../iterate/SpoolingResultIteratorTest.java | 4 +- .../apache/phoenix/jdbc/PhoenixDriverTest.java | 16 + .../phoenix/jdbc/PhoenixEmbeddedDriverTest.java | 34 +- .../jdbc/PhoenixPreparedStatementTest.java | 94 + .../apache/phoenix/jdbc/PhoenixTestDriver.java | 5 +- .../mapreduce/CsvBulkImportUtilTest.java | 71 +- .../phoenix/mapreduce/CsvBulkLoadToolTest.java | 11 - .../mapreduce/CsvToKeyValueMapperTest.java | 41 +- .../ColumnInfoToStringEncoderDecoderTest.java | 42 +- .../util/PhoenixConfigurationUtilTest.java | 164 +- .../apache/phoenix/parse/CastParseNodeTest.java | 57 + .../apache/phoenix/parse/QueryParserTest.java | 167 +- .../java/org/apache/phoenix/query/BaseTest.java | 55 +- .../phoenix/query/ConnectionlessTest.java | 14 +- .../org/apache/phoenix/query/OrderByTest.java | 84 + .../query/ParallelIteratorsSplitTest.java | 29 +- .../org/apache/phoenix/query/QueryPlanTest.java | 12 +- .../phoenix/query/QueryServicesTestImpl.java | 5 +- .../org/apache/phoenix/schema/PCharPadTest.java | 147 + .../phoenix/schema/PDataTypeForArraysTest.java | 1141 - .../phoenix/schema/PMetaDataImplTest.java | 72 +- .../phoenix/schema/SequenceAllocationTest.java | 76 + .../types/BasePhoenixArrayToStringTest.java | 84 + ...PrimitiveDoublePhoenixArrayToStringTest.java | 39 + ...asePrimitiveIntPhoenixArrayToStringTest.java | 50 + .../schema/types/PDataTypeForArraysTest.java | 1203 + .../phoenix/schema/types/PDataTypeTest.java | 80 + .../schema/types/PDateArrayToStringTest.java | 80 + .../schema/types/PVarcharArrayToStringTest.java | 71 + ...rimitiveBooleanPhoenixArrayToStringTest.java | 56 + .../PrimitiveBytePhoenixArrayToStringTest.java | 34 + ...PrimitiveDoublePhoenixArrayToStringTest.java | 36 + .../PrimitiveFloatPhoenixArrayToStringTest.java | 36 + .../PrimitiveIntPhoenixArrayToStringTest.java | 27 + .../PrimitiveLongPhoenixArrayToStringTest.java | 35 + .../PrimitiveShortPhoenixArrayToStringTest.java | 36 + .../phoenix/trace/TraceMetricsSourceTest.java | 4 +- .../org/apache/phoenix/util/ColumnInfoTest.java | 8 +- .../phoenix/util/GeneratePerformanceData.java | 20 +- .../org/apache/phoenix/util/JDBCUtilTest.java | 15 + .../apache/phoenix/util/MetaDataUtilTest.java | 18 +- .../apache/phoenix/util/PhoenixRuntimeTest.java | 75 + .../apache/phoenix/util/PropertiesUtilTest.java | 23 +- .../org/apache/phoenix/util/QueryUtilTest.java | 59 +- .../org/apache/phoenix/util/ScanUtilTest.java | 10 +- .../apache/phoenix/util/SequenceUtilTest.java | 54 + .../org/apache/phoenix/util/StringUtilTest.java | 32 +- .../util/TenantIdByteConversionTest.java | 294 + .../java/org/apache/phoenix/util/TestUtil.java | 33 +- .../phoenix/util/csv/CsvUpsertExecutorTest.java | 5 +- .../src/test/resources/hbase-default.xml | 36 - phoenix-flume/pom.xml | 23 +- .../org/apache/phoenix/flume/PhoenixSinkIT.java | 99 +- .../flume/serializer/CustomSerializer.java | 43 + .../phoenix/flume/sink/NullPhoenixSink.java | 21 + .../apache/phoenix/flume/sink/PhoenixSink.java | 24 +- phoenix-pherf/README.md | 105 + phoenix-pherf/cluster/pherf.sh | 33 + .../config/datamodel/user_defined_schema.sql | 27 + phoenix-pherf/config/env.sh | 32 + phoenix-pherf/config/log4j.properties | 58 + phoenix-pherf/config/pherf.properties | 39 + .../config/scenario/user_defined_scenario.xml | 134 + phoenix-pherf/pom.xml | 202 + .../org/apache/phoenix/pherf/DataIngestIT.java | 218 + .../org/apache/phoenix/pherf/PherfMainIT.java | 36 + .../apache/phoenix/pherf/ResultBaseTestIT.java | 56 + .../apache/phoenix/pherf/SchemaReaderIT.java | 78 + phoenix-pherf/src/main/assembly/cluster.xml | 51 + .../src/main/assembly/components-minimal.xml | 33 + phoenix-pherf/src/main/assembly/minimal.xml | 31 + phoenix-pherf/src/main/assembly/standalone.xml | 51 + .../java/org/apache/phoenix/pherf/Pherf.java | 279 + .../apache/phoenix/pherf/PherfConstants.java | 121 + .../phoenix/pherf/configuration/Column.java | 210 + .../phoenix/pherf/configuration/DataModel.java | 74 + .../pherf/configuration/DataOverride.java | 37 + .../pherf/configuration/DataSequence.java | 23 + .../pherf/configuration/DataTypeMapping.java | 47 + .../pherf/configuration/ExecutionType.java | 23 + .../phoenix/pherf/configuration/Query.java | 136 + .../phoenix/pherf/configuration/QuerySet.java | 140 + .../phoenix/pherf/configuration/Scenario.java | 214 + .../pherf/configuration/WriteParams.java | 72 + .../pherf/configuration/XMLConfigParser.java | 178 + .../pherf/exception/FileLoaderException.java | 30 + .../exception/FileLoaderRuntimeException.java | 29 + .../phoenix/pherf/exception/PherfException.java | 30 + .../pherf/exception/PherfRuntimeException.java | 30 + .../phoenix/pherf/jmx/MonitorDetails.java | 50 + .../phoenix/pherf/jmx/MonitorManager.java | 194 + .../java/org/apache/phoenix/pherf/jmx/Stat.java | 32 + .../jmx/monitors/CPULoadAverageMonitor.java | 33 + .../pherf/jmx/monitors/FreeMemoryMonitor.java | 30 + .../GarbageCollectorElapsedTimeMonitor.java | 44 + .../pherf/jmx/monitors/HeapMemoryMonitor.java | 32 + .../pherf/jmx/monitors/MaxMemoryMonitor.java | 30 + .../phoenix/pherf/jmx/monitors/Monitor.java | 30 + .../jmx/monitors/NonHeapMemoryMonitor.java | 32 + .../ObjectPendingFinalizationCountMonitor.java | 33 + .../pherf/jmx/monitors/ThreadMonitor.java | 32 + .../pherf/jmx/monitors/TotalMemoryMonitor.java | 30 + .../pherf/result/DataLoadThreadTime.java | 85 + .../pherf/result/DataLoadTimeSummary.java | 67 + .../phoenix/pherf/result/DataModelResult.java | 74 + .../phoenix/pherf/result/QueryResult.java | 173 + .../phoenix/pherf/result/QuerySetResult.java | 48 + .../org/apache/phoenix/pherf/result/Result.java | 59 + .../phoenix/pherf/result/ResultHandler.java | 48 + .../phoenix/pherf/result/ResultManager.java | 160 + .../apache/phoenix/pherf/result/ResultUtil.java | 247 + .../phoenix/pherf/result/ResultValue.java | 40 + .../apache/phoenix/pherf/result/RunTime.java | 108 + .../phoenix/pherf/result/ScenarioResult.java | 48 + .../apache/phoenix/pherf/result/ThreadTime.java | 144 + .../phoenix/pherf/result/file/Extension.java | 37 + .../phoenix/pherf/result/file/Header.java | 42 + .../pherf/result/file/ResultFileDetails.java | 51 + .../pherf/result/impl/CSVFileResultHandler.java | 89 + .../pherf/result/impl/CSVResultHandler.java | 68 + .../pherf/result/impl/DefaultResultHandler.java | 67 + .../pherf/result/impl/ImageResultHandler.java | 126 + .../pherf/result/impl/XMLResultHandler.java | 89 + .../apache/phoenix/pherf/rules/DataValue.java | 89 + .../phoenix/pherf/rules/RulesApplier.java | 403 + .../phoenix/pherf/schema/SchemaReader.java | 102 + .../pherf/util/GoogleChartGenerator.java | 379 + .../apache/phoenix/pherf/util/PhoenixUtil.java | 332 + .../apache/phoenix/pherf/util/ResourceList.java | 175 + .../phoenix/pherf/util/RowCalculator.java | 78 + .../pherf/workload/MultiThreadedRunner.java | 156 + .../pherf/workload/MultithreadedDiffer.java | 97 + .../phoenix/pherf/workload/QueryExecutor.java | 282 + .../phoenix/pherf/workload/QueryVerifier.java | 172 + .../apache/phoenix/pherf/workload/Workload.java | 27 + .../pherf/workload/WorkloadExecutor.java | 125 + .../phoenix/pherf/workload/WriteWorkload.java | 427 + .../datamodel/create_prod_test_unsalted.sql | 33 + phoenix-pherf/src/main/resources/hbase-site.xml | 25 + .../scenario/prod_test_unsalted_scenario.xml | 377 + .../org/apache/phoenix/pherf/ColumnTest.java | 50 + .../phoenix/pherf/ConfigurationParserTest.java | 226 + .../org/apache/phoenix/pherf/PherfTest.java | 43 + .../org/apache/phoenix/pherf/ResourceTest.java | 66 + .../apache/phoenix/pherf/ResultBaseTest.java | 45 + .../org/apache/phoenix/pherf/ResultTest.java | 208 + .../apache/phoenix/pherf/RowCalculatorTest.java | 88 + .../apache/phoenix/pherf/RuleGeneratorTest.java | 262 + .../apache/phoenix/pherf/TestHBaseProps.java | 34 + .../test/resources/datamodel/test_schema.sql | 33 + .../datamodel/test_schema_mt_table.sql | 31 + phoenix-pherf/src/test/resources/hbase-site.xml | 25 + .../src/test/resources/pherf.test.properties | 47 + .../test/resources/scenario/test_scenario.xml | 256 + phoenix-pherf/standalone/pherf.sh | 28 + phoenix-pig/pom.xml | 37 +- .../phoenix/pig/PhoenixHBaseLoaderIT.java | 271 +- .../phoenix/pig/PhoenixHBaseStorerIT.java | 4 +- .../phoenix/pig/udf/ReserveNSequenceTestIT.java | 276 + .../apache/phoenix/pig/PhoenixHBaseLoader.java | 2 +- .../apache/phoenix/pig/PhoenixHBaseStorage.java | 52 +- .../phoenix/pig/udf/ReserveNSequence.java | 88 + .../phoenix/pig/util/PhoenixPigSchemaUtil.java | 14 +- .../pig/util/QuerySchemaParserFunction.java | 2 +- .../pig/util/SqlQueryToColumnInfoFunction.java | 2 +- .../org/apache/phoenix/pig/util/TypeUtil.java | 395 +- .../pig/util/PhoenixPigSchemaUtilTest.java | 29 +- .../apache/phoenix/pig/util/TypeUtilTest.java | 70 + phoenix-protocol/src/main/MetaDataService.proto | 51 +- phoenix-protocol/src/main/PFunction.proto | 46 + phoenix-protocol/src/main/PGuidePosts.proto | 20 + phoenix-protocol/src/main/PTable.proto | 5 +- phoenix-server-client/pom.xml | 66 + phoenix-server-client/src/build/thin-client.xml | 41 + .../phoenix/queryserver/client/Driver.java | 49 + .../queryserver/client/ThinClientUtil.java | 35 + .../resources/META-INF/services/java.sql.Driver | 1 + .../org-apache-phoenix-remote-jdbc.properties | 25 + phoenix-server/pom.xml | 111 + .../src/build/query-server-runnable.xml | 48 + .../phoenix/end2end/QueryServerBasicsIT.java | 157 + .../phoenix/end2end/QueryServerThread.java | 45 + .../src/it/resources/log4j.properties | 63 + .../apache/phoenix/queryserver/server/Main.java | 229 + .../queryserver/server/PhoenixMetaFactory.java | 28 + .../server/PhoenixMetaFactoryImpl.java | 76 + .../apache/phoenix/DriverCohabitationTest.java | 65 + phoenix-spark/README.md | 147 + phoenix-spark/pom.xml | 558 + phoenix-spark/src/it/resources/log4j.xml | 70 + phoenix-spark/src/it/resources/setup.sql | 39 + .../apache/phoenix/spark/PhoenixSparkIT.scala | 521 + .../phoenix/spark/ConfigurationUtil.scala | 69 + .../phoenix/spark/DataFrameFunctions.scala | 63 + .../apache/phoenix/spark/DefaultSource.scala | 58 + .../org/apache/phoenix/spark/PhoenixRDD.scala | 163 + .../phoenix/spark/PhoenixRecordWritable.scala | 98 + .../apache/phoenix/spark/PhoenixRelation.scala | 117 + .../phoenix/spark/ProductRDDFunctions.scala | 59 + .../phoenix/spark/SparkContextFunctions.scala | 41 + .../spark/SparkSqlContextFunctions.scala | 39 + .../org/apache/phoenix/spark/package.scala | 36 + phoenix-tracing-webapp/README.md | 15 + phoenix-tracing-webapp/pom.xml | 167 + .../src/build/trace-server-runnable.xml | 60 + .../src/main/config/checkstyle/checker.xml | 281 + .../src/main/config/checkstyle/header.txt | 16 + .../src/main/config/checkstyle/suppressions.xml | 46 + .../tracingwebapp/http/ConnectionFactory.java | 43 + .../tracingwebapp/http/EntityFactory.java | 101 + .../apache/phoenix/tracingwebapp/http/Main.java | 81 + .../tracingwebapp/http/TraceServlet.java | 152 + .../src/main/webapp/WEB-INF/web.xml | 15 + .../src/main/webapp/css/bootstrap-theme.css | 476 + .../src/main/webapp/css/bootstrap-theme.css.map | 1 + .../src/main/webapp/css/bootstrap.css | 6584 +++++ .../src/main/webapp/css/bootstrap.css.map | 1 + .../src/main/webapp/css/font-awesome.css | 1801 ++ .../src/main/webapp/fonts/FontAwesome.otf | Bin 0 -> 93888 bytes .../main/webapp/fonts/fontawesome-webfont.eot | Bin 0 -> 60767 bytes .../main/webapp/fonts/fontawesome-webfont.svg | 565 + .../main/webapp/fonts/fontawesome-webfont.ttf | Bin 0 -> 122092 bytes .../main/webapp/fonts/fontawesome-webfont.woff | Bin 0 -> 71508 bytes .../main/webapp/fonts/fontawesome-webfont.woff2 | Bin 0 -> 56780 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../src/main/webapp/index.html | 110 + .../src/main/webapp/js/api/chart-model.js | 177 + .../src/main/webapp/js/app.js | 52 + .../src/main/webapp/js/config/chart-config.js | 45 + .../js/controllers/accordion-controllers.js | 29 + .../controllers/dependency-tree-controllers.js | 143 + .../webapp/js/controllers/list-controllers.js | 22 + .../webapp/js/controllers/search-controllers.js | 71 + .../js/controllers/timeline-controllers.js | 153 + .../js/controllers/trace-count-controllers.js | 40 + .../trace-distribution-controllers.js | 39 + .../js/factories/statement-factory-config.js | 14 + .../webapp/js/factories/statement-factory.js | 29 + .../src/main/webapp/js/lib/angular-mocks.js | 2468 ++ .../src/main/webapp/js/lib/angular-route.js | 995 + .../src/main/webapp/js/lib/angular.js | 26309 +++++++++++++++++ .../src/main/webapp/js/lib/bootstrap.js | 2317 ++ .../src/main/webapp/js/lib/jquery-2.1.4.js | 9210 ++++++ .../src/main/webapp/js/lib/jquery.min.js | 5 + .../src/main/webapp/js/lib/ng-google-chart.js | 261 + .../src/main/webapp/js/lib/ui-bootstrap-tpls.js | 4840 +++ .../js/services/generate-statement-service.js | 46 + .../src/main/webapp/partials/about.html | 10 + .../src/main/webapp/partials/chart.html | 24 + .../src/main/webapp/partials/contact.html | 5 + .../main/webapp/partials/dependency-tree.html | 11 + .../src/main/webapp/partials/google-chart.html | 23 + .../src/main/webapp/partials/help.html | 36 + .../src/main/webapp/partials/home.html | 20 + .../src/main/webapp/partials/list.html | 39 + .../src/main/webapp/partials/phoenix-trace.html | 60 + .../src/main/webapp/partials/search.html | 58 + .../src/test/webapp/js/specs/app-route-spec.js | 55 + .../test/webapp/js/specs/timeline-ctrl-spec.js | 27 + .../webapp/js/specs/trace-list-ctrl-spec.js | 89 + .../webapp/js/specs/tracing-app-ctrl-spec.js | 23 + pom.xml | 213 +- src/main/config/checkstyle/checker.xml | 281 + src/main/config/checkstyle/header.txt | 16 + src/main/config/checkstyle/suppressions.xml | 46 + 889 files changed, 140195 insertions(+), 12588 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7d3b544a/phoenix-assembly/src/build/client.xml ---------------------------------------------------------------------- diff --cc phoenix-assembly/src/build/client.xml index 4df6b0a,0e1e1f6..c1fe861 --- a/phoenix-assembly/src/build/client.xml +++ b/phoenix-assembly/src/build/client.xml @@@ -46,13 -56,9 +56,13 @@@ <include>jline:jline</include> <include>sqlline:sqlline</include> <include>org.apache.hbase:hbase*</include> - <include>org.cloudera.htrace:htrace-core</include> - <include>io.netty:netty</include> + <include>org.apache.htrace:htrace-core</include> + <include>io.netty:netty-all</include> <include>commons-codec:commons-codec</include> + <include>co.cask.tephra:tephra*</include> + <include>org.apache.twill:twill*</include> + <include>org.apache.thrift:*</include> + <include>com.google.code.gson:gson*</include> </includes> </dependencySet> http://git-wip-us.apache.org/repos/asf/phoenix/blob/7d3b544a/phoenix-assembly/src/build/server-without-antlr.xml ---------------------------------------------------------------------- diff --cc phoenix-assembly/src/build/server-without-antlr.xml index 32531da,072ade0..33cf0b7 --- a/phoenix-assembly/src/build/server-without-antlr.xml +++ b/phoenix-assembly/src/build/server-without-antlr.xml @@@ -36,8 -36,8 +36,10 @@@ <includes> <include>org.apache.phoenix:phoenix-core</include> <include>org.iq80.snappy:snappy</include> + <include>co.cask.tephra:tephra*</include> + <include>com.google.code.gson:gson</include> + <include>org.jruby.joni:joni</include> + <include>org.jruby.jcodings:jcodings</include> </includes> </dependencySet> </dependencySets> http://git-wip-us.apache.org/repos/asf/phoenix/blob/7d3b544a/phoenix-assembly/src/build/server.xml ---------------------------------------------------------------------- diff --cc phoenix-assembly/src/build/server.xml index 3642009,78a4b1f..141f97b --- a/phoenix-assembly/src/build/server.xml +++ b/phoenix-assembly/src/build/server.xml @@@ -36,10 -36,17 +36,13 @@@ <includes> <include>org.apache.phoenix:phoenix-core</include> <include>org.iq80.snappy:snappy</include> + <include>org.antlr:antlr*</include> + <include>co.cask.tephra:tephra*</include> + <include>com.google.code.gson:gson</include> + <include>org.jruby.joni:joni</include> + <include>org.jruby.jcodings:jcodings</include> + <include>joda-time:joda-time</include> </includes> </dependencySet> - <dependencySet> - <unpack>true</unpack> - <outputDirectory>/</outputDirectory> - <includes> - <include>org.antlr:antlr*</include> - </includes> - </dependencySet> </dependencySets> </assembly> http://git-wip-us.apache.org/repos/asf/phoenix/blob/7d3b544a/phoenix-core/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7d3b544a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java ---------------------------------------------------------------------- diff --cc phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java index 3004bd6,dc47d99..6081cb8 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/AlterTableIT.java @@@ -1994,51 -2001,72 +2005,120 @@@ public class AlterTableIT extends BaseO } @Test + public void testAlterTableToBeTransactional() throws Exception { + Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); + Connection conn = DriverManager.getConnection(getUrl(), props); + String ddl = "CREATE TABLE test_table (k varchar primary key)"; + createTestTable(getUrl(), ddl); + + try { + ddl = "ALTER TABLE test_table SET transactional=true"; + conn.createStatement().execute(ddl); + fail(); + } catch (SQLException e) { + assertEquals(SQLExceptionCode.CANNOT_ALTER_PROPERTY.getErrorCode(),e.getErrorCode()); + } + } + + + @Test + public void testCreateTableToBeTransactional() throws Exception { + Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); + Connection conn = DriverManager.getConnection(getUrl(), props); + String ddl = "CREATE TABLE TEST_TRANSACTIONAL_TABLE (k varchar primary key) transactional=true"; + conn.createStatement().execute(ddl); + PhoenixConnection pconn = conn.unwrap(PhoenixConnection.class); + PTable table = pconn.getTable(new PTableKey(null, "TEST_TRANSACTIONAL_TABLE")); + HTableInterface htable = pconn.getQueryServices().getTable(Bytes.toBytes("TEST_TRANSACTIONAL_TABLE")); + assertTrue(table.isTransactional()); + assertTrue(htable.getTableDescriptor().getCoprocessors().contains(TransactionProcessor.class.getName())); + + HBaseAdmin admin = pconn.getQueryServices().getAdmin(); + HTableDescriptor desc = new HTableDescriptor(TableName.valueOf("TXN_TEST_EXISTING")); + desc.addFamily(new HColumnDescriptor(QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES)); + admin.createTable(desc); + try { + ddl = "CREATE TABLE TXN_TEST_EXISTING (k varchar primary key) transactional=true"; + conn.createStatement().execute(ddl); + fail(); + } catch (SQLException e) { + assertEquals(SQLExceptionCode.MAY_NOT_MAP_TO_EXISTING_TABLE_AS_TRANSACTIONAL.getErrorCode(), e.getErrorCode()); + } + // Should be ok, as HBase metadata should match existing metadata. + ddl = "CREATE TABLE IF NOT EXISTS TEST_TRANSACTIONAL_TABLE (k varchar primary key)"; + conn.createStatement().execute(ddl); + table = pconn.getTable(new PTableKey(null, "TEST_TRANSACTIONAL_TABLE")); + htable = pconn.getQueryServices().getTable(Bytes.toBytes("TEST_TRANSACTIONAL_TABLE")); + assertTrue(table.isTransactional()); + assertTrue(htable.getTableDescriptor().getCoprocessors().contains(TransactionProcessor.class.getName())); + } ++ + public void testDeclaringColumnAsRowTimestamp() throws Exception { + try (Connection conn = DriverManager.getConnection(getUrl())) { + conn.createStatement().execute("CREATE TABLE T1 (PK1 DATE NOT NULL, PK2 VARCHAR NOT NULL, KV1 VARCHAR CONSTRAINT PK PRIMARY KEY(PK1 ROW_TIMESTAMP, PK2)) "); + PhoenixConnection phxConn = conn.unwrap(PhoenixConnection.class); - PTable table = phxConn.getMetaDataCache().getTable(new PTableKey(phxConn.getTenantId(), "T1")); ++ PTable table = phxConn.getMetaDataCache().getTableRef(new PTableKey(phxConn.getTenantId(), "T1")).getTable(); + // Assert that the column shows up as row time stamp in the cache. + assertTrue(table.getColumn("PK1").isRowTimestamp()); + assertFalse(table.getColumn("PK2").isRowTimestamp()); + assertIsRowTimestampSet("T1", "PK1"); + + conn.createStatement().execute("CREATE TABLE T6 (PK1 VARCHAR, PK2 DATE PRIMARY KEY ROW_TIMESTAMP, KV1 VARCHAR, KV2 INTEGER)"); - table = phxConn.getMetaDataCache().getTable(new PTableKey(phxConn.getTenantId(), "T6")); ++ table = phxConn.getMetaDataCache().getTableRef(new PTableKey(phxConn.getTenantId(), "T6")).getTable(); + // Assert that the column shows up as row time stamp in the cache. + assertFalse(table.getColumn("PK1").isRowTimestamp()); + assertTrue(table.getColumn("PK2").isRowTimestamp()); + assertIsRowTimestampSet("T6", "PK2"); + + // Create an index on a table has a row time stamp pk column. The column should show up as a row time stamp column for the index too. + conn.createStatement().execute("CREATE INDEX T6_IDX ON T6 (KV1) include (KV2)"); - PTable indexTable = phxConn.getMetaDataCache().getTable(new PTableKey(phxConn.getTenantId(), "T6_IDX")); ++ PTable indexTable = phxConn.getMetaDataCache().getTableRef(new PTableKey(phxConn.getTenantId(), "T6_IDX")).getTable(); + String indexColName = IndexUtil.getIndexColumnName(table.getColumn("PK2")); + // Assert that the column shows up as row time stamp in the cache. + assertTrue(indexTable.getColumn(indexColName).isRowTimestamp()); + assertIsRowTimestampSet("T6_IDX", indexColName); + + // Creating a view with a row_timestamp column in its pk constraint is not allowed + try { + conn.createStatement().execute("CREATE VIEW T6_VIEW (KV3 VARCHAR, KV4 DATE, KV5 INTEGER, CONSTRAINT PK PRIMARY KEY (KV3, KV4 ROW_TIMESTAMP) ) AS SELECT * FROM T6"); + fail("Creating a view with a row_timestamp column in its pk constraint is not allowed"); + } catch (SQLException e) { + assertEquals(SQLExceptionCode.ROWTIMESTAMP_NOT_ALLOWED_ON_VIEW.getErrorCode(), e.getErrorCode()); + } + + // Make sure that the base table column declared as row_timestamp is also row_timestamp for view + conn.createStatement().execute("CREATE VIEW T6_VIEW (KV3 VARCHAR, KV4 VARCHAR, KV5 INTEGER, CONSTRAINT PK PRIMARY KEY (KV3, KV4) ) AS SELECT * FROM T6"); - PTable view = phxConn.getMetaDataCache().getTable(new PTableKey(phxConn.getTenantId(), "T6_VIEW")); ++ PTable view = phxConn.getMetaDataCache().getTableRef(new PTableKey(phxConn.getTenantId(), "T6_VIEW")).getTable(); + assertNotNull(view.getPKColumn("PK2")); + assertTrue(view.getPKColumn("PK2").isRowTimestamp()); + } + } + + private void assertIsRowTimestampSet(String tableName, String columnName) throws SQLException { + String sql = "SELECT IS_ROW_TIMESTAMP FROM SYSTEM.CATALOG WHERE TABLE_SCHEM IS NULL AND TABLE_NAME = ? AND COLUMN_FAMILY IS NULL AND COLUMN_NAME = ?"; + try(Connection conn = DriverManager.getConnection(getUrl())) { + PreparedStatement stmt = conn.prepareStatement(sql); + stmt.setString(1, tableName); + stmt.setString(2, columnName); + ResultSet rs = stmt.executeQuery(); + assertTrue(rs.next()); + assertEquals(true, rs.getBoolean(1)); + } + } + + @Test + public void testAddingRowTimestampColumnNotAllowedViaAlterTable() throws Exception { + try (Connection conn = DriverManager.getConnection(getUrl())) { + conn.createStatement().execute("CREATE TABLE T1 (PK1 VARCHAR NOT NULL, PK2 VARCHAR NOT NULL, KV1 VARCHAR CONSTRAINT PK PRIMARY KEY(PK1, PK2)) "); + // adding a new pk column that is also row_timestamp is not allowed + try { + conn.createStatement().execute("ALTER TABLE T1 ADD PK3 DATE PRIMARY KEY ROW_TIMESTAMP"); + fail("Altering table to add a PK column as row_timestamp column should fail"); + } catch (SQLException e) { + assertEquals(SQLExceptionCode.ROWTIMESTAMP_CREATE_ONLY.getErrorCode(), e.getErrorCode()); + } + } + } + } - ++
