summary refs log tree commit diff stats
path: root/lib/impure/db_sqlite.nim
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2022-04-25 02:20:18 +0800
committerGitHub <noreply@github.com>2022-04-24 14:20:18 -0400
commitb10f0e7bca43761316f6424786a771af33254e19 (patch)
treec6c4dcffbec0772b162d0354d201a369e90b15a7 /lib/impure/db_sqlite.nim
parent02e8aa9660ae78a4d6a67656709f9379f30c5197 (diff)
downloadNim-b10f0e7bca43761316f6424786a771af33254e19.tar.gz
fix db_sqlite.tryInsertID does raise exceptions in 1.6.0 #19743 (#19744)
Diffstat (limited to 'lib/impure/db_sqlite.nim')
-rw-r--r--lib/impure/db_sqlite.nim25
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/impure/db_sqlite.nim b/lib/impure/db_sqlite.nim
index 1638d38c6..db40dddd8 100644
--- a/lib/impure/db_sqlite.nim
+++ b/lib/impure/db_sqlite.nim
@@ -635,7 +635,7 @@ proc getValue*(db: DbConn,  stmtName: SqlPrepared): string
 
 proc tryInsertID*(db: DbConn, query: SqlQuery,
                   args: varargs[string, `$`]): int64
-                  {.tags: [WriteDbEffect], raises: [DbError].} =
+                  {.tags: [WriteDbEffect], raises: [].} =
   ## Executes the query (typically "INSERT") and returns the
   ## generated ID for the row or -1 in case of an error.
   ##
@@ -650,16 +650,19 @@ proc tryInsertID*(db: DbConn, query: SqlQuery,
   ##                            1, "item#1") == -1
   ##    db.close()
   assert(not db.isNil, "Database not connected.")
-  var q = dbFormat(query, args)
-  var stmt: sqlite3.PStmt
   result = -1
-  if prepare_v2(db, q, q.len.cint, stmt, nil) == SQLITE_OK:
-    if step(stmt) == SQLITE_DONE:
-      result = last_insert_rowid(db)
-    if finalize(stmt) != SQLITE_OK:
-      result = -1
-  else:
-    discard finalize(stmt)
+  try:
+    var q = dbFormat(query, args)
+    var stmt: sqlite3.PStmt
+    if prepare_v2(db, q, q.len.cint, stmt, nil) == SQLITE_OK:
+      if step(stmt) == SQLITE_DONE:
+        result = last_insert_rowid(db)
+      if finalize(stmt) != SQLITE_OK:
+        result = -1
+    else:
+      discard finalize(stmt)
+  except DbError:
+    discard
 
 proc insertID*(db: DbConn, query: SqlQuery,
                args: varargs[string, `$`]): int64 {.tags: [WriteDbEffect].} =
@@ -692,7 +695,7 @@ proc insertID*(db: DbConn, query: SqlQuery,
 
 proc tryInsert*(db: DbConn, query: SqlQuery, pkName: string,
                 args: varargs[string, `$`]): int64
-               {.tags: [WriteDbEffect], raises: [DbError], since: (1, 3).} =
+               {.tags: [WriteDbEffect], raises: [], since: (1, 3).} =
   ## same as tryInsertID
   tryInsertID(db, query, args)