Class ColumnBlockConversions

java.lang.Object
org.elasticsearch.xpack.esql.datasources.spi.ColumnBlockConversions

public final class ColumnBlockConversions extends Object
Converts columnar primitive arrays to ESQL Blocks, avoiding the per-element overhead of Block.Builder when the source data is already in columnar form.

Used by format readers (ORC, and future Parquet ColumnReader) that produce data as typed arrays. Three fast paths are provided for each type:

  • Repeating: a single value broadcast to all positions via constant block.
  • No nulls: bulk array copy + direct vector wrap (no builder, no per-element dispatch).
  • With nulls: bulk array copy + null bitmap conversion + array block.

All methods copy the input arrays because callers such as ORC reuse their column buffers across batches. When a caller owns the array exclusively, a future overload can wrap without copying.

  • Method Details

    • longColumn

      public static Block longColumn(BlockFactory blockFactory, long[] values, int rowCount, boolean noNulls, boolean isRepeating, boolean[] isNull)
      Converts a long[] column to a Block (LONG data type).
    • intColumnFromLongs

      public static Block intColumnFromLongs(BlockFactory blockFactory, long[] values, int rowCount, boolean noNulls, boolean isRepeating, boolean[] isNull)
      Converts a long[] column to a Block (INTEGER data type) by downcasting.
    • doubleColumn

      public static Block doubleColumn(BlockFactory blockFactory, double[] values, int rowCount, boolean noNulls, boolean isRepeating, boolean[] isNull)
      Converts a double[] column to a Block (DOUBLE data type).
    • booleanColumnFromLongs

      public static Block booleanColumnFromLongs(BlockFactory blockFactory, long[] values, int rowCount, boolean noNulls, boolean isRepeating, boolean[] isNull)
      Converts a long[] column to a Block (BOOLEAN data type). ORC stores booleans as longs where 0 = false.
    • doubleColumnFromLongs

      public static Block doubleColumnFromLongs(BlockFactory blockFactory, long[] values, int rowCount, boolean noNulls, boolean isRepeating, boolean[] isNull)
      Converts a long[] column to a Block (DOUBLE data type) by widening. Used for ORC DECIMAL types that arrive as LongColumnVector.