You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2016/09/14 21:43:47 UTC
[49/50] [abbrv] phoenix git commit: Fix compilation errors from sync
with master
Fix compilation errors from sync with master
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a9526a94
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a9526a94
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a9526a94
Branch: refs/heads/calcite
Commit: a9526a94bd603aceeb5c83d4371830815c57e2ad
Parents: 9a08a9d 1ce9845
Author: maryannxue <ma...@gmail.com>
Authored: Wed Sep 14 10:31:57 2016 -0700
Committer: maryannxue <ma...@gmail.com>
Committed: Wed Sep 14 10:31:57 2016 -0700
----------------------------------------------------------------------
.gitignore | 1 +
KEYS | 58 +
LICENSE | 174 +
NOTICE | 29 +-
README.md | 17 +
bin/hadoop-metrics2-hbase.properties | 16 +
bin/hadoop-metrics2-phoenix.properties | 19 +-
bin/hbase-site.xml | 2 -
bin/log4j.properties | 2 +-
bin/phoenix_utils.py | 12 +-
bin/queryserver.py | 38 +-
bin/sqlline-thin.py | 4 +-
bin/sqlline.py | 39 +-
bin/tephra | 6 +-
build.txt | 2 -
dev/make_rc.sh | 12 +-
dev/release_files/LICENSE | 1615 ++-
dev/release_files/NOTICE | 320 +-
dev/test-patch.properties | 1 +
dev/test-patch.sh | 32 +
examples/STOCK_SYMBOL.sql | 1 -
examples/WEB_STAT_QUERIES.sql | 1 -
examples/pig/test.pig | 17 +
phoenix-assembly/pom.xml | 91 +-
phoenix-assembly/src/build/client-minimal.xml | 38 -
phoenix-assembly/src/build/client-spark.xml | 74 -
.../src/build/client-without-hbase.xml | 40 -
phoenix-assembly/src/build/client.xml | 98 -
.../src/build/components-major-client.xml | 57 -
.../src/build/components-minimal.xml | 77 -
.../components/all-common-dependencies.xml | 2 +-
.../src/build/components/all-common-jars.xml | 42 +-
phoenix-assembly/src/build/server.xml | 53 -
phoenix-client/pom.xml | 378 +
phoenix-core/pom.xml | 45 +-
...ReplayWithIndexWritesAndCompressedWALIT.java | 18 +-
.../phoenix/end2end/AbsFunctionEnd2EndIT.java | 11 +-
.../phoenix/end2end/AggregateQueryIT.java | 20 +-
.../AlterMultiTenantTableWithViewsIT.java | 704 ++
.../apache/phoenix/end2end/AlterSessionIT.java | 20 +-
.../apache/phoenix/end2end/AlterTableIT.java | 29 +-
.../phoenix/end2end/AlterTableWithViewsIT.java | 1013 +-
.../phoenix/end2end/AppendOnlySchemaIT.java | 356 +
.../phoenix/end2end/ArithmeticQueryIT.java | 314 +-
.../phoenix/end2end/ArrayAppendFunctionIT.java | 186 +-
.../phoenix/end2end/ArrayConcatFunctionIT.java | 160 +-
.../phoenix/end2end/ArrayFillFunctionIT.java | 175 +-
.../org/apache/phoenix/end2end/ArrayIT.java | 55 +-
.../phoenix/end2end/ArrayPrependFunctionIT.java | 220 +-
.../end2end/ArrayToStringFunctionIT.java | 326 +-
.../phoenix/end2end/ArraysWithNullsIT.java | 152 +-
.../apache/phoenix/end2end/AutoCommitIT.java | 21 +-
.../phoenix/end2end/AutoPartitionViewsIT.java | 392 +
.../end2end/BaseClientManagedTimeIT.java | 2 +-
.../phoenix/end2end/BaseHBaseManagedTimeIT.java | 7 +-
.../BaseHBaseManagedTimeTableReuseIT.java | 73 +
.../BaseOwnClusterClientManagedTimeIT.java | 6 +-
.../BaseOwnClusterHBaseManagedTimeIT.java | 6 +-
.../phoenix/end2end/BaseOwnClusterIT.java | 4 +-
.../org/apache/phoenix/end2end/BaseQueryIT.java | 6 +-
.../end2end/BaseTenantSpecificViewIndexIT.java | 80 +-
.../org/apache/phoenix/end2end/BaseViewIT.java | 15 +-
.../apache/phoenix/end2end/BinaryRowKeyIT.java | 33 +-
.../phoenix/end2end/CSVCommonsLoaderIT.java | 80 +-
.../apache/phoenix/end2end/CaseStatementIT.java | 4 +-
.../apache/phoenix/end2end/CastAndCoerceIT.java | 4 +-
.../phoenix/end2end/CbrtFunctionEnd2EndIT.java | 35 +-
.../phoenix/end2end/ClientManagedTimeTest.java | 4 +-
.../end2end/ClientTimeArithmeticQueryIT.java | 4 +-
.../phoenix/end2end/CoalesceFunctionIT.java | 117 +-
.../end2end/ColumnProjectionOptimizationIT.java | 17 +-
.../end2end/ConvertTimezoneFunctionIT.java | 85 +-
.../end2end/CountDistinctCompressionIT.java | 3 +-
.../apache/phoenix/end2end/CreateSchemaIT.java | 83 +
.../apache/phoenix/end2end/CreateTableIT.java | 81 +-
.../phoenix/end2end/CsvBulkLoadToolIT.java | 4 +
.../phoenix/end2end/CustomEntityDataIT.java | 2 +-
.../org/apache/phoenix/end2end/DateTimeIT.java | 209 +-
.../phoenix/end2end/DecodeFunctionIT.java | 49 +-
.../org/apache/phoenix/end2end/DeleteIT.java | 176 +-
.../apache/phoenix/end2end/DerivedTableIT.java | 3 +-
.../phoenix/end2end/DisableLocalIndexIT.java | 18 +-
.../apache/phoenix/end2end/DistinctCountIT.java | 80 +-
.../phoenix/end2end/DistinctPrefixFilterIT.java | 395 +
.../apache/phoenix/end2end/DropSchemaIT.java | 138 +
.../apache/phoenix/end2end/DynamicColumnIT.java | 119 +-
.../apache/phoenix/end2end/DynamicFamilyIT.java | 31 +-
.../apache/phoenix/end2end/DynamicUpsertIT.java | 11 +-
.../phoenix/end2end/EncodeFunctionIT.java | 42 +-
.../phoenix/end2end/End2EndTestDriver.java | 2 -
.../phoenix/end2end/EvaluationOfORIT.java | 13 +-
.../phoenix/end2end/ExecuteStatementsIT.java | 42 +-
.../phoenix/end2end/ExpFunctionEnd2EndIT.java | 20 +-
.../phoenix/end2end/ExtendedQueryExecIT.java | 12 +-
.../phoenix/end2end/FirstValueFunctionIT.java | 144 +-
.../apache/phoenix/end2end/FunkyNamesIT.java | 2 +-
.../end2end/GetSetByteBitFunctionEnd2EndIT.java | 26 +-
.../apache/phoenix/end2end/GroupByCaseIT.java | 245 +-
.../org/apache/phoenix/end2end/GroupByIT.java | 4 +-
.../end2end/HBaseManagedTimeTableReuseTest.java | 47 +
.../phoenix/end2end/HBaseManagedTimeTest.java | 8 +-
.../org/apache/phoenix/end2end/HashJoinIT.java | 55 +-
.../phoenix/end2end/HashJoinLocalIndexIT.java | 13 +-
.../apache/phoenix/end2end/HashJoinMoreIT.java | 301 +-
.../org/apache/phoenix/end2end/InListIT.java | 41 +-
.../phoenix/end2end/InMemoryOrderByIT.java | 6 +-
.../org/apache/phoenix/end2end/IndexToolIT.java | 21 +-
.../apache/phoenix/end2end/InstrFunctionIT.java | 48 +-
.../org/apache/phoenix/end2end/IsNullIT.java | 37 +-
.../org/apache/phoenix/end2end/KeyOnlyIT.java | 6 +-
.../phoenix/end2end/LastValueFunctionIT.java | 194 +-
.../phoenix/end2end/LikeExpressionIT.java | 77 +-
.../phoenix/end2end/LnLogFunctionEnd2EndIT.java | 15 +-
.../apache/phoenix/end2end/MD5FunctionIT.java | 30 +-
.../org/apache/phoenix/end2end/MapReduceIT.java | 61 +-
.../phoenix/end2end/MappingTableDataTypeIT.java | 17 +-
.../end2end/MinMaxAggregateFunctionIT.java | 24 +-
.../phoenix/end2end/ModulusExpressionIT.java | 45 +-
.../phoenix/end2end/MultiCfQueryExecIT.java | 2 +-
.../end2end/NamespaceSchemaMappingIT.java | 115 +
.../phoenix/end2end/NativeHBaseTypesIT.java | 2 +-
.../end2end/NeedsOwnMiniClusterTest.java | 4 +-
.../org/apache/phoenix/end2end/NotQueryIT.java | 4 +-
.../phoenix/end2end/NthValueFunctionIT.java | 252 +-
.../end2end/OctetLengthFunctionEnd2EndIT.java | 13 +-
.../org/apache/phoenix/end2end/OrderByIT.java | 98 +-
.../phoenix/end2end/ParallelIteratorsIT.java | 6 +-
.../apache/phoenix/end2end/PercentileIT.java | 137 +-
.../phoenix/end2end/PhoenixRuntimeIT.java | 44 +-
.../phoenix/end2end/PowerFunctionEnd2EndIT.java | 21 +-
.../apache/phoenix/end2end/PrimitiveTypeIT.java | 63 +-
.../phoenix/end2end/ProductMetricsIT.java | 2 +-
.../end2end/QueryDatabaseMetaDataIT.java | 162 +-
.../phoenix/end2end/QueryExecWithoutSCNIT.java | 6 +-
.../org/apache/phoenix/end2end/QueryMoreIT.java | 31 +-
.../apache/phoenix/end2end/QueryTimeoutIT.java | 36 +-
.../phoenix/end2end/QueryWithLimitIT.java | 8 +-
.../phoenix/end2end/QueryWithOffsetIT.java | 62 +-
.../apache/phoenix/end2end/RTrimFunctionIT.java | 24 +-
.../phoenix/end2end/ReadIsolationLevelIT.java | 2 +-
.../org/apache/phoenix/end2end/ReadOnlyIT.java | 17 +-
.../end2end/RegexpReplaceFunctionIT.java | 17 +-
.../phoenix/end2end/RegexpSplitFunctionIT.java | 69 +-
.../phoenix/end2end/RegexpSubstrFunctionIT.java | 12 +-
.../apache/phoenix/end2end/RenewLeaseIT.java | 90 +
.../phoenix/end2end/ReverseFunctionIT.java | 42 +-
.../apache/phoenix/end2end/ReverseScanIT.java | 58 +-
.../RoundFloorCeilFunctionsEnd2EndIT.java | 101 +-
.../phoenix/end2end/RowValueConstructorIT.java | 83 +-
.../org/apache/phoenix/end2end/ScanQueryIT.java | 4 +-
.../org/apache/phoenix/end2end/SequenceIT.java | 58 +-
.../phoenix/end2end/SerialIteratorsIT.java | 90 +
.../phoenix/end2end/ServerExceptionIT.java | 9 +-
.../org/apache/phoenix/end2end/Shadower.java | 4 +-
.../phoenix/end2end/SignFunctionEnd2EndIT.java | 35 +-
.../end2end/SkipScanAfterManualSplitIT.java | 44 +-
.../apache/phoenix/end2end/SkipScanQueryIT.java | 156 +-
.../apache/phoenix/end2end/SortMergeJoinIT.java | 11 +-
.../phoenix/end2end/SortMergeJoinMoreIT.java | 257 +-
.../org/apache/phoenix/end2end/SortOrderIT.java | 303 +-
.../phoenix/end2end/SpillableGroupByIT.java | 2 +-
.../phoenix/end2end/SpooledOrderByIT.java | 4 +-
.../phoenix/end2end/SpooledTmpFileDeleteIT.java | 20 +-
.../phoenix/end2end/SqrtFunctionEnd2EndIT.java | 25 +-
.../phoenix/end2end/StatementHintsIT.java | 12 +-
.../org/apache/phoenix/end2end/StddevIT.java | 18 +-
.../apache/phoenix/end2end/StoreNullsIT.java | 51 +-
.../org/apache/phoenix/end2end/StringIT.java | 66 +-
.../end2end/StringToArrayFunctionIT.java | 164 +-
.../org/apache/phoenix/end2end/SubqueryIT.java | 24 +-
.../end2end/SubqueryUsingSortMergeJoinIT.java | 12 +-
.../apache/phoenix/end2end/TenantIdTypeIT.java | 4 +-
.../end2end/TenantSpecificTablesDDLIT.java | 5 +-
.../end2end/TenantSpecificViewIndexIT.java | 219 +-
.../end2end/TimezoneOffsetFunctionIT.java | 63 +-
.../phoenix/end2end/ToCharFunctionIT.java | 54 +-
.../phoenix/end2end/ToDateFunctionIT.java | 9 +-
.../java/org/apache/phoenix/end2end/TopNIT.java | 8 +-
.../phoenix/end2end/TruncateFunctionIT.java | 2 +-
.../org/apache/phoenix/end2end/UnionAllIT.java | 325 +-
.../apache/phoenix/end2end/UnnestArrayIT.java | 18 +-
.../org/apache/phoenix/end2end/UpgradeIT.java | 320 +-
.../phoenix/end2end/UpsertBigValuesIT.java | 78 +-
.../end2end/UpsertSelectAutoCommitIT.java | 50 +-
.../apache/phoenix/end2end/UpsertSelectIT.java | 20 +-
.../apache/phoenix/end2end/UpsertValuesIT.java | 44 +-
.../org/apache/phoenix/end2end/UseSchemaIT.java | 146 +
.../phoenix/end2end/UserDefinedFunctionsIT.java | 60 +-
.../phoenix/end2end/VariableLengthPKIT.java | 38 +-
.../java/org/apache/phoenix/end2end/ViewIT.java | 35 +-
.../end2end/index/AsyncImmutableIndexIT.java | 114 +
.../end2end/index/AsyncIndexDisabledIT.java | 78 +
.../phoenix/end2end/index/DropMetadataIT.java | 303 +
.../phoenix/end2end/index/DropViewIT.java | 105 -
.../index/GlobalIndexOptimizationIT.java | 175 +-
.../phoenix/end2end/index/ImmutableIndexIT.java | 36 +-
.../end2end/index/IndexExpressionIT.java | 431 +-
.../apache/phoenix/end2end/index/IndexIT.java | 144 +-
.../phoenix/end2end/index/IndexMetadataIT.java | 293 +-
.../phoenix/end2end/index/LocalIndexIT.java | 724 +-
.../end2end/index/MutableIndexFailureIT.java | 60 +-
.../phoenix/end2end/index/MutableIndexIT.java | 331 +-
.../end2end/index/ReadOnlyIndexFailureIT.java | 10 +
.../phoenix/end2end/index/SaltedIndexIT.java | 95 +-
.../phoenix/end2end/index/ViewIndexIT.java | 137 +-
.../end2end/index/txn/MutableRollbackIT.java | 82 +-
.../phoenix/end2end/index/txn/RollbackIT.java | 20 +-
.../end2end/index/txn/TxWriteFailureIT.java | 2 +-
.../phoenix/end2end/salted/SaltedTableIT.java | 2 +-
.../salted/SaltedTableUpsertSelectIT.java | 87 +-
.../salted/SaltedTableVarLengthRowKeyIT.java | 12 +-
.../apache/phoenix/execute/PartialCommitIT.java | 4 +-
.../index/balancer/IndexLoadBalancerIT.java | 485 -
.../DelayedTableResultIteratorFactory.java | 9 +-
.../iterate/MockParallelIteratorFactory.java | 3 +-
.../phoenix/iterate/PhoenixQueryTimeoutIT.java | 26 +-
.../iterate/RoundRobinResultIteratorIT.java | 26 +-
.../apache/phoenix/rpc/PhoenixServerRpcIT.java | 21 -
.../org/apache/phoenix/rpc/UpdateCacheIT.java | 26 +-
.../phoenix/rpc/UpdateCacheWithScnIT.java | 2 +-
.../apache/phoenix/trace/BaseTracingTestIT.java | 4 +-
.../org/apache/phoenix/tx/TransactionIT.java | 315 +-
.../org/apache/phoenix/tx/TxCheckpointIT.java | 63 +-
phoenix-core/src/main/antlr3/PhoenixSQL.g | 22 +
.../hadoop/hbase/ipc/PhoenixRpcScheduler.java | 8 +-
.../ipc/controller/MetadataRpcController.java | 12 +-
.../regionserver/IndexHalfStoreFileReader.java | 412 +-
.../IndexHalfStoreFileReaderGenerator.java | 172 +-
.../regionserver/IndexSplitTransaction.java | 986 --
.../hbase/regionserver/LocalIndexMerger.java | 123 -
.../hbase/regionserver/LocalIndexSplitter.java | 174 -
.../LocalIndexStoreFileScanner.java | 268 +
.../org/apache/phoenix/cache/GlobalCache.java | 4 +-
.../phoenix/cache/IndexMetaDataCache.java | 2 +-
.../apache/phoenix/cache/JodaTimezoneCache.java | 16 +-
.../apache/phoenix/cache/ServerCacheClient.java | 48 +-
.../cache/aggcache/SpillableGroupByCache.java | 5 +-
.../apache/phoenix/calcite/PhoenixSchema.java | 3 +-
.../apache/phoenix/calcite/TableMapping.java | 5 +-
.../calcite/rel/PhoenixRelImplementorImpl.java | 2 +-
.../phoenix/calcite/rel/PhoenixTableModify.java | 2 +-
.../rel/PhoenixToEnumerableConverter.java | 5 +
.../phoenix/compile/AggregationManager.java | 60 +
.../apache/phoenix/compile/ColumnResolver.java | 10 +
.../phoenix/compile/CreateSchemaCompiler.java | 65 +
.../phoenix/compile/CreateTableCompiler.java | 18 +-
.../apache/phoenix/compile/DeleteCompiler.java | 93 +-
.../phoenix/compile/ExpressionCompiler.java | 6 +-
.../apache/phoenix/compile/FromCompiler.java | 177 +-
.../apache/phoenix/compile/GroupByCompiler.java | 100 +-
.../phoenix/compile/IndexStatementRewriter.java | 12 +-
.../apache/phoenix/compile/JoinCompiler.java | 38 +-
.../phoenix/compile/ListJarsQueryPlan.java | 4 +
.../MutatingParallelIteratorFactory.java | 2 +-
.../apache/phoenix/compile/OrderByCompiler.java | 18 +-
.../phoenix/compile/OrderPreservingTracker.java | 9 +
.../apache/phoenix/compile/PostDDLCompiler.java | 25 +-
.../compile/PostLocalIndexDDLCompiler.java | 23 +-
.../phoenix/compile/ProjectionCompiler.java | 63 +-
.../apache/phoenix/compile/QueryCompiler.java | 18 +-
.../org/apache/phoenix/compile/QueryPlan.java | 2 +
.../org/apache/phoenix/compile/ScanRanges.java | 104 +-
.../phoenix/compile/StatementContext.java | 5 +-
.../apache/phoenix/compile/TraceQueryPlan.java | 5 +
.../compile/TupleProjectionCompiler.java | 16 +-
.../apache/phoenix/compile/UnionCompiler.java | 161 +-
.../apache/phoenix/compile/UpsertCompiler.java | 103 +-
.../apache/phoenix/compile/WhereOptimizer.java | 64 +-
.../coprocessor/BaseScannerRegionObserver.java | 217 +-
.../coprocessor/DelegateRegionObserver.java | 248 +-
.../coprocessor/DelegateRegionScanner.java | 2 +-
.../phoenix/coprocessor/GroupByCache.java | 5 +-
.../GroupedAggregateRegionObserver.java | 34 +-
.../coprocessor/HashJoinRegionScanner.java | 5 +-
.../coprocessor/MetaDataEndpointImpl.java | 956 +-
.../phoenix/coprocessor/MetaDataProtocol.java | 169 +-
.../coprocessor/MetaDataRegionObserver.java | 25 +-
.../PhoenixTransactionalProcessor.java | 2 +-
.../phoenix/coprocessor/ScanRegionObserver.java | 20 +-
.../coprocessor/SequenceRegionObserver.java | 7 +
.../UngroupedAggregateRegionObserver.java | 255 +-
.../coprocessor/generated/MetaDataProtos.java | 9554 +++++++++++++-----
.../coprocessor/generated/PSchemaProtos.java | 666 ++
.../coprocessor/generated/PTableProtos.java | 361 +-
.../phoenix/exception/SQLExceptionCode.java | 38 +-
.../exception/UndecodableByteException.java | 4 +-
.../apache/phoenix/execute/AggregatePlan.java | 42 +-
.../apache/phoenix/execute/BaseQueryPlan.java | 30 +-
.../phoenix/execute/ClientAggregatePlan.java | 6 +
.../apache/phoenix/execute/ClientScanPlan.java | 7 +-
.../apache/phoenix/execute/CorrelatePlan.java | 8 +-
.../phoenix/execute/DegenerateQueryPlan.java | 2 +-
.../apache/phoenix/execute/HashJoinPlan.java | 8 +-
.../execute/LiteralResultIterationPlan.java | 2 +-
.../apache/phoenix/execute/MutationState.java | 382 +-
.../org/apache/phoenix/execute/ScanPlan.java | 121 +-
.../phoenix/execute/SortMergeJoinPlan.java | 8 +-
.../phoenix/execute/TupleProjectionPlan.java | 8 +-
.../org/apache/phoenix/execute/UnionPlan.java | 6 +-
.../apache/phoenix/execute/UnnestArrayPlan.java | 8 +-
.../expression/ByteBasedLikeExpression.java | 4 +-
.../phoenix/expression/InListExpression.java | 4 +-
.../expression/RowKeyColumnExpression.java | 6 +-
.../RowValueConstructorExpression.java | 30 +-
.../expression/StringBasedLikeExpression.java | 3 +-
.../DistinctValueWithCountServerAggregator.java | 11 +-
.../function/ArrayLengthFunction.java | 2 +-
.../ByteBasedRegexpReplaceFunction.java | 3 +-
.../function/ByteBasedRegexpSplitFunction.java | 3 +-
.../function/ByteBasedRegexpSubstrFunction.java | 3 +-
.../expression/function/CeilDateExpression.java | 2 +-
.../function/CeilDecimalExpression.java | 12 +-
.../function/CeilTimestampExpression.java | 14 +-
.../expression/function/CoalesceFunction.java | 6 +-
.../function/ConvertTimezoneFunction.java | 14 +-
.../DistinctCountAggregateFunction.java | 6 +-
.../expression/function/EncodeFormat.java | 14 +-
.../function/FloorDateExpression.java | 2 +-
.../function/FloorDecimalExpression.java | 12 +-
.../function/RoundDateExpression.java | 2 +-
.../function/RoundDecimalExpression.java | 2 +-
.../function/RoundTimestampExpression.java | 2 +-
.../StringBasedRegexpReplaceFunction.java | 3 +-
.../StringBasedRegexpSubstrFunction.java | 3 +-
.../expression/function/ToCharFunction.java | 3 +
.../phoenix/filter/BooleanExpressionFilter.java | 1 +
.../phoenix/filter/DistinctPrefixFilter.java | 154 +
.../filter/MultiKeyValueComparisonFilter.java | 1 -
.../hbase/index/IndexRegionSplitPolicy.java | 52 +-
.../org/apache/phoenix/hbase/index/Indexer.java | 84 +-
.../hbase/index/balancer/IndexLoadBalancer.java | 671 +-
.../hbase/index/covered/IndexMetaData.java | 9 +-
.../hbase/index/covered/NonTxIndexBuilder.java | 6 +-
.../index/covered/update/ColumnReference.java | 9 +-
.../hbase/index/master/IndexMasterObserver.java | 88 -
.../index/util/ReadOnlyImmutableBytesPtr.java | 59 -
.../hbase/index/write/IndexCommitter.java | 2 +-
.../phoenix/hbase/index/write/IndexWriter.java | 37 +-
.../write/ParallelWriterIndexCommitter.java | 42 +-
.../hbase/index/write/RecoveryIndexWriter.java | 134 +
.../TrackingParallelWriterIndexCommitter.java | 47 +-
.../apache/phoenix/index/IndexMaintainer.java | 74 +-
.../index/IndexMetaDataCacheFactory.java | 2 +-
.../phoenix/index/PhoenixIndexBuilder.java | 64 -
.../apache/phoenix/index/PhoenixIndexCodec.java | 6 +-
.../index/PhoenixIndexFailurePolicy.java | 13 +-
.../phoenix/index/PhoenixIndexMetaData.java | 17 +-
.../index/PhoenixTransactionalIndexer.java | 111 +-
.../iterate/AggregatingResultIterator.java | 4 +-
.../BaseGroupedAggregatingResultIterator.java | 3 +-
.../phoenix/iterate/BaseResultIterators.java | 181 +-
.../phoenix/iterate/ChunkedResultIterator.java | 69 +-
.../DefaultTableResultIteratorFactory.java | 5 +-
.../DistinctAggregatingResultIterator.java | 15 +-
.../apache/phoenix/iterate/ExplainTable.java | 26 +-
.../FilterAggregatingResultIterator.java | 8 +-
.../phoenix/iterate/OffsetResultIterator.java | 2 +-
.../OrderedAggregatingResultIterator.java | 5 +-
.../iterate/ParallelIteratorFactory.java | 5 +-
.../phoenix/iterate/ParallelIterators.java | 42 +-
.../RowKeyOrderedAggregateResultIterator.java | 190 +
.../apache/phoenix/iterate/SerialIterators.java | 156 +-
.../phoenix/iterate/SpoolingResultIterator.java | 20 +-
.../phoenix/iterate/TableResultIterator.java | 81 +-
.../iterate/TableResultIteratorFactory.java | 3 +-
.../apache/phoenix/jdbc/PhoenixConnection.java | 105 +-
.../phoenix/jdbc/PhoenixDatabaseMetaData.java | 180 +-
.../org/apache/phoenix/jdbc/PhoenixDriver.java | 41 +-
.../phoenix/jdbc/PhoenixEmbeddedDriver.java | 136 +-
.../apache/phoenix/jdbc/PhoenixStatement.java | 93 +-
.../phoenix/mapreduce/AbstractBulkLoadTool.java | 80 +-
.../phoenix/mapreduce/CsvBulkImportUtil.java | 7 +
.../mapreduce/FormatToBytesWritableMapper.java | 122 +-
.../mapreduce/FormatToKeyValueReducer.java | 71 +-
.../mapreduce/MultiHfileOutputFormat.java | 4 +-
.../phoenix/mapreduce/PhoenixInputFormat.java | 2 -
.../phoenix/mapreduce/PhoenixRecordReader.java | 5 +-
.../phoenix/mapreduce/index/IndexTool.java | 74 +-
.../phoenix/mapreduce/index/IndexToolUtil.java | 4 +-
.../index/PhoenixIndexImportDirectReducer.java | 60 +
.../index/PhoenixIndexImportMapper.java | 7 +-
.../index/PhoenixIndexToolReducer.java | 60 -
.../index/automation/PhoenixAsyncIndex.java | 75 +
.../index/automation/PhoenixMRJobCallable.java | 73 +
.../index/automation/PhoenixMRJobSubmitter.java | 290 +
.../index/automation/YarnApplication.java | 208 +
.../phoenix/memory/GlobalMemoryManager.java | 30 +-
.../apache/phoenix/optimize/QueryOptimizer.java | 23 +-
.../org/apache/phoenix/parse/ColumnDef.java | 7 +-
.../phoenix/parse/CreateSchemaStatement.java | 42 +
.../phoenix/parse/DropSchemaStatement.java | 55 +
.../parse/IndexExpressionParseNodeRewriter.java | 8 +-
.../java/org/apache/phoenix/parse/PSchema.java | 86 +
.../apache/phoenix/parse/ParseNodeFactory.java | 12 +
.../phoenix/parse/UseSchemaStatement.java | 36 +
.../apache/phoenix/protobuf/ProtobufUtil.java | 18 +-
.../phoenix/query/ConnectionQueryServices.java | 22 +-
.../query/ConnectionQueryServicesImpl.java | 1179 ++-
.../query/ConnectionlessQueryServicesImpl.java | 108 +-
.../query/DelegateConnectionQueryServices.java | 79 +-
.../apache/phoenix/query/MetaDataMutated.java | 18 +-
.../apache/phoenix/query/QueryConstants.java | 26 +-
.../org/apache/phoenix/query/QueryServices.java | 19 +-
.../phoenix/query/QueryServicesOptions.java | 31 +-
.../apache/phoenix/query/TableStatsCache.java | 192 +
.../apache/phoenix/schema/DelegateTable.java | 21 +-
.../apache/phoenix/schema/MetaDataClient.java | 804 +-
.../NewerSchemaAlreadyExistsException.java | 26 +
.../org/apache/phoenix/schema/PMetaData.java | 6 +-
.../apache/phoenix/schema/PMetaDataCache.java | 221 +
.../apache/phoenix/schema/PMetaDataImpl.java | 344 +-
.../phoenix/schema/PSynchronizedMetaData.java | 249 +
.../java/org/apache/phoenix/schema/PTable.java | 20 +-
.../org/apache/phoenix/schema/PTableImpl.java | 227 +-
.../org/apache/phoenix/schema/PTableKey.java | 2 +
.../org/apache/phoenix/schema/PTableRef.java | 56 +-
.../apache/phoenix/schema/PTableRefFactory.java | 52 +
.../apache/phoenix/schema/PTableRefImpl.java | 39 +
.../schema/SchemaAlreadyExistsException.java | 53 +
.../phoenix/schema/SchemaNotFoundException.java | 52 +
.../org/apache/phoenix/schema/Sequence.java | 20 +-
.../phoenix/schema/SerializedPTableRef.java | 47 +
.../schema/SerializedPTableRefFactory.java | 37 +
.../org/apache/phoenix/schema/SortOrder.java | 2 -
.../apache/phoenix/schema/TableProperty.java | 11 +-
.../org/apache/phoenix/schema/TableRef.java | 3 +-
.../org/apache/phoenix/schema/ValueSchema.java | 30 +-
.../stats/DefaultStatisticsCollector.java | 4 +-
.../schema/stats/GuidePostsInfoBuilder.java | 6 +-
.../stats/StatisticsCollectionRunTracker.java | 1 -
.../schema/stats/StatisticsCollectionScope.java | 6 +-
.../stats/StatisticsCollectorFactory.java | 16 +-
.../phoenix/schema/stats/StatisticsScanner.java | 18 +-
.../phoenix/schema/stats/StatisticsUtil.java | 27 +
.../phoenix/schema/stats/StatisticsWriter.java | 20 +-
.../phoenix/schema/types/PArrayDataType.java | 4 +-
.../org/apache/phoenix/schema/types/PChar.java | 4 +
.../apache/phoenix/schema/types/PDataType.java | 12 +
.../org/apache/phoenix/schema/types/PDate.java | 2 +-
.../apache/phoenix/schema/types/PDecimal.java | 8 +
.../apache/phoenix/schema/types/PTimestamp.java | 2 +-
.../phoenix/trace/PhoenixMetricsSink.java | 2 +-
.../org/apache/phoenix/util/ConfigUtil.java | 2 -
.../java/org/apache/phoenix/util/DateUtil.java | 17 +-
.../java/org/apache/phoenix/util/IndexUtil.java | 135 +-
.../apache/phoenix/util/InstanceResolver.java | 7 +
.../java/org/apache/phoenix/util/JDBCUtil.java | 5 +
.../org/apache/phoenix/util/MetaDataUtil.java | 244 +-
.../apache/phoenix/util/PhoenixMRJobUtil.java | 233 +
.../org/apache/phoenix/util/PhoenixRuntime.java | 128 +-
.../java/org/apache/phoenix/util/QueryUtil.java | 75 +-
.../java/org/apache/phoenix/util/ScanUtil.java | 99 +-
.../org/apache/phoenix/util/SchemaUtil.java | 166 +-
.../apache/phoenix/util/TransactionUtil.java | 20 +-
.../org/apache/phoenix/util/UpgradeUtil.java | 622 +-
.../phoenix/util/ZKBasedMasterElectionUtil.java | 70 +
.../phoenix/cache/JodaTimezoneCacheTest.java | 16 +-
.../compile/CreateTableCompilerTest.java | 47 +
.../phoenix/compile/QueryCompilerTest.java | 151 +
.../phoenix/compile/QueryOptimizerTest.java | 24 +
.../phoenix/compile/SaltedScanRangesTest.java | 239 +
.../compile/ScanRangesIntersectTest.java | 4 +-
.../apache/phoenix/compile/ScanRangesTest.java | 8 +-
.../compile/StatementHintsCompilationTest.java | 8 +-
.../TenantSpecificViewIndexCompileTest.java | 6 +-
.../phoenix/compile/WhereOptimizerTest.java | 61 +-
.../phoenix/execute/CorrelatePlanTest.java | 2 +-
.../execute/LiteralResultIteratorPlanTest.java | 2 +-
.../phoenix/execute/MutationStateTest.java | 4 +-
.../phoenix/expression/LikeExpressionTest.java | 8 +
.../BuiltinFunctionConstructorTest.java | 25 +-
.../filter/DistinctPrefixFilterTest.java | 274 +
.../phoenix/filter/SkipScanBigFilterTest.java | 12 +-
.../index/write/TestParalleIndexWriter.java | 2 +-
.../write/TestParalleWriterIndexCommitter.java | 2 +-
.../phoenix/index/IndexMaintainerTest.java | 2 +-
.../index/automated/MRJobSubmitterTest.java | 137 +
.../iterate/AggregateResultScannerTest.java | 109 +-
.../iterate/ConcatResultIteratorTest.java | 31 +-
.../iterate/MaterializedResultIterators.java | 66 +
...owKeyOrderedAggregateResultIteratorTest.java | 149 +
.../apache/phoenix/jdbc/PhoenixDriverTest.java | 10 +-
.../phoenix/jdbc/PhoenixEmbeddedDriverTest.java | 6 +-
.../phoenix/jdbc/SecureUserConnectionsTest.java | 382 +
.../phoenix/mapreduce/BulkLoadToolTest.java | 5 +-
.../ColumnInfoToStringEncoderDecoderTest.java | 4 +-
.../util/PhoenixConfigurationUtilTest.java | 4 +-
.../phoenix/memory/MemoryManagerTest.java | 93 +-
.../java/org/apache/phoenix/query/BaseTest.java | 260 +-
.../query/ParallelIteratorsSplitTest.java | 20 +-
.../PhoenixStatsCacheRemovalListenerTest.java | 45 +
.../org/apache/phoenix/query/QueryPlanTest.java | 30 +-
.../phoenix/schema/PMetaDataImplTest.java | 102 +-
.../apache/phoenix/schema/SortOrderTest.java | 2 -
.../org/apache/phoenix/util/DateUtilTest.java | 25 +
.../org/apache/phoenix/util/JDBCUtilTest.java | 8 +
.../apache/phoenix/util/MetaDataUtilTest.java | 36 +
.../phoenix/util/PhoenixEncodeDecodeTest.java | 4 +-
.../util/TenantIdByteConversionTest.java | 2 +-
.../java/org/apache/phoenix/util/TestUtil.java | 97 +-
.../test/resources/hadoop-metrics2.properties | 18 +-
.../src/test/resources/log4j.properties | 2 +
phoenix-flume/pom.xml | 14 +-
.../org/apache/phoenix/flume/PhoenixSinkIT.java | 17 +-
.../phoenix/flume/RegexEventSerializerIT.java | 16 +-
phoenix-hive/pom.xml | 162 +
.../apache/phoenix/hive/HivePhoenixStoreIT.java | 303 +
.../org/apache/phoenix/hive/HiveTestUtil.java | 1296 +++
.../apache/phoenix/hive/PhoenixMetaHook.java | 246 +
.../phoenix/hive/PhoenixRecordUpdater.java | 336 +
.../org/apache/phoenix/hive/PhoenixRow.java | 64 +
.../org/apache/phoenix/hive/PhoenixRowKey.java | 69 +
.../org/apache/phoenix/hive/PhoenixSerDe.java | 159 +
.../apache/phoenix/hive/PhoenixSerializer.java | 169 +
.../phoenix/hive/PhoenixStorageHandler.java | 212 +
.../PhoenixStorageHandlerConstants.java | 108 +
.../hive/mapreduce/PhoenixInputFormat.java | 269 +
.../hive/mapreduce/PhoenixInputSplit.java | 160 +
.../hive/mapreduce/PhoenixOutputFormat.java | 112 +
.../hive/mapreduce/PhoenixRecordReader.java | 216 +
.../hive/mapreduce/PhoenixRecordWriter.java | 355 +
.../hive/mapreduce/PhoenixResultWritable.java | 211 +
.../AbstractPhoenixObjectInspector.java | 59 +
.../PhoenixBinaryObjectInspector.java | 58 +
.../PhoenixBooleanObjectInspector.java | 50 +
.../PhoenixByteObjectInspector.java | 54 +
.../PhoenixCharObjectInspector.java | 51 +
.../PhoenixDateObjectInspector.java | 63 +
.../PhoenixDecimalObjectInspector.java | 63 +
.../PhoenixDoubleObjectInspector.java | 54 +
.../PhoenixFloatObjectInspector.java | 55 +
.../PhoenixIntObjectInspector.java | 51 +
.../PhoenixListObjectInspector.java | 105 +
.../PhoenixLongObjectInspector.java | 51 +
.../PhoenixObjectInspectorFactory.java | 148 +
.../PhoenixShortObjectInspector.java | 51 +
.../PhoenixStringObjectInspector.java | 72 +
.../PhoenixTimestampObjectInspector.java | 61 +
.../hive/ppd/PhoenixPredicateDecomposer.java | 82 +
.../ppd/PhoenixPredicateDecomposerManager.java | 83 +
.../hive/ql/index/IndexPredicateAnalyzer.java | 523 +
.../hive/ql/index/IndexSearchCondition.java | 143 +
.../hive/ql/index/PredicateAnalyzerFactory.java | 40 +
.../phoenix/hive/query/PhoenixQueryBuilder.java | 760 ++
.../hive/util/PhoenixConnectionUtil.java | 97 +
.../hive/util/PhoenixStorageHandlerUtil.java | 278 +
.../apache/phoenix/hive/util/PhoenixUtil.java | 210 +
phoenix-pherf/pom.xml | 317 +-
.../apache/phoenix/pherf/ResultBaseTestIT.java | 4 +-
.../apache/phoenix/pherf/SchemaReaderIT.java | 5 +-
.../phoenix/pherf/result/ResultManager.java | 11 +-
.../pherf/result/impl/ImageResultHandler.java | 126 -
.../src/test/resources/pherf.test.properties | 60 +-
phoenix-pig/pom.xml | 10 +-
.../java/org/apache/phoenix/pig/BasePigIT.java | 6 +-
.../phoenix/pig/PhoenixHBaseLoaderIT.java | 6 +-
.../phoenix/pig/PhoenixHBaseStorerIT.java | 4 +-
.../apache/phoenix/pig/PhoenixHBaseLoader.java | 4 +-
.../phoenix/pig/util/PhoenixPigSchemaUtil.java | 4 +-
.../pig/util/QuerySchemaParserFunction.java | 4 +-
.../pig/util/SqlQueryToColumnInfoFunction.java | 4 +-
.../pig/util/TableSchemaParserFunction.java | 4 +-
.../pig/util/PhoenixPigSchemaUtilTest.java | 4 +-
.../pig/util/QuerySchemaParserFunctionTest.java | 4 +-
.../util/SqlQueryToColumnInfoFunctionTest.java | 4 +-
.../pig/util/TableSchemaParserFunctionTest.java | 4 +-
phoenix-protocol/src/main/MetaDataService.proto | 54 +-
phoenix-protocol/src/main/PFunction.proto | 2 -
phoenix-protocol/src/main/PGuidePosts.proto | 4 +-
phoenix-protocol/src/main/PSchema.proto | 28 +
phoenix-protocol/src/main/PTable.proto | 9 +-
.../src/main/ServerCacheFactory.proto | 2 -
.../src/main/ServerCachingService.proto | 2 -
phoenix-queryserver-client/pom.xml | 187 +
.../phoenix/queryserver/client/Driver.java | 49 +
.../queryserver/client/SqllineWrapper.java | 87 +
.../queryserver/client/ThinClientUtil.java | 42 +
.../resources/META-INF/services/java.sql.Driver | 1 +
.../org-apache-phoenix-remote-jdbc.properties | 25 +
phoenix-queryserver/pom.xml | 170 +
.../src/build/query-server-runnable.xml | 52 +
.../phoenix/end2end/QueryServerBasicsIT.java | 164 +
.../phoenix/end2end/QueryServerThread.java | 45 +
.../src/it/resources/log4j.properties | 63 +
.../apache/phoenix/queryserver/server/Main.java | 337 +
.../queryserver/server/PhoenixMetaFactory.java | 28 +
.../server/PhoenixMetaFactoryImpl.java | 76 +
.../apache/phoenix/DriverCohabitationTest.java | 65 +
.../server/PhoenixDoAsCallbackTest.java | 89 +
phoenix-server-client/pom.xml | 66 -
phoenix-server-client/src/build/thin-client.xml | 49 -
.../phoenix/queryserver/client/Driver.java | 49 -
.../queryserver/client/ThinClientUtil.java | 42 -
.../resources/META-INF/services/java.sql.Driver | 1 -
.../org-apache-phoenix-remote-jdbc.properties | 25 -
phoenix-server/pom.xml | 195 +-
.../src/build/query-server-runnable.xml | 52 -
.../phoenix/end2end/QueryServerBasicsIT.java | 157 -
.../phoenix/end2end/QueryServerThread.java | 45 -
.../src/it/resources/log4j.properties | 63 -
.../apache/phoenix/queryserver/server/Main.java | 236 -
.../queryserver/server/PhoenixMetaFactory.java | 28 -
.../server/PhoenixMetaFactoryImpl.java | 76 -
.../apache/phoenix/DriverCohabitationTest.java | 65 -
phoenix-spark/README.md | 19 +-
phoenix-spark/pom.xml | 4 +-
phoenix-spark/src/it/resources/setup.sql | 6 +
.../apache/phoenix/spark/PhoenixSparkIT.scala | 86 +-
.../apache/phoenix/spark/DefaultSource.scala | 3 +-
.../org/apache/phoenix/spark/PhoenixRDD.scala | 27 +-
.../apache/phoenix/spark/PhoenixRelation.scala | 34 +-
phoenix-tracing-webapp/pom.xml | 2 +-
.../src/main/webapp/js/api/chart-model.js | 20 +-
.../src/main/webapp/js/app.js | 20 +-
.../src/main/webapp/js/config/chart-config.js | 20 +-
.../js/controllers/accordion-controllers.js | 18 +
.../controllers/dependency-tree-controllers.js | 20 +-
.../webapp/js/controllers/list-controllers.js | 20 +-
.../webapp/js/controllers/search-controllers.js | 20 +-
.../js/controllers/timeline-controllers.js | 20 +-
.../js/controllers/trace-count-controllers.js | 20 +-
.../trace-distribution-controllers.js | 20 +-
.../js/factories/statement-factory-config.js | 20 +-
.../webapp/js/factories/statement-factory.js | 20 +-
.../js/services/generate-statement-service.js | 20 +-
.../src/test/webapp/js/specs/app-route-spec.js | 20 +-
.../test/webapp/js/specs/timeline-ctrl-spec.js | 20 +-
.../webapp/js/specs/trace-list-ctrl-spec.js | 20 +-
.../webapp/js/specs/tracing-app-ctrl-spec.js | 20 +-
pom.xml | 324 +-
630 files changed, 45460 insertions(+), 16145 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/a9526a94/phoenix-core/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/a9526a94/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
index 46bcaa0,0000000..46a3053
mode 100644,000000..100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
@@@ -1,345 -1,0 +1,346 @@@
+package org.apache.phoenix.calcite;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
+import org.apache.calcite.jdbc.CalciteSchema;
+import org.apache.calcite.linq4j.tree.Expression;
+import org.apache.calcite.materialize.MaterializationService;
+import org.apache.calcite.schema.*;
+import org.apache.calcite.schema.impl.ViewTable;
+import org.apache.phoenix.compile.ColumnResolver;
+import org.apache.phoenix.compile.FromCompiler;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
+import org.apache.phoenix.parse.ColumnDef;
+import org.apache.phoenix.parse.NamedTableNode;
+import org.apache.phoenix.parse.TableName;
+import org.apache.phoenix.schema.MetaDataClient;
+import org.apache.phoenix.schema.PColumn;
+import org.apache.phoenix.schema.PTable;
+import org.apache.phoenix.schema.PTable.ViewType;
+import org.apache.phoenix.schema.PTableImpl;
+import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.TableNotFoundException;
+import org.apache.phoenix.schema.TableRef;
+import org.apache.phoenix.util.IndexUtil;
+import org.apache.phoenix.util.SchemaUtil;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+/**
+ * Implementation of Calcite's {@link Schema} SPI for Phoenix.
+ *
+ * TODO
+ * 1) change this to non-caching mode??
+ * 2) how to deal with define indexes and views since they require a CalciteSchema
+ * instance??
+ *
+ */
+public class PhoenixSchema implements Schema {
+ public static final Factory FACTORY = new Factory();
+
+ public final PhoenixConnection pc;
+
+ protected final String name;
+ protected final String schemaName;
+ protected final SchemaPlus parentSchema;
+ protected final MetaDataClient client;
+
+ protected final Map<String, Schema> subSchemas;
+ protected final Map<String, Table> tables;
+ protected final Map<String, Function> views;
+ protected final Set<TableRef> viewTables;
+
+ protected PhoenixSchema(String name, String schemaName,
+ SchemaPlus parentSchema, PhoenixConnection pc) {
+ this.name = name;
+ this.schemaName = schemaName;
+ this.parentSchema = parentSchema;
+ this.pc = pc;
+ this.client = new MetaDataClient(pc);
+ this.subSchemas = Maps.newHashMap();
+ this.tables = Maps.newHashMap();
+ this.views = Maps.newHashMap();
+ this.viewTables = Sets.newHashSet();
+ }
+
+ private static Schema create(SchemaPlus parentSchema,
+ String name, Map<String, Object> operand) {
+ String url = (String) operand.get("url");
+ final Properties properties = new Properties();
+ for (Map.Entry<String, Object> entry : operand.entrySet()) {
+ properties.setProperty(entry.getKey(), String.valueOf(entry.getValue()));
+ }
+ try {
+ Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
+ final Connection connection =
+ DriverManager.getConnection(url, properties);
+ final PhoenixConnection phoenixConnection =
+ connection.unwrap(PhoenixConnection.class);
+ return new PhoenixSchema(name, null, parentSchema, phoenixConnection);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public Table getTable(String name) {
+ Table table = tables.get(name);
+ if (table != null) {
+ return table;
+ }
+
+ try {
+ ColumnResolver x = FromCompiler.getResolver(
+ NamedTableNode.create(
+ null,
+ TableName.create(schemaName, name),
+ ImmutableList.<ColumnDef>of()), pc);
+ final List<TableRef> tables = x.getTables();
+ assert tables.size() == 1;
+ TableRef tableRef = tables.get(0);
+ if (!isView(tableRef.getTable())) {
+ tableRef = fixTableMultiTenancy(tableRef);
+ table = new PhoenixTable(pc, tableRef);
+ }
+ } catch (TableNotFoundException e) {
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (table == null) {
+ table = resolveSequence(name);
+ }
+
+ if (table != null) {
+ tables.put(name, table);
+ }
+ return table;
+ }
+
+ @Override
+ public Set<String> getTableNames() {
+ return tables.keySet();
+ }
+
+ @Override
+ public Collection<Function> getFunctions(String name) {
+ Function func = views.get(name);
+ if (func != null) {
+ return ImmutableList.of(func);
+ }
+
+ try {
+ ColumnResolver x = FromCompiler.getResolver(
+ NamedTableNode.create(
+ null,
+ TableName.create(schemaName, name),
+ ImmutableList.<ColumnDef>of()), pc);
+ final List<TableRef> tables = x.getTables();
+ assert tables.size() == 1;
+ final TableRef tableRef = tables.get(0);
+ final PTable pTable = tableRef.getTable();
+ if (isView(pTable)) {
+ String viewSql = pTable.getViewStatement();
+ if (viewSql == null) {
+ viewSql = "select * from "
+ + SchemaUtil.getEscapedFullTableName(
+ pTable.getPhysicalName().getString());
+ }
+ SchemaPlus schema = parentSchema.getSubSchema(this.name);
+ SchemaPlus viewSqlSchema =
+ this.schemaName == null ? schema : parentSchema;
+ func = ViewTable.viewMacro(schema, viewSql,
+ CalciteSchema.from(viewSqlSchema).path(null),
+ pTable.getViewType() == ViewType.UPDATABLE);
+ views.put(name, func);
+ viewTables.add(tableRef);
+ }
+ } catch (TableNotFoundException e) {
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ return func == null ? Collections.<Function>emptyList() : ImmutableList.of(func);
+ }
+
+ @Override
+ public Set<String> getFunctionNames() {
+ return views.keySet();
+ }
+
+ @Override
+ public Schema getSubSchema(String name) {
+ if (schemaName != null) {
+ return null;
+ }
+
+ Schema schema = subSchemas.get(name);
+ if (schema != null) {
+ return schema;
+ }
+
+ schema = new PhoenixSchema(name, name, parentSchema.getSubSchema(this.name), pc);
+ subSchemas.put(name, schema);
+ return schema;
+ }
+
+ @Override
+ public Set<String> getSubSchemaNames() {
+ return subSchemas.keySet();
+ }
+
+ @Override
+ public Expression getExpression(SchemaPlus parentSchema, String name) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean isMutable() {
+ return true;
+ }
+
+ @Override
+ public boolean contentsHaveChangedSince(long lastCheck, long now) {
+ return false;
+ }
+
+ public void defineIndexesAsMaterializations() {
+ SchemaPlus schema = parentSchema.getSubSchema(this.name);
+ SchemaPlus viewSqlSchema =
+ this.schemaName == null ? schema : parentSchema;
+ CalciteSchema calciteSchema = CalciteSchema.from(schema);
+ List<String> path = CalciteSchema.from(viewSqlSchema).path(null);
+ try {
+ for (Table table : tables.values()) {
+ if (table instanceof PhoenixTable) {
+ TableRef tableRef = ((PhoenixTable) table).tableMapping.getTableRef();
+ for (PTable index : tableRef.getTable().getIndexes()) {
+ TableRef indexTableRef = new TableRef(null, index,
+ tableRef.getTimeStamp(), tableRef.getLowerBoundTimeStamp(),
+ false);
+ addMaterialization(indexTableRef, path, calciteSchema);
+ }
+ }
+ }
+ for (TableRef tableRef : viewTables) {
+ final PTable pTable = tableRef.getTable();
+ for (PTable index : pTable.getIndexes()) {
+ if (index.getParentName().equals(pTable.getName())) {
+ TableRef indexTableRef = new TableRef(null, index,
+ tableRef.getTimeStamp(), tableRef.getLowerBoundTimeStamp(),
+ false);
+ addMaterialization(indexTableRef, path, calciteSchema);
+ }
+ }
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void addMaterialization(TableRef indexTableRef, List<String> path,
+ CalciteSchema calciteSchema) throws SQLException {
+ indexTableRef = fixTableMultiTenancy(indexTableRef);
+ final PhoenixTable table = new PhoenixTable(pc, indexTableRef);
+ final PTable index = indexTableRef.getTable();
+ tables.put(index.getTableName().getString(), table);
+ StringBuffer sb = new StringBuffer();
+ sb.append("SELECT");
+ for (PColumn column : table.getColumns()) {
+ String indexColumnName = column.getName().getString();
+ String dataColumnName = IndexUtil.getDataColumnName(indexColumnName);
+ sb.append(",").append(SchemaUtil.getEscapedFullColumnName(dataColumnName));
+ sb.append(" ").append(SchemaUtil.getEscapedFullColumnName(indexColumnName));
+ }
+ sb.setCharAt(6, ' '); // replace first comma with space.
+ sb.append(" FROM ").append(SchemaUtil.getEscapedFullTableName(index.getParentName().getString()));
+ MaterializationService.instance().defineMaterialization(
+ calciteSchema, null, sb.toString(), path, index.getTableName().getString(), true, true);
+ }
+
+ private boolean isView(PTable table) {
+ return table.getType() == PTableType.VIEW
+ && table.getViewType() != ViewType.MAPPED;
+ }
+
+ private TableRef fixTableMultiTenancy(TableRef tableRef) throws SQLException {
+ if (pc.getTenantId() != null || !tableRef.getTable().isMultiTenant()) {
+ return tableRef;
+ }
+ PTable table = tableRef.getTable();
+ table = PTableImpl.makePTable(
+ table.getTenantId(), table.getSchemaName(), table.getTableName(), table.getType(), table.getIndexState(), table.getTimeStamp(),
+ table.getSequenceNumber(), table.getPKName(), table.getBucketNum(), PTableImpl.getColumnsToClone(table), table.getParentSchemaName(), table.getParentTableName(),
+ table.getIndexes(), table.isImmutableRows(), table.getPhysicalNames(), table.getDefaultFamilyName(), table.getViewStatement(),
+ table.isWALDisabled(), false, table.getStoreNulls(), table.getViewType(), table.getViewIndexId(), table.getIndexType(),
- table.rowKeyOrderOptimizable(), table.isTransactional(), table.getUpdateCacheFrequency(), table.getTableStats(), table.getBaseColumnCount(), table.getIndexDisableTimestamp());
++ table.rowKeyOrderOptimizable(), table.isTransactional(), table.getUpdateCacheFrequency(), table.getBaseColumnCount(), table.getIndexDisableTimestamp(),
++ table.isNamespaceMapped(), table.getAutoPartitionSeqName(), table.isAppendOnlySchema());
+ return new TableRef(null, table, tableRef.getTimeStamp(),
+ tableRef.getLowerBoundTimeStamp(), tableRef.hasDynamicCols());
+ }
+
+ private PhoenixSequence resolveSequence(String name) {
+ try {
+ // FIXME: Do this the same way as resolving a table after PHOENIX-2489.
+ String tenantId = pc.getTenantId() == null ? null : pc.getTenantId().getString();
+ String q = "select 1 from " + PhoenixDatabaseMetaData.SYSTEM_SEQUENCE
+ + " where " + PhoenixDatabaseMetaData.SEQUENCE_SCHEMA
+ + (schemaName == null ? " is null" : " = '" + schemaName + "'")
+ + " and " + PhoenixDatabaseMetaData.SEQUENCE_NAME
+ + " = '" + name + "'"
+ + " and " + PhoenixDatabaseMetaData.TENANT_ID
+ + (tenantId == null ? " is null" : " = '" + tenantId + "'");
+ ResultSet rs = pc.createStatement().executeQuery(q);
+ if (rs.next()) {
+ return new PhoenixSequence(schemaName, name, pc);
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ return null;
+ }
+
+ /** Schema factory that creates a
+ * {@link org.apache.phoenix.calcite.PhoenixSchema}.
+ * This allows you to create a Phoenix schema inside a model.json file.
+ *
+ * <pre>{@code
+ * {
+ * version: '1.0',
+ * defaultSchema: 'HR',
+ * schemas: [
+ * {
+ * name: 'HR',
+ * type: 'custom',
+ * factory: 'org.apache.phoenix.calcite.PhoenixSchema.Factory',
+ * operand: {
+ * url: "jdbc:phoenix:localhost",
+ * user: "scott",
+ * password: "tiger"
+ * }
+ * }
+ * ]
+ * }
+ * }</pre>
+ */
+ public static class Factory implements SchemaFactory {
+ public Schema create(SchemaPlus parentSchema, String name, Map<String, Object> operand) {
+ return PhoenixSchema.create(parentSchema, name, operand);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/a9526a94/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
index ccf460f,0000000..a8dd9d2
mode 100644,000000..100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
@@@ -1,368 -1,0 +1,369 @@@
+package org.apache.phoenix.calcite;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.calcite.plan.RelOptUtil.InputFinder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.Pair;
+import org.apache.hadoop.io.WritableUtils;
+import org.apache.phoenix.compile.ColumnProjector;
+import org.apache.phoenix.compile.ExpressionProjector;
+import org.apache.phoenix.compile.RowProjector;
+import org.apache.phoenix.compile.TupleProjectionCompiler;
+import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
+import org.apache.phoenix.execute.TupleProjector;
+import org.apache.phoenix.expression.ColumnExpression;
+import org.apache.phoenix.expression.Expression;
+import org.apache.phoenix.expression.LiteralExpression;
+import org.apache.phoenix.index.IndexMaintainer;
+import org.apache.phoenix.jdbc.PhoenixConnection;
+import org.apache.phoenix.schema.ColumnRef;
+import org.apache.phoenix.schema.PColumn;
+import org.apache.phoenix.schema.PName;
+import org.apache.phoenix.schema.PNameFactory;
+import org.apache.phoenix.schema.PTable;
+import org.apache.phoenix.schema.PTableImpl;
+import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.ProjectedColumn;
+import org.apache.phoenix.schema.TableRef;
+import org.apache.phoenix.schema.KeyValueSchema.KeyValueSchemaBuilder;
+import org.apache.phoenix.schema.PTable.IndexType;
+import org.apache.phoenix.util.ByteUtil;
+import org.apache.phoenix.util.IndexUtil;
+import org.apache.phoenix.util.MetaDataUtil;
+import org.apache.phoenix.util.SchemaUtil;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+public class TableMapping {
+ private final TableRef tableRef;
+ private final TableRef dataTableRef;
+ private final List<PColumn> mappedColumns;
+ private final int extendedColumnsOffset;
+ private final TableRef extendedTableRef;
+
+ public TableMapping(PTable table) {
+ this.tableRef = new TableRef(table);
+ this.dataTableRef = null;
+ this.mappedColumns = getMappedColumns(table);
+ this.extendedColumnsOffset = mappedColumns.size();
+ this.extendedTableRef = null;
+ }
+
+ public TableMapping(TableRef tableRef, TableRef dataTableRef, boolean extend) throws SQLException {
+ this.tableRef = tableRef;
+ this.dataTableRef = dataTableRef;
+ if (!extend) {
+ this.mappedColumns = getMappedColumns(tableRef.getTable());
+ this.extendedColumnsOffset = mappedColumns.size();
+ this.extendedTableRef = null;
+ } else {
+ this.mappedColumns = Lists.newArrayList();
+ this.mappedColumns.addAll(getMappedColumns(tableRef.getTable()));
+ this.extendedColumnsOffset = mappedColumns.size();
+ Set<String> names = Sets.newHashSet();
+ for (PColumn column : this.mappedColumns) {
+ names.add(column.getName().getString());
+ }
+ PTable dataTable = dataTableRef.getTable();
+ List<PColumn> projectedColumns = new ArrayList<PColumn>();
+ for (PColumn sourceColumn : dataTable.getColumns()) {
+ if (!SchemaUtil.isPKColumn(sourceColumn)) {
+ String colName = IndexUtil.getIndexColumnName(sourceColumn);
+ if (!names.contains(colName)) {
+ ColumnRef sourceColumnRef =
+ new ColumnRef(dataTableRef, sourceColumn.getPosition());
+ PColumn column = new ProjectedColumn(PNameFactory.newName(colName),
+ sourceColumn.getFamilyName(), projectedColumns.size(),
+ sourceColumn.isNullable(), sourceColumnRef);
+ projectedColumns.add(column);
+ }
+ }
+ }
+ this.mappedColumns.addAll(projectedColumns);
+ PTable extendedTable = PTableImpl.makePTable(dataTable.getTenantId(),
+ TupleProjectionCompiler.PROJECTED_TABLE_SCHEMA, dataTable.getName(),
+ PTableType.PROJECTED, null, dataTable.getTimeStamp(),
+ dataTable.getSequenceNumber(), dataTable.getPKName(), null,
+ projectedColumns, null, null, Collections.<PTable>emptyList(),
+ dataTable.isImmutableRows(), Collections.<PName>emptyList(), null, null,
+ dataTable.isWALDisabled(), false, dataTable.getStoreNulls(),
+ dataTable.getViewType(), null, null, dataTable.rowKeyOrderOptimizable(),
+ dataTable.isTransactional(), dataTable.getUpdateCacheFrequency(),
- dataTable.getIndexDisableTimestamp());
++ dataTable.getIndexDisableTimestamp(), dataTable.isNamespaceMapped(),
++ dataTable.getAutoPartitionSeqName(), dataTable.isAppendOnlySchema());
+ this.extendedTableRef = new TableRef(extendedTable);
+ }
+ }
+
+ public TableRef getTableRef() {
+ return tableRef;
+ }
+
+ public PTable getPTable() {
+ return tableRef.getTable();
+ }
+
+ public TableRef getDataTableRef() {
+ return dataTableRef;
+ }
+
+ public List<PColumn> getMappedColumns() {
+ return mappedColumns;
+ }
+
+ public boolean hasExtendedColumns() {
+ return extendedTableRef != null;
+ }
+
+ public ColumnExpression newColumnExpression(int index) {
+ ColumnRef colRef = new ColumnRef(
+ index < extendedColumnsOffset ? tableRef : extendedTableRef,
+ this.mappedColumns.get(index).getPosition());
+ return colRef.newColumnExpression();
+ }
+
+ public ImmutableBitSet getDefaultExtendedColumnRef() {
+ return ImmutableBitSet.range(extendedColumnsOffset, mappedColumns.size());
+ }
+
+ public ImmutableBitSet getExtendedColumnRef(List<RexNode> exprs) {
+ if (!hasExtendedColumns()) {
+ return ImmutableBitSet.of();
+ }
+
+ ImmutableBitSet.Builder builder = ImmutableBitSet.builder();
+ for (RexNode expr : exprs) {
+ builder.addAll(InputFinder.analyze(expr).inputBitSet.build());
+ }
+ for (int i = 0; i < extendedColumnsOffset; i++) {
+ builder.clear(i);
+ }
+ return builder.build();
+ }
+
+ public Pair<Integer, Integer> getExtendedColumnReferenceCount(ImmutableBitSet columnRef) {
+ Set<String> cf = Sets.newHashSet();
+ int columnCount = 0;
+ for (int i = extendedColumnsOffset; i < mappedColumns.size(); i++) {
+ if (columnRef.get(i)) {
+ PColumn dataColumn = ((ProjectedColumn) mappedColumns.get(i))
+ .getSourceColumnRef().getColumn();
+ cf.add(dataColumn.getFamilyName().getString());
+ columnCount++;
+ }
+ }
+ return new Pair<Integer, Integer>(cf.size(), columnCount);
+ }
+
+ public PTable createProjectedTable(boolean retainPKColumns) {
+ List<ColumnRef> sourceColumnRefs = Lists.<ColumnRef> newArrayList();
+ List<PColumn> columns = retainPKColumns ?
+ tableRef.getTable().getColumns() : mappedColumns.subList(0, extendedColumnsOffset);
+ for (PColumn column : columns) {
+ sourceColumnRefs.add(new ColumnRef(tableRef, column.getPosition()));
+ }
+ if (extendedColumnsOffset < mappedColumns.size()) {
+ for (PColumn column : mappedColumns.subList(extendedColumnsOffset, mappedColumns.size())) {
+ sourceColumnRefs.add(new ColumnRef(extendedTableRef, column.getPosition()));
+ }
+ }
+
+ try {
+ return TupleProjectionCompiler.createProjectedTable(tableRef, sourceColumnRefs, retainPKColumns);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public TupleProjector createTupleProjector(boolean retainPKColumns) {
+ KeyValueSchemaBuilder builder = new KeyValueSchemaBuilder(0);
+ List<Expression> exprs = Lists.<Expression> newArrayList();
+ for (int i = 0; i < mappedColumns.size(); i++) {
+ if (!SchemaUtil.isPKColumn(mappedColumns.get(i)) || !retainPKColumns) {
+ Expression expr = newColumnExpression(i);
+ exprs.add(expr);
+ builder.addField(expr);
+ }
+ }
+
+ return new TupleProjector(builder.build(), exprs.toArray(new Expression[exprs.size()]));
+ }
+
+ public RowProjector createRowProjector() {
+ List<ColumnProjector> columnProjectors = Lists.<ColumnProjector>newArrayList();
+ for (int i = 0; i < mappedColumns.size(); i++) {
+ PColumn column = mappedColumns.get(i);
+ Expression expr = newColumnExpression(i); // Do not use column.position() here.
+ columnProjectors.add(new ExpressionProjector(column.getName().getString(), tableRef.getTable().getName().getString(), expr, false));
+ }
+ // TODO get estimate row size
+ return new RowProjector(columnProjectors, 0, false);
+ }
+
+ public void setupScanForExtendedTable(Scan scan, ImmutableBitSet extendedColumnRef,
+ PhoenixConnection connection) throws SQLException {
+ if (extendedTableRef == null || extendedColumnRef.isEmpty()) {
+ return;
+ }
+
+ TableRef dataTableRef = null;
+ List<PColumn> dataColumns = Lists.newArrayList();
+ KeyValueSchemaBuilder builder = new KeyValueSchemaBuilder(0);
+ List<Expression> exprs = Lists.<Expression> newArrayList();
+ for (int i = extendedColumnsOffset; i < mappedColumns.size(); i++) {
+ ProjectedColumn column = (ProjectedColumn) mappedColumns.get(i);
+ builder.addField(column);
+ if (extendedColumnRef.get(i)) {
+ dataColumns.add(column.getSourceColumnRef().getColumn());
+ exprs.add(column.getSourceColumnRef().newColumnExpression());
+ if (dataTableRef == null) {
+ dataTableRef = column.getSourceColumnRef().getTableRef();
+ }
+ } else {
+ exprs.add(LiteralExpression.newConstant(null));
+ }
+ }
+ if (dataColumns.isEmpty()) {
+ return;
+ }
+
+ // Set data columns to be join back from data table.
+ serializeDataTableColumnsToJoin(scan, dataColumns);
+ // Set tuple projector of the data columns.
+ TupleProjector projector = new TupleProjector(builder.build(), exprs.toArray(new Expression[exprs.size()]));
+ TupleProjector.serializeProjectorIntoScan(scan, projector, IndexUtil.INDEX_PROJECTOR);
+ PTable dataTable = dataTableRef.getTable();
+ // Set index maintainer of the local index.
+ serializeIndexMaintainerIntoScan(scan, dataTable, connection);
+ // Set view constants if exists.
+ serializeViewConstantsIntoScan(scan, dataTable);
+ }
+
+ private static void serializeDataTableColumnsToJoin(Scan scan, List<PColumn> dataColumns) {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ try {
+ DataOutputStream output = new DataOutputStream(stream);
+ WritableUtils.writeVInt(output, dataColumns.size());
+ for (PColumn column : dataColumns) {
+ Bytes.writeByteArray(output, column.getFamilyName().getBytes());
+ Bytes.writeByteArray(output, column.getName().getBytes());
+ }
+ scan.setAttribute(BaseScannerRegionObserver.DATA_TABLE_COLUMNS_TO_JOIN, stream.toByteArray());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ } finally {
+ try {
+ stream.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ private void serializeIndexMaintainerIntoScan(Scan scan, PTable dataTable, PhoenixConnection connection) throws SQLException {
+ PName name = getPTable().getName();
+ List<PTable> indexes = Lists.newArrayListWithExpectedSize(1);
+ for (PTable index : dataTable.getIndexes()) {
+ if (index.getName().equals(name) && index.getIndexType() == IndexType.LOCAL) {
+ indexes.add(index);
+ break;
+ }
+ }
+ ImmutableBytesWritable ptr = new ImmutableBytesWritable();
+ IndexMaintainer.serialize(dataTable, ptr, indexes, connection);
+ scan.setAttribute(BaseScannerRegionObserver.LOCAL_INDEX_BUILD, ByteUtil.copyKeyBytesIfNecessary(ptr));
+ if (dataTable.isTransactional()) {
+ scan.setAttribute(BaseScannerRegionObserver.TX_STATE, connection.getMutationState().encodeTransaction());
+ }
+ }
+
+ private static void serializeViewConstantsIntoScan(Scan scan, PTable dataTable) {
+ int dataPosOffset = (dataTable.getBucketNum() != null ? 1 : 0) + (dataTable.isMultiTenant() ? 1 : 0);
+ int nViewConstants = 0;
+ if (dataTable.getType() == PTableType.VIEW) {
+ ImmutableBytesWritable ptr = new ImmutableBytesWritable();
+ List<PColumn> dataPkColumns = dataTable.getPKColumns();
+ for (int i = dataPosOffset; i < dataPkColumns.size(); i++) {
+ PColumn dataPKColumn = dataPkColumns.get(i);
+ if (dataPKColumn.getViewConstant() != null) {
+ nViewConstants++;
+ }
+ }
+ if (nViewConstants > 0) {
+ byte[][] viewConstants = new byte[nViewConstants][];
+ int j = 0;
+ for (int i = dataPosOffset; i < dataPkColumns.size(); i++) {
+ PColumn dataPkColumn = dataPkColumns.get(i);
+ if (dataPkColumn.getViewConstant() != null) {
+ if (IndexUtil.getViewConstantValue(dataPkColumn, ptr)) {
+ viewConstants[j++] = ByteUtil.copyKeyBytesIfNecessary(ptr);
+ } else {
+ throw new IllegalStateException();
+ }
+ }
+ }
+ serializeViewConstantsIntoScan(viewConstants, scan);
+ }
+ }
+ }
+
+ private static void serializeViewConstantsIntoScan(byte[][] viewConstants, Scan scan) {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ try {
+ DataOutputStream output = new DataOutputStream(stream);
+ WritableUtils.writeVInt(output, viewConstants.length);
+ for (byte[] viewConstant : viewConstants) {
+ Bytes.writeByteArray(output, viewConstant);
+ }
+ scan.setAttribute(BaseScannerRegionObserver.VIEW_CONSTANTS, stream.toByteArray());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ } finally {
+ try {
+ stream.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ private static List<PColumn> getMappedColumns(PTable pTable) {
+ if (pTable.getBucketNum() == null
+ && !pTable.isMultiTenant()
+ && pTable.getViewIndexId() == null) {
+ return pTable.getColumns();
+ }
+
+ List<PColumn> columns = Lists.newArrayList(pTable.getColumns());
+ if (pTable.getViewIndexId() != null) {
+ for (Iterator<PColumn> iter = columns.iterator(); iter.hasNext();) {
- if (iter.next().getName().getString().equals(MetaDataUtil.VIEW_INDEX_ID_COLUMN_NAME)) {
++ if (iter.next().getName().getString().equals(MetaDataUtil.getViewIndexIdColumnName())) {
+ iter.remove();
+ break;
+ }
+ }
+ }
+ if (pTable.isMultiTenant()) {
+ columns.remove(pTable.getBucketNum() == null ? 0 : 1);
+ }
+ if (pTable.getBucketNum() != null) {
+ columns.remove(0);
+ }
+
+ return columns;
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/a9526a94/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java
----------------------------------------------------------------------
diff --cc phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java
index 96651e9,0000000..fa4649b
mode 100644,000000..100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRelImplementorImpl.java
@@@ -1,140 -1,0 +1,140 @@@
+package org.apache.phoenix.calcite.rel;
+
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.List;
+import java.util.Stack;
+
+import org.apache.phoenix.calcite.PhoenixSequence;
+import org.apache.phoenix.calcite.TableMapping;
+import org.apache.phoenix.compile.QueryPlan;
+import org.apache.phoenix.compile.SequenceManager;
+import org.apache.phoenix.compile.SequenceValueExpression;
+import org.apache.phoenix.coprocessor.MetaDataProtocol;
+import org.apache.phoenix.execute.RuntimeContext;
+import org.apache.phoenix.execute.TupleProjector;
+import org.apache.phoenix.expression.BindParameterExpression;
+import org.apache.phoenix.expression.ColumnExpression;
+import org.apache.phoenix.expression.CorrelateVariableFieldAccessExpression;
+import org.apache.phoenix.expression.Expression;
+import org.apache.phoenix.parse.ParseNodeFactory;
+import org.apache.phoenix.parse.SequenceValueParseNode;
+import org.apache.phoenix.parse.TableName;
+import org.apache.phoenix.schema.KeyValueSchema;
+import org.apache.phoenix.schema.PColumn;
+import org.apache.phoenix.schema.PColumnImpl;
+import org.apache.phoenix.schema.PName;
+import org.apache.phoenix.schema.PNameFactory;
+import org.apache.phoenix.schema.PTable;
+import org.apache.phoenix.schema.PTableImpl;
+import org.apache.phoenix.schema.PTableType;
+import org.apache.phoenix.schema.types.PDataType;
+import com.google.common.collect.Lists;
+
+public class PhoenixRelImplementorImpl implements PhoenixRelImplementor {
+ private final RuntimeContext runtimeContext;
+ private Stack<ImplementorContext> contextStack;
+ private SequenceManager sequenceManager;
+ private TableMapping tableMapping;
+
+ public PhoenixRelImplementorImpl(RuntimeContext runtimeContext) {
+ this.runtimeContext = runtimeContext;
+ this.contextStack = new Stack<ImplementorContext>();
+ }
+
+ @Override
+ public QueryPlan visitInput(int i, PhoenixQueryRel input) {
+ return input.implement(this);
+ }
+
+ @Override
+ public ColumnExpression newColumnExpression(int index) {
+ return tableMapping.newColumnExpression(index);
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Expression newBindParameterExpression(int index, PDataType type, Integer maxLength) {
+ return new BindParameterExpression(index, type, maxLength, runtimeContext);
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Expression newFieldAccessExpression(String variableId, int index, PDataType type) {
+ Expression fieldAccessExpr = runtimeContext.getCorrelateVariable(variableId).newExpression(index);
+ return new CorrelateVariableFieldAccessExpression(runtimeContext, variableId, fieldAccessExpr);
+ }
+
+ @Override
+ public SequenceValueExpression newSequenceExpression(PhoenixSequence seq, SequenceValueParseNode.Op op) {
+ PName tenantName = seq.pc.getTenantId();
+ TableName tableName = TableName.create(seq.schemaName, seq.sequenceName);
+ try {
+ return sequenceManager.newSequenceReference(tenantName, tableName, null, op);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public RuntimeContext getRuntimeContext() {
+ return runtimeContext;
+ }
+
+ @Override
+ public void setTableMapping(TableMapping tableMapping) {
+ this.tableMapping = tableMapping;
+ }
+
+ @Override
+ public TableMapping getTableMapping() {
+ return this.tableMapping;
+ }
+
+ @Override
+ public void setSequenceManager(SequenceManager sequenceManager) {
+ this.sequenceManager = sequenceManager;
+ }
+
+ @Override
+ public void pushContext(ImplementorContext context) {
+ this.contextStack.push(context);
+ }
+
+ @Override
+ public ImplementorContext popContext() {
+ return contextStack.pop();
+ }
+
+ @Override
+ public ImplementorContext getCurrentContext() {
+ return contextStack.peek();
+ }
+
+ @Override
+ public TupleProjector project(List<Expression> exprs) {
+ KeyValueSchema.KeyValueSchemaBuilder builder = new KeyValueSchema.KeyValueSchemaBuilder(0);
+ List<PColumn> columns = Lists.<PColumn>newArrayList();
+ for (int i = 0; i < exprs.size(); i++) {
+ String name = ParseNodeFactory.createTempAlias();
+ Expression expr = exprs.get(i);
+ builder.addField(expr);
+ columns.add(new PColumnImpl(PNameFactory.newName(name), PNameFactory.newName(TupleProjector.VALUE_COLUMN_FAMILY),
+ expr.getDataType(), expr.getMaxLength(), expr.getScale(), expr.isNullable(),
+ i, expr.getSortOrder(), null, null, false, name, false, false));
+ }
+ try {
+ PTable pTable = PTableImpl.makePTable(null, PName.EMPTY_NAME, PName.EMPTY_NAME,
+ PTableType.SUBQUERY, null, MetaDataProtocol.MIN_TABLE_TIMESTAMP, PTable.INITIAL_SEQ_NUM,
+ null, null, columns, null, null, Collections.<PTable>emptyList(),
+ false, Collections.<PName>emptyList(), null, null, false, false, false, null,
- null, null, true, false, 0, 0);
++ null, null, true, false, 0, 0, false, null, false);
+ this.setTableMapping(new TableMapping(pTable));
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ return new TupleProjector(builder.build(), exprs.toArray(new Expression[exprs.size()]));
+ }
+
+}