Interface Column
Table. It defines basic properties of a column,
such as name and data type, as well as some advanced ones like default column value.
Data Sources do not need to implement it. They should consume it in APIs like
TableCatalog.createTable(Identifier, Column[], Transform[], Map), and report it in
Table.columns() by calling the static create functions of this interface to
create it.
A column cannot have both a default value and a generation expression.
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic Column.BuilderbuilderFor(String name, DataType dataType) Creates a builder for a new column with the given name and data type.static Column.BuilderbuilderFrom(Column column) Creates a builder with pre-populated info from an existing column.comment()Returns the comment of this table column.static Columnstatic Columnstatic Columnstatic Columncreate(String name, DataType dataType, boolean nullable, String comment, String generationExpression, String metadataInJSON) static Columncreate(String name, DataType dataType, boolean nullable, String comment, ColumnDefaultValue defaultValue, String metadataInJSON) static Columncreate(String name, DataType dataType, boolean nullable, String comment, IdentityColumnSpec identityColumnSpec, String metadataInJSON) dataType()Returns the data type of this table column.Returns the default value of this table column.Returns the generation expression of this table column.default Stringid()Returns the ID of this top-level column, or null.Returns the identity column specification of this table column.Returns the column metadata in JSON format.name()Returns the name of this table column.booleannullable()Returns true if this column may produce null values.
-
Method Details
-
create
-
create
-
create
-
create
-
create
-
create
-
builderFor
Creates a builder for a new column with the given name and data type.- Parameters:
name- the name of the columndataType- the data type of the column- Returns:
- a new builder
- Since:
- 4.2.0
-
builderFrom
Creates a builder with pre-populated info from an existing column.- Parameters:
column- the source column- Returns:
- a new builder seeded with the column's current state
- Since:
- 4.2.0
-
name
String name()Returns the name of this table column. -
dataType
DataType dataType()Returns the data type of this table column. -
nullable
boolean nullable()Returns true if this column may produce null values. -
comment
Returns the comment of this table column. Null means no comment. -
defaultValue
Returns the default value of this table column. Null means no default value. -
generationExpression
Returns the generation expression of this table column. Null means no generation expression.The generation expression is stored as spark SQL dialect. It is up to the data source to verify expression compatibility and reject writes as necessary.
-
identityColumnSpec
Returns the identity column specification of this table column. Null means no identity column. -
metadataInJSON
Returns the column metadata in JSON format. -
id
Returns the ID of this top-level column, or null. The ID is an opt-in identifier that the connector uses to track column identity beyond column name and type.When a non-null ID is returned, the connector commits to the following contract:
- The ID is stable across renames (logical name changes preserve the ID).
- The ID changes when a top-level column is dropped and re-added, even with the same name and type.
- IDs are not reused within a table's history.
When null is returned, Spark skips identity validation for that column. Connectors should return null when:
- The catalog has no notion of column identity beyond name and type, OR
- The connector chooses to treat same-name drop+re-add as the same column (lenient semantics).
This API covers top-level columns only. Nested struct fields, array elements, and map keys/values carry their own IDs in struct field metadata. Spark validates both top-level and nested struct field IDs as part of schema compatibility checks (array elements and map/key values' validation is not supported yet). See
StructField.id().
-