dbd/sqlite3/statement.c

Sun, 23 Nov 2008 01:29:09 +0000

author
nrich@ii.net
date
Sun, 23 Nov 2008 01:29:09 +0000
changeset 1
408291a6eb3e
child 2
c4f02fc67e5a
permissions
-rw-r--r--

Initial import.

1
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
1 #include "dbd_sqlite3.h"
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
2
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
3 static lua_push_type_t sqlite_to_lua_push(unsigned int sqlite_type) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
4 lua_push_type_t lua_type;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
5
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
6 switch(sqlite_type) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
7 case SQLITE_NULL:
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
8 lua_type = LUA_PUSH_NIL;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
9 break;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
10
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
11 case SQLITE_INTEGER:
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
12 lua_type = LUA_PUSH_INTEGER;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
13 break;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
14
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
15 case SQLITE_FLOAT:
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
16 lua_type = LUA_PUSH_NUMBER;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
17 break;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
18
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
19 default:
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
20 lua_type = LUA_PUSH_STRING;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
21 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
22
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
23 return lua_type;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
24 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
25
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
26 static int step(statement_t *statement) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
27 int res = sqlite3_step(statement->stmt);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
28
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
29 if (res == SQLITE_DONE) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
30 statement->more_data = 0;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
31 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
32 } else if (res == SQLITE_ROW) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
33 statement->more_data = 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
34 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
35 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
36
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
37 return 0;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
38 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
39
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
40 static int statement_close(lua_State *L) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
41 statement_t *statement = (statement_t *)luaL_checkudata(L, 1, DBD_SQLITE_STATEMENT);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
42 int ok = 0;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
43
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
44 if (statement->stmt) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
45 if (sqlite3_finalize(statement->stmt) == SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
46 ok = 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
47 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
48 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
49
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
50 lua_pushboolean(L, ok);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
51
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
52 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
53 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
54
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
55 static int statement_execute(lua_State *L) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
56 int n = lua_gettop(L);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
57 statement_t *statement = (statement_t *)luaL_checkudata(L, 1, DBD_SQLITE_STATEMENT);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
58 int p;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
59
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
60 if (sqlite3_reset(statement->stmt) != SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
61 lua_pushboolean(L, 0);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
62 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
63 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
64
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
65 for (p = 2; p <= n; p++) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
66 int i = p - 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
67
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
68 if (lua_isnil(L, p)) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
69 if (sqlite3_bind_null(statement->stmt, i) != SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
70 luaL_error(L, "Failed to execute statement: %s", sqlite3_errmsg(statement->sqlite));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
71 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
72 } else if (lua_isnumber(L, p)) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
73 if (sqlite3_bind_double(statement->stmt, i, luaL_checknumber(L, p)) != SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
74 luaL_error(L, "Failed to execute statement: %s", sqlite3_errmsg(statement->sqlite));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
75 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
76 } else if (lua_isstring(L, p)) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
77 if (sqlite3_bind_text(statement->stmt, i, luaL_checkstring(L, p), -1, SQLITE_STATIC) != SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
78 luaL_error(L, "Failed to execute statement: %s", sqlite3_errmsg(statement->sqlite));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
79 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
80 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
81 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
82
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
83 lua_pushboolean(L, step(statement));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
84 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
85 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
86
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
87 static int statement_fetch_impl(lua_State *L, int named_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
88 statement_t *statement = (statement_t *)luaL_checkudata(L, 1, DBD_SQLITE_STATEMENT);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
89 int num_columns;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
90
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
91 if (!statement->more_data) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
92 lua_pushnil(L);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
93 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
94 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
95
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
96 num_columns = sqlite3_column_count(statement->stmt);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
97
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
98 if (num_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
99 int i;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
100 int d = 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
101
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
102 lua_newtable(L);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
103
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
104 for (i = 0; i < num_columns; i++) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
105 lua_push_type_t lua_push = sqlite_to_lua_push(sqlite3_column_type(statement->stmt, i));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
106 const char *name = sqlite3_column_name(statement->stmt, i);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
107
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
108 if (lua_push == LUA_PUSH_NIL) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
109 if (named_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
110 LUA_PUSH_ATTRIB_NIL(name);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
111 } else {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
112 LUA_PUSH_ARRAY_NIL(d);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
113 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
114 } else if (lua_push == LUA_PUSH_INTEGER) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
115 int val = sqlite3_column_int(statement->stmt, i);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
116
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
117 if (named_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
118 LUA_PUSH_ATTRIB_INT(name, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
119 } else {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
120 LUA_PUSH_ARRAY_INT(d, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
121 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
122 } else if (lua_push == LUA_PUSH_NUMBER) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
123 double val = sqlite3_column_double(statement->stmt, i);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
124
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
125 if (named_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
126 LUA_PUSH_ATTRIB_FLOAT(name, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
127 } else {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
128 LUA_PUSH_ARRAY_FLOAT(d, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
129 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
130 } else if (lua_push == LUA_PUSH_STRING) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
131 const char *val = (const char *)sqlite3_column_text(statement->stmt, i);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
132
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
133 if (named_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
134 LUA_PUSH_ATTRIB_STRING(name, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
135 } else {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
136 LUA_PUSH_ARRAY_STRING(d, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
137 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
138 } else if (lua_push == LUA_PUSH_BOOLEAN) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
139 int val = sqlite3_column_int(statement->stmt, i);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
140
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
141 if (named_columns) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
142 LUA_PUSH_ATTRIB_BOOL(name, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
143 } else {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
144 LUA_PUSH_ARRAY_BOOL(d, val);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
145 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
146 } else {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
147 luaL_error(L, "Unknown push type in result set");
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
148 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
149 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
150 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
151
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
152 if (step(statement) == 0) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
153 if (sqlite3_reset(statement->stmt) != SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
154 luaL_error(L, "Failed to fetch statement: %s", sqlite3_errmsg(statement->sqlite));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
155 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
156 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
157
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
158 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
159 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
160
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
161
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
162 static int statement_fetch(lua_State *L) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
163 return statement_fetch_impl(L, 0);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
164 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
165
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
166 static int statement_fetchtable(lua_State *L) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
167 return statement_fetch_impl(L, 1);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
168 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
169
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
170 static int statement_gc(lua_State *L) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
171 /* always free the handle */
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
172 statement_close(L);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
173
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
174 return 0;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
175 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
176
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
177
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
178 static const luaL_Reg statement_methods[] = {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
179 {"close", statement_close},
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
180 {"execute", statement_execute},
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
181 {"fetch", statement_fetch},
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
182 {"fetchtable", statement_fetchtable},
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
183 {NULL, NULL}
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
184 };
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
185
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
186 static const luaL_Reg statement_class_methods[] = {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
187 {NULL, NULL}
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
188 };
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
189
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
190 int dbd_sqlite3_statement_create(lua_State *L, connection_t *conn, const char *sql_query) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
191 statement_t *statement = NULL;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
192
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
193 statement = (statement_t *)lua_newuserdata(L, sizeof(statement_t));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
194 statement->sqlite = conn->sqlite;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
195 statement->stmt = NULL;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
196 statement->more_data = 0;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
197
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
198 if (sqlite3_prepare_v2(statement->sqlite, sql_query, strlen(sql_query), &statement->stmt, NULL) != SQLITE_OK) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
199 luaL_error(L, "Failed to prepare statement: %s", sqlite3_errmsg(statement->sqlite));
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
200 lua_pushnil(L);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
201 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
202 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
203
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
204 luaL_getmetatable(L, DBD_SQLITE_STATEMENT);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
205 lua_setmetatable(L, -2);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
206
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
207 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
208 }
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
209
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
210 int dbd_sqlite3_statement(lua_State *L) {
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
211 luaL_newmetatable(L, DBD_SQLITE_STATEMENT);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
212 luaL_register(L, 0, statement_methods);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
213 lua_pushvalue(L,-1);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
214 lua_setfield(L, -2, "__index");
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
215
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
216 lua_pushcfunction(L, statement_gc);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
217 lua_setfield(L, -2, "__gc");
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
218
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
219 luaL_register(L, DBD_SQLITE_STATEMENT, statement_class_methods);
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
220
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
221 return 1;
408291a6eb3e Initial import.
nrich@ii.net
parents:
diff changeset
222 }

mercurial