Package com.illumon.iris.db.v2.select
Class AbstractFormulaColumn
java.lang.Object
com.illumon.iris.db.v2.select.AbstractFormulaColumn
- All Implemented Interfaces:
FormulaColumn,SelectColumn
- Direct Known Subclasses:
DhFormulaColumn,NumbaFormulaColumn
public abstract class AbstractFormulaColumn extends Object implements FormulaColumn
A SelectColumn that implements a formula computed from the existing columns in the table and a query scope.
-
Field Summary
Fields Modifier and Type Field Description static StringCOLUMN_SUFFIXprotected StringcolumnNameprotected Map<String,? extends ColumnSource>columnSourcesprotected StringformulaStringprotected Param[]paramsprotected ClassreturnedTypeprotected List<String>usedColumnArraysprotected List<String>usedColumnsprotected List<String>userParamsprotected booleanusesIprotected booleanusesIIprotected booleanusesKFields inherited from interface com.illumon.iris.db.v2.select.SelectColumn
ZERO_LENGTH_SELECT_COLUMN_ARRAY -
Method Summary
Modifier and Type Method Description protected voidapplyUsedVariables(Map<String,com.illumon.dataobjects.ColumnDefinition> columnDefinitionMap, Set<String> variablesUsed)protected FormulaFactorycreateFormulaFactory()booleandisallowRefresh()Should we disallow use of this column for refreshing tables? Some formulas can not be reliably computed with a refreshing table, therefore we will refuse to compute those values.List<String>getColumnArrays()Get a list of the names of column arrays used in this SelectColumn.List<String>getColumns()Get a list of the names of columns used in this SelectColumn.ColumnSourcegetDataView()Creates aColumnSourcethat will evaluate the result of theformulafor a given row on demand when it is accessed.protected abstract FormulaKernelFactorygetFormulaKernelFactory()ColumnSourcegetLazyView()Creates aColumnSourcethat will evaluate the result of theformulafor a given row on demand when it is accessed and cache the resultMatchPairgetMatchPair()Get a MatchPair for this column, if applicable.StringgetName()Get the name of the resultant column.ClassgetReturnedType()Get the data type stored in the resultant column.protected abstract FormulaSourceDescriptorgetSourceDescriptor()List<String>initInputs(Table table)Initialize the SelectColumn using the input table and return a list of underlying columns that this SelectColumn is dependent upon.List<String>initInputs(Index index, Map<String,? extends ColumnSource> columnsOfInterest)Initialize the column from the provided set of underlying columns and index.booleanisRetain()static DbArrayBasemakeAppropriateDbArrayWrapper(ColumnSource cs, Index index)WritableSourcenewDestInstance(long size)Create a newWritableSourcewith sufficient capacity for the rows in the index.StringtoString()ColumnSourceupdateData(WritableSource result, long destPos, long sourcePos)Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.illumon.iris.db.v2.select.FormulaColumn
getFormulaShiftColPair, hasConstantArrayAccess, hasConstantValueMethods inherited from interface com.illumon.iris.db.v2.select.SelectColumn
alwaysEvaluate, alwaysEvaluateCopy, copy, getConstantValueView, initDef
-
Field Details
-
formulaString
-
usedColumns
-
columnName
-
userParams
-
params
-
columnSources
-
returnedType
-
COLUMN_SUFFIX
- See Also:
- Constant Field Values
-
usedColumnArrays
-
usesI
protected boolean usesI -
usesII
protected boolean usesII -
usesK
protected boolean usesK
-
-
Method Details
-
initInputs
Description copied from interface:SelectColumnInitialize the SelectColumn using the input table and return a list of underlying columns that this SelectColumn is dependent upon.- Specified by:
initInputsin interfaceSelectColumn- Parameters:
table- the table to initialize internals from- Returns:
- a list containing all columns from 'table' that the result depends on
-
getReturnedType
Description copied from interface:SelectColumnGet the data type stored in the resultant column.- Specified by:
getReturnedTypein interfaceSelectColumn- Returns:
- the type
-
initInputs
Description copied from interface:SelectColumnInitialize the column from the provided set of underlying columns and index.- Specified by:
initInputsin interfaceSelectColumn- Parameters:
index- the base indexcolumnsOfInterest- the input columns- Returns:
- a list of columns on which the result of this is dependent
-
applyUsedVariables
-
getColumns
Description copied from interface:SelectColumnGet a list of the names of columns used in this SelectColumn. Behavior is undefined if none of the init* methods have been called yet.- Specified by:
getColumnsin interfaceSelectColumn- Returns:
- the columns used in this SelectColumn
-
getColumnArrays
Description copied from interface:SelectColumnGet 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.- Specified by:
getColumnArraysin interfaceSelectColumn- Returns:
- the list of column arrays used
-
updateData
- Specified by:
updateDatain interfaceFormulaColumn
-
getDataView
Creates a
ColumnSourcethat will evaluate the result of theformulafor a given row on demand when it is accessed.The result of this is the column source produced by calling
Table.updateView(com.illumon.iris.db.v2.select.SelectColumn...)orTable.view(com.illumon.iris.db.v2.select.SelectColumn...)on aTable.- Specified by:
getDataViewin interfaceSelectColumn- Returns:
- a
ColumnSource
-
getLazyView
Creates aColumnSourcethat will evaluate the result of theformulafor a given row on demand when it is accessed and cache the result- Specified by:
getLazyViewin interfaceSelectColumn- Returns:
- the column source produced by calling
Table.lazyUpdate(com.illumon.iris.db.v2.select.SelectColumn...)on aTable.
-
createFormulaFactory
-
makeAppropriateDbArrayWrapper
-
getSourceDescriptor
-
getFormulaKernelFactory
-
getName
Description copied from interface:SelectColumnGet the name of the resultant column.- Specified by:
getNamein interfaceSelectColumn- Returns:
- the name of the column
-
getMatchPair
Description copied from interface:SelectColumnGet a MatchPair for this column, if applicable.- Specified by:
getMatchPairin interfaceSelectColumn- Returns:
-
isRetain
public boolean isRetain()- Specified by:
isRetainin interfaceSelectColumn- Returns:
-
toString
-
newDestInstance
Description copied from interface:SelectColumnCreate a newWritableSourcewith sufficient capacity for the rows in the index.- Specified by:
newDestInstancein interfaceSelectColumn- Parameters:
size- The number of rows to allocate- Returns:
- a new
WritableSourcewith sufficient capacity for 'dataSubset'
-
disallowRefresh
public boolean disallowRefresh()Description copied from interface:SelectColumnShould we disallow use of this column for refreshing tables? Some formulas can not be reliably computed with a refreshing table, therefore we will refuse to compute those values.- Specified by:
disallowRefreshin interfaceSelectColumn
-