diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index cbfbd6eb80..e91826e8b2 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -30,6 +30,7 @@ This is a minor release. * [#1217](https://github.com/pmd/pmd/issues/1217): \[java] CyclomaticComplexityRule counts ?-operator twice * plsql * [#980](https://github.com/pmd/pmd/issues/980): \[plsql] ParseException for CREATE TABLE + * [#981](https://github.com/pmd/pmd/issues/981): \[plsql] ParseException when parsing VIEW ### API Changes diff --git a/pmd-plsql/etc/grammar/PldocAST.jjt b/pmd-plsql/etc/grammar/PldocAST.jjt index 3a28b3c35b..3a3fba733e 100644 --- a/pmd-plsql/etc/grammar/PldocAST.jjt +++ b/pmd-plsql/etc/grammar/PldocAST.jjt @@ -2528,8 +2528,7 @@ ASTView View() : ["(" ViewColumn() ("," ViewColumn())* ")"] //### OF ... WITH OBJECT IDENTIFIER... - Statement() //SRT select() - //### WITH ... + SqlStatement(null,";") (";" | "/") { jjtThis.setImage(simpleNode.getImage()) ; return jjtThis ; } diff --git a/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/ViewTest.java b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/ViewTest.java new file mode 100644 index 0000000000..1038e30a75 --- /dev/null +++ b/pmd-plsql/src/test/java/net/sourceforge/pmd/lang/plsql/ast/ViewTest.java @@ -0,0 +1,21 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.lang.plsql.ast; + +import org.apache.commons.io.IOUtils; +import org.junit.Assert; +import org.junit.Test; + +import net.sourceforge.pmd.lang.plsql.AbstractPLSQLParserTst; + +public class ViewTest extends AbstractPLSQLParserTst { + + @Test + public void parseCreateViewIssue981() throws Exception { + String code = IOUtils.toString(this.getClass().getResourceAsStream("ViewIssue981.pls")); + ASTInput input = parsePLSQL(code); + Assert.assertNotNull(input); + } +} diff --git a/pmd-plsql/src/test/resources/net/sourceforge/pmd/lang/plsql/ast/ViewIssue981.pls b/pmd-plsql/src/test/resources/net/sourceforge/pmd/lang/plsql/ast/ViewIssue981.pls new file mode 100644 index 0000000000..64d171cf94 --- /dev/null +++ b/pmd-plsql/src/test/resources/net/sourceforge/pmd/lang/plsql/ast/ViewIssue981.pls @@ -0,0 +1,11 @@ +-- +-- BSD-style license; for more info see http://pmd.sourceforge.net/license.html +-- + +CREATE OR REPLACE FORCE VIEW "HR_DEV1"."EMP_DETAILS_VIEW" ("EMPLOYEE_ID") AS +SELECT +e.employee_id +FROM +employees e +WITH READ ONLY +;