fix for trim function with record type variable
This commit is contained in:
@@ -2937,21 +2937,18 @@ ASTTrimExpression TrimExpression() :
|
||||
{ PLSQLNode simpleNode = null; StringBuilder sb = new StringBuilder() ; }
|
||||
{
|
||||
(
|
||||
"(" { sb.append("(");}
|
||||
[ LOOKAHEAD(2)
|
||||
[ ( <LEADING> | <TRAILING> | <BOTH> ) { sb.append(" "); sb.append(token.toString()); } ]
|
||||
[ simpleNode = StringExpression() { sb.append(" "); sb.append(simpleNode.getImage()); } ]
|
||||
( <FROM> ) { sb.append(" ").append(token.image); }
|
||||
]
|
||||
"(" { sb.append("(");}
|
||||
[ ( <LEADING> | <TRAILING> | <BOTH> ) { sb.append(" "); sb.append(token.toString()); } ]
|
||||
[ LOOKAHEAD(StringExpression() <FROM>) simpleNode = StringExpression() { sb.append(" "); sb.append(simpleNode.getImage()); } ]
|
||||
[ <FROM> { sb.append(" ").append(token.image); } ]
|
||||
simpleNode = StringExpression() { sb.append(" "); sb.append(simpleNode.getImage()); }
|
||||
")" { sb.append(")");}
|
||||
")" { sb.append(")");}
|
||||
)
|
||||
{
|
||||
jjtThis.setImage(sb.toString()); return jjtThis;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
TREAT ( Expression AS datatype)
|
||||
CAST ( Expression AS datatype)
|
||||
|
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
|
||||
*/
|
||||
|
||||
package net.sourceforge.pmd.lang.plsql.ast;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import net.sourceforge.pmd.lang.plsql.AbstractPLSQLParserTst;
|
||||
|
||||
public class TrimWithRecordTypeTest extends AbstractPLSQLParserTst {
|
||||
|
||||
@Test
|
||||
public void parseTrimWithRecordType() throws Exception {
|
||||
String code = IOUtils.toString(this.getClass().getResourceAsStream("TrimWithRecordType.pls"),
|
||||
StandardCharsets.UTF_8);
|
||||
ASTInput input = parsePLSQL(code);
|
||||
Assert.assertNotNull(input);
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
CREATE OR REPLACE PACKAGE BODY trim_test_package IS
|
||||
|
||||
PROCEDURE trim_test_procedure IS
|
||||
BEGIN
|
||||
IF TRIM(var_package.wer.wer) = 'TEST' THEN
|
||||
NULL;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
END trim_test_package;
|
||||
/
|
Reference in New Issue
Block a user