public interface RowSetLoader extends TupleWriter
Typical usage:
void writeABatch() { RowSetLoader writer = ... while (! writer.isFull()) { writer.start(); writer.scalar(0).setInt(10); writer.scalar(1).setString("foo"); ... writer.save(); } }Alternative usage:
void writeABatch() { RowSetLoader writer = ... while (writer.start()) { writer.scalar(0).setInt(10); writer.scalar(1).setString("foo"); ... writer.save(); } }The above writes until the batch is full, based on size or vector overflow. That is, the details of vector overflow are hidden from the code that calls the writer.
TupleWriter.UndefinedColumnException
Modifier and Type | Method and Description |
---|---|
RowSetLoader |
addRow(Object... values)
Write a row of values, given by Java objects.
|
RowSetLoader |
addSingleCol(Object value)
Similar to
addRow(Object...) , but for the odd case in which a
row consists of a single column that is an object array (such as for
a list or map) and so is ambiguous. |
boolean |
isFull()
Indicates that no more rows fit into the current row batch and that the row
batch should be harvested and sent downstream.
|
boolean |
limitReached(int maxRecords)
Deprecated.
|
ResultSetLoader |
loader() |
int |
rowCount()
The number of rows in the current row set.
|
int |
rowIndex()
The index of the current row.
|
void |
save()
Saves the current row and moves to the next row.
|
boolean |
start()
Prepare a new row for writing.
|
addColumn, addColumn, array, array, column, column, dict, dict, isProjected, scalar, scalar, set, size, tuple, tuple, tupleSchema, type, type, variant, variant
copy, isProjected, nullable, schema, setNull, setObject, type
ResultSetLoader loader()
RowSetLoader addRow(Object... values)
values
- variable-length argument list of column valuesRowSetLoader addSingleCol(Object value)
addRow(Object...)
, but for the odd case in which a
row consists of a single column that is an object array (such as for
a list or map) and so is ambiguous.value
- value of the one and only columnboolean isFull()
Will be false on the first row, and all subsequent rows until either the maximum number of rows are written, or a vector overflows. After that, will return true. The method returns false as soon as any column writer overflows even in the middle of a row write. That is, this writer does not automatically handle overflow rows because that added complexity is seldom needed for tests.
@Deprecated boolean limitReached(int maxRecords)
maxRecords
- Maximum rows to be returned. (From the limit clause of the query)int rowCount()
int rowIndex()
boolean start()
Handles a very special case: that of discarding the last row written. A reader can read a row into vectors, then "sniff" the row to check, for example, against a filter. If the row is not wanted, simply omit the call to save() and the next all to start() will discard the unsaved row.
Note that the vectors still contain values in the discarded position; just the various pointers are unset. If the batch ends before the discarded values are overwritten, the discarded values just exist at the end of the vector. Since vectors start with garbage contents, the discarded values are simply a different kind of garbage. But, if the client writes a new row, then the new row overwrites the discarded row. This works because we only change the tail part of a vector; never the internals.
void save()
Copyright © 1970 The Apache Software Foundation. All rights reserved.