Affects PMD Version: 6.17.0
Rule:
Description: I get ParseException when trying to process script with MERGE statement in anonymous block without Declare section
lip 23, 2019 2:44:25 PM net.sourceforge.pmd.RulesetsFactoryUtils printRuleNamesInDebug
FINER: Loaded rule AvoidTabCharacter
lip 23, 2019 2:44:25 PM net.sourceforge.pmd.PMD getApplicableLanguages
FINE: Using PLSQL version: PLSQL
lip 23, 2019 2:44:25 PM net.sourceforge.pmd.PMD processFiles
WARNING: This analysis could be faster, please consider using Incremental Analysis: https://pmd.github.io/latest/pmd_userdocs_incremental_analysis.html
lip 23, 2019 2:44:25 PM net.sourceforge.pmd.RulesetsFactoryUtils printRuleNamesInDebug
FINER: Loaded rule AvoidTabCharacter
lip 23, 2019 2:44:25 PM net.sourceforge.pmd.processor.PmdRunnable call
FINE: Processing C:\Users\...\01_DB\00_Scripts\sols46_com_group_agent.sql
lip 23, 2019 2:44:25 PM net.sourceforge.pmd.processor.PmdRunnable addError
FINE: Error while processing file: C:\Users\...\01_DB\00_Scripts\sols46_com_group_agent.sql
net.sourceforge.pmd.PMDException: Error while parsing C:\Users\...\01_DB\00_Scripts\sols46_com_group_agent.sql
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:99)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:51)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:78)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:24)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: net.sourceforge.pmd.lang.plsql.ast.ParseException: Encountered " "." ". "" at line 8, column 28.
Was expecting one of:
"," ...
"FROM" ...
"," ...
"FROM" ...
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.FromClause(PLSQLParser.java:20506)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.RestOfStatement(PLSQLParser.java:10592)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.SelectStatement(PLSQLParser.java:27804)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.UnlabelledStatement(PLSQLParser.java:22950)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Statement(PLSQLParser.java:23875)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Block(PLSQLParser.java:952)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Global(PLSQLParser.java:505)
at net.sourceforge.pmd.lang.plsql.ast.PLSQLParser.Input(PLSQLParser.java:202)
at net.sourceforge.pmd.lang.plsql.PLSQLParser.parse(PLSQLParser.java:55)
at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:111)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:175)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:96)
... 9 more
Code Sample demonstrating the issue:
begin
MERGE INTO jhs_translations b
USING ( SELECT 'PROM_EDIT_PROM_NR' key1,'Edycja promocji nr' text,123123 lce_id FROM dual ) e
ON (b.key1 = e.key1 and b.lce_id=e.lce_id)
WHEN MATCHED
THEN UPDATE SET b.text = e.text
WHEN NOT MATCHED
THEN INSERT (ID,KEY1, TEXT,LCE_ID) values (JHS_SEQ.NEXTVAL,'PROM_EDIT_PROM_NR','Edycja promocji nr',123123);
end;
Running PMD through: [CLI]
You can’t perform that action at this time.
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