mirror of
https://github.com/DBD-SQLite/DBD-SQLite
synced 2025-06-08 14:48:32 -04:00
DBD-SQLite: switched from dTHX to pTHX_/aTHX_ where I could. I think #44884 is almost done except for the ones related to other tickets like #44871 (so we shouldn't close #44884 yet)
This commit is contained in:
parent
30599f51bc
commit
3d9bf5c1e2
3 changed files with 247 additions and 256 deletions
217
SQLite.xs
217
SQLite.xs
|
@ -1,108 +1,109 @@
|
||||||
|
#define PERL_NO_GET_CONTEXT
|
||||||
#include "SQLiteXS.h"
|
|
||||||
|
#include "SQLiteXS.h"
|
||||||
DBISTATE_DECLARE;
|
|
||||||
|
DBISTATE_DECLARE;
|
||||||
MODULE = DBD::SQLite PACKAGE = DBD::SQLite::db
|
|
||||||
|
MODULE = DBD::SQLite PACKAGE = DBD::SQLite::db
|
||||||
PROTOTYPES: DISABLE
|
|
||||||
|
PROTOTYPES: DISABLE
|
||||||
BOOT:
|
|
||||||
sv_setpv(get_sv("DBD::SQLite::sqlite_version", TRUE|GV_ADDMULTI), SQLITE_VERSION);
|
BOOT:
|
||||||
|
sv_setpv(get_sv("DBD::SQLite::sqlite_version", TRUE|GV_ADDMULTI), SQLITE_VERSION);
|
||||||
AV *
|
|
||||||
list_tables(dbh)
|
AV *
|
||||||
SV *dbh
|
list_tables(dbh)
|
||||||
CODE:
|
SV *dbh
|
||||||
{
|
CODE:
|
||||||
RETVAL = newAV();
|
{
|
||||||
}
|
RETVAL = newAV();
|
||||||
OUTPUT:
|
}
|
||||||
RETVAL
|
OUTPUT:
|
||||||
|
RETVAL
|
||||||
IV
|
|
||||||
last_insert_rowid(dbh)
|
IV
|
||||||
SV *dbh
|
last_insert_rowid(dbh)
|
||||||
CODE:
|
SV *dbh
|
||||||
{
|
CODE:
|
||||||
D_imp_dbh(dbh);
|
{
|
||||||
RETVAL = sqlite3_last_insert_rowid(imp_dbh->db);
|
D_imp_dbh(dbh);
|
||||||
}
|
RETVAL = sqlite3_last_insert_rowid(imp_dbh->db);
|
||||||
OUTPUT:
|
}
|
||||||
RETVAL
|
OUTPUT:
|
||||||
|
RETVAL
|
||||||
void
|
|
||||||
create_function(dbh, name, argc, func)
|
void
|
||||||
SV *dbh
|
create_function(dbh, name, argc, func)
|
||||||
char *name
|
SV *dbh
|
||||||
int argc
|
char *name
|
||||||
SV *func
|
int argc
|
||||||
CODE:
|
SV *func
|
||||||
{
|
CODE:
|
||||||
sqlite3_db_create_function( dbh, name, argc, func );
|
{
|
||||||
}
|
sqlite3_db_create_function(aTHX_ dbh, name, argc, func );
|
||||||
|
}
|
||||||
void
|
|
||||||
enable_load_extension(dbh, onoff)
|
void
|
||||||
SV *dbh
|
enable_load_extension(dbh, onoff)
|
||||||
int onoff
|
SV *dbh
|
||||||
CODE:
|
int onoff
|
||||||
{
|
CODE:
|
||||||
sqlite3_db_enable_load_extension( dbh, onoff );
|
{
|
||||||
}
|
sqlite3_db_enable_load_extension(aTHX_ dbh, onoff );
|
||||||
|
}
|
||||||
void
|
|
||||||
create_aggregate(dbh, name, argc, aggr)
|
void
|
||||||
SV *dbh
|
create_aggregate(dbh, name, argc, aggr)
|
||||||
char *name
|
SV *dbh
|
||||||
int argc
|
char *name
|
||||||
SV *aggr
|
int argc
|
||||||
CODE:
|
SV *aggr
|
||||||
{
|
CODE:
|
||||||
sqlite3_db_create_aggregate( dbh, name, argc, aggr );
|
{
|
||||||
}
|
sqlite3_db_create_aggregate(aTHX_ dbh, name, argc, aggr );
|
||||||
|
}
|
||||||
void
|
|
||||||
create_collation(dbh, name, func)
|
void
|
||||||
SV *dbh
|
create_collation(dbh, name, func)
|
||||||
char *name
|
SV *dbh
|
||||||
SV *func
|
char *name
|
||||||
CODE:
|
SV *func
|
||||||
{
|
CODE:
|
||||||
sqlite3_db_create_collation( dbh, name, func );
|
{
|
||||||
}
|
sqlite3_db_create_collation(aTHX_ dbh, name, func );
|
||||||
|
}
|
||||||
void
|
|
||||||
progress_handler(dbh, n_opcodes, handler)
|
void
|
||||||
SV *dbh
|
progress_handler(dbh, n_opcodes, handler)
|
||||||
int n_opcodes
|
SV *dbh
|
||||||
SV *handler
|
int n_opcodes
|
||||||
CODE:
|
SV *handler
|
||||||
{
|
CODE:
|
||||||
sqlite3_db_progress_handler( dbh, n_opcodes, handler );
|
{
|
||||||
}
|
sqlite3_db_progress_handler(aTHX_ dbh, n_opcodes, handler );
|
||||||
|
}
|
||||||
int
|
|
||||||
busy_timeout(dbh, timeout=0)
|
int
|
||||||
SV *dbh
|
busy_timeout(dbh, timeout=0)
|
||||||
int timeout
|
SV *dbh
|
||||||
CODE:
|
int timeout
|
||||||
RETVAL = dbd_set_sqlite3_busy_timeout( dbh, timeout );
|
CODE:
|
||||||
OUTPUT:
|
RETVAL = dbd_set_sqlite3_busy_timeout(aTHX_ dbh, timeout );
|
||||||
RETVAL
|
OUTPUT:
|
||||||
|
RETVAL
|
||||||
MODULE = DBD::SQLite PACKAGE = DBD::SQLite::st
|
|
||||||
|
MODULE = DBD::SQLite PACKAGE = DBD::SQLite::st
|
||||||
PROTOTYPES: DISABLE
|
|
||||||
|
PROTOTYPES: DISABLE
|
||||||
void
|
|
||||||
reset(sth)
|
void
|
||||||
SV *sth
|
reset(sth)
|
||||||
CODE:
|
SV *sth
|
||||||
{
|
CODE:
|
||||||
sqlite_st_reset(sth);
|
{
|
||||||
}
|
sqlite_st_reset(aTHX_ sth);
|
||||||
|
}
|
||||||
MODULE = DBD::SQLite PACKAGE = DBD::SQLite
|
|
||||||
|
MODULE = DBD::SQLite PACKAGE = DBD::SQLite
|
||||||
INCLUDE: SQLite.xsi
|
|
||||||
|
INCLUDE: SQLite.xsi
|
||||||
|
|
54
dbdimp.c
54
dbdimp.c
|
@ -18,7 +18,9 @@ DBISTATE_DECLARE;
|
||||||
#define call_sv(x,y) perl_call_sv(x,y)
|
#define call_sv(x,y) perl_call_sv(x,y)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define sqlite_error(h,xxh,rc,what) _sqlite_error(__FILE__, __LINE__, h, xxh, rc, what)
|
#define sqlite_error(h,xxh,rc,what) _sqlite_error(aTHX_ __FILE__, __LINE__, h, xxh, rc, what)
|
||||||
|
|
||||||
|
/* XXX: is there any good way to use pTHX_/aTHX_ here like above? */
|
||||||
#if defined(__GNUC__) && (__GNUC__ > 2)
|
#if defined(__GNUC__) && (__GNUC__ > 2)
|
||||||
# define sqlite_trace(h,xxh,level,fmt...) _sqlite_tracef(__FILE__, __LINE__, h, xxh, level, fmt)
|
# define sqlite_trace(h,xxh,level,fmt...) _sqlite_tracef(__FILE__, __LINE__, h, xxh, level, fmt)
|
||||||
#else
|
#else
|
||||||
|
@ -32,10 +34,8 @@ sqlite_init(dbistate_t *dbistate)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_sqlite_error(char *file, int line, SV *h, imp_xxh_t *imp_xxh, int rc, char *what)
|
_sqlite_error(pTHX_ char *file, int line, SV *h, imp_xxh_t *imp_xxh, int rc, char *what)
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
|
|
||||||
DBIh_SET_ERR_CHAR(h, imp_xxh, Nullch, rc, what, Nullch, Nullch);
|
DBIh_SET_ERR_CHAR(h, imp_xxh, Nullch, rc, what, Nullch, Nullch);
|
||||||
|
|
||||||
/* #7753: DBD::SQLite error shouldn't include extraneous info */
|
/* #7753: DBD::SQLite error shouldn't include extraneous info */
|
||||||
|
@ -51,7 +51,7 @@ static void
|
||||||
_sqlite_tracef(char *file, int line, SV *h, imp_xxh_t *imp_xxh, int level, const char *fmt, ...)
|
_sqlite_tracef(char *file, int line, SV *h, imp_xxh_t *imp_xxh, int level, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
dTHX;
|
dTHX;
|
||||||
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
if ( DBIc_TRACE_LEVEL(imp_xxh) >= level ) {
|
if ( DBIc_TRACE_LEVEL(imp_xxh) >= level ) {
|
||||||
char format[8192];
|
char format[8192];
|
||||||
|
@ -66,7 +66,7 @@ static void
|
||||||
_sqlite_tracef_noline(SV *h, imp_xxh_t *imp_xxh, int level, const char *fmt, ...)
|
_sqlite_tracef_noline(SV *h, imp_xxh_t *imp_xxh, int level, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
dTHX;
|
dTHX;
|
||||||
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
if ( DBIc_TRACE_LEVEL(imp_xxh) >= level ) {
|
if ( DBIc_TRACE_LEVEL(imp_xxh) >= level ) {
|
||||||
char format[8192];
|
char format[8192];
|
||||||
|
@ -140,10 +140,8 @@ sqlite_db_login(SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *user, char *pas
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dbd_set_sqlite3_busy_timeout ( SV *dbh, int timeout )
|
dbd_set_sqlite3_busy_timeout (pTHX_ SV *dbh, int timeout )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
|
|
||||||
D_imp_dbh(dbh);
|
D_imp_dbh(dbh);
|
||||||
if (timeout) {
|
if (timeout) {
|
||||||
imp_dbh->timeout = timeout;
|
imp_dbh->timeout = timeout;
|
||||||
|
@ -330,9 +328,8 @@ sqlite_quote(imp_dbh_t *imp_dbh, SV *val)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sqlite_st_reset (SV *sth)
|
sqlite_st_reset (pTHX_ SV *sth)
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
D_imp_sth(sth);
|
D_imp_sth(sth);
|
||||||
if (DBIc_IMPSET(imp_sth))
|
if (DBIc_IMPSET(imp_sth))
|
||||||
sqlite3_reset(imp_sth->stmt);
|
sqlite3_reset(imp_sth->stmt);
|
||||||
|
@ -848,9 +845,8 @@ sqlite_st_FETCH_attrib (SV *sth, imp_sth_t *imp_sth, SV *keysv)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sqlite_db_set_result(sqlite3_context *context, SV *result, int is_error )
|
sqlite_db_set_result(pTHX_ sqlite3_context *context, SV *result, int is_error )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
STRLEN len;
|
STRLEN len;
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
|
@ -929,19 +925,19 @@ sqlite_db_func_dispatcher(int is_unicode, sqlite3_context *context, int argc, sq
|
||||||
|
|
||||||
/* Check for an error */
|
/* Check for an error */
|
||||||
if (SvTRUE(ERRSV) ) {
|
if (SvTRUE(ERRSV) ) {
|
||||||
sqlite_db_set_result( context, ERRSV, 1);
|
sqlite_db_set_result(aTHX_ context, ERRSV, 1);
|
||||||
POPs;
|
POPs;
|
||||||
} else if ( count != 1 ) {
|
} else if ( count != 1 ) {
|
||||||
SV *err = sv_2mortal(newSVpvf( "function should return 1 argument, got %d",
|
SV *err = sv_2mortal(newSVpvf( "function should return 1 argument, got %d",
|
||||||
count ));
|
count ));
|
||||||
|
|
||||||
sqlite_db_set_result( context, err, 1);
|
sqlite_db_set_result(aTHX_ context, err, 1);
|
||||||
/* Clear the stack */
|
/* Clear the stack */
|
||||||
for ( i=0; i < count; i++ ) {
|
for ( i=0; i < count; i++ ) {
|
||||||
POPs;
|
POPs;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sqlite_db_set_result( context, POPs, 0 );
|
sqlite_db_set_result(aTHX_ context, POPs, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
PUTBACK;
|
PUTBACK;
|
||||||
|
@ -964,9 +960,8 @@ sqlite_db_func_dispatcher_no_unicode(sqlite3_context *context, int argc, sqlite3
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sqlite3_db_create_function( SV *dbh, const char *name, int argc, SV *func )
|
sqlite3_db_create_function(pTHX_ SV *dbh, const char *name, int argc, SV *func )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
D_imp_dbh(dbh);
|
D_imp_dbh(dbh);
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
|
@ -989,9 +984,8 @@ sqlite3_db_create_function( SV *dbh, const char *name, int argc, SV *func )
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sqlite3_db_enable_load_extension( SV *dbh, int onoff )
|
sqlite3_db_enable_load_extension(pTHX_ SV *dbh, int onoff )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
D_imp_dbh(dbh);
|
D_imp_dbh(dbh);
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
|
@ -1012,9 +1006,8 @@ struct aggrInfo {
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sqlite_db_aggr_new_dispatcher( sqlite3_context *context, aggrInfo *aggr_info )
|
sqlite_db_aggr_new_dispatcher(pTHX_ sqlite3_context *context, aggrInfo *aggr_info )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
dSP;
|
dSP;
|
||||||
SV *pkg = NULL;
|
SV *pkg = NULL;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -1086,7 +1079,7 @@ sqlite_db_aggr_step_dispatcher (sqlite3_context *context,
|
||||||
|
|
||||||
/* initialize on first step */
|
/* initialize on first step */
|
||||||
if ( !aggr->inited ) {
|
if ( !aggr->inited ) {
|
||||||
sqlite_db_aggr_new_dispatcher( context, aggr );
|
sqlite_db_aggr_new_dispatcher(aTHX_ context, aggr );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( aggr->err || !aggr->aggr_inst )
|
if ( aggr->err || !aggr->aggr_inst )
|
||||||
|
@ -1153,7 +1146,7 @@ sqlite_db_aggr_finalize_dispatcher( sqlite3_context *context )
|
||||||
aggr = &myAggr;
|
aggr = &myAggr;
|
||||||
aggr->aggr_inst = NULL;
|
aggr->aggr_inst = NULL;
|
||||||
aggr->err = NULL;
|
aggr->err = NULL;
|
||||||
sqlite_db_aggr_new_dispatcher (context, aggr);
|
sqlite_db_aggr_new_dispatcher(aTHX_ context, aggr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! aggr->err && aggr->aggr_inst ) {
|
if ( ! aggr->err && aggr->aggr_inst ) {
|
||||||
|
@ -1177,7 +1170,7 @@ sqlite_db_aggr_finalize_dispatcher( sqlite3_context *context )
|
||||||
POPs;
|
POPs;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sqlite_db_set_result( context, POPs, 0 );
|
sqlite_db_set_result(aTHX_ context, POPs, 0 );
|
||||||
}
|
}
|
||||||
PUTBACK;
|
PUTBACK;
|
||||||
}
|
}
|
||||||
|
@ -1186,7 +1179,7 @@ sqlite_db_aggr_finalize_dispatcher( sqlite3_context *context )
|
||||||
warn( "DBD::SQLite: error in aggregator cannot be reported to SQLite: %s",
|
warn( "DBD::SQLite: error in aggregator cannot be reported to SQLite: %s",
|
||||||
SvPV_nolen( aggr->err ) );
|
SvPV_nolen( aggr->err ) );
|
||||||
|
|
||||||
/* sqlite_db_set_result( context, aggr->err, 1 ); */
|
/* sqlite_db_set_result(aTHX_ context, aggr->err, 1 ); */
|
||||||
SvREFCNT_dec( aggr->err );
|
SvREFCNT_dec( aggr->err );
|
||||||
aggr->err = NULL;
|
aggr->err = NULL;
|
||||||
}
|
}
|
||||||
|
@ -1201,9 +1194,8 @@ sqlite_db_aggr_finalize_dispatcher( sqlite3_context *context )
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sqlite3_db_create_aggregate( SV *dbh, const char *name, int argc, SV *aggr_pkg )
|
sqlite3_db_create_aggregate(pTHX_ SV *dbh, const char *name, int argc, SV *aggr_pkg )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
D_imp_dbh(dbh);
|
D_imp_dbh(dbh);
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
|
@ -1289,9 +1281,8 @@ int sqlite_db_collation_dispatcher_utf8(
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sqlite3_db_create_collation( SV *dbh, const char *name, SV *func )
|
sqlite3_db_create_collation(pTHX_ SV *dbh, const char *name, SV *func )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
D_imp_dbh(dbh);
|
D_imp_dbh(dbh);
|
||||||
int rv, rv2;
|
int rv, rv2;
|
||||||
void *aa = "aa";
|
void *aa = "aa";
|
||||||
|
@ -1351,9 +1342,8 @@ int sqlite_db_progress_handler_dispatcher( void *handler )
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sqlite3_db_progress_handler( SV *dbh, int n_opcodes, SV *handler )
|
sqlite3_db_progress_handler(pTHX_ SV *dbh, int n_opcodes, SV *handler )
|
||||||
{
|
{
|
||||||
dTHX;
|
|
||||||
D_imp_dbh(dbh);
|
D_imp_dbh(dbh);
|
||||||
|
|
||||||
if (handler == &PL_sv_undef) {
|
if (handler == &PL_sv_undef) {
|
||||||
|
|
232
dbdimp.h
232
dbdimp.h
|
@ -1,116 +1,116 @@
|
||||||
|
|
||||||
#ifndef _DBDIMP_H
|
#ifndef _DBDIMP_H
|
||||||
#define _DBDIMP_H 1
|
#define _DBDIMP_H 1
|
||||||
|
|
||||||
#include "SQLiteXS.h"
|
#include "SQLiteXS.h"
|
||||||
#include "sqlite3.h"
|
#include "sqlite3.h"
|
||||||
|
|
||||||
/* 30 second timeout by default */
|
/* 30 second timeout by default */
|
||||||
#define SQL_TIMEOUT 30000
|
#define SQL_TIMEOUT 30000
|
||||||
|
|
||||||
/* Driver Handle */
|
/* Driver Handle */
|
||||||
struct imp_drh_st {
|
struct imp_drh_st {
|
||||||
dbih_drc_t com;
|
dbih_drc_t com;
|
||||||
/* sqlite specific bits */
|
/* sqlite specific bits */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Database Handle */
|
/* Database Handle */
|
||||||
struct imp_dbh_st {
|
struct imp_dbh_st {
|
||||||
dbih_dbc_t com;
|
dbih_dbc_t com;
|
||||||
/* sqlite specific bits */
|
/* sqlite specific bits */
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
bool in_tran;
|
bool in_tran;
|
||||||
bool unicode;
|
bool unicode;
|
||||||
bool handle_binary_nulls;
|
bool handle_binary_nulls;
|
||||||
int timeout;
|
int timeout;
|
||||||
AV *functions;
|
AV *functions;
|
||||||
AV *aggregates;
|
AV *aggregates;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Statement Handle */
|
/* Statement Handle */
|
||||||
struct imp_sth_st {
|
struct imp_sth_st {
|
||||||
dbih_stc_t com;
|
dbih_stc_t com;
|
||||||
/* sqlite specific bits */
|
/* sqlite specific bits */
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
/*
|
/*
|
||||||
char **results;
|
char **results;
|
||||||
char **coldata;
|
char **coldata;
|
||||||
*/
|
*/
|
||||||
int retval;
|
int retval;
|
||||||
int nrow;
|
int nrow;
|
||||||
char *statement;
|
char *statement;
|
||||||
AV *params;
|
AV *params;
|
||||||
AV *col_types;
|
AV *col_types;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define dbd_init sqlite_init
|
#define dbd_init sqlite_init
|
||||||
#define dbd_discon_all sqlite_discon_all
|
#define dbd_discon_all sqlite_discon_all
|
||||||
#define dbd_db_login sqlite_db_login
|
#define dbd_db_login sqlite_db_login
|
||||||
#define dbd_db_do sqlite_db_do
|
#define dbd_db_do sqlite_db_do
|
||||||
#define dbd_db_commit sqlite_db_commit
|
#define dbd_db_commit sqlite_db_commit
|
||||||
#define dbd_db_rollback sqlite_db_rollback
|
#define dbd_db_rollback sqlite_db_rollback
|
||||||
#define dbd_db_disconnect sqlite_db_disconnect
|
#define dbd_db_disconnect sqlite_db_disconnect
|
||||||
#define dbd_db_destroy sqlite_db_destroy
|
#define dbd_db_destroy sqlite_db_destroy
|
||||||
#define dbd_db_STORE_attrib sqlite_db_STORE_attrib
|
#define dbd_db_STORE_attrib sqlite_db_STORE_attrib
|
||||||
#define dbd_db_FETCH_attrib sqlite_db_FETCH_attrib
|
#define dbd_db_FETCH_attrib sqlite_db_FETCH_attrib
|
||||||
#define dbd_db_STORE_attrib_k sqlite_db_STORE_attrib_k
|
#define dbd_db_STORE_attrib_k sqlite_db_STORE_attrib_k
|
||||||
#define dbd_db_FETCH_attrib_k sqlite_db_FETCH_attrib_k
|
#define dbd_db_FETCH_attrib_k sqlite_db_FETCH_attrib_k
|
||||||
#define dbd_db_last_insert_id sqlite_db_last_insert_id
|
#define dbd_db_last_insert_id sqlite_db_last_insert_id
|
||||||
#define dbd_st_prepare sqlite_st_prepare
|
#define dbd_st_prepare sqlite_st_prepare
|
||||||
#define dbd_st_rows sqlite_st_rows
|
#define dbd_st_rows sqlite_st_rows
|
||||||
#define dbd_st_execute sqlite_st_execute
|
#define dbd_st_execute sqlite_st_execute
|
||||||
#define dbd_st_fetch sqlite_st_fetch
|
#define dbd_st_fetch sqlite_st_fetch
|
||||||
#define dbd_st_finish3 sqlite_st_finish3
|
#define dbd_st_finish3 sqlite_st_finish3
|
||||||
#define dbd_st_finish sqlite_st_finish
|
#define dbd_st_finish sqlite_st_finish
|
||||||
#define dbd_st_destroy sqlite_st_destroy
|
#define dbd_st_destroy sqlite_st_destroy
|
||||||
#define dbd_st_blob_read sqlite_st_blob_read
|
#define dbd_st_blob_read sqlite_st_blob_read
|
||||||
#define dbd_st_STORE_attrib sqlite_st_STORE_attrib
|
#define dbd_st_STORE_attrib sqlite_st_STORE_attrib
|
||||||
#define dbd_st_FETCH_attrib sqlite_st_FETCH_attrib
|
#define dbd_st_FETCH_attrib sqlite_st_FETCH_attrib
|
||||||
#define dbd_st_STORE_attrib_k sqlite_st_STORE_attrib_k
|
#define dbd_st_STORE_attrib_k sqlite_st_STORE_attrib_k
|
||||||
#define dbd_st_FETCH_attrib_k sqlite_st_FETCH_attrib_k
|
#define dbd_st_FETCH_attrib_k sqlite_st_FETCH_attrib_k
|
||||||
#define dbd_bind_ph sqlite_bind_ph
|
#define dbd_bind_ph sqlite_bind_ph
|
||||||
#define dbd_st_bind_col sqlite_bind_col
|
#define dbd_st_bind_col sqlite_bind_col
|
||||||
|
|
||||||
void sqlite3_db_create_function(SV *dbh, const char *name, int argc, SV *func);
|
void sqlite3_db_create_function(pTHX_ SV *dbh, const char *name, int argc, SV *func);
|
||||||
void sqlite3_db_enable_load_extension(SV *dbh, int onoff);
|
void sqlite3_db_enable_load_extension(pTHX_ SV *dbh, int onoff);
|
||||||
void sqlite3_db_create_aggregate( SV *dbh, const char *name, int argc, SV *aggr );
|
void sqlite3_db_create_aggregate(pTHX_ SV *dbh, const char *name, int argc, SV *aggr );
|
||||||
void sqlite3_db_create_collation(SV *dbh, const char *name, SV *func);
|
void sqlite3_db_create_collation(pTHX_ SV *dbh, const char *name, SV *func);
|
||||||
void sqlite3_db_progress_handler(SV *dbh, int n_opcodes, SV *handler);
|
void sqlite3_db_progress_handler(pTHX_ SV *dbh, int n_opcodes, SV *handler);
|
||||||
void sqlite_st_reset( SV *sth );
|
void sqlite_st_reset(pTHX_ SV *sth );
|
||||||
int sqlite_bind_col( SV *sth, imp_sth_t *imp_sth, SV *col, SV *ref, IV sql_type, SV *attribs );
|
int sqlite_bind_col( SV *sth, imp_sth_t *imp_sth, SV *col, SV *ref, IV sql_type, SV *attribs );
|
||||||
int dbd_set_sqlite3_busy_timeout ( SV *dbh, int timeout );
|
int dbd_set_sqlite3_busy_timeout (pTHX_ SV *dbh, int timeout );
|
||||||
|
|
||||||
#ifdef SvUTF8_on
|
#ifdef SvUTF8_on
|
||||||
|
|
||||||
static SV *
|
static SV *
|
||||||
newUTF8SVpv(char *s, STRLEN len) {
|
newUTF8SVpv(char *s, STRLEN len) {
|
||||||
dTHX;
|
dTHX;
|
||||||
register SV *sv;
|
register SV *sv;
|
||||||
|
|
||||||
sv = newSVpv(s, len);
|
sv = newSVpv(s, len);
|
||||||
SvUTF8_on(sv);
|
SvUTF8_on(sv);
|
||||||
return sv;
|
return sv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SV *
|
static SV *
|
||||||
newUTF8SVpvn(char *s, STRLEN len) {
|
newUTF8SVpvn(char *s, STRLEN len) {
|
||||||
dTHX;
|
dTHX;
|
||||||
register SV *sv;
|
register SV *sv;
|
||||||
|
|
||||||
sv = newSV(0);
|
sv = newSV(0);
|
||||||
sv_setpvn(sv, s, len);
|
sv_setpvn(sv, s, len);
|
||||||
SvUTF8_on(sv);
|
SvUTF8_on(sv);
|
||||||
return sv;
|
return sv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* #ifdef SvUTF8_on */
|
#else /* #ifdef SvUTF8_on */
|
||||||
|
|
||||||
#define newUTF8SVpv newSVpv
|
#define newUTF8SVpv newSVpv
|
||||||
#define newUTF8SVpvn newSVpvn
|
#define newUTF8SVpvn newSVpvn
|
||||||
#define SvUTF8_on(a) (a)
|
#define SvUTF8_on(a) (a)
|
||||||
#define SvUTF8_off(a) (a)
|
#define SvUTF8_off(a) (a)
|
||||||
#define sv_utf8_upgrade(a) (a)
|
#define sv_utf8_upgrade(a) (a)
|
||||||
|
|
||||||
#endif /* #ifdef SvUTF8_on */
|
#endif /* #ifdef SvUTF8_on */
|
||||||
|
|
||||||
#endif /* #ifndef _DBDIMP_H */
|
#endif /* #ifndef _DBDIMP_H */
|
||||||
|
|
Loading…
Add table
Reference in a new issue