Skip to content

Commit

Permalink
remove serializable
Browse files Browse the repository at this point in the history
  • Loading branch information
jackylk committed Jan 30, 2018
1 parent 0e9130c commit ba42f6c
Show file tree
Hide file tree
Showing 21 changed files with 243 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public abstract class AbstractScannedResultCollector implements ScannedResultCol
/**
* table block execution infos
*/
BlockExecutionInfo tableBlockExecutionInfos;
BlockExecutionInfo executionInfo;

/**
* maintains the measure information like datatype, ordinal, measure existence
Expand All @@ -53,7 +53,7 @@ public abstract class AbstractScannedResultCollector implements ScannedResultCol
DimensionInfo dimensionInfo;

AbstractScannedResultCollector(BlockExecutionInfo blockExecutionInfos) {
this.tableBlockExecutionInfos = blockExecutionInfos;
this.executionInfo = blockExecutionInfos;
measureInfo = blockExecutionInfos.getMeasureInfo();
dimensionInfo = blockExecutionInfos.getDimensionInfo();
}
Expand All @@ -65,7 +65,7 @@ protected void fillMeasureData(Object[] msrValues, int offset,
// if measure exists is block then pass measure column
// data chunk to the collector
if (measureInfo.getMeasureExists()[i]) {
ProjectionMeasure queryMeasure = tableBlockExecutionInfos.getQueryMeasures()[measureExistIndex];
ProjectionMeasure queryMeasure = executionInfo.getProjectionMeasures()[measureExistIndex];
msrValues[i + offset] = getMeasureData(
scannedResult.getMeasureChunk(measureInfo.getMeasureOrdinals()[measureExistIndex]),
scannedResult.getCurrentRowId(), queryMeasure.getMeasure());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ public class DictionaryBasedResultCollector extends AbstractScannedResultCollect

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();
}

/**
Expand Down Expand Up @@ -191,10 +191,10 @@ void initDimensionAndMeasureIndexesForFillingData() {
complexDataTypeArray = CarbonUtil.getComplexDataTypeArray(queryDimensions);
order = new int[queryDimensions.length + queryMeasures.length];
for (int i = 0; i < queryDimensions.length; i++) {
order[i] = queryDimensions[i].getProjectionOrdinal();
order[i] = queryDimensions[i].getOrdinal();
}
for (int i = 0; i < queryMeasures.length; i++) {
order[i + queryDimensions.length] = queryMeasures[i].getProjectionOrdinal();
order[i + queryDimensions.length] = queryMeasures[i].getOrdinal();
}
directDictionaryGenerators = new DirectDictionaryGenerator[queryDimensions.length];
for (int i = 0; i < queryDimensions.length; i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ public DictionaryBasedVectorResultCollector(BlockExecutionInfo blockExecutionInf
// 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();
}
Expand All @@ -78,35 +78,35 @@ void prepareDimensionAndMeasureColumnVectors() {
implictColumnList.add(columnVectorInfo);
columnVectorInfo.dimension = queryDimensions[i];
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
allColumnInfo[queryDimensions[i].getProjectionOrdinal()] = 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].getProjectionOrdinal()] = columnVectorInfo;
allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
} else if (queryDimensions[i].getDimension().hasEncoding(Encoding.DIRECT_DICTIONARY)) {
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
dictInfoList.add(columnVectorInfo);
columnVectorInfo.dimension = queryDimensions[i];
columnVectorInfo.directDictionaryGenerator = DirectDictionaryKeyGeneratorFactory
.getDirectDictionaryGenerator(queryDimensions[i].getDimension().getDataType());
columnVectorInfo.ordinal = queryDimensions[i].getDimension().getOrdinal();
allColumnInfo[queryDimensions[i].getProjectionOrdinal()] = 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].getProjectionOrdinal()] = 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].getProjectionOrdinal()] = columnVectorInfo;
allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
}
}
for (int i = 0; i < queryMeasures.length; i++) {
Expand All @@ -116,7 +116,7 @@ void prepareDimensionAndMeasureColumnVectors() {
columnVectorInfo.ordinal = queryMeasures[i].getMeasure().getOrdinal();
columnVectorInfo.measure = queryMeasures[i];
this.measureColumnInfo[i] = columnVectorInfo;
allColumnInfo[queryMeasures[i].getProjectionOrdinal()] = columnVectorInfo;
allColumnInfo[queryMeasures[i].getOrdinal()] = columnVectorInfo;
}
dictionaryInfo = dictInfoList.toArray(new ColumnVectorInfo[dictInfoList.size()]);
noDictionaryInfo = noDictInfoList.toArray(new ColumnVectorInfo[noDictInfoList.size()]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public RawBasedResultCollector(BlockExecutionInfo blockExecutionInfos) {
@Override
public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
List<Object[]> listBasedResult = new ArrayList<>(batchSize);
ProjectionMeasure[] queryMeasures = tableBlockExecutionInfos.getQueryMeasures();
ProjectionMeasure[] queryMeasures = executionInfo.getProjectionMeasures();
// scan the record and add to list
int rowCounter = 0;
while (scannedResult.hasNext() && rowCounter < batchSize) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -70,7 +70,7 @@ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, in
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) {
Expand Down Expand Up @@ -114,7 +114,7 @@ protected void fillMeasureData(Object[] msrValues, int offset,
// if measure exists is block then pass measure column
// data chunk to the collector
if (measureInfo.getMeasureExists()[i]) {
ProjectionMeasure queryMeasure = tableBlockExecutionInfos.getQueryMeasures()[measureExistIndex];
ProjectionMeasure queryMeasure = executionInfo.getProjectionMeasures()[measureExistIndex];
msrValues[i + offset] = getMeasureData(
scannedResult.getMeasureChunk(measureInfo.getMeasureOrdinals()[measureExistIndex]),
scannedResult.getCurrentRowId(), queryMeasure.getMeasure());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,15 @@ public RestructureBasedRawResultCollector(BlockExecutionInfo blockExecutionInfos
*/
private void initRestructuredKeyGenerator() {
SegmentProperties segmentProperties =
tableBlockExecutionInfos.getDataBlock().getSegmentProperties();
ProjectionDimension[] 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.getDictionaryColumnChunkIndex();
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()
Expand Down Expand Up @@ -124,8 +124,8 @@ private void initRestructuredKeyGenerator() {
*/
private void initCurrentBlockKeyGenerator() {
SegmentProperties segmentProperties =
tableBlockExecutionInfos.getDataBlock().getSegmentProperties();
int[] dictionaryColumnBlockIndex = tableBlockExecutionInfos.getDictionaryColumnChunkIndex();
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++) {
Expand All @@ -152,7 +152,7 @@ private void initCurrentBlockKeyGenerator() {
@Override
public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, int batchSize) {
List<Object[]> listBasedResult = new ArrayList<>(batchSize);
ProjectionMeasure[] queryMeasures = tableBlockExecutionInfos.getActualQueryMeasures();
ProjectionMeasure[] queryMeasures = executionInfo.getActualQueryMeasures();
// scan the record and add to list
int rowCounter = 0;
while (scannedResult.hasNext() && rowCounter < batchSize) {
Expand Down Expand Up @@ -180,7 +180,7 @@ public List<Object[]> collectResultInRow(BlockletScannedResult scannedResult, in
* @return
*/
private byte[] fillDictionaryKeyArrayWithLatestSchema(byte[] dictionaryKeyArray) {
ProjectionDimension[] actualQueryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
ProjectionDimension[] actualQueryDimensions = executionInfo.getActualQueryDimensions();
int newKeyArrayLength = dimensionInfo.getNewDictionaryColumnCount();
long[] keyArray = null;
if (null != updatedCurrentBlockKeyGenerator) {
Expand Down Expand Up @@ -223,7 +223,7 @@ private byte[] fillDictionaryKeyArrayWithLatestSchema(byte[] dictionaryKeyArray)
* @return
*/
private byte[][] fillNoDictionaryKeyArrayWithLatestSchema(byte[][] noDictionaryKeyArray) {
ProjectionDimension[] actualQueryDimensions = tableBlockExecutionInfos.getActualQueryDimensions();
ProjectionDimension[] actualQueryDimensions = executionInfo.getActualQueryDimensions();
byte[][] noDictionaryKeyArrayWithNewlyAddedColumns =
new byte[noDictionaryKeyArray.length + dimensionInfo.getNewNoDictionaryColumnCount()][];
int existingColumnValueIndex = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -66,7 +66,7 @@ private void createVectorForNewlyAddedDimensions() {
columnVectorInfo.directDictionaryGenerator = DirectDictionaryKeyGeneratorFactory
.getDirectDictionaryGenerator(queryDimensions[i].getDimension().getDataType());
}
allColumnInfo[queryDimensions[i].getProjectionOrdinal()] = columnVectorInfo;
allColumnInfo[queryDimensions[i].getOrdinal()] = columnVectorInfo;
}
}
}
Expand All @@ -79,7 +79,7 @@ private void createVectorForNewlyAddedMeasures() {
if (!measureInfo.getMeasureExists()[i]) {
// add a dummy column vector result collector object
ColumnVectorInfo columnVectorInfo = new ColumnVectorInfo();
allColumnInfo[queryMeasures[i].getProjectionOrdinal()] = columnVectorInfo;
allColumnInfo[queryMeasures[i].getOrdinal()] = columnVectorInfo;
columnVectorInfo.measure = queryMeasures[i];
measureDefaultValues[i] = getMeasureDefaultValue(queryMeasures[i].getMeasure());
}
Expand Down Expand Up @@ -137,11 +137,11 @@ public void collectResultInColumnarBatch(BlockletScannedResult scannedResult,
* 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].getProjectionOrdinal();
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],
Expand Down Expand Up @@ -219,10 +219,10 @@ private void fillNoDictionaryData(CarbonColumnVector vector, ColumnVectorInfo co
* 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].getProjectionOrdinal();
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];
Expand Down

0 comments on commit ba42f6c

Please sign in to comment.