db_utils.anubis
2.67 KB
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
/*
*
* User: David RENE
* Date: 11/12/2007
* Time: 01:16
* (c) Calexium
*
*/
read tools/basis.anubis
read system/logger.anubis
read data_base/sqlite.anubis
read calexium_lib/net_services_protocols/logger_service.anubis
define Result(SQLite3Error, SQLite3HeadersOrRow -> SQLite3Row)
sql_query_timeout
(
SQLite3DataBase db,
String sql_command,
Int32 timeout
) =
if sql_query(db, sql_command) is
{
error(sql_error) then (
if (sql_error.code /= 1 & sql_error.code /= 5 & sql_error.code /= 6) | now > timeout then
error(sql_error)
else
(
if sql_error.code = 5 then
unique
else
print_db_error(sql_error)
);
sleep(100);
sql_query_timeout(db, sql_command, timeout)),
ok(cursor) then ok(cursor)
}.
public define Result(SQLite3Error, One)
sql_transaction
(
SQLite3DataBase db,
String sql_command,
String message
) =
// logDebug(debug_log, "Entering into transaction [" + message + "].");
if db_do_transaction(
db,
(One _) |->
if sql_query(db, sql_command) is
{
error(err) then logError("DB", db_error(err,message));failure //error in the SQL request
ok(cursor) then success(unique)
},
success( (SQLite3Error err) |-> logError("DB", db_error(err,message))),
60000 // max 60s
) is
{
error(err_and_result) then
// logDebug(debug_log, "Exiting from transaction [" + message + "] with error.");
if err_and_result is (err, mb_result) then
error(err),
ok(_) then
// logDebug(debug_log, "Exiting from transaction [" + message + "].");
ok(unique)
}.
public define Maybe(SQLite3HeadersOrRow -> SQLite3Row)
sql_query_timeout
(
SQLite3DataBase db, //database handle
String sql_query, //sql query itself
String msg //message to be shown if an error occure
) =
//we try with 30 sec of timeout
sql_query_timeout(db, sql_query, now + 30, msg).
public define Maybe(SQLite3HeadersOrRow -> SQLite3Row)
sql_query_timeout
(
SQLite3DataBase db, //database handle
String sql_query, //sql query itself
String msg //message to be shown if an error occure
) =
//we try with 30 sec of timeout
if sql_query_timeout(db, sql_query, now + 60) is
{
error(sql_error) then logError("DB", db_error(sql_error,msg));failure,
ok(cursor) then success(cursor)
}.