MCPcopy Create free account
hub / github.com/dolthub/doltgresql / nodeAlterTableAddColumn

Function nodeAlterTableAddColumn

server/ast/alter_table.go:245–277  ·  view source on GitHub ↗

nodeAlterTableAddColumn converts a tree.AlterTableAddColumn instance into an equivalent vitess.DDL instance.

(ctx *Context, node *tree.AlterTableAddColumn, tableName vitess.TableName, ifExists bool)

Source from the content-addressed store, hash-verified

243
244// nodeAlterTableAddColumn converts a tree.AlterTableAddColumn instance into an equivalent vitess.DDL instance.
245func 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.
280func nodeAlterTableDropColumn(ctx *Context, node *tree.AlterTableDropColumn, tableName vitess.TableName, ifExists bool) (*vitess.DDL, error) {

Callers 1

nodeAlterTableCmdsFunction · 0.85

Calls 3

nodeColumnTableDefFunction · 0.85
ErrorfMethod · 0.65

Tested by

no test coverage detected