DBD-MariaDB
view release on metacpan or search on metacpan
default:
/* TEXT columns can be returned as MYSQL_TYPE_BLOB, so always check for charset */
if (mysql_charsetnr_is_utf8(fields[i].charsetnr))
sv_utf8_decode(sv);
break;
}
}
else
(void) SvOK_off(sv); /* Field is NULL, return undef */
}
if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\t<- mariadb_st_fetch, %u cols\n", num_fields);
return av;
}
}
/***************************************************************************
*
* Name: mariadb_st_finish
*
* Purpose: Called for freeing a mysql result
*
* Input: sth - statement handle being finished
* imp_sth - drivers private statement handle data
*
* Returns: 1 for success, 0 otherwise; mariadb_dr_do_error() will
* be called in the latter case
*
**************************************************************************/
int mariadb_st_finish(SV* sth, imp_sth_t* imp_sth) {
dTHX;
D_imp_xxh(sth);
D_imp_dbh_from_sth;
if (imp_dbh->async_query_in_flight)
{
if (mariadb_db_async_result(sth, &imp_sth->result) == (my_ulonglong)-1)
return 0;
}
if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
{
PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\n--> mariadb_st_finish\n");
}
if (imp_sth->use_server_side_prepare && imp_sth->stmt)
mysql_stmt_free_result(imp_sth->stmt);
/*
Clean-up previous result set(s) for sth to prevent
'Commands out of sync' error
*/
if (!mariadb_st_free_result_sets(sth, imp_sth, FALSE))
return 0;
/*
Cancel further fetches from this cursor.
We don't close the cursor till DESTROY.
The application may re execute it.
*/
DBIc_ACTIVE_off(imp_sth);
if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
{
PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\n<-- mariadb_st_finish\n");
}
return 1;
}
/**************************************************************************
*
* Name: mariadb_st_destroy
*
* Purpose: Our part of the statement handles destructor
*
* Input: sth - statement handle being destroyed
* imp_sth - drivers private statement handle data
*
* Returns: Nothing
*
**************************************************************************/
void mariadb_st_destroy(SV *sth, imp_sth_t *imp_sth) {
dTHX;
D_imp_xxh(sth);
int i;
imp_sth_fbh_t *fbh;
int num_params;
int num_fields;
if (!PL_dirty)
{
/* During global destruction, DBI objects are destroyed in random order
* and therefore imp_dbh may be already freed. So do not access it. */
mariadb_st_finish(sth, imp_sth);
mariadb_st_free_result_sets(sth, imp_sth, TRUE);
}
DBIc_ACTIVE_off(imp_sth);
if (imp_sth->statement)
Safefree(imp_sth->statement);
num_params = DBIc_NUM_PARAMS(imp_sth);
if (num_params > 0)
{
if (DBIc_TRACE_LEVEL(imp_xxh) >= 2)
PerlIO_printf(DBIc_LOGPIO(imp_xxh), "\tFreeing %d parameters, bind %p fbind %p\n",
num_params, imp_sth->bind, imp_sth->fbind);
free_bind(imp_sth->bind);
free_fbind(imp_sth->fbind);
}
fbh= imp_sth->fbh;
( run in 0.951 second using v1.01-cache-2.11-cpan-39bf76dae61 )