groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akapps <...@git.apache.org>
Subject [GitHub] groovy pull request #586: GROOVY-8288 executeBatch() should not be called wi...
Date Tue, 15 Aug 2017 07:59:36 GMT
Github user akapps commented on a diff in the pull request:

    https://github.com/apache/groovy/pull/586#discussion_r133135254
  
    --- Diff: subprojects/groovy-sql/src/test/groovy/groovy/sql/SqlBatchTest.groovy ---
    @@ -119,6 +121,44 @@ class SqlBatchTest extends GroovyTestCase {
             // FINE: Successfully executed batch with 1 command(s)
         }
     
    +    void testWithBatchHavingSizeSameSizeAsStatements() {
    +        def numRows = sql.rows("SELECT * FROM PERSON").size()
    +        assert numRows == 3
    +        def myOthers = ['f4':'l4','f5':'l5','f6':'l6','f7':'l7']
    +        def result = sql.withBatch(myOthers.size(), "insert into PERSON (id, firstname,
lastname) values (?, ?, ?)") { ps ->
    +            myOthers.eachWithIndex { k, v, index ->
    +                def id = index + numRows + 1
    +                ps.addBatch(id, k, v)
    +            }
    +        }
    +        assert result == [1] * myOthers.size()
    +        assert sql.rows("SELECT * FROM PERSON").size() == numRows + myOthers.size()
    +        // end result the same as if no batching was in place but logging should show:
    +        // FINE: Successfully executed batch with 4 command(s)
    +    }
    +
    +    void testWithBatchNothingSpecified() {
    +        def numRows = sql.rows("SELECT * FROM PERSON").size()
    +        assert numRows == 3
    +
    +        def msg = GroovyAssert.shouldFail {
    +            sql.withBatch(3, "insert into PERSON (id, firstname, lastname) values (?,
?, ?)") { ps ->
    +                // Do nothing - not a good practice at all...
    +            }
    +        }
    +        System.err.println(msg)
    +    }
    +
    +    void testWithBatchNoPreparedStatementNothingSpecified() {
    +        def numRows = sql.rows("SELECT * FROM PERSON").size()
    +        assert numRows == 3
    +
    +        def result = sql.withBatch { ps ->
    +            // Do nothing - not a good practice at all...
    +        }
    +        assert result == [] as int[]
    --- End diff --
    
    It is quite surprising at first sight that HSQL driver behaves differently if `executeBatch()`
is called with nothing added to the batch, whether a preparedStatement is used or not.
    
    I felt like it's not Groovy responsibility to "suppress" the exception for the preparedStatement
case, and I wanted to test-specify those 2 behaviours as they are the current ones.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message