Package org.h2.table

Class Column

    • Field Detail

      • ROWID

        public static final java.lang.String ROWID
        The name of the rowid pseudo column.
        See Also:
        Constant Field Values
      • NOT_NULLABLE

        public static final int NOT_NULLABLE
        This column is not nullable.
        See Also:
        Constant Field Values
      • NULLABLE_UNKNOWN

        public static final int NULLABLE_UNKNOWN
        It is not know whether this column is nullable.
        See Also:
        Constant Field Values
      • table

        private Table table
      • name

        private java.lang.String name
      • columnId

        private int columnId
      • nullable

        private boolean nullable
      • defaultExpression

        private Expression defaultExpression
      • onUpdateExpression

        private Expression onUpdateExpression
      • defaultOnNull

        private boolean defaultOnNull
      • isGeneratedAlways

        private boolean isGeneratedAlways
      • selectivity

        private int selectivity
      • comment

        private java.lang.String comment
      • primaryKey

        private boolean primaryKey
      • visible

        private boolean visible
      • rowId

        private boolean rowId
      • domain

        private Domain domain
    • Constructor Detail

      • Column

        public Column​(java.lang.String name,
                      TypeInfo type)
      • Column

        public Column​(java.lang.String name,
                      TypeInfo type,
                      Table table,
                      int columnId)
    • Method Detail

      • writeColumns

        public static java.lang.StringBuilder writeColumns​(java.lang.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 java.lang.StringBuilder writeColumns​(java.lang.StringBuilder builder,
                                                           Column[] columns,
                                                           java.lang.String separator,
                                                           java.lang.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​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.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()
      • getColumnId

        public int getColumnId()
      • getSQL

        public java.lang.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 java.lang.StringBuilder getSQL​(java.lang.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 java.lang.StringBuilder getSQLWithTable​(java.lang.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 java.lang.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)
      • 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
      • 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
      • getCreateSQLWithoutName

        public java.lang.String getCreateSQLWithoutName()
      • getCreateSQL

        public java.lang.String getCreateSQL()
      • getCreateSQL

        public java.lang.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 java.lang.String getCreateSQL​(java.lang.StringBuilder builder,
                                              boolean forMeta)
      • isNullable

        public boolean isNullable()
      • 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​(java.lang.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
      • setComment

        public void setComment​(java.lang.String comment)
      • getComment

        public java.lang.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.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