2
Some basic tests for sqlite
7
static int test1(MYSQL *mysql)
14
MYSQL *my= mysql_init(NULL);
15
FAIL_IF(!my, "mysql_init() failed");
17
mysql_options(my, MYSQL_DATABASE_DRIVER, "sqlite");
19
FAIL_IF(!mysql_real_connect(my, hostname, username, password, (schema) ? schema : "test",
20
port, socketname, 0), mysql_error(my));
22
diag("Server name: %s", mysql_get_server_name(my));
24
diag("Connected to: %s (%d)", mysql_get_server_info(my), mysql_get_server_version(my));
26
rc= mysql_query(my, "CREATE TABLE t1 (a int, b varchar(255))");
27
rc= mysql_query(my, "DELETE FROM t1");
28
check_mysql_rc(rc, my);
30
rc= mysql_query(my, "BEGIN");
31
check_mysql_rc(rc, my);
32
rc= mysql_query(my, "INSERT INTO t1 VALUES (1, 'Monty')");
33
check_mysql_rc(rc, my);
34
rc= mysql_query(my, "INSERT INTO t1 VALUES (2, 'Serg')");
35
check_mysql_rc(rc, my);
36
rc= mysql_query(my, "INSERT INTO t1 VALUES (3, 'Holyfoot')");
37
check_mysql_rc(rc, my);
38
rc= mysql_query(my, "INSERT INTO t1 VALUES (4, 'Rasmus')");
39
check_mysql_rc(rc, my);
40
rc= mysql_query(my, "INSERT INTO t1 VALUES (5, 'Sanja')");
41
check_mysql_rc(rc, my);
42
rc= mysql_query(my, "COMMIT");
43
check_mysql_rc(rc, my);
45
rc= mysql_query(my, "SELECT a,b FROM t1");
46
check_mysql_rc(rc, my);
47
res= mysql_use_result(my);
48
FAIL_IF(!res, mysql_error(my));
50
fields= mysql_fetch_fields(res);
52
while ((row= mysql_fetch_row(res)) != NULL)
54
FAIL_IF(mysql_num_fields(res) != 2, "Got the wrong number of fields");
56
FAIL_IF(mysql_num_rows(res) != 5, "expected 5 rows");
57
FAIL_IF(mysql_errno(my), mysql_error(my));
59
mysql_free_result(res);
61
rc= mysql_query(my, "SELECT a FROM t1");
62
check_mysql_rc(rc, my);
63
res= mysql_use_result(my);
64
mysql_free_result(res);
66
FAIL_IF(mysql_errno(my), mysql_error(my));
73
static int test_simple_prepare(MYSQL *my)
75
MYSQL *mysql= mysql_init(NULL);
79
char *val2= "MariaDB";
81
char *stmt_create= "CREATE TABLE t2 (a int, b varchar(200), c int)";
82
char *stmt_insert= "INSERT INTO t2 VALUES (1, ?, ?)";
85
FAIL_IF(!mysql, "mysql_init() failed");
87
mysql_options(mysql, MYSQL_DATABASE_DRIVER, "sqlite");
89
FAIL_IF(!mysql_real_connect(mysql, hostname, username, password, (schema) ? schema : "test",
90
port, socketname, 0), mysql_error(my));
92
rc= mysql_query(mysql, "DROP TABLE IF EXISTS t2");
93
check_mysql_rc(rc, mysql);
95
stmt= mysql_stmt_init(mysql);
96
rc= mysql_stmt_prepare(stmt, stmt_create, strlen(stmt_create));
97
FAIL_IF(stmt->stmt_id != 1, "expected stmt_id=1");
98
check_stmt_rc(rc, stmt);
100
FAIL_IF(mysql_stmt_param_count(stmt), "Expected param_count= 0");
102
rc= mysql_stmt_execute(stmt);
103
check_stmt_rc(rc, stmt);
104
mysql_stmt_close(stmt);
106
stmt= mysql_stmt_init(mysql);
107
rc= mysql_stmt_prepare(stmt, stmt_insert, strlen(stmt_insert));
108
FAIL_IF(stmt->stmt_id != 2, "expected stmt_id=2");
109
check_stmt_rc(rc, stmt);
111
FAIL_IF(mysql_stmt_param_count(stmt) != 2, "Expected 2 parameters");
113
mysql_stmt_close(stmt);
115
stmt= mysql_stmt_init(mysql);
116
rc= mysql_stmt_prepare(stmt, "CREATE xxxx (a int)", 50);
117
FAIL_IF(rc == 0, "error expected");
118
mysql_stmt_close(stmt);
120
rc= mysql_query(mysql, "DROP TABLE IF EXISTS t2");
121
check_mysql_rc(rc, mysql);
122
rc= mysql_query(mysql, "CREATE TABLE t2 (a int, b varchar(20))");
123
check_mysql_rc(rc, mysql);
125
stmt= mysql_stmt_init(mysql);
126
rc= mysql_stmt_prepare(stmt, "INSERT INTO t2 VALUES(?,?)", 50);
127
check_stmt_rc(rc, stmt);
129
memset(bind, 0, sizeof(MYSQL_BIND) * 2);
130
bind[0].buffer_type= MYSQL_TYPE_LONG;
131
bind[0].buffer= &val1;
133
bind[1].buffer_type= MYSQL_TYPE_STRING;
134
bind[1].buffer= val2;
135
bind[1].buffer_length= strlen(val2);
137
rc= mysql_stmt_bind_param(stmt, bind);
138
check_stmt_rc(rc, stmt);
140
rc= mysql_stmt_execute(stmt);
141
check_stmt_rc(rc, stmt);
145
rc= mysql_stmt_execute(stmt);
146
check_stmt_rc(rc, stmt);
147
mysql_stmt_close(stmt);
149
bind[1].buffer= buffer;
151
stmt= mysql_stmt_init(mysql);
152
rc= mysql_stmt_prepare(stmt, "SELECT a,b FROM t2", 50);
153
check_stmt_rc(rc, stmt);
155
rc= mysql_stmt_execute(stmt);
156
check_stmt_rc(rc, stmt);
157
rc= mysql_stmt_bind_result(stmt, bind);
158
check_stmt_rc(rc, stmt);
161
mysql_stmt_fetch(stmt);
162
FAIL_IF(val1 != 17, "expected value=17");
164
mysql_stmt_fetch(stmt);
165
FAIL_IF(val1 != 18, "expected value=18");
167
rc= mysql_stmt_fetch(stmt);
168
FAIL_IF(rc != MYSQL_NO_DATA, "Expected eof");
169
mysql_stmt_close(stmt);
176
struct my_tests_st my_tests[] = {
177
{"test-sqlite", test1, TEST_CONNECTION_NONE, 0, NULL, NULL},
178
{"test_simple_prepare", test_simple_prepare, TEST_CONNECTION_NONE, 0, NULL, NULL},
179
{NULL, NULL, 0, 0, NULL, NULL}
183
int main(int argc, char **argv)
187
get_options(argc, argv);
193
return(exit_status());