Class ListWriterImpl

All Implemented Interfaces:
ArrayWriter, ColumnWriter, WriterEvents, WriterPosition

public class ListWriterImpl extends ObjectArrayWriter
List writer, which is basically an array writer, with the addition that each list element can be null. Lists never auto-increment their indexes since the contents of lists can change dynamically, and auto-increment is meaningful only for scalar arrays.
  • Constructor Details

  • Method Details

    • bindIndex

      public void bindIndex(ColumnWriterIndex index)
      Description copied from interface: WriterEvents
      Bind the writer to a writer index.
      Specified by:
      bindIndex in interface WriterEvents
      Overrides:
      bindIndex in class AbstractArrayWriter.BaseArrayWriter
      Parameters:
      index - the writer index (top level or nested for arrays)
    • vector

      public ListVector vector()
    • setNull

      public void setNull(boolean isNull)
      Specified by:
      setNull in interface ArrayWriter
      Overrides:
      setNull in class AbstractArrayWriter
    • startWrite

      public void startWrite()
      Description copied from interface: WriterEvents
      Start a write (batch) operation. Performs any vector initialization required at the start of a batch (especially for offset vectors.)
      Specified by:
      startWrite in interface WriterEvents
      Overrides:
      startWrite in class AbstractArrayWriter.BaseArrayWriter
    • startRow

      public void startRow()
      Description copied from interface: WriterEvents
      Start a new row. To be called only when a row is not active. To restart a row, call WriterEvents.restartRow() instead.
      Specified by:
      startRow in interface WriterEvents
      Overrides:
      startRow in class AbstractArrayWriter.BaseArrayWriter
    • endArrayValue

      public void endArrayValue()
      Description copied from interface: WriterEvents
      End a value. Similar to WriterEvents.saveRow(), but the save of a value is conditional on saving the row. This version is primarily of use in tuples nested inside arrays: it saves each tuple within the array, advancing to a new position in the array. The update of the array's offset vector based on the cumulative value saves is done when saving the row.
      Specified by:
      endArrayValue in interface WriterEvents
      Overrides:
      endArrayValue in class AbstractArrayWriter.BaseArrayWriter
    • restartRow

      public void restartRow()
      Description copied from interface: WriterEvents
      During a writer to a row, rewind the the current index position to restart the row. Done when abandoning the current row, such as when filtering out a row at read time.
      Specified by:
      restartRow in interface WriterEvents
      Overrides:
      restartRow in class AbstractArrayWriter.BaseArrayWriter
    • saveRow

      public void saveRow()
      Description copied from interface: WriterEvents
      Saves a row. Commits offset vector locations and advances each to the next position. Can be called only when a row is active.
      Specified by:
      saveRow in interface WriterEvents
      Overrides:
      saveRow in class AbstractArrayWriter.BaseArrayWriter
    • preRollover

      public void preRollover()
      Description copied from interface: WriterEvents
      The vectors backing this vector are about to roll over. Finish the current batch up to, but not including, the current row.
      Specified by:
      preRollover in interface WriterEvents
      Overrides:
      preRollover in class AbstractArrayWriter.BaseArrayWriter
    • postRollover

      public void postRollover()
      Description copied from interface: WriterEvents
      The vectors backing this writer rolled over. This means that data for the current row has been rolled over into a new vector. Offsets and indexes should be shifted based on the understanding that data for the current row now resides at the start of a new vector instead of its previous location elsewhere in an old vector.
      Specified by:
      postRollover in interface WriterEvents
      Overrides:
      postRollover in class AbstractArrayWriter.BaseArrayWriter
    • endWrite

      public void endWrite()
      Description copied from interface: WriterEvents
      End a batch: finalize any vector values.
      Specified by:
      endWrite in interface WriterEvents
      Overrides:
      endWrite in class AbstractArrayWriter.BaseArrayWriter
    • setObject

      public void setObject(Object array)
      Description copied from interface: ColumnWriter
      Generic technique to write data as a generic Java object. The type of the object must match the target writer. Primarily for testing.
      • Scalar: The type of the Java object must match the type of the target vector. String or byte[] can be used for Varchar vectors.
      • Array: Write the array given an array of values. The object must be a Java array. The type of the array must match the type of element in the repeated vector. That is, if the vector is a Repeated Int, provide an int[] array.
      • Tuple (map or row): The Java object must be an array of objects in which the members of the array have a 1:1 correspondence with the members of the tuple in the order defined by the writer metadata. That is, if the map is (Int, Varchar), provide a Object[] array like this: {10, "fred"}.
      • Union: Uses the Java object type to determine the type of the backing vector. Creates a vector of the required type if needed.
      Specified by:
      setObject in interface ColumnWriter
      Overrides:
      setObject in class ObjectArrayWriter
      Parameters:
      array - value to write to the vector. The Java type of the object indicates the Drill storage type