ALTER TABLE
where column_constraint
is:
NOT NULL |
INDEX { OFF | USING { PLAIN |
FULLTEXT [ WITH ( analyzer = analyzer_name ) ] } |
[ CONSTRAINT constraint_name ] CHECK (boolean_expression)
}
ALTER TABLE
can be used to modify an existing table definition. It provides options to add columns, modify constraints, enabling or disabling table parameters and allows to execute a shard reroute allocation.
Use the keyword in order to alter a blob table (see ). Blob tables cannot have custom columns which means that the ADD COLUMN
keyword won’t work.
While altering a partitioned table, using ONLY
will apply changes for the table only and not for any possible existing partitions. So these changes will only be applied to new partitions. The ONLY
keyword cannot be used together with a PARTITION clause.
See CREATE TABLE
for a list of available parameters.
table_ident
The name (optionally schema-qualified) of the table to alter.
If the table is partitioned, the optional PARTITION
clause can be used to alter one partition exclusively.
partition_column
One of the column names used for table partitioning.
value
The respective column value.
All (specified by the PARTITIONED BY clause) must be listed inside the parentheses along with their respective values using the partition_column = value
syntax (separated by commas).
Because each partition corresponds to a unique set of row values, this clause uniquely identifies a single partition to alter.
Tip
The SHOW CREATE TABLE statement will show you the complete list of partition columns specified by the clause.
Note
BLOB tables cannot be partitioned and hence this clause cannot be used.
See also
Can be used to change a table parameter to a different value. Using RESET
will reset the parameter to its default value.
parameter
The name of the parameter that is set to a new value or its default.
The supported parameters are listed in the CREATE TABLE WITH CLAUSE documentation. In addition to those, for dynamically changing the number of , the parameter number_of_shards
can be used. For more more info on that, see Changing the number of shards.
Can be used to add an additional column to a table. While columns can be added at any time, adding a new is only possible if the table is empty. In addition, adding a base column with Default clause is not supported. It is possible to define a CHECK
constraint with the restriction that only the column being added may be used in the .
data_type
Data type of the column which should be added.
column_name
Name of the column which should be added.
Can be used to open or close the table.
Closing a table means that all operations, except ALTER TABLE ... OPEN
, will fail. Operations that fail will not return an error, but they will have no effect. Operations on tables containing closed partitions won’t fail, but those operations will exclude all closed partitions.
Can be used to rename a table, while maintaining its schema and data. During this operation the shards of the table will become temporarily unavailable.
The command provides various options to manually control the allocation of shards. It allows the enforcement of explicit allocations, cancellations and the moving of shards between nodes in a cluster. See to get the convenient use-cases.
The rowcount defines if the reroute or allocation process of a shard was acknowledged or rejected.
Note
Tables require a PARTITION clause in order to specify a unique shard_id
.
where reroute_option
is:
shard_id
The shard ID. Ranges from 0 up to the specified number of shards of a table.
The ID or name of a node within the cluster.
See Nodes how to gain the unique ID.
REROUTE
supports the following options to start/stop shard allocation:
MOVE
A started shard gets moved from one node to another. It requests a table_ident
and a shard_id
to identify the shard that receives the new allocation. Specify FROM node
for the node to move the shard from and TO node
to move the shard to.
ALLOCATE REPLICA
Allows to force allocation of an unassigned replica shard on a specific node.
PROMOTE REPLICA Force promote a stale replica shard to a primary. In case
a node holding a primary copy of a shard had a failure and the replica shards are out of sync, the system won’t promote the replica to primary automatically, as it would result in a silent data loss.
Ideally the node holding the primary copy of the shard would be brought back into the cluster, but if that is not possible due to a permanent system failure, it is possible to accept the potential data loss and force promote a stale replica using this command.
The parameter accept_data_loss
needs to be set to true
in order for this command to work. If it is not provided or set to false, the command will error out.
CANCEL
This cancels the allocation or of a shard_id
of a table_ident
on a given node
. The allow_primary
flag indicates if it is allowed to cancel the allocation of a primary shard.
Removes a CHECK constraint from a table.
ALTER TABLE table_ident DROP CONSTRAINT check_name
table_ident
The name (optionally schema-qualified) of the table.
check_name
The name of the check constraint to be removed.
Warning