DBD-SQLite2
view release on metacpan or search on metacpan
/* warn("finish statement\n"); */
if (DBIc_ACTIVE(imp_sth)) {
char *errmsg;
DBIc_ACTIVE_off(imp_sth);
if ((imp_sth->retval = sqlite_finalize(imp_sth->vm, &errmsg) == SQLITE_ERROR)) {
warn("finalize failed! %s\n", errmsg);
sqlite2_error(sth, (imp_xxh_t*)imp_sth, imp_sth->retval, errmsg);
sqlite_freemem(errmsg);
return FALSE;
}
}
return TRUE;
}
void
sqlite2_st_destroy (SV *sth, imp_sth_t *imp_sth)
{
/* warn("destroy statement\n"); */
if (DBIc_ACTIVE(imp_sth)) {
sqlite2_st_finish(sth, imp_sth);
}
SvREFCNT_dec((SV*)imp_sth->sql);
SvREFCNT_dec((SV*)imp_sth->params);
DBIc_IMPSET_off(imp_sth);
}
int
sqlite2_st_blob_read (SV *sth, imp_sth_t *imp_sth,
int field, long offset, long len, SV *destrv, long destoffset)
{
return 0;
}
int
sqlite2_db_STORE_attrib (SV *dbh, imp_dbh_t *imp_dbh, SV *keysv, SV *valuesv)
{
dTHR;
char *key = SvPV_nolen(keysv);
char *errmsg;
int retval;
if (strEQ(key, "AutoCommit")) {
if (SvTRUE(valuesv)) {
/* commit tran? */
if ( (!DBIc_is(imp_dbh, DBIcf_AutoCommit)) && (imp_dbh->in_tran) ) {
if ((retval = sqlite_exec(imp_dbh->db, "COMMIT TRANSACTION",
NULL, NULL, &errmsg)
!= SQLITE_OK))
{
sqlite2_error(dbh, (imp_xxh_t*)imp_dbh, retval, errmsg);
sqlite_freemem(errmsg);
return TRUE;
}
imp_dbh->in_tran = FALSE;
}
}
DBIc_set(imp_dbh, DBIcf_AutoCommit, SvTRUE(valuesv));
return TRUE;
}
else if (strEQ(key, "sqlite_no_utf8_flag") || strEQ(key, "NoUTF8Flag")) {
warn("NoUTF8Flag is deprecated due to perl unicode weirdness\n");
if (SvTRUE(valuesv)) {
imp_dbh->no_utf8_flag = TRUE;
}
else {
imp_dbh->no_utf8_flag = FALSE;
}
return TRUE;
}
else if (strEQ(key, "sqlite_handle_binary_nulls")) {
if (SvTRUE(valuesv)) {
imp_dbh->handle_binary_nulls = TRUE;
}
else {
imp_dbh->handle_binary_nulls = FALSE;
}
return TRUE;
}
return FALSE;
}
SV *
sqlite2_db_FETCH_attrib (SV *dbh, imp_dbh_t *imp_dbh, SV *keysv)
{
dTHR;
char *key = SvPV_nolen(keysv);
if (strEQ(key, "sqlite_no_utf8_flag") || strEQ(key, "NoUTF8Flag")) {
return newSViv(imp_dbh->no_utf8_flag ? 1 : 0);
}
if (strEQ(key, "sqlite_version")) {
return newSVpv(sqlite_version, strlen(sqlite_version));
}
if (strEQ(key, "sqlite_encoding")) {
return newSVpv(sqlite_encoding, strlen(sqlite_encoding));
}
return NULL;
}
int
sqlite2_st_STORE_attrib (SV *sth, imp_sth_t *imp_sth, SV *keysv, SV *valuesv)
{
char *key = SvPV_nolen(keysv);
return FALSE;
}
SV *
sqlite2_st_FETCH_attrib (SV *sth, imp_sth_t *imp_sth, SV *keysv)
{
char *key = SvPV_nolen(keysv);
SV *retsv = NULL;
int i;
if (!imp_sth->coldata) {
return retsv;
}
i = DBIc_NUM_FIELDS(imp_sth);
if (strEQ(key, "NAME")) {
AV *av = newAV();
( run in 1.105 second using v1.01-cache-2.11-cpan-13bb782fe5a )