]> matita.cs.unibo.it Git - helm.git/commitdiff
fixed an escaping error, added more infos to the generic error, callback catches...
authorEnrico Tassi <enrico.tassi@inria.fr>
Thu, 19 Jul 2007 10:01:13 +0000 (10:01 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Thu, 19 Jul 2007 10:01:13 +0000 (10:01 +0000)
components/hmysql/hSqlite3.ml

index 3693e445b84642cba44e78a8c3550639946ddd53..d5c5f0fcce34512e29b70f8211346698ba4be16a 100644 (file)
@@ -43,7 +43,7 @@ type error_code =
 
 exception Error of string
 
-let prerr_endline s = ()(*HLog.debug s;;*)
+let prerr_endline s = () (*HLog.debug s*);;
 
 let profiler = HExtlib.profile "Sqlite3"
 
@@ -77,6 +77,7 @@ let quick_connect
   (* attach the REGEX function *)
   Sqlite3.create_fun2 db "REGEXP"
       (fun s rex -> 
+        try
          match rex, s with
          | Sqlite3.Data.TEXT rex, Sqlite3.Data.BLOB s
          | Sqlite3.Data.TEXT rex, Sqlite3.Data.TEXT s ->
@@ -85,7 +86,8 @@ let quick_connect
                Sqlite3.Data.INT 1L 
              else 
                Sqlite3.Data.INT 0L
-         | _ -> raise (Error "wrong types to 'REGEXP'"));
+         | _ -> raise (Error "wrong types to 'REGEXP'")
+        with exn -> HLog.error (Printexc.to_string exn); raise exn);
   Some db
 ;;
 
@@ -98,7 +100,13 @@ let disconnect db =
 ;;
 
 (* XXX hack, sqlite has a print "%q" that should be used, but is not bound *)
-let escape s = Pcre.replace ~pat:"([^'])'([^'])" ~templ:"$1''$2" s
+let escape s = 
+  let s_escaped = Pcre.replace ~pat:"'" ~templ:"''" s in
+  (*let s_escaped = Pcre.replace ~pat:"([^'])'([^'])" ~templ:"$1''$2" s in*)
+  prerr_endline s;
+  prerr_endline s_escaped;
+  s_escaped
+;;
 
 let string_of_rc = function
   |Sqlite3.Rc.OK -> "Sqlite3.Rc.OK" 
@@ -150,7 +158,7 @@ let exec s db =
       in
       match rc with
       | Sqlite3.Rc.OK -> !stored_result
-      | _ -> raise (Error (string_of_rc rc))
+      | _ -> raise (Error (string_of_rc rc ^ ": " ^ Sqlite3.errmsg db ))
 ;;
 
 let rec map res ~f =