[plsql] Fix CollectionTypeName parsing
This commit is contained in:
@ -871,6 +871,9 @@ ASTCompilationDataType CompilationDataType() :
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* https://docs.oracle.com/en/database/oracle/oracle-database/23/lnpls/CREATE-TYPE-statement.html#GUID-389D603D-FBD0-452A-8414-240BBBC57034__OBJECT_BASE_TYPE_DEF-DE2DD0FF
|
||||
*/
|
||||
ASTCollectionTypeName CollectionTypeName() :
|
||||
{ PLSQLNode size=null, precision=null;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
@ -886,8 +889,8 @@ ASTCollectionTypeName CollectionTypeName() :
|
||||
sb.append(token.getImage());
|
||||
}
|
||||
}
|
||||
(LOOKAHEAD(2) "(" size=NumericLiteral() {sb.append( "(" + size);}
|
||||
["," precision=NumericLiteral() {sb.append( "," + precision);}]
|
||||
(LOOKAHEAD(2) "(" size = NumericLiteral() { sb.append("(").append(size.getImage()); }
|
||||
["," precision = NumericLiteral() { sb.append(",").append(precision.getImage()); }]
|
||||
[ <CHAR> {sb.append( " CHAR") ;}]
|
||||
[ <BYTE> {sb.append( " BYTE") ;}]
|
||||
")" {sb.append( ")");})?
|
||||
|
@ -6,3 +6,6 @@ CREATE or REPLACE PACKAGE x as
|
||||
type last_run_duration is interval day(9) to second(6);
|
||||
end x;
|
||||
/
|
||||
|
||||
CREATE TYPE phone_list_typ_demo AS VARRAY(5) OF VARCHAR2(25);
|
||||
/
|
||||
|
@ -1,13 +1,21 @@
|
||||
+- Input[@CanonicalImage = null, @ExcludedLinesCount = 0, @ExcludedRangesCount = 0]
|
||||
+- PackageSpecification[@CanonicalImage = "X", @Image = "x", @ObjectName = "x"]
|
||||
+- ObjectNameDeclaration[@CanonicalImage = "X", @Image = "x"]
|
||||
| +- ID[@CanonicalImage = "X", @Image = "x"]
|
||||
+- DeclarativeSection[@CanonicalImage = null]
|
||||
| +- DeclarativeUnit[@CanonicalImage = null]
|
||||
| +- SubTypeDefinition[@CanonicalImage = "LAST_RUN_DURATION", @Image = "last_run_duration"]
|
||||
| +- QualifiedID[@CanonicalImage = "LAST_RUN_DURATION", @Image = "last_run_duration"]
|
||||
| +- Datatype[@CanonicalImage = "INTERVAL DAY(9) TO SECOND(6)", @Image = "INTERVAL DAY(9) TO SECOND(6)", @TypeImage = "INTERVAL DAY(9) TO SECOND(6)"]
|
||||
| +- ScalarDataTypeName[@CanonicalImage = "INTERVAL DAY(9) TO SECOND(6)", @Image = "INTERVAL DAY(9) TO SECOND(6)"]
|
||||
| +- NumericLiteral[@CanonicalImage = "9", @Image = "9"]
|
||||
| +- NumericLiteral[@CanonicalImage = "6", @Image = "6"]
|
||||
+- ID[@CanonicalImage = "X", @Image = "x"]
|
||||
| +- ObjectNameDeclaration[@CanonicalImage = "X", @Image = "x"]
|
||||
| | +- ID[@CanonicalImage = "X", @Image = "x"]
|
||||
| +- DeclarativeSection[@CanonicalImage = null]
|
||||
| | +- DeclarativeUnit[@CanonicalImage = null]
|
||||
| | +- SubTypeDefinition[@CanonicalImage = "LAST_RUN_DURATION", @Image = "last_run_duration"]
|
||||
| | +- QualifiedID[@CanonicalImage = "LAST_RUN_DURATION", @Image = "last_run_duration"]
|
||||
| | +- Datatype[@CanonicalImage = "INTERVAL DAY(9) TO SECOND(6)", @Image = "INTERVAL DAY(9) TO SECOND(6)", @TypeImage = "INTERVAL DAY(9) TO SECOND(6)"]
|
||||
| | +- ScalarDataTypeName[@CanonicalImage = "INTERVAL DAY(9) TO SECOND(6)", @Image = "INTERVAL DAY(9) TO SECOND(6)"]
|
||||
| | +- NumericLiteral[@CanonicalImage = "9", @Image = "9"]
|
||||
| | +- NumericLiteral[@CanonicalImage = "6", @Image = "6"]
|
||||
| +- ID[@CanonicalImage = "X", @Image = "x"]
|
||||
+- TypeSpecification[@CanonicalImage = "PHONE_LIST_TYP_DEMO", @Image = "phone_list_typ_demo", @ObjectName = "phone_list_typ_demo"]
|
||||
+- ObjectNameDeclaration[@CanonicalImage = "PHONE_LIST_TYP_DEMO", @Image = "phone_list_typ_demo"]
|
||||
| +- ID[@CanonicalImage = "PHONE_LIST_TYP_DEMO", @Image = "phone_list_typ_demo"]
|
||||
+- CollectionTypeName[@CanonicalImage = "VARRAY(5)", @Image = "VARRAY(5)"]
|
||||
| +- NumericLiteral[@CanonicalImage = "5", @Image = "5"]
|
||||
+- Datatype[@CanonicalImage = "VARCHAR2(25)", @Image = "VARCHAR2(25)", @TypeImage = "VARCHAR2(25)"]
|
||||
+- ScalarDataTypeName[@CanonicalImage = "VARCHAR2(25)", @Image = "VARCHAR2(25)"]
|
||||
+- NumericLiteral[@CanonicalImage = "25", @Image = "25"]
|
||||
|
Reference in New Issue
Block a user