summary refs log tree commit diff stats
path: root/lib/impure/db_postgres.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/impure/db_postgres.nim')
-rwxr-xr-xlib/impure/db_postgres.nim28
1 files changed, 7 insertions, 21 deletions
diff --git a/lib/impure/db_postgres.nim b/lib/impure/db_postgres.nim
index 25a04ed8e..cac5420d4 100755
--- a/lib/impure/db_postgres.nim
+++ b/lib/impure/db_postgres.nim
@@ -21,7 +21,7 @@ proc dbError(db: TDbConn) {.noreturn.} =
   ## raises an EDb exception.
   var e: ref EDb
   new(e)
-  e.msg = PQerrorMessage(db)
+  e.msg = $PQerrorMessage(db)
   raise e
 
 proc dbError*(msg: string) {.noreturn.} = 
@@ -31,17 +31,9 @@ proc dbError*(msg: string) {.noreturn.} =
   e.msg = msg
   raise e
 
-when false:
-  proc dbQueryOpt*(db: TDbConn, query: string, args: openarray[string]) =
-    var stmt = mysql_stmt_init(db)
-    if stmt == nil: dbError(db)
-    if mysql_stmt_prepare(stmt, query, len(query)) != 0: 
-      dbError(db)
-    var 
-      bindings: seq[MYSQL_BIND]
-    discard mysql_stmt_close(stmt)
-
 proc dbQuote(s: string): string =
+  #if s.len > 0 and allCharsInSet(s, {'0'..'9'}): result = s
+  #else:
   result = "'"
   for c in items(s):
     if c == '\'': add(result, "''")
@@ -86,7 +78,8 @@ proc setupQuery(db: TDbConn, query: TSqlQuery,
 proc setRow(res: PPGresult, r: var TRow, line, cols: int) =
   for col in 0..cols-1:
     setLen(r[col], 0)
-    add(r[col], PQgetvalue(res, line, cols))    
+    var x = PQgetvalue(res, line, col)
+    add(r[col], x)
   
 iterator dbFastRows*(db: TDbConn, query: TSqlQuery,
                      args: openarray[string]): TRow =
@@ -118,10 +111,8 @@ proc dbGetValue*(db: TDbConn, query: TSqlQuery,
   ## executes the query and returns the result dataset's the first column 
   ## of the first row. Returns "" if the dataset contains no rows. This uses
   ## `dbFastRows`, so it inherits its fragile behaviour.
-  result = ""
-  for row in dbFastRows(db, query, args): 
-    result = row[0]
-    break
+  var x = PQgetvalue(setupQuery(db, query, args), 0, 0)
+  result = if isNil(x): "" else: $x
   
 proc dbTryInsertID*(db: TDbConn, query: TSqlQuery, 
                     args: openarray[string]): int64 =
@@ -134,11 +125,6 @@ proc dbTryInsertID*(db: TDbConn, query: TSqlQuery,
     result = ParseBiggestInt(val)
   else:
     result = -1
-  #if mysqlRealQuery(db, q, q.len) != 0'i32: 
-  #  result = -1'i64
-  #else:
-  #  result = mysql_insert_id(db)
-  #LAST_INSERT_ID()
 
 proc dbInsertID*(db: TDbConn, query: TSqlQuery, 
                  args: openArray[string]): int64 =