[plsql] DEFAULT for Argument - fixups from #5088

This commit is contained in:
Andreas Dangel
2024-07-11 10:32:29 +02:00
parent d3daf5e90e
commit d59de6c550
4 changed files with 915 additions and 8 deletions

View File

@ -3872,10 +3872,13 @@ ASTArgument Argument() :
{
//[LOOKAHEAD(2) UnqualifiedID() "=>"] Expression()
[LOOKAHEAD(2) (simpleNode = UnqualifiedID()) ("=>" | <AS> ) ]
(Expression() [ <_DEFAULT> Expression() <ON> <CONVERSION> "ERROR" ] )
Expression()
// e.g. TO_NUMBER allows a DEFAULT clause within an argument
// https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/TO_NUMBER.html#GUID-D4807212-AFD7-48A7-9AED-BEC3E8809866
[ <_DEFAULT> Expression() <ON> KEYWORD("CONVERSION") "ERROR" ]
//Allow Using CharacterSet suffix clause
[
( <USING> )
<USING>
( <CHAR_CS> | <NCHAR_CS> )
]
{
@ -5022,7 +5025,6 @@ TOKEN [IGNORE_CASE]:
<CONSTRAINT: "CONSTRAINT"> |
<CONSTRUCTOR: "CONSTRUCTOR"> |
<CONTINUE: "CONTINUE"> |
<CONVERSION: "CONVERSION"> |
<CONVERT: "CONVERT"> |
<CROSS: "CROSS"> |
<CUBE: "CUBE"> |

View File

@ -66,4 +66,9 @@ class PlsqlTreeDumpTest extends BaseTreeDumpTest {
void sqlMacroClause() {
doTest("SqlMacroClause");
}
@Test
void parseSelectExpression() {
doTest("SelectExpressions");
}
}

View File

@ -15,11 +15,6 @@ import net.sourceforge.pmd.lang.plsql.AbstractPLSQLParserTst;
class SelectExpressionsTest extends AbstractPLSQLParserTst {
@Test
void parseSelectExpression() {
plsql.parseResource("SelectExpressions.pls");
}
@Test
void parseSelectSimpleExpression() {
ASTInput input = plsql.parseResource("SelectSimpleExpression.pls");