Skip to content

Commit 33f668c

Browse files
committed
fix db_sqlite.tryInsertID does raise exceptions in 1.6.0 #19743 (#19744)
1 parent c699f4b commit 33f668c

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/db_sqlite.nim

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ proc getValue*(db: DbConn, stmtName: SqlPrepared): string
635635

636636
proc tryInsertID*(db: DbConn, query: SqlQuery,
637637
args: varargs[string, `$`]): int64
638-
{.tags: [WriteDbEffect], raises: [DbError].} =
638+
{.tags: [WriteDbEffect], raises: [].} =
639639
## Executes the query (typically "INSERT") and returns the
640640
## generated ID for the row or -1 in case of an error.
641641
##
@@ -650,16 +650,19 @@ proc tryInsertID*(db: DbConn, query: SqlQuery,
650650
## 1, "item#1") == -1
651651
## db.close()
652652
assert(not db.isNil, "Database not connected.")
653-
var q = dbFormat(query, args)
654-
var stmt: sqlite3.PStmt
655653
result = -1
656-
if prepare_v2(db, q, q.len.cint, stmt, nil) == SQLITE_OK:
657-
if step(stmt) == SQLITE_DONE:
658-
result = last_insert_rowid(db)
659-
if finalize(stmt) != SQLITE_OK:
660-
result = -1
661-
else:
662-
discard finalize(stmt)
654+
try:
655+
var q = dbFormat(query, args)
656+
var stmt: sqlite3.PStmt
657+
if prepare_v2(db, q, q.len.cint, stmt, nil) == SQLITE_OK:
658+
if step(stmt) == SQLITE_DONE:
659+
result = last_insert_rowid(db)
660+
if finalize(stmt) != SQLITE_OK:
661+
result = -1
662+
else:
663+
discard finalize(stmt)
664+
except DbError:
665+
discard
663666

664667
proc insertID*(db: DbConn, query: SqlQuery,
665668
args: varargs[string, `$`]): int64 {.tags: [WriteDbEffect].} =
@@ -692,7 +695,7 @@ proc insertID*(db: DbConn, query: SqlQuery,
692695

693696
proc tryInsert*(db: DbConn, query: SqlQuery, pkName: string,
694697
args: varargs[string, `$`]): int64
695-
{.tags: [WriteDbEffect], raises: [DbError], since: (1, 3).} =
698+
{.tags: [WriteDbEffect], raises: [], since: (1, 3).} =
696699
## same as tryInsertID
697700
tryInsertID(db, query, args)
698701

0 commit comments

Comments
 (0)