You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ch...@apache.org on 2017/03/29 09:07:08 UTC

[3/4] incubator-carbondata git commit: [CARBONDATA-826] Create carbondata-connector for query carbon data in presto

[CARBONDATA-826] Create carbondata-connector for query carbon data in presto

fix guava version in pom

add readme for presto integration

add readme for presto integration

for travis ci

for travis ci


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

Branch: refs/heads/master
Commit: 27123300794228e36e6f4f5887b9087b174c1bb3
Parents: 08a6e81
Author: chenliang613 <ch...@huawei.com>
Authored: Mon Mar 27 16:40:20 2017 +0530
Committer: chenliang613 <ch...@huawei.com>
Committed: Wed Mar 29 14:34:26 2017 +0530

----------------------------------------------------------------------
 integration/presto/README.md                    |   86 ++
 integration/presto/pom.xml                      |   22 +-
 .../presto/CarbondataColumnConstraint.java      |  101 +-
 .../presto/CarbondataColumnHandle.java          |  205 ++--
 .../carbondata/presto/CarbondataConnector.java  |   87 +-
 .../presto/CarbondataConnectorFactory.java      |  119 +-
 .../presto/CarbondataConnectorId.java           |   49 +-
 .../presto/CarbondataHandleResolver.java        |   36 +-
 .../carbondata/presto/CarbondataMetadata.java   |  427 ++++---
 .../carbondata/presto/CarbondataModule.java     |   63 +-
 .../carbondata/presto/CarbondataPlugin.java     |   14 +-
 .../presto/CarbondataRecordCursor.java          |  190 ++-
 .../carbondata/presto/CarbondataRecordSet.java  |  110 +-
 .../presto/CarbondataRecordSetProvider.java     |  431 ++++---
 .../carbondata/presto/CarbondataSplit.java      |  110 +-
 .../presto/CarbondataSplitManager.java          |  449 ++++----
 .../presto/CarbondataTableHandle.java           |   75 +-
 .../presto/CarbondataTableLayoutHandle.java     |   79 +-
 .../presto/CarbondataTransactionHandle.java     |    6 +-
 .../org/apache/carbondata/presto/Types.java     |   19 +-
 .../presto/impl/CarbonLocalInputSplit.java      |  103 +-
 .../presto/impl/CarbonTableCacheModel.java      |   24 +-
 .../presto/impl/CarbonTableConfig.java          |   68 +-
 .../presto/impl/CarbonTableReader.java          | 1088 +++++++++---------
 .../GrtLtFilterProcessorTestCase.scala          |   18 +-
 25 files changed, 1906 insertions(+), 2073 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/README.md
----------------------------------------------------------------------
diff --git a/integration/presto/README.md b/integration/presto/README.md
new file mode 100644
index 0000000..8a7cd13
--- /dev/null
+++ b/integration/presto/README.md
@@ -0,0 +1,86 @@
+<!--
+    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.
+-->
+
+Please follow the below steps to query carbondata in presto
+
+### Config presto server
+* Download presto server 0.166 : https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
+* Finish configuration as per https://prestodb.io/docs/current/installation/deployment.html
+  for example:
+  ```
+  carbondata.properties:
+  connector.name=carbondata
+  carbondata-store=/Users/apple/DEMO/presto_test/data
+  
+  config.properties:
+  coordinator=true
+  node-scheduler.include-coordinator=true
+  http-server.http.port=8086
+  query.max-memory=5GB
+  query.max-memory-per-node=1GB
+  discovery-server.enabled=true
+  discovery.uri=http://localhost:8086
+  
+  jvm.config:
+  -server
+  -Xmx4G
+  -XX:+UseG1GC
+  -XX:G1HeapRegionSize=32M
+  -XX:+UseGCOverheadLimit
+  -XX:+ExplicitGCInvokesConcurrent
+  -XX:+HeapDumpOnOutOfMemoryError
+  -XX:OnOutOfMemoryError=kill -9 %p
+  -XX:+TraceClassLoading
+  
+  log.properties:
+  com.facebook.presto=DEBUG
+  com.facebook.presto.server.PluginManager=DEBUG
+  
+  node.properties:
+  node.environment=carbondata
+  node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
+  node.data-dir=/Users/apple/DEMO/presto_test/data
+  ```
+* config carbondata-connector for presto
+  
+  First:compile carbondata-presto integration module
+  ```
+  $ git clone https://github.com/apache/incubator-carbondata
+  $ cd incubator-carbondata/integration/presto
+  $ mvn clean package
+  ```
+  Second:create one folder "carbondata" under ./presto-server-0.166/plugin
+  Third:copy all jar from ./incubator-carbondata/integration/presto/target/carbondata-presto-1.1.0-incubating-SNAPSHOT
+        to ./presto-server-0.166/plugin/carbondata
+  
+### Generate CarbonData file
+
+Please refer to quick start : https://github.com/apache/incubator-carbondata/blob/master/docs/quick-start-guide.md
+
+### Query carbondata in CLI of presto
+* Download presto-cli-0.166-executable.jar
+
+* Start CLI:
+  
+  ```
+  $ ./presto-cli-0.166-executable.jar --server localhost:8086 --catalog carbondata --schema default
+  ```
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/pom.xml
----------------------------------------------------------------------
diff --git a/integration/presto/pom.xml b/integration/presto/pom.xml
index 5493df1..15e31fa 100644
--- a/integration/presto/pom.xml
+++ b/integration/presto/pom.xml
@@ -28,6 +28,7 @@
 
   <artifactId>carbondata-presto</artifactId>
   <name>Apache CarbonData :: presto</name>
+  <packaging>presto-plugin</packaging>
 
   <properties>
     <dev.path>${basedir}/../../dev</dev.path>
@@ -68,7 +69,7 @@
       <groupId>io.airlift</groupId>
       <artifactId>bootstrap</artifactId>
       <version>0.144</version>
-      <scope>provided</scope>
+      <!--<scope>provided</scope>-->
       <exclusions>
         <exclusion>
           <groupId>org.slf4j</groupId>
@@ -81,14 +82,14 @@
       <groupId>io.airlift</groupId>
       <artifactId>json</artifactId>
       <version>0.144</version>
-      <scope>provided</scope>
+      <!--<scope>provided</scope>-->
     </dependency>
 
     <dependency>
       <groupId>io.airlift</groupId>
       <artifactId>log</artifactId>
       <version>0.144</version>
-      <scope>provided</scope>
+      <!--<scope>provided</scope>-->
     </dependency>
 
     <dependency>
@@ -115,7 +116,7 @@
     <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
-      <version>14.0.1</version>
+      <version>18.0</version>
     </dependency>
 
     <dependency>
@@ -129,7 +130,7 @@
       <groupId>com.facebook.presto</groupId>
       <artifactId>presto-spi</artifactId>
       <version>0.166</version>
-      <!--<scope>provided</scope>-->
+      <scope>provided</scope>
     </dependency>
 
     <dependency>
@@ -168,7 +169,7 @@
             <failIfNoTests>false</failIfNoTests>
           </configuration>
         </plugin>
-        <!--
+
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-checkstyle-plugin</artifactId>
@@ -213,12 +214,19 @@
         </plugin>
 
         <plugin>
+          <groupId>io.takari.maven.plugins</groupId>
+          <artifactId>presto-maven-plugin</artifactId>
+          <version>0.1.12</version>
+          <extensions>true</extensions>
+        </plugin>
+
+        <plugin>
           <groupId>pl.project13.maven</groupId>
           <artifactId>git-commit-id-plugin</artifactId>
           <configuration>
             <skip>true</skip>
           </configuration>
-        </plugin>-->
+        </plugin>
       </plugins>
     </build>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnConstraint.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnConstraint.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnConstraint.java
