You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/03/27 04:01:07 UTC

[6/6] tajo git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into index_support

Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tajo into index_support

Conflicts:
	tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogService.java
	tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/src/main/java/org/apache/tajo/catalog/store/HCatalogStore.java
	tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/11300ef6
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/11300ef6
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/11300ef6

Branch: refs/heads/index_support
Commit: 11300ef63bd57562e302f5affbe325050566510e
Parents: db292ac b1e174e
Author: Jihoon Son <ji...@apache.org>
Authored: Fri Mar 27 12:01:06 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Fri Mar 27 12:01:06 2015 +0900

----------------------------------------------------------------------
 CHANGES                                         |  11 +
 .../tajo/catalog/AbstractCatalogClient.java     |  45 ++-
 .../src/main/proto/CatalogProtocol.proto        |   7 +-
 .../org/apache/tajo/catalog/AlterTableDesc.java |  21 +-
 .../org/apache/tajo/catalog/AlterTableType.java |   2 +-
 .../apache/tajo/catalog/CatalogConstants.java   |   5 +
 .../org/apache/tajo/catalog/CatalogService.java |  21 +-
 .../AlreadyExistsPartitionException.java        |  33 ++
 .../exception/NoSuchPartitionException.java     |  39 ++
 .../tajo/catalog/partition/PartitionDesc.java   |  97 +++--
 .../tajo/catalog/partition/PartitionKey.java    | 147 +++++++
 .../src/main/proto/CatalogProtos.proto          |  30 +-
 .../tajo/catalog/store/HCatalogStore.java       | 129 +++++--
 .../tajo/catalog/store/TestHCatalogStore.java   |  77 +++-
 .../org/apache/tajo/catalog/CatalogServer.java  | 100 +++--
 .../InfoSchemaMetadataDictionary.java           |   2 +
 .../PartitionKeysTableDescriptor.java           |  46 +++
 .../dictionary/PartitionsTableDescriptor.java   |   3 +-
 .../tajo/catalog/store/AbstractDBStore.java     | 334 +++++++++++-----
 .../store/AbstractMySQLMariaDBStore.java        |  14 +
 .../apache/tajo/catalog/store/CatalogStore.java |  14 +-
 .../org/apache/tajo/catalog/store/MemStore.java | 109 ++++--
 .../src/main/resources/schemas/derby/derby.xml  |  27 +-
 .../schemas/mariadb/partition_keys.sql          |   6 +
 .../resources/schemas/mariadb/partitions.sql    |  13 +-
 .../resources/schemas/mysql/partition_keys.sql  |   6 +
 .../main/resources/schemas/mysql/partitions.sql |  13 +-
 .../main/resources/schemas/oracle/oracle.xml    |  45 ++-
 .../resources/schemas/postgresql/postgresql.xml |  16 +-
 .../org/apache/tajo/catalog/TestCatalog.java    |  73 +++-
 .../planner/physical/HashLeftOuterJoinExec.java |   3 +-
 .../NonForwardQueryResultSystemScanner.java     |   6 +-
 .../tajo/webapp/QueryExecutorServlet.java       |   2 +-
 .../apache/tajo/engine/query/TestJoinQuery.java |  23 +-
 .../testComplexJoinsWithCaseWhen.sql            |  11 +
 .../testComplexJoinsWithCaseWhen2.sql           |   9 +
 .../TestJoinQuery/testCrossJoinAndCaseWhen.sql  |  18 -
 .../TestJoinQuery/testInnerJoinAndCaseWhen.sql  |  18 +
 .../TestJoinQuery/testJoinWithOrPredicates.sql  |   6 +
 .../testComplexJoinsWithCaseWhen.result         |  27 ++
 .../testComplexJoinsWithCaseWhen2.result        |  27 ++
 .../testCrossJoinAndCaseWhen.result             |  27 --
 .../testInnerJoinAndCaseWhen.result             |  27 ++
 .../testJoinWithOrPredicates.result             |   4 +
 tajo-docs/src/main/sphinx/getting_started.rst   |   2 +-
 .../tajo/jdbc/util/TestQueryStringDecoder.java  |  14 +-
 .../org/apache/tajo/plan/LogicalPlanner.java    |  60 ++-
 .../plan/rewrite/rules/FilterPushDownRule.java  | 384 +++++++++----------
 .../rewrite/rules/ProjectionPushDownRule.java   |   5 +-
 .../org/apache/tajo/plan/util/PlannerUtil.java  |  25 +-
 tajo-project/pom.xml                            |   2 +-
 51 files changed, 1622 insertions(+), 563 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-client/src/main/proto/CatalogProtocol.proto
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogConstants.java
----------------------------------------------------------------------
diff --cc tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogConstants.java
index f19f77f,8265e38..721bcf1
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogConstants.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogConstants.java
@@@ -52,8 -53,11 +53,12 @@@ public class CatalogConstants 
    public static final String COL_TABLESPACE_PK = "SPACE_ID";
    public static final String COL_DATABASES_PK = "DB_ID";
    public static final String COL_TABLES_PK = "TID";
 +  public static final String COL_INDEXES_PK = "INDEX_ID";
    public static final String COL_TABLES_NAME = "TABLE_NAME";
+ 
+   public static final String COL_PARTITIONS_PK = "PARTITION_ID";
+   public static final String COL_COLUMN_NAME = "COLUMN_NAME";
+   public static final String COL_PARTITION_VALUE = "PARTITION_VALUE";
    
    public static final String INFORMATION_SCHEMA_DB_NAME = "information_schema";
  }

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogService.java
----------------------------------------------------------------------
diff --cc tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogService.java
index dd26a27,86b773b..c356097
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogService.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogService.java
@@@ -19,18 -19,25 +19,19 @@@
  package org.apache.tajo.catalog;
  
  import org.apache.tajo.catalog.partition.PartitionMethodDesc;
 +import org.apache.tajo.catalog.proto.CatalogProtos.*;
