Fix merge errors
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/62d6720f Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/62d6720f Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/62d6720f Branch: refs/heads/calcite Commit: 62d6720f7f2f1bef8a2c99ca2a6aa3feb29a51df Parents: f9ddb98 d1934af Author: maryannxue <wei....@intel.com> Authored: Mon Jun 15 14:45:03 2015 -0400 Committer: maryannxue <wei....@intel.com> Committed: Mon Jun 15 14:45:03 2015 -0400 ---------------------------------------------------------------------- .gitignore | 1 + NOTICE | 10 + bin/daemon.py | 989 ++++ bin/end2endTest.py | 5 +- bin/log4j.properties | 9 +- bin/phoenix_utils.py | 139 +- bin/psql.py | 8 +- bin/queryserver.py | 203 + bin/sqlline-thin.py | 89 + bin/sqlline.py | 6 +- dev/jenkinsEnv.sh | 31 + dev/make_rc.sh | 5 + dev/smart-apply-patch.sh | 96 + dev/test-patch.properties | 35 + dev/test-patch.sh | 1081 +++++ phoenix-assembly/pom.xml | 52 +- phoenix-assembly/src/build/client.xml | 37 +- .../src/build/components-minimal.xml | 2 + .../components/all-common-dependencies.xml | 1 + .../src/build/components/all-common-files.xml | 6 +- .../src/build/components/all-common-jars.xml | 30 +- phoenix-assembly/src/build/src.xml | 4 +- phoenix-core/pom.xml | 23 +- ...ReplayWithIndexWritesAndCompressedWALIT.java | 4 +- .../org/apache/phoenix/end2end/ArrayIT.java | 125 +- .../phoenix/end2end/ArrayPrependFunctionIT.java | 652 +++ .../phoenix/end2end/ArraysWithNullsIT.java | 300 ++ .../phoenix/end2end/DecodeFunctionIT.java | 9 +- .../phoenix/end2end/EncodeFunctionIT.java | 8 +- .../phoenix/end2end/EvaluationOfORIT.java | 11 + .../org/apache/phoenix/end2end/HashJoinIT.java | 54 + .../apache/phoenix/end2end/InstrFunctionIT.java | 12 +- .../phoenix/end2end/MappingTableDataTypeIT.java | 67 +- .../phoenix/end2end/PhoenixMetricsIT.java | 4 - .../end2end/QueryDatabaseMetaDataIT.java | 5 + .../org/apache/phoenix/end2end/QueryMoreIT.java | 6 +- .../end2end/SkipScanAfterManualSplitIT.java | 2 +- .../apache/phoenix/end2end/SortMergeJoinIT.java | 54 + .../phoenix/end2end/SqrtFunctionEnd2EndIT.java | 143 + .../StatsCollectorWithSplitsAndMultiCFIT.java | 32 +- .../org/apache/phoenix/end2end/SubqueryIT.java | 18 + .../end2end/TenantSpecificTablesDDLIT.java | 5 + .../phoenix/end2end/ToDateFunctionIT.java | 46 +- .../phoenix/end2end/UserDefinedFunctionsIT.java | 656 +++ .../end2end/index/DropIndexDuringUpsertIT.java | 2 +- .../apache/phoenix/execute/PartialCommitIT.java | 317 ++ .../EndToEndCoveredColumnsIndexBuilderIT.java | 4 +- .../iterate/RoundRobinResultIteratorIT.java | 319 ++ .../apache/phoenix/mapreduce/IndexToolIT.java | 3 +- phoenix-core/src/main/antlr3/PhoenixSQL.g | 76 +- .../regionserver/IndexHalfStoreFileReader.java | 31 +- .../IndexHalfStoreFileReaderGenerator.java | 9 +- .../regionserver/IndexSplitTransaction.java | 104 +- .../hbase/regionserver/LocalIndexMerger.java | 19 +- .../hbase/regionserver/LocalIndexSplitter.java | 11 +- .../org/apache/phoenix/cache/GlobalCache.java | 30 +- .../apache/phoenix/cache/ServerCacheClient.java | 10 +- .../cache/aggcache/SpillableGroupByCache.java | 13 +- .../apache/phoenix/compile/ColumnResolver.java | 17 + .../phoenix/compile/CreateFunctionCompiler.java | 80 + .../phoenix/compile/CreateIndexCompiler.java | 2 +- .../apache/phoenix/compile/DeleteCompiler.java | 15 +- .../phoenix/compile/ExpressionCompiler.java | 33 +- .../apache/phoenix/compile/FromCompiler.java | 199 +- .../apache/phoenix/compile/JoinCompiler.java | 9 +- .../apache/phoenix/compile/PostDDLCompiler.java | 14 + .../phoenix/compile/ProjectionCompiler.java | 2 +- .../apache/phoenix/compile/QueryCompiler.java | 18 +- .../org/apache/phoenix/compile/QueryPlan.java | 11 + .../apache/phoenix/compile/RowProjector.java | 32 +- .../phoenix/compile/StatementNormalizer.java | 5 +- .../phoenix/compile/SubqueryRewriter.java | 6 +- .../phoenix/compile/SubselectRewriter.java | 2 +- .../apache/phoenix/compile/TraceQueryPlan.java | 5 + .../compile/TupleProjectionCompiler.java | 4 +- .../apache/phoenix/compile/UpsertCompiler.java | 13 +- .../phoenix/coprocessor/BaseRegionScanner.java | 16 +- .../coprocessor/BaseScannerRegionObserver.java | 97 +- .../coprocessor/DelegateRegionScanner.java | 23 +- .../GroupedAggregateRegionObserver.java | 66 +- .../coprocessor/HashJoinRegionScanner.java | 58 +- .../coprocessor/MetaDataEndpointImpl.java | 713 ++- .../phoenix/coprocessor/MetaDataProtocol.java | 39 +- .../coprocessor/MetaDataRegionObserver.java | 23 +- .../phoenix/coprocessor/ScanRegionObserver.java | 28 +- .../coprocessor/SequenceRegionObserver.java | 16 +- .../UngroupedAggregateRegionObserver.java | 84 +- .../coprocessor/generated/MetaDataProtos.java | 4274 +++++++++++++++--- .../coprocessor/generated/PFunctionProtos.java | 2942 ++++++++++++ .../phoenix/exception/SQLExceptionCode.java | 20 +- .../phoenix/exception/SQLExceptionInfo.java | 16 + .../apache/phoenix/execute/AggregatePlan.java | 5 + .../apache/phoenix/execute/BaseQueryPlan.java | 6 + .../apache/phoenix/execute/CommitException.java | 35 +- .../phoenix/execute/DegenerateQueryPlan.java | 5 + .../phoenix/execute/DelegateQueryPlan.java | 6 + .../apache/phoenix/execute/HashJoinPlan.java | 7 +- .../apache/phoenix/execute/MutationState.java | 158 +- .../org/apache/phoenix/execute/ScanPlan.java | 21 +- .../phoenix/execute/SortMergeJoinPlan.java | 9 +- .../org/apache/phoenix/execute/UnionPlan.java | 5 + .../phoenix/expression/ExpressionType.java | 24 +- .../phoenix/expression/LikeExpression.java | 8 +- .../function/ArrayAppendFunction.java | 35 +- .../function/ArrayModifierFunction.java | 75 + .../function/ArrayPrependFunction.java | 96 + .../expression/function/InstrFunction.java | 2 +- .../function/JavaMathOneArgumentFunction.java | 77 + .../function/RegexpReplaceFunction.java | 74 +- .../function/RegexpSplitFunction.java | 59 +- .../function/RegexpSubstrFunction.java | 97 +- .../expression/function/ScalarFunction.java | 2 +- .../expression/function/SignFunction.java | 5 + .../expression/function/SqrtFunction.java | 49 + .../expression/function/UDFExpression.java | 220 + .../util/regex/AbstractBasePattern.java | 9 +- .../util/regex/AbstractBaseSplitter.java | 2 +- .../expression/util/regex/GuavaSplitter.java | 6 +- .../expression/util/regex/JONIPattern.java | 40 +- .../expression/util/regex/JavaPattern.java | 51 +- .../visitor/CloneExpressionVisitor.java | 6 + .../phoenix/filter/RowKeyComparisonFilter.java | 5 +- .../hbase/index/covered/data/LocalTable.java | 7 +- .../index/covered/filter/FamilyOnlyFilter.java | 80 - .../index/scanner/FilteredKeyValueScanner.java | 2 +- .../write/ParallelWriterIndexCommitter.java | 8 +- .../recovery/PerRegionIndexWriteCache.java | 10 +- .../recovery/StoreFailuresInCachePolicy.java | 4 +- .../TrackingParallelWriterIndexCommitter.java | 8 +- .../apache/phoenix/index/IndexMaintainer.java | 57 +- .../phoenix/index/PhoenixIndexBuilder.java | 10 +- .../apache/phoenix/index/PhoenixIndexCodec.java | 14 +- .../phoenix/iterate/BaseResultIterators.java | 6 +- .../phoenix/iterate/ParallelIterators.java | 7 +- .../iterate/RegionScannerResultIterator.java | 9 +- .../iterate/RoundRobinResultIterator.java | 329 ++ .../apache/phoenix/iterate/SerialIterators.java | 3 +- .../apache/phoenix/jdbc/PhoenixConnection.java | 114 +- .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 30 + .../org/apache/phoenix/jdbc/PhoenixDriver.java | 46 +- .../phoenix/jdbc/PhoenixEmbeddedDriver.java | 33 +- .../phoenix/jdbc/PhoenixPreparedStatement.java | 7 +- .../apache/phoenix/jdbc/PhoenixResultSet.java | 8 +- .../apache/phoenix/jdbc/PhoenixStatement.java | 140 +- .../org/apache/phoenix/join/HashJoinInfo.java | 17 +- .../phoenix/mapreduce/CsvBulkLoadTool.java | 95 +- .../phoenix/mapreduce/CsvToKeyValueMapper.java | 26 +- .../phoenix/mapreduce/PhoenixRecordReader.java | 9 +- .../phoenix/mapreduce/util/ConnectionUtil.java | 23 +- .../apache/phoenix/optimize/QueryOptimizer.java | 4 +- .../phoenix/parse/CreateFunctionStatement.java | 42 + .../phoenix/parse/CreateIndexStatement.java | 8 +- .../org/apache/phoenix/parse/DMLStatement.java | 11 +- .../apache/phoenix/parse/DeleteStatement.java | 5 +- .../phoenix/parse/DropFunctionStatement.java | 41 + .../apache/phoenix/parse/FunctionParseNode.java | 76 +- .../parse/IndexExpressionParseNodeRewriter.java | 4 +- .../org/apache/phoenix/parse/NamedNode.java | 2 +- .../org/apache/phoenix/parse/PFunction.java | 252 ++ .../apache/phoenix/parse/ParseNodeFactory.java | 70 +- .../apache/phoenix/parse/ParseNodeRewriter.java | 2 +- .../apache/phoenix/parse/SelectStatement.java | 24 +- .../org/apache/phoenix/parse/UDFParseNode.java | 27 + .../apache/phoenix/parse/UpsertStatement.java | 9 +- .../apache/phoenix/protobuf/ProtobufUtil.java | 14 +- .../phoenix/query/ConnectionQueryServices.java | 4 + .../query/ConnectionQueryServicesImpl.java | 179 +- .../query/ConnectionlessQueryServicesImpl.java | 52 +- .../query/DelegateConnectionQueryServices.java | 31 + .../apache/phoenix/query/MetaDataMutated.java | 3 + .../apache/phoenix/query/QueryConstants.java | 36 + .../org/apache/phoenix/query/QueryServices.java | 8 + .../phoenix/query/QueryServicesOptions.java | 23 +- .../schema/FunctionAlreadyExistsException.java | 58 + .../schema/FunctionNotFoundException.java | 52 + .../apache/phoenix/schema/MetaDataClient.java | 258 +- .../NewerFunctionAlreadyExistsException.java | 39 + .../org/apache/phoenix/schema/PColumnImpl.java | 8 +- .../org/apache/phoenix/schema/PMetaData.java | 6 +- .../apache/phoenix/schema/PMetaDataEntity.java | 22 + .../apache/phoenix/schema/PMetaDataImpl.java | 118 +- .../java/org/apache/phoenix/schema/PTable.java | 3 +- .../org/apache/phoenix/schema/PTableImpl.java | 44 +- .../phoenix/schema/stats/GuidePostsInfo.java | 9 +- .../schema/stats/StatisticsCollector.java | 47 +- .../phoenix/schema/stats/StatisticsScanner.java | 26 +- .../phoenix/schema/stats/StatisticsUtil.java | 2 + .../phoenix/schema/stats/StatisticsWriter.java | 57 +- .../phoenix/schema/types/PArrayDataType.java | 161 +- .../apache/phoenix/schema/types/PBinary.java | 2 +- .../apache/phoenix/schema/types/PBoolean.java | 18 +- .../phoenix/schema/types/PBooleanArray.java | 31 +- .../org/apache/phoenix/schema/types/PChar.java | 5 +- .../apache/phoenix/schema/types/PDataType.java | 15 +- .../org/apache/phoenix/schema/types/PDate.java | 21 +- .../apache/phoenix/schema/types/PDecimal.java | 3 + .../apache/phoenix/schema/types/PTimestamp.java | 22 +- .../apache/phoenix/schema/types/PVarchar.java | 2 +- .../phoenix/schema/types/PhoenixArray.java | 127 +- .../java/org/apache/phoenix/util/IndexUtil.java | 38 +- .../org/apache/phoenix/util/MetaDataUtil.java | 7 +- .../org/apache/phoenix/util/PhoenixRuntime.java | 13 +- .../org/apache/phoenix/util/PropertiesUtil.java | 22 + .../java/org/apache/phoenix/util/QueryUtil.java | 47 +- .../org/apache/phoenix/util/ReadOnlyProps.java | 37 + .../java/org/apache/phoenix/util/ScanUtil.java | 22 + .../org/apache/phoenix/util/SchemaUtil.java | 17 +- .../hbase/ipc/PhoenixIndexRpcSchedulerTest.java | 6 +- .../phoenix/compile/QueryCompilerTest.java | 62 +- .../phoenix/execute/MutationStateTest.java | 64 + .../expression/ArrayAppendFunctionTest.java | 29 +- .../expression/ArrayPrependFunctionTest.java | 552 +++ .../phoenix/expression/SignFunctionTest.java | 3 +- .../phoenix/expression/SqrtFunctionTest.java | 150 + .../expression/function/InstrFunctionTest.java | 48 +- .../util/regex/PatternPerformanceTest.java | 20 +- .../phoenix/filter/SkipScanBigFilterTest.java | 2 +- .../index/covered/TestLocalTableState.java | 9 +- .../covered/filter/TestFamilyOnlyFilter.java | 106 - .../index/write/TestWALRecoveryCaching.java | 21 +- .../recovery/TestPerRegionIndexWriteCache.java | 26 +- .../phoenix/jdbc/PhoenixEmbeddedDriverTest.java | 34 +- .../phoenix/mapreduce/CsvBulkLoadToolTest.java | 11 - .../mapreduce/CsvToKeyValueMapperTest.java | 15 - .../apache/phoenix/parse/QueryParserTest.java | 18 - .../java/org/apache/phoenix/query/BaseTest.java | 6 +- .../query/ParallelIteratorsSplitTest.java | 20 + .../phoenix/query/QueryServicesTestImpl.java | 5 +- .../org/apache/phoenix/schema/PCharPadTest.java | 147 + .../phoenix/schema/PDataTypeForArraysTest.java | 1141 ----- .../types/BasePhoenixArrayToStringTest.java | 84 + ...PrimitiveDoublePhoenixArrayToStringTest.java | 39 + ...asePrimitiveIntPhoenixArrayToStringTest.java | 50 + .../schema/types/PDataTypeForArraysTest.java | 1141 +++++ .../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 + .../apache/phoenix/util/PhoenixRuntimeTest.java | 75 + .../apache/phoenix/util/PropertiesUtilTest.java | 23 +- .../org/apache/phoenix/util/QueryUtilTest.java | 33 +- phoenix-flume/pom.xml | 15 +- phoenix-pherf/cluster/pherf.sh | 2 +- phoenix-pherf/config/pherf.properties | 3 + phoenix-pherf/pom.xml | 146 +- .../org/apache/phoenix/pherf/DataIngestIT.java | 87 + .../apache/phoenix/pherf/ResultBaseTestIT.java | 45 + .../apache/phoenix/pherf/SchemaReaderIT.java | 77 + .../java/org/apache/phoenix/pherf/Pherf.java | 8 +- .../apache/phoenix/pherf/PherfConstants.java | 50 +- .../phoenix/pherf/configuration/DataModel.java | 11 +- .../pherf/configuration/DataOverride.java | 3 +- .../pherf/configuration/DataTypeMapping.java | 5 +- .../phoenix/pherf/configuration/QuerySet.java | 14 +- .../phoenix/pherf/configuration/Scenario.java | 13 + .../pherf/configuration/XMLConfigParser.java | 1 + .../pherf/exception/FileLoaderException.java | 4 +- .../exception/FileLoaderRuntimeException.java | 1 + .../phoenix/pherf/jmx/MonitorManager.java | 6 +- .../pherf/jmx/monitors/ExampleMonitor.java | 33 - .../phoenix/pherf/loaddata/DataLoader.java | 51 +- .../pherf/result/DataLoadThreadTime.java | 19 +- .../pherf/result/DataLoadTimeSummary.java | 17 - .../phoenix/pherf/result/DataModelResult.java | 1 + .../phoenix/pherf/result/QueryResult.java | 2 + .../phoenix/pherf/result/QuerySetResult.java | 3 +- .../org/apache/phoenix/pherf/result/Result.java | 10 +- .../apache/phoenix/pherf/result/ResultUtil.java | 75 +- .../apache/phoenix/pherf/result/RunTime.java | 23 +- .../phoenix/pherf/result/ScenarioResult.java | 1 + .../apache/phoenix/pherf/result/ThreadTime.java | 1 + .../pherf/result/impl/CSVResultHandler.java | 26 +- .../pherf/result/impl/ImageResultHandler.java | 5 +- .../pherf/result/impl/XMLResultHandler.java | 6 +- .../phoenix/pherf/schema/SchemaReader.java | 7 +- .../apache/phoenix/pherf/util/PhoenixUtil.java | 52 +- .../apache/phoenix/pherf/util/ResourceList.java | 47 +- .../phoenix/pherf/workload/QueryExecutor.java | 2 - .../pherf/workload/WorkloadExecutor.java | 6 +- .../datamodel/create_prod_test_unsalted.sql | 2 +- .../scenario/prod_test_unsalted_scenario.xml | 4 +- .../phoenix/pherf/BaseTestWithCluster.java | 67 - .../phoenix/pherf/ConfigurationParserTest.java | 12 +- .../apache/phoenix/pherf/DataIngestTest.java | 78 - .../apache/phoenix/pherf/DataLoaderTest.java | 108 - .../org/apache/phoenix/pherf/PherfTest.java | 26 +- .../org/apache/phoenix/pherf/ResourceTest.java | 8 +- .../apache/phoenix/pherf/ResultBaseTest.java | 44 + .../org/apache/phoenix/pherf/ResultTest.java | 21 +- .../apache/phoenix/pherf/RowCalculatorTest.java | 88 + .../apache/phoenix/pherf/RuleGeneratorTest.java | 7 +- .../apache/phoenix/pherf/SchemaReaderTest.java | 73 - .../apache/phoenix/pherf/TestHBaseProps.java | 1 - .../test/resources/datamodel/test_schema.sql | 33 +- .../test/resources/scenario/test_scenario.xml | 4 +- phoenix-pherf/standalone/pherf.sh | 2 +- phoenix-pig/pom.xml | 37 +- phoenix-protocol/src/main/MetaDataService.proto | 37 +- phoenix-protocol/src/main/PFunction.proto | 45 + 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/pom.xml | 10 +- .../apache/phoenix/spark/PhoenixSparkIT.scala | 22 + .../apache/phoenix/spark/DefaultSource.scala | 17 + .../org/apache/phoenix/spark/PhoenixRDD.scala | 2 +- .../phoenix/spark/PhoenixRecordWritable.scala | 25 +- .../apache/phoenix/spark/PhoenixRelation.scala | 17 + pom.xml | 118 +- src/main/config/checkstyle/checker.xml | 281 ++ src/main/config/checkstyle/header.txt | 16 + src/main/config/checkstyle/suppressions.xml | 46 + 329 files changed, 22750 insertions(+), 4261 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java ---------------------------------------------------------------------- diff --cc phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java index 180c895,d613688..989426c --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java @@@ -142,14 -143,13 +143,14 @@@ public class GroupedAggregateRegionObse } ImmutableBytesWritable tempPtr = new ImmutableBytesWritable(); innerScanner = - getWrappedScanner(c, innerScanner, offset, scan, dataColumns, tupleProjector, + getWrappedScanner(c, innerScanner, offset, scan, dataColumns, tupleProjector, dataRegion, indexMaintainers == null ? null : indexMaintainers.get(0), viewConstants, p, tempPtr); - } + } if (j != null) { + TupleProjector postJoinProjector = TupleProjector.deserializeProjectorFromScan(scan, false); innerScanner = - new HashJoinRegionScanner(innerScanner, p, j, ScanUtil.getTenantId(scan), + new HashJoinRegionScanner(innerScanner, p, postJoinProjector, j, ScanUtil.getTenantId(scan), c.getEnvironment()); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java ---------------------------------------------------------------------- diff --cc phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java index f969ce9,1e34d96..6fdc865 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java @@@ -217,19 -217,16 +219,20 @@@ public class HashJoinRegionScanner impl private boolean shouldAdvance() { if (!resultQueue.isEmpty()) return false; - + return hasMore; } - + private boolean nextInQueue(List<Cell> results) { - if (resultQueue.isEmpty()) + if (resultQueue.isEmpty()) { return false; - + } + Tuple tuple = resultQueue.poll(); + // post-join projection + if (postJoinProjector != null) { + tuple = postJoinProjector.projectResults(tuple); + } for (int i = 0; i < tuple.size(); i++) { results.add(tuple.getValue(i)); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java ---------------------------------------------------------------------- diff --cc phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java index 630e471,d5cc486..fa78709 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java @@@ -226,15 -227,14 +227,15 @@@ public class UngroupedAggregateRegionOb } ImmutableBytesWritable tempPtr = new ImmutableBytesWritable(); theScanner = - getWrappedScanner(c, theScanner, offset, scan, dataColumns, tupleProjector, + getWrappedScanner(c, theScanner, offset, scan, dataColumns, tupleProjector, dataRegion, indexMaintainers == null ? null : indexMaintainers.get(0), viewConstants, p, tempPtr); - } - + } + if (j != null) { - theScanner = new HashJoinRegionScanner(theScanner, p, j, ScanUtil.getTenantId(scan), c.getEnvironment()); + TupleProjector postJoinProjector = TupleProjector.deserializeProjectorFromScan(scan, false); + theScanner = new HashJoinRegionScanner(theScanner, p, postJoinProjector, j, ScanUtil.getTenantId(scan), c.getEnvironment()); } - + int batchSize = 0; List<Mutation> mutations = Collections.emptyList(); boolean buildLocalIndex = indexMaintainers != null && dataColumns==null && !localIndexScan; http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/execute/AggregatePlan.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/execute/DelegateQueryPlan.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/execute/HashJoinPlan.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/main/java/org/apache/phoenix/parse/SelectStatement.java ---------------------------------------------------------------------- diff --cc phoenix-core/src/main/java/org/apache/phoenix/parse/SelectStatement.java index 87b944b,362e98d..efbaaa6 --- a/phoenix-core/src/main/java/org/apache/phoenix/parse/SelectStatement.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/SelectStatement.java @@@ -36,13 -38,6 +38,13 @@@ import org.apache.phoenix.parse.Functio * @since 0.1 */ public class SelectStatement implements FilterableStatement { + public static final SelectStatement SELECT_STAR = + new SelectStatement( + null, null, false, + Collections.<AliasedNode>singletonList(new AliasedNode(null, WildcardParseNode.INSTANCE)), + null, Collections.<ParseNode>emptyList(), + null, Collections.<OrderByNode>emptyList(), - null, 0, false, false, Collections.<SelectStatement>emptyList()); ++ null, 0, false, false, Collections.<SelectStatement>emptyList(), new HashMap<String, UDFParseNode>(1)); public static final SelectStatement SELECT_ONE = new SelectStatement( null, null, false, http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/62d6720f/pom.xml ----------------------------------------------------------------------