Branch Coverage

SQLite2.xsi
Criterion Covered Total %
branch 96 468 20.5


line true false branch
40 0 22 DBISTATE_INIT;
71 0 21 ST(0) = dbd_discon_all(drh, imp_drh) ? &PL_sv_yes : &PL_sv_no;
117 0 25 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
0 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
0 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
25 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
118 0 25 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
0 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
0 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
25 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
126 25 0 ST(0) = dbd_db_login( dbh, imp_dbh, SvPV_nolen(dbname), u, p) ? &PL_sv_yes : &PL_sv_no;
25 0 ST(0) = dbd_db_login( dbh, imp_dbh, SvPV_nolen(dbname), u, p) ? &PL_sv_yes : &PL_sv_no;
141 0 2 if (items > 2) {
143 0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
144 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))
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))
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))
154 0 2 if (SvROK(ST(1))) {
158 0 0 if ( (mg = mg_find(SvRV(sth),'P')) )
164 0 2 if (!SvROK(sth))
171 0 2 if (items > 3) { /* need to bind params before execute */
172 0 0 if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) {
178 0 2 if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */
182 2 0 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
0 2 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
0 0 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
183 0 2 tmp_sv = dbdxst_fetchall_arrayref(sth, &PL_sv_undef, (maxrows_svp) ? *maxrows_svp : &PL_sv_undef);
198 0 30 if (SvROK(ST(1))) {
202 0 0 if ( (mg = mg_find(SvRV(sth),'P')) )
209 0 30 if (!SvROK(sth)) {
210 0 0 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
217 0 30 if (items > 3) { /* need to bind params before execute */
218 0 0 if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) {
219 0 0 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
224 1 29 if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */
225 0 1 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
229 0 29 if (!row_av) {
230 0 0 if (GIMME == G_SCALAR)
0 0 if (GIMME == G_SCALAR)
233 0 29 else if (is_selectrow_array) {
235 0 0 int num_fields = AvFILL(row_av)+1;
236 0 0 if (GIMME == G_SCALAR)
0 0 if (GIMME == G_SCALAR)
238 0 0 EXTEND(sp, num_fields);
0 0 EXTEND(sp, num_fields);
239 0 0 for(i=0; i < num_fields; ++i) {
302 1 2 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
1 0 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
304 3 0 ST(0) = dbd_db_commit(dbh, imp_dbh) ? &PL_sv_yes : &PL_sv_no;
312 1 2 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
1 0 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
314 3 0 ST(0) = dbd_db_rollback(dbh, imp_dbh) ? &PL_sv_yes : &PL_sv_no;
322 0 15 if ( !DBIc_ACTIVE(imp_dbh) ) {
327 0 15 if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) {
0 0 if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) {
0 0 if (DBIc_ACTIVE_KIDS(imp_dbh) && DBIc_WARN(imp_dbh) && !PL_dirty) {
329 0 0 char *plural = (DBIc_ACTIVE_KIDS(imp_dbh)==1) ? (char*)"" : (char*)"s";
330 0 0 warn("%s->disconnect invalidates %d active statement handle%s %s",
334 15 0 ST(0) = dbd_db_disconnect(dbh, imp_dbh) ? &PL_sv_yes : &PL_sv_no;
335 0 15 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 */
345 0 108 if (SvGMAGICAL(valuesv))
348 80 28 if (!dbd_db_STORE_attrib(dbh, imp_dbh, keysv, valuesv))
349 0 80 if (!DBIc_DBISTATE(imp_dbh)->set_attr(dbh, keysv, valuesv))
360 4 4 if (!valuesv)
372 0 25 if (!DBIc_IMPSET(imp_dbh)) { /* was never fully set up */
374 0 0 if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2)
0 0 if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2)
0 0 if (DBIc_WARN(imp_dbh) && !PL_dirty && DBIc_DBISTATE(imp_dbh)->debug >= 2)
375 0 0 PerlIO_printf(DBIc_LOGPIO(imp_dbh),
380 0 25 if (DBIc_IADESTROY(imp_dbh)) { /* wants ineffective destroy */
381 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);
0 0 DBIc_ACTIVE_off(imp_dbh);
382 0 0 if (DBIc_DBISTATE(imp_dbh)->debug)
383 0 0 PerlIO_printf(DBIc_LOGPIO(imp_dbh), " DESTROY %s skipped due to InactiveDestroy\n", SvPV_nolen(dbh));
385 10 15 if (DBIc_ACTIVE(imp_dbh)) {
386 0 10 if (!DBIc_has(imp_dbh,DBIcf_AutoCommit)) {
397 0 0 if (DBIc_WARN(imp_dbh) /* only warn if likely to be useful... */
398 0 0 && DBIc_is(imp_dbh, DBIcf_Executed) /* has not just called commit/rollback */
400 0 0 && (!PL_dirty || DBIc_DBISTATE(imp_dbh)->debug >= 3)
0 0 && (!PL_dirty || DBIc_DBISTATE(imp_dbh)->debug >= 3)
402 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",
410 0 10 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 */
477 113 36 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
113 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
113 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 113 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
481 149 0 ST(0) = dbd_st_prepare(sth, imp_sth, SvPV_nolen(statement), attribs) ? &PL_sv_yes : &PL_sv_no;
149 0 ST(0) = dbd_st_prepare(sth, imp_sth, SvPV_nolen(statement), attribs) ? &PL_sv_yes : &PL_sv_no;
548 0 4 if (SvGMAGICAL(value))
550 2 2 if (attribs) {
551 2 0 if (SvNIOK(attribs)) {
552 2 0 sql_type = SvIV(attribs);
557 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);
559 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);
563 4 0 ? &PL_sv_yes : &PL_sv_no;
579 0 0 if (!SvROK(value_ref) || SvTYPE(SvRV(value_ref)) > SVt_PVMG)
0 0 if (!SvROK(value_ref) || SvTYPE(SvRV(value_ref)) > SVt_PVMG)
582 0 0 if (SvREADONLY(value))
584 0 0 if (SvGMAGICAL(value))
586 0 0 if (attribs) {
587 0 0 if (SvNIOK(attribs)) {
588 0 0 sql_type = SvIV(attribs);
593 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);
594 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);
598 0 0 ? &PL_sv_yes : &PL_sv_no;
608 8 120 if (items > 1) { /* need to bind params */
609 0 8 if (!dbdxst_bind_params(sth, imp_sth, items, ax) ) {
617 73 55 if (retval == 0) /* ok with no rows affected */
619 8 47 else if (retval < -1) /* -1 == unknown number of rows */
652 37 18 ST(0) = (av) ? sv_2mortal(newRV((SV *)av)) : &PL_sv_undef;
664 1 1 if (av) {
666 0 1 int num_fields = AvFILL(av)+1;
667 1 0 EXTEND(sp, num_fields);
0 1 EXTEND(sp, num_fields);
668 2 1 for(i=0; i < num_fields; ++i) {
681 0 0 if (SvOK(slice)) { /* fallback to perl implementation */
0 0 if (SvOK(slice)) { /* fallback to perl implementation */
0 0 if (SvOK(slice)) { /* fallback to perl implementation */
699 6 15 if (!DBIc_ACTIVE(imp_sth)) {
703 0 15 if (!DBIc_ACTIVE(imp_dbh)) {
706 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);
712 15 0 ST(0) = dbd_st_finish(sth, imp_sth) ? &PL_sv_yes : &PL_sv_no;
727 0 0 if (!destrv)
729 0 0 if (dbd_st_blob_read(sth, imp_sth, field, offset, len, destrv, destoffset))
742 0 8 if (SvGMAGICAL(valuesv))
745 8 0 if (!dbd_st_STORE_attrib(sth, imp_sth, keysv, valuesv))
746 0 8 if (!DBIc_DBISTATE(imp_sth)->set_attr(sth, keysv, valuesv))
762 1 21 if (!valuesv)
774 10 139 if (!DBIc_IMPSET(imp_sth)) { /* was never fully set up */
776 10 0 if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2)
10 0 if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2)
0 10 if (DBIc_WARN(imp_sth) && !PL_dirty && DBIc_DBISTATE(imp_sth)->debug >= 2)
777 0 0 PerlIO_printf(DBIc_LOGPIO(imp_sth),
782 0 139 if (DBIc_IADESTROY(imp_sth)) { /* wants ineffective destroy */
783 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);
784 0 0 if (DBIc_DBISTATE(imp_sth)->debug)
785 0 0 PerlIO_printf(DBIc_LOGPIO(imp_sth), " DESTROY %s skipped due to InactiveDestroy\n", SvPV_nolen(sth));
787 3 136 if (DBIc_ACTIVE(imp_sth)) {
789 3 0 if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) {
3 0 if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) {
797 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);