Changing scalar column data type
In general, you can change a column's data type with ALTER TABLE if doing so does not require storage reorganization. After you modify a column's data type, data that you load conforms to the new definition.
The sections that follow describe requirements and restrictions associated with changing a column with a scalar (primitive) data type. For information on modifying complex type columns, see Adding a new field to a complex type column.
Supported data type conversions
Vertica supports conversion for the following data types:
Data Types | Supported Conversions |
---|---|
Binary | Expansion and contraction. |
Character | All conversions between CHAR, VARCHAR, and LONG VARCHAR. |
Exact numeric |
All conversions between the following numeric data types: integer data types—INTEGER, INT, BIGINT, TINYINT, INT8, SMALLINT—and NUMERIC values of scale <=18 and precision 0. You cannot modify the scale of NUMERIC data types; however, you can change precision in the ranges (0-18), (19-37), and so on. |
Collection |
The following conversions are supported:
For details, see Changing Collection Columns. |
Unsupported data type conversions
Vertica does not allow data type conversion on types that require storage reorganization:
-
Boolean
-
DATE/TIME
-
Approximate numeric type
-
BINARY to VARBINARY and vice versa
You also cannot change a column's data type if the column is one of the following:
-
Primary key
-
Foreign key
-
Included in the SEGMENTED BY clause of any projection for that table.
You can work around some of these restrictions. For details, see Working with column data conversions.