+ import org.apache.tajo.catalog.proto.CatalogProtos;
+ import org.apache.tajo.catalog.proto.CatalogProtos.ColumnProto;
+ import org.apache.tajo.catalog.proto.CatalogProtos.DatabaseProto;
 -import org.apache.tajo.catalog.proto.CatalogProtos.IndexProto;
+ import org.apache.tajo.catalog.proto.CatalogProtos.TableDescriptorProto;
+ import org.apache.tajo.catalog.proto.CatalogProtos.TableOptionProto;
+ import org.apache.tajo.catalog.proto.CatalogProtos.TablePartitionProto;
+ import org.apache.tajo.catalog.proto.CatalogProtos.TableStatsProto;
  import org.apache.tajo.common.TajoDataTypes.DataType;
  
  import java.util.Collection;
  import java.util.List;
  
--import static org.apache.tajo.catalog.proto.CatalogProtos.AlterTablespaceProto;
--import static org.apache.tajo.catalog.proto.CatalogProtos.FunctionType;
--import static org.apache.tajo.catalog.proto.CatalogProtos.TablespaceProto;
--import static org.apache.tajo.catalog.proto.CatalogProtos.UpdateTableStatsProto;
--
--
  public interface CatalogService {
  
    /**

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
----------------------------------------------------------------------
diff --cc tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
index f10aa42,3abd840..c91df23
--- a/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
+++ b/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
@@@ -173,16 -186,15 +175,15 @@@ message TableOptionProto 
  }
  
  message TablePartitionProto {
-   required int32 pid = 1;
+   required int32 partition_id = 1;
    required int32 tid = 2;
    optional string partitionName = 3;
-   required int32  ordinalPosition = 4;
-   optional string path = 5;
+   optional string path = 4;
  }
  
 -message GetIndexByColumnRequest {
 +message GetIndexByColumnNamesRequest {
    required TableIdentifierProto tableIdentifier = 1;
 -  required string columnName = 2;
 +  repeated string columnNames = 2;
  }
  
  message IndexNameProto {

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-drivers/tajo-hcatalog/src/main/java/org/apache/tajo/catalog/store/HCatalogStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/CatalogStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
----------------------------------------------------------------------
diff --cc tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
index 51eab7d,470f09d..454405d
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
@@@ -26,11 -26,10 +26,12 @@@ import com.google.common.collect.Maps
  import org.apache.hadoop.conf.Configuration;
  import org.apache.hadoop.fs.Path;
  import org.apache.tajo.TajoConstants;
 +import org.apache.tajo.catalog.CatalogConstants;
  import org.apache.tajo.catalog.CatalogUtil;
  import org.apache.tajo.catalog.FunctionDesc;
 +import org.apache.tajo.catalog.Schema;
  import org.apache.tajo.catalog.exception.*;
+ import org.apache.tajo.catalog.partition.PartitionDesc;
  import org.apache.tajo.catalog.proto.CatalogProtos;
  import org.apache.tajo.catalog.proto.CatalogProtos.ColumnProto;
  import org.apache.tajo.catalog.proto.CatalogProtos.DatabaseProto;

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/derby/derby.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/oracle/oracle.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/main/resources/schemas/postgresql/postgresql.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-core/src/main/java/org/apache/tajo/master/exec/NonForwardQueryResultSystemScanner.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-core/src/main/java/org/apache/tajo/webapp/QueryExecutorServlet.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
----------------------------------------------------------------------
diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
index a257296,a6a7c78..de6ee5c
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/FilterPushDownRule.java
@@@ -18,7 -18,9 +18,10 @@@
  
  package org.apache.tajo.plan.rewrite.rules;
  
- import com.google.common.collect.*;
+ import com.google.common.collect.BiMap;
+ import com.google.common.collect.HashBiMap;
+ import com.google.common.collect.ImmutableSet;
++import com.google.common.collect.Sets;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.tajo.OverridableConf;
@@@ -48,10 -53,8 +55,10 @@@ public class FilterPushDownRule extend
    private final static Log LOG = LogFactory.getLog(FilterPushDownRule.class);
    private static final String NAME = "FilterPushDown";
  
 +  private CatalogService catalog;
 +
    static class FilterPushDownContext {
-     Set<EvalNode> pushingDownFilters = new HashSet<EvalNode>();
+     Set<EvalNode> pushingDownFilters = TUtil.newHashSet();
  
      public void clear() {
        pushingDownFilters.clear();
@@@ -839,12 -833,12 +839,12 @@@
  
    @Override
    public LogicalNode visitScan(FilterPushDownContext context, LogicalPlan plan,
 -                               LogicalPlan.QueryBlock block, ScanNode scanNode,
 +                               LogicalPlan.QueryBlock block, final ScanNode scanNode,
                                 Stack<LogicalNode> stack) throws PlanningException {
-     List<EvalNode> matched = Lists.newArrayList();
+     List<EvalNode> matched = TUtil.newList();
  
      // find partition column and check matching
-     Set<String> partitionColumns = new HashSet<String>();
+     Set<String> partitionColumns = TUtil.newHashSet();
      TableDesc table = scanNode.getTableDesc();
      boolean hasQualifiedName = false;
      if (table.hasPartition()) {

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tajo/blob/11300ef6/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java
----------------------------------------------------------------------