Branch Coverage

SQLite.xsi
Criterion Covered Total %
branch 199 482 41.2


line true false branch
40 0 116 DBISTATE_INIT;
119 54 259 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
54 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
0 54 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
259 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
120 54 259 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
54 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
0 54 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
259 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
125 313 0 RETVAL = dbd_db_login6(dbh, imp_dbh, SvPV_nolen(dbname), u, p, attribs);
145 116 257 if (items > 2) {
147 85 31 if (SvROK(attr) &&
81 4 if (SvROK(attr) &&
0 81 if (SvROK(attr) &&
0 81 if (SvROK(attr) &&
0 81 if (SvROK(attr) &&
0 81 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
148 85 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
85 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
85 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
81 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 81 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
4 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
4 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
4 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 4 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
0 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
158 0 292 if (SvROK(ST(1))) {
162 0 0 if ( (mg = mg_find(SvRV(sth),'P')) )
168 0 292 if (!SvROK(sth))
175 35 257 if (items > 3) { /* need to bind params before execute */
176 0 35 if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) {
182 0 292 if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */
186 292 0 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
4 288 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
4 0 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
187 0 292 tmp_sv = dbdxst_fetchall_arrayref(sth, &PL_sv_undef, (maxrows_svp) ? *maxrows_svp : &PL_sv_undef);
202 4 266 if (SvROK(ST(1))) {
206 4 0 if ( (mg = mg_find(SvRV(sth),'P')) )
213 8 258 if (!SvROK(sth)) {
214 0 8 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
221 35 227 if (items > 3) { /* need to bind params before execute */
222 0 35 if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) {
223 0 0 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
228 6 256 if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */
229 0 6 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
233 4 252 if (!row_av) {
234 4 0 if (GIMME == G_SCALAR)
0 4 if (GIMME == G_SCALAR)
237 43 209 else if (is_selectrow_array) {
239 0 43 int num_fields = AvFILL(row_av)+1;
240 43 0 if (GIMME == G_SCALAR)
5 38 if (GIMME == G_SCALAR)
242 43 0 EXTEND(sp, num_fields);
0 43 EXTEND(sp, num_fields);
243 44 43 for(i=0; i < num_fields; ++i) {
316 2 80 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
2 0 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
328 2 21 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
2 0 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
340 2 97 if ( !DBIc_ACTIVE(imp_dbh) ) {
345 1 96 if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) {
1 0 if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) {
1 0 if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) {
347 1 0 char *plural = (DBIc_ACTIVE_KIDS(imp_dbh)==1) ? (char*)"" : (char*)"s";
348 0 1 warn("%s->disconnect invalidates %d active statement handle%s %s",
353 0 97 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
365 0 1633 if (SvGMAGICAL(valuesv))
368 1198 435 if (!dbd_db_STORE_attrib(dbh, imp_dbh, keysv, valuesv))
369 19 1179 if (!DBIc_DBISTATE(imp_dbh)->set_attr(dbh, keysv, valuesv))
380 304 2998 if (!valuesv)
392 6 307 if (!DBIc_IMPSET(imp_dbh)) { /* was never fully set up */
394 6 0 if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2)
6 0 if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2)
0 6 if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2)
395 0 0 PerlIO_printf(DBIc_LOGPIO(imp_dbh),
400 2 305 if (DBIc_IADESTROY(imp_dbh)) { /* wants ineffective destroy */
401 0 2 DBIc_ACTIVE_off(imp_dbh);
0 0 DBIc_ACTIVE_off(imp_dbh);
0 0 DBIc_ACTIVE_off(imp_dbh);
0 0 DBIc_ACTIVE_off(imp_dbh);
0 0 DBIc_ACTIVE_off(imp_dbh);
402 0 2 if (DBIc_DBISTATE(imp_dbh)->debug)
403 0 0 PerlIO_printf(DBIc_LOGPIO(imp_dbh), " DESTROY %s skipped due to InactiveDestroy\n", SvPV_nolen(dbh));
405 208 99 if (DBIc_ACTIVE(imp_dbh)) {
406 5 203 if (!DBIc_has(imp_dbh,DBIcf_AutoCommit)) {
417 4 1 if (DBIc_WARN(imp_dbh) /* only warn if likely to be useful... */
418 0 4 && DBIc_is(imp_dbh, DBIcf_Executed) /* has not just called commit/rollback */
420 0 0 && (!PL_dirty || DBIc_DBISTATE(imp_dbh)->debug >= 3)
0 0 && (!PL_dirty || DBIc_DBISTATE(imp_dbh)->debug >= 3)
422 0 0 warn("Issuing rollback() due to DESTROY without explicit disconnect() of %s handle %s",
0 0 warn("Issuing rollback() due to DESTROY without explicit disconnect() of %s handle %s",
430 0 208 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
0 0 DBIc_ACTIVE_off(imp_dbh); /* ensure it's off, regardless */
497 958 422 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
773 185 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
773 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 773 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
185 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 185 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
532 0 450 if (SvGMAGICAL(ref))
534 285 165 if (attribs) {
535 1 284 if (SvNIOK(attribs)) {
536 1 0 sql_type = SvIV(attribs);
541 284 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
283 1 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
283 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
0 283 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
1 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
0 1 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
543 1 283 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
1 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
1 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
1 283 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
1 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
571 0 271 if (SvGMAGICAL(value))
573 229 42 if (attribs) {
574 162 67 if (SvNIOK(attribs)) {
575 162 0 sql_type = SvIV(attribs);
580 67 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
64 3 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
64 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 64 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
3 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 3 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
582 3 64 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
3 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
3 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
3 64 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
3 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
603 0 0 if (!SvROK(value_ref) || SvTYPE(SvRV(value_ref)) > SVt_PVMG)
0 0 if (!SvROK(value_ref) || SvTYPE(SvRV(value_ref)) > SVt_PVMG)
606 0 0 if (SvREADONLY(value))
608 0 0 if (SvGMAGICAL(value))
610 0 0 if (attribs) {
611 0 0 if (SvNIOK(attribs)) {
612 0 0 sql_type = SvIV(attribs);
617 0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("bind_param", sth, attribs);
618 0 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
0 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
0 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
0 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
0 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
633 529 657 if (items > 1) { /* need to bind params */
634 0 529 if (!dbdxst_bind_params(sth, imp_sth, items, ax) ) {
642 641 545 if (retval == 0) /* ok with no rows affected */
644 11 534 else if (retval < -1) /* -1 == unknown number of rows */
697 1208 430 ST(0) = (av) ? sv_2mortal(newRV((SV *)av)) : &PL_sv_undef;
709 34 10 if (av) {
711 0 34 int num_fields = AvFILL(av)+1;
712 34 0 EXTEND(sp, num_fields);
0 34 EXTEND(sp, num_fields);
713 50 34 for(i=0; i < num_fields; ++i) {
726 18 81 if (SvOK(slice)) { /* fallback to perl implementation */
18 0 if (SvOK(slice)) { /* fallback to perl implementation */
0 18 if (SvOK(slice)) { /* fallback to perl implementation */
744 50 22 if (!DBIc_ACTIVE(imp_sth)) {
748 0 22 if (!DBIc_ACTIVE(imp_dbh)) {
751 0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
774 0 0 if (!destrv)
776 0 0 if (dbd_st_blob_read(sth, imp_sth, field, offset, len, destrv, destoffset))
789 0 5 if (SvGMAGICAL(valuesv))
792 5 0 if (!dbd_st_STORE_attrib(sth, imp_sth, keysv, valuesv))
793 0 5 if (!DBIc_DBISTATE(imp_sth)->set_attr(sth, keysv, valuesv))
809 200 762 if (!valuesv)
821 21 1359 if (!DBIc_IMPSET(imp_sth)) { /* was never fully set up */
823 21 0 if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2)
21 0 if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2)
0 21 if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2)
824 0 0 PerlIO_printf(DBIc_LOGPIO(imp_sth),
829 0 1359 if (DBIc_IADESTROY(imp_sth)) { /* wants ineffective destroy */
830 0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
0 0 DBIc_ACTIVE_off(imp_sth);
831 0 0 if (DBIc_DBISTATE(imp_sth)->debug)
832 0 0 PerlIO_printf(DBIc_LOGPIO(imp_sth), " DESTROY %s skipped due to InactiveDestroy\n", SvPV_nolen(sth));
834 115 1244 if (DBIc_ACTIVE(imp_sth)) {
836 115 0 if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) {
114 1 if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) {
844 1 0 DBIc_ACTIVE_off(imp_sth);
1 0 DBIc_ACTIVE_off(imp_sth);
1 0 DBIc_ACTIVE_off(imp_sth);
1 0 DBIc_ACTIVE_off(imp_sth);
0 1 DBIc_ACTIVE_off(imp_sth);