| line |
true |
false |
branch |
|
34
|
0 |
0 |
PUSHMARK(SP); |
|
35
|
0 |
0 |
XPUSHs(((perl_vtab *) pVTab)->perl_vtab_obj); |
|
36
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(i))); |
|
43
|
0 |
0 |
FREETMPS; |
|
66
|
0 |
0 |
if( vt==NULL ) return SQLITE_NOMEM; |
|
74
|
0 |
0 |
PUSHMARK(SP); |
|
75
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(init_data->perl_class, 0))); |
|
76
|
0 |
0 |
XPUSHs(init_data->dbh); |
|
77
|
0 |
0 |
for(i = 0; i < argc; i++) { |
|
78
|
0 |
0 |
XPUSHs(newSVpvn_flags(argv[i], strlen(argv[i]), SVs_TEMP|SVf_UTF8)); |
|
85
|
0 |
0 |
if ( count != 1 ) { |
|
94
|
0 |
0 |
if ( !sv_isobject(perl_vtab_obj) ) { |
|
101
|
0 |
0 |
PUSHMARK(SP); |
|
102
|
0 |
0 |
XPUSHs(perl_vtab_obj); |
|
108
|
0 |
0 |
if (count != 1 ) { |
|
118
|
0 |
0 |
rc = sqlite3_declare_vtab(db, SvPVutf8_nolen(sql)); |
|
121
|
0 |
0 |
if (rc == SQLITE_OK) { |
|
131
|
0 |
0 |
FREETMPS; |
|
233
|
0 |
0 |
for (i=0; inConstraint; i++){ |
|
239
|
0 |
0 |
hv_stores(constraint, "usable", pCons->usable ? &PL_sv_yes : &PL_sv_no); |
|
245
|
0 |
0 |
for (i=0; inOrderBy; i++){ |
|
249
|
0 |
0 |
hv_stores(order, "desc", pOrder->desc ? &PL_sv_yes : &PL_sv_no); |
|
254
|
0 |
0 |
PUSHMARK(SP); |
|
255
|
0 |
0 |
XPUSHs( ((perl_vtab *) pVTab)->perl_vtab_obj); |
|
256
|
0 |
0 |
XPUSHs( sv_2mortal( newRV_noinc((SV*) constraints))); |
|
257
|
0 |
0 |
XPUSHs( sv_2mortal( newRV_noinc((SV*) order_by))); |
|
263
|
0 |
0 |
if (count != 1) |
|
266
|
0 |
0 |
if (!(hashref && SvROK(hashref) && SvTYPE(SvRV(hashref)) == SVt_PVHV)) |
|
|
0 |
0 |
if (!(hashref && SvROK(hashref) && SvTYPE(SvRV(hashref)) == SVt_PVHV)) |
|
|
0 |
0 |
if (!(hashref && SvROK(hashref) && SvTYPE(SvRV(hashref)) == SVt_PVHV)) |
|
270
|
0 |
0 |
pIdxInfo->idxNum = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->idxNum = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->idxNum = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->idxNum = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->idxNum = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
272
|
0 |
0 |
if (val && SvOK(*val)) { |
|
|
0 |
0 |
if (val && SvOK(*val)) { |
|
|
0 |
0 |
if (val && SvOK(*val)) { |
|
|
0 |
0 |
if (val && SvOK(*val)) { |
|
274
|
0 |
0 |
char *str = SvPVutf8(*val, len); |
|
281
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pIdxInfo->orderByConsumed = (val && SvTRUE(*val)) ? 1 : 0; |
|
283
|
0 |
0 |
pIdxInfo->estimatedCost = (val && SvOK(*val)) ? SvNV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedCost = (val && SvOK(*val)) ? SvNV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedCost = (val && SvOK(*val)) ? SvNV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedCost = (val && SvOK(*val)) ? SvNV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedCost = (val && SvOK(*val)) ? SvNV(*val) : 0; |
|
286
|
0 |
0 |
pIdxInfo->estimatedRows = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedRows = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedRows = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedRows = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
|
0 |
0 |
pIdxInfo->estimatedRows = (val && SvOK(*val)) ? SvIV(*val) : 0; |
|
291
|
0 |
0 |
for (i=0; inConstraint; i++){ |
|
293
|
0 |
0 |
if (!(rv && SvROK(*rv) && SvTYPE(SvRV(*rv)) == SVt_PVHV)) |
|
|
0 |
0 |
if (!(rv && SvROK(*rv) && SvTYPE(SvRV(*rv)) == SVt_PVHV)) |
|
|
0 |
0 |
if (!(rv && SvROK(*rv) && SvTYPE(SvRV(*rv)) == SVt_PVHV)) |
|
297
|
0 |
0 |
argvIndex = (val && SvOK(*val)) ? SvIV(*val) + 1: 0; |
|
|
0 |
0 |
argvIndex = (val && SvOK(*val)) ? SvIV(*val) + 1: 0; |
|
|
0 |
0 |
argvIndex = (val && SvOK(*val)) ? SvIV(*val) + 1: 0; |
|
|
0 |
0 |
argvIndex = (val && SvOK(*val)) ? SvIV(*val) + 1: 0; |
|
|
0 |
0 |
argvIndex = (val && SvOK(*val)) ? SvIV(*val) + 1: 0; |
|
302
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
|
0 |
0 |
pConsUsage->omit = (val && SvTRUE(*val)) ? 1 : 0; |
|
306
|
0 |
0 |
FREETMPS; |
|
327
|
0 |
0 |
if( cursor==NULL ) return SQLITE_NOMEM; |
|
331
|
0 |
0 |
PUSHMARK(SP); |
|
332
|
0 |
0 |
XPUSHs( ((perl_vtab *) pVTab)->perl_vtab_obj); |
|
336
|
0 |
0 |
if (count != 1) { |
|
343
|
0 |
0 |
if ( !sv_isobject(perl_cursor) ) { |
|
353
|
0 |
0 |
if (rc == SQLITE_OK) { |
|
362
|
0 |
0 |
FREETMPS; |
|
384
|
0 |
0 |
FREETMPS; |
|
403
|
0 |
0 |
PUSHMARK(SP); |
|
404
|
0 |
0 |
XPUSHs(((perl_vtab_cursor *) pVtabCursor)->perl_cursor_obj); |
|
405
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(idxNum))); |
|
406
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(idxStr, 0))); |
|
407
|
0 |
0 |
for(i = 0; i < argc; i++) { |
|
408
|
0 |
0 |
XPUSHs(stacked_sv_from_sqlite3_value(aTHX_ argv[i], is_unicode)); |
|
416
|
0 |
0 |
FREETMPS; |
|
432
|
0 |
0 |
PUSHMARK(SP); |
|
433
|
0 |
0 |
XPUSHs(((perl_vtab_cursor *) pVtabCursor)->perl_cursor_obj); |
|
440
|
0 |
0 |
FREETMPS; |
|
455
|
0 |
0 |
PUSHMARK(SP); |
|
456
|
0 |
0 |
XPUSHs(((perl_vtab_cursor *) pVtabCursor)->perl_cursor_obj); |
|
460
|
0 |
0 |
if (count != 1) { |
|
466
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
|
0 |
0 |
eof = SvTRUE(sv); /* eof = SvTRUE(POPs); # I don't understand why :-( */ |
|
470
|
0 |
0 |
FREETMPS; |
|
489
|
0 |
0 |
PUSHMARK(SP); |
|
490
|
0 |
0 |
XPUSHs(((perl_vtab_cursor *) pVtabCursor)->perl_cursor_obj); |
|
491
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(col))); |
|
495
|
0 |
0 |
if (count != 1) { |
|
507
|
0 |
0 |
FREETMPS; |
|
524
|
0 |
0 |
PUSHMARK(SP); |
|
525
|
0 |
0 |
XPUSHs(((perl_vtab_cursor *) pVtabCursor)->perl_cursor_obj); |
|
529
|
0 |
0 |
if (count != 1) { |
|
534
|
0 |
0 |
*pRowid =POPi; |
|
539
|
0 |
0 |
FREETMPS; |
|
560
|
0 |
0 |
PUSHMARK(SP); |
|
561
|
0 |
0 |
XPUSHs(((perl_vtab *) pVTab)->perl_vtab_obj); |
|
562
|
0 |
0 |
for(i = 0; i < argc; i++) { |
|
563
|
0 |
0 |
XPUSHs(stacked_sv_from_sqlite3_value(aTHX_ argv[i], is_unicode)); |
|
568
|
0 |
0 |
if (count != 1) { |
|
573
|
0 |
0 |
if (argc > 1 && sqlite3_value_type(argv[0]) == SQLITE_NULL |
|
|
0 |
0 |
if (argc > 1 && sqlite3_value_type(argv[0]) == SQLITE_NULL |
|
574
|
0 |
0 |
&& sqlite3_value_type(argv[1]) == SQLITE_NULL) { |
|
578
|
0 |
0 |
if (!SvOK(rowidsv)) |
|
|
0 |
0 |
if (!SvOK(rowidsv)) |
|
|
0 |
0 |
if (!SvOK(rowidsv)) |
|
580
|
0 |
0 |
else if (SvUOK(rowidsv)) |
|
581
|
0 |
0 |
*pRowid = SvUV(rowidsv); |
|
582
|
0 |
0 |
else if (SvIOK(rowidsv)) |
|
583
|
0 |
0 |
*pRowid = SvIV(rowidsv); |
|
585
|
0 |
0 |
*pRowid = (sqlite3_int64)SvNV(rowidsv); |
|
592
|
0 |
0 |
FREETMPS; |
|
634
|
0 |
0 |
if (hv_exists(functions, func_name, len)) { |
|
636
|
0 |
0 |
if (val && SvOK(*val)) { |
|
|
0 |
0 |
if (val && SvOK(*val)) { |
|
|
0 |
0 |
if (val && SvOK(*val)) { |
|
|
0 |
0 |
if (val && SvOK(*val)) { |
|
642
|
0 |
0 |
PUSHMARK(SP); |
|
643
|
0 |
0 |
XPUSHs(((perl_vtab *) pVTab)->perl_vtab_obj); |
|
644
|
0 |
0 |
XPUSHs(sv_2mortal(newSViv(nArg))); |
|
645
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(zName, 0))); |
|
649
|
0 |
0 |
if (count != 1) { |
|
655
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
|
0 |
0 |
if (SvTRUE(result)) { |
|
662
|
0 |
0 |
hv_store(functions, func_name, len, coderef ? coderef : &PL_sv_undef, 0); |
|
666
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
|
0 |
0 |
is_overloaded = coderef && SvTRUE(coderef); |
|
667
|
0 |
0 |
if (is_overloaded) { |
|
669
|
0 |
0 |
: sqlite_db_func_dispatcher_no_unicode; |
|
675
|
0 |
0 |
FREETMPS; |
|
691
|
0 |
0 |
PUSHMARK(SP); |
|
692
|
0 |
0 |
XPUSHs(((perl_vtab *) pVTab)->perl_vtab_obj); |
|
693
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(zNew, 0))); |
|
697
|
0 |
0 |
if (count != 1) { |
|
702
|
0 |
0 |
rc = POPi; |
|
706
|
0 |
0 |
FREETMPS; |
|
768
|
0 |
0 |
PUSHMARK(SP); |
|
769
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(init_data->perl_class, 0))); |
|
780
|
0 |
0 |
FREETMPS; |
|
799
|
0 |
0 |
if (!DBIc_ACTIVE(imp_dbh)) { |
|
806
|
0 |
0 |
if (!get_av(module_ISA, 0)) { |
|
826
|
0 |
0 |
if ( rc != SQLITE_OK ) { |
|
834
|
0 |
0 |
PUSHMARK(SP); |
|
835
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(perl_class, 0))); |
|
836
|
0 |
0 |
XPUSHs(sv_2mortal(newSVpv(name, 0))); |
|
843
|
0 |
0 |
FREETMPS; |