@@ -156,7 +156,7 @@ import (
156156 ChangeColumnClause
157157 RenameColumnClause
158158 AddColumnClause
159- ModidyColumnClause
159+ ModifyColumnClause
160160 RealColumnDefinition
161161 ColumnDefinitionList
162162 ColumnDefinition
@@ -281,7 +281,7 @@ ChangeColumnClause:
281281 {
282282 $$ = $1
283283 }
284- | ModidyColumnClause
284+ | ModifyColumnClause
285285 {
286286 $$ = $1
287287 }
@@ -290,6 +290,8 @@ ChangeColumnClause:
290290 $$ = $1
291291 }
292292
293+ /* +++++++++++++++++++++++++++++++++++++++++++++ add column ++++++++++++++++++++++++++++++++++++++++++++ */
294+
293295AddColumnClause :
294296 _add ' (' ColumnDefinitionList ' )' ColumnProperties OutOfLinePartStorageList
295297 {
@@ -337,7 +339,7 @@ ColumnDefinition:
337339//| VirtualColumnDefinition // TODO ; support
338340
339341RealColumnDefinition :
340- ColumnName Datatype CollateClause SortProperty InvisibleProperty DefaultOrIdentityClause EncryptClause ColumnDefinitionConstraint
342+ ColumnName Datatype CollateClause SortProperty InvisiblePropertyOrEmpty DefaultOrIdentityClause EncryptClause ColumnDefinitionConstraint
341343 {
342344 var collation *ast.Collation
343345 if $3 != nil {
@@ -375,11 +377,17 @@ SortProperty:
375377 $$ = true
376378 }
377379
378- InvisibleProperty :
380+ InvisiblePropertyOrEmpty :
379381 {
380382 $$ = nil
381383 }
382- | _invisible
384+ | InvisibleProperty
385+ {
386+ $$ = $1
387+ }
388+
389+ InvisibleProperty :
390+ _invisible
383391 {
384392 $$ = &ast.InvisibleProperty{Type: ast.InvisiblePropertyInvisible}
385393 }
@@ -479,6 +487,55 @@ InlineConstraintList:
479487 InlineConstraint
480488| InlineConstraintList InlineConstraint
481489
490+ /* +++++++++++++++++++++++++++++++++++++++++++++ modify column ++++++++++++++++++++++++++++++++++++++++++++ */
491+
492+ ModifyColumnClause :
493+ _modify ' (' ModifyColumnProperties ' )'
494+ | _modify ' (' ModifyColumnVisibilityList ' )'
495+ | ModifyColumnSubstitutable
496+
497+ ModifyColumnProperties :
498+ ModifyColumnProperty
499+ | ModifyColumnProperties ' ,' ModifyColumnProperty
500+
501+ ModifyColumnProperty :
502+ ModifyRealColumnProperty
503+ // | ModifyVirtualColumnProperty // TODO
504+
505+ ModifyRealColumnProperty :
506+ ColumnName Datatype CollateClause DefaultOrIdentityClauseForModify EncryptClauseForModify ColumnConstraintForModify
507+
508+ DefaultOrIdentityClauseForModify :
509+ _drop _identity
510+ | DefaultOrIdentityClause
511+
512+ EncryptClauseForModify :
513+ _decrypt
514+ | EncryptClause
515+
516+ ColumnConstraintForModify :
517+ {
518+ // empty
519+ }
520+ | InlineConstraintList
521+
522+ ModifyColumnVisibilityList :
523+ ModifyColumnVisibility
524+ | ModifyColumnVisibilityList ' ,' ModifyColumnVisibility
525+
526+ ModifyColumnVisibility :
527+ ColumnName InvisibleProperty
528+
529+ ModifyColumnSubstitutable :
530+ _column ColumnName _substitutable _at _all _levels IsForce
531+ | _column ColumnName _not _substitutable _at _all _levels IsForce
532+
533+ IsForce :
534+ {
535+ // empty
536+ }
537+ | _force
538+
482539/* +++++++++++++++++++++++++++++++++++++++++++++ datatype ++++++++++++++++++++++++++++++++++++++++++++ */
483540
484541// see : https ://docs.oracle.com /en /database /oracle /oracle-database /21/sqlrf /Data-Types.html #GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483
0 commit comments