Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 1.7.3
-
Fix Version/s: 2.0-beta-3, 1.8.7
-
Component/s: SQL processing
-
Labels:None
-
Environment:Windows XP SP3, JVM 1.6.0_07
-
Number of attachments :
Description
Running the following code shows the problem:
import groovy.sql.* def sql = Sql.newInstance([...]) def metaClosure = { meta -> meta.each { col -> println col.columnName } } println "Named:" sql.rows("SELECT COUNT(*) AS Number FROM Table WHERE Id BETWEEN :start AND :end", [start: 10000, end: 11000], metaClosure).each { res -> println res[0] } println "Ordinal:" sql.rows("SELECT COUNT(*) AS Number FROM Table WHERE Id BETWEEN ? AND ?", [10000, 11000], metaClosure).each { res -> println res[0] }
Result on my computer:
Named:
994
Ordinal:
Number
994
Showing the metaClosure that prints the column name is not called when using named parameters.
What happens if you put your map in a list, e.g.:
I suspect we don't support metaClosure with the arbitrary params required for ordinal params. We could do some smart looking up of the last param I guess.