use of io.prestosql.spi.PrestoException 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);
}
}
use of io.prestosql.spi.PrestoException in project carbondata by apache.
the class CarbondataPageSource method getNextPageForRow.
private Page getNextPageForRow() {
if (isFrstPage) {
isFrstPage = false;
initialReaderForRow();
}
if (nanoStart == 0) {
nanoStart = System.nanoTime();
}
int count = 0;
try {
Block[] blocks = new Block[columnCount];
CarbonColumnVectorImpl[] columns = new CarbonColumnVectorImpl[columnCount];
for (int i = 0; i < columnCount; ++i) {
columns[i] = CarbonVectorBatch.createDirectStreamReader(batchSize, dataTypes[i], fields[i]);
}
while (rowReader.nextKeyValue()) {
Object[] values = (Object[]) rowReader.getCurrentValue();
for (int index = 0; index < columnCount; index++) {
columns[index].putObject(count, values[index]);
}
count++;
if (count == batchSize) {
break;
}
}
if (count == 0) {
close();
return null;
} else {
for (int index = 0; index < columnCount; index++) {
blocks[index] = ((PrestoVectorBlockBuilder) columns[index]).buildBlock();
sizeOfData += blocks[index].getSizeInBytes();
}
}
return new Page(count, blocks);
} catch (PrestoException e) {
closeWithSuppression(e);
throw e;
} catch (RuntimeException | IOException e) {
closeWithSuppression(e);
throw new CarbonDataLoadingException("Exception when creating the Carbon data Block", e);
}
}
Aggregations