File Coverage

SQLeet.xs
Criterion Covered Total %
statement 45 48 93.7
branch 13 18 72.2
condition n/a
subroutine n/a
pod n/a
total 58 66 87.8


line stmt bran cond sub pod time code
1             #define PERL_NO_GET_CONTEXT
2              
3             #include "SQLeetXS.h"
4              
5 202 50         DBISTATE_DECLARE;
    50          
6              
7             MODULE = DBD::SQLeet PACKAGE = DBD::SQLeet::db
8              
9             PROTOTYPES: DISABLE
10              
11             BOOT:
12 101           init_cxt();
13 101           sv_setpv(get_sv("DBD::SQLeet::sqlite_version", TRUE|GV_ADDMULTI), SQLITE_VERSION);
14 101           sv_setiv(get_sv("DBD::SQLeet::sqlite_version_number", TRUE|GV_ADDMULTI), SQLITE_VERSION_NUMBER);
15              
16             void
17             _do(dbh, statement)
18             SV *dbh
19             SV *statement
20             CODE:
21             {
22 2755           D_imp_dbh(dbh);
23             IV retval;
24 2755           retval = sqlite_db_do_sv(dbh, imp_dbh, statement);
25             /* remember that dbd_db_do_sv must return <= -2 for error */
26 2755 100         if (retval == 0) /* ok with no rows affected */
27 198           XST_mPV(0, "0E0"); /* (true but zero) */
28 2557 100         else if (retval < -1) /* -1 == unknown number of rows */
29 33           XST_mUNDEF(0); /* <= -2 means error */
30             else
31 2524           XST_mIV(0, retval); /* typically 1, rowcount or -1 */
32             }
33              
34             IV
35             last_insert_rowid(dbh)
36             SV *dbh
37             ALIAS:
38             DBD::SQLeet::db::sqlite_last_insert_rowid = 1
39             CODE:
40             {
41 2           D_imp_dbh(dbh);
42 2           RETVAL = (IV)sqlite3_last_insert_rowid(imp_dbh->db);
43             }
44             OUTPUT:
45             RETVAL
46              
47             static int
48             create_function(dbh, name, argc, func, flags = 0)
49             SV *dbh
50             char *name
51             int argc
52             SV *func
53             int flags
54             ALIAS:
55             DBD::SQLeet::db::sqlite_create_function = 1
56             CODE:
57             {
58 307           RETVAL = sqlite_db_create_function(aTHX_ dbh, name, argc, func, flags );
59             }
60             OUTPUT:
61             RETVAL
62              
63             #ifndef SQLITE_OMIT_LOAD_EXTENSION
64              
65             static int
66             enable_load_extension(dbh, onoff)
67             SV *dbh
68             int onoff
69             ALIAS:
70             DBD::SQLeet::db::sqlite_enable_load_extension = 1
71             CODE:
72             {
73 4           RETVAL = sqlite_db_enable_load_extension(aTHX_ dbh, onoff );
74             }
75             OUTPUT:
76             RETVAL
77              
78             static int
79             load_extension(dbh, file, proc = 0)
80             SV *dbh
81             const char *file
82             const char *proc
83             ALIAS:
84             DBD::SQLeet::db::sqlite_load_extension = 1
85             CODE:
86             {
87 0           RETVAL = sqlite_db_load_extension(aTHX_ dbh, file, proc);
88             }
89             OUTPUT:
90             RETVAL
91              
92             #endif
93              
94             static int
95             create_aggregate(dbh, name, argc, aggr, flags = 0)
96             SV *dbh
97             char *name
98             int argc
99             SV *aggr
100             int flags
101             ALIAS:
102             DBD::SQLeet::db::sqlite_create_aggregate = 1
103             CODE:
104             {
105 40           RETVAL = sqlite_db_create_aggregate(aTHX_ dbh, name, argc, aggr, flags );
106             }
107             OUTPUT:
108             RETVAL
109              
110             static int
111             create_collation(dbh, name, func)
112             SV *dbh
113             char *name
114             SV *func
115             ALIAS:
116             DBD::SQLeet::db::sqlite_create_collation = 1
117             CODE:
118             {
119 24           RETVAL = sqlite_db_create_collation(aTHX_ dbh, name, func );
120             }
121             OUTPUT:
122             RETVAL
123              
124              
125             static void
126             collation_needed(dbh, callback)
127             SV *dbh
128             SV *callback
129             ALIAS:
130             DBD::SQLeet::db::sqlite_collation_needed = 1
131             CODE:
132             {
133 251           sqlite_db_collation_needed(aTHX_ dbh, callback );
134             }
135              
136              
137             static int
138             progress_handler(dbh, n_opcodes, handler)
139             SV *dbh
140             int n_opcodes
141             SV *handler
142             ALIAS:
143             DBD::SQLeet::db::sqlite_progress_handler = 1
144             CODE:
145             {
146 8           RETVAL = sqlite_db_progress_handler(aTHX_ dbh, n_opcodes, handler );
147             }
148             OUTPUT:
149             RETVAL
150              
151             static int
152             sqlite_trace(dbh, callback)
153             SV *dbh
154             SV *callback
155             CODE:
156             {
157 6           RETVAL = sqlite_db_trace(aTHX_ dbh, callback );
158             }
159             OUTPUT:
160             RETVAL
161              
162             static int
163             profile(dbh, callback)
164             SV *dbh
165             SV *callback
166             ALIAS:
167             DBD::SQLeet::db::sqlite_profile = 1
168             CODE:
169             {
170 6           RETVAL = sqlite_db_profile(aTHX_ dbh, callback );
171             }
172             OUTPUT:
173             RETVAL
174              
175             SV*
176             commit_hook(dbh, hook)
177             SV *dbh
178             SV *hook
179             ALIAS:
180             DBD::SQLeet::db::sqlite_commit_hook = 1
181             CODE:
182             {
183 12           RETVAL = (SV*) sqlite_db_commit_hook( aTHX_ dbh, hook );
184             }
185             OUTPUT:
186             RETVAL
187              
188             SV*
189             rollback_hook(dbh, hook)
190             SV *dbh
191             SV *hook
192             ALIAS:
193             DBD::SQLeet::db::sqlite_rollback_hook = 1
194             CODE:
195             {
196 8           RETVAL = (SV*) sqlite_db_rollback_hook( aTHX_ dbh, hook );
197             }
198             OUTPUT:
199             RETVAL
200              
201             SV*
202             update_hook(dbh, hook)
203             SV *dbh
204             SV *hook
205             ALIAS:
206             DBD::SQLeet::db::sqlite_update_hook = 1
207             CODE:
208             {
209 8           RETVAL = (SV*) sqlite_db_update_hook( aTHX_ dbh, hook );
210             }
211             OUTPUT:
212             RETVAL
213              
214              
215             static int
216             set_authorizer(dbh, authorizer)
217             SV *dbh
218             SV *authorizer
219             ALIAS:
220             DBD::SQLeet::db::sqlite_set_authorizer = 1
221             CODE:
222             {
223 8           RETVAL = sqlite_db_set_authorizer( aTHX_ dbh, authorizer );
224             }
225             OUTPUT:
226             RETVAL
227              
228              
229             int
230             busy_timeout(dbh, timeout=NULL)
231             SV *dbh
232             SV *timeout
233             ALIAS:
234             DBD::SQLeet::db::sqlite_busy_timeout = 1
235             CODE:
236 26           RETVAL = sqlite_db_busy_timeout(aTHX_ dbh, timeout );
237             OUTPUT:
238             RETVAL
239              
240             static int
241             backup_from_file(dbh, filename)
242             SV *dbh
243             char *filename
244             ALIAS:
245             DBD::SQLeet::db::sqlite_backup_from_file = 1
246             CODE:
247 6           RETVAL = sqlite_db_backup_from_file(aTHX_ dbh, filename);
248             OUTPUT:
249             RETVAL
250              
251             static int
252             backup_to_file(dbh, filename)
253             SV *dbh
254             char *filename
255             ALIAS:
256             DBD::SQLeet::db::sqlite_backup_to_file = 1
257             CODE:
258 6           RETVAL = sqlite_db_backup_to_file(aTHX_ dbh, filename);
259             OUTPUT:
260             RETVAL
261              
262             HV*
263             table_column_metadata(dbh, dbname, tablename, columnname)
264             SV* dbh
265             SV* dbname
266             SV* tablename
267             SV* columnname
268             ALIAS:
269             DBD::SQLeet::db::sqlite_table_column_metadata = 1
270             CODE:
271 14           RETVAL = sqlite_db_table_column_metadata(aTHX_ dbh, dbname, tablename, columnname);
272             OUTPUT:
273             RETVAL
274              
275             SV*
276             db_filename(dbh)
277             SV* dbh
278             ALIAS:
279             DBD::SQLeet::db::sqlite_db_filename = 1
280             CODE:
281 11           RETVAL = sqlite_db_filename(aTHX_ dbh);
282             OUTPUT:
283             RETVAL
284              
285             static int
286             register_fts3_perl_tokenizer(dbh)
287             SV *dbh
288             ALIAS:
289             DBD::SQLeet::db::sqlite_register_fts3_perl_tokenizer = 1
290             CODE:
291 247           RETVAL = sqlite_db_register_fts3_perl_tokenizer(aTHX_ dbh);
292             OUTPUT:
293             RETVAL
294              
295             HV*
296             db_status(dbh, reset = 0)
297             SV* dbh
298             int reset
299             ALIAS:
300             DBD::SQLeet::db::sqlite_db_status = 1
301             CODE:
302 2           RETVAL = (HV*)_sqlite_db_status(aTHX_ dbh, reset);
303             OUTPUT:
304             RETVAL
305              
306              
307             static int
308             create_module(dbh, name, perl_class)
309             SV *dbh
310             char *name
311             char *perl_class
312             ALIAS:
313             DBD::SQLeet::db::sqlite_create_module = 1
314             CODE:
315             {
316 0           RETVAL = sqlite_db_create_module(aTHX_ dbh, name, perl_class);
317             }
318             OUTPUT:
319             RETVAL
320              
321              
322             MODULE = DBD::SQLeet PACKAGE = DBD::SQLeet::st
323              
324             PROTOTYPES: DISABLE
325              
326             HV*
327             st_status(sth, reset = 0)
328             SV* sth
329             int reset
330             ALIAS:
331             DBD::SQLeet::st::sqlite_st_status = 1
332             CODE:
333 2           RETVAL = (HV*)_sqlite_st_status(aTHX_ sth, reset);
334             OUTPUT:
335             RETVAL
336              
337             MODULE = DBD::SQLeet PACKAGE = DBD::SQLeet
338              
339             # a couple of constants exported from sqlite3.h
340              
341             PROTOTYPES: DISABLE
342              
343             static int
344             compile_options()
345             CODE:
346 13           int n = 0;
347 13           AV* av = (AV*)sqlite_compile_options();
348 13 50         if (av) {
349             int i;
350 13           n = av_len(av) + 1;
351 13 50         EXTEND(sp, n);
    50          
352 117 100         for (i = 0; i < n; i++) {
353 104           PUSHs(AvARRAY(av)[i]);
354             }
355             }
356 13           XSRETURN(n);
357              
358             HV*
359             sqlite_status(reset = 0)
360             int reset
361             CODE:
362 1           RETVAL = (HV*)_sqlite_status(reset);
363             OUTPUT:
364             RETVAL
365              
366             #if SQLITE_VERSION_NUMBER >= 3010000
367              
368             int
369             strglob(const char *zglob, const char *zstr)
370             CODE:
371 0           RETVAL = sqlite3_strglob(zglob, zstr);
372             OUTPUT:
373             RETVAL
374              
375             int
376             strlike(const char *zglob, const char *zstr, const char *esc = NULL)
377             CODE:
378 12 100         if (esc) {
379 8           RETVAL = sqlite3_strlike(zglob, zstr, (unsigned int)(*esc));
380             } else {
381 4           RETVAL = sqlite3_strlike(zglob, zstr, 0);
382             }
383             OUTPUT:
384             RETVAL
385              
386             #endif
387              
388             INCLUDE: constants.inc
389             INCLUDE: SQLeet.xsi