index aad378e..0665aed 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnConstraint.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnConstraint.java
@@ -30,75 +30,54 @@ import static com.google.common.base.Objects.toStringHelper;
 import static java.util.Objects.requireNonNull;
 
 public class CarbondataColumnConstraint {
-    private final String name;
-    private final boolean invertedindexed;
-    private Optional<Domain> domain;
+  private final String name;
+  private final boolean invertedindexed;
+  private Optional<Domain> domain;
 
-    @JsonCreator
-    public CarbondataColumnConstraint(
-            @JsonProperty("name") String name,
-            @JsonProperty("domain") Optional<Domain> domain,
-            @JsonProperty("invertedindexed") boolean invertedindexed)
-    {
-        this.name = requireNonNull(name, "name is null");
-        this.invertedindexed = requireNonNull(invertedindexed, "invertedIndexed is null");
-        this.domain = requireNonNull(domain, "domain is null");
-    }
-
-    @JsonProperty
-    public boolean isInvertedindexed()
-    {
-        return invertedindexed;
-    }
-
-    @JsonProperty
-    public String getName()
-    {
-        return name;
-    }
+  @JsonCreator public CarbondataColumnConstraint(@JsonProperty("name") String name,
+      @JsonProperty("domain") Optional<Domain> domain,
+      @JsonProperty("invertedindexed") boolean invertedindexed) {
+    this.name = requireNonNull(name, "name is null");
+    this.invertedindexed = requireNonNull(invertedindexed, "invertedIndexed is null");
+    this.domain = requireNonNull(domain, "domain is null");
+  }
 
-    @JsonProperty
-    public Optional<Domain> getDomain()
-    {
-        return domain;
-    }
+  @JsonProperty public boolean isInvertedindexed() {
+    return invertedindexed;
+  }
 
-    @JsonSetter
-    public void setDomain(Optional<Domain> domain)
-    {
-        this.domain = domain;
-    }
+  @JsonProperty public String getName() {
+    return name;
+  }
 
-    @Override
-    public int hashCode()
-    {
-        return Objects.hash(name, domain, invertedindexed);
-    }
+  @JsonProperty public Optional<Domain> getDomain() {
+    return domain;
+  }
 
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) {
-            return true;
-        }
+  @JsonSetter public void setDomain(Optional<Domain> domain) {
+    this.domain = domain;
+  }
 
-        if ((obj == null) || (getClass() != obj.getClass())) {
-            return false;
-        }
+  @Override public int hashCode() {
+    return Objects.hash(name, domain, invertedindexed);
+  }
 
-        CarbondataColumnConstraint other = (CarbondataColumnConstraint) obj;
-        return Objects.equals(this.name, other.name)
-                && Objects.equals(this.domain, other.domain)
-                && Objects.equals(this.invertedindexed, other.invertedindexed);
+  @Override public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
     }
 
