Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 4469D200BEC for ; Thu, 15 Dec 2016 03:40:25 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 4313B160B2E; Thu, 15 Dec 2016 02:40:25 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8EEB6160B19 for ; Thu, 15 Dec 2016 03:40:24 +0100 (CET) Received: (qmail 54392 invoked by uid 500); 15 Dec 2016 02:40:23 -0000 Mailing-List: contact issues-help@carbondata.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@carbondata.incubator.apache.org Delivered-To: mailing list issues@carbondata.incubator.apache.org Received: (qmail 54383 invoked by uid 99); 15 Dec 2016 02:40:23 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Dec 2016 02:40:23 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 61D791800B7 for ; Thu, 15 Dec 2016 02:40:23 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -7.018 X-Spam-Level: X-Spam-Status: No, score=-7.018 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.999, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id Z1bIiwk8xwp2 for ; Thu, 15 Dec 2016 02:40:21 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 0B1405FB73 for ; Thu, 15 Dec 2016 02:40:19 +0000 (UTC) Received: (qmail 54326 invoked by uid 99); 15 Dec 2016 02:40:19 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Dec 2016 02:40:19 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0AA32F169E; Thu, 15 Dec 2016 02:40:19 +0000 (UTC) From: piaoyats To: issues@carbondata.incubator.apache.org Reply-To: issues@carbondata.incubator.apache.org References: In-Reply-To: Subject: [GitHub] incubator-carbondata pull request #412: [CARBONDATA-519]Added vector reader ... Content-Type: text/plain Message-Id: <20161215024019.0AA32F169E@git1-us-west.apache.org> Date: Thu, 15 Dec 2016 02:40:19 +0000 (UTC) archived-at: Thu, 15 Dec 2016 02:40:25 -0000 Github user piaoyats commented on a diff in the pull request: https://github.com/apache/incubator-carbondata/pull/412#discussion_r92534171 --- Diff: core/src/main/java/org/apache/carbondata/scan/executor/QueryExecutorFactory.java --- @@ -18,15 +18,69 @@ */ package org.apache.carbondata.scan.executor; +import java.util.List; + +import org.apache.carbondata.core.carbon.metadata.datatype.DataType; +import org.apache.carbondata.core.carbon.metadata.encoder.Encoding; import org.apache.carbondata.scan.executor.impl.DetailQueryExecutor; +import org.apache.carbondata.scan.executor.impl.VectorDetailQueryExecutor; +import org.apache.carbondata.scan.model.QueryDimension; +import org.apache.carbondata.scan.model.QueryMeasure; +import org.apache.carbondata.scan.model.QueryModel; +import org.apache.carbondata.scan.result.vector.CarbonColumnVector; +import org.apache.carbondata.scan.result.vector.CarbonColumnarBatch; +import org.apache.carbondata.scan.result.vector.impl.CarbonColumnVectorImpl; /** * Factory class to get the query executor from RDD * This will return the executor based on query type */ public class QueryExecutorFactory { - public static QueryExecutor getQueryExecutor() { - return new DetailQueryExecutor(); + public static QueryExecutor getQueryExecutor(QueryModel queryModel) { + if (queryModel.isVectorReader()) { + return new VectorDetailQueryExecutor(); + } else { + return new DetailQueryExecutor(); + } + } + + public static CarbonColumnarBatch createColuminarBatch(QueryModel queryModel) { + int batchSize = 10000; + List queryDimension = queryModel.getQueryDimension(); + List queryMeasures = queryModel.getQueryMeasures(); + CarbonColumnVector[] vectors = + new CarbonColumnVector[queryDimension.size() + queryMeasures.size()]; + for (int i = 0; i < queryDimension.size(); i++) { + QueryDimension dim = queryDimension.get(i); + if (dim.getDimension().hasEncoding(Encoding.DIRECT_DICTIONARY)) { + vectors[dim.getQueryOrder()] = new CarbonColumnVectorImpl(batchSize, DataType.LONG); + } else if (!dim.getDimension().hasEncoding(Encoding.DICTIONARY)) { + vectors[dim.getQueryOrder()] = + new CarbonColumnVectorImpl(batchSize, dim.getDimension().getDataType()); + } else if (dim.getDimension().isComplex()) { + vectors[dim.getQueryOrder()] = new CarbonColumnVectorImpl(batchSize, DataType.STRUCT); + } else { + vectors[dim.getQueryOrder()] = new CarbonColumnVectorImpl(batchSize, DataType.INT); + } + } + + for (int i = 0; i < queryMeasures.size(); i++) { + QueryMeasure msr = queryMeasures.get(i); + switch (msr.getMeasure().getDataType()) { + case SHORT: + case INT: + case LONG: + vectors[msr.getQueryOrder()] = + new CarbonColumnVectorImpl(batchSize, msr.getMeasure().getDataType()); + break; + case DECIMAL: + vectors[msr.getQueryOrder()] = new CarbonColumnVectorImpl(batchSize, DataType.DECIMAL); + break; + default: + vectors[msr.getQueryOrder()] = new CarbonColumnVectorImpl(batchSize, DataType.DOUBLE); + } --- End diff -- what is the difference between msr.getMeasure().getDataType() with DataType.Decimal and DataType.DOUBLE? Seems that case DECIMAL logic can merge witch LONG can we just use vectors[msr.getQueryOrder()] = new CarbonColumnVectorImpl(batchSize, msr.getMeasure().getDataType()); for all measure data type ? --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---