[07/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/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java -- diff --git a/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java b/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java index f4450e3..5f8d199 100644 --- a/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java +++ b/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java @@ -31,7 +31,7 @@ import java.util.Map; import org.apache.carbondata.core.datamap.Segment; import org.apache.carbondata.core.datastore.block.TableBlockInfo; -import org.apache.carbondata.core.datastore.chunk.impl.FixedLengthDimensionDataChunk; +import org.apache.carbondata.core.datastore.chunk.impl.FixedLengthDimensionColumnPage; import org.apache.carbondata.core.datastore.columnar.ColumnGroupModel; import org.apache.carbondata.core.datastore.filesystem.LocalCarbonFile; import org.apache.carbondata.core.datastore.impl.FileFactory; @@ -45,7 +45,7 @@ import org.apache.carbondata.core.metadata.encoder.Encoding; 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.metadata.schema.table.column.ColumnSchema; -import org.apache.carbondata.core.scan.model.QueryDimension; +import org.apache.carbondata.core.scan.model.ProjectionDimension; import mockit.Mock; import mockit.MockUp; @@ -267,8 +267,8 @@ public class CarbonUtilTest { @Test public void testToGetNextLesserValue() { byte[] dataChunks = { 5, 6, 7, 8, 9 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextLesserValueToTarget(2, fixedLengthDataChunk, compareValues); assertEquals(result, 1); } @@ -276,8 +276,8 @@ public class CarbonUtilTest { @Test public void testToGetNextLesserValueToTarget() { byte[] dataChunks = { 7, 7, 7, 8, 9 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextLesserValueToTarget(2, fixedLengthDataChunk, compareValues); assertEquals(result, -1); } @@ -285,8 +285,8 @@ public class CarbonUtilTest { @Test public void testToGetnextGreaterValue() { byte[] dataChunks = { 5, 6, 7, 8, 9 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextGreaterValueToTarget(2, fixedLengthDataChunk, compareValues, 5); assertEquals(result, 3); } @@ -302,8 +302,8 @@ public class CarbonUtilTest { @Test public void testToGetnextGreaterValueToTarget() { byte[] dataChunks = { 5, 6, 7, 7, 7 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextGreaterValueToTarget(2, fixedLengthDataChunk, compareValues, 5); assertEquals(result, 5); } @@ -525,23 +525,23 @@ public class CarbonUtilTest { } @Test public void testToGetDictionaryEncodingArray() { -QueryDimension column1 = new QueryDimension("Column1"); -QueryDimension column2 = new QueryDimension("Column2"); ColumnSchema column1Schema = new ColumnSchema(); ColumnSchema column2Schema = new ColumnSchema(); column1Schema.setColumnName("Column1"); List encoding = new ArrayList<>(); encoding.add(Encoding.DICTIONARY); column1Schema.setEncodingList(encoding); -column1.setDimension(new CarbonDimension(column1Schema, 1, 1, 1, 1)); +ProjectionDimension +column1 = new ProjectionDimension(new CarbonDimension(column1Schema, 1, 1, 1, 1)); column2Schema.setColumnName("Column2"); List encoding2 = new ArrayList<>(); encoding2.add(Encoding.DELTA); column2Schema.setEncodingList(encoding2); -column2.setDimension(new CarbonDimension(column2Schema, 1, 1, 1, 1)); +ProjectionDimension +column2 = new ProjectionDimension(new CarbonDimension(column2Schema, 1, 1, 1, 1)); -
[07/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/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java -- diff --git a/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java b/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java index f4450e3..5f8d199 100644 --- a/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java +++ b/core/src/test/java/org/apache/carbondata/core/util/CarbonUtilTest.java @@ -31,7 +31,7 @@ import java.util.Map; import org.apache.carbondata.core.datamap.Segment; import org.apache.carbondata.core.datastore.block.TableBlockInfo; -import org.apache.carbondata.core.datastore.chunk.impl.FixedLengthDimensionDataChunk; +import org.apache.carbondata.core.datastore.chunk.impl.FixedLengthDimensionColumnPage; import org.apache.carbondata.core.datastore.columnar.ColumnGroupModel; import org.apache.carbondata.core.datastore.filesystem.LocalCarbonFile; import org.apache.carbondata.core.datastore.impl.FileFactory; @@ -45,7 +45,7 @@ import org.apache.carbondata.core.metadata.encoder.Encoding; 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.metadata.schema.table.column.ColumnSchema; -import org.apache.carbondata.core.scan.model.QueryDimension; +import org.apache.carbondata.core.scan.model.ProjectionDimension; import mockit.Mock; import mockit.MockUp; @@ -267,8 +267,8 @@ public class CarbonUtilTest { @Test public void testToGetNextLesserValue() { byte[] dataChunks = { 5, 6, 7, 8, 9 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextLesserValueToTarget(2, fixedLengthDataChunk, compareValues); assertEquals(result, 1); } @@ -276,8 +276,8 @@ public class CarbonUtilTest { @Test public void testToGetNextLesserValueToTarget() { byte[] dataChunks = { 7, 7, 7, 8, 9 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextLesserValueToTarget(2, fixedLengthDataChunk, compareValues); assertEquals(result, -1); } @@ -285,8 +285,8 @@ public class CarbonUtilTest { @Test public void testToGetnextGreaterValue() { byte[] dataChunks = { 5, 6, 7, 8, 9 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextGreaterValueToTarget(2, fixedLengthDataChunk, compareValues, 5); assertEquals(result, 3); } @@ -302,8 +302,8 @@ public class CarbonUtilTest { @Test public void testToGetnextGreaterValueToTarget() { byte[] dataChunks = { 5, 6, 7, 7, 7 }; byte[] compareValues = { 7 }; -FixedLengthDimensionDataChunk fixedLengthDataChunk = -new FixedLengthDimensionDataChunk(dataChunks, null, null, 5, 1); +FixedLengthDimensionColumnPage fixedLengthDataChunk = +new FixedLengthDimensionColumnPage(dataChunks, null, null, 5, 1); int result = CarbonUtil.nextGreaterValueToTarget(2, fixedLengthDataChunk, compareValues, 5); assertEquals(result, 5); } @@ -525,23 +525,23 @@ public class CarbonUtilTest { } @Test public void testToGetDictionaryEncodingArray() { -QueryDimension column1 = new QueryDimension("Column1"); -QueryDimension column2 = new QueryDimension("Column2"); ColumnSchema column1Schema = new ColumnSchema(); ColumnSchema column2Schema = new ColumnSchema(); column1Schema.setColumnName("Column1"); List encoding = new ArrayList<>(); encoding.add(Encoding.DICTIONARY); column1Schema.setEncodingList(encoding); -column1.setDimension(new CarbonDimension(column1Schema, 1, 1, 1, 1)); +ProjectionDimension +column1 = new ProjectionDimension(new CarbonDimension(column1Schema, 1, 1, 1, 1)); column2Schema.setColumnName("Column2"); List encoding2 = new ArrayList<>(); encoding2.add(Encoding.DELTA); column2Schema.setEncodingList(encoding2); -column2.setDimension(new CarbonDimension(column2Schema, 1, 1, 1, 1)); +ProjectionDimension +column2 = new ProjectionDimension(new CarbonDimension(column2Schema, 1, 1, 1, 1)); -
[07/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/util/AbstractDataFileFooterConverter.java -- diff --git a/core/src/main/java/org/apache/carbondata/core/util/AbstractDataFileFooterConverter.java b/core/src/main/java/org/apache/carbondata/core/util/AbstractDataFileFooterConverter.java index 94a041a..b74c279 100644 --- a/core/src/main/java/org/apache/carbondata/core/util/AbstractDataFileFooterConverter.java +++ b/core/src/main/java/org/apache/carbondata/core/util/AbstractDataFileFooterConverter.java @@ -378,7 +378,6 @@ public abstract class AbstractDataFileFooterConverter { cardinality[i] = segmentInfo.getColumn_cardinalities().get(i); } info.setColumnCardinality(cardinality); -info.setNumberOfColumns(segmentInfo.getNum_cols()); return info; } http://git-wip-us.apache.org/repos/asf/carbondata/blob/55c4e438/core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java -- diff --git a/core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java b/core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java index 52305bd..0cc783e 100644 --- a/core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java +++ b/core/src/main/java/org/apache/carbondata/core/util/CarbonUtil.java @@ -48,10 +48,10 @@ import org.apache.carbondata.core.cache.dictionary.DictionaryColumnUniqueIdentif import org.apache.carbondata.core.constants.CarbonCommonConstants; import org.apache.carbondata.core.constants.CarbonLoadOptionConstants; import org.apache.carbondata.core.datamap.Segment; -import org.apache.carbondata.core.datastore.FileHolder; +import org.apache.carbondata.core.datastore.FileReader; import org.apache.carbondata.core.datastore.block.AbstractIndex; import org.apache.carbondata.core.datastore.block.TableBlockInfo; -import org.apache.carbondata.core.datastore.chunk.DimensionColumnDataChunk; +import org.apache.carbondata.core.datastore.chunk.DimensionColumnPage; import org.apache.carbondata.core.datastore.chunk.impl.DimensionRawColumnChunk; import org.apache.carbondata.core.datastore.chunk.impl.MeasureRawColumnChunk; import org.apache.carbondata.core.datastore.columnar.ColumnGroupModel; @@ -82,7 +82,7 @@ import org.apache.carbondata.core.metadata.schema.table.column.ColumnSchema; import org.apache.carbondata.core.mutate.UpdateVO; import org.apache.carbondata.core.reader.ThriftReader; import org.apache.carbondata.core.reader.ThriftReader.TBaseCreator; -import org.apache.carbondata.core.scan.model.QueryDimension; +import org.apache.carbondata.core.scan.model.ProjectionDimension; import org.apache.carbondata.core.statusmanager.LoadMetadataDetails; import org.apache.carbondata.core.statusmanager.SegmentStatus; import org.apache.carbondata.core.statusmanager.SegmentStatusManager; @@ -248,16 +248,13 @@ public final class CarbonUtil { public static ColumnGroupModel getColGroupModel(int[][] columnGroups) { int[] columnSplit = new int[columnGroups.length]; int noOfColumnStore = columnSplit.length; -boolean[] columnarStore = new boolean[noOfColumnStore]; for (int i = 0; i < columnGroups.length; i++) { columnSplit[i] = columnGroups[i].length; - columnarStore[i] = columnGroups[i].length <= 1; } ColumnGroupModel colGroupModel = new ColumnGroupModel(); colGroupModel.setNoOfColumnStore(noOfColumnStore); colGroupModel.setColumnSplit(columnSplit); -colGroupModel.setColumnarStore(columnarStore); colGroupModel.setColumnGroup(columnGroups); return colGroupModel; } @@ -418,7 +415,7 @@ public final class CarbonUtil { } } - public static int getFirstIndexUsingBinarySearch(DimensionColumnDataChunk dimColumnDataChunk, + public static int getFirstIndexUsingBinarySearch(DimensionColumnPage dimColumnDataChunk, int low, int high, byte[] compareValue, boolean matchUpLimit) { int cmpResult = 0; while (high >= low) { @@ -457,7 +454,7 @@ public final class CarbonUtil { * @return the compareValue's range index in the dimColumnDataChunk */ public static int[] getRangeIndexUsingBinarySearch( - DimensionColumnDataChunk dimColumnDataChunk, int low, int high, byte[] compareValue) { + DimensionColumnPage dimColumnDataChunk, int low, int high, byte[] compareValue) { int[] rangeIndex = new int[2]; int cmpResult = 0; @@ -551,7 +548,7 @@ public final class CarbonUtil { * @return index value */ public static int nextLesserValueToTarget(int currentIndex, - DimensionColumnDataChunk dimColumnDataChunk, byte[] compareValue) { + DimensionColumnPage dimColumnDataChunk, byte[] compareValue) { while (currentIndex - 1 >= 0 && dimColumnDataChunk.compareTo(currentIndex - 1, compareValue) >= 0) { --currentIndex; @@ -571,7 +568,7 @@
[07/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/processing/src/main/java/org/apache/carbondata/processing/merger/CarbonCompactionExecutor.java -- diff --git a/processing/src/main/java/org/apache/carbondata/processing/merger/CarbonCompactionExecutor.java b/processing/src/main/java/org/apache/carbondata/processing/merger/CarbonCompactionExecutor.java index f51ced3..6a401d8 100644 --- a/processing/src/main/java/org/apache/carbondata/processing/merger/CarbonCompactionExecutor.java +++ b/processing/src/main/java/org/apache/carbondata/processing/merger/CarbonCompactionExecutor.java @@ -34,20 +34,16 @@ import org.apache.carbondata.core.datastore.block.TableBlockInfo; import org.apache.carbondata.core.datastore.block.TaskBlockInfo; import org.apache.carbondata.core.metadata.blocklet.DataFileFooter; import org.apache.carbondata.core.metadata.schema.table.CarbonTable; -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.metadata.schema.table.column.ColumnSchema; import org.apache.carbondata.core.scan.executor.QueryExecutor; import org.apache.carbondata.core.scan.executor.QueryExecutorFactory; import org.apache.carbondata.core.scan.executor.exception.QueryExecutionException; -import org.apache.carbondata.core.scan.model.QueryDimension; -import org.apache.carbondata.core.scan.model.QueryMeasure; import org.apache.carbondata.core.scan.model.QueryModel; -import org.apache.carbondata.core.scan.result.BatchResult; +import org.apache.carbondata.core.scan.result.RowBatch; import org.apache.carbondata.core.scan.result.iterator.RawResultIterator; import org.apache.carbondata.core.util.CarbonProperties; import org.apache.carbondata.core.util.CarbonUtil; -import org.apache.carbondata.core.util.DataTypeUtil; +import org.apache.carbondata.core.util.DataTypeConverter; /** * Executor class for executing the query on the selected segments to be merged. @@ -70,6 +66,9 @@ public class CarbonCompactionExecutor { */ private boolean restructuredBlockExists; + // converter for UTF8String and decimal conversion + private DataTypeConverter dataTypeConverter; + /** * Constructor * @@ -82,13 +81,14 @@ public class CarbonCompactionExecutor { public CarbonCompactionExecutor(MapsegmentMapping, SegmentProperties segmentProperties, CarbonTable carbonTable, Map dataFileMetadataSegMapping, - boolean restructuredBlockExists) { + boolean restructuredBlockExists, DataTypeConverter dataTypeConverter) { this.segmentMapping = segmentMapping; this.destinationSegProperties = segmentProperties; this.carbonTable = carbonTable; this.dataFileMetadataSegMapping = dataFileMetadataSegMapping; this.restructuredBlockExists = restructuredBlockExists; -queryExecutorList = new ArrayList<>(CarbonCommonConstants.DEFAULT_COLLECTION_SIZE); +this.queryExecutorList = new ArrayList<>(CarbonCommonConstants.DEFAULT_COLLECTION_SIZE); +this.dataTypeConverter = dataTypeConverter; } /** @@ -100,7 +100,9 @@ public class CarbonCompactionExecutor { List resultList = new ArrayList<>(CarbonCommonConstants.DEFAULT_COLLECTION_SIZE); List list = null; -queryModel = prepareQueryModel(list); +queryModel = carbonTable.createQueryModelWithProjectAllColumns(dataTypeConverter); +queryModel.setReadPageByPage(enablePageLevelReaderForCompaction()); +queryModel.setForcedDetailRawQuery(true); // iterate each seg ID for (Map.Entry taskMap : segmentMapping.entrySet()) { String segmentId = taskMap.getKey(); @@ -156,7 +158,7 @@ public class CarbonCompactionExecutor { * @param blockList * @return */ - private CarbonIterator executeBlockList(List blockList) + private CarbonIterator executeBlockList(List blockList) throws QueryExecutionException, IOException { queryModel.setTableBlockInfos(blockList); QueryExecutor queryExecutor = QueryExecutorFactory.getQueryExecutor(queryModel); @@ -195,48 +197,6 @@ public class CarbonCompactionExecutor { } /** - * Preparing of the query model. - * - * @param blockList - * @return - */ - private QueryModel prepareQueryModel(List blockList) { -QueryModel model = new QueryModel(); -model.setTableBlockInfos(blockList); -model.setForcedDetailRawQuery(true); -model.setFilterExpressionResolverTree(null); -model.setConverter(DataTypeUtil.getDataTypeConverter()); -model.setReadPageByPage(enablePageLevelReaderForCompaction()); - -List dims = new ArrayList<>(CarbonCommonConstants.DEFAULT_COLLECTION_SIZE); - -List dimensions = -carbonTable.getDimensionByTableName(carbonTable.getTableName()); -for (CarbonDimension dim : dimensions) { -