-    @Override
-    public String toString()
-    {
-        return toStringHelper(this)
-                .add("name", this.name)
-                .add("invertedindexed", this.invertedindexed)
-                .add("domain", this.domain)
-                .toString();
+    if ((obj == null) || (getClass() != obj.getClass())) {
+      return false;
     }
+
+    CarbondataColumnConstraint other = (CarbondataColumnConstraint) obj;
+    return Objects.equals(this.name, other.name) && Objects.equals(this.domain, other.domain)
+        && Objects.equals(this.invertedindexed, other.invertedindexed);
+  }
+
+  @Override public String toString() {
+    return toStringHelper(this).add("name", this.name).add("invertedindexed", this.invertedindexed)
+        .add("domain", this.domain).toString();
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnHandle.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnHandle.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnHandle.java
index 2e3aef5..972a59c 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnHandle.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataColumnHandle.java
@@ -29,136 +29,111 @@ import java.util.Objects;
 import static com.google.common.base.Objects.toStringHelper;
 import static java.util.Objects.requireNonNull;
 
-public class CarbondataColumnHandle
-    implements ColumnHandle
-{
-        private final String connectorId;
-        private final String columnName;
-
-    public boolean isInvertedIndex() {
-        return isInvertedIndex;
-    }
+public class CarbondataColumnHandle implements ColumnHandle {
+  private final String connectorId;
+  private final String columnName;
 
-    private final Type columnType;
-    private final int ordinalPosition;
-    private final int keyOrdinal;
-    private final int columnGroupOrdinal;
+  public boolean isInvertedIndex() {
+    return isInvertedIndex;
+  }
 
-    private final int columnGroupId;
-    private final String columnUniqueId;
-    private final boolean isInvertedIndex;
+  private final Type columnType;
+  private final int ordinalPosition;
+  private final int keyOrdinal;
+  private final int columnGroupOrdinal;
 
-    public boolean isMeasure() {
-        return isMeasure;
-    }
+  private final int columnGroupId;
+  private final String columnUniqueId;
+  private final boolean isInvertedIndex;
 
-    private final boolean isMeasure;
+  public boolean isMeasure() {
+    return isMeasure;
+  }
 
-    public int getKeyOrdinal() {
-        return keyOrdinal;
-    }
+  private final boolean isMeasure;
 
-    public int getColumnGroupOrdinal() {
-        return columnGroupOrdinal;
-    }
+  public int getKeyOrdinal() {
+    return keyOrdinal;
+  }
 
-    public int getColumnGroupId() {
-        return columnGroupId;
-    }
+  public int getColumnGroupOrdinal() {
+    return columnGroupOrdinal;
+  }
 
-    public String getColumnUniqueId() {
-        return columnUniqueId;
-    }
+  public int getColumnGroupId() {
+    return columnGroupId;
+  }
+
+  public String getColumnUniqueId() {
+    return columnUniqueId;
+  }
     /* ordinalPosition of a columnhandle is the -> number of the column in the entire list of columns of this table
         IT DOESNT DEPEND ON THE QUERY (select clm3, clm0, clm1  from tablename)
         The columnhandle of clm3 : has ordinalposition = 3
      */
 
-    @JsonCreator
-    public CarbondataColumnHandle(
-            @JsonProperty("connectorId") String connectorId,
-            @JsonProperty("columnName") String columnName,
-            @JsonProperty("columnType") Type columnType,
-            @JsonProperty("ordinalPosition") int ordinalPosition,
-            @JsonProperty("keyOrdinal") int keyOrdinal,
-            @JsonProperty("columnGroupOrdinal") int columnGroupOrdinal,
-            @JsonProperty("isMeasure") boolean isMeasure,
-            @JsonProperty("columnGroupId") int columnGroupId,
-            @JsonProperty("columnUniqueId") String columnUniqueId,
-            @JsonProperty("isInvertedIndex") boolean isInvertedIndex)
-    {
-        this.connectorId = requireNonNull(connectorId, "connectorId is null");
-        this.columnName = requireNonNull(columnName, "columnName is null");
-        this.columnType = requireNonNull(columnType, "columnType is null");
-
-        this.ordinalPosition = requireNonNull(ordinalPosition, "ordinalPosition is null");
-        this.keyOrdinal = requireNonNull(keyOrdinal, "keyOrdinal is null");
-        this.columnGroupOrdinal = requireNonNull(columnGroupOrdinal, "columnGroupOrdinal is null");
-
-        this.isMeasure = isMeasure;
-        this.columnGroupId = requireNonNull(columnGroupId, "columnGroupId is null");
-        this.columnUniqueId = columnUniqueId;//requireNonNull(columnUniqueId, "columnUniqueId is null");
-        this.isInvertedIndex = requireNonNull(isInvertedIndex, "isInvertedIndex is null");
-    }
-
-    @JsonProperty
-    public String getConnectorId()
-    {
-        return connectorId;
-    }
-
-    @JsonProperty
-    public String getColumnName()
-    {
-        return columnName;
-    }
-
-    @JsonProperty
-    public Type getColumnType()
-    {
-        return columnType;
-    }
-
-    @JsonProperty
-    public int getOrdinalPosition()
-    {
-        return ordinalPosition;
+  @JsonCreator public CarbondataColumnHandle(@JsonProperty("connectorId") String connectorId,
+      @JsonProperty("columnName") String columnName, @JsonProperty("columnType") Type columnType,
+      @JsonProperty("ordinalPosition") int ordinalPosition,
+      @JsonProperty("keyOrdinal") int keyOrdinal,
+      @JsonProperty("columnGroupOrdinal") int columnGroupOrdinal,
+      @JsonProperty("isMeasure") boolean isMeasure,
+      @JsonProperty("columnGroupId") int columnGroupId,
+      @JsonProperty("columnUniqueId") String columnUniqueId,
+      @JsonProperty("isInvertedIndex") boolean isInvertedIndex) {
+    this.connectorId = requireNonNull(connectorId, "connectorId is null");
+    this.columnName = requireNonNull(columnName, "columnName is null");
+    this.columnType = requireNonNull(columnType, "columnType is null");
+
+    this.ordinalPosition = requireNonNull(ordinalPosition, "ordinalPosition is null");
+    this.keyOrdinal = requireNonNull(keyOrdinal, "keyOrdinal is null");
+    this.columnGroupOrdinal = requireNonNull(columnGroupOrdinal, "columnGroupOrdinal is null");
+
+    this.isMeasure = isMeasure;
+    this.columnGroupId = requireNonNull(columnGroupId, "columnGroupId is null");
+    this.columnUniqueId = columnUniqueId;//requireNonNull(columnUniqueId, "columnUniqueId is null");
+    this.isInvertedIndex = requireNonNull(isInvertedIndex, "isInvertedIndex is null");
+  }
+
+  @JsonProperty public String getConnectorId() {
+    return connectorId;
+  }
+
+  @JsonProperty public String getColumnName() {
+    return columnName;
+  }
+
+  @JsonProperty public Type getColumnType() {
+    return columnType;
+  }
+
+  @JsonProperty public int getOrdinalPosition() {
+    return ordinalPosition;
+  }
+
+  public ColumnMetadata getColumnMetadata() {
+    return new ColumnMetadata(columnName, columnType, null, false);
+  }
+
+  @Override public int hashCode() {
+    return Objects.hash(connectorId, columnName);
+  }
+
+  @Override public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
     }
-
-    public ColumnMetadata getColumnMetadata()
-    {
-        return new ColumnMetadata(columnName, columnType, null, false);
+    if ((obj == null) || (getClass() != obj.getClass())) {
+      return false;
     }
 
-    @Override
-    public int hashCode()
-    {
-        return Objects.hash(connectorId, columnName);
-    }
+    CarbondataColumnHandle other = (CarbondataColumnHandle) obj;
+    return Objects.equals(this.connectorId, other.connectorId) && Objects
+        .equals(this.columnName, other.columnName);
+  }
 
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) {
-            return true;
-        }
-        if ((obj == null) || (getClass() != obj.getClass())) {
-            return false;
-        }
-
-        CarbondataColumnHandle other = (CarbondataColumnHandle) obj;
-        return Objects.equals(this.connectorId, other.connectorId) &&
-                Objects.equals(this.columnName, other.columnName);
-    }
-
-    @Override
-    public String toString()
-    {
-        return toStringHelper(this)
-                .add("connectorId", connectorId)
-                .add("columnName", columnName)
-                .add("columnType", columnType)
-                .add("ordinalPosition", ordinalPosition)
-                .toString();
-    }
+  @Override public String toString() {
+    return toStringHelper(this).add("connectorId", connectorId).add("columnName", columnName)
+        .add("columnType", columnType).add("ordinalPosition", ordinalPosition).toString();
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnector.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnector.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnector.java
index 90b4944..0f1dbda 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnector.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnector.java
@@ -26,63 +26,50 @@ import static com.facebook.presto.spi.transaction.IsolationLevel.READ_COMMITTED;
 import static com.facebook.presto.spi.transaction.IsolationLevel.checkConnectorSupports;
 import static java.util.Objects.requireNonNull;
 
-public class CarbondataConnector
-        implements Connector
-{
+public class CarbondataConnector implements Connector {
 
-    private static final Logger log = Logger.get(CarbondataConnector.class);
+  private static final Logger log = Logger.get(CarbondataConnector.class);
 
-    private final LifeCycleManager lifeCycleManager;
-    private final CarbondataMetadata metadata;
-    private final ConnectorSplitManager splitManager;
-    private final ConnectorRecordSetProvider recordSetProvider;
-    private final ClassLoader classLoader;
+  private final LifeCycleManager lifeCycleManager;
+  private final CarbondataMetadata metadata;
+  private final ConnectorSplitManager splitManager;
+  private final ConnectorRecordSetProvider recordSetProvider;
+  private final ClassLoader classLoader;
 
+  public CarbondataConnector(LifeCycleManager lifeCycleManager, CarbondataMetadata metadata,
+      ConnectorSplitManager splitManager, ConnectorRecordSetProvider recordSetProvider,
+      ClassLoader classLoader) {
+    this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null");
+    this.metadata = requireNonNull(metadata, "metadata is null");
+    this.splitManager = requireNonNull(splitManager, "splitManager is null");
+    this.recordSetProvider = requireNonNull(recordSetProvider, "recordSetProvider is null");
+    this.classLoader = requireNonNull(classLoader, "classLoader is null");
+  }
 
-    public CarbondataConnector(LifeCycleManager lifeCycleManager,
-                               CarbondataMetadata metadata,
-                               ConnectorSplitManager splitManager,
-                               ConnectorRecordSetProvider recordSetProvider,
-                               ClassLoader classLoader)
-    {
-        this.lifeCycleManager = requireNonNull(lifeCycleManager, "lifeCycleManager is null");
-        this.metadata = requireNonNull(metadata, "metadata is null");
-        this.splitManager = requireNonNull(splitManager, "splitManager is null");
-        this.recordSetProvider = requireNonNull(recordSetProvider, "recordSetProvider is null");
-        this.classLoader = requireNonNull(classLoader, "classLoader is null");
-    }
-
-    @Override
-    public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly) {
-        checkConnectorSupports(READ_COMMITTED, isolationLevel);
-        return CarbondataTransactionHandle.INSTANCE;
-    }
+  @Override public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel,
+      boolean readOnly) {
+    checkConnectorSupports(READ_COMMITTED, isolationLevel);
+    return CarbondataTransactionHandle.INSTANCE;
+  }
 
-    @Override
-    public ConnectorMetadata getMetadata(ConnectorTransactionHandle transactionHandle) {
-        metadata.putClassLoader(classLoader);
-        return metadata;
-    }
+  @Override public ConnectorMetadata getMetadata(ConnectorTransactionHandle transactionHandle) {
+    metadata.putClassLoader(classLoader);
+    return metadata;
+  }
 
-    @Override
-    public ConnectorSplitManager getSplitManager() {
-        return splitManager;
-    }
+  @Override public ConnectorSplitManager getSplitManager() {
+    return splitManager;
+  }
 
-    @Override
-    public ConnectorRecordSetProvider getRecordSetProvider()
-    {
-        return recordSetProvider;
-    }
+  @Override public ConnectorRecordSetProvider getRecordSetProvider() {
+    return recordSetProvider;
+  }
 
-    @Override
-    public final void shutdown()
-    {
-        try {
-            lifeCycleManager.stop();
-        }
-        catch (Exception e) {
-            log.error(e, "Error shutting down connector");
-        }
+  @Override public final void shutdown() {
+    try {
+      lifeCycleManager.stop();
+    } catch (Exception e) {
+      log.error(e, "Error shutting down connector");
     }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorFactory.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorFactory.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorFactory.java
index 324699c..b146a2e 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorFactory.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorFactory.java
@@ -31,69 +31,60 @@ import java.util.Map;
 
 import static java.util.Objects.requireNonNull;
 
-public class CarbondataConnectorFactory
-        implements ConnectorFactory {
-
-    private final String name;
-    private final ClassLoader classLoader;
-
-    public CarbondataConnectorFactory(String connectorName, ClassLoader classLoader){
-        this.name = connectorName;
-        this.classLoader = requireNonNull(classLoader, "classLoader is null");
-    }
-
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public ConnectorHandleResolver getHandleResolver() {
-        return new CarbondataHandleResolver();
-    }
-
-    @Override
-    public Connector create(String connectorId, Map<String, String> config, ConnectorContext context) {
-        requireNonNull(config, "config is null");
-
-        try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
-            Bootstrap app = new Bootstrap(new JsonModule(), new CarbondataModule(connectorId, context.getTypeManager()));
-
-            Injector injector = app
-                    .strictConfig()
-                    .doNotInitializeLogging()
-                    .setRequiredConfigurationProperties(config)
-                    .initialize();
-
-            LifeCycleManager lifeCycleManager = injector.getInstance(LifeCycleManager.class);
-            CarbondataMetadata metadata = injector.getInstance(CarbondataMetadata.class);
-            //HiveTransactionManager transactionManager = injector.getInstance(HiveTransactionManager.class);
-            ConnectorSplitManager splitManager = injector.getInstance(ConnectorSplitManager.class);
-            ConnectorRecordSetProvider connectorRecordSet = injector.getInstance(ConnectorRecordSetProvider.class);
-            //ConnectorAccessControl accessControl = injector.getInstance(ConnectorAccessControl.class);
-
-
-            //ConnectorPageSourceProvider connectorPageSource = injector.getInstance(ConnectorPageSourceProvider.class);
-            //ConnectorPageSinkProvider pageSinkProvider = injector.getInstance(ConnectorPageSinkProvider.class);
-            //ConnectorNodePartitioningProvider connectorDistributionProvider = injector.getInstance(ConnectorNodePartitioningProvider.class);
-            //HiveSessionProperties hiveSessionProperties = injector.getInstance(HiveSessionProperties.class);
-            //HiveTableProperties hiveTableProperties = injector.getInstance(HiveTableProperties.class);
-
-
-            return new CarbondataConnector(
-                    lifeCycleManager,
-                    metadata,
-                    new ClassLoaderSafeConnectorSplitManager(splitManager, classLoader),
-                    connectorRecordSet,//new ClassLoaderSafeConnectorRecordSetProvider(, classLoader),
-                    classLoader
-                    //new ClassLoaderSafeConnectorPageSourceProvider(connectorPageSource, classLoader),
-                    //new ClassLoaderSafeConnectorPageSinkProvider(pageSinkProvider, classLoader),
-                    //new ClassLoaderSafeNodePartitioningProvider(connectorDistributionProvider, classLoader),
-            );
-        }
-        catch (Exception e) {
-            throw Throwables.propagate(e);
-        }
+public class CarbondataConnectorFactory implements ConnectorFactory {
+
+  private final String name;
+  private final ClassLoader classLoader;
+
+  public CarbondataConnectorFactory(String connectorName, ClassLoader classLoader) {
+    this.name = connectorName;
+    this.classLoader = requireNonNull(classLoader, "classLoader is null");
+  }
+
+  @Override public String getName() {
+    return name;
+  }
+
+  @Override public ConnectorHandleResolver getHandleResolver() {
+    return new CarbondataHandleResolver();
+  }
+
+  @Override public Connector create(String connectorId, Map<String, String> config,
+      ConnectorContext context) {
+    requireNonNull(config, "config is null");
+
+    try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
+      Bootstrap app = new Bootstrap(new JsonModule(),
+          new CarbondataModule(connectorId, context.getTypeManager()));
+
+      Injector injector =
+          app.strictConfig().doNotInitializeLogging().setRequiredConfigurationProperties(config)
+              .initialize();
+
+      LifeCycleManager lifeCycleManager = injector.getInstance(LifeCycleManager.class);
+      CarbondataMetadata metadata = injector.getInstance(CarbondataMetadata.class);
+      //HiveTransactionManager transactionManager = injector.getInstance(HiveTransactionManager.class);
+      ConnectorSplitManager splitManager = injector.getInstance(ConnectorSplitManager.class);
+      ConnectorRecordSetProvider connectorRecordSet =
+          injector.getInstance(ConnectorRecordSetProvider.class);
+      //ConnectorAccessControl accessControl = injector.getInstance(ConnectorAccessControl.class);
+
+      //ConnectorPageSourceProvider connectorPageSource = injector.getInstance(ConnectorPageSourceProvider.class);
+      //ConnectorPageSinkProvider pageSinkProvider = injector.getInstance(ConnectorPageSinkProvider.class);
+      //ConnectorNodePartitioningProvider connectorDistributionProvider = injector.getInstance(ConnectorNodePartitioningProvider.class);
+      //HiveSessionProperties hiveSessionProperties = injector.getInstance(HiveSessionProperties.class);
+      //HiveTableProperties hiveTableProperties = injector.getInstance(HiveTableProperties.class);
+
+      return new CarbondataConnector(lifeCycleManager, metadata,
+          new ClassLoaderSafeConnectorSplitManager(splitManager, classLoader), connectorRecordSet,
+          //new ClassLoaderSafeConnectorRecordSetProvider(, classLoader),
+          classLoader
+          //new ClassLoaderSafeConnectorPageSourceProvider(connectorPageSource, classLoader),
+          //new ClassLoaderSafeConnectorPageSinkProvider(pageSinkProvider, classLoader),
+          //new ClassLoaderSafeNodePartitioningProvider(connectorDistributionProvider, classLoader),
+      );
+    } catch (Exception e) {
+      throw Throwables.propagate(e);
     }
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorId.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorId.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorId.java
index 5aa72f1..b4ba1dd 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorId.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataConnectorId.java
@@ -23,39 +23,30 @@ import java.util.Objects;
 
 import static java.util.Objects.requireNonNull;
 
-public class CarbondataConnectorId
-{
-    private final String id;
-
-    @Inject
-    public CarbondataConnectorId(String id)
-    {
-        this.id = requireNonNull(id, "id is null");
-    }
+public class CarbondataConnectorId {
+  private final String id;
 
-    @Override
-    public String toString()
-    {
-        return id;
-    }
+  @Inject public CarbondataConnectorId(String id) {
+    this.id = requireNonNull(id, "id is null");
+  }
 
-    @Override
-    public int hashCode()
-    {
-        return Objects.hash(id);
-    }
+  @Override public String toString() {
+    return id;
+  }
 
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) {
-            return true;
-        }
+  @Override public int hashCode() {
+    return Objects.hash(id);
+  }
 
-        if ((obj == null) || (getClass() != obj.getClass())) {
-            return false;
-        }
+  @Override public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
 
-        return Objects.equals(this.id, ((CarbondataConnectorId) obj).id);
+    if ((obj == null) || (getClass() != obj.getClass())) {
+      return false;
     }
+
+    return Objects.equals(this.id, ((CarbondataConnectorId) obj).id);
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataHandleResolver.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataHandleResolver.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataHandleResolver.java
index 5918b46..7c65bfd 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataHandleResolver.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataHandleResolver.java
@@ -21,29 +21,23 @@ import com.facebook.presto.spi.*;
 import com.facebook.presto.spi.connector.ConnectorTransactionHandle;
 
 public class CarbondataHandleResolver implements ConnectorHandleResolver {
-    @Override
-    public Class<? extends ConnectorTableHandle> getTableHandleClass() {
-        return CarbondataTableHandle.class;
-    }
+  @Override public Class<? extends ConnectorTableHandle> getTableHandleClass() {
+    return CarbondataTableHandle.class;
+  }
 
-    @Override
-    public Class<? extends ConnectorTableLayoutHandle> getTableLayoutHandleClass() {
-        return CarbondataTableLayoutHandle.class;
-    }
+  @Override public Class<? extends ConnectorTableLayoutHandle> getTableLayoutHandleClass() {
+    return CarbondataTableLayoutHandle.class;
+  }
 
-    @Override
-    public Class<? extends ColumnHandle> getColumnHandleClass() {
-        return CarbondataColumnHandle.class;
-    }
+  @Override public Class<? extends ColumnHandle> getColumnHandleClass() {
+    return CarbondataColumnHandle.class;
+  }
 
-    @Override
-    public Class<? extends ConnectorSplit> getSplitClass() {
-        return CarbondataSplit.class;
-    }
+  @Override public Class<? extends ConnectorSplit> getSplitClass() {
+    return CarbondataSplit.class;
+  }
 
-    @Override
-    public Class<? extends ConnectorTransactionHandle> getTransactionHandleClass()
-    {
-        return CarbondataTransactionHandle.class;
-    }
+  @Override public Class<? extends ConnectorTransactionHandle> getTransactionHandleClass() {
+    return CarbondataTransactionHandle.class;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java
index 7fa96c3..524ce20 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataMetadata.java
@@ -37,46 +37,36 @@ import static org.apache.carbondata.presto.Types.checkType;
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 
-public class CarbondataMetadata
-        implements ConnectorMetadata
-{
-    private final String connectorId;
-    private CarbonTableReader carbonTableReader;
-    private ClassLoader classLoader;
-
-    private Map<String, ColumnHandle> columnHandleMap;
-
-    @Inject
-    public CarbondataMetadata(CarbondataConnectorId connectorId, CarbonTableReader reader)
-    {
-        this.connectorId = requireNonNull(connectorId, "connectorId is null").toString();
-        this.carbonTableReader = requireNonNull(reader, "client is null");
+public class CarbondataMetadata implements ConnectorMetadata {
+  private final String connectorId;
+  private CarbonTableReader carbonTableReader;
+  private ClassLoader classLoader;
+
+  private Map<String, ColumnHandle> columnHandleMap;
+
+  @Inject public CarbondataMetadata(CarbondataConnectorId connectorId, CarbonTableReader reader) {
+    this.connectorId = requireNonNull(connectorId, "connectorId is null").toString();
+    this.carbonTableReader = requireNonNull(reader, "client is null");
+  }
+
+  public void putClassLoader(ClassLoader classLoader) {
+    this.classLoader = classLoader;
+  }
+
+  @Override public List<String> listSchemaNames(ConnectorSession session) {
+    return listSchemaNamesInternal();
+  }
+
+  public List<String> listSchemaNamesInternal() {
+    List<String> ret;
+    try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
+      ret = carbonTableReader.getSchemaNames();
     }
+    return ret;
+  }
 
-
-    public void putClassLoader(ClassLoader classLoader)
-    {
-        this.classLoader = classLoader;
-    }
-
-
-    @Override
-    public List<String> listSchemaNames(ConnectorSession session) {
-        return listSchemaNamesInternal();
-    }
-
-
-    public List<String> listSchemaNamesInternal()
-    {
-        List<String> ret;
-        try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
-            ret = carbonTableReader.getSchemaNames();
-        }
-        return ret;
-    }
-
-    @Override
-    public List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull) {
+  @Override
+  public List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull) {
 
         /*List<SchemaTableName> all = carbonTableReader.getTableList();
         if(schemaNameOrNull != null)
@@ -85,225 +75,206 @@ public class CarbondataMetadata
         }
         return all;*/
 
-        List<String> schemaNames;
-        if (schemaNameOrNull != null) {
-            schemaNames = ImmutableList.of(schemaNameOrNull);
-        }
-        else {
-            schemaNames = carbonTableReader.getSchemaNames();
-        }
-
-        ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder();
-        for (String schemaName : schemaNames) {
-            for (String tableName : carbonTableReader.getTableNames(schemaName)) {
-                builder.add(new SchemaTableName(schemaName, tableName));
-            }
-        }
-        return builder.build();
+    List<String> schemaNames;
+    if (schemaNameOrNull != null) {
+      schemaNames = ImmutableList.of(schemaNameOrNull);
+    } else {
+      schemaNames = carbonTableReader.getSchemaNames();
     }
 
-    @Override
-    public Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSession session, SchemaTablePrefix prefix) {
-        requireNonNull(prefix, "SchemaTablePrefix is null");
-
-        ImmutableMap.Builder<SchemaTableName, List<ColumnMetadata>> columns = ImmutableMap.builder();
-        for (SchemaTableName tableName : listTables(session, prefix)) {
-            ConnectorTableMetadata tableMetadata = getTableMetadata(tableName);
-            if (tableMetadata != null) {
-                columns.put(tableName, tableMetadata.getColumns());
-            }
-        }
-        return columns.build();
+    ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder();
+    for (String schemaName : schemaNames) {
+      for (String tableName : carbonTableReader.getTableNames(schemaName)) {
+        builder.add(new SchemaTableName(schemaName, tableName));
+      }
     }
-
-    //if prefix is null. return all tables
-    //if prefix is not null, just return this table
-    private List<SchemaTableName> listTables(ConnectorSession session, SchemaTablePrefix prefix)
-    {
-        if (prefix.getSchemaName() == null) {
-            return listTables(session, prefix.getSchemaName());
-        }
-        return ImmutableList.of(new SchemaTableName(prefix.getSchemaName(), prefix.getTableName()));
+    return builder.build();
+  }
+
+  @Override
+  public Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSession session,
+      SchemaTablePrefix prefix) {
+    requireNonNull(prefix, "SchemaTablePrefix is null");
+
+    ImmutableMap.Builder<SchemaTableName, List<ColumnMetadata>> columns = ImmutableMap.builder();
+    for (SchemaTableName tableName : listTables(session, prefix)) {
+      ConnectorTableMetadata tableMetadata = getTableMetadata(tableName);
+      if (tableMetadata != null) {
+        columns.put(tableName, tableMetadata.getColumns());
+      }
     }
-
-    private ConnectorTableMetadata getTableMetadata(SchemaTableName tableName)
-    {
-        if (!listSchemaNamesInternal().contains(tableName.getSchemaName())) {
-            return null;
-        }
-
-        CarbonTable cb = carbonTableReader.getTable(tableName);
-        if (cb == null) {
-            return null;
-        }
-
-        List<ColumnMetadata> spiCols = new LinkedList<>();
-        List<CarbonDimension> cols = cb.getDimensionByTableName(tableName.getTableName());
-        for(CarbonDimension col : cols)
-        {
-            //show columns command will return these data
-            Type spiType = CarbondataType2SpiMapper(col.getColumnSchema().getDataType());
-            ColumnMetadata spiCol = new ColumnMetadata(col.getColumnSchema().getColumnName(), spiType);
-            spiCols.add(spiCol);
-        }
-
-        List<CarbonMeasure> mcols = cb.getMeasureByTableName(tableName.getTableName());
-        for(CarbonMeasure mcol : mcols)
-        {
-            Type spiType = CarbondataType2SpiMapper(mcol.getColumnSchema().getDataType());
-            ColumnMetadata spiCol = new ColumnMetadata(mcol.getColumnSchema().getColumnName(), spiType);
-            spiCols.add(spiCol);
-        }
-
-        //\u5c01\u88c5carbonTable
-        return new ConnectorTableMetadata(tableName, spiCols);
+    return columns.build();
+  }
+
+  //if prefix is null. return all tables
+  //if prefix is not null, just return this table
+  private List<SchemaTableName> listTables(ConnectorSession session, SchemaTablePrefix prefix) {
+    if (prefix.getSchemaName() == null) {
+      return listTables(session, prefix.getSchemaName());
     }
+    return ImmutableList.of(new SchemaTableName(prefix.getSchemaName(), prefix.getTableName()));
+  }
 
-    @Override
-    public Map<String, ColumnHandle> getColumnHandles(ConnectorSession session, ConnectorTableHandle tableHandle) {
-
-        CarbondataTableHandle handle = checkType(tableHandle, CarbondataTableHandle.class, "tableHandle");
-        checkArgument(handle.getConnectorId().equals(connectorId), "tableHandle is not for this connector");
-
-        String schemaName = handle.getSchemaTableName().getSchemaName();
-        if (!listSchemaNamesInternal().contains(schemaName)) {
-            throw new SchemaNotFoundException(schemaName);
-        }
-
-        //CarbonTable(official struct) is stored in CarbonMetadata(official struct)
-        CarbonTable cb = carbonTableReader.getTable(handle.getSchemaTableName());
-        if (cb == null) {
-            throw new TableNotFoundException(handle.getSchemaTableName());
-        }
-
-        ImmutableMap.Builder<String, ColumnHandle> columnHandles = ImmutableMap.builder();
-        int index = 0;
-        String tableName = handle.getSchemaTableName().getTableName();
-        for (CarbonDimension column : cb.getDimensionByTableName(tableName)) {
-            ColumnSchema cs = column.getColumnSchema();
-
-            int complex = column.getComplexTypeOrdinal();
-            column.getNumberOfChild();
-            column.getListOfChildDimensions();
-
-            Type spiType = CarbondataType2SpiMapper(cs.getDataType());
-            columnHandles.put(
-                    cs.getColumnName(),
-                    new CarbondataColumnHandle(
-                            connectorId,
-                            cs.getColumnName(),
-                            spiType,
-                            index,
-                            column.getKeyOrdinal(),
-                            column.getColumnGroupOrdinal(),
-                            false,
-                            cs.getColumnGroupId(),
-                            cs.getColumnUniqueId(),
-                            cs.isUseInvertedIndex()));
-            index++;
-        }
+  private ConnectorTableMetadata getTableMetadata(SchemaTableName tableName) {
+    if (!listSchemaNamesInternal().contains(tableName.getSchemaName())) {
+      return null;
+    }
 
-        for(CarbonMeasure measure : cb.getMeasureByTableName(tableName)){
-            ColumnSchema cs = measure.getColumnSchema();
-
-            Type spiType = CarbondataType2SpiMapper(cs.getDataType());
-            columnHandles.put(
-                    cs.getColumnName(),
-                    new CarbondataColumnHandle(
-                            connectorId,
-                            cs.getColumnName(),
-                            spiType,
-                            index,
-                            measure.getOrdinal(),
-                            cs.getColumnGroupId(),
-                            true,
-                            cs.getColumnGroupId(),
-                            cs.getColumnUniqueId(),
-                            cs.isUseInvertedIndex()));
-            index++;
-        }
+    CarbonTable cb = carbonTableReader.getTable(tableName);
+    if (cb == null) {
+      return null;
+    }
 
-        //should i cache it?
-        columnHandleMap = columnHandles.build();
+    List<ColumnMetadata> spiCols = new LinkedList<>();
+    List<CarbonDimension> cols = cb.getDimensionByTableName(tableName.getTableName());
+    for (CarbonDimension col : cols) {
+      //show columns command will return these data
+      Type spiType = CarbondataType2SpiMapper(col.getColumnSchema().getDataType());
+      ColumnMetadata spiCol = new ColumnMetadata(col.getColumnSchema().getColumnName(), spiType);
+      spiCols.add(spiCol);
+    }
 
-        return columnHandleMap;
+    List<CarbonMeasure> mcols = cb.getMeasureByTableName(tableName.getTableName());
+    for (CarbonMeasure mcol : mcols) {
+      Type spiType = CarbondataType2SpiMapper(mcol.getColumnSchema().getDataType());
+      ColumnMetadata spiCol = new ColumnMetadata(mcol.getColumnSchema().getColumnName(), spiType);
+      spiCols.add(spiCol);
     }
 
-    @Override
-    public ColumnMetadata getColumnMetadata(ConnectorSession session, ConnectorTableHandle tableHandle, ColumnHandle columnHandle) {
+    //\u5c01\u88c5carbonTable
+    return new ConnectorTableMetadata(tableName, spiCols);
+  }
 
-        checkType(tableHandle, CarbondataTableHandle.class, "tableHandle");
-        return checkType(columnHandle, CarbondataColumnHandle.class, "columnHandle").getColumnMetadata();
-    }
+  @Override public Map<String, ColumnHandle> getColumnHandles(ConnectorSession session,
+      ConnectorTableHandle tableHandle) {
 
-    @Override
-    public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName) {
-        //check tablename is valid
-        //schema is exist
-        //tables is exist
+    CarbondataTableHandle handle =
+        checkType(tableHandle, CarbondataTableHandle.class, "tableHandle");
+    checkArgument(handle.getConnectorId().equals(connectorId),
+        "tableHandle is not for this connector");
 
-        //CarbondataTable  get from jar
-        return new CarbondataTableHandle(connectorId, tableName);
+    String schemaName = handle.getSchemaTableName().getSchemaName();
+    if (!listSchemaNamesInternal().contains(schemaName)) {
+      throw new SchemaNotFoundException(schemaName);
     }
 
-    @Override
-    public List<ConnectorTableLayoutResult> getTableLayouts(ConnectorSession session, ConnectorTableHandle table, Constraint<ColumnHandle> constraint, Optional<Set<ColumnHandle>> desiredColumns) {
-        CarbondataTableHandle handle = checkType(table, CarbondataTableHandle.class, "table");
-        ConnectorTableLayout layout = new ConnectorTableLayout(new CarbondataTableLayoutHandle(handle,constraint.getSummary()/*, constraint.getPredicateMap(),constraint.getFilterTuples()*/));
-        return ImmutableList.of(new ConnectorTableLayoutResult(layout, constraint.getSummary()));
+    //CarbonTable(official struct) is stored in CarbonMetadata(official struct)
+    CarbonTable cb = carbonTableReader.getTable(handle.getSchemaTableName());
+    if (cb == null) {
+      throw new TableNotFoundException(handle.getSchemaTableName());
     }
 
-    @Override
-    public ConnectorTableLayout getTableLayout(ConnectorSession session, ConnectorTableLayoutHandle handle) {
-        return new ConnectorTableLayout(handle);
+    ImmutableMap.Builder<String, ColumnHandle> columnHandles = ImmutableMap.builder();
+    int index = 0;
+    String tableName = handle.getSchemaTableName().getTableName();
+    for (CarbonDimension column : cb.getDimensionByTableName(tableName)) {
+      ColumnSchema cs = column.getColumnSchema();
+
+      int complex = column.getComplexTypeOrdinal();
+      column.getNumberOfChild();
+      column.getListOfChildDimensions();
+
+      Type spiType = CarbondataType2SpiMapper(cs.getDataType());
+      columnHandles.put(cs.getColumnName(),
+          new CarbondataColumnHandle(connectorId, cs.getColumnName(), spiType, index,
+              column.getKeyOrdinal(), column.getColumnGroupOrdinal(), false, cs.getColumnGroupId(),
+              cs.getColumnUniqueId(), cs.isUseInvertedIndex()));
+      index++;
     }
 
-    @Override
-    public ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle table) {
-        return getTableMetadataInternal(table);
-    }
+    for (CarbonMeasure measure : cb.getMeasureByTableName(tableName)) {
+      ColumnSchema cs = measure.getColumnSchema();
 
-    public ConnectorTableMetadata getTableMetadataInternal(ConnectorTableHandle table)
-    {
-        CarbondataTableHandle carbondataTableHandle = checkType(table, CarbondataTableHandle.class, "table");
-        checkArgument(carbondataTableHandle.getConnectorId().equals(connectorId), "tableHandle is not for this connector");
-        return getTableMetadata(carbondataTableHandle.getSchemaTableName());
+      Type spiType = CarbondataType2SpiMapper(cs.getDataType());
+      columnHandles.put(cs.getColumnName(),
+          new CarbondataColumnHandle(connectorId, cs.getColumnName(), spiType, index,
+              measure.getOrdinal(), cs.getColumnGroupId(), true, cs.getColumnGroupId(),
+              cs.getColumnUniqueId(), cs.isUseInvertedIndex()));
+      index++;
     }
 
-
-    public static Type CarbondataType2SpiMapper(DataType colType)
-    {
-        switch (colType)
-        {
-            case BOOLEAN:
-                return BooleanType.BOOLEAN;
-            case SHORT:
-                return SmallintType.SMALLINT;
-            case INT:
-                return IntegerType.INTEGER;
-            case LONG:
-                return BigintType.BIGINT;
-            case FLOAT:
-            case DOUBLE:
-                return DoubleType.DOUBLE;
-
-            case DECIMAL:
-                return DecimalType.createDecimalType();
-            case STRING:
-                return VarcharType.VARCHAR;
-            case DATE:
-                return DateType.DATE;
-            case TIMESTAMP:
-                return TimestampType.TIMESTAMP;
+    //should i cache it?
+    columnHandleMap = columnHandles.build();
+
+    return columnHandleMap;
+  }
+
+  @Override public ColumnMetadata getColumnMetadata(ConnectorSession session,
+      ConnectorTableHandle tableHandle, ColumnHandle columnHandle) {
+
+    checkType(tableHandle, CarbondataTableHandle.class, "tableHandle");
+    return checkType(columnHandle, CarbondataColumnHandle.class, "columnHandle")
+        .getColumnMetadata();
+  }
+
+  @Override
+  public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTableName tableName) {
+    //check tablename is valid
+    //schema is exist
+    //tables is exist
+
+    //CarbondataTable  get from jar
+    return new CarbondataTableHandle(connectorId, tableName);
+  }
+
+  @Override public List<ConnectorTableLayoutResult> getTableLayouts(ConnectorSession session,
+      ConnectorTableHandle table, Constraint<ColumnHandle> constraint,
+      Optional<Set<ColumnHandle>> desiredColumns) {
+    CarbondataTableHandle handle = checkType(table, CarbondataTableHandle.class, "table");
+    ConnectorTableLayout layout = new ConnectorTableLayout(
+        new CarbondataTableLayoutHandle(handle, constraint.getSummary()/*, constraint.getPredicateMap(),constraint.getFilterTuples()*/));
+    return ImmutableList.of(new ConnectorTableLayoutResult(layout, constraint.getSummary()));
+  }
+
+  @Override public ConnectorTableLayout getTableLayout(ConnectorSession session,
+      ConnectorTableLayoutHandle handle) {
+    return new ConnectorTableLayout(handle);
+  }
+
+  @Override public ConnectorTableMetadata getTableMetadata(ConnectorSession session,
+      ConnectorTableHandle table) {
+    return getTableMetadataInternal(table);
+  }
+
+  public ConnectorTableMetadata getTableMetadataInternal(ConnectorTableHandle table) {
+    CarbondataTableHandle carbondataTableHandle =
+        checkType(table, CarbondataTableHandle.class, "table");
+    checkArgument(carbondataTableHandle.getConnectorId().equals(connectorId),
+        "tableHandle is not for this connector");
+    return getTableMetadata(carbondataTableHandle.getSchemaTableName());
+  }
+
+  public static Type CarbondataType2SpiMapper(DataType colType) {
+    switch (colType) {
+      case BOOLEAN:
+        return BooleanType.BOOLEAN;
+      case SHORT:
+        return SmallintType.SMALLINT;
+      case INT:
+        return IntegerType.INTEGER;
+      case LONG:
+        return BigintType.BIGINT;
+      case FLOAT:
+      case DOUBLE:
+        return DoubleType.DOUBLE;
+
+      case DECIMAL:
+        return DecimalType.createDecimalType();
+      case STRING:
+        return VarcharType.VARCHAR;
+      case DATE:
+        return DateType.DATE;
+      case TIMESTAMP:
+        return TimestampType.TIMESTAMP;
 
             /*case DataType.MAP:
             case DataType.ARRAY:
             case DataType.STRUCT:
             case DataType.NULL:*/
 
-            default:
-                return VarcharType.VARCHAR;
-        }
+      default:
+        return VarcharType.VARCHAR;
     }
+  }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataModule.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataModule.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataModule.java
index b329678..0baa64a 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataModule.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataModule.java
@@ -38,46 +38,39 @@ import static java.util.Objects.requireNonNull;
 
 public class CarbondataModule implements Module {
 
-    private final String connectorId;
-    private final TypeManager typeManager;
+  private final String connectorId;
+  private final TypeManager typeManager;
 
-    public CarbondataModule(String connectorId, TypeManager typeManager)
-    {
-        this.connectorId = requireNonNull(connectorId, "connector id is null");
-        this.typeManager = requireNonNull(typeManager, "typeManager is null");
-    }
+  public CarbondataModule(String connectorId, TypeManager typeManager) {
+    this.connectorId = requireNonNull(connectorId, "connector id is null");
+    this.typeManager = requireNonNull(typeManager, "typeManager is null");
+  }
 
-    @Override
-    public void configure(Binder binder) {
-        binder.bind(TypeManager.class).toInstance(typeManager);
+  @Override public void configure(Binder binder) {
+    binder.bind(TypeManager.class).toInstance(typeManager);
 
-        binder.bind(CarbondataConnectorId.class).toInstance(new CarbondataConnectorId(connectorId));
-        binder.bind(CarbondataMetadata.class).in(Scopes.SINGLETON);
-        binder.bind(CarbonTableReader.class).in(Scopes.SINGLETON);
-        binder.bind(ConnectorSplitManager.class).to(CarbondataSplitManager.class).in(Scopes.SINGLETON);
-        binder.bind(ConnectorRecordSetProvider.class).to(CarbondataRecordSetProvider.class).in(Scopes.SINGLETON);
-        binder.bind(CarbondataHandleResolver.class).in(Scopes.SINGLETON);
-        configBinder(binder).bindConfig(CarbonTableConfig.class);
-    }
+    binder.bind(CarbondataConnectorId.class).toInstance(new CarbondataConnectorId(connectorId));
+    binder.bind(CarbondataMetadata.class).in(Scopes.SINGLETON);
+    binder.bind(CarbonTableReader.class).in(Scopes.SINGLETON);
+    binder.bind(ConnectorSplitManager.class).to(CarbondataSplitManager.class).in(Scopes.SINGLETON);
+    binder.bind(ConnectorRecordSetProvider.class).to(CarbondataRecordSetProvider.class)
+        .in(Scopes.SINGLETON);
+    binder.bind(CarbondataHandleResolver.class).in(Scopes.SINGLETON);
+    configBinder(binder).bindConfig(CarbonTableConfig.class);
+  }
 
-    public static final class TypeDeserializer
-            extends FromStringDeserializer<Type>
-    {
-        private final TypeManager typeManager;
+  public static final class TypeDeserializer extends FromStringDeserializer<Type> {
+    private final TypeManager typeManager;
 
-        @Inject
-        public TypeDeserializer(TypeManager typeManager)
-        {
-            super(Type.class);
-            this.typeManager = requireNonNull(typeManager, "typeManager is null");
-        }
+    @Inject public TypeDeserializer(TypeManager typeManager) {
+      super(Type.class);
+      this.typeManager = requireNonNull(typeManager, "typeManager is null");
+    }
 
-        @Override
-        protected Type _deserialize(String value, DeserializationContext context)
-        {
-            Type type = typeManager.getType(parseTypeSignature(value));
-            checkArgument(type != null, "Unknown type %s", value);
-            return type;
-        }
+    @Override protected Type _deserialize(String value, DeserializationContext context) {
+      Type type = typeManager.getType(parseTypeSignature(value));
+      checkArgument(type != null, "Unknown type %s", value);
+      return type;
     }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataPlugin.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataPlugin.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataPlugin.java
index 3bcfe4f..191f13b 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataPlugin.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataPlugin.java
@@ -24,13 +24,11 @@ import org.apache.carbondata.core.datastore.impl.FileFactory;
 
 public class CarbondataPlugin implements Plugin {
 
-    @Override
-    public Iterable<ConnectorFactory> getConnectorFactories()
-    {
-        return ImmutableList.of(new CarbondataConnectorFactory("carbondata", getClassLoader()));
-    }
+  @Override public Iterable<ConnectorFactory> getConnectorFactories() {
+    return ImmutableList.of(new CarbondataConnectorFactory("carbondata", getClassLoader()));
+  }
 
-    private static ClassLoader getClassLoader() {
-        return FileFactory.class.getClassLoader();
-    }
+  private static ClassLoader getClassLoader() {
+    return FileFactory.class.getClassLoader();
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordCursor.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordCursor.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordCursor.java
index 7d65efd..3314ac4 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordCursor.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordCursor.java
@@ -38,119 +38,107 @@ import static com.google.common.base.Preconditions.checkState;
 
 public class CarbondataRecordCursor implements RecordCursor {
 
-    private static final Logger log = Logger.get(CarbondataRecordCursor.class);
-    private final List<CarbondataColumnHandle> columnHandles;
-
-    private List<String> fields;
-    private CarbondataSplit split;
-    private CarbonIterator<Object[]> rowCursor;
-    private CarbonReadSupport<Object[]> readSupport;
-
-    private long totalBytes;
-    private long nanoStart;
-    private long nanoEnd;
-
-    public CarbondataRecordCursor(CarbonReadSupport<Object[]> readSupport, CarbonIterator<Object[]> carbonIterator, List<CarbondataColumnHandle> columnHandles, CarbondataSplit split) {
-        this.rowCursor = carbonIterator;
-        this.columnHandles = columnHandles;
-        this.readSupport = readSupport;
-        this.totalBytes = 0;
-    }
-
-
-    @Override
-    public long getTotalBytes() {
-        return totalBytes;
-    }
-
-    @Override
-    public long getCompletedBytes() {
-        return totalBytes;
-    }
-
-    @Override
-    public long getReadTimeNanos() {
-        return nanoStart > 0L ? (nanoEnd == 0 ? System.nanoTime() : nanoEnd) - nanoStart : 0L;
-    }
-
-    @Override
-    public Type getType(int field) {
-
-        checkArgument(field < columnHandles.size(), "Invalid field index");
-        return columnHandles.get(field).getColumnType();
-    }
+  private static final Logger log = Logger.get(CarbondataRecordCursor.class);
+  private final List<CarbondataColumnHandle> columnHandles;
 
-    @Override
-    public boolean advanceNextPosition() {
+  private List<String> fields;
+  private CarbondataSplit split;
+  private CarbonIterator<Object[]> rowCursor;
+  private CarbonReadSupport<Object[]> readSupport;
 
-        if (nanoStart == 0) {
-            nanoStart = System.nanoTime();
-        }
+  private long totalBytes;
+  private long nanoStart;
+  private long nanoEnd;
 
-        if(rowCursor.hasNext())
-        {
-            fields = Stream.of(readSupport.readRow(rowCursor.next())).map(a -> a.toString()).collect(Collectors.toList());
+  public CarbondataRecordCursor(CarbonReadSupport<Object[]> readSupport,
+      CarbonIterator<Object[]> carbonIterator, List<CarbondataColumnHandle> columnHandles,
+      CarbondataSplit split) {
+    this.rowCursor = carbonIterator;
+    this.columnHandles = columnHandles;
+    this.readSupport = readSupport;
+    this.totalBytes = 0;
+  }
 
-            totalBytes += fields.size();
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean getBoolean(int field) {
-        checkFieldType(field, BOOLEAN);
-        return Boolean.parseBoolean(getFieldValue(field));
-    }
+  @Override public long getTotalBytes() {
+    return totalBytes;
+  }
 
-    @Override
-    public long getLong(int field) {
-        String timeStr = getFieldValue(field);
-        Long milliSec = 0L;
+  @Override public long getCompletedBytes() {
+    return totalBytes;
+  }
 
-        //suppose the
-        return Math.round(Double.parseDouble(getFieldValue(field)));
-    }
+  @Override public long getReadTimeNanos() {
+    return nanoStart > 0L ? (nanoEnd == 0 ? System.nanoTime() : nanoEnd) - nanoStart : 0L;
+  }
 
-    @Override
-    public double getDouble(int field) {
-        checkFieldType(field, DOUBLE);
-        return Double.parseDouble(getFieldValue(field));
-    }
+  @Override public Type getType(int field) {
 
-    @Override
-    public Slice getSlice(int field) {
-        checkFieldType(field, VARCHAR);
-        return Slices.utf8Slice(getFieldValue(field));
-    }
+    checkArgument(field < columnHandles.size(), "Invalid field index");
+    return columnHandles.get(field).getColumnType();
+  }
 
-    @Override
-    public Object getObject(int field) {
-        return null;
-    }
-
-    @Override
-    public boolean isNull(int field) {
-        checkArgument(field < columnHandles.size(), "Invalid field index");
-        return Strings.isNullOrEmpty(getFieldValue(field));
-    }
-
-    String getFieldValue(int field)
-    {
-        checkState(fields != null, "Cursor has not been advanced yet");
-        return fields.get(field);
-    }
+  @Override public boolean advanceNextPosition() {
 
-    private void checkFieldType(int field, Type expected)
-    {
-        Type actual = getType(field);
-        checkArgument(actual.equals(expected), "Expected field %s to be type %s but is %s", field, expected, actual);
+    if (nanoStart == 0) {
+      nanoStart = System.nanoTime();
     }
 
-    @Override
-    public void close() {
-        nanoEnd = System.nanoTime();
+    if (rowCursor.hasNext()) {
+      fields = Stream.of(readSupport.readRow(rowCursor.next())).map(a -> a.toString())
+          .collect(Collectors.toList());
 
-        //todo  delete cache from readSupport
+      totalBytes += fields.size();
+      return true;
     }
+    return false;
+  }
+
+  @Override public boolean getBoolean(int field) {
+    checkFieldType(field, BOOLEAN);
+    return Boolean.parseBoolean(getFieldValue(field));
+  }
+
+  @Override public long getLong(int field) {
+    String timeStr = getFieldValue(field);
+    Long milliSec = 0L;
+
+    //suppose the
+    return Math.round(Double.parseDouble(getFieldValue(field)));
+  }
+
+  @Override public double getDouble(int field) {
+    checkFieldType(field, DOUBLE);
+    return Double.parseDouble(getFieldValue(field));
+  }
+
+  @Override public Slice getSlice(int field) {
+    checkFieldType(field, VARCHAR);
+    return Slices.utf8Slice(getFieldValue(field));
+  }
+
+  @Override public Object getObject(int field) {
+    return null;
+  }
+
+  @Override public boolean isNull(int field) {
+    checkArgument(field < columnHandles.size(), "Invalid field index");
+    return Strings.isNullOrEmpty(getFieldValue(field));
+  }
+
+  String getFieldValue(int field) {
+    checkState(fields != null, "Cursor has not been advanced yet");
+    return fields.get(field);
+  }
+
+  private void checkFieldType(int field, Type expected) {
+    Type actual = getType(field);
+    checkArgument(actual.equals(expected), "Expected field %s to be type %s but is %s", field,
+        expected, actual);
+  }
+
+  @Override public void close() {
+    nanoEnd = System.nanoTime();
+
+    //todo  delete cache from readSupport
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/27123300/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSet.java
----------------------------------------------------------------------
diff --git a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSet.java b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSet.java
index 737d2f1..af37728 100755
--- a/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSet.java
+++ b/integration/presto/src/main/java/org/apache/carbondata/presto/CarbondataRecordSet.java
@@ -43,74 +43,68 @@ import static org.apache.carbondata.presto.Types.checkType;
 
 public class CarbondataRecordSet implements RecordSet {
 
-    private CarbonTable carbonTable;
-    private TupleDomain<ColumnHandle> originalConstraint;
-    private Expression carbonConstraint;
-    private List<CarbondataColumnConstraint> rebuildConstraints;
-    private QueryModel queryModel;
-    private CarbondataSplit split;
-    private List<CarbondataColumnHandle> columns;
-    private QueryExecutor queryExecutor;
+  private CarbonTable carbonTable;
+  private TupleDomain<ColumnHandle> originalConstraint;
+  private Expression carbonConstraint;
+  private List<CarbondataColumnConstraint> rebuildConstraints;
+  private QueryModel queryModel;
+  private CarbondataSplit split;
+  private List<CarbondataColumnHandle> columns;
+  private QueryExecutor queryExecutor;
 
-    private CarbonReadSupport<Object[]> readSupport;
+  private CarbonReadSupport<Object[]> readSupport;
 
-    public CarbondataRecordSet(
-            CarbonTable carbonTable,
-            ConnectorSession session,
-            ConnectorSplit split,
-            List<CarbondataColumnHandle> columns,
-            QueryModel queryModel){
-        this.carbonTable = carbonTable;
-        this.split = checkType(split, CarbondataSplit.class, "connectorSplit");
-        this.originalConstraint = this.split.getConstraints();
-        this.rebuildConstraints = this.split.getRebuildConstraints();
-        this.queryModel = queryModel;
-        this.columns = columns;
-        this.readSupport = new DictionaryDecodeReadSupport();
-    }
+  public CarbondataRecordSet(CarbonTable carbonTable, ConnectorSession session,
+      ConnectorSplit split, List<CarbondataColumnHandle> columns, QueryModel queryModel) {
+    this.carbonTable = carbonTable;
+    this.split = checkType(split, CarbondataSplit.class, "connectorSplit");
+    this.originalConstraint = this.split.getConstraints();
+    this.rebuildConstraints = this.split.getRebuildConstraints();
+    this.queryModel = queryModel;
+    this.columns = columns;
+    this.readSupport = new DictionaryDecodeReadSupport();
+  }
 
-    //todo support later
-    private Expression parseConstraint2Expression(TupleDomain<ColumnHandle> constraints) {
-        return null;
-    }
+  //todo support later
+  private Expression parseConstraint2Expression(TupleDomain<ColumnHandle> constraints) {
+    return null;
+  }
 
-    @Override
-    public List<Type> getColumnTypes() {
-        return columns.stream().map(a -> a.getColumnType()).collect(Collectors.toList());
-    }
+  @Override public List<Type> getColumnTypes() {
+    return columns.stream().map(a -> a.getColumnType()).collect(Collectors.toList());
+  }
 
-    @Override
-    public RecordCursor cursor() {
-        List<TableBlockInfo> tableBlockInfoList = new ArrayList<TableBlockInfo>();
+  @Override public RecordCursor cursor() {
+    List<TableBlockInfo> tableBlockInfoList = new ArrayList<TableBlockInfo>();
 
-        //tableBlockInfoList.add(split.getLocalInputSplit().getTableBlockInfo());
+    //tableBlockInfoList.add(split.getLocalInputSplit().getTableBlockInfo());
         /*BlockletInfos blockletInfos = new BlockletInfos(split.getLocalInputSplit().getNumberOfBlocklets(), 0,
                 split.getLocalInputSplit().getNumberOfBlocklets());*/
-        tableBlockInfoList.add(
-                new TableBlockInfo(split.getLocalInputSplit().getPath().toString(),
-                        split.getLocalInputSplit().getStart(),
-                        split.getLocalInputSplit().getSegmentId(),
-                        split.getLocalInputSplit().getLocations().toArray(new String[0]),
-                        split.getLocalInputSplit().getLength(),
-                        //blockletInfos,
-                        ColumnarFormatVersion.valueOf(split.getLocalInputSplit().getVersion())));
-        queryModel.setTableBlockInfos(tableBlockInfoList);
+    tableBlockInfoList.add(new TableBlockInfo(split.getLocalInputSplit().getPath().toString(),
+        split.getLocalInputSplit().getStart(), split.getLocalInputSplit().getSegmentId(),
+        split.getLocalInputSplit().getLocations().toArray(new String[0]),
+        split.getLocalInputSplit().getLength(),
+        //blockletInfos,
+        ColumnarFormatVersion.valueOf(split.getLocalInputSplit().getVersion())));
+    queryModel.setTableBlockInfos(tableBlockInfoList);
 
-        queryExecutor = QueryExecutorFactory.getQueryExecutor(queryModel);
+    queryExecutor = QueryExecutorFactory.getQueryExecutor(queryModel);
 
-        //queryModel.setQueryId(queryModel.getQueryId() + "_" + split.getLocalInputSplit().getSegmentId());
-        try {
-            readSupport.initialize(queryModel.getProjectionColumns(), queryModel.getAbsoluteTableIdentifier());
-            CarbonIterator<Object[]> carbonIterator = new ChunkRowIterator((CarbonIterator<BatchResult>) queryExecutor.execute(queryModel));
-            RecordCursor rc = new CarbondataRecordCursor(readSupport, carbonIterator, columns, split);
-            return rc;
-        } catch (QueryExecutionException e) {
-            //throw new InterruptedException(e.getMessage());
-            System.out.println(e.getMessage());
-        } catch(Exception ex) {
-            System.out.println(ex.toString());
-        }
-        return null;
+    //queryModel.setQueryId(queryModel.getQueryId() + "_" + split.getLocalInputSplit().getSegmentId());
+    try {
+      readSupport
+          .initialize(queryModel.getProjectionColumns(), queryModel.getAbsoluteTableIdentifier());
+      CarbonIterator<Object[]> carbonIterator =
+          new ChunkRowIterator((CarbonIterator<BatchResult>) queryExecutor.execute(queryModel));
+      RecordCursor rc = new CarbondataRecordCursor(readSupport, carbonIterator, columns, split);
+      return rc;
+    } catch (QueryExecutionException e) {
+      //throw new InterruptedException(e.getMessage());
+      System.out.println(e.getMessage());
+    } catch (Exception ex) {
+      System.out.println(ex.toString());
     }
+    return null;
+  }
 }