Affects PMD Version: 6.2 (from net.sourceforge.pmd.eclipse - 4.0.16.v20180412-0833)
Rule: parsing a .sql file that has execute immediate with into and using in multiline
Description:
There were processing errors!
test.sql: Error while parsing test.sql net.sourceforge.pmd.PMDException: Error while parsing test.sql
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:98)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:50)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:75)
at net.sourceforge.pmd.processor.MonoThreadProcessor.runAnalysis(MonoThreadProcessor.java:29)
at net.sourceforge.pmd.processor.AbstractPMDProcessor.processFiles(AbstractPMDProcessor.java:111)
at net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor.reviewResource(BaseVisitor.java:366)
at net.sourceforge.pmd.eclipse.runtime.cmd.ResourceVisitor.visit(ResourceVisitor.java:30)
at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:120)
at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:84)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:129)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:52)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:117)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:105)
at net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd.processResource(ReviewCodeCmd.java:481)
at net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd.processResources(ReviewCodeCmd.java:431)
at net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:221)
at net.sourceforge.pmd.eclipse.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:93)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: net.sourceforge.pmd.lang.plsql.ast.ParseException: Encountered " <CHARACTER_LITERAL> "\'P\' "" at line 8, column 15.
Was expecting one of:
"/" ...
";" ...
"=" ...
"!" ...
"<" ...
">" ...
"+" ...
"-" ...
"||" ...
"**" ...
"*" ...
"AND" ...
"BETWEEN" ...
"FROM" ...
"IN" ...
"IS" ...
"LIKE" ...
"MEMBER" ...
"MOD" ...
"NOT" ...
"OR" ...
"MULTISET" ...
"SUBMULTISET" ...
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.generateParseException(PLSQLParser.java:40789)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.jj_consume_token(PLSQLParser.java:40643)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.UnlabelledStatement(PLSQLParser.java:9691)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Statement(PLSQLParser.java:9990)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.ProgramUnit(PLSQLParser.java:5948)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Global(PLSQLParser.java:496)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Input(PLSQLParser.java:194)
at net.sourceforge.pmd.lang.plsql.PLSQLParser.parse(PLSQLParser.java:47)
at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:110)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:180)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:95)
... 19 more
Code Sample demonstrating the issue:
CREATE OR REPLACE PROCEDURE test ( p_num_reg OUT number )
AS
v_query clob;
BEGIN
v_query:='select count(1) from test_tbl where id =:param';
execute immediate v_query into p_num_reg
USING 'P';
END test;
Removing the linebreak in the execute immediate bypass the bug:
CREATE OR REPLACE PROCEDURE test ( p_num_reg OUT number )
AS
v_query clob;
BEGIN
v_query:='select count(1) from test_tbl where id =:param';
execute immediate v_query into p_num_reg USING 'P';
END test;
Running PMD through: [Other - Eclipse Plugin]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4