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
    • 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
      • convert

        public static ValueRow convert​(CastDataProvider provider,
                                       Column[] columns,
                                       ValueRow valueRow)
        Converts the values in a ValueRow based on the passed column info. Creates a new instance if any of the contained item must be converted. Otherwise, returns the same valueRow.
        Parameters:
        provider - the cast information provider
        columns - the column info list used for the conversation
        valueRow - the holder of the values
        Returns:
        a ValueRow which contains the converted values
        See Also:
        convert(CastDataProvider, 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
      • setType

        public void setType​(TypeInfo 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
      • 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
      • 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
      • 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)
      • 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