Interface SelectColumn

All Superinterfaces:
Selectable
All Known Subinterfaces:
FormulaColumn
All Known Implementing Classes:
AbstractFormulaColumn, DhFormulaColumn, FormulaColumnPython, FunctionalColumn, FunctionalColumnLong, MultiSourceFunctionalColumn, NullSelectColumn, ReinterpretedColumn, SourceColumn, SwitchColumn, TableTransformationColumn

public interface SelectColumn extends Selectable
The interface for a query table to perform retrieve values from a column for select like operations.
  • Field Details

    • ZERO_LENGTH_SELECT_COLUMN_ARRAY

      static final SelectColumn[] ZERO_LENGTH_SELECT_COLUMN_ARRAY
      Convenient static final instance of a zero length Array of SelectColumns for use in toArray calls.
  • Method Details

    • of

      static SelectColumn of(Selectable selectable)
    • from

      static SelectColumn[] from(Selectable... selectables)
    • from

      static SelectColumn[] from(Collection<? extends Selectable> selectables)
    • copyFrom

      static SelectColumn[] copyFrom(SelectColumn[] selectColumns)
    • copyFrom

      static Collection<SelectColumn> copyFrom(Collection<SelectColumn> selectColumns)
    • ofStateless

      static SelectColumn ofStateless(@NotNull @NotNull Selectable selectable)
      Produce a stateless SelectColumn from selectable.
      Parameters:
      selectable - The Selectable to adapt and mark as stateless
      Returns:
      The resulting SelectColumn
    • ofRecomputeOnModifiedRow

      static SelectColumn ofRecomputeOnModifiedRow(Selectable selectable)
      Produce a SelectColumn that recomputeOnModifiedRow() recomputes values on any modified row} from selectable.
      Parameters:
      selectable - The Selectable to adapt and mark as requiring row-level recomputation
      Returns:
      The resulting SelectColumn
    • initInputs

      List<String> initInputs(TrackingRowSet rowSet, Map<String,? extends ColumnSource<?>> columnsOfInterest)
      Initialize the column from the provided set of underlying columns and row set.
      Parameters:
      rowSet - the base row set
      columnsOfInterest - the input columns
      Returns:
      a list of columns on which the result of this is dependent
    • initDef

      List<String> initDef(@NotNull @NotNull Map<String,ColumnDefinition<?>> columnDefinitionMap)
      Initialize any internal column definitions from the provided initial. Any formulae will be compiled immediately using the QueryCompiler in the current ExecutionContext.
      Parameters:
      columnDefinitionMap - the starting set of column definitions; valid for this call only
      Returns:
      a list of columns on which the result of this is dependent
      ApiNote:
      Any QueryLibrary, QueryScope, or QueryCompiler usage needs to be resolved within initDef. Implementations must be idempotent. Implementations that want to hold on to the columnDefinitionMap must make a defensive copy.
    • initDef

      default List<String> initDef(@NotNull @NotNull Map<String,ColumnDefinition<?>> columnDefinitionMap, @NotNull @NotNull QueryCompilerRequestProcessor compilationRequestProcessor)
      Initialize any internal column definitions from the provided initial. A compilation request consumer is provided to allow for deferred compilation of expressions that belong to the same query.

      Compilations must be resolved before using this SelectColumn.

      Parameters:
      columnDefinitionMap - the starting set of column definitions; valid for this call only
      compilationRequestProcessor - a consumer to submit compilation requests; valid for this call only
      Returns:
      a list of columns on which the result of this is dependent
      ApiNote:
      Any QueryLibrary, QueryScope, or QueryCompiler usage needs to be resolved within initDef. Implementations must be idempotent. Implementations that want to hold on to the columnDefinitionMap must make a defensive copy.
    • getReturnedType

      Class<?> getReturnedType()
      Get the data type stored in the resultant column.
      Returns:
      the type
    • getReturnedComponentType

      Class<?> getReturnedComponentType()
      Get the data component type stored in the resultant column.
      Returns:
      the component type
    • getColumns

      List<String> getColumns()
      Get a list of the names of columns used in this SelectColumn. Behavior is undefined if none of the init* methods have been called yet.
      Returns:
      the columns used in this SelectColumn
    • getColumnArrays

      List<String> getColumnArrays()
      Get a list of the names of column arrays used in this SelectColumn. Behavior is undefined if none of the init* methods have been called yet.
      Returns:
      the list of column arrays used
    • getDataView

      @NotNull @NotNull ColumnSource<?> getDataView()
      Get a ColumnSource that can be used to access the data on demand.
      Returns:
      a ColumnSource
    • getLazyView

      @NotNull @NotNull ColumnSource<?> getLazyView()
      Returns a lazily computed view of this column.
      Returns:
      a lazily computed column source
    • getName

      String getName()
      Get the name of the resultant column.
      Returns:
      the name of the column
    • getMatchPair

      MatchPair getMatchPair()
      Get a MatchPair for this column, if applicable.
      Returns:
      the MatchPair for this column, if applicable.
    • newDestInstance

      WritableColumnSource<?> newDestInstance(long size)
      Create a new WritableColumnSource. The returned column source must be capable of handling updates.
      Parameters:
      size - A hint as to the number of rows that will be used
      Returns:
      a new WritableColumnSource
    • newFlatDestInstance

      WritableColumnSource<?> newFlatDestInstance(long size)
      Create a new immutable WritableColumnSource. The returned column source should be flat, and need not handle updates.
      Parameters:
      size - A hint as to the number of rows that will be used
      Returns:
      a new WritableColumnSource
    • isRetain

      boolean isRetain()
      Returns:
    • validateSafeForRefresh

      default void validateSafeForRefresh(BaseTable<?> sourceTable)
      Validate that this SelectColumn is safe to use in the context of the provided sourceTable.
      Parameters:
      sourceTable - the source table
    • isStateless

      boolean isStateless()
      Returns true if this column is stateless (i.e. one row does not depend on the order of evaluation for another row).
    • hasVirtualRowVariables

      default boolean hasVirtualRowVariables()
      Returns true if this column uses row virtual offset columns of i, ii or k.
    • copy

      SelectColumn copy()
      Create a copy of this SelectColumn.
      Returns:
      an independent copy of this SelectColumn.
    • recomputeOnModifiedRow

      default boolean recomputeOnModifiedRow()
      Should we ignore modified column sets, and always re-evaluate this column when the row changes?
      Returns:
      true if this column should be evaluated on every row modification
    • withRecomputeOnModifiedRow

      default SelectColumn withRecomputeOnModifiedRow()
      Create a copy of this SelectColumn that always re-evaluates itself when a row is modified.
    • newColumn

      default ColumnName newColumn()
      Description copied from interface: Selectable
      The new column name, to be added to the new table.
      Specified by:
      newColumn in interface Selectable
      Returns:
      the new column name
    • expression

      default Expression expression()
      Description copied from interface: Selectable
      The expression.
      Specified by:
      expression in interface Selectable
      Returns:
      the expression