[14/50] [abbrv] carbondata git commit: [CARBONDATA-2099] Refactor query scan process to improve readability
http://git-wip-us.apache.org/repos/asf/carbondata/blob/92c9f224/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java -- diff --git a/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java b/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java index 69f5ceb..22d1df1 100644 --- a/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java +++ b/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java @@ -43,10 +43,9 @@ import org.apache.carbondata.core.datastore.block.SegmentProperties; import org.apache.carbondata.core.datastore.block.TableBlockInfo; import org.apache.carbondata.core.datastore.block.TableBlockUniqueIdentifier; import org.apache.carbondata.core.indexstore.BlockletDetailInfo; -import org.apache.carbondata.core.indexstore.blockletindex.BlockletDataRefNodeWrapper; +import org.apache.carbondata.core.indexstore.blockletindex.BlockletDataRefNode; import org.apache.carbondata.core.indexstore.blockletindex.IndexWrapper; import org.apache.carbondata.core.keygenerator.KeyGenException; -import org.apache.carbondata.core.keygenerator.KeyGenerator; import org.apache.carbondata.core.memory.UnsafeMemoryManager; import org.apache.carbondata.core.metadata.AbsoluteTableIdentifier; import org.apache.carbondata.core.metadata.blocklet.BlockletInfo; @@ -64,8 +63,8 @@ import org.apache.carbondata.core.scan.executor.util.RestructureUtil; import org.apache.carbondata.core.scan.filter.FilterUtil; import org.apache.carbondata.core.scan.filter.SingleTableProvider; import org.apache.carbondata.core.scan.filter.TableProvider; -import org.apache.carbondata.core.scan.model.QueryDimension; -import org.apache.carbondata.core.scan.model.QueryMeasure; +import org.apache.carbondata.core.scan.model.ProjectionDimension; +import org.apache.carbondata.core.scan.model.ProjectionMeasure; import org.apache.carbondata.core.scan.model.QueryModel; import org.apache.carbondata.core.stats.QueryStatistic; import org.apache.carbondata.core.stats.QueryStatisticsConstants; @@ -121,7 +120,6 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { queryProperties.queryStatisticsRecorder = CarbonTimeStatisticsFactory.createExecutorRecorder(queryModel.getQueryId()); queryModel.setStatisticsRecorder(queryProperties.queryStatisticsRecorder); -QueryUtil.resolveQueryModel(queryModel); QueryStatistic queryStatistic = new QueryStatistic(); // sort the block info // so block will be loaded in sorted order this will be required for @@ -168,12 +166,12 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { .addStatistics(QueryStatisticsConstants.LOAD_BLOCKS_EXECUTOR, System.currentTimeMillis()); queryProperties.queryStatisticsRecorder.recordStatistics(queryStatistic); // calculating the total number of aggeragted columns -int measureCount = queryModel.getQueryMeasures().size(); +int measureCount = queryModel.getProjectionMeasures().size(); int currentIndex = 0; DataType[] dataTypes = new DataType[measureCount]; -for (QueryMeasure carbonMeasure : queryModel.getQueryMeasures()) { +for (ProjectionMeasure carbonMeasure : queryModel.getProjectionMeasures()) { // adding the data type and aggregation type of all the measure this // can be used // to select the aggregator @@ -198,9 +196,11 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { queryStatistic = new QueryStatistic(); // dictionary column unique column id to dictionary mapping // which will be used to get column actual data -queryProperties.columnToDictionayMapping = QueryUtil -.getDimensionDictionaryDetail(queryModel.getQueryDimension(), -queryProperties.complexFilterDimension, queryModel.getAbsoluteTableIdentifier(), +queryProperties.columnToDictionayMapping = +QueryUtil.getDimensionDictionaryDetail( +queryModel.getProjectionDimensions(), +queryProperties.complexFilterDimension, +queryModel.getAbsoluteTableIdentifier(), tableProvider); queryStatistic .addStatistics(QueryStatisticsConstants.LOAD_DICTIONARY, System.currentTimeMillis()); @@ -263,8 +263,8 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { // and query will be executed based on that infos for (int i = 0; i < queryProperties.dataBlocks.size(); i++) { AbstractIndex abstractIndex = queryProperties.dataBlocks.get(i); - BlockletDataRefNodeWrapper dataRefNode = - (BlockletDataRefNodeWrapper) abstractIndex.getDataRefNode(); + BlockletDataRefNode dataRefNode = + (BlockletDataRefNode) abstractIndex.getDataRefNode(); blockExec
[14/50] [abbrv] carbondata git commit: [CARBONDATA-2099] Refactor query scan process to improve readability
http://git-wip-us.apache.org/repos/asf/carbondata/blob/92c9f224/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java -- diff --git a/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java b/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java index 69f5ceb..22d1df1 100644 --- a/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java +++ b/core/src/main/java/org/apache/carbondata/core/scan/executor/impl/AbstractQueryExecutor.java @@ -43,10 +43,9 @@ import org.apache.carbondata.core.datastore.block.SegmentProperties; import org.apache.carbondata.core.datastore.block.TableBlockInfo; import org.apache.carbondata.core.datastore.block.TableBlockUniqueIdentifier; import org.apache.carbondata.core.indexstore.BlockletDetailInfo; -import org.apache.carbondata.core.indexstore.blockletindex.BlockletDataRefNodeWrapper; +import org.apache.carbondata.core.indexstore.blockletindex.BlockletDataRefNode; import org.apache.carbondata.core.indexstore.blockletindex.IndexWrapper; import org.apache.carbondata.core.keygenerator.KeyGenException; -import org.apache.carbondata.core.keygenerator.KeyGenerator; import org.apache.carbondata.core.memory.UnsafeMemoryManager; import org.apache.carbondata.core.metadata.AbsoluteTableIdentifier; import org.apache.carbondata.core.metadata.blocklet.BlockletInfo; @@ -64,8 +63,8 @@ import org.apache.carbondata.core.scan.executor.util.RestructureUtil; import org.apache.carbondata.core.scan.filter.FilterUtil; import org.apache.carbondata.core.scan.filter.SingleTableProvider; import org.apache.carbondata.core.scan.filter.TableProvider; -import org.apache.carbondata.core.scan.model.QueryDimension; -import org.apache.carbondata.core.scan.model.QueryMeasure; +import org.apache.carbondata.core.scan.model.ProjectionDimension; +import org.apache.carbondata.core.scan.model.ProjectionMeasure; import org.apache.carbondata.core.scan.model.QueryModel; import org.apache.carbondata.core.stats.QueryStatistic; import org.apache.carbondata.core.stats.QueryStatisticsConstants; @@ -121,7 +120,6 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { queryProperties.queryStatisticsRecorder = CarbonTimeStatisticsFactory.createExecutorRecorder(queryModel.getQueryId()); queryModel.setStatisticsRecorder(queryProperties.queryStatisticsRecorder); -QueryUtil.resolveQueryModel(queryModel); QueryStatistic queryStatistic = new QueryStatistic(); // sort the block info // so block will be loaded in sorted order this will be required for @@ -168,12 +166,12 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { .addStatistics(QueryStatisticsConstants.LOAD_BLOCKS_EXECUTOR, System.currentTimeMillis()); queryProperties.queryStatisticsRecorder.recordStatistics(queryStatistic); // calculating the total number of aggeragted columns -int measureCount = queryModel.getQueryMeasures().size(); +int measureCount = queryModel.getProjectionMeasures().size(); int currentIndex = 0; DataType[] dataTypes = new DataType[measureCount]; -for (QueryMeasure carbonMeasure : queryModel.getQueryMeasures()) { +for (ProjectionMeasure carbonMeasure : queryModel.getProjectionMeasures()) { // adding the data type and aggregation type of all the measure this // can be used // to select the aggregator @@ -198,9 +196,11 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { queryStatistic = new QueryStatistic(); // dictionary column unique column id to dictionary mapping // which will be used to get column actual data -queryProperties.columnToDictionayMapping = QueryUtil -.getDimensionDictionaryDetail(queryModel.getQueryDimension(), -queryProperties.complexFilterDimension, queryModel.getAbsoluteTableIdentifier(), +queryProperties.columnToDictionayMapping = +QueryUtil.getDimensionDictionaryDetail( +queryModel.getProjectionDimensions(), +queryProperties.complexFilterDimension, +queryModel.getAbsoluteTableIdentifier(), tableProvider); queryStatistic .addStatistics(QueryStatisticsConstants.LOAD_DICTIONARY, System.currentTimeMillis()); @@ -263,8 +263,8 @@ public abstract class AbstractQueryExecutor implements QueryExecutor { // and query will be executed based on that infos for (int i = 0; i < queryProperties.dataBlocks.size(); i++) { AbstractIndex abstractIndex = queryProperties.dataBlocks.get(i); - BlockletDataRefNodeWrapper dataRefNode = - (BlockletDataRefNodeWrapper) abstractIndex.getDataRefNode(); + BlockletDataRefNode dataRefNode = + (BlockletDataRefNode) abstractIndex.getDataRefNode(); blockExec
[14/50] [abbrv] carbondata git commit: [CARBONDATA-2099] Refactor query scan process to improve readability
http://git-wip-us.apache.org/repos/asf/carbondata/blob/55c4e438/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/SegmentInfo.java -- diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/SegmentInfo.java b/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/SegmentInfo.java index 0cb2918..099fffd 100644 --- a/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/SegmentInfo.java +++ b/core/src/main/java/org/apache/carbondata/core/metadata/blocklet/SegmentInfo.java @@ -29,31 +29,12 @@ public class SegmentInfo implements Serializable { private static final long serialVersionUID = -174987462709431L; /** - * number of column in the segment - */ - private int numberOfColumns; - - /** * cardinality of each columns * column which is not participating in the multidimensional key cardinality will be -1; */ private int[] columnCardinality; /** - * @return the numberOfColumns - */ - public int getNumberOfColumns() { -return numberOfColumns; - } - - /** - * @param numberOfColumns the numberOfColumns to set - */ - public void setNumberOfColumns(int numberOfColumns) { -this.numberOfColumns = numberOfColumns; - } - - /** * @return the columnCardinality */ public int[] getColumnCardinality() { http://git-wip-us.apache.org/repos/asf/carbondata/blob/55c4e438/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 6036569..d17d865 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 */ public static void updateTableInfo(TableInfo tableInfo) { List 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 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(),
[14/50] [abbrv] carbondata git commit: [CARBONDATA-2099] Refactor query scan process to improve readability
http://git-wip-us.apache.org/repos/asf/carbondata/blob/636eb799/core/src/main/java/org/apache/carbondata/core/scan/filter/executer/ExcludeColGroupFilterExecuterImpl.java -- diff --git a/core/src/main/java/org/apache/carbondata/core/scan/filter/executer/ExcludeColGroupFilterExecuterImpl.java b/core/src/main/java/org/apache/carbondata/core/scan/filter/executer/ExcludeColGroupFilterExecuterImpl.java index 9391ebd..44f7c07 100644 --- a/core/src/main/java/org/apache/carbondata/core/scan/filter/executer/ExcludeColGroupFilterExecuterImpl.java +++ b/core/src/main/java/org/apache/carbondata/core/scan/filter/executer/ExcludeColGroupFilterExecuterImpl.java @@ -16,20 +16,10 @@ */ package org.apache.carbondata.core.scan.filter.executer; -import java.util.ArrayList; import java.util.BitSet; -import java.util.List; -import org.apache.carbondata.common.logging.LogService; -import org.apache.carbondata.common.logging.LogServiceFactory; import org.apache.carbondata.core.datastore.block.SegmentProperties; -import org.apache.carbondata.core.datastore.chunk.DimensionColumnDataChunk; -import org.apache.carbondata.core.keygenerator.KeyGenException; -import org.apache.carbondata.core.keygenerator.KeyGenerator; -import org.apache.carbondata.core.scan.executor.infos.KeyStructureInfo; -import org.apache.carbondata.core.scan.executor.util.QueryUtil; import org.apache.carbondata.core.scan.filter.resolver.resolverinfo.DimColumnResolvedFilterInfo; -import org.apache.carbondata.core.util.ByteUtil; /** * It checks if filter is required on given block and if required, it does @@ -38,12 +28,6 @@ import org.apache.carbondata.core.util.ByteUtil; public class ExcludeColGroupFilterExecuterImpl extends ExcludeFilterExecuterImpl { /** - * LOGGER - */ - private static final LogService LOGGER = - LogServiceFactory.getLogService(ExcludeColGroupFilterExecuterImpl.class.getName()); - - /** * @param dimColResolvedFilterInfo * @param segmentProperties */ @@ -53,54 +37,6 @@ public class ExcludeColGroupFilterExecuterImpl extends ExcludeFilterExecuterImpl } /** - * It fills BitSet with row index which matches filter key - */ - protected BitSet getFilteredIndexes(DimensionColumnDataChunk dimensionColumnDataChunk, - int numerOfRows) { -BitSet bitSet = new BitSet(numerOfRows); -bitSet.flip(0, numerOfRows); -try { - KeyStructureInfo keyStructureInfo = getKeyStructureInfo(); - byte[][] filterValues = dimColumnExecuterInfo.getExcludeFilterKeys(); - for (int i = 0; i < filterValues.length; i++) { -byte[] filterVal = filterValues[i]; -for (int rowId = 0; rowId < numerOfRows; rowId++) { - byte[] colData = new byte[keyStructureInfo.getMaskByteRanges().length]; - dimensionColumnDataChunk.fillChunkData(colData, 0, rowId, keyStructureInfo); - if (ByteUtil.UnsafeComparer.INSTANCE.compareTo(filterVal, colData) == 0) { -bitSet.flip(rowId); - } -} - } - -} catch (Exception e) { - LOGGER.error(e); -} - -return bitSet; - } - - /** - * It is required for extracting column data from columngroup chunk - * - * @return - * @throws KeyGenException - */ - private KeyStructureInfo getKeyStructureInfo() throws KeyGenException { -int colGrpId = getColumnGroupId(dimColEvaluatorInfo.getColumnIndex()); -KeyGenerator keyGenerator = segmentProperties.getColumnGroupAndItsKeygenartor().get(colGrpId); -List mdKeyOrdinal = new ArrayList(); -mdKeyOrdinal.add(getMdkeyOrdinal(dimColEvaluatorInfo.getColumnIndex(), colGrpId)); -int[] maskByteRanges = QueryUtil.getMaskedByteRangeBasedOrdinal(mdKeyOrdinal, keyGenerator); -byte[] maxKey = QueryUtil.getMaxKeyBasedOnOrinal(mdKeyOrdinal, keyGenerator); -KeyStructureInfo restructureInfos = new KeyStructureInfo(); -restructureInfos.setKeyGenerator(keyGenerator); -restructureInfos.setMaskByteRanges(maskByteRanges); -restructureInfos.setMaxKey(maxKey); -return restructureInfos; - } - - /** * Check if scan is required on given block based on min and max value */ public BitSet isScanRequired(byte[][] blkMaxVal, byte[][] blkMinVal) { @@ -109,25 +45,4 @@ public class ExcludeColGroupFilterExecuterImpl extends ExcludeFilterExecuterImpl return bitSet; } - private int getMdkeyOrdinal(int ordinal, int colGrpId) { -return segmentProperties.getColumnGroupMdKeyOrdinal(colGrpId, ordinal); - } - - private int getColumnGroupId(int ordinal) { -int[][] columnGroups = segmentProperties.getColumnGroups(); -int colGrpId = -1; -for (int i = 0; i < columnGroups.length; i++) { - if (columnGroups[i].length > 1) { -colGrpId++; -if (QueryUtil.searchInArray(columnGroups[i], ordinal)) { - break; -} - } -} -return colGrpId; - } - - public KeyGenerator getKeyGenerator(int co