[ 
https://issues.apache.org/jira/browse/GROOVY-8128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15942717#comment-15942717
 ] 

Paul King edited comment on GROOVY-8128 at 3/27/17 6:27 AM:
------------------------------------------------------------

I think I know what changes I'd make but I haven't been able to replicate the 
problem to give myself confidence in the change. I tried hsqldb, mysql  and 
postgresql but couldn't get the error.

Here is what I tried:
{code}
@GrabConfig(systemClassLoader=true)
//@Grab('org.hsqldb:hsqldb:2.3.2')
//@Grab('mysql:mysql-connector-java:5.1.21')
//@Grab('postgresql:postgresql:9.0-801.jdbc4')
@Grab('org.postgresql:postgresql:42.0.0')
import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:postgresql://localhost:5432/postgres", 
"username", "password", "org.postgresql.Driver")
sql.execute 'DROP TABLE IF EXISTS A'
sql.execute 'CREATE TABLE A(x varchar(30))'
sql.execute "INSERT INTO A SELECT ? UNION SELECT ?", ['23', '45']
List rows = sql.rows('select * from A')
println "There are ${rows.size()} A row(s):"
println rows.collect { "$it.x" }.join(", ")
{code}
which produces for Groovy 2.4.10:
{noformat}
There are 2 A row(s):
23, 45
{noformat}
I'd be grateful if someone can supply a failing script otherwise I can make the 
changes I believe are needed and create a SNAPSHOT version of Groovy for 
someone to test.


was (Author: paulk):
I think I know what changes I'd make but I haven't been able to replicate the 
problem to give myself confidence in the change. I tried hsqldb, mysql  and 
postgresql but couldn't get the error.

Here is what I tried:
{code}
@GrabConfig(systemClassLoader=true)
//@Grab('org.hsqldb:hsqldb:2.3.2')
//@Grab('mysql:mysql-connector-java:5.1.21')
//@Grab('postgresql:postgresql:9.0-801.jdbc4')
@Grab('org.postgresql:postgresql:42.0.0')
import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:postgresql://localhost:5432/postgres", 
"username", "password", "org.postgresql.Driver")
sql.execute 'DROP TABLE IF EXISTS A'
sql.execute 'CREATE TABLE A(x varchar(30))'
sql.execute "INSERT INTO A SELECT ? UNION SELECT ?", ['23', '45']
List rows = sql.rows('select * from A')
println "There are ${rows.size()} A row(s):"
println rows.collect { "$it.x" }.join(", ")
{code}
which produces for Groovy 2.4.10:
{noformat}
There are 2 A row(s):
23, 45
{noformat}

> Breaking change in 2.4.9 with Sql query with GString
> ----------------------------------------------------
>
>                 Key: GROOVY-8128
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8128
>             Project: Groovy
>          Issue Type: Bug
>          Components: groovy-runtime
>    Affects Versions: 2.4.9
>         Environment: Windows 7
>            Reporter: Mike Sauer
>            Priority: Critical
>
> The following code worked for releases 2.4.8 and below:
> {code}
>     def query = """\
>     SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED\r\n\
>     select u5f_documenttype from DocVersion dv left outer join 
> ClassDefinition cd on dv.object_class_id = cd.object_id 
>     where cd.symbolic_name in ('Retail', 'RetailWeb') and dv.is_current = 1
>     and u59_accountnumber = $acctNum and u5f_documenttype = 'Signature Card'
>     """
>     def docFound = 'No Doc'
>     consumerSql.eachRow(query) {
> {code}
> This code now fails in 2.4.9 and 2.4.10 with:
> {noformat}
> Mar 22, 2017 9:23:43 AM groovy.sql.Sql eachRow
> WARNING: Failed to execute:     SET TRANSACTION ISOLATION LEVEL READ 
> UNCOMMITTED
>     select u5f_documenttype from DocVersion dv left outer join 
> ClassDefinition cd on dv.object_class_id = cd.object_id 
>     where cd.symbolic_name in ('Retail', 'RetailWeb') and dv.is_current = 1
>     and u59_accountnumber = ? and u5f_documenttype = 'Signature Card'
>      because: com.microsoft.sqlserver.jdbc.SQLServerException: Unable to 
> identify the table     SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
>     select u5f_documenttype from DocVersion dv left outer join 
> ClassDefinition cd on dv.object_class_id = cd.object_id 
>     where cd.symbolic_name in ('Retail', 'RetailWeb') and dv.is_current = 1
>     and u59_accountnumber = ? and u5f_documenttype = 'Signature Card'
>      for the metadata.
> {noformat}
> I have tried changing to using placeholders and name parameters and I get 
> similar results.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to