There seems to be a compiler problem probably.
When I rewrite db_mysql like this:
iterator instantRows*(db: DbConn; columns: var DbColumns; query: SqlQuery;
args: varargs[string, `$`]): InstantRow =
## Same as fastRows but returns a handle that can be used to get column
text
## on demand using []. Returned handle is valid only within the iterator
body.
rawExec(db, query, args)
var sqlres = mysql.useResult(db)
if sqlres != nil:
let L = int(mysql.numFields(sqlres))
setColumnInfo(columns, sqlres, L)
var row: cstringArray
while true:
row = mysql.fetchRow(sqlres)
if row == nil: break
for f in 0.. <L:
if row[f] == nil: # HERE the nil check is working
row[f] = "NULL".cstring
yield InstantRow(row: row, len: L) # after being added into the
InstantRow type the "nil" seems to bring a problem I don't understand
properFreeResult(sqlres, row)