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()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.SelectColumn
alwaysEvaluate, alwaysEvaluateCopy, copy, 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
-
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
-