use of io.prestosql.spi.block.LazyBlock in project carbondata by apache.
the class CarbondataPageSource method getNextPageForColumnar.
private Page getNextPageForColumnar() {
if (nanoStart == 0) {
nanoStart = System.nanoTime();
}
CarbonVectorBatch columnarBatch = null;
int batchSize = 0;
try {
batchId++;
if (vectorReader.nextKeyValue()) {
Object vectorBatch = vectorReader.getCurrentValue();
if (vectorBatch instanceof CarbonVectorBatch) {
columnarBatch = (CarbonVectorBatch) vectorBatch;
batchSize = columnarBatch.numRows();
if (batchSize == 0) {
close();
return null;
}
}
} else {
close();
return null;
}
if (columnarBatch == null) {
return null;
}
Block[] blocks = new Block[columnHandles.size()];
for (int column = 0; column < blocks.length; column++) {
blocks[column] = new LazyBlock(batchSize, new CarbondataBlockLoader(column));
}
Page page = new Page(batchSize, blocks);
return page;
} catch (PrestoException e) {
closeWithSuppression(e);
throw e;
} catch (RuntimeException e) {
closeWithSuppression(e);
throw new CarbonDataLoadingException("Exception when creating the Carbon data Block", e);
}
}
Aggregations