Merge branch 'pr-1974'
This commit is contained in:
@ -61,7 +61,10 @@ about the usage and features of the rule designer.
|
|||||||
* [#1966](https://github.com/pmd/pmd/issues/1966): \[java] CloseResource false positive if Stream is passed as method parameter
|
* [#1966](https://github.com/pmd/pmd/issues/1966): \[java] CloseResource false positive if Stream is passed as method parameter
|
||||||
* [#1967](https://github.com/pmd/pmd/issues/1967): \[java] CloseResource false positive with late assignment of variable
|
* [#1967](https://github.com/pmd/pmd/issues/1967): \[java] CloseResource false positive with late assignment of variable
|
||||||
* plsql
|
* plsql
|
||||||
|
* [#1935](https://github.com/pmd/pmd/issues/1935): \[plsql] ParseException with SELECT INTO record defined as global variable
|
||||||
* [#1947](https://github.com/pmd/pmd/issues/1947): \[plsql] ParseError - SELECT with FOR UPDATE OF
|
* [#1947](https://github.com/pmd/pmd/issues/1947): \[plsql] ParseError - SELECT with FOR UPDATE OF
|
||||||
|
* [#1948](https://github.com/pmd/pmd/issues/1948): \[plsql] ParseException with INSERT INTO using package global variables
|
||||||
|
* [#1950](https://github.com/pmd/pmd/issues/1950): \[plsql] ParseException with UPDATE and package record variable
|
||||||
|
|
||||||
### API Changes
|
### API Changes
|
||||||
|
|
||||||
@ -105,6 +108,7 @@ about the usage and features of the rule designer.
|
|||||||
* [#1970](https://github.com/pmd/pmd/pull/1970): \[java] DoubleBraceInitialization: Fix example - [Tobias Weimer](https://github.com/tweimer)
|
* [#1970](https://github.com/pmd/pmd/pull/1970): \[java] DoubleBraceInitialization: Fix example - [Tobias Weimer](https://github.com/tweimer)
|
||||||
* [#1971](https://github.com/pmd/pmd/pull/1971): \[java] 1862 - Message Digest should not be used as class field - [AnthonyKot](https://github.com/AnthonyKot)
|
* [#1971](https://github.com/pmd/pmd/pull/1971): \[java] 1862 - Message Digest should not be used as class field - [AnthonyKot](https://github.com/AnthonyKot)
|
||||||
* [#1972](https://github.com/pmd/pmd/pull/1972): \[plsql] ParseError - SELECT with FOR UPDATE OF - [Piotr Szymanski](https://github.com/szyman23)
|
* [#1972](https://github.com/pmd/pmd/pull/1972): \[plsql] ParseError - SELECT with FOR UPDATE OF - [Piotr Szymanski](https://github.com/szyman23)
|
||||||
|
* [#1974](https://github.com/pmd/pmd/pull/1974): \[plsql] Fixes for referencing record type variables - [Piotr Szymanski](https://github.com/szyman23)
|
||||||
* [#1994](https://github.com/pmd/pmd/pull/1994): \[core] Resolve pmd-report failure when java folder in filepath - [Amish Shah](https://github.com/shahamish150294)
|
* [#1994](https://github.com/pmd/pmd/pull/1994): \[core] Resolve pmd-report failure when java folder in filepath - [Amish Shah](https://github.com/shahamish150294)
|
||||||
|
|
||||||
{% endtocmaker %}
|
{% endtocmaker %}
|
||||||
|
@ -1911,6 +1911,7 @@ ASTVariableName VariableName() :
|
|||||||
{
|
{
|
||||||
id = ID() { name.append(id.getImage()); }
|
id = ID() { name.append(id.getImage()); }
|
||||||
[ "." id = ID() { name.append('.').append(id.getImage()); } ]
|
[ "." id = ID() { name.append('.').append(id.getImage()); } ]
|
||||||
|
[ "." id = ID() { name.append('.').append(id.getImage()); } ]
|
||||||
{
|
{
|
||||||
jjtThis.setImage(name.toString());
|
jjtThis.setImage(name.toString());
|
||||||
return jjtThis;
|
return jjtThis;
|
||||||
@ -2351,7 +2352,7 @@ ASTValuesClause ValuesClause() :
|
|||||||
(
|
(
|
||||||
"(" ( Expression() | <_DEFAULT> ) ( "," ( Expression() | <_DEFAULT> ) )* ")"
|
"(" ( Expression() | <_DEFAULT> ) ( "," ( Expression() | <_DEFAULT> ) )* ")"
|
||||||
|
|
|
|
||||||
ID() // that's a record variable name
|
Name() // that's a record variable name
|
||||||
)
|
)
|
||||||
{ return jjtThis; }
|
{ return jjtThis; }
|
||||||
}
|
}
|
||||||
@ -2435,7 +2436,7 @@ ASTUpdateSetClause UpdateSetClause() :
|
|||||||
{
|
{
|
||||||
<SET>
|
<SET>
|
||||||
(
|
(
|
||||||
LOOKAHEAD(1) <ROW> "=" ID()
|
LOOKAHEAD(1) <ROW> "=" Name()
|
||||||
|
|
|
|
||||||
"VALUE" "(" TableAlias() ")" "=" ( LOOKAHEAD(1) "(" Subquery() ")" | Expression() )
|
"VALUE" "(" TableAlias() ")" "=" ( LOOKAHEAD(1) "(" Subquery() ")" | Expression() )
|
||||||
|
|
|
|
||||||
@ -2457,7 +2458,7 @@ ASTUpdateSetClause UpdateSetClause() :
|
|||||||
ASTReturningClause ReturningClause() :
|
ASTReturningClause ReturningClause() :
|
||||||
{}
|
{}
|
||||||
{
|
{
|
||||||
( <RETURN> | <RETURNING> ) ( Expression() (",")? )+ <INTO> ( ID() (",")? )+
|
( <RETURN> | <RETURNING> ) ( Expression() (",")? )+ <INTO> ( Name() (",")? )+
|
||||||
{ return jjtThis; }
|
{ return jjtThis; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 RecordTypeTest extends AbstractPLSQLParserTst {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void parseRecordType() throws Exception {
|
||||||
|
String code = IOUtils.toString(this.getClass().getResourceAsStream("RecordType.pls"),
|
||||||
|
StandardCharsets.UTF_8);
|
||||||
|
ASTInput input = parsePLSQL(code);
|
||||||
|
Assert.assertNotNull(input);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
create or replace package body solt9001 is
|
||||||
|
|
||||||
|
procedure upd is
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
update solt90_web_service_log
|
||||||
|
set row = solt9001.rec
|
||||||
|
returning record_version into solt9001.rec.record_version;
|
||||||
|
|
||||||
|
end upd;
|
||||||
|
|
||||||
|
end;
|
||||||
|
/
|
||||||
|
|
||||||
|
create or replace package body solt9001 is
|
||||||
|
|
||||||
|
procedure upd is
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
update solt90_web_service_log
|
||||||
|
set row = solt9001.rec
|
||||||
|
returning record_version into solt9001.rec.record_version;
|
||||||
|
|
||||||
|
end upd;
|
||||||
|
|
||||||
|
end;
|
||||||
|
/
|
||||||
|
|
||||||
|
create or replace function test return varchar2 is
|
||||||
|
begin
|
||||||
|
|
||||||
|
insert into sol_individual_commission_rate
|
||||||
|
values solt4601.rec
|
||||||
|
returning record_version, rowid into solt4601.rec.record_version, solt4601.current_rowid;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
end test;
|
||||||
|
/
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
select id_no into t4666.rec.agent_no from name where company_reg_no = '66666111';
|
||||||
|
|
||||||
|
end;
|
||||||
|
/
|
Reference in New Issue
Block a user