You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ra...@apache.org on 2018/02/05 15:02:57 UTC
[39/50] [abbrv] carbondata git commit: [CARBONDATA-2099] Refactor
query scan process to improve readability
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java
index 07989b2..d5c2609 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java
@@ -19,7 +19,13 @@ package org.apache.carbondata.core.metadata.schema.table;
import java.io.IOException;
import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import org.apache.carbondata.core.constants.CarbonCommonConstants;
import org.apache.carbondata.core.metadata.AbsoluteTableIdentifier;
@@ -33,7 +39,10 @@ import org.apache.carbondata.core.metadata.schema.table.column.CarbonDimension;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonImplicitDimension;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonMeasure;
import org.apache.carbondata.core.metadata.schema.table.column.ColumnSchema;
+import org.apache.carbondata.core.scan.model.QueryModel;
+import org.apache.carbondata.core.scan.model.QueryProjection;
import org.apache.carbondata.core.util.CarbonUtil;
+import org.apache.carbondata.core.util.DataTypeConverter;
import org.apache.carbondata.core.util.DataTypeUtil;
import org.apache.carbondata.core.util.path.CarbonTablePath;
@@ -136,10 +145,7 @@ public class CarbonTable implements Serializable {
/**
* During creation of TableInfo from hivemetastore the DataMapSchemas and the columns
* DataTypes are not converted to the appropriate child classes.
- *
* This method will cast the same to the appropriate classes
- *
- * @param tableInfo
*/
private static void updateTableInfo(TableInfo tableInfo) {
List<DataMapSchema> dataMapSchemas = new ArrayList<>();
@@ -153,8 +159,9 @@ public class CarbonTable implements Serializable {
}
tableInfo.setDataMapSchemaList(dataMapSchemas);
for (ColumnSchema columnSchema : tableInfo.getFactTable().getListOfColumns()) {
- columnSchema.setDataType(DataTypeUtil.valueOf(columnSchema.getDataType(),
- columnSchema.getPrecision(), columnSchema.getScale()));
+ columnSchema.setDataType(
+ DataTypeUtil.valueOf(
+ columnSchema.getDataType(), columnSchema.getPrecision(), columnSchema.getScale()));
}
List<DataMapSchema> childSchema = tableInfo.getDataMapSchemaList();
for (DataMapSchema dataMapSchema : childSchema) {
@@ -168,10 +175,11 @@ public class CarbonTable implements Serializable {
}
}
if (tableInfo.getFactTable().getBucketingInfo() != null) {
- for (ColumnSchema columnSchema : tableInfo.getFactTable()
- .getBucketingInfo().getListOfColumns()) {
- columnSchema.setDataType(DataTypeUtil.valueOf(columnSchema.getDataType(),
- columnSchema.getPrecision(), columnSchema.getScale()));
+ for (ColumnSchema columnSchema :
+ tableInfo.getFactTable().getBucketingInfo().getListOfColumns()) {
+ columnSchema.setDataType(
+ DataTypeUtil.valueOf(
+ columnSchema.getDataType(), columnSchema.getPrecision(), columnSchema.getScale()));
}
}
if (tableInfo.getFactTable().getPartitionInfo() != null) {
@@ -211,6 +219,7 @@ public class CarbonTable implements Serializable {
/**
* fill columns as per user provided order
+ *
* @param tableName
*/
private void fillCreateOrderColumn(String tableName) {
@@ -229,7 +238,6 @@ public class CarbonTable implements Serializable {
this.createOrderColumn.put(tableName, columns);
}
-
/**
* Fill allDimensions and allMeasures for carbon table
*
@@ -254,8 +262,8 @@ public class CarbonTable implements Serializable {
if (columnSchema.isDimensionColumn()) {
if (columnSchema.getNumberOfChild() > 0) {
CarbonDimension complexDimension =
- new CarbonDimension(columnSchema, dimensionOrdinal++,
- columnSchema.getSchemaOrdinal(), -1, -1, ++complexTypeOrdinal);
+ new CarbonDimension(columnSchema, dimensionOrdinal++, columnSchema.getSchemaOrdinal(),
+ -1, -1, ++complexTypeOrdinal);
complexDimension.initializeChildDimensionsList(columnSchema.getNumberOfChild());
allDimensions.add(complexDimension);
dimensionOrdinal =
@@ -268,9 +276,8 @@ public class CarbonTable implements Serializable {
this.numberOfSortColumns++;
}
if (!columnSchema.getEncodingList().contains(Encoding.DICTIONARY)) {
- CarbonDimension dimension =
- new CarbonDimension(columnSchema, dimensionOrdinal++,
- columnSchema.getSchemaOrdinal(), -1, -1, -1);
+ CarbonDimension dimension = new CarbonDimension(
+ columnSchema, dimensionOrdinal++, columnSchema.getSchemaOrdinal(), -1, -1, -1);
if (!columnSchema.isInvisible() && columnSchema.isSortColumn()) {
this.numberOfNoDictSortColumns++;
}
@@ -278,25 +285,25 @@ public class CarbonTable implements Serializable {
primitiveDimensions.add(dimension);
} else if (columnSchema.getEncodingList().contains(Encoding.DICTIONARY)
&& columnSchema.getColumnGroupId() == -1) {
- CarbonDimension dimension =
- new CarbonDimension(columnSchema, dimensionOrdinal++,
- columnSchema.getSchemaOrdinal(), keyOrdinal++, -1, -1);
+ CarbonDimension dimension = new CarbonDimension(
+ columnSchema, dimensionOrdinal++, columnSchema.getSchemaOrdinal(), keyOrdinal++,
+ -1, -1);
allDimensions.add(dimension);
primitiveDimensions.add(dimension);
} else {
columnGroupOrdinal =
previousColumnGroupId == columnSchema.getColumnGroupId() ? ++columnGroupOrdinal : 0;
previousColumnGroupId = columnSchema.getColumnGroupId();
- CarbonDimension dimension = new CarbonDimension(columnSchema, dimensionOrdinal++,
- columnSchema.getSchemaOrdinal(), keyOrdinal++,
+ CarbonDimension dimension = new CarbonDimension(
+ columnSchema, dimensionOrdinal++, columnSchema.getSchemaOrdinal(), keyOrdinal++,
columnGroupOrdinal, -1);
allDimensions.add(dimension);
primitiveDimensions.add(dimension);
}
}
} else {
- allMeasures.add(new CarbonMeasure(columnSchema, measureOrdinal++,
- columnSchema.getSchemaOrdinal()));
+ allMeasures.add(
+ new CarbonMeasure(columnSchema, measureOrdinal++, columnSchema.getSchemaOrdinal()));
}
}
fillVisibleDimensions(tableSchema.getTableName());
@@ -347,8 +354,8 @@ public class CarbonTable implements Serializable {
if (columnSchema.isDimensionColumn()) {
if (columnSchema.getNumberOfChild() > 0) {
CarbonDimension complexDimension =
- new CarbonDimension(columnSchema, dimensionOrdinal++,
- columnSchema.getSchemaOrdinal(), -1, -1, -1);
+ new CarbonDimension(columnSchema, dimensionOrdinal++, columnSchema.getSchemaOrdinal(),
+ -1, -1, -1);
complexDimension.initializeChildDimensionsList(columnSchema.getNumberOfChild());
parentDimension.getListOfChildDimensions().add(complexDimension);
dimensionOrdinal =
@@ -356,8 +363,8 @@ public class CarbonTable implements Serializable {
listOfColumns, complexDimension, primitiveDimensions);
} else {
CarbonDimension carbonDimension =
- new CarbonDimension(columnSchema, dimensionOrdinal++,
- columnSchema.getSchemaOrdinal(), -1, -1, -1);
+ new CarbonDimension(columnSchema, dimensionOrdinal++, columnSchema.getSchemaOrdinal(),
+ -1, -1, -1);
parentDimension.getListOfChildDimensions().add(carbonDimension);
primitiveDimensions.add(carbonDimension);
}
@@ -569,6 +576,7 @@ public class CarbonTable implements Serializable {
}
return null;
}
+
/**
* gets all children dimension for complex type
*
@@ -771,18 +779,13 @@ public class CarbonTable implements Serializable {
return dimensionOrdinalMax;
}
- public void setDimensionOrdinalMax(int dimensionOrdinalMax) {
- this.dimensionOrdinalMax = dimensionOrdinalMax;
- }
-
-
public boolean hasDataMapSchema() {
return hasDataMapSchema;
}
public boolean isChildDataMap() {
- return null != tableInfo.getParentRelationIdentifiers()
- && !tableInfo.getParentRelationIdentifiers().isEmpty();
+ return null != tableInfo.getParentRelationIdentifiers() &&
+ !tableInfo.getParentRelationIdentifiers().isEmpty();
}
/**
@@ -806,4 +809,63 @@ public class CarbonTable implements Serializable {
}
return dataSize + indexSize;
}
+
+ /**
+ * Create a new QueryModel with projection all columns in the table.
+ */
+ public QueryModel createQueryModelWithProjectAllColumns(DataTypeConverter converter) {
+ QueryProjection projection = new QueryProjection();
+
+ List<CarbonDimension> dimensions = getDimensionByTableName(getTableName());
+ for (int i = 0; i < dimensions.size(); i++) {
+ projection.addDimension(dimensions.get(i), i);
+ }
+ List<CarbonMeasure> measures = getMeasureByTableName(getTableName());
+ for (int i = 0; i < measures.size(); i++) {
+ projection.addMeasure(measures.get(i), i);
+ }
+ QueryModel model = QueryModel.newInstance(this);
+ model.setProjection(projection);
+ model.setConverter(converter);
+ return model;
+ }
+
+ /**
+ * Create a new QueryModel with specified projection
+ */
+ public QueryModel createQueryWithProjection(String[] projectionColumnNames,
+ DataTypeConverter converter) {
+ QueryProjection projection = createProjection(projectionColumnNames);
+ QueryModel queryModel = QueryModel.newInstance(this);
+ queryModel.setProjection(projection);
+ queryModel.setConverter(converter);
+ return queryModel;
+ }
+
+ private QueryProjection createProjection(String[] projectionColumnNames) {
+ String factTableName = getTableName();
+ QueryProjection projection = new QueryProjection();
+ // fill dimensions
+ // If columns are null, set all dimensions and measures
+ int i = 0;
+ if (projectionColumnNames != null) {
+ for (String projectionColumnName : projectionColumnNames) {
+ CarbonDimension dimension = getDimensionByName(factTableName, projectionColumnName);
+ if (dimension != null) {
+ projection.addDimension(dimension, i);
+ i++;
+ } else {
+ CarbonMeasure measure = getMeasureByName(factTableName, projectionColumnName);
+ if (measure == null) {
+ throw new RuntimeException(projectionColumnName +
+ " column not found in the table " + factTableName);
+ }
+ projection.addMeasure(measure, i);
+ i++;
+ }
+ }
+ }
+
+ return projection;
+ }
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/RelationIdentifier.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/RelationIdentifier.java b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/RelationIdentifier.java
index 20e539b..9a1dad1 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/RelationIdentifier.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/RelationIdentifier.java
@@ -26,18 +26,6 @@ import java.io.Serializable;
*/
public class RelationIdentifier implements Serializable, Writable {
- public void setDatabaseName(String databaseName) {
- this.databaseName = databaseName;
- }
-
- public void setTableName(String tableName) {
- this.tableName = tableName;
- }
-
- public void setTableId(String tableId) {
- this.tableId = tableId;
- }
-
private String databaseName;
private String tableName;
@@ -50,10 +38,6 @@ public class RelationIdentifier implements Serializable, Writable {
this.tableId = tableId;
}
- public RelationIdentifier() {
- this(null, null, null);
- }
-
public String getDatabaseName() {
return databaseName;
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/TableInfo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/TableInfo.java b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/TableInfo.java
index 4deafd4..0d796c7 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/TableInfo.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/TableInfo.java
@@ -24,7 +24,11 @@ import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.apache.carbondata.common.logging.LogService;
import org.apache.carbondata.common.logging.LogServiceFactory;
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonColumn.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonColumn.java b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonColumn.java
index 13e7d49..c888418 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonColumn.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonColumn.java
@@ -45,7 +45,7 @@ public class CarbonColumn implements Serializable {
/**
* order in which user has created table
*/
- protected int schemaOrdinal;
+ private int schemaOrdinal;
/**
* Column identifier
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonDimension.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonDimension.java b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonDimension.java
index b4c052f..d15cde7 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonDimension.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/column/CarbonDimension.java
@@ -122,18 +122,6 @@ public class CarbonDimension extends CarbonColumn {
return getEncoder().contains(Encoding.DICTIONARY);
}
- public int getNumDimensionsExpanded() {
- if (listOfChildDimensions == null) {
- // there is no child, return 1 column
- return 1;
- }
- int columnCount = 1;
- for (CarbonDimension dimension: listOfChildDimensions) {
- columnCount += dimension.getNumDimensionsExpanded();
- }
- return columnCount;
- }
-
/**
* @return is column participated in sorting or not
*/
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/mutate/CarbonUpdateUtil.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/mutate/CarbonUpdateUtil.java b/core/src/main/java/org/apache/carbondata/core/mutate/CarbonUpdateUtil.java
index 4b99307..920155b 100644
--- a/core/src/main/java/org/apache/carbondata/core/mutate/CarbonUpdateUtil.java
+++ b/core/src/main/java/org/apache/carbondata/core/mutate/CarbonUpdateUtil.java
@@ -125,8 +125,6 @@ public class CarbonUpdateUtil {
lockStatus = updateLock.lockWithRetries();
if (lockStatus) {
- AbsoluteTableIdentifier absoluteTableIdentifier = table.getAbsoluteTableIdentifier();
-
// read the existing file if present and update the same.
SegmentUpdateDetails[] oldDetails = segmentUpdateStatusManager
.getUpdateStatusDetails();
@@ -367,16 +365,6 @@ public class CarbonUpdateUtil {
.substring(0, completeBlockName.lastIndexOf(CarbonCommonConstants.HYPHEN));
}
- /**
- * returns segment id from segment name
- *
- * @param segmentName
- * @return
- */
- public static String getSegmentId(String segmentName) {
- return segmentName.split(CarbonCommonConstants.UNDERSCORE)[1];
- }
-
public static long getLatestTaskIdForSegment(String segmentId, CarbonTablePath tablePath) {
String segmentDirPath = tablePath.getCarbonDataDirectoryPath(segmentId);
@@ -501,7 +489,7 @@ public class CarbonUpdateUtil {
// aborted scenario.
invalidDeleteDeltaFiles = updateStatusManager
- .getDeleteDeltaInvalidFilesList(segment.getLoadName(), block, false,
+ .getDeleteDeltaInvalidFilesList(block, false,
allSegmentFiles, isAbortedFile);
for (CarbonFile invalidFile : invalidDeleteDeltaFiles) {
boolean doForceDelete = true;
@@ -511,7 +499,7 @@ public class CarbonUpdateUtil {
// case 1
if (CarbonUpdateUtil.isBlockInvalid(block.getSegmentStatus())) {
completeListOfDeleteDeltaFiles = updateStatusManager
- .getDeleteDeltaInvalidFilesList(segment.getLoadName(), block, true,
+ .getDeleteDeltaInvalidFilesList(block, true,
allSegmentFiles, isInvalidFile);
for (CarbonFile invalidFile : completeListOfDeleteDeltaFiles) {
@@ -519,7 +507,7 @@ public class CarbonUpdateUtil {
}
CarbonFile[] blockRelatedFiles = updateStatusManager
- .getAllBlockRelatedFiles(block.getBlockName(), allSegmentFiles,
+ .getAllBlockRelatedFiles(allSegmentFiles,
block.getActualBlockName());
// now for each invalid index file need to check the query execution time out
@@ -533,7 +521,7 @@ public class CarbonUpdateUtil {
} else {
invalidDeleteDeltaFiles = updateStatusManager
- .getDeleteDeltaInvalidFilesList(segment.getLoadName(), block, false,
+ .getDeleteDeltaInvalidFilesList(block, false,
allSegmentFiles, isInvalidFile);
for (CarbonFile invalidFile : invalidDeleteDeltaFiles) {
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockDetails.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockDetails.java b/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockDetails.java
index 4275cca..e5fdf6f 100644
--- a/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockDetails.java
+++ b/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockDetails.java
@@ -45,14 +45,6 @@ public class DeleteDeltaBlockDetails implements Serializable {
blockletDetails = new ArrayList<DeleteDeltaBlockletDetails>();
}
- public String getBlockName() {
- return blockName;
- }
-
- public void setBlockName(String blockName) {
- this.blockName = blockName;
- }
-
@Override public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || !(obj instanceof DeleteDeltaBlockDetails)) return false;
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockletDetails.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockletDetails.java b/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockletDetails.java
index 22785fa..6185134 100644
--- a/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockletDetails.java
+++ b/core/src/main/java/org/apache/carbondata/core/mutate/DeleteDeltaBlockletDetails.java
@@ -46,14 +46,6 @@ public class DeleteDeltaBlockletDetails implements Serializable {
return deletedRows.add(row);
}
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
public Integer getPageId() {
return pageId;
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/mutate/data/BlockletDeleteDeltaCacheLoader.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/mutate/data/BlockletDeleteDeltaCacheLoader.java b/core/src/main/java/org/apache/carbondata/core/mutate/data/BlockletDeleteDeltaCacheLoader.java
deleted file mode 100644
index 3c0dd4f..0000000
--- a/core/src/main/java/org/apache/carbondata/core/mutate/data/BlockletDeleteDeltaCacheLoader.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.carbondata.core.mutate.data;
-
-import java.util.Map;
-
-import org.apache.carbondata.common.logging.LogService;
-import org.apache.carbondata.common.logging.LogServiceFactory;
-import org.apache.carbondata.core.cache.update.BlockletLevelDeleteDeltaDataCache;
-import org.apache.carbondata.core.datastore.DataRefNode;
-import org.apache.carbondata.core.metadata.AbsoluteTableIdentifier;
-import org.apache.carbondata.core.statusmanager.SegmentUpdateStatusManager;
-
-/**
- * This class is responsible for loading delete delta file cache based on
- * blocklet id of a particular block
- */
-public class BlockletDeleteDeltaCacheLoader implements DeleteDeltaCacheLoaderIntf {
- private String blockletID;
- private DataRefNode blockletNode;
- private AbsoluteTableIdentifier absoluteIdentifier;
- private static final LogService LOGGER =
- LogServiceFactory.getLogService(BlockletDeleteDeltaCacheLoader.class.getName());
-
- public BlockletDeleteDeltaCacheLoader(String blockletID, DataRefNode blockletNode,
- AbsoluteTableIdentifier absoluteIdentifier) {
- this.blockletID = blockletID;
- this.blockletNode = blockletNode;
- this.absoluteIdentifier = absoluteIdentifier;
- }
-
- /**
- * This method will load the delete delta cache based on blocklet id of particular block with
- * the help of SegmentUpdateStatusManager.
- */
- public void loadDeleteDeltaFileDataToCache() {
- SegmentUpdateStatusManager segmentUpdateStatusManager =
- new SegmentUpdateStatusManager(absoluteIdentifier);
- Map<Integer, Integer[]> deleteDeltaFileData = null;
- BlockletLevelDeleteDeltaDataCache deleteDeltaDataCache = null;
- if (null == blockletNode.getDeleteDeltaDataCache()) {
- try {
- deleteDeltaFileData =
- segmentUpdateStatusManager.getDeleteDeltaDataFromAllFiles(blockletID);
- deleteDeltaDataCache = new BlockletLevelDeleteDeltaDataCache(deleteDeltaFileData,
- segmentUpdateStatusManager.getTimestampForRefreshCache(blockletID, null));
- } catch (Exception e) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Unable to retrieve delete delta files");
- }
- }
- } else {
- deleteDeltaDataCache = blockletNode.getDeleteDeltaDataCache();
- // if already cache is present then validate the cache using timestamp
- String cacheTimeStamp = segmentUpdateStatusManager
- .getTimestampForRefreshCache(blockletID, deleteDeltaDataCache.getCacheTimeStamp());
- if (null != cacheTimeStamp) {
- try {
- deleteDeltaFileData =
- segmentUpdateStatusManager.getDeleteDeltaDataFromAllFiles(blockletID);
- deleteDeltaDataCache = new BlockletLevelDeleteDeltaDataCache(deleteDeltaFileData,
- segmentUpdateStatusManager.getTimestampForRefreshCache(blockletID, cacheTimeStamp));
- } catch (Exception e) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("Unable to retrieve delete delta files");
- }
- }
- }
- }
- blockletNode.setDeleteDeltaDataCache(deleteDeltaDataCache);
- }
-}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/ScannedResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/ScannedResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/ScannedResultCollector.java
index b14660c..88b3065 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/ScannedResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/ScannedResultCollector.java
@@ -18,7 +18,7 @@ package org.apache.carbondata.core.scan.collector;
import java.util.List;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.scan.result.vector.CarbonColumnarBatch;
/**
@@ -27,17 +27,13 @@ import org.apache.carbondata.core.scan.result.vector.CarbonColumnarBatch;
public interface ScannedResultCollector {
/**
- * Below method will be used to aggregate the scanned result
- *
- * @param scannedResult scanned result
- * @return how many records was aggregated
+ * Return the aggregated scanned result in list of rows
*/
- List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize);
+ List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize);
/**
- * Collects data in columnar format.
- * @param scannedResult
- * @param columnarBatch
+ * Collects result and set it in the specified columnar batch
*/
- void collectVectorBatch(AbstractScannedResult scannedResult, CarbonColumnarBatch columnarBatch);
+ void collectResultInColumnarBatch(BlockletScannedResult scannedResult,
+ CarbonColumnarBatch columnarBatch);
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/AbstractScannedResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/AbstractScannedResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/AbstractScannedResultCollector.java
index dc78ac6..694271e 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/AbstractScannedResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/AbstractScannedResultCollector.java
@@ -19,8 +19,6 @@ package org.apache.carbondata.core.scan.collector.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
-import org.apache.carbondata.common.logging.LogService;
-import org.apache.carbondata.common.logging.LogServiceFactory;
import org.apache.carbondata.core.datastore.page.ColumnPage;
import org.apache.carbondata.core.metadata.datatype.DataType;
import org.apache.carbondata.core.metadata.datatype.DataTypes;
@@ -29,8 +27,8 @@ import org.apache.carbondata.core.scan.collector.ScannedResultCollector;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
import org.apache.carbondata.core.scan.executor.infos.DimensionInfo;
import org.apache.carbondata.core.scan.executor.infos.MeasureInfo;
-import org.apache.carbondata.core.scan.model.QueryMeasure;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.model.ProjectionMeasure;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.scan.result.vector.CarbonColumnarBatch;
import org.apache.carbondata.core.util.DataTypeUtil;
@@ -39,38 +37,35 @@ import org.apache.carbondata.core.util.DataTypeUtil;
*/
public abstract class AbstractScannedResultCollector implements ScannedResultCollector {
- private static final LogService LOGGER =
- LogServiceFactory.getLogService(AbstractScannedResultCollector.class.getName());
-
/**
* table block execution infos
*/
- protected BlockExecutionInfo tableBlockExecutionInfos;
+ BlockExecutionInfo executionInfo;
/**
* maintains the measure information like datatype, ordinal, measure existence
*/
- protected MeasureInfo measureInfo;
+ MeasureInfo measureInfo;
/**
* maintains the dimension information like datatype, ordinal, measure existence
*/
- protected DimensionInfo dimensionInfo;
+ DimensionInfo dimensionInfo;
- public AbstractScannedResultCollector(BlockExecutionInfo blockExecutionInfos) {
- this.tableBlockExecutionInfos = blockExecutionInfos;
+ AbstractScannedResultCollector(BlockExecutionInfo blockExecutionInfos) {
+ this.executionInfo = blockExecutionInfos;
measureInfo = blockExecutionInfos.getMeasureInfo();
dimensionInfo = blockExecutionInfos.getDimensionInfo();
}
protected void fillMeasureData(Object[] msrValues, int offset,
- AbstractScannedResult scannedResult) {
+ BlockletScannedResult scannedResult) {
int measureExistIndex = 0;
for (short i = 0; i < measureInfo.getMeasureDataTypes().length; i++) {
// if measure exists is block then pass measure column
// data chunk to the collector
if (measureInfo.getMeasureExists()[i]) {
- QueryMeasure queryMeasure = tableBlockExecutionInfos.getQueryMeasures()[measureExistIndex];
+ ProjectionMeasure queryMeasure = executionInfo.getProjectionMeasures()[measureExistIndex];
msrValues[i + offset] = getMeasureData(
scannedResult.getMeasureChunk(measureInfo.getMeasureOrdinals()[measureExistIndex]),
scannedResult.getCurrentRowId(), queryMeasure.getMeasure());
@@ -87,8 +82,7 @@ public abstract class AbstractScannedResultCollector implements ScannedResultCol
}
}
- protected Object getMeasureData(ColumnPage dataChunk, int index,
- CarbonMeasure carbonMeasure) {
+ Object getMeasureData(ColumnPage dataChunk, int index, CarbonMeasure carbonMeasure) {
if (!dataChunk.getNullBits().get(index)) {
DataType dataType = carbonMeasure.getDataType();
if (dataType == DataTypes.BOOLEAN) {
@@ -114,7 +108,8 @@ public abstract class AbstractScannedResultCollector implements ScannedResultCol
return null;
}
- @Override public void collectVectorBatch(AbstractScannedResult scannedResult,
+ @Override
+ public void collectResultInColumnarBatch(BlockletScannedResult scannedResult,
CarbonColumnarBatch columnarBatch) {
throw new UnsupportedOperationException("Works only for batch collectors");
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java
index cf6e6d6..4322034 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedResultCollector.java
@@ -29,9 +29,9 @@ import org.apache.carbondata.core.metadata.datatype.DataTypes;
import org.apache.carbondata.core.metadata.encoder.Encoding;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
import org.apache.carbondata.core.scan.filter.GenericQueryType;
-import org.apache.carbondata.core.scan.model.QueryDimension;
-import org.apache.carbondata.core.scan.model.QueryMeasure;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.model.ProjectionDimension;
+import org.apache.carbondata.core.scan.model.ProjectionMeasure;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.util.CarbonUtil;
import org.apache.carbondata.core.util.DataTypeUtil;
@@ -42,49 +42,50 @@ import org.apache.commons.lang3.ArrayUtils;
*/
public class DictionaryBasedResultCollector extends AbstractScannedResultCollector {
- protected QueryDimension[] queryDimensions;
+ protected ProjectionDimension[] queryDimensions;
- protected QueryMeasure[] queryMeasures;
+ protected ProjectionMeasure[] queryMeasures;
- protected DirectDictionaryGenerator[] directDictionaryGenerators;
+ private DirectDictionaryGenerator[] directDictionaryGenerators;
/**
* query order
*/
protected int[] order;
- protected int[] actualIndexInSurrogateKey;
+ private int[] actualIndexInSurrogateKey;
- protected boolean[] dictionaryEncodingArray;
+ boolean[] dictionaryEncodingArray;
- protected boolean[] directDictionaryEncodingArray;
+ boolean[] directDictionaryEncodingArray;
- protected boolean[] implictColumnArray;
+ private boolean[] implictColumnArray;
- protected boolean[] complexDataTypeArray;
+ private boolean[] complexDataTypeArray;
- protected int dictionaryColumnIndex;
- protected int noDictionaryColumnIndex;
- protected int complexTypeColumnIndex;
+ int dictionaryColumnIndex;
+ int noDictionaryColumnIndex;
+ int complexTypeColumnIndex;
- protected boolean isDimensionExists;
+ boolean isDimensionExists;
- protected Map<Integer, GenericQueryType> comlexDimensionInfoMap;
+ private Map<Integer, GenericQueryType> comlexDimensionInfoMap;
public DictionaryBasedResultCollector(BlockExecutionInfo blockExecutionInfos) {
super(blockExecutionInfos);
- queryDimensions = tableBlockExecutionInfos.getQueryDimensions();
- queryMeasures = tableBlockExecutionInfos.getQueryMeasures();
+ queryDimensions = executionInfo.getProjectionDimensions();
+ queryMeasures = executionInfo.getProjectionMeasures();
initDimensionAndMeasureIndexesForFillingData();
isDimensionExists = queryDimensions.length > 0;
- this.comlexDimensionInfoMap = tableBlockExecutionInfos.getComlexDimensionInfoMap();
+ this.comlexDimensionInfoMap = executionInfo.getComlexDimensionInfoMap();
}
/**
* This method will add a record both key and value to list object
* it will keep track of how many record is processed, to handle limit scenario
*/
- @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) {
+ @Override
+ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
// scan the record and add to list
List<Object[]> listBasedResult = new ArrayList<>(batchSize);
@@ -118,13 +119,13 @@ public class DictionaryBasedResultCollector extends AbstractScannedResultCollect
return listBasedResult;
}
- protected void fillDimensionData(AbstractScannedResult scannedResult, int[] surrogateResult,
+ void fillDimensionData(BlockletScannedResult scannedResult, int[] surrogateResult,
byte[][] noDictionaryKeys, byte[][] complexTypeKeyArray,
Map<Integer, GenericQueryType> comlexDimensionInfoMap, Object[] row, int i) {
if (!dictionaryEncodingArray[i]) {
if (implictColumnArray[i]) {
if (CarbonCommonConstants.CARBON_IMPLICIT_COLUMN_TUPLEID
- .equals(queryDimensions[i].getDimension().getColName())) {
+ .equals(queryDimensions[i].getColumnName())) {
row[order[i]] = DataTypeUtil.getDataBasedOnDataType(
scannedResult.getBlockletId() + CarbonCommonConstants.FILE_SEPARATOR + scannedResult
.getCurrentPageCounter() + CarbonCommonConstants.FILE_SEPARATOR + scannedResult
@@ -153,7 +154,7 @@ public class DictionaryBasedResultCollector extends AbstractScannedResultCollect
}
}
- protected void fillMeasureData(AbstractScannedResult scannedResult, Object[] row) {
+ void fillMeasureData(BlockletScannedResult scannedResult, Object[] row) {
if (measureInfo.getMeasureDataTypes().length > 0) {
Object[] msrValues = new Object[measureInfo.getMeasureDataTypes().length];
fillMeasureData(msrValues, 0, scannedResult);
@@ -163,7 +164,7 @@ public class DictionaryBasedResultCollector extends AbstractScannedResultCollect
}
}
- protected void initDimensionAndMeasureIndexesForFillingData() {
+ void initDimensionAndMeasureIndexesForFillingData() {
List<Integer> dictionaryIndexes = new ArrayList<Integer>();
for (int i = 0; i < queryDimensions.length; i++) {
if (queryDimensions[i].getDimension().hasEncoding(Encoding.DICTIONARY) || queryDimensions[i]
@@ -190,10 +191,10 @@ public class DictionaryBasedResultCollector extends AbstractScannedResultCollect
complexDataTypeArray = CarbonUtil.getComplexDataTypeArray(queryDimensions);
order = new int[queryDimensions.length + queryMeasures.length];
for (int i = 0; i < queryDimensions.length; i++) {
- order[i] = queryDimensions[i].getQueryOrder();
+ order[i] = queryDimensions[i].getOrdinal();
}
for (int i = 0; i < queryMeasures.length; i++) {
- order[i + queryDimensions.length] = queryMeasures[i].getQueryOrder();
+ order[i + queryDimensions.length] = queryMeasures[i].getOrdinal();
}
directDictionaryGenerators = new DirectDictionaryGenerator[queryDimensions.length];
for (int i = 0; i < queryDimensions.length; i++) {
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedVectorResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedVectorResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedVectorResultCollector.java
index 5e6c99a..e6cc817 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedVectorResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/DictionaryBasedVectorResultCollector.java
@@ -23,9 +23,9 @@ import java.util.List;
import org.apache.carbondata.core.keygenerator.directdictionary.DirectDictionaryKeyGeneratorFactory;
import org.apache.carbondata.core.metadata.encoder.Encoding;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
-import org.apache.carbondata.core.scan.model.QueryDimension;
-import org.apache.carbondata.core.scan.model.QueryMeasure;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.model.ProjectionDimension;
+import org.apache.carbondata.core.scan.model.ProjectionMeasure;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.scan.result.vector.CarbonColumnarBatch;
import org.apache.carbondata.core.scan.result.vector.ColumnVectorInfo;
import org.apache.carbondata.core.scan.result.vector.MeasureDataVectorProcessor;
@@ -35,35 +35,35 @@ import org.apache.carbondata.core.scan.result.vector.MeasureDataVectorProcessor;
*/
public class DictionaryBasedVectorResultCollector extends AbstractScannedResultCollector {
- protected QueryDimension[] queryDimensions;
+ protected ProjectionDimension[] queryDimensions;
- protected QueryMeasure[] queryMeasures;
+ protected ProjectionMeasure[] queryMeasures;
- protected ColumnVectorInfo[] dictionaryInfo;
+ private ColumnVectorInfo[] dictionaryInfo;
- protected ColumnVectorInfo[] noDictionaryInfo;
+ private ColumnVectorInfo[] noDictionaryInfo;
- protected ColumnVectorInfo[] complexInfo;
+ private ColumnVectorInfo[] complexInfo;
- protected ColumnVectorInfo[] measureColumnInfo;
+ private ColumnVectorInfo[] measureColumnInfo;
- protected ColumnVectorInfo[] allColumnInfo;
+ ColumnVectorInfo[] allColumnInfo;
- protected ColumnVectorInfo[] implictColumnInfo;
+ private ColumnVectorInfo[] implictColumnInfo;
public DictionaryBasedVectorResultCollector(BlockExecutionInfo blockExecutionInfos) {
super(blockExecutionInfos);
// initialize only if the current block is not a restructured block else the initialization
// will be taken care by RestructureBasedVectorResultCollector
if (!blockExecutionInfos.isRestructuredBlock()) {
- queryDimensions = tableBlockExecutionInfos.getQueryDimensions();
- queryMeasures = tableBlockExecutionInfos.getQueryMeasures();
+ queryDimensions = executionInfo.getProjectionDimensions();
+ queryMeasures = executionInfo.getProjectionMeasures();
allColumnInfo = new ColumnVectorInfo[queryDimensions.length + queryMeasures.length];
prepareDimensionAndMeasureColumnVectors();
}
}
- protected void prepareDimensionAndMeasureColumnVectors() {
+ void prepareDimensionAndMeasureColumnVectors() {
measureColumnInfo = new ColumnVectorInfo[queryMeasures.length];
List<ColumnVectorInfo> dictInfoList = new ArrayList<>();
List<ColumnVectorInfo> noDictInfoList = new ArrayList<>();
@@ -78,13 +78,13 @@ public class DictionaryBasedVectorResultCollector extends AbstractScannedResultC
implictColumnList.add(columnVectorInfo);
columnVectorInfo.dimension = queryDimensions[i];
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
- allColumnInfo[queryDimensions[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
} else if (!queryDimensions[i].getDimension().hasEncoding(Encoding.DICTIONARY)) {
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
noDictInfoList.add(columnVectorInfo);
columnVectorInfo.dimension = queryDimensions[i];
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
- allColumnInfo[queryDimensions[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
} else if (queryDimensions[i].getDimension().hasEncoding(Encoding.DIRECT_DICTIONARY)) {
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
dictInfoList.add(columnVectorInfo);
@@ -92,21 +92,21 @@ public class DictionaryBasedVectorResultCollector extends AbstractScannedResultC
columnVectorInfo.directDictionaryGenerator = DirectDictionaryKeyGeneratorFactory
.getDirectDictionaryGenerator(queryDimensions[i].getDimension().getDataType());
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
- allColumnInfo[queryDimensions[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
} else if (queryDimensions[i].getDimension().isComplex()) {
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
complexList.add(columnVectorInfo);
columnVectorInfo.dimension = queryDimensions[i];
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
columnVectorInfo.genericQueryType =
- tableBlockExecutionInfos.getComlexDimensionInfoMap().get(columnVectorInfo.ordinal);
- allColumnInfo[queryDimensions[i].getQueryOrder()] = columnVectorInfo;
+ executionInfo.getComlexDimensionInfoMap().get(columnVectorInfo.ordinal);
+ allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
} else {
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
dictInfoList.add(columnVectorInfo);
columnVectorInfo.dimension = queryDimensions[i];
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
- allColumnInfo[queryDimensions[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
}
}
for (int i = 0; i < queryMeasures.length; i++) {
@@ -116,7 +116,7 @@ public class DictionaryBasedVectorResultCollector extends AbstractScannedResultC
columnVectorInfo.ordinal = queryMeasures[i].getMeasure().getOrdinal();
columnVectorInfo.measure = queryMeasures[i];
this.measureColumnInfo[i] = columnVectorInfo;
- allColumnInfo[queryMeasures[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryMeasures[i].getOrdinal()] = columnVectorInfo;
}
dictionaryInfo = dictInfoList.toArray(new ColumnVectorInfo[dictInfoList.size()]);
noDictionaryInfo = noDictInfoList.toArray(new ColumnVectorInfo[noDictInfoList.size()]);
@@ -126,11 +126,13 @@ public class DictionaryBasedVectorResultCollector extends AbstractScannedResultC
Arrays.sort(complexInfo);
}
- @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) {
- throw new UnsupportedOperationException("collectData is not supported here");
+ @Override
+ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
+ throw new UnsupportedOperationException("collectResultInRow is not supported here");
}
- @Override public void collectVectorBatch(AbstractScannedResult scannedResult,
+ @Override
+ public void collectResultInColumnarBatch(BlockletScannedResult scannedResult,
CarbonColumnarBatch columnarBatch) {
int numberOfPages = scannedResult.numberOfpages();
int filteredRows = 0;
@@ -150,14 +152,15 @@ public class DictionaryBasedVectorResultCollector extends AbstractScannedResultC
return;
}
fillColumnVectorDetails(columnarBatch, rowCounter, requiredRows);
- filteredRows = scannedResult
- .markFilteredRows(columnarBatch, rowCounter, requiredRows, columnarBatch.getRowCounter());
- scanAndFillResult(scannedResult, columnarBatch, rowCounter, availableRows, requiredRows);
+ filteredRows = scannedResult.markFilteredRows(
+ columnarBatch, rowCounter, requiredRows, columnarBatch.getRowCounter());
+ fillResultToColumnarBatch(
+ scannedResult, columnarBatch, rowCounter, availableRows, requiredRows);
columnarBatch.setActualSize(columnarBatch.getActualSize() + requiredRows - filteredRows);
}
}
- protected void scanAndFillResult(AbstractScannedResult scannedResult,
+ void fillResultToColumnarBatch(BlockletScannedResult scannedResult,
CarbonColumnarBatch columnarBatch, int rowCounter, int availableRows, int requiredRows) {
scannedResult.fillColumnarDictionaryBatch(dictionaryInfo);
scannedResult.fillColumnarNoDictionaryBatch(noDictionaryInfo);
@@ -174,8 +177,8 @@ public class DictionaryBasedVectorResultCollector extends AbstractScannedResultC
columnarBatch.setRowCounter(columnarBatch.getRowCounter() + requiredRows);
}
- protected void fillColumnVectorDetails(CarbonColumnarBatch columnarBatch, int rowCounter,
- int requiredRows) {
+ void fillColumnVectorDetails(CarbonColumnarBatch columnarBatch, int rowCounter, int requiredRows)
+ {
for (int i = 0; i < allColumnInfo.length; i++) {
allColumnInfo[i].size = requiredRows;
allColumnInfo[i].offset = rowCounter;
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RawBasedResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RawBasedResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RawBasedResultCollector.java
index a09676a..0780675 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RawBasedResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RawBasedResultCollector.java
@@ -16,14 +16,12 @@
*/
package org.apache.carbondata.core.scan.collector.impl;
-import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
-import org.apache.carbondata.core.constants.CarbonCommonConstants;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
-import org.apache.carbondata.core.scan.model.QueryMeasure;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.model.ProjectionMeasure;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.scan.wrappers.ByteArrayWrapper;
/**
@@ -31,15 +29,11 @@ import org.apache.carbondata.core.scan.wrappers.ByteArrayWrapper;
*/
public class RawBasedResultCollector extends AbstractScannedResultCollector {
- protected ByteArrayWrapper wrapper;
+ byte[] dictionaryKeyArray;
- protected byte[] dictionaryKeyArray;
+ byte[][] noDictionaryKeyArray;
- protected byte[][] noDictionaryKeyArray;
-
- protected byte[][] complexTypeKeyArray;
-
- protected byte[] implicitColumnByteArray;
+ private byte[][] complexTypeKeyArray;
public RawBasedResultCollector(BlockExecutionInfo blockExecutionInfos) {
super(blockExecutionInfos);
@@ -49,9 +43,10 @@ public class RawBasedResultCollector extends AbstractScannedResultCollector {
* This method will add a record both key and value to list object
* it will keep track of how many record is processed, to handle limit scenario
*/
- @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) {
+ @Override
+ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
List<Object[]> listBasedResult = new ArrayList<>(batchSize);
- QueryMeasure[] queryMeasures = tableBlockExecutionInfos.getQueryMeasures();
+ ProjectionMeasure[] queryMeasures = executionInfo.getProjectionMeasures();
// scan the record and add to list
int rowCounter = 0;
while (scannedResult.hasNext() && rowCounter < batchSize) {
@@ -65,24 +60,21 @@ public class RawBasedResultCollector extends AbstractScannedResultCollector {
return listBasedResult;
}
- protected void prepareRow(AbstractScannedResult scannedResult, List<Object[]> listBasedResult,
- QueryMeasure[] queryMeasures) {
+ void prepareRow(BlockletScannedResult scannedResult, List<Object[]> listBasedResult,
+ ProjectionMeasure[] queryMeasures) {
Object[] row = new Object[1 + queryMeasures.length];
- wrapper = new ByteArrayWrapper();
+ ByteArrayWrapper wrapper = new ByteArrayWrapper();
wrapper.setDictionaryKey(dictionaryKeyArray);
wrapper.setNoDictionaryKeys(noDictionaryKeyArray);
wrapper.setComplexTypesKeys(complexTypeKeyArray);
- wrapper.setImplicitColumnByteArray(implicitColumnByteArray);
row[0] = wrapper;
fillMeasureData(row, 1, scannedResult);
listBasedResult.add(row);
}
- protected void scanResultAndGetData(AbstractScannedResult scannedResult) {
+ void scanResultAndGetData(BlockletScannedResult scannedResult) {
dictionaryKeyArray = scannedResult.getDictionaryKeyArray();
noDictionaryKeyArray = scannedResult.getNoDictionaryKeyArray();
complexTypeKeyArray = scannedResult.getComplexTypeKeyArray();
- implicitColumnByteArray = scannedResult.getBlockletId()
- .getBytes(Charset.forName(CarbonCommonConstants.DEFAULT_CHARSET));
}
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedDictionaryResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedDictionaryResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedDictionaryResultCollector.java
index 296d9a6..8b42a4a 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedDictionaryResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedDictionaryResultCollector.java
@@ -23,8 +23,8 @@ import java.util.Map;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
import org.apache.carbondata.core.scan.executor.util.RestructureUtil;
import org.apache.carbondata.core.scan.filter.GenericQueryType;
-import org.apache.carbondata.core.scan.model.QueryMeasure;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.model.ProjectionMeasure;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
/**
* class for handling restructure scenarios for filling result
@@ -35,8 +35,8 @@ public class RestructureBasedDictionaryResultCollector extends DictionaryBasedRe
public RestructureBasedDictionaryResultCollector(BlockExecutionInfo blockExecutionInfos) {
super(blockExecutionInfos);
- queryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
- queryMeasures = tableBlockExecutionInfos.getActualQueryMeasures();
+ queryDimensions = executionInfo.getActualQueryDimensions();
+ queryMeasures = executionInfo.getActualQueryMeasures();
measureDefaultValues = new Object[queryMeasures.length];
fillMeasureDefaultValues();
initDimensionAndMeasureIndexesForFillingData();
@@ -61,7 +61,8 @@ public class RestructureBasedDictionaryResultCollector extends DictionaryBasedRe
* This method will add a record both key and value to list object
* it will keep track of how many record is processed, to handle limit scenario
*/
- @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) {
+ @Override
+ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
// scan the record and add to list
List<Object[]> listBasedResult = new ArrayList<>(batchSize);
int rowCounter = 0;
@@ -69,7 +70,7 @@ public class RestructureBasedDictionaryResultCollector extends DictionaryBasedRe
byte[][] noDictionaryKeys;
byte[][] complexTypeKeyArray;
Map<Integer, GenericQueryType> comlexDimensionInfoMap =
- tableBlockExecutionInfos.getComlexDimensionInfoMap();
+ executionInfo.getComlexDimensionInfoMap();
while (scannedResult.hasNext() && rowCounter < batchSize) {
Object[] row = new Object[queryDimensions.length + queryMeasures.length];
if (isDimensionExists) {
@@ -107,13 +108,13 @@ public class RestructureBasedDictionaryResultCollector extends DictionaryBasedRe
}
protected void fillMeasureData(Object[] msrValues, int offset,
- AbstractScannedResult scannedResult) {
+ BlockletScannedResult scannedResult) {
int measureExistIndex = 0;
for (short i = 0; i < measureInfo.getMeasureDataTypes().length; i++) {
// if measure exists is block then pass measure column
// data chunk to the collector
if (measureInfo.getMeasureExists()[i]) {
- QueryMeasure queryMeasure = tableBlockExecutionInfos.getQueryMeasures()[measureExistIndex];
+ ProjectionMeasure queryMeasure = executionInfo.getProjectionMeasures()[measureExistIndex];
msrValues[i + offset] = getMeasureData(
scannedResult.getMeasureChunk(measureInfo.getMeasureOrdinals()[measureExistIndex]),
scannedResult.getCurrentRowId(), queryMeasure.getMeasure());
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedRawResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedRawResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedRawResultCollector.java
index b08a1d4..6544a75 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedRawResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedRawResultCollector.java
@@ -30,9 +30,9 @@ import org.apache.carbondata.core.metadata.datatype.DataTypes;
import org.apache.carbondata.core.metadata.encoder.Encoding;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonDimension;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
-import org.apache.carbondata.core.scan.model.QueryDimension;
-import org.apache.carbondata.core.scan.model.QueryMeasure;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.model.ProjectionDimension;
+import org.apache.carbondata.core.scan.model.ProjectionMeasure;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.util.CarbonUtil;
import org.apache.commons.lang3.ArrayUtils;
@@ -70,15 +70,15 @@ public class RestructureBasedRawResultCollector extends RawBasedResultCollector
*/
private void initRestructuredKeyGenerator() {
SegmentProperties segmentProperties =
- tableBlockExecutionInfos.getDataBlock().getSegmentProperties();
- QueryDimension[] queryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
+ executionInfo.getDataBlock().getSegmentProperties();
+ ProjectionDimension[] queryDimensions = executionInfo.getActualQueryDimensions();
List<Integer> updatedColumnCardinality = new ArrayList<>(queryDimensions.length);
List<Integer> updatedDimensionPartitioner = new ArrayList<>(queryDimensions.length);
- int[] dictionaryColumnBlockIndex = tableBlockExecutionInfos.getDictionaryColumnBlockIndex();
+ int[] dictionaryColumnBlockIndex = executionInfo.getDictionaryColumnChunkIndex();
int dimCounterInCurrentBlock = 0;
for (int i = 0; i < queryDimensions.length; i++) {
if (queryDimensions[i].getDimension().hasEncoding(Encoding.DICTIONARY)) {
- if (tableBlockExecutionInfos.getDimensionInfo().getDimensionExists()[i]) {
+ if (executionInfo.getDimensionInfo().getDimensionExists()[i]) {
// get the dictionary key ordinal as column cardinality in segment properties
// will only be for dictionary encoded columns
CarbonDimension currentBlockDimension = segmentProperties.getDimensions()
@@ -124,8 +124,8 @@ public class RestructureBasedRawResultCollector extends RawBasedResultCollector
*/
private void initCurrentBlockKeyGenerator() {
SegmentProperties segmentProperties =
- tableBlockExecutionInfos.getDataBlock().getSegmentProperties();
- int[] dictionaryColumnBlockIndex = tableBlockExecutionInfos.getDictionaryColumnBlockIndex();
+ executionInfo.getDataBlock().getSegmentProperties();
+ int[] dictionaryColumnBlockIndex = executionInfo.getDictionaryColumnChunkIndex();
int[] updatedColumnCardinality = new int[dictionaryColumnBlockIndex.length];
int[] updatedDimensionPartitioner = new int[dictionaryColumnBlockIndex.length];
for (int i = 0; i < dictionaryColumnBlockIndex.length; i++) {
@@ -149,9 +149,10 @@ public class RestructureBasedRawResultCollector extends RawBasedResultCollector
* This method will add a record both key and value to list object
* it will keep track of how many record is processed, to handle limit scenario
*/
- @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) {
+ @Override
+ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
List<Object[]> listBasedResult = new ArrayList<>(batchSize);
- QueryMeasure[] queryMeasures = tableBlockExecutionInfos.getActualQueryMeasures();
+ ProjectionMeasure[] queryMeasures = executionInfo.getActualQueryMeasures();
// scan the record and add to list
int rowCounter = 0;
while (scannedResult.hasNext() && rowCounter < batchSize) {
@@ -179,7 +180,7 @@ public class RestructureBasedRawResultCollector extends RawBasedResultCollector
* @return
*/
private byte[] fillDictionaryKeyArrayWithLatestSchema(byte[] dictionaryKeyArray) {
- QueryDimension[] actualQueryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
+ ProjectionDimension[] actualQueryDimensions = executionInfo.getActualQueryDimensions();
int newKeyArrayLength = dimensionInfo.getNewDictionaryColumnCount();
long[] keyArray = null;
if (null != updatedCurrentBlockKeyGenerator) {
@@ -222,7 +223,7 @@ public class RestructureBasedRawResultCollector extends RawBasedResultCollector
* @return
*/
private byte[][] fillNoDictionaryKeyArrayWithLatestSchema(byte[][] noDictionaryKeyArray) {
- QueryDimension[] actualQueryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
+ ProjectionDimension[] actualQueryDimensions = executionInfo.getActualQueryDimensions();
byte[][] noDictionaryKeyArrayWithNewlyAddedColumns =
new byte[noDictionaryKeyArray.length + dimensionInfo.getNewNoDictionaryColumnCount()][];
int existingColumnValueIndex = 0;
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java
index 1e29e98..c54994a 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/collector/impl/RestructureBasedVectorResultCollector.java
@@ -26,7 +26,7 @@ import org.apache.carbondata.core.metadata.schema.table.column.CarbonDimension;
import org.apache.carbondata.core.metadata.schema.table.column.CarbonMeasure;
import org.apache.carbondata.core.scan.executor.infos.BlockExecutionInfo;
import org.apache.carbondata.core.scan.executor.util.RestructureUtil;
-import org.apache.carbondata.core.scan.result.AbstractScannedResult;
+import org.apache.carbondata.core.scan.result.BlockletScannedResult;
import org.apache.carbondata.core.scan.result.vector.CarbonColumnVector;
import org.apache.carbondata.core.scan.result.vector.CarbonColumnarBatch;
import org.apache.carbondata.core.scan.result.vector.ColumnVectorInfo;
@@ -43,8 +43,8 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
public RestructureBasedVectorResultCollector(BlockExecutionInfo blockExecutionInfos) {
super(blockExecutionInfos);
- queryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
- queryMeasures = tableBlockExecutionInfos.getActualQueryMeasures();
+ queryDimensions = executionInfo.getActualQueryDimensions();
+ queryMeasures = executionInfo.getActualQueryMeasures();
measureDefaultValues = new Object[queryMeasures.length];
allColumnInfo = new ColumnVectorInfo[queryDimensions.length + queryMeasures.length];
createVectorForNewlyAddedDimensions();
@@ -66,7 +66,7 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
columnVectorInfo.directDictionaryGenerator = DirectDictionaryKeyGeneratorFactory
.getDirectDictionaryGenerator(queryDimensions[i].getDimension().getDataType());
}
- allColumnInfo[queryDimensions[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
}
}
}
@@ -79,7 +79,7 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
if (!measureInfo.getMeasureExists()[i]) {
// add a dummy column vector result collector object
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
- allColumnInfo[queryMeasures[i].getQueryOrder()] = columnVectorInfo;
+ allColumnInfo[queryMeasures[i].getOrdinal()] = columnVectorInfo;
columnVectorInfo.measure = queryMeasures[i];
measureDefaultValues[i] = getMeasureDefaultValue(queryMeasures[i].getMeasure());
}
@@ -98,11 +98,13 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
- @Override public List<Object[]> collectData(AbstractScannedResult scannedResult, int batchSize) {
- throw new UnsupportedOperationException("collectData is not supported here");
+ @Override
+ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
+ throw new UnsupportedOperationException("collectResultInRow is not supported here");
}
- @Override public void collectVectorBatch(AbstractScannedResult scannedResult,
+ @Override
+ public void collectResultInColumnarBatch(BlockletScannedResult scannedResult,
CarbonColumnarBatch columnarBatch) {
int numberOfPages = scannedResult.numberOfpages();
while (scannedResult.getCurrentPageCounter() < numberOfPages) {
@@ -125,7 +127,8 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
fillDataForNonExistingDimensions();
fillDataForNonExistingMeasures();
// fill existing dimensions and measures data
- scanAndFillResult(scannedResult, columnarBatch, rowCounter, availableRows, requiredRows);
+ fillResultToColumnarBatch(
+ scannedResult, columnarBatch, rowCounter, availableRows, requiredRows);
columnarBatch.setActualSize(columnarBatch.getActualSize() + requiredRows - filteredRows);
}
}
@@ -134,11 +137,11 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
* This method will fill the default values of non existing dimensions in the current block
*/
private void fillDataForNonExistingDimensions() {
- for (int i = 0; i < tableBlockExecutionInfos.getActualQueryDimensions().length; i++) {
+ for (int i = 0; i < executionInfo.getActualQueryDimensions().length; i++) {
if (!dimensionInfo.getDimensionExists()[i]) {
- int queryOrder = tableBlockExecutionInfos.getActualQueryDimensions()[i].getQueryOrder();
+ int queryOrder = executionInfo.getActualQueryDimensions()[i].getOrdinal();
CarbonDimension dimension =
- tableBlockExecutionInfos.getActualQueryDimensions()[i].getDimension();
+ executionInfo.getActualQueryDimensions()[i].getDimension();
if (dimension.hasEncoding(Encoding.DIRECT_DICTIONARY)) {
// fill direct dictionary column data
fillDirectDictionaryData(allColumnInfo[queryOrder].vector, allColumnInfo[queryOrder],
@@ -216,10 +219,10 @@ public class RestructureBasedVectorResultCollector extends DictionaryBasedVector
* This method will fill the default values of non existing measures in the current block
*/
private void fillDataForNonExistingMeasures() {
- for (int i = 0; i < tableBlockExecutionInfos.getActualQueryMeasures().length; i++) {
+ for (int i = 0; i < executionInfo.getActualQueryMeasures().length; i++) {
if (!measureInfo.getMeasureExists()[i]) {
- int queryOrder = tableBlockExecutionInfos.getActualQueryMeasures()[i].getQueryOrder();
- CarbonMeasure measure = tableBlockExecutionInfos.getActualQueryMeasures()[i].getMeasure();
+ int queryOrder = executionInfo.getActualQueryMeasures()[i].getOrdinal();
+ CarbonMeasure measure = executionInfo.getActualQueryMeasures()[i].getMeasure();
ColumnVectorInfo columnVectorInfo = allColumnInfo[queryOrder];
CarbonColumnVector vector = columnVectorInfo.vector;
Object defaultValue = measureDefaultValues[i];
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ArrayQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ArrayQueryType.java b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ArrayQueryType.java
index 1fcccca..30dd1dd 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ArrayQueryType.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ArrayQueryType.java
@@ -23,7 +23,7 @@ import java.nio.ByteBuffer;
import org.apache.carbondata.core.datastore.chunk.impl.DimensionRawColumnChunk;
import org.apache.carbondata.core.scan.filter.GenericQueryType;
-import org.apache.carbondata.core.scan.processor.BlocksChunkHolder;
+import org.apache.carbondata.core.scan.processor.RawBlockletColumnChunks;
import org.apache.spark.sql.catalyst.util.GenericArrayData;
import org.apache.spark.sql.types.ArrayType;
@@ -86,7 +86,7 @@ public class ArrayQueryType extends ComplexQueryType implements GenericQueryType
return new ArrayType(null, true);
}
- @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder)
+ @Override public void fillRequiredBlockData(RawBlockletColumnChunks blockChunkHolder)
throws IOException {
readBlockDataChunk(blockChunkHolder);
children.fillRequiredBlockData(blockChunkHolder);
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ComplexQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ComplexQueryType.java b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ComplexQueryType.java
index ee43a10..98f0715 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ComplexQueryType.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/ComplexQueryType.java
@@ -20,7 +20,7 @@ package org.apache.carbondata.core.scan.complextypes;
import java.io.IOException;
import org.apache.carbondata.core.datastore.chunk.impl.DimensionRawColumnChunk;
-import org.apache.carbondata.core.scan.processor.BlocksChunkHolder;
+import org.apache.carbondata.core.scan.processor.RawBlockletColumnChunks;
public class ComplexQueryType {
protected String name;
@@ -42,7 +42,7 @@ public class ComplexQueryType {
protected byte[] copyBlockDataChunk(DimensionRawColumnChunk[] rawColumnChunks,
int rowNumber, int pageNumber) {
byte[] data =
- rawColumnChunks[blockIndex].convertToDimColDataChunk(pageNumber).getChunkData(rowNumber);
+ rawColumnChunks[blockIndex].decodeColumnPage(pageNumber).getChunkData(rowNumber);
byte[] output = new byte[data.length];
System.arraycopy(data, 0, output, 0, output.length);
return output;
@@ -51,10 +51,10 @@ public class ComplexQueryType {
/*
* This method will read the block data chunk from the respective block
*/
- protected void readBlockDataChunk(BlocksChunkHolder blockChunkHolder) throws IOException {
- if (null == blockChunkHolder.getDimensionRawDataChunk()[blockIndex]) {
- blockChunkHolder.getDimensionRawDataChunk()[blockIndex] = blockChunkHolder.getDataBlock()
- .getDimensionChunk(blockChunkHolder.getFileReader(), blockIndex);
+ protected void readBlockDataChunk(RawBlockletColumnChunks blockChunkHolder) throws IOException {
+ if (null == blockChunkHolder.getDimensionRawColumnChunks()[blockIndex]) {
+ blockChunkHolder.getDimensionRawColumnChunks()[blockIndex] = blockChunkHolder.getDataBlock()
+ .readDimensionChunk(blockChunkHolder.getFileReader(), blockIndex);
}
}
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/complextypes/PrimitiveQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/PrimitiveQueryType.java b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/PrimitiveQueryType.java
index 978a652..b8aa912 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/PrimitiveQueryType.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/PrimitiveQueryType.java
@@ -27,7 +27,7 @@ import org.apache.carbondata.core.keygenerator.directdictionary.DirectDictionary
import org.apache.carbondata.core.keygenerator.directdictionary.DirectDictionaryKeyGeneratorFactory;
import org.apache.carbondata.core.keygenerator.mdkey.Bits;
import org.apache.carbondata.core.scan.filter.GenericQueryType;
-import org.apache.carbondata.core.scan.processor.BlocksChunkHolder;
+import org.apache.carbondata.core.scan.processor.RawBlockletColumnChunks;
import org.apache.carbondata.core.util.DataTypeUtil;
import org.apache.spark.sql.types.BooleanType$;
@@ -113,7 +113,7 @@ public class PrimitiveQueryType extends ComplexQueryType implements GenericQuery
}
}
- @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder)
+ @Override public void fillRequiredBlockData(RawBlockletColumnChunks blockChunkHolder)
throws IOException {
readBlockDataChunk(blockChunkHolder);
}
http://git-wip-us.apache.org/repos/asf/carbondata/blob/15b4e192/core/src/main/java/org/apache/carbondata/core/scan/complextypes/StructQueryType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/StructQueryType.java b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/StructQueryType.java
index 23a9f81..1d4f141 100644
--- a/core/src/main/java/org/apache/carbondata/core/scan/complextypes/StructQueryType.java
+++ b/core/src/main/java/org/apache/carbondata/core/scan/complextypes/StructQueryType.java
@@ -25,7 +25,7 @@ import java.util.List;
import org.apache.carbondata.core.datastore.chunk.impl.DimensionRawColumnChunk;
import org.apache.carbondata.core.scan.filter.GenericQueryType;
-import org.apache.carbondata.core.scan.processor.BlocksChunkHolder;
+import org.apache.carbondata.core.scan.processor.RawBlockletColumnChunks;
import org.apache.spark.sql.catalyst.expressions.GenericInternalRow;
import org.apache.spark.sql.types.DataType;
@@ -106,7 +106,7 @@ public class StructQueryType extends ComplexQueryType implements GenericQueryTyp
return new StructType(fields);
}
- @Override public void fillRequiredBlockData(BlocksChunkHolder blockChunkHolder)
+ @Override public void fillRequiredBlockData(RawBlockletColumnChunks blockChunkHolder)
throws IOException {
readBlockDataChunk(blockChunkHolder);