@@ -56,6 +56,7 @@ enum class PlSqlGrammar : GrammarRuleKey {
56
56
CUSTOM_DATATYPE ,
57
57
REF_DATATYPE ,
58
58
JSON_DATATYPE ,
59
+ DATATYPE_NULL_CONSTRAINT ,
59
60
60
61
// Literals
61
62
LITERAL ,
@@ -453,10 +454,14 @@ enum class PlSqlGrammar : GrammarRuleKey {
453
454
ANCHORED_DATATYPE ,
454
455
REF_DATATYPE ,
455
456
JSON_DATATYPE ,
456
- CUSTOM_DATATYPE ),
457
- b.optional(b.firstOf(
458
- b.sequence(NOT , NULL ),
459
- NULL )))
457
+ CUSTOM_DATATYPE ))
458
+
459
+ b.rule(DATATYPE_NULL_CONSTRAINT ).define(
460
+ b.firstOf(
461
+ b.sequence(NOT , NULL ),
462
+ NULL
463
+ )
464
+ )
460
465
}
461
466
462
467
private fun createStatements (b : PlSqlGrammarBuilder ) {
@@ -525,7 +530,8 @@ enum class PlSqlGrammar : GrammarRuleKey {
525
530
b.rule(ITERAND_DECLARATION ).define(
526
531
IDENTIFIER_NAME ,
527
532
b.optional(b.firstOf(MUTABLE , IMMUTABLE )),
528
- b.optional(DATATYPE ))
533
+ b.optional(DATATYPE ),
534
+ b.optional(DATATYPE_NULL_CONSTRAINT ))
529
535
530
536
b.rule(ITERATION_CTL_SEQ ).define(QUAL_ITERATION_CTL , b.zeroOrMore(COMMA , QUAL_ITERATION_CTL )).skip()
531
537
@@ -944,16 +950,19 @@ enum class PlSqlGrammar : GrammarRuleKey {
944
950
b.firstOf(
945
951
b.sequence(
946
952
DATATYPE ,
953
+ b.optional(DATATYPE_NULL_CONSTRAINT ),
947
954
b.optional(DEFAULT_VALUE_ASSIGNMENT )),
948
955
EXCEPTION ),
949
956
SEMICOLON )
950
957
951
958
b.rule(EXCEPTION_DECLARATION ).define(IDENTIFIER_NAME , EXCEPTION , SEMICOLON )
952
959
953
960
b.rule(CUSTOM_SUBTYPE ).define(
954
- SUBTYPE , IDENTIFIER_NAME , IS , DATATYPE ,
955
- b.optional(RANGE_KEYWORD , NUMERIC_LITERAL , RANGE , NUMERIC_LITERAL ),
956
- SEMICOLON )
961
+ SUBTYPE , IDENTIFIER_NAME , IS , DATATYPE ,
962
+ b.optional(DATATYPE_NULL_CONSTRAINT ),
963
+ b.optional(RANGE_KEYWORD , NUMERIC_LITERAL , RANGE , NUMERIC_LITERAL ),
964
+ SEMICOLON
965
+ )
957
966
958
967
b.rule(CURSOR_PARAMETER_DECLARATION ).define(
959
968
IDENTIFIER_NAME ,
@@ -970,25 +979,28 @@ enum class PlSqlGrammar : GrammarRuleKey {
970
979
b.optional(IS , SELECT_EXPRESSION ), SEMICOLON )
971
980
972
981
b.rule(RECORD_FIELD_DECLARATION ).define(
973
- IDENTIFIER_NAME , DATATYPE ,
974
- b.optional(DEFAULT_VALUE_ASSIGNMENT ))
982
+ IDENTIFIER_NAME , DATATYPE ,
983
+ b.optional(DATATYPE_NULL_CONSTRAINT ),
984
+ b.optional(DEFAULT_VALUE_ASSIGNMENT )
985
+ )
975
986
976
987
b.rule(RECORD_DECLARATION ).define(
977
988
TYPE , IDENTIFIER_NAME , IS , RECORD ,
978
989
LPARENTHESIS , RECORD_FIELD_DECLARATION , b.zeroOrMore(COMMA , RECORD_FIELD_DECLARATION ), RPARENTHESIS ,
979
990
SEMICOLON )
980
991
981
- b.rule(NESTED_TABLE_DEFINITION ).define(TABLE , OF , DATATYPE )
992
+ b.rule(NESTED_TABLE_DEFINITION ).define(TABLE , OF , DATATYPE , b.optional( DATATYPE_NULL_CONSTRAINT ) )
982
993
983
994
b.rule(TABLE_OF_DECLARATION ).define(
984
995
TYPE , IDENTIFIER_NAME , IS , NESTED_TABLE_DEFINITION ,
985
- b.optional(INDEX , BY , DATATYPE ),
996
+ b.optional(INDEX , BY , DATATYPE , b.optional( DATATYPE_NULL_CONSTRAINT ) ),
986
997
SEMICOLON )
987
998
988
999
b.rule(VARRAY_TYPE_DEFINITION ).define(
989
- b.firstOf(VARRAY , b.sequence(b.optional(VARYING ), ARRAY )),
990
- LPARENTHESIS , INTEGER_LITERAL , RPARENTHESIS ,
991
- OF , DATATYPE )
1000
+ b.firstOf(VARRAY , b.sequence(b.optional(VARYING ), ARRAY )),
1001
+ LPARENTHESIS , INTEGER_LITERAL , RPARENTHESIS ,
1002
+ OF , DATATYPE , b.optional(DATATYPE_NULL_CONSTRAINT )
1003
+ )
992
1004
993
1005
b.rule(VARRAY_DECLARATION ).define(
994
1006
TYPE , IDENTIFIER_NAME , IS , VARRAY_TYPE_DEFINITION , SEMICOLON )
@@ -1299,7 +1311,7 @@ enum class PlSqlGrammar : GrammarRuleKey {
1299
1311
b.optional(ORDER_BY_CLAUSE ),
1300
1312
b.optional(SEMICOLON ))
1301
1313
1302
- b.rule(TYPE_ATTRIBUTE ).define(IDENTIFIER_NAME , DATATYPE )
1314
+ b.rule(TYPE_ATTRIBUTE ).define(IDENTIFIER_NAME , DATATYPE , b.optional( DATATYPE_NULL_CONSTRAINT ) )
1303
1315
1304
1316
b.rule(INHERITANCE_CLAUSE ).define(b.oneOrMore(b.optional(NOT ), b.firstOf(OVERRIDING , FINAL , INSTANTIABLE )))
1305
1317
0 commit comments