Package org.h2.table

Class Column

java.lang.Object
org.h2.table.Column
All Implemented Interfaces:
ColumnTemplate, HasSQL, Typed

public final class Column extends Object implements HasSQL, Typed, ColumnTemplate
This class represents a column in a table.
  • Field Details

    • ROWID

      public static final String ROWID
      The name of the rowid pseudo column.
      See Also:
    • NOT_NULLABLE

      public static final int NOT_NULLABLE
      This column is not nullable.
      See Also:
    • NULLABLE

      public static final int NULLABLE
      This column is nullable.
      See Also:
    • NULLABLE_UNKNOWN

      public static final int NULLABLE_UNKNOWN
      It is not know whether this column is nullable.
      See Also:
    • type

      private TypeInfo type
    • table

      private Table table
    • name

      private String name
    • columnId

      private int columnId
    • nullable

      private boolean nullable
    • defaultExpression

      private Expression defaultExpression
    • onUpdateExpression

      private Expression onUpdateExpression
    • identityOptions

      private SequenceOptions identityOptions
    • defaultOnNull

      private boolean defaultOnNull
    • sequence

      private Sequence sequence
    • isGeneratedAlways

      private boolean isGeneratedAlways
    • generatedTableFilter

      private GeneratedColumnResolver generatedTableFilter
    • selectivity

      private int selectivity
    • comment

      private String comment
    • primaryKey

      private boolean primaryKey
    • visible

      private boolean visible
    • rowId

      private boolean rowId
    • domain

      private Domain domain
  • Constructor Details

  • Method Details

    • writeColumns

      public static StringBuilder writeColumns(StringBuilder builder, Column[] columns, int sqlFlags)
      Appends the specified columns to the specified builder.
      Parameters:
      builder - string builder
      columns - columns
      sqlFlags - formatting flags
      Returns:
      the specified string builder
    • writeColumns

      public static StringBuilder writeColumns(StringBuilder builder, Column[] columns, String separator, String suffix, int sqlFlags)
      Appends the specified columns to the specified builder.
      Parameters:
      builder - string builder
      columns - columns
      separator - separator
      suffix - additional SQL to append after each column
      sqlFlags - formatting flags
      Returns:
      the specified string builder
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getClone

      public Column getClone()
    • convert

      public Value convert(CastDataProvider provider, Value v)
      Convert a value to this column's type without precision and scale checks.
      Parameters:
      provider - the cast information provider
      v - the value
      Returns:
      the value
    • isIdentity

      public boolean isIdentity()
      Returns whether this column is an identity column.
      Returns:
      whether this column is an identity column
    • isGenerated

      public boolean isGenerated()
      Returns whether this column is a generated column.
      Returns:
      whether this column is a generated column
    • isGeneratedAlways

      public boolean isGeneratedAlways()
      Returns whether this column is a generated column or always generated identity column.
      Returns:
      whether this column is a generated column or always generated identity column
    • setGeneratedExpression

      public void setGeneratedExpression(Expression expression)
      Set the default value in the form of a generated expression of other columns.
      Parameters:
      expression - the computed expression
    • setTable

      public void setTable(Table table, int columnId)
      Set the table and column id.
      Parameters:
      table - the table
      columnId - the column index
    • getTable

      public Table getTable()
    • setDefaultExpression

      public void setDefaultExpression(SessionLocal session, Expression defaultExpression)
      Description copied from interface: ColumnTemplate
      Set the default expression.
      Specified by:
      setDefaultExpression in interface ColumnTemplate
      Parameters:
      session - the session
      defaultExpression - the default expression
    • setOnUpdateExpression

      public void setOnUpdateExpression(SessionLocal session, Expression onUpdateExpression)
      Description copied from interface: ColumnTemplate
      Set the on update expression.
      Specified by:
      setOnUpdateExpression in interface ColumnTemplate
      Parameters:
      session - the session
      onUpdateExpression - the on update expression
    • getColumnId

      public int getColumnId()
    • getSQL

      public String getSQL(int sqlFlags)
      Description copied from interface: HasSQL
      Get the SQL statement of this expression. This may not always be the original SQL statement, specially after optimization.
      Specified by:
      getSQL in interface HasSQL
      Parameters:
      sqlFlags - formatting flags
      Returns:
      the SQL statement
    • getSQL

      public StringBuilder getSQL(StringBuilder builder, int sqlFlags)
      Description copied from interface: HasSQL
      Appends the SQL statement of this object to the specified builder.
      Specified by:
      getSQL in interface HasSQL
      Parameters:
      builder - string builder
      sqlFlags - formatting flags
      Returns:
      the specified string builder
    • getSQLWithTable

      public StringBuilder getSQLWithTable(StringBuilder builder, int sqlFlags)
      Appends the table name and column name to the specified builder.
      Parameters:
      builder - the string builder
      sqlFlags - formatting flags
      Returns:
      the specified string builder
    • getName

      public String getName()
    • getType

      public TypeInfo getType()
      Description copied from interface: Typed
      Returns the data type.
      Specified by:
      getType in interface Typed
      Returns:
      the data type
    • setNullable

      public void setNullable(boolean b)
    • getVisible

      public boolean getVisible()
    • setVisible

      public void setVisible(boolean b)
    • getDomain

      public Domain getDomain()
      Specified by:
      getDomain in interface ColumnTemplate
    • setDomain

      public void setDomain(Domain domain)
      Specified by:
      setDomain in interface ColumnTemplate
    • isRowId

      public boolean isRowId()
      Returns whether this column is a row identity column.
      Returns:
      true for _ROWID_ column, false otherwise
    • setRowId

      public void setRowId(boolean rowId)
      Set row identity flag.
      Parameters:
      rowId - true _ROWID_ column, false otherwise
    • validateConvertUpdateSequence

      Value validateConvertUpdateSequence(SessionLocal session, Value value, Row row)
      Validate the value, convert it if required, and update the sequence value if required. If the value is null, the default value (NULL if no default is set) is returned. Domain constraints are validated as well.
      Parameters:
      session - the session
      value - the value or null
      row - the row
      Returns:
      the new or converted value
    • getDefaultOrGenerated

      private Value getDefaultOrGenerated(SessionLocal session, Row row)
    • getDataConversionError

      private DbException getDataConversionError(Value value, DbException cause)
    • updateSequenceIfRequired

      private void updateSequenceIfRequired(SessionLocal session, long value)
    • initializeSequence

      public void initializeSequence(SessionLocal session, Schema schema, int id, boolean temporary)
      Initialize the sequence for this column.
      Parameters:
      session - the session
      schema - the schema where the sequence should be generated
      id - the object id
      temporary - true if the sequence is temporary and does not need to be stored
    • prepareExpressions

      public void prepareExpressions(SessionLocal session)
      Description copied from interface: ColumnTemplate
      Prepare all expressions of this column or domain.
      Specified by:
      prepareExpressions in interface ColumnTemplate
      Parameters:
      session - the session
    • getCreateSQLWithoutName

      public String getCreateSQLWithoutName()
    • getCreateSQL

      public String getCreateSQL()
    • getCreateSQL

      public String getCreateSQL(boolean forMeta)
      Get this columns part of CREATE TABLE SQL statement.
      Parameters:
      forMeta - whether this is for the metadata table
      Returns:
      the SQL statement
    • getCreateSQL

      private String getCreateSQL(StringBuilder builder, boolean forMeta)
    • isNullable

      public boolean isNullable()
    • getDefaultExpression

      public Expression getDefaultExpression()
      Specified by:
      getDefaultExpression in interface ColumnTemplate
    • getEffectiveDefaultExpression

      public Expression getEffectiveDefaultExpression()
      Specified by:
      getEffectiveDefaultExpression in interface ColumnTemplate
    • getOnUpdateExpression

      public Expression getOnUpdateExpression()
      Specified by:
      getOnUpdateExpression in interface ColumnTemplate
    • getEffectiveOnUpdateExpression

      public Expression getEffectiveOnUpdateExpression()
      Specified by:
      getEffectiveOnUpdateExpression in interface ColumnTemplate
    • hasIdentityOptions

      public boolean hasIdentityOptions()
      Whether the column has any identity options.
      Returns:
      true if yes
    • setIdentityOptions

      public void setIdentityOptions(SequenceOptions identityOptions, boolean generatedAlways)
      Set the identity options of this column.
      Parameters:
      identityOptions - identity column options
      generatedAlways - whether value should be always generated
    • removeNonIdentityProperties

      private void removeNonIdentityProperties()
    • getIdentityOptions

      public SequenceOptions getIdentityOptions()
      Returns identity column options, or null if sequence was already created or this column is not an identity column.
      Returns:
      identity column options, or null
    • setDefaultOnNull

      public void setDefaultOnNull(boolean defaultOnNull)
    • isDefaultOnNull

      public boolean isDefaultOnNull()
    • rename

      public void rename(String newName)
      Rename the column. This method will only set the column name to the new value.
      Parameters:
      newName - the new column name
    • setSequence

      public void setSequence(Sequence sequence, boolean generatedAlways)
      Set the sequence to generate the value.
      Parameters:
      sequence - the sequence
      generatedAlways - whether the value of the sequence is always used
    • getSequence

      public Sequence getSequence()
    • getSelectivity

      public int getSelectivity()
      Get the selectivity of the column. Selectivity 100 means values are unique, 10 means every distinct value appears 10 times on average.
      Returns:
      the selectivity
    • setSelectivity

      public void setSelectivity(int selectivity)
      Set the new selectivity of a column.
      Parameters:
      selectivity - the new value
    • getDefaultSQL

      public String getDefaultSQL()
      Specified by:
      getDefaultSQL in interface ColumnTemplate
    • getOnUpdateSQL

      public String getOnUpdateSQL()
      Specified by:
      getOnUpdateSQL in interface ColumnTemplate
    • setComment

      public void setComment(String comment)
    • getComment

      public String getComment()
    • setPrimaryKey

      public void setPrimaryKey(boolean primaryKey)
    • isEverything

      boolean isEverything(ExpressionVisitor visitor)
      Visit the default expression, the check constraint, and the sequence (if any).
      Parameters:
      visitor - the visitor
      Returns:
      true if every visited expression returned true, or if there are no expressions
    • isPrimaryKey

      public boolean isPrimaryKey()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • isWideningConversion

      public boolean isWideningConversion(Column newColumn)
      Check whether the new column is of the same type and not more restricted than this column.
      Parameters:
      newColumn - the new (target) column
      Returns:
      true if the new column is compatible
    • copy

      public void copy(Column source)
      Copy the data of the source column into the current column.
      Parameters:
      source - the source column