IMPALA-3786: Replace "cloudera" with "apache" (part 1)

As part of the ASF transition, we need to replace references to
Cloudera in Impala with references to Apache. This primarily means
changing Java package names from com.cloudera.impala.* to
org.apache.impala.*

To make this easier to review, this patch only renames files,
eg. fe/src/main/java/com/cloudera -> fe/src/main/java/org/apache

A follow up patch performs the actual code updates.

Change-Id: I3767dd1ee86df767075fdf1b371eb6b0b06668db
Reviewed-on: http://gerrit.cloudera.org:8080/3936
Reviewed-by: Thomas Tauber-Marshall <[email protected]>
Reviewed-by: Jim Apple <[email protected]>
Tested-by: Internal Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/b544f019
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/b544f019
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/b544f019

Branch: refs/heads/master
Commit: b544f019aabc1d3aee4368966be8dab478a28f03
Parents: a5e84ac
Author: Thomas Tauber-Marshall <[email protected]>
Authored: Wed Aug 10 15:00:46 2016 -0700
Committer: Internal Jenkins <[email protected]>
Committed: Thu Sep 29 21:13:52 2016 +0000

----------------------------------------------------------------------
 .../extdatasource/util/SerializationUtils.java  |   48 -
 .../extdatasource/v1/ExternalDataSource.java    |   65 -
 .../extdatasource/util/SerializationUtils.java  |   48 +
 .../extdatasource/v1/ExternalDataSource.java    |   65 +
 .../extdatasource/sample/EchoDataSource.java    |   75 -
 .../extdatasource/sample/EchoDataSource.java    |   75 +
 .../extdatasource/AllTypesDataSource.java       |  323 --
 .../extdatasource/AllTypesDataSource.java       |  323 ++
 .../cloudera/impala/analysis/AggregateInfo.java |  742 ----
 .../impala/analysis/AggregateInfoBase.java      |  221 --
 .../analysis/AlterTableAddPartitionStmt.java    |  117 -
 .../analysis/AlterTableAddReplaceColsStmt.java  |  108 -
 .../analysis/AlterTableChangeColStmt.java       |  101 -
 .../impala/analysis/AlterTableDropColStmt.java  |   84 -
 .../analysis/AlterTableDropPartitionStmt.java   |   79 -
 .../analysis/AlterTableOrViewRenameStmt.java    |   90 -
 .../AlterTableRecoverPartitionsStmt.java        |   56 -
 .../analysis/AlterTableSetCachedStmt.java       |   92 -
 .../analysis/AlterTableSetColumnStats.java      |  158 -
 .../analysis/AlterTableSetFileFormatStmt.java   |   57 -
 .../analysis/AlterTableSetLocationStmt.java     |   86 -
 .../impala/analysis/AlterTableSetStmt.java      |   58 -
 .../analysis/AlterTableSetTblProperties.java    |  150 -
 .../impala/analysis/AlterTableStmt.java         |   91 -
 .../cloudera/impala/analysis/AlterViewStmt.java |   71 -
 .../impala/analysis/AnalysisContext.java        |  544 ---
 .../cloudera/impala/analysis/AnalyticExpr.java  |  839 -----
 .../cloudera/impala/analysis/AnalyticInfo.java  |  199 -
 .../impala/analysis/AnalyticWindow.java         |  417 ---
 .../com/cloudera/impala/analysis/Analyzer.java  | 2932 ---------------
 .../impala/analysis/ArithmeticExpr.java         |  268 --
 .../impala/analysis/AuthorizationStmt.java      |   49 -
 .../cloudera/impala/analysis/BaseTableRef.java  |   98 -
 .../impala/analysis/BetweenPredicate.java       |  158 -
 .../impala/analysis/BinaryPredicate.java        |  388 --
 .../cloudera/impala/analysis/BoolLiteral.java   |  113 -
 .../com/cloudera/impala/analysis/CaseExpr.java  |  379 --
 .../impala/analysis/CaseWhenClause.java         |   42 -
 .../com/cloudera/impala/analysis/CastExpr.java  |  312 --
 .../impala/analysis/CollectionStructType.java   |   79 -
 .../impala/analysis/CollectionTableRef.java     |  138 -
 .../com/cloudera/impala/analysis/ColumnDef.java |  143 -
 .../impala/analysis/ColumnLineageGraph.java     |  680 ----
 .../impala/analysis/CompoundPredicate.java      |  216 --
 .../impala/analysis/ComputeStatsStmt.java       |  553 ---
 .../impala/analysis/CreateDataSrcStmt.java      |   97 -
 .../cloudera/impala/analysis/CreateDbStmt.java  |  102 -
 .../impala/analysis/CreateDropRoleStmt.java     |   63 -
 .../impala/analysis/CreateFunctionStmtBase.java |  206 --
 .../analysis/CreateOrAlterViewStmtBase.java     |  209 --
 .../analysis/CreateTableAsSelectStmt.java       |  212 --
 .../impala/analysis/CreateTableDataSrcStmt.java |   95 -
 .../analysis/CreateTableLikeFileStmt.java       |  375 --
 .../impala/analysis/CreateTableLikeStmt.java    |  157 -
 .../impala/analysis/CreateTableStmt.java        |  416 ---
 .../cloudera/impala/analysis/CreateUdaStmt.java |  209 --
 .../cloudera/impala/analysis/CreateUdfStmt.java |  140 -
 .../impala/analysis/CreateViewStmt.java         |   80 -
 .../cloudera/impala/analysis/DeleteStmt.java    |   90 -
 .../impala/analysis/DescribeDbStmt.java         |   71 -
 .../impala/analysis/DescribeTableStmt.java      |  152 -
 .../impala/analysis/DescriptorTable.java        |  198 -
 .../impala/analysis/DistributeParam.java        |  199 -
 .../impala/analysis/DropDataSrcStmt.java        |   61 -
 .../cloudera/impala/analysis/DropDbStmt.java    |   79 -
 .../impala/analysis/DropFunctionStmt.java       |  113 -
 .../cloudera/impala/analysis/DropStatsStmt.java |  105 -
 .../impala/analysis/DropTableOrViewStmt.java    |  115 -
 .../impala/analysis/EquivalenceClassId.java     |   37 -
 .../impala/analysis/ExistsPredicate.java        |   82 -
 .../java/com/cloudera/impala/analysis/Expr.java | 1258 -------
 .../com/cloudera/impala/analysis/ExprId.java    |   37 -
 .../impala/analysis/ExprSubstitutionMap.java    |  176 -
 .../impala/analysis/ExtractFromExpr.java        |  111 -
 .../cloudera/impala/analysis/FromClause.java    |  129 -
 .../cloudera/impala/analysis/FunctionArgs.java  |   67 -
 .../impala/analysis/FunctionCallExpr.java       |  516 ---
 .../cloudera/impala/analysis/FunctionName.java  |  148 -
 .../impala/analysis/FunctionParams.java         |   68 -
 .../impala/analysis/GrantRevokePrivStmt.java    |   94 -
 .../impala/analysis/GrantRevokeRoleStmt.java    |   72 -
 .../cloudera/impala/analysis/HdfsCachingOp.java |   93 -
 .../com/cloudera/impala/analysis/HdfsUri.java   |  128 -
 .../cloudera/impala/analysis/InPredicate.java   |  234 --
 .../cloudera/impala/analysis/InlineViewRef.java |  339 --
 .../cloudera/impala/analysis/InsertStmt.java    |  697 ----
 .../impala/analysis/IsNotEmptyPredicate.java    |   65 -
 .../impala/analysis/IsNullPredicate.java        |  186 -
 .../cloudera/impala/analysis/JoinOperator.java  |  112 -
 .../cloudera/impala/analysis/LikePredicate.java |  169 -
 .../cloudera/impala/analysis/LimitElement.java  |  183 -
 .../cloudera/impala/analysis/LiteralExpr.java   |  242 --
 .../cloudera/impala/analysis/LoadDataStmt.java  |  241 --
 .../cloudera/impala/analysis/ModifyStmt.java    |  292 --
 .../cloudera/impala/analysis/NullLiteral.java   |   90 -
 .../impala/analysis/NumericLiteral.java         |  317 --
 .../impala/analysis/OrderByElement.java         |  156 -
 .../com/cloudera/impala/analysis/ParseNode.java |   34 -
 .../impala/analysis/PartitionKeyValue.java      |   88 -
 .../impala/analysis/PartitionListItem.java      |   37 -
 .../cloudera/impala/analysis/PartitionSpec.java |  201 -
 .../java/com/cloudera/impala/analysis/Path.java |  448 ---
 .../com/cloudera/impala/analysis/Predicate.java |   97 -
 .../cloudera/impala/analysis/PrivilegeSpec.java |  287 --
 .../com/cloudera/impala/analysis/QueryStmt.java |  458 ---
 .../impala/analysis/ResetMetadataStmt.java      |  110 -
 .../cloudera/impala/analysis/SelectList.java    |   94 -
 .../impala/analysis/SelectListItem.java         |  129 -
 .../cloudera/impala/analysis/SelectStmt.java    | 1021 -----
 .../com/cloudera/impala/analysis/SetStmt.java   |   69 -
 .../impala/analysis/ShowCreateFunctionStmt.java |   74 -
 .../impala/analysis/ShowCreateTableStmt.java    |   80 -
 .../impala/analysis/ShowDataSrcsStmt.java       |   72 -
 .../cloudera/impala/analysis/ShowDbsStmt.java   |   74 -
 .../cloudera/impala/analysis/ShowFilesStmt.java |   90 -
 .../impala/analysis/ShowFunctionsStmt.java      |   94 -
 .../impala/analysis/ShowGrantRoleStmt.java      |   77 -
 .../impala/analysis/ShowPartitionsStmt.java     |   55 -
 .../cloudera/impala/analysis/ShowRolesStmt.java |   72 -
 .../cloudera/impala/analysis/ShowStatsStmt.java |   65 -
 .../impala/analysis/ShowTablesStmt.java         |  120 -
 .../impala/analysis/SingularRowSrcTableRef.java |   64 -
 .../impala/analysis/SlotDescriptor.java         |  261 --
 .../com/cloudera/impala/analysis/SlotId.java    |   37 -
 .../com/cloudera/impala/analysis/SlotRef.java   |  243 --
 .../com/cloudera/impala/analysis/SortInfo.java  |  131 -
 .../cloudera/impala/analysis/StatementBase.java |  141 -
 .../cloudera/impala/analysis/StmtRewriter.java  |  905 -----
 .../cloudera/impala/analysis/StringLiteral.java |  174 -
 .../com/cloudera/impala/analysis/Subquery.java  |  157 -
 .../com/cloudera/impala/analysis/TableName.java |  123 -
 .../com/cloudera/impala/analysis/TableRef.java  |  587 ---
 .../analysis/TimestampArithmeticExpr.java       |  215 --
 .../cloudera/impala/analysis/ToSqlUtils.java    |  348 --
 .../cloudera/impala/analysis/TruncateStmt.java  |   82 -
 .../impala/analysis/TupleDescriptor.java        |  310 --
 .../com/cloudera/impala/analysis/TupleId.java   |   40 -
 .../impala/analysis/TupleIsNullPredicate.java   |  185 -
 .../com/cloudera/impala/analysis/TypeDef.java   |  159 -
 .../com/cloudera/impala/analysis/TypesUtil.java |  237 --
 .../com/cloudera/impala/analysis/UnionStmt.java |  607 ---
 .../cloudera/impala/analysis/UpdateStmt.java    |  117 -
 .../com/cloudera/impala/analysis/UseStmt.java   |   55 -
 .../cloudera/impala/analysis/ValuesStmt.java    |   82 -
 .../cloudera/impala/analysis/WithClause.java    |  140 -
 .../authorization/AuthorizationChecker.java     |  190 -
 .../authorization/AuthorizationConfig.java      |  148 -
 .../impala/authorization/Authorizeable.java     |   56 -
 .../authorization/AuthorizeableColumn.java      |   66 -
 .../impala/authorization/AuthorizeableDb.java   |   48 -
 .../impala/authorization/AuthorizeableFn.java   |   45 -
 .../authorization/AuthorizeableServer.java      |   49 -
 .../authorization/AuthorizeableTable.java       |   63 -
 .../impala/authorization/AuthorizeableUri.java  |   47 -
 .../authorization/ImpalaInternalAdminUser.java  |   36 -
 .../impala/authorization/Privilege.java         |   70 -
 .../impala/authorization/PrivilegeRequest.java  |   77 -
 .../authorization/PrivilegeRequestBuilder.java  |  119 -
 .../impala/authorization/SentryConfig.java      |   74 -
 .../com/cloudera/impala/authorization/User.java |  104 -
 .../impala/catalog/AggregateFunction.java       |  241 --
 .../com/cloudera/impala/catalog/ArrayType.java  |   71 -
 .../impala/catalog/AuthorizationException.java  |   32 -
 .../impala/catalog/AuthorizationPolicy.java     |  340 --
 .../com/cloudera/impala/catalog/BuiltinsDb.java | 1052 ------
 .../com/cloudera/impala/catalog/Catalog.java    |  522 ---
 .../impala/catalog/CatalogDeltaLog.java         |  120 -
 .../impala/catalog/CatalogException.java        |   36 -
 .../cloudera/impala/catalog/CatalogObject.java  |   40 -
 .../impala/catalog/CatalogObjectCache.java      |  148 -
 .../impala/catalog/CatalogServiceCatalog.java   | 1268 -------
 .../com/cloudera/impala/catalog/Column.java     |  132 -
 .../impala/catalog/ColumnNotFoundException.java |   31 -
 .../cloudera/impala/catalog/ColumnStats.java    |  334 --
 .../com/cloudera/impala/catalog/DataSource.java |   88 -
 .../impala/catalog/DataSourceTable.java         |  259 --
 .../catalog/DatabaseNotFoundException.java      |   29 -
 .../java/com/cloudera/impala/catalog/Db.java    |  495 ---
 .../com/cloudera/impala/catalog/Function.java   |  488 ---
 .../cloudera/impala/catalog/HBaseColumn.java    |   67 -
 .../com/cloudera/impala/catalog/HBaseTable.java |  853 -----
 .../cloudera/impala/catalog/HdfsCachePool.java  |   65 -
 .../impala/catalog/HdfsCompression.java         |   85 -
 .../cloudera/impala/catalog/HdfsFileFormat.java |  261 --
 .../cloudera/impala/catalog/HdfsPartition.java  |  791 ----
 .../HdfsPartitionLocationCompressor.java        |  153 -
 .../impala/catalog/HdfsStorageDescriptor.java   |  240 --
 .../com/cloudera/impala/catalog/HdfsTable.java  | 1958 ----------
 .../catalog/HiveStorageDescriptorFactory.java   |   63 -
 .../cloudera/impala/catalog/ImpaladCatalog.java |  448 ---
 .../impala/catalog/IncompleteTable.java         |  134 -
 .../com/cloudera/impala/catalog/KuduColumn.java |   52 -
 .../com/cloudera/impala/catalog/KuduTable.java  |  278 --
 .../com/cloudera/impala/catalog/MapType.java    |   80 -
 .../impala/catalog/MetaStoreClientPool.java     |  189 -
 .../catalog/PartitionNotFoundException.java     |   31 -
 .../impala/catalog/PartitionStatsUtil.java      |  141 -
 .../cloudera/impala/catalog/PrimitiveType.java  |  103 -
 .../java/com/cloudera/impala/catalog/Role.java  |  144 -
 .../cloudera/impala/catalog/RolePrivilege.java  |  138 -
 .../com/cloudera/impala/catalog/RowFormat.java  |  109 -
 .../cloudera/impala/catalog/ScalarFunction.java |  295 --
 .../com/cloudera/impala/catalog/ScalarType.java |  478 ---
 .../cloudera/impala/catalog/StructField.java    |   92 -
 .../com/cloudera/impala/catalog/StructType.java |  107 -
 .../java/com/cloudera/impala/catalog/Table.java |  484 ---
 .../com/cloudera/impala/catalog/TableId.java    |   42 -
 .../cloudera/impala/catalog/TableLoader.java    |  101 -
 .../impala/catalog/TableLoadingException.java   |   35 -
 .../impala/catalog/TableLoadingMgr.java         |  333 --
 .../impala/catalog/TableNotFoundException.java  |   31 -
 .../java/com/cloudera/impala/catalog/Type.java  |  781 ----
 .../java/com/cloudera/impala/catalog/View.java  |  207 --
 .../impala/catalog/delegates/DdlDelegate.java   |   75 -
 .../catalog/delegates/KuduDdlDelegate.java      |  190 -
 .../delegates/UnsupportedOpDelegate.java        |   35 -
 .../cloudera/impala/common/AliasGenerator.java  |   48 -
 .../impala/common/AnalysisException.java        |   32 -
 .../com/cloudera/impala/common/ByteUnits.java   |   49 -
 .../impala/common/ColumnAliasGenerator.java     |   32 -
 .../cloudera/impala/common/FileSystemUtil.java  |  409 --
 .../java/com/cloudera/impala/common/Id.java     |   76 -
 .../com/cloudera/impala/common/IdGenerator.java |   28 -
 .../cloudera/impala/common/ImpalaException.java |   33 -
 .../impala/common/ImpalaRuntimeException.java   |   32 -
 .../impala/common/InternalException.java        |   32 -
 .../com/cloudera/impala/common/JniUtil.java     |  165 -
 .../impala/common/NotImplementedException.java  |   28 -
 .../java/com/cloudera/impala/common/Pair.java   |   55 -
 .../com/cloudera/impala/common/PrintUtils.java  |   86 -
 .../com/cloudera/impala/common/Reference.java   |   42 -
 .../com/cloudera/impala/common/RuntimeEnv.java  |   71 -
 .../impala/common/TableAliasGenerator.java      |   37 -
 .../com/cloudera/impala/common/TreeNode.java    |  182 -
 .../impala/extdatasource/ApiVersion.java        |   53 -
 .../ExternalDataSourceExecutor.java             |  267 --
 .../hive/executor/ImpalaBigIntWritable.java     |   38 -
 .../hive/executor/ImpalaBooleanWritable.java    |   38 -
 .../hive/executor/ImpalaBytesWritable.java      |   56 -
 .../hive/executor/ImpalaDoubleWritable.java     |   38 -
 .../hive/executor/ImpalaFloatWritable.java      |   38 -
 .../impala/hive/executor/ImpalaIntWritable.java |   38 -
 .../hive/executor/ImpalaSmallIntWritable.java   |   38 -
 .../hive/executor/ImpalaStringWritable.java     |  117 -
 .../hive/executor/ImpalaTextWritable.java       |   47 -
 .../hive/executor/ImpalaTinyIntWritable.java    |   38 -
 .../impala/hive/executor/UdfExecutor.java       |  643 ----
 .../impala/planner/AggregationNode.java         |  292 --
 .../impala/planner/AnalyticEvalNode.java        |  249 --
 .../impala/planner/AnalyticPlanner.java         |  815 ----
 .../com/cloudera/impala/planner/CohortId.java   |   42 -
 .../cloudera/impala/planner/DataPartition.java  |  131 -
 .../com/cloudera/impala/planner/DataSink.java   |   64 -
 .../impala/planner/DataSourceScanNode.java      |  371 --
 .../cloudera/impala/planner/DataStreamSink.java |   61 -
 .../impala/planner/DistributedPlanner.java      | 1019 -----
 .../cloudera/impala/planner/EmptySetNode.java   |   71 -
 .../cloudera/impala/planner/ExchangeNode.java   |  204 -
 .../cloudera/impala/planner/HBaseScanNode.java  |  510 ---
 .../cloudera/impala/planner/HBaseTableSink.java |   59 -
 .../cloudera/impala/planner/HashJoinNode.java   |  193 -
 .../impala/planner/HdfsPartitionFilter.java     |  127 -
 .../impala/planner/HdfsPartitionPruner.java     |  475 ---
 .../cloudera/impala/planner/HdfsScanNode.java   |  677 ----
 .../cloudera/impala/planner/HdfsTableSink.java  |  157 -
 .../cloudera/impala/planner/JoinBuildSink.java  |  103 -
 .../com/cloudera/impala/planner/JoinNode.java   |  508 ---
 .../cloudera/impala/planner/JoinTableId.java    |   47 -
 .../cloudera/impala/planner/KuduScanNode.java   |  358 --
 .../cloudera/impala/planner/KuduTableSink.java  |   88 -
 .../impala/planner/NestedLoopJoinNode.java      |  133 -
 .../impala/planner/ParallelPlanner.java         |  205 --
 .../impala/planner/PipelinedPlanNodeSet.java    |  215 --
 .../cloudera/impala/planner/PlanFragment.java   |  388 --
 .../cloudera/impala/planner/PlanFragmentId.java |   42 -
 .../com/cloudera/impala/planner/PlanId.java     |   42 -
 .../com/cloudera/impala/planner/PlanNode.java   |  715 ----
 .../com/cloudera/impala/planner/PlanNodeId.java |   42 -
 .../com/cloudera/impala/planner/Planner.java    |  456 ---
 .../cloudera/impala/planner/PlannerContext.java |  100 -
 .../impala/planner/RuntimeFilterGenerator.java  |  590 ---
 .../impala/planner/RuntimeFilterId.java         |   45 -
 .../com/cloudera/impala/planner/ScanNode.java   |  191 -
 .../com/cloudera/impala/planner/SelectNode.java |   93 -
 .../impala/planner/SingleNodePlanner.java       | 1594 --------
 .../impala/planner/SingularRowSrcNode.java      |   82 -
 .../com/cloudera/impala/planner/SortNode.java   |  242 --
 .../cloudera/impala/planner/SubplanNode.java    |  109 -
 .../com/cloudera/impala/planner/TableSink.java  |  114 -
 .../com/cloudera/impala/planner/UnionNode.java  |  231 --
 .../com/cloudera/impala/planner/UnnestNode.java |  107 -
 .../com/cloudera/impala/planner/ValueRange.java |  121 -
 .../cloudera/impala/service/BackendConfig.java  |   49 -
 .../impala/service/CatalogOpExecutor.java       | 2990 ---------------
 .../impala/service/DescribeResultFactory.java   |  246 --
 .../com/cloudera/impala/service/FeSupport.java  |  292 --
 .../com/cloudera/impala/service/Frontend.java   | 1231 -------
 .../com/cloudera/impala/service/JniCatalog.java |  255 --
 .../cloudera/impala/service/JniFrontend.java    |  743 ----
 .../com/cloudera/impala/service/MetadataOp.java |  641 ----
 .../impala/util/AvroSchemaConverter.java        |  209 --
 .../cloudera/impala/util/AvroSchemaParser.java  |  204 -
 .../cloudera/impala/util/AvroSchemaUtils.java   |  189 -
 .../com/cloudera/impala/util/DisjointSet.java   |  142 -
 .../com/cloudera/impala/util/EventSequence.java |   58 -
 .../cloudera/impala/util/FileWatchService.java  |  140 -
 .../impala/util/FsPermissionChecker.java        |  301 --
 .../com/cloudera/impala/util/GlogAppender.java  |  129 -
 .../cloudera/impala/util/HdfsCachingUtil.java   |  515 ---
 .../java/com/cloudera/impala/util/KuduUtil.java |  268 --
 .../java/com/cloudera/impala/util/ListMap.java  |   77 -
 .../impala/util/MaxRowsProcessedVisitor.java    |   66 -
 .../impala/util/MembershipSnapshot.java         |   84 -
 .../com/cloudera/impala/util/MetaStoreUtil.java |  172 -
 .../com/cloudera/impala/util/NativeLibUtil.java |   44 -
 .../com/cloudera/impala/util/NativeLogger.java  |   51 -
 .../cloudera/impala/util/PatternMatcher.java    |  108 -
 .../impala/util/RequestPoolService.java         |  451 ---
 .../impala/util/SentryPolicyService.java        |  466 ---
 .../com/cloudera/impala/util/SentryProxy.java   |  348 --
 .../com/cloudera/impala/util/StatsHelper.java   |   60 -
 .../cloudera/impala/util/TAccessLevelUtil.java  |   35 -
 .../cloudera/impala/util/TColumnValueUtil.java  |   51 -
 .../cloudera/impala/util/TResultRowBuilder.java |   64 -
 .../cloudera/impala/util/TSessionStateUtil.java |   38 -
 .../com/cloudera/impala/util/UnsafeUtil.java    |   68 -
 .../java/com/cloudera/impala/util/Visitor.java  |   27 -
 .../apache/impala/analysis/AggregateInfo.java   |  742 ++++
 .../impala/analysis/AggregateInfoBase.java      |  221 ++
 .../analysis/AlterTableAddPartitionStmt.java    |  117 +
 .../analysis/AlterTableAddReplaceColsStmt.java  |  108 +
 .../analysis/AlterTableChangeColStmt.java       |  101 +
 .../impala/analysis/AlterTableDropColStmt.java  |   84 +
 .../analysis/AlterTableDropPartitionStmt.java   |   79 +
 .../analysis/AlterTableOrViewRenameStmt.java    |   90 +
 .../AlterTableRecoverPartitionsStmt.java        |   56 +
 .../analysis/AlterTableSetCachedStmt.java       |   92 +
 .../analysis/AlterTableSetColumnStats.java      |  158 +
 .../analysis/AlterTableSetFileFormatStmt.java   |   57 +
 .../analysis/AlterTableSetLocationStmt.java     |   86 +
 .../impala/analysis/AlterTableSetStmt.java      |   58 +
 .../analysis/AlterTableSetTblProperties.java    |  150 +
 .../apache/impala/analysis/AlterTableStmt.java  |   91 +
 .../apache/impala/analysis/AlterViewStmt.java   |   71 +
 .../apache/impala/analysis/AnalysisContext.java |  544 +++
 .../apache/impala/analysis/AnalyticExpr.java    |  839 +++++
 .../apache/impala/analysis/AnalyticInfo.java    |  199 +
 .../apache/impala/analysis/AnalyticWindow.java  |  417 +++
 .../org/apache/impala/analysis/Analyzer.java    | 2932 +++++++++++++++
 .../apache/impala/analysis/ArithmeticExpr.java  |  268 ++
 .../impala/analysis/AuthorizationStmt.java      |   49 +
 .../apache/impala/analysis/BaseTableRef.java    |   98 +
 .../impala/analysis/BetweenPredicate.java       |  158 +
 .../apache/impala/analysis/BinaryPredicate.java |  388 ++
 .../org/apache/impala/analysis/BoolLiteral.java |  113 +
 .../org/apache/impala/analysis/CaseExpr.java    |  379 ++
 .../apache/impala/analysis/CaseWhenClause.java  |   42 +
 .../org/apache/impala/analysis/CastExpr.java    |  312 ++
 .../impala/analysis/CollectionStructType.java   |   79 +
 .../impala/analysis/CollectionTableRef.java     |  138 +
 .../org/apache/impala/analysis/ColumnDef.java   |  143 +
 .../impala/analysis/ColumnLineageGraph.java     |  680 ++++
 .../impala/analysis/CompoundPredicate.java      |  216 ++
 .../impala/analysis/ComputeStatsStmt.java       |  553 +++
 .../impala/analysis/CreateDataSrcStmt.java      |   97 +
 .../apache/impala/analysis/CreateDbStmt.java    |  102 +
 .../impala/analysis/CreateDropRoleStmt.java     |   63 +
 .../impala/analysis/CreateFunctionStmtBase.java |  206 ++
 .../analysis/CreateOrAlterViewStmtBase.java     |  209 ++
 .../analysis/CreateTableAsSelectStmt.java       |  212 ++
 .../impala/analysis/CreateTableDataSrcStmt.java |   95 +
 .../analysis/CreateTableLikeFileStmt.java       |  375 ++
 .../impala/analysis/CreateTableLikeStmt.java    |  157 +
 .../apache/impala/analysis/CreateTableStmt.java |  416 +++
 .../apache/impala/analysis/CreateUdaStmt.java   |  209 ++
 .../apache/impala/analysis/CreateUdfStmt.java   |  140 +
 .../apache/impala/analysis/CreateViewStmt.java  |   80 +
 .../org/apache/impala/analysis/DeleteStmt.java  |   90 +
 .../apache/impala/analysis/DescribeDbStmt.java  |   71 +
 .../impala/analysis/DescribeTableStmt.java      |  152 +
 .../apache/impala/analysis/DescriptorTable.java |  198 +
 .../apache/impala/analysis/DistributeParam.java |  199 +
 .../apache/impala/analysis/DropDataSrcStmt.java |   61 +
 .../org/apache/impala/analysis/DropDbStmt.java  |   79 +
 .../impala/analysis/DropFunctionStmt.java       |  113 +
 .../apache/impala/analysis/DropStatsStmt.java   |  105 +
 .../impala/analysis/DropTableOrViewStmt.java    |  115 +
 .../impala/analysis/EquivalenceClassId.java     |   37 +
 .../apache/impala/analysis/ExistsPredicate.java |   82 +
 .../java/org/apache/impala/analysis/Expr.java   | 1258 +++++++
 .../java/org/apache/impala/analysis/ExprId.java |   37 +
 .../impala/analysis/ExprSubstitutionMap.java    |  176 +
 .../apache/impala/analysis/ExtractFromExpr.java |  111 +
 .../org/apache/impala/analysis/FromClause.java  |  129 +
 .../apache/impala/analysis/FunctionArgs.java    |   67 +
 .../impala/analysis/FunctionCallExpr.java       |  516 +++
 .../apache/impala/analysis/FunctionName.java    |  148 +
 .../apache/impala/analysis/FunctionParams.java  |   68 +
 .../impala/analysis/GrantRevokePrivStmt.java    |   94 +
 .../impala/analysis/GrantRevokeRoleStmt.java    |   72 +
 .../apache/impala/analysis/HdfsCachingOp.java   |   93 +
 .../org/apache/impala/analysis/HdfsUri.java     |  128 +
 .../org/apache/impala/analysis/InPredicate.java |  234 ++
 .../apache/impala/analysis/InlineViewRef.java   |  339 ++
 .../org/apache/impala/analysis/InsertStmt.java  |  697 ++++
 .../impala/analysis/IsNotEmptyPredicate.java    |   65 +
 .../apache/impala/analysis/IsNullPredicate.java |  186 +
 .../apache/impala/analysis/JoinOperator.java    |  112 +
 .../apache/impala/analysis/LikePredicate.java   |  169 +
 .../apache/impala/analysis/LimitElement.java    |  183 +
 .../org/apache/impala/analysis/LiteralExpr.java |  242 ++
 .../apache/impala/analysis/LoadDataStmt.java    |  241 ++
 .../org/apache/impala/analysis/ModifyStmt.java  |  292 ++
 .../org/apache/impala/analysis/NullLiteral.java |   90 +
 .../apache/impala/analysis/NumericLiteral.java  |  317 ++
 .../apache/impala/analysis/OrderByElement.java  |  156 +
 .../org/apache/impala/analysis/ParseNode.java   |   34 +
 .../impala/analysis/PartitionKeyValue.java      |   88 +
 .../impala/analysis/PartitionListItem.java      |   37 +
 .../apache/impala/analysis/PartitionSpec.java   |  201 +
 .../java/org/apache/impala/analysis/Path.java   |  448 +++
 .../org/apache/impala/analysis/Predicate.java   |   97 +
 .../apache/impala/analysis/PrivilegeSpec.java   |  287 ++
 .../org/apache/impala/analysis/QueryStmt.java   |  458 +++
 .../impala/analysis/ResetMetadataStmt.java      |  110 +
 .../org/apache/impala/analysis/SelectList.java  |   94 +
 .../apache/impala/analysis/SelectListItem.java  |  129 +
 .../org/apache/impala/analysis/SelectStmt.java  | 1021 +++++
 .../org/apache/impala/analysis/SetStmt.java     |   69 +
 .../impala/analysis/ShowCreateFunctionStmt.java |   74 +
 .../impala/analysis/ShowCreateTableStmt.java    |   80 +
 .../impala/analysis/ShowDataSrcsStmt.java       |   72 +
 .../org/apache/impala/analysis/ShowDbsStmt.java |   74 +
 .../apache/impala/analysis/ShowFilesStmt.java   |   90 +
 .../impala/analysis/ShowFunctionsStmt.java      |   94 +
 .../impala/analysis/ShowGrantRoleStmt.java      |   77 +
 .../impala/analysis/ShowPartitionsStmt.java     |   55 +
 .../apache/impala/analysis/ShowRolesStmt.java   |   72 +
 .../apache/impala/analysis/ShowStatsStmt.java   |   65 +
 .../apache/impala/analysis/ShowTablesStmt.java  |  120 +
 .../impala/analysis/SingularRowSrcTableRef.java |   64 +
 .../apache/impala/analysis/SlotDescriptor.java  |  261 ++
 .../java/org/apache/impala/analysis/SlotId.java |   37 +
 .../org/apache/impala/analysis/SlotRef.java     |  243 ++
 .../org/apache/impala/analysis/SortInfo.java    |  131 +
 .../apache/impala/analysis/StatementBase.java   |  141 +
 .../apache/impala/analysis/StmtRewriter.java    |  905 +++++
 .../apache/impala/analysis/StringLiteral.java   |  174 +
 .../org/apache/impala/analysis/Subquery.java    |  157 +
 .../org/apache/impala/analysis/TableName.java   |  123 +
 .../org/apache/impala/analysis/TableRef.java    |  587 +++
 .../analysis/TimestampArithmeticExpr.java       |  215 ++
 .../org/apache/impala/analysis/ToSqlUtils.java  |  348 ++
 .../apache/impala/analysis/TruncateStmt.java    |   82 +
 .../apache/impala/analysis/TupleDescriptor.java |  310 ++
 .../org/apache/impala/analysis/TupleId.java     |   40 +
 .../impala/analysis/TupleIsNullPredicate.java   |  185 +
 .../org/apache/impala/analysis/TypeDef.java     |  159 +
 .../org/apache/impala/analysis/TypesUtil.java   |  237 ++
 .../org/apache/impala/analysis/UnionStmt.java   |  607 +++
 .../org/apache/impala/analysis/UpdateStmt.java  |  117 +
 .../org/apache/impala/analysis/UseStmt.java     |   55 +
 .../org/apache/impala/analysis/ValuesStmt.java  |   82 +
 .../org/apache/impala/analysis/WithClause.java  |  140 +
 .../authorization/AuthorizationChecker.java     |  190 +
 .../authorization/AuthorizationConfig.java      |  148 +
 .../impala/authorization/Authorizeable.java     |   56 +
 .../authorization/AuthorizeableColumn.java      |   66 +
 .../impala/authorization/AuthorizeableDb.java   |   48 +
 .../impala/authorization/AuthorizeableFn.java   |   45 +
 .../authorization/AuthorizeableServer.java      |   49 +
 .../authorization/AuthorizeableTable.java       |   63 +
 .../impala/authorization/AuthorizeableUri.java  |   47 +
 .../authorization/ImpalaInternalAdminUser.java  |   36 +
 .../apache/impala/authorization/Privilege.java  |   70 +
 .../impala/authorization/PrivilegeRequest.java  |   77 +
 .../authorization/PrivilegeRequestBuilder.java  |  119 +
 .../impala/authorization/SentryConfig.java      |   74 +
 .../org/apache/impala/authorization/User.java   |  104 +
 .../impala/catalog/AggregateFunction.java       |  241 ++
 .../org/apache/impala/catalog/ArrayType.java    |   71 +
 .../impala/catalog/AuthorizationException.java  |   32 +
 .../impala/catalog/AuthorizationPolicy.java     |  340 ++
 .../org/apache/impala/catalog/BuiltinsDb.java   | 1052 ++++++
 .../java/org/apache/impala/catalog/Catalog.java |  522 +++
 .../apache/impala/catalog/CatalogDeltaLog.java  |  120 +
 .../apache/impala/catalog/CatalogException.java |   36 +
 .../apache/impala/catalog/CatalogObject.java    |   40 +
 .../impala/catalog/CatalogObjectCache.java      |  148 +
 .../impala/catalog/CatalogServiceCatalog.java   | 1268 +++++++
 .../java/org/apache/impala/catalog/Column.java  |  132 +
 .../impala/catalog/ColumnNotFoundException.java |   31 +
 .../org/apache/impala/catalog/ColumnStats.java  |  334 ++
 .../org/apache/impala/catalog/DataSource.java   |   88 +
 .../apache/impala/catalog/DataSourceTable.java  |  259 ++
 .../catalog/DatabaseNotFoundException.java      |   29 +
 .../main/java/org/apache/impala/catalog/Db.java |  495 +++
 .../org/apache/impala/catalog/Function.java     |  488 +++
 .../org/apache/impala/catalog/HBaseColumn.java  |   67 +
 .../org/apache/impala/catalog/HBaseTable.java   |  853 +++++
 .../apache/impala/catalog/HdfsCachePool.java    |   65 +
 .../apache/impala/catalog/HdfsCompression.java  |   85 +
 .../apache/impala/catalog/HdfsFileFormat.java   |  261 ++
 .../apache/impala/catalog/HdfsPartition.java    |  791 ++++
 .../HdfsPartitionLocationCompressor.java        |  153 +
 .../impala/catalog/HdfsStorageDescriptor.java   |  240 ++
 .../org/apache/impala/catalog/HdfsTable.java    | 1958 ++++++++++
 .../catalog/HiveStorageDescriptorFactory.java   |   63 +
 .../apache/impala/catalog/ImpaladCatalog.java   |  448 +++
 .../apache/impala/catalog/IncompleteTable.java  |  134 +
 .../org/apache/impala/catalog/KuduColumn.java   |   52 +
 .../org/apache/impala/catalog/KuduTable.java    |  278 ++
 .../java/org/apache/impala/catalog/MapType.java |   80 +
 .../impala/catalog/MetaStoreClientPool.java     |  189 +
 .../catalog/PartitionNotFoundException.java     |   31 +
 .../impala/catalog/PartitionStatsUtil.java      |  141 +
 .../apache/impala/catalog/PrimitiveType.java    |  103 +
 .../java/org/apache/impala/catalog/Role.java    |  144 +
 .../apache/impala/catalog/RolePrivilege.java    |  138 +
 .../org/apache/impala/catalog/RowFormat.java    |  109 +
 .../apache/impala/catalog/ScalarFunction.java   |  295 ++
 .../org/apache/impala/catalog/ScalarType.java   |  478 +++
 .../org/apache/impala/catalog/StructField.java  |   92 +
 .../org/apache/impala/catalog/StructType.java   |  107 +
 .../java/org/apache/impala/catalog/Table.java   |  484 +++
 .../java/org/apache/impala/catalog/TableId.java |   42 +
 .../org/apache/impala/catalog/TableLoader.java  |  101 +
 .../impala/catalog/TableLoadingException.java   |   35 +
 .../apache/impala/catalog/TableLoadingMgr.java  |  333 ++
 .../impala/catalog/TableNotFoundException.java  |   31 +
 .../java/org/apache/impala/catalog/Type.java    |  781 ++++
 .../java/org/apache/impala/catalog/View.java    |  207 ++
 .../impala/catalog/delegates/DdlDelegate.java   |   75 +
 .../catalog/delegates/KuduDdlDelegate.java      |  190 +
 .../delegates/UnsupportedOpDelegate.java        |   35 +
 .../apache/impala/common/AliasGenerator.java    |   48 +
 .../apache/impala/common/AnalysisException.java |   32 +
 .../org/apache/impala/common/ByteUnits.java     |   49 +
 .../impala/common/ColumnAliasGenerator.java     |   32 +
 .../apache/impala/common/FileSystemUtil.java    |  409 ++
 .../main/java/org/apache/impala/common/Id.java  |   76 +
 .../org/apache/impala/common/IdGenerator.java   |   28 +
 .../apache/impala/common/ImpalaException.java   |   33 +
 .../impala/common/ImpalaRuntimeException.java   |   32 +
 .../apache/impala/common/InternalException.java |   32 +
 .../java/org/apache/impala/common/JniUtil.java  |  165 +
 .../impala/common/NotImplementedException.java  |   28 +
 .../java/org/apache/impala/common/Pair.java     |   55 +
 .../org/apache/impala/common/PrintUtils.java    |   86 +
 .../org/apache/impala/common/Reference.java     |   42 +
 .../org/apache/impala/common/RuntimeEnv.java    |   71 +
 .../impala/common/TableAliasGenerator.java      |   37 +
 .../java/org/apache/impala/common/TreeNode.java |  182 +
 .../apache/impala/extdatasource/ApiVersion.java |   53 +
 .../ExternalDataSourceExecutor.java             |  267 ++
 .../hive/executor/ImpalaBigIntWritable.java     |   38 +
 .../hive/executor/ImpalaBooleanWritable.java    |   38 +
 .../hive/executor/ImpalaBytesWritable.java      |   56 +
 .../hive/executor/ImpalaDoubleWritable.java     |   38 +
 .../hive/executor/ImpalaFloatWritable.java      |   38 +
 .../impala/hive/executor/ImpalaIntWritable.java |   38 +
 .../hive/executor/ImpalaSmallIntWritable.java   |   38 +
 .../hive/executor/ImpalaStringWritable.java     |  117 +
 .../hive/executor/ImpalaTextWritable.java       |   47 +
 .../hive/executor/ImpalaTinyIntWritable.java    |   38 +
 .../impala/hive/executor/UdfExecutor.java       |  643 ++++
 .../apache/impala/planner/AggregationNode.java  |  292 ++
 .../apache/impala/planner/AnalyticEvalNode.java |  249 ++
 .../apache/impala/planner/AnalyticPlanner.java  |  815 ++++
 .../org/apache/impala/planner/CohortId.java     |   42 +
 .../apache/impala/planner/DataPartition.java    |  131 +
 .../org/apache/impala/planner/DataSink.java     |   64 +
 .../impala/planner/DataSourceScanNode.java      |  371 ++
 .../apache/impala/planner/DataStreamSink.java   |   61 +
 .../impala/planner/DistributedPlanner.java      | 1019 +++++
 .../org/apache/impala/planner/EmptySetNode.java |   71 +
 .../org/apache/impala/planner/ExchangeNode.java |  204 +
 .../apache/impala/planner/HBaseScanNode.java    |  510 +++
 .../apache/impala/planner/HBaseTableSink.java   |   59 +
 .../org/apache/impala/planner/HashJoinNode.java |  193 +
 .../impala/planner/HdfsPartitionFilter.java     |  127 +
 .../impala/planner/HdfsPartitionPruner.java     |  475 +++
 .../org/apache/impala/planner/HdfsScanNode.java |  677 ++++
 .../apache/impala/planner/HdfsTableSink.java    |  157 +
 .../apache/impala/planner/JoinBuildSink.java    |  103 +
 .../org/apache/impala/planner/JoinNode.java     |  508 +++
 .../org/apache/impala/planner/JoinTableId.java  |   47 +
 .../org/apache/impala/planner/KuduScanNode.java |  358 ++
 .../apache/impala/planner/KuduTableSink.java    |   88 +
 .../impala/planner/NestedLoopJoinNode.java      |  133 +
 .../apache/impala/planner/ParallelPlanner.java  |  205 ++
 .../impala/planner/PipelinedPlanNodeSet.java    |  215 ++
 .../org/apache/impala/planner/PlanFragment.java |  388 ++
 .../apache/impala/planner/PlanFragmentId.java   |   42 +
 .../java/org/apache/impala/planner/PlanId.java  |   42 +
 .../org/apache/impala/planner/PlanNode.java     |  715 ++++
 .../org/apache/impala/planner/PlanNodeId.java   |   42 +
 .../java/org/apache/impala/planner/Planner.java |  456 +++
 .../apache/impala/planner/PlannerContext.java   |  100 +
 .../impala/planner/RuntimeFilterGenerator.java  |  590 +++
 .../apache/impala/planner/RuntimeFilterId.java  |   45 +
 .../org/apache/impala/planner/ScanNode.java     |  191 +
 .../org/apache/impala/planner/SelectNode.java   |   93 +
 .../impala/planner/SingleNodePlanner.java       | 1594 ++++++++
 .../impala/planner/SingularRowSrcNode.java      |   82 +
 .../org/apache/impala/planner/SortNode.java     |  242 ++
 .../org/apache/impala/planner/SubplanNode.java  |  109 +
 .../org/apache/impala/planner/TableSink.java    |  114 +
 .../org/apache/impala/planner/UnionNode.java    |  231 ++
 .../org/apache/impala/planner/UnnestNode.java   |  107 +
 .../org/apache/impala/planner/ValueRange.java   |  121 +
 .../apache/impala/service/BackendConfig.java    |   49 +
 .../impala/service/CatalogOpExecutor.java       | 2990 +++++++++++++++
 .../impala/service/DescribeResultFactory.java   |  246 ++
 .../org/apache/impala/service/FeSupport.java    |  292 ++
 .../org/apache/impala/service/Frontend.java     | 1231 +++++++
 .../org/apache/impala/service/JniCatalog.java   |  255 ++
 .../org/apache/impala/service/JniFrontend.java  |  743 ++++
 .../org/apache/impala/service/MetadataOp.java   |  641 ++++
 .../apache/impala/util/AvroSchemaConverter.java |  209 ++
 .../apache/impala/util/AvroSchemaParser.java    |  204 +
 .../org/apache/impala/util/AvroSchemaUtils.java |  189 +
 .../org/apache/impala/util/DisjointSet.java     |  142 +
 .../org/apache/impala/util/EventSequence.java   |   58 +
 .../apache/impala/util/FileWatchService.java    |  140 +
 .../apache/impala/util/FsPermissionChecker.java |  301 ++
 .../org/apache/impala/util/GlogAppender.java    |  129 +
 .../org/apache/impala/util/HdfsCachingUtil.java |  515 +++
 .../java/org/apache/impala/util/KuduUtil.java   |  268 ++
 .../java/org/apache/impala/util/ListMap.java    |   77 +
 .../impala/util/MaxRowsProcessedVisitor.java    |   66 +
 .../apache/impala/util/MembershipSnapshot.java  |   84 +
 .../org/apache/impala/util/MetaStoreUtil.java   |  172 +
 .../org/apache/impala/util/NativeLibUtil.java   |   44 +
 .../org/apache/impala/util/NativeLogger.java    |   51 +
 .../org/apache/impala/util/PatternMatcher.java  |  108 +
 .../apache/impala/util/RequestPoolService.java  |  451 +++
 .../apache/impala/util/SentryPolicyService.java |  466 +++
 .../org/apache/impala/util/SentryProxy.java     |  348 ++
 .../org/apache/impala/util/StatsHelper.java     |   60 +
 .../apache/impala/util/TAccessLevelUtil.java    |   35 +
 .../apache/impala/util/TColumnValueUtil.java    |   51 +
 .../apache/impala/util/TResultRowBuilder.java   |   64 +
 .../apache/impala/util/TSessionStateUtil.java   |   38 +
 .../java/org/apache/impala/util/UnsafeUtil.java |   68 +
 .../java/org/apache/impala/util/Visitor.java    |   27 +
 .../impala/analysis/AnalyzeAuthStmtsTest.java   |  223 --
 .../impala/analysis/AnalyzeDDLTest.java         | 2971 ---------------
 .../impala/analysis/AnalyzeExprsTest.java       | 2401 ------------
 .../impala/analysis/AnalyzeModifyStmtsTest.java |  245 --
 .../impala/analysis/AnalyzeStmtsTest.java       | 3484 ------------------
 .../impala/analysis/AnalyzeSubqueriesTest.java  | 1287 -------
 .../cloudera/impala/analysis/AnalyzerTest.java  |  630 ----
 .../cloudera/impala/analysis/AuditingTest.java  |  383 --
 .../impala/analysis/AuthorizationTest.java      | 2236 -----------
 .../com/cloudera/impala/analysis/ExprTest.java  |   91 -
 .../cloudera/impala/analysis/ParserTest.java    | 3277 ----------------
 .../com/cloudera/impala/analysis/ToSqlTest.java | 1170 ------
 .../cloudera/impala/analysis/TypesUtilTest.java |  217 --
 .../catalog/CatalogObjectToFromThriftTest.java  |  247 --
 .../cloudera/impala/catalog/CatalogTest.java    |  645 ----
 .../impala/catalog/HdfsPartitionTest.java       |  115 -
 .../catalog/HdfsStorageDescriptorTest.java      |  161 -
 .../impala/catalog/TestSchemaUtils.java         |   49 -
 .../impala/common/FrontendTestBase.java         |  319 --
 .../cloudera/impala/hive/executor/TestUdf.java  |  154 -
 .../impala/hive/executor/UdfExecutorTest.java   |  454 ---
 .../cloudera/impala/planner/PlannerTest.java    |  282 --
 .../impala/planner/PlannerTestBase.java         |  693 ----
 .../cloudera/impala/planner/S3PlannerTest.java  |  176 -
 .../cloudera/impala/service/FrontendTest.java   |  258 --
 .../com/cloudera/impala/service/JdbcTest.java   |  550 ---
 .../impala/testutil/BlockIdGenerator.java       |  104 -
 .../testutil/CatalogServiceTestCatalog.java     |   64 -
 .../impala/testutil/ImpalaJdbcClient.java       |  319 --
 .../impala/testutil/ImpaladTestCatalog.java     |   91 -
 .../impala/testutil/SentryServicePinger.java    |   87 -
 .../impala/testutil/TestFileParser.java         |  352 --
 .../com/cloudera/impala/testutil/TestUtils.java |  290 --
 .../com/cloudera/impala/util/KuduUtilTest.java  |  120 -
 .../cloudera/impala/util/TestDisjointSet.java   |  160 -
 .../impala/util/TestRequestPoolService.java     |  290 --
 .../impala/analysis/AnalyzeAuthStmtsTest.java   |  223 ++
 .../apache/impala/analysis/AnalyzeDDLTest.java  | 2971 +++++++++++++++
 .../impala/analysis/AnalyzeExprsTest.java       | 2401 ++++++++++++
 .../impala/analysis/AnalyzeModifyStmtsTest.java |  245 ++
 .../impala/analysis/AnalyzeStmtsTest.java       | 3484 ++++++++++++++++++
 .../impala/analysis/AnalyzeSubqueriesTest.java  | 1287 +++++++
 .../apache/impala/analysis/AnalyzerTest.java    |  630 ++++
 .../apache/impala/analysis/AuditingTest.java    |  383 ++
 .../impala/analysis/AuthorizationTest.java      | 2236 +++++++++++
 .../org/apache/impala/analysis/ExprTest.java    |   91 +
 .../org/apache/impala/analysis/ParserTest.java  | 3277 ++++++++++++++++
 .../org/apache/impala/analysis/ToSqlTest.java   | 1170 ++++++
 .../apache/impala/analysis/TypesUtilTest.java   |  217 ++
 .../catalog/CatalogObjectToFromThriftTest.java  |  247 ++
 .../org/apache/impala/catalog/CatalogTest.java  |  645 ++++
 .../impala/catalog/HdfsPartitionTest.java       |  115 +
 .../catalog/HdfsStorageDescriptorTest.java      |  161 +
 .../apache/impala/catalog/TestSchemaUtils.java  |   49 +
 .../apache/impala/common/FrontendTestBase.java  |  319 ++
 .../apache/impala/hive/executor/TestUdf.java    |  154 +
 .../impala/hive/executor/UdfExecutorTest.java   |  454 +++
 .../org/apache/impala/planner/PlannerTest.java  |  282 ++
 .../apache/impala/planner/PlannerTestBase.java  |  693 ++++
 .../apache/impala/planner/S3PlannerTest.java    |  176 +
 .../org/apache/impala/service/FrontendTest.java |  258 ++
 .../org/apache/impala/service/JdbcTest.java     |  550 +++
 .../impala/testutil/BlockIdGenerator.java       |  104 +
 .../testutil/CatalogServiceTestCatalog.java     |   64 +
 .../impala/testutil/ImpalaJdbcClient.java       |  319 ++
 .../impala/testutil/ImpaladTestCatalog.java     |   91 +
 .../impala/testutil/SentryServicePinger.java    |   87 +
 .../apache/impala/testutil/TestFileParser.java  |  352 ++
 .../org/apache/impala/testutil/TestUtils.java   |  290 ++
 .../org/apache/impala/util/KuduUtilTest.java    |  120 +
 .../org/apache/impala/util/TestDisjointSet.java |  160 +
 .../impala/util/TestRequestPoolService.java     |  290 ++
 .../datagenerator/CsvToHBaseConverter.java      |  101 -
 .../HBaseTestDataRegionAssigment.java           |  320 --
 .../datagenerator/JsonToParquetConverter.java   |   93 -
 .../RandomNestedDataGenerator.java              |  265 --
 .../impala/datagenerator/TestDataGenerator.java |  192 -
 .../datagenerator/CsvToHBaseConverter.java      |  101 +
 .../HBaseTestDataRegionAssigment.java           |  320 ++
 .../datagenerator/JsonToParquetConverter.java   |   93 +
 .../RandomNestedDataGenerator.java              |  265 ++
 .../impala/datagenerator/TestDataGenerator.java |  192 +
 .../cloudera/impala/IncompatibleUdfTest.java    |   71 -
 .../java/com/cloudera/impala/JavaUdfTest.java   |   91 -
 .../main/java/com/cloudera/impala/TestUdf.java  |  150 -
 .../com/cloudera/impala/TestUdfException.java   |   32 -
 .../java/com/cloudera/impala/TestUpdateUdf.java |   38 -
 .../java/com/cloudera/impala/UnresolvedUdf.java |   39 -
 .../org/apache/impala/IncompatibleUdfTest.java  |   71 +
 .../java/org/apache/impala/JavaUdfTest.java     |   91 +
 .../main/java/org/apache/impala/TestUdf.java    |  150 +
 .../org/apache/impala/TestUdfException.java     |   32 +
 .../java/org/apache/impala/TestUpdateUdf.java   |   38 +
 .../java/org/apache/impala/UnresolvedUdf.java   |   39 +
 740 files changed, 99398 insertions(+), 99398 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/util/SerializationUtils.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/util/SerializationUtils.java
 
b/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/util/SerializationUtils.java
deleted file mode 100644
index b8fd675..0000000
--- 
a/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/util/SerializationUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.extdatasource.util;
-
-import java.math.BigDecimal;
-import java.nio.ByteBuffer;
-import java.sql.Timestamp;
-
-/**
- * Utility methods for serialization by an ExternalDataSource.
- */
-public class SerializationUtils {
-
-  /**
-   * Encodes a DECIMAL value.
-   */
-  public static ByteBuffer encodeDecimal(BigDecimal decimal) {
-    if (decimal == null) throw new NullPointerException("decimal cannot be 
null.");
-    return ByteBuffer.wrap(decimal.unscaledValue().toByteArray());
-  }
-
-  /**
-   * Encodes a TIMESTAMP value.
-   */
-  public static ByteBuffer encodeTimestamp(Timestamp timestamp) {
-    if (timestamp == null) throw new NullPointerException("timestamp cannot be 
null.");
-    ByteBuffer buffer = ByteBuffer.allocate(8 + 4);
-    buffer.putLong(timestamp.getTime() / 1000);
-    buffer.putInt(timestamp.getNanos());
-    buffer.rewind();
-    return buffer;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/v1/ExternalDataSource.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/v1/ExternalDataSource.java
 
b/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/v1/ExternalDataSource.java
deleted file mode 100644
index 66cf1e5..0000000
--- 
a/ext-data-source/api/src/main/java/com/cloudera/impala/extdatasource/v1/ExternalDataSource.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.extdatasource.v1;
-
-import com.cloudera.impala.extdatasource.thrift.TCloseParams;
-import com.cloudera.impala.extdatasource.thrift.TCloseResult;
-import com.cloudera.impala.extdatasource.thrift.TGetNextParams;
-import com.cloudera.impala.extdatasource.thrift.TGetNextResult;
-import com.cloudera.impala.extdatasource.thrift.TOpenParams;
-import com.cloudera.impala.extdatasource.thrift.TOpenResult;
-import com.cloudera.impala.extdatasource.thrift.TPrepareParams;
-import com.cloudera.impala.extdatasource.thrift.TPrepareResult;
-
-/**
- * Defines an external data source. Called by Impala during planning 
(prepare() only)
- * and during query execution (open(), getNext(), and close()).
- * TODO: Add javadocs
- */
-public interface ExternalDataSource {
-
-  /**
-   * Called during the planning phase and serves two purposes:
-   *  1) to pass information to the query planner for a specific scan 
operation (right
-   *     now only an estimate of the number of rows returned).
-   *  2) to accept or reject predicates that are present in the query; accepted
-   *     predicates are then handed over to the library when the scan is 
initiated with
-   *     the Open() call.
-   * If prepare() fails, query planning will return with an error.
-   */
-  TPrepareResult prepare(TPrepareParams params);
-
-  /**
-   * Starts a scan. Called during query execution before any calls to 
getNext().
-   */
-  TOpenResult open(TOpenParams params);
-
-  /**
-   * Gets the next row batch of the scan.
-   */
-  TGetNextResult getNext(TGetNextParams params);
-
-  /**
-   * Ends the scan. After this call Impala will not make any more getNext() 
calls for
-   * this same handle and the implementation is free to release all related 
resources.
-   * Can be called at any point after open() has been called, even if the scan 
itself
-   * hasn't finished (TGetNextResult.eos was not set to true).
-   * Should always be called once unless prepare() fails.
-   */
-  TCloseResult close(TCloseParams params);
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/util/SerializationUtils.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/util/SerializationUtils.java
 
b/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/util/SerializationUtils.java
new file mode 100644
index 0000000..b8fd675
--- /dev/null
+++ 
b/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/util/SerializationUtils.java
@@ -0,0 +1,48 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package com.cloudera.impala.extdatasource.util;
+
+import java.math.BigDecimal;
+import java.nio.ByteBuffer;
+import java.sql.Timestamp;
+
+/**
+ * Utility methods for serialization by an ExternalDataSource.
+ */
+public class SerializationUtils {
+
+  /**
+   * Encodes a DECIMAL value.
+   */
+  public static ByteBuffer encodeDecimal(BigDecimal decimal) {
+    if (decimal == null) throw new NullPointerException("decimal cannot be 
null.");
+    return ByteBuffer.wrap(decimal.unscaledValue().toByteArray());
+  }
+
+  /**
+   * Encodes a TIMESTAMP value.
+   */
+  public static ByteBuffer encodeTimestamp(Timestamp timestamp) {
+    if (timestamp == null) throw new NullPointerException("timestamp cannot be 
null.");
+    ByteBuffer buffer = ByteBuffer.allocate(8 + 4);
+    buffer.putLong(timestamp.getTime() / 1000);
+    buffer.putInt(timestamp.getNanos());
+    buffer.rewind();
+    return buffer;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/v1/ExternalDataSource.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/v1/ExternalDataSource.java
 
b/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/v1/ExternalDataSource.java
new file mode 100644
index 0000000..66cf1e5
--- /dev/null
+++ 
b/ext-data-source/api/src/main/java/org/apache/impala/extdatasource/v1/ExternalDataSource.java
@@ -0,0 +1,65 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package com.cloudera.impala.extdatasource.v1;
+
+import com.cloudera.impala.extdatasource.thrift.TCloseParams;
+import com.cloudera.impala.extdatasource.thrift.TCloseResult;
+import com.cloudera.impala.extdatasource.thrift.TGetNextParams;
+import com.cloudera.impala.extdatasource.thrift.TGetNextResult;
+import com.cloudera.impala.extdatasource.thrift.TOpenParams;
+import com.cloudera.impala.extdatasource.thrift.TOpenResult;
+import com.cloudera.impala.extdatasource.thrift.TPrepareParams;
+import com.cloudera.impala.extdatasource.thrift.TPrepareResult;
+
+/**
+ * Defines an external data source. Called by Impala during planning 
(prepare() only)
+ * and during query execution (open(), getNext(), and close()).
+ * TODO: Add javadocs
+ */
+public interface ExternalDataSource {
+
+  /**
+   * Called during the planning phase and serves two purposes:
+   *  1) to pass information to the query planner for a specific scan 
operation (right
+   *     now only an estimate of the number of rows returned).
+   *  2) to accept or reject predicates that are present in the query; accepted
+   *     predicates are then handed over to the library when the scan is 
initiated with
+   *     the Open() call.
+   * If prepare() fails, query planning will return with an error.
+   */
+  TPrepareResult prepare(TPrepareParams params);
+
+  /**
+   * Starts a scan. Called during query execution before any calls to 
getNext().
+   */
+  TOpenResult open(TOpenParams params);
+
+  /**
+   * Gets the next row batch of the scan.
+   */
+  TGetNextResult getNext(TGetNextParams params);
+
+  /**
+   * Ends the scan. After this call Impala will not make any more getNext() 
calls for
+   * this same handle and the implementation is free to release all related 
resources.
+   * Can be called at any point after open() has been called, even if the scan 
itself
+   * hasn't finished (TGetNextResult.eos was not set to true).
+   * Should always be called once unless prepare() fails.
+   */
+  TCloseResult close(TCloseParams params);
+}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/sample/src/main/java/com/cloudera/impala/extdatasource/sample/EchoDataSource.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/sample/src/main/java/com/cloudera/impala/extdatasource/sample/EchoDataSource.java
 
b/ext-data-source/sample/src/main/java/com/cloudera/impala/extdatasource/sample/EchoDataSource.java
deleted file mode 100644
index e3d39c4..0000000
--- 
a/ext-data-source/sample/src/main/java/com/cloudera/impala/extdatasource/sample/EchoDataSource.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.extdatasource.sample;
-
-import com.cloudera.impala.extdatasource.thrift.TCloseParams;
-import com.cloudera.impala.extdatasource.thrift.TCloseResult;
-import com.cloudera.impala.extdatasource.thrift.TGetNextParams;
-import com.cloudera.impala.extdatasource.thrift.TGetNextResult;
-import com.cloudera.impala.extdatasource.thrift.TOpenParams;
-import com.cloudera.impala.extdatasource.thrift.TOpenResult;
-import com.cloudera.impala.extdatasource.thrift.TPrepareParams;
-import com.cloudera.impala.extdatasource.thrift.TPrepareResult;
-import com.cloudera.impala.extdatasource.thrift.TRowBatch;
-import com.cloudera.impala.extdatasource.v1.ExternalDataSource;
-import com.cloudera.impala.thrift.TColumnData;
-import com.cloudera.impala.thrift.TStatus;
-import com.cloudera.impala.thrift.TErrorCode;
-import com.google.common.collect.Lists;
-
-/**
- * Sample data source that always returns a single column containing the 
initString.
- */
-public class EchoDataSource implements ExternalDataSource {
-  private static final TStatus STATUS_OK =
-      new TStatus(TErrorCode.OK, Lists.<String>newArrayList());
-
-  private String initString_;
-
-  @Override
-  public TPrepareResult prepare(TPrepareParams params) {
-    return new TPrepareResult(STATUS_OK)
-      .setAccepted_conjuncts(Lists.<Integer>newArrayList())
-      .setNum_rows_estimate(1);
-  }
-
-  @Override
-  public TOpenResult open(TOpenParams params) {
-    initString_ = params.getInit_string();
-    return new TOpenResult(STATUS_OK).setScan_handle("dummy-handle");
-  }
-
-  @Override
-  public TGetNextResult getNext(TGetNextParams params) {
-    boolean eos = true;
-    TGetNextResult result = new TGetNextResult(STATUS_OK).setEos(eos);
-    TRowBatch rowBatch = new TRowBatch();
-    TColumnData colData = new TColumnData();
-    colData.addToIs_null(false);
-    colData.addToString_vals(initString_);
-    rowBatch.addToCols(colData);
-    rowBatch.setNum_rows(1);
-    result.setRows(rowBatch);
-    return result;
-  }
-
-  @Override
-  public TCloseResult close(TCloseParams params) {
-    return new TCloseResult(STATUS_OK);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/sample/src/main/java/org/apache/impala/extdatasource/sample/EchoDataSource.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/sample/src/main/java/org/apache/impala/extdatasource/sample/EchoDataSource.java
 
b/ext-data-source/sample/src/main/java/org/apache/impala/extdatasource/sample/EchoDataSource.java
new file mode 100644
index 0000000..e3d39c4
--- /dev/null
+++ 
b/ext-data-source/sample/src/main/java/org/apache/impala/extdatasource/sample/EchoDataSource.java
@@ -0,0 +1,75 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package com.cloudera.impala.extdatasource.sample;
+
+import com.cloudera.impala.extdatasource.thrift.TCloseParams;
+import com.cloudera.impala.extdatasource.thrift.TCloseResult;
+import com.cloudera.impala.extdatasource.thrift.TGetNextParams;
+import com.cloudera.impala.extdatasource.thrift.TGetNextResult;
+import com.cloudera.impala.extdatasource.thrift.TOpenParams;
+import com.cloudera.impala.extdatasource.thrift.TOpenResult;
+import com.cloudera.impala.extdatasource.thrift.TPrepareParams;
+import com.cloudera.impala.extdatasource.thrift.TPrepareResult;
+import com.cloudera.impala.extdatasource.thrift.TRowBatch;
+import com.cloudera.impala.extdatasource.v1.ExternalDataSource;
+import com.cloudera.impala.thrift.TColumnData;
+import com.cloudera.impala.thrift.TStatus;
+import com.cloudera.impala.thrift.TErrorCode;
+import com.google.common.collect.Lists;
+
+/**
+ * Sample data source that always returns a single column containing the 
initString.
+ */
+public class EchoDataSource implements ExternalDataSource {
+  private static final TStatus STATUS_OK =
+      new TStatus(TErrorCode.OK, Lists.<String>newArrayList());
+
+  private String initString_;
+
+  @Override
+  public TPrepareResult prepare(TPrepareParams params) {
+    return new TPrepareResult(STATUS_OK)
+      .setAccepted_conjuncts(Lists.<Integer>newArrayList())
+      .setNum_rows_estimate(1);
+  }
+
+  @Override
+  public TOpenResult open(TOpenParams params) {
+    initString_ = params.getInit_string();
+    return new TOpenResult(STATUS_OK).setScan_handle("dummy-handle");
+  }
+
+  @Override
+  public TGetNextResult getNext(TGetNextParams params) {
+    boolean eos = true;
+    TGetNextResult result = new TGetNextResult(STATUS_OK).setEos(eos);
+    TRowBatch rowBatch = new TRowBatch();
+    TColumnData colData = new TColumnData();
+    colData.addToIs_null(false);
+    colData.addToString_vals(initString_);
+    rowBatch.addToCols(colData);
+    rowBatch.setNum_rows(1);
+    result.setRows(rowBatch);
+    return result;
+  }
+
+  @Override
+  public TCloseResult close(TCloseParams params) {
+    return new TCloseResult(STATUS_OK);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/b544f019/ext-data-source/test/src/main/java/com/cloudera/impala/extdatasource/AllTypesDataSource.java
----------------------------------------------------------------------
diff --git 
a/ext-data-source/test/src/main/java/com/cloudera/impala/extdatasource/AllTypesDataSource.java
 
b/ext-data-source/test/src/main/java/com/cloudera/impala/extdatasource/AllTypesDataSource.java
deleted file mode 100644
index a6a731b..0000000
--- 
a/ext-data-source/test/src/main/java/com/cloudera/impala/extdatasource/AllTypesDataSource.java
+++ /dev/null
@@ -1,323 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package com.cloudera.impala.extdatasource;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.sql.Timestamp;
-import java.util.List;
-import java.util.UUID;
-
-import com.cloudera.impala.extdatasource.thrift.TBinaryPredicate;
-import com.cloudera.impala.extdatasource.thrift.TCloseParams;
-import com.cloudera.impala.extdatasource.thrift.TCloseResult;
-import com.cloudera.impala.extdatasource.thrift.TColumnDesc;
-import com.cloudera.impala.extdatasource.thrift.TGetNextParams;
-import com.cloudera.impala.extdatasource.thrift.TGetNextResult;
-import com.cloudera.impala.extdatasource.thrift.TOpenParams;
-import com.cloudera.impala.extdatasource.thrift.TOpenResult;
-import com.cloudera.impala.extdatasource.thrift.TPrepareParams;
-import com.cloudera.impala.extdatasource.thrift.TPrepareResult;
-import com.cloudera.impala.extdatasource.thrift.TRowBatch;
-import com.cloudera.impala.extdatasource.thrift.TTableSchema;
-import com.cloudera.impala.extdatasource.util.SerializationUtils;
-import com.cloudera.impala.extdatasource.v1.ExternalDataSource;
-import com.cloudera.impala.thrift.TColumnData;
-import com.cloudera.impala.thrift.TColumnType;
-import com.cloudera.impala.thrift.TPrimitiveType;
-import com.cloudera.impala.thrift.TScalarType;
-import com.cloudera.impala.thrift.TStatus;
-import com.cloudera.impala.thrift.TErrorCode;
-import com.cloudera.impala.thrift.TTypeNodeType;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-/**
- * Data source implementation for tests that can:
- * (a) Accepts every other offered conjunct for testing planning (though 
predicates are
- *     not actually evaluated) and returns trivial data of all supported types 
for
- *     query tests.
- * (b) Validate the predicates offered by Impala.
- */
-public class AllTypesDataSource implements ExternalDataSource {
-  // Total number of rows to return
-  private static final int NUM_ROWS_RETURNED = 5000;
-
-  // Change the size of the batches that are returned
-  private static final int INITIAL_BATCH_SIZE = 500;
-  private static final int BATCH_SIZE_INCREMENT = 100;
-
-  private static final TStatus STATUS_OK =
-      new TStatus(TErrorCode.OK, Lists.<String>newArrayList());
-
-  private int currRow_;
-  private boolean eos_;
-  private int batchSize_;
-  private TTableSchema schema_;
-  private DataSourceState state_;
-  private String scanHandle_;
-  private String validatePredicatesResult_;
-
-  // Enumerates the states of the data source.
-  private enum DataSourceState {
-    CREATED,
-    OPENED,
-    CLOSED
-  }
-
-  public AllTypesDataSource() {
-    eos_ = false;
-    currRow_ = 0;
-    state_ = DataSourceState.CREATED;
-  }
-
-  /**
-   * Accepts every other conjunct and returns the constant number of rows that
-   * is always returned.
-   */
-  @Override
-  public TPrepareResult prepare(TPrepareParams params) {
-    Preconditions.checkState(state_ == DataSourceState.CREATED);
-    List<Integer> accepted = Lists.newArrayList();
-    int numRowsReturned = 0;
-    if (validatePredicates(params.getPredicates())) {
-      // Indicate all predicates are applied because we return a dummy row 
with the
-      // result later to validate the result in tests. Impala shouldn't try to 
apply
-      // predicates to that dummy row.
-      for (int i = 0; i < params.getPredicatesSize(); ++i) accepted.add(i);
-      numRowsReturned = 1;
-    } else {
-      // Default behavior is to accept every other predicate. They are not 
actually
-      // applied, but we want to validate that Impala applies the correct 
predicates.
-      for (int i = 0; i < params.getPredicatesSize(); ++i) {
-        if (i % 2 == 0) accepted.add(i);
-      }
-      numRowsReturned = NUM_ROWS_RETURNED;
-    }
-    return new TPrepareResult(STATUS_OK)
-      .setAccepted_conjuncts(accepted)
-      .setNum_rows_estimate(numRowsReturned);
-  }
-
-  /**
-   * If the predicate value (assuming STRING) starts with 
'VALIDATE_PREDICATES##',
-   * we validate the TPrepareParams.predicates against predicates specified 
after the
-   * 'VALIDATE_PREDICATES##' and return true. The result of the validation is 
stored
-   * in validatePredicatesResult_.
-   *
-   * The expected predicates are specified in the form "{slot} {TComparisonOp} 
{val}",
-   * and conjunctive predicates are separated by '&&'.
-   *
-   * For example, the predicates_spec validates the predicates in the 
following query:
-   *    select * from table_name
-   *    where predicates_spec = 'x LT 1 && y GT 2' and
-   *          x < 1 and
-   *          2 > y;
-   *
-   * Current limitations:
-   *  - Disjunctive predicates are not supported (e.g. "expr1 or expr2")
-   *  - Only INT is supported
-   */
-  private boolean validatePredicates(List<List<TBinaryPredicate>> predicates) {
-    if (predicates == null || predicates.isEmpty()) return false;
-    TBinaryPredicate firstPredicate = predicates.get(0).get(0);
-    if (!firstPredicate.getValue().isSetString_val()) return false;
-    String colVal = firstPredicate.getValue().getString_val();
-    if (!colVal.toUpperCase().startsWith("VALIDATE_PREDICATES##")) return 
false;
-
-    String[] colValParts = colVal.split("##");
-    Preconditions.checkArgument(colValParts.length == 2);
-    String[] expectedPredicates = colValParts[1].split("&&");
-    Preconditions.checkArgument(expectedPredicates.length == predicates.size() 
- 1);
-
-    String result = "SUCCESS";
-    for (int i = 1; i < predicates.size(); ++i) {
-      String[] predicateParts = expectedPredicates[i - 1].trim().split(" ");
-      Preconditions.checkArgument(predicateParts.length == 3);
-      TBinaryPredicate predicate =
-          Iterables.getOnlyElement(predicates.get(i));
-      Preconditions.checkArgument(predicate.getValue().isSetInt_val());
-
-      String slotName = predicate.getCol().getName().toUpperCase();
-      int intVal = predicate.getValue().getInt_val();
-      if (!predicateParts[0].toUpperCase().equals(slotName) ||
-          !predicateParts[1].toUpperCase().equals(predicate.getOp().name()) ||
-          !predicateParts[2].equals(Integer.toString(intVal))) {
-        result = "Failed predicate, expected=" + expectedPredicates[i - 
1].trim() +
-            " actual=" + predicate.toString();
-      }
-    }
-    validatePredicatesResult_ = result;
-    return true;
-  }
-
-  /**
-   * Initializes the batch size and stores the table schema.
-   */
-  @Override
-  public TOpenResult open(TOpenParams params) {
-    Preconditions.checkState(state_ == DataSourceState.CREATED);
-    state_ = DataSourceState.OPENED;
-    batchSize_ = INITIAL_BATCH_SIZE;
-    schema_ = params.getRow_schema();
-    // Need to check validatePredicates again because the call in Prepare() 
was from
-    // the frontend and used a different instance of this data source class.
-    if (validatePredicates(params.getPredicates())) {
-      // If validating predicates, only one STRING column should be selected.
-      Preconditions.checkArgument(schema_.getColsSize() == 1);
-      TColumnDesc firstCol = schema_.getCols().get(0);
-      TColumnType firstType = firstCol.getType();
-      Preconditions.checkState(firstType.getTypesSize() == 1);
-      Preconditions.checkState(firstType.types.get(0).getType() == 
TTypeNodeType.SCALAR);
-      Preconditions.checkArgument(
-          firstType.types.get(0).scalar_type.getType() == 
TPrimitiveType.STRING);
-    }
-    scanHandle_ = UUID.randomUUID().toString();
-    return new TOpenResult(STATUS_OK).setScan_handle(scanHandle_);
-  }
-
-  /**
-   * If validating predicates, returns a single row with the result of the 
validation.
-   * Otherwise returns row batches with generated rows based on the row index. 
Called
-   * multiple times, so the current row is stored between calls. Each row 
batch is a
-   * different size (not necessarily the size specified by 
TOpenParams.batch_size to
-   * ensure that Impala can handle unexpected batch sizes.
-   */
-  @Override
-  public TGetNextResult getNext(TGetNextParams params) {
-    Preconditions.checkState(state_ == DataSourceState.OPENED);
-    Preconditions.checkArgument(params.getScan_handle().equals(scanHandle_));
-    if (eos_) return new TGetNextResult(STATUS_OK).setEos(eos_);
-
-    if (validatePredicatesResult_ != null) {
-      TColumnData colData = new TColumnData();
-      colData.setIs_null(Lists.newArrayList(false));
-      colData.setString_vals(Lists.newArrayList(validatePredicatesResult_));
-      eos_ = true;
-      return new TGetNextResult(STATUS_OK).setEos(eos_)
-          .setRows(new 
TRowBatch().setCols(Lists.newArrayList(colData)).setNum_rows(1));
-    }
-
-    List<TColumnData> cols = Lists.newArrayList();
-    for (int i = 0; i < schema_.getColsSize(); ++i) {
-      cols.add(new TColumnData().setIs_null(Lists.<Boolean>newArrayList()));
-    }
-
-    int numAdded = 0;
-    while (currRow_ < NUM_ROWS_RETURNED && numAdded < batchSize_) {
-      addRow(cols);
-      ++numAdded;
-      ++currRow_;
-    }
-
-    batchSize_ += BATCH_SIZE_INCREMENT;
-    if (currRow_ == NUM_ROWS_RETURNED) eos_ = true;
-    return new TGetNextResult(STATUS_OK).setEos(eos_)
-        .setRows(new TRowBatch().setCols(cols).setNum_rows(numAdded));
-  }
-
-  /**
-   * Adds a row to the set of columns. For all numeric types the value is set 
to the
-   * row index (mod the size for integer types). For strings it is just a 
string
-   * containing the row index and every 5th result is null.
-   */
-  private void addRow(List<TColumnData> cols) {
-    for (int i = 0; i < cols.size(); ++i) {
-      TColumnDesc colDesc = schema_.getCols().get(i);
-      TColumnData colData = cols.get(i);
-      TColumnType type = colDesc.getType();
-      if (type.types.get(0).getType() != TTypeNodeType.SCALAR) {
-        // Unsupported non-scalar type.
-        throw new UnsupportedOperationException("Unsupported column type: " +
-            type.types.get(0).getType());
-      }
-      Preconditions.checkState(type.getTypesSize() == 1);
-      TScalarType scalarType = type.types.get(0).scalar_type;
-      switch (scalarType.type) {
-        case TINYINT:
-          colData.addToIs_null(false);
-          colData.addToByte_vals((byte) (currRow_ % 10));
-          break;
-        case SMALLINT:
-          colData.addToIs_null(false);
-          colData.addToShort_vals((short) (currRow_ % 100));
-          break;
-        case INT:
-          colData.addToIs_null(false);
-          colData.addToInt_vals(currRow_);
-          break;
-        case BIGINT:
-          colData.addToIs_null(false);
-          colData.addToLong_vals((long) currRow_ * 10);
-          break;
-        case DOUBLE:
-          colData.addToIs_null(false);
-          colData.addToDouble_vals(currRow_);
-          break;
-        case FLOAT:
-          colData.addToIs_null(false);
-          colData.addToDouble_vals((float) (1.1 * currRow_));
-          break;
-        case STRING:
-          if (currRow_ % 5 == 0) {
-            colData.addToIs_null(true);
-          } else {
-            colData.addToIs_null(false);
-            colData.addToString_vals(String.valueOf(currRow_));
-          }
-          break;
-        case BOOLEAN:
-          colData.addToIs_null(false);
-          colData.addToBool_vals(currRow_ % 2 == 0);
-          break;
-        case TIMESTAMP:
-          colData.addToIs_null(false);
-          colData.addToBinary_vals(
-            SerializationUtils.encodeTimestamp(new Timestamp(currRow_)));
-          break;
-        case DECIMAL:
-          colData.addToIs_null(false);
-          BigInteger maxUnscaled = 
BigInteger.TEN.pow(scalarType.getPrecision());
-          BigInteger val = maxUnscaled.subtract(BigInteger.valueOf(currRow_ + 
1));
-          val = val.mod(maxUnscaled);
-          if (currRow_ % 2 == 0) val = val.negate();
-          colData.addToBinary_vals(SerializationUtils.encodeDecimal(new 
BigDecimal(val)));
-          break;
-        case BINARY:
-        case CHAR:
-        case DATE:
-        case DATETIME:
-        case INVALID_TYPE:
-        case NULL_TYPE:
-        default:
-          // Unsupported.
-          throw new UnsupportedOperationException("Unsupported column type: " +
-              scalarType.getType());
-      }
-    }
-  }
-
-  @Override
-  public TCloseResult close(TCloseParams params) {
-    Preconditions.checkState(state_ == DataSourceState.OPENED);
-    Preconditions.checkArgument(params.getScan_handle().equals(scanHandle_));
-    state_ = DataSourceState.CLOSED;
-    return new TCloseResult(STATUS_OK);
-  }
-}

Reply via email to