public static IAlterTableAction Build(PlSqlParser.AlterTableActionContext context) { if (context.addColumnAction() != null) { var column = TableColumn.Form(context.addColumnAction().tableColumn(), new List<ColumnConstraint>()); return new AddColumnAction(column); } if (context.addConstraintAction() != null) { var constraint = TableConstraint.Form(context.addConstraintAction().tableConstraint()); return new AddConstraintAction(constraint); } if (context.dropColumnAction() != null) { var columnName = context.dropColumnAction().id().GetText(); return new DropColumnAction(columnName); } if (context.dropConstraintAction() != null) { var constraintName = context.dropConstraintAction().id().GetText(); return new DropConstraintAction(constraintName); } if (context.dropPrimaryKeyAction() != null) { return new DropPrimaryKeyAction(); } if (context.dropDefaultAction() != null) { var columnName = Name.Simple(context.dropDefaultAction().columnName()); return new DropDefaultAction(columnName); } if (context.setDefaultAction() != null) { var columnName = Name.Simple(context.setDefaultAction().columnName()); var defaultValue = Expression.Build(context.setDefaultAction().expressionWrapper()); return new SetDefaultAction(columnName, defaultValue); } throw new ParseCanceledException("The ALTER TABLE action is not supported"); }