nodeAlterTableAddColumn converts a tree.AlterTableAddColumn instance into an equivalent vitess.DDL instance.
(ctx *Context, node *tree.AlterTableAddColumn, tableName vitess.TableName, ifExists bool)
| 243 | |
| 244 | // nodeAlterTableAddColumn converts a tree.AlterTableAddColumn instance into an equivalent vitess.DDL instance. |
| 245 | func nodeAlterTableAddColumn(ctx *Context, node *tree.AlterTableAddColumn, tableName vitess.TableName, ifExists bool) (*vitess.DDL, error) { |
| 246 | if node.IfNotExists { |
| 247 | return nil, errors.Errorf("IF NOT EXISTS on a column in an ADD COLUMN statement is not supported yet") |
| 248 | } |
| 249 | |
| 250 | vitessColumnDef, err := nodeColumnTableDef(ctx, node.ColumnDef) |
| 251 | if err != nil { |
| 252 | return nil, err |
| 253 | } |
| 254 | |
| 255 | tableSpec := &vitess.TableSpec{} |
| 256 | tableSpec.AddColumn(vitessColumnDef) |
| 257 | |
| 258 | if node.ColumnDef.References.Table != nil { |
| 259 | constraintDef, err := nodeForeignKeyDefinitionFromColumnTableDef(ctx, node.ColumnDef.Name, node.ColumnDef) |
| 260 | if err != nil { |
| 261 | return nil, err |
| 262 | } |
| 263 | tableSpec.AddConstraint(&vitess.ConstraintDefinition{ |
| 264 | Name: string(node.ColumnDef.References.ConstraintName), |
| 265 | Details: constraintDef, |
| 266 | }) |
| 267 | } |
| 268 | |
| 269 | return &vitess.DDL{ |
| 270 | Action: "alter", |
| 271 | ColumnAction: "add", |
| 272 | Table: tableName, |
| 273 | IfExists: ifExists, |
| 274 | Column: vitessColumnDef.Name, |
| 275 | TableSpec: tableSpec, |
| 276 | }, nil |
| 277 | } |
| 278 | |
| 279 | // nodeAlterTableDropColumn converts a tree.AlterTableDropColumn instance into an equivalent vitess.DDL instance. |
| 280 | func nodeAlterTableDropColumn(ctx *Context, node *tree.AlterTableDropColumn, tableName vitess.TableName, ifExists bool) (*vitess.DDL, error) { |
no test coverage detected