(*
* <COPYRIGHT>
* Copyright 2003 Gerd Stolpmann
*
* <GPL>
* This file is part of WTimer.
*
* WTimer is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* WTimer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with WDialog; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* </>
*)
(* $Id: db_my.ml,v 1.5 2003/03/23 11:59:13 gerd Exp $
* ----------------------------------------------------------------------
*
*)
(* Access MySQL by ocamlodbc: *)
module Connection = struct
include Db_pg.Connection
(* This module bases on Db_pg and redefines some functions *)
open Printf
let _ =
_begin_transaction := (fun c ->
_exec_nr c "set session transaction isolation level read committed";
_exec_nr c "set autocommit=0";
_exec_nr c "begin")
let have_on_delete_cascade = false
let have_time_keyword = ""
let have_interval_keyword = ""
let day_interval d =
sprintf "interval %d day" d
let quote_re = Netstring_str.regexp "[\\']"
let quote s =
Netstring_str.global_replace quote_re "\\\\\\0" s
let bool_true = "1"
let bool_false = "0"
let is_bool_true =
function
"1" | "t" | "true" | "y" | "yes" -> true
| _ -> false
let is_bool_false =
function
"0" | "f" | "false" | "n" | "no" -> true
| _ -> false
let expr_next_serial_value table column =
(* Return the SQL expression to increment the counter for [table] and
* [column], and to return the new value.
*)
"0"
let expr_last_serial_value table column =
(* Return the SQL expression to return the counter for [table] and
* [column] again
*)
"last_insert_id()"
let get_last_serial_value c table column =
let l = exec c (sprintf "select %s"
(expr_last_serial_value table column)) in
match l with
[[ r ]] -> int_of_string r
| _ -> failwith "get_last_serial_value"
end
(* ======================================================================
* History:
*
* $Log: db_my.ml,v $
* Revision 1.5 2003/03/23 11:59:13 gerd
* GPL
*
* Revision 1.4 2003/02/04 01:42:40 gerd
* The code does no longer use signals to get rid of inactive
* database connections. Instead, new features of ocamlnet are used
* (js_idle_worker).
*
* Revision 1.3 2003/02/03 01:28:59 gerd
* Continued.
*
* Revision 1.2 2003/01/16 01:42:03 gerd
* MySQL port
*
* Revision 1.1 2003/01/16 00:31:10 gerd
* Initial revision.
*
*
*)