nodeAlterTableCmds converts tree.AlterTableCmds into a slice of vitess.DDL instances that can be executed by GMS. |tableName| identifies the table being altered, and |ifExists| indicates whether the IF EXISTS clause was specified. A second slice of unsupported but safely ignored statements is return
( ctx *Context, node tree.AlterTableCmds, tableName vitess.TableName, ifExists bool)
| 92 | // |tableName| identifies the table being altered, and |ifExists| indicates whether the IF EXISTS clause was specified. |
| 93 | // A second slice of unsupported but safely ignored statements is return as well. |
| 94 | func nodeAlterTableCmds( |
| 95 | ctx *Context, |
| 96 | node tree.AlterTableCmds, |
| 97 | tableName vitess.TableName, |
| 98 | ifExists bool) ([]*vitess.DDL, []string, error) { |
| 99 | |
| 100 | if len(node) == 0 { |
| 101 | return nil, nil, errors.Errorf("no commands specified for ALTER TABLE statement") |
| 102 | } |
| 103 | |
| 104 | vitessDdlCmds := make([]*vitess.DDL, 0, len(node)) |
| 105 | var unsupportedWarnings []string |
| 106 | for _, cmd := range node { |
| 107 | var err error |
| 108 | var statement *vitess.DDL |
| 109 | switch cmd := cmd.(type) { |
| 110 | case *tree.AlterTableAddConstraint: |
| 111 | statement, err = nodeAlterTableAddConstraint(ctx, cmd, tableName, ifExists) |
| 112 | if err != nil { |
| 113 | return nil, nil, err |
| 114 | } |
| 115 | vitessDdlCmds = append(vitessDdlCmds, statement) |
| 116 | case *tree.AlterTableAddColumn: |
| 117 | statement, err = nodeAlterTableAddColumn(ctx, cmd, tableName, ifExists) |
| 118 | if err != nil { |
| 119 | return nil, nil, err |
| 120 | } |
| 121 | vitessDdlCmds = append(vitessDdlCmds, statement) |
| 122 | |
| 123 | // If inline constraints have been specified, set the ConstraintAction so that they get processed |
| 124 | if len(statement.TableSpec.Constraints) > 0 { |
| 125 | statement.ConstraintAction = vitess.AddStr |
| 126 | } |
| 127 | |
| 128 | case *tree.AlterTableDropColumn: |
| 129 | statement, err = nodeAlterTableDropColumn(ctx, cmd, tableName, ifExists) |
| 130 | if err != nil { |
| 131 | return nil, nil, err |
| 132 | } |
| 133 | vitessDdlCmds = append(vitessDdlCmds, statement) |
| 134 | case *tree.AlterTableDropConstraint: |
| 135 | statement, err = nodeAlterTableDropConstraint(ctx, cmd, tableName, ifExists) |
| 136 | if err != nil { |
| 137 | return nil, nil, err |
| 138 | } |
| 139 | vitessDdlCmds = append(vitessDdlCmds, statement) |
| 140 | case *tree.AlterTableRenameColumn: |
| 141 | statement, err = nodeAlterTableRenameColumn(ctx, cmd, tableName, ifExists) |
| 142 | if err != nil { |
| 143 | return nil, nil, err |
| 144 | } |
| 145 | vitessDdlCmds = append(vitessDdlCmds, statement) |
| 146 | case *tree.AlterTableSetDefault: |
| 147 | statement, err = nodeAlterTableSetDefault(ctx, cmd, tableName, ifExists) |
| 148 | if err != nil { |
| 149 | return nil, nil, err |
| 150 | } |
| 151 | vitessDdlCmds = append(vitessDdlCmds, statement) |
no test coverage detected