1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
module type S = sig
type error = int * string
type 'a result = ('a, error) Stdlib.result
module Time : sig
type t
val year : t -> int
val month : t -> int
val day : t -> int
val hour : t -> int
val minute : t -> int
val second : t -> int
val microsecond : t -> int
val time : hour:int -> minute:int -> second:int
-> ?microsecond:int -> unit -> t
val local_timestamp : float -> t
val utc_timestamp : float -> t
val date : year:int -> month:int -> day:int -> unit -> t
val datetime : year:int -> month:int -> day:int
-> hour:int -> minute:int -> second:int
-> ?microsecond:int -> unit -> t
end
module Field : sig
type t
type value =
[ `Null
| `Int of int
| `Float of float
| `String of string
| `Bytes of bytes
| `Time of Time.t
]
val name : t -> string
val value : t -> value
val null_value : t -> bool
val can_be_null : t -> bool
val int : t -> int
val float : t -> float
val string : t -> string
val bytes : t -> bytes
val time : t -> Time.t
val int_opt : t -> int option
val float_opt : t -> float option
val string_opt : t -> string option
val bytes_opt : t -> bytes option
val time_opt : t -> Time.t option
end
module Row : sig
module type S = sig
type t
val build : int -> (int -> Field.t) -> t
end
module StringMap : Map.S with type key = string
module Array : (S with type t = Field.t array)
module Map : (S with type t = Field.t StringMap.t)
module Hashtbl : (S with type t = (string, Field.t) Hashtbl.t)
end
module Res : sig
type t
val num_rows : t -> int
val affected_rows : t -> int
val insert_id : t -> int
val fetch : (module Row.S with type t = 'r) -> t -> 'r option result
end
module Stmt : sig
type t
val execute : t -> Field.value array -> Res.t result
val reset : t -> unit result
val close : t -> unit result
end
type t
type flag =
| Compress
| Found_rows
| Ignore_sigpipe
| Ignore_space
| Interactive
| Local_files
| Multi_results
| Multi_statements
| No_schema
| Odbc
| Ssl
| Remember_options
type protocol =
| Default
| Tcp
| Socket
| Pipe
| Memory
type client_option =
| Connect_timeout of int
| Compress
| Named_pipe of string
| Init_command of string
| Read_default_file of string
| Read_default_group of string
| Set_charset_dir of string
| Set_charset_name of string
| Local_infile of bool
| Protocol of protocol
| Shared_memory_base_name of string
| Read_timeout of int
| Write_timeout of int
| Secure_auth of bool
| Report_data_truncation of bool
| Reconnect of bool
| Ssl_verify_server_cert of bool
| Plugin_dir of string
| Default_auth of string
| Bind of string
| Ssl_key of string
| Ssl_cert of string
| Ssl_ca of string
| Ssl_capath of string
| Ssl_cipher of string
| Ssl_crl of string
| Ssl_crlpath of string
| Connect_attr_reset
| Connect_attr_add of string * string
| Connect_attr_delete of string
| Server_public_key of string
| Enable_cleartext_plugin of bool
type server_option =
| Multi_statements of bool
val connect : ?host:string
-> ?user:string
-> ?pass:string
-> ?db:string -> ?port:int -> ?socket:string
-> ?flags:flag list
-> ?options:client_option list -> unit
-> t result
val close : t -> unit
val library_end : unit -> unit
val set_character_set : t -> string -> unit result
val select_db : t -> string -> unit result
val change_user : t -> string -> string -> string option -> unit result
val get_server_info : t -> string
val get_server_version : t -> int
val get_host_info : t -> string
val get_proto_info : t -> int
val set_client_option : t -> client_option -> unit
val set_server_option : t -> server_option -> unit result
val ping : t -> unit result
val autocommit : t -> bool -> unit result
val start_txn : t -> unit result
val commit : t -> unit result
val rollback : t -> unit result
val prepare : t -> string -> Stmt.t result
end
module B = Binding_wrappers
module Common = Common
module Blocking = Blocking
module Nonblocking = Nonblocking
let () = B.mysql_library_init 0 None None |> ignore