This commit is contained in:
Araq 2019-01-13 14:08:49 +01:00
commit 7f0559b93f

View file

@ -166,10 +166,12 @@ iterator fastRows*(db: DbConn, query: SqlQuery,
var stmt = setupQuery(db, query, args) var stmt = setupQuery(db, query, args)
var L = (column_count(stmt)) var L = (column_count(stmt))
var result = newRow(L) var result = newRow(L)
while step(stmt) == SQLITE_ROW: try:
setRow(stmt, result, L) while step(stmt) == SQLITE_ROW:
yield result setRow(stmt, result, L)
if finalize(stmt) != SQLITE_OK: dbError(db) yield result
finally:
if finalize(stmt) != SQLITE_OK: dbError(db)
iterator instantRows*(db: DbConn, query: SqlQuery, iterator instantRows*(db: DbConn, query: SqlQuery,
args: varargs[string, `$`]): InstantRow args: varargs[string, `$`]): InstantRow
@ -177,9 +179,11 @@ iterator instantRows*(db: DbConn, query: SqlQuery,
## same as fastRows but returns a handle that can be used to get column text ## 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. ## on demand using []. Returned handle is valid only within the iterator body.
var stmt = setupQuery(db, query, args) var stmt = setupQuery(db, query, args)
while step(stmt) == SQLITE_ROW: try:
yield stmt while step(stmt) == SQLITE_ROW:
if finalize(stmt) != SQLITE_OK: dbError(db) yield stmt
finally:
if finalize(stmt) != SQLITE_OK: dbError(db)
proc toTypeKind(t: var DbType; x: int32) = proc toTypeKind(t: var DbType; x: int32) =
case x case x
@ -210,9 +214,11 @@ iterator instantRows*(db: DbConn; columns: var DbColumns; query: SqlQuery,
## on demand using []. Returned handle is valid only within the iterator body. ## on demand using []. Returned handle is valid only within the iterator body.
var stmt = setupQuery(db, query, args) var stmt = setupQuery(db, query, args)
setColumns(columns, stmt) setColumns(columns, stmt)
while step(stmt) == SQLITE_ROW: try:
yield stmt while step(stmt) == SQLITE_ROW:
if finalize(stmt) != SQLITE_OK: dbError(db) yield stmt
finally:
if finalize(stmt) != SQLITE_OK: dbError(db)
proc `[]`*(row: InstantRow, col: int32): string {.inline.} = proc `[]`*(row: InstantRow, col: int32): string {.inline.} =
## returns text for given column of the row ## returns text for given column of the row