Affects PMD Version:
This error was testing in the following versions:
Description:
Trying to analyze pl/sql code in a Compound Trigger PMD raises an exception error that indicates "Error while parsing".
Exception Stacktrace:
net.sourceforge.pmd.PMDException: Error while parsing C:\testfolder\example_trigger.sql
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:124)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:100)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:62)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:85)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:29)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: net.sourceforge.pmd.lang.plsql.ast.ParseException: Encountered " "l_number_one "" at line 5, column 4.
Was expecting:
"BEGIN" ...
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.generateParseException(PLSQLParser.java)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.jj_consume_token(PLSQLParser.java)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.TriggerTimingPointSection(PLSQLParser.java:53993)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.CompoundTriggerBlock(PLSQLParser.java:54808)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.TriggerUnit(PLSQLParser.java:53919)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Input(PLSQLParser.java:143)
at net.sourceforge.pmd.lang.plsql.PLSQLParser.parse(PLSQLParser.java:61)
at net.sourceforge.pmd.lang.AbstractParser.doParse(AbstractParser.java:44)
at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:136)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:200)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:118)
... 10 more
Code Sample demonstrating the issue:
-- -- CREATE TABLE ONLY FOR INSTALLATION PURPOSES IN A DATABASE CREATE TABLE TEST_TABLE ( COL_ONE VARCHAR2(10), COL_TWO VARCHAR2(10), COL_THREE VARCHAR2(10) ); -- -- TRIGGER EXAMPLE CREATE OR REPLACE TRIGGER EXAMPLE_TRIGGER FOR INSERT ON TEST_TABLE COMPOUND TRIGGER -- l_number_one NUMBER(2) := ROUND(DBMS_RANDOM.Value(1, 10)); l_number_two NUMBER(2) := ROUND(DBMS_RANDOM.Value(1, 10)); -- BEFORE EACH ROW IS -- l_tot_numbers NUMBER(2); -- BEGIN -- l_tot_numbers := l_number_one + l_number_two; -- :NEW.col_one := l_number_one; :NEW.col_two := l_number_two; :NEW.col_three := l_tot_numbers; -- EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20001, 'ERROR AT EXAMPLE_TRIGGER - BEFORE EACH ROW' || CHR(10) || SQLERRM); END BEFORE EACH ROW; -- -- AFTER STATEMENT IS BEGIN -- DBMS_OUTPUT.Put_Line('This is just an example!'); -- EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20002, 'ERROR AT EXAMPLE_TRIGGER - AFTER STATEMENT' || CHR(10) || SQLERRM); END AFTER STATEMENT; -- END EXAMPLE_TRIGGER;
Steps to reproduce:
Running PMD through: [CLI]
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