Branch Coverage

SQLeet.xsi
Criterion Covered Total %
branch 213 502 42.4


line true false branch
40 0 109 DBISTATE_INIT;
71 0 103 ST(0) = dbd_discon_all(drh, imp_drh) ? &PL_sv_yes : &PL_sv_no;
117 51 213 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
51 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
0 51 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
213 0 char *u = (SvOK(username)) ? SvPV(username,lna) : (char*)"";
118 51 213 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
51 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
0 51 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
213 0 char *p = (SvOK(password)) ? SvPV(password,lna) : (char*)"";
123 264 0 ST(0) = dbd_db_login6(dbh, imp_dbh, SvPV_nolen(dbname), u, p, attribs) ? &PL_sv_yes : &PL_sv_no;
258 6 ST(0) = dbd_db_login6(dbh, imp_dbh, SvPV_nolen(dbname), u, p, attribs) ? &PL_sv_yes : &PL_sv_no;
141 110 253 if (items > 2) {
143 80 30 if (SvROK(attr) &&
76 4 if (SvROK(attr) &&
0 76 if (SvROK(attr) &&
0 76 if (SvROK(attr) &&
0 76 if (SvROK(attr) &&
0 76 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
0 0 if (SvROK(attr) &&
144 80 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
80 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
80 0 (DBD_ATTRIB_TRUE(attr,"Slice",5,tmp_svp) || DBD_ATTRIB_TRUE(attr,"Columns",7,tmp_svp))
76 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 76 (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))
154 0 287 if (SvROK(ST(1))) {
158 0 0 if ( (mg = mg_find(SvRV(sth),'P')) )
164 0 287 if (!SvROK(sth))
171 34 253 if (items > 3) { /* need to bind params before execute */
172 0 34 if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) {
178 0 287 if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */
182 287 0 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
4 283 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
4 0 maxrows_svp = DBD_ATTRIB_GET_SVP(attr, "MaxRows", 7);
183 0 287 tmp_sv = dbdxst_fetchall_arrayref(sth, &PL_sv_undef, (maxrows_svp) ? *maxrows_svp : &PL_sv_undef);
198 4 226 if (SvROK(ST(1))) {
202 4 0 if ( (mg = mg_find(SvRV(sth),'P')) )
209 2 224 if (!SvROK(sth)) {
210 0 2 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
217 35 193 if (items > 3) { /* need to bind params before execute */
218 0 35 if (!dbdxst_bind_params(sth, imp_sth, items-2, ax+2) ) {
219 0 0 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
224 6 222 if ( dbd_st_execute(sth, imp_sth) <= -2 ) { /* -2 == error */
225 0 6 if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; }
229 4 218 if (!row_av) {
230 4 0 if (GIMME == G_SCALAR)
0 4 if (GIMME == G_SCALAR)
233 39 179 else if (is_selectrow_array) {
235 0 39 int num_fields = AvFILL(row_av)+1;
236 39 0 if (GIMME == G_SCALAR)
5 34 if (GIMME == G_SCALAR)
238 39 0 EXTEND(sp, num_fields);
0 39 EXTEND(sp, num_fields);
239 40 39 for(i=0; i < num_fields; ++i) {
302 2 74 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
2 0 if (DBIc_has(imp_dbh,DBIcf_AutoCommit) && DBIc_WARN(imp_dbh))
304 70 6 ST(0) = dbd_db_commit(dbh, imp_dbh) ? &PL_sv_yes : &PL_sv_no;
312 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))
314 21 2 ST(0) = dbd_db_rollback(dbh, imp_dbh) ? &PL_sv_yes : &PL_sv_no;
322 2 91 if ( !DBIc_ACTIVE(imp_dbh) ) {
327 1 90 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) {
329 1 0 char *plural = (DBIc_ACTIVE_KIDS(imp_dbh)==1) ? (char*)"" : (char*)"s";
330 0 1 warn("%s->disconnect invalidates %d active statement handle%s %s",
334 91 0 ST(0) = dbd_db_disconnect(dbh, imp_dbh) ? &PL_sv_yes : &PL_sv_no;
335 0 91 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 1384 if (SvGMAGICAL(valuesv))
348 1005 379 if (!dbd_db_STORE_attrib(dbh, imp_dbh, keysv, valuesv))
349 17 988 if (!DBIc_DBISTATE(imp_dbh)->set_attr(dbh, keysv, valuesv))
360 287 2923 if (!valuesv)
372 6 258 if (!DBIc_IMPSET(imp_dbh)) { /* was never fully set up */
374 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)
375 0 0 PerlIO_printf(DBIc_LOGPIO(imp_dbh),
380 2 256 if (DBIc_IADESTROY(imp_dbh)) { /* wants ineffective destroy */
381 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);
382 0 2 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 165 93 if (DBIc_ACTIVE(imp_dbh)) {
386 5 160 if (!DBIc_has(imp_dbh,DBIcf_AutoCommit)) {
397 4 1 if (DBIc_WARN(imp_dbh) /* only warn if likely to be useful... */
398 0 4 && 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 165 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 878 407 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
702 176 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
702 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 702 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
176 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 176 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
0 0 DBD_ATTRIBS_CHECK("_prepare", sth, attribs);
479 1275 10 ST(0) = dbd_st_prepare_sv(sth, imp_sth, statement, attribs) ? &PL_sv_yes : &PL_sv_no;
510 0 401 if (SvGMAGICAL(ref))
512 252 149 if (attribs) {
513 1 251 if (SvNIOK(attribs)) {
514 1 0 sql_type = SvIV(attribs);
519 251 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
250 1 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
250 0 DBD_ATTRIBS_CHECK("bind_col", sth, attribs);
0 250 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);
521 1 250 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 250 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
1 0 DBD_ATTRIB_GET_IV(attribs, "TYPE",4, svp, sql_type);
529 401 0 ? &PL_sv_yes : &PL_sv_no;
548 0 271 if (SvGMAGICAL(value))
550 229 42 if (attribs) {
551 162 67 if (SvNIOK(attribs)) {
552 162 0 sql_type = SvIV(attribs);
557 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);
559 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);
563 270 1 ? &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 465 647 if (items > 1) { /* need to bind params */
609 0 465 if (!dbdxst_bind_params(sth, imp_sth, items, ax) ) {
617 607 505 if (retval == 0) /* ok with no rows affected */
619 11 494 else if (retval < -1) /* -1 == unknown number of rows */
652 1167 406 ST(0) = (av) ? sv_2mortal(newRV((SV *)av)) : &PL_sv_undef;
664 34 10 if (av) {
666 0 34 int num_fields = AvFILL(av)+1;
667 34 0 EXTEND(sp, num_fields);
0 34 EXTEND(sp, num_fields);
668 50 34 for(i=0; i < num_fields; ++i) {
681 18 76 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 */
699 44 20 if (!DBIc_ACTIVE(imp_sth)) {
703 0 20 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);
710 20 0 ST(0) = dbd_st_finish3(sth, imp_sth, 0) ? &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 5 if (SvGMAGICAL(valuesv))
745 5 0 if (!dbd_st_STORE_attrib(sth, imp_sth, keysv, valuesv))
746 0 5 if (!DBIc_DBISTATE(imp_sth)->set_attr(sth, keysv, valuesv))
762 199 741 if (!valuesv)
774 10 1275 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 1275 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 107 1168 if (DBIc_ACTIVE(imp_sth)) {
789 107 0 if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) {
106 1 if (!PL_dirty && DBIc_ACTIVE(imp_dbh)) {
797 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);