[#5955] Added support for parsing ALTER COLUMN
This commit is contained in:
parent
0ec191b973
commit
9b180d7b14
@ -44,6 +44,7 @@ alterTableStatement = 'ALTER TABLE' [ 'IF EXISTS' ] tableName break
|
||||
| 'DEFAULT' concat
|
||||
)
|
||||
}
|
||||
| ( 'ALTER' | 'MODIFY' ) [ 'COLUMN' ] identifier dataType [ [ 'NOT' ] 'NULL' ]
|
||||
| 'DROP COLUMN' identifier [ 'CASCADE' | 'RESTRICT' ]
|
||||
| 'DROP CONSTRAINT' constraintName
|
||||
| 'RENAME' [ ( 'COLUMN' | 'INDEX' | 'CONSTRAINT' ) identifier ] 'TO' identifier
|
||||
|
||||
@ -1677,6 +1677,10 @@ class ParserImpl implements Parser {
|
||||
return s1.add(field(fieldName, type), type);
|
||||
}
|
||||
}
|
||||
else if (parseKeywordIf(ctx, "ALTER")) {
|
||||
parseKeywordIf(ctx, "COLUMN");
|
||||
return parseAlterTableAlterColumn(ctx, s1);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@ -1706,6 +1710,14 @@ class ParserImpl implements Parser {
|
||||
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
case 'M':
|
||||
if (parseKeywordIf(ctx, "MODIFY")) {
|
||||
parseKeywordIf(ctx, "COLUMN");
|
||||
return parseAlterTableAlterColumn(ctx, s1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
case 'R':
|
||||
if (parseKeywordIf(ctx, "RENAME")) {
|
||||
@ -1743,6 +1755,22 @@ class ParserImpl implements Parser {
|
||||
throw ctx.unexpectedToken();
|
||||
}
|
||||
|
||||
private static final DDLQuery parseAlterTableAlterColumn(ParserContext ctx, AlterTableStep s1) {
|
||||
TableField<?, ?> field = parseFieldName(ctx);
|
||||
|
||||
if (parseKeywordIf(ctx, "TYPE") || parseKeywordIf(ctx, "SET DATA TYPE"))
|
||||
;
|
||||
|
||||
DataType<?> type = parseDataType(ctx);
|
||||
|
||||
if (parseKeywordIf(ctx, "NULL"))
|
||||
type = type.nullable(true);
|
||||
else if (parseKeywordIf(ctx, "NOT NULL"))
|
||||
type = type.nullable(false);
|
||||
|
||||
return s1.alter(field).set(type);
|
||||
}
|
||||
|
||||
private static final DDLQuery parseRename(ParserContext ctx) {
|
||||
parseKeyword(ctx, "RENAME");
|
||||
parseWhitespaceIf(ctx);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user