|
Packit |
723767 |
|
|
Packit |
723767 |
#ifndef _DBDIMP_H
|
|
Packit |
723767 |
#define _DBDIMP_H 1
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#include "SQLiteXS.h"
|
|
Packit |
723767 |
#include "sqlite3.h"
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#define MY_CXT_KEY "DBD::SQLite::_guts" XS_VERSION
|
|
Packit |
723767 |
|
|
Packit |
723767 |
typedef struct {
|
|
Packit |
723767 |
int last_dbh_is_unicode;
|
|
Packit |
723767 |
} my_cxt_t;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#define PERL_UNICODE_DOES_NOT_WORK_WELL \
|
|
Packit |
723767 |
(PERL_REVISION <= 5) && ((PERL_VERSION < 8) \
|
|
Packit |
723767 |
|| (PERL_VERSION == 8 && PERL_SUBVERSION < 5))
|
|
Packit |
723767 |
|
|
Packit |
723767 |
/* 30 second timeout by default */
|
|
Packit |
723767 |
#define SQL_TIMEOUT 30000
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#ifndef sqlite3_int64
|
|
Packit |
723767 |
#define sqlite3_int64 sqlite_int64
|
|
Packit |
723767 |
#endif
|
|
Packit |
723767 |
|
|
Packit |
723767 |
/* A linked list of statements prepared by this module */
|
|
Packit |
723767 |
typedef struct stmt_list_s stmt_list_s;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
struct stmt_list_s {
|
|
Packit |
723767 |
sqlite3_stmt * stmt;
|
|
Packit |
723767 |
stmt_list_s * prev;
|
|
Packit |
723767 |
};
|
|
Packit |
723767 |
|
|
Packit |
723767 |
/* Driver Handle */
|
|
Packit |
723767 |
struct imp_drh_st {
|
|
Packit |
723767 |
dbih_drc_t com;
|
|
Packit |
723767 |
/* sqlite specific bits */
|
|
Packit |
723767 |
};
|
|
Packit |
723767 |
|
|
Packit |
723767 |
/* Database Handle */
|
|
Packit |
723767 |
struct imp_dbh_st {
|
|
Packit |
723767 |
dbih_dbc_t com;
|
|
Packit |
723767 |
/* sqlite specific bits */
|
|
Packit |
723767 |
sqlite3 *db;
|
|
Packit |
723767 |
bool unicode;
|
|
Packit |
723767 |
bool handle_binary_nulls;
|
|
Packit |
723767 |
int timeout;
|
|
Packit |
723767 |
AV *functions;
|
|
Packit |
723767 |
AV *aggregates;
|
|
Packit |
723767 |
SV *collation_needed_callback;
|
|
Packit |
723767 |
bool allow_multiple_statements;
|
|
Packit |
723767 |
bool use_immediate_transaction;
|
|
Packit |
723767 |
bool see_if_its_a_number;
|
|
Packit |
723767 |
int extended_result_codes;
|
|
Packit |
723767 |
stmt_list_s * stmt_list;
|
|
Packit |
723767 |
bool began_transaction;
|
|
Packit |
723767 |
};
|
|
Packit |
723767 |
|
|
Packit |
723767 |
/* Statement Handle */
|
|
Packit |
723767 |
struct imp_sth_st {
|
|
Packit |
723767 |
dbih_stc_t com;
|
|
Packit |
723767 |
/* sqlite specific bits */
|
|
Packit |
723767 |
sqlite3_stmt *stmt;
|
|
Packit |
723767 |
/*
|
|
Packit |
723767 |
char **results;
|
|
Packit |
723767 |
char **coldata;
|
|
Packit |
723767 |
*/
|
|
Packit |
723767 |
int retval;
|
|
Packit |
723767 |
int nrow;
|
|
Packit |
723767 |
AV *params;
|
|
Packit |
723767 |
AV *col_types;
|
|
Packit |
723767 |
const char *unprepared_statements;
|
|
Packit |
723767 |
};
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#define dbd_init sqlite_init
|
|
Packit |
723767 |
#define dbd_discon_all sqlite_discon_all
|
|
Packit |
723767 |
#define dbd_db_login6 sqlite_db_login6
|
|
Packit |
723767 |
#define dbd_db_commit sqlite_db_commit
|
|
Packit |
723767 |
#define dbd_db_rollback sqlite_db_rollback
|
|
Packit |
723767 |
#define dbd_db_disconnect sqlite_db_disconnect
|
|
Packit |
723767 |
#define dbd_db_destroy sqlite_db_destroy
|
|
Packit |
723767 |
#define dbd_db_STORE_attrib sqlite_db_STORE_attrib
|
|
Packit |
723767 |
#define dbd_db_FETCH_attrib sqlite_db_FETCH_attrib
|
|
Packit |
723767 |
#define dbd_db_last_insert_id sqlite_db_last_insert_id
|
|
Packit |
723767 |
#define dbd_st_prepare_sv sqlite_st_prepare_sv
|
|
Packit |
723767 |
#define dbd_st_rows sqlite_st_rows
|
|
Packit |
723767 |
#define dbd_st_execute sqlite_st_execute
|
|
Packit |
723767 |
#define dbd_st_fetch sqlite_st_fetch
|
|
Packit |
723767 |
#define dbd_st_finish3 sqlite_st_finish3
|
|
Packit |
723767 |
#define dbd_st_finish sqlite_st_finish
|
|
Packit |
723767 |
#define dbd_st_destroy sqlite_st_destroy
|
|
Packit |
723767 |
#define dbd_st_blob_read sqlite_st_blob_read
|
|
Packit |
723767 |
#define dbd_st_STORE_attrib sqlite_st_STORE_attrib
|
|
Packit |
723767 |
#define dbd_st_FETCH_attrib sqlite_st_FETCH_attrib
|
|
Packit |
723767 |
#define dbd_bind_ph sqlite_bind_ph
|
|
Packit |
723767 |
#define dbd_st_bind_col sqlite_bind_col
|
|
Packit |
723767 |
|
|
Packit |
723767 |
typedef struct aggrInfo aggrInfo;
|
|
Packit |
723767 |
struct aggrInfo {
|
|
Packit |
723767 |
SV *aggr_inst;
|
|
Packit |
723767 |
SV *err;
|
|
Packit |
723767 |
int inited;
|
|
Packit |
723767 |
};
|
|
Packit |
723767 |
|
|
Packit |
723767 |
|
|
Packit |
723767 |
int sqlite_db_create_function(pTHX_ SV *dbh, const char *name, int argc, SV *func, int flags);
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#ifndef SQLITE_OMIT_LOAD_EXTENSION
|
|
Packit |
723767 |
int sqlite_db_enable_load_extension(pTHX_ SV *dbh, int onoff);
|
|
Packit |
723767 |
int sqlite_db_load_extension(pTHX_ SV *dbh, const char *file, const char *proc);
|
|
Packit |
723767 |
#endif
|
|
Packit |
723767 |
|
|
Packit |
723767 |
int sqlite_db_create_aggregate(pTHX_ SV *dbh, const char *name, int argc, SV *aggr, int flags );
|
|
Packit |
723767 |
int sqlite_db_create_collation(pTHX_ SV *dbh, const char *name, SV *func);
|
|
Packit |
723767 |
int sqlite_db_progress_handler(pTHX_ SV *dbh, int n_opcodes, SV *handler);
|
|
Packit |
723767 |
int sqlite_bind_col( SV *sth, imp_sth_t *imp_sth, SV *col, SV *ref, IV sql_type, SV *attribs );
|
|
Packit |
723767 |
int sqlite_db_busy_timeout (pTHX_ SV *dbh, SV *timeout );
|
|
Packit |
723767 |
int sqlite_db_backup_from_file(pTHX_ SV *dbh, char *filename);
|
|
Packit |
723767 |
int sqlite_db_backup_to_file(pTHX_ SV *dbh, char *filename);
|
|
Packit |
723767 |
void sqlite_db_collation_needed(pTHX_ SV *dbh, SV *callback );
|
|
Packit |
723767 |
SV* sqlite_db_commit_hook( pTHX_ SV *dbh, SV *hook );
|
|
Packit |
723767 |
SV* sqlite_db_rollback_hook( pTHX_ SV *dbh, SV *hook );
|
|
Packit |
723767 |
SV* sqlite_db_update_hook( pTHX_ SV *dbh, SV *hook );
|
|
Packit |
723767 |
int sqlite_db_set_authorizer( pTHX_ SV *dbh, SV *authorizer );
|
|
Packit |
723767 |
AV* sqlite_compile_options();
|
|
Packit |
723767 |
int sqlite_db_trace(pTHX_ SV *dbh, SV *func);
|
|
Packit |
723767 |
int sqlite_db_profile(pTHX_ SV *dbh, SV *func);
|
|
Packit |
723767 |
HV* sqlite_db_table_column_metadata(pTHX_ SV *dbh, SV *dbname, SV *tablename, SV *columnname);
|
|
Packit |
723767 |
HV* _sqlite_db_status(pTHX_ SV *dbh, int reset);
|
|
Packit |
723767 |
SV* sqlite_db_filename(pTHX_ SV *dbh);
|
|
Packit |
723767 |
int sqlite_db_register_fts3_perl_tokenizer(pTHX_ SV *dbh);
|
|
Packit |
723767 |
HV* _sqlite_status(int reset);
|
|
Packit |
723767 |
HV* _sqlite_st_status(pTHX_ SV *sth, int reset);
|
|
Packit |
723767 |
int sqlite_db_create_module(pTHX_ SV *dbh, const char *name, const char *perl_class);
|
|
Packit |
723767 |
int sqlite_db_do_sv(SV *dbh, imp_dbh_t *imp_dbh, SV *sv_statement);
|
|
Packit |
723767 |
void init_cxt();
|
|
Packit |
723767 |
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#ifdef SvUTF8_on
|
|
Packit |
723767 |
|
|
Packit |
723767 |
static SV *
|
|
Packit |
723767 |
newUTF8SVpv(char *s, STRLEN len) {
|
|
Packit |
723767 |
dTHX;
|
|
Packit |
723767 |
register SV *sv;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
sv = newSVpv(s, len);
|
|
Packit |
723767 |
SvUTF8_on(sv);
|
|
Packit |
723767 |
return sv;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
static SV *
|
|
Packit |
723767 |
newUTF8SVpvn(char *s, STRLEN len) {
|
|
Packit |
723767 |
dTHX;
|
|
Packit |
723767 |
register SV *sv;
|
|
Packit |
723767 |
|
|
Packit |
723767 |
sv = newSV(0);
|
|
Packit |
723767 |
sv_setpvn(sv, s, len);
|
|
Packit |
723767 |
SvUTF8_on(sv);
|
|
Packit |
723767 |
return sv;
|
|
Packit |
723767 |
}
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#else /* #ifdef SvUTF8_on */
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#define newUTF8SVpv newSVpv
|
|
Packit |
723767 |
#define newUTF8SVpvn newSVpvn
|
|
Packit |
723767 |
#define SvUTF8_on(a) (a)
|
|
Packit |
723767 |
#define SvUTF8_off(a) (a)
|
|
Packit |
723767 |
#define sv_utf8_upgrade(a) (a)
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#endif /* #ifdef SvUTF8_on */
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#ifdef _MSC_VER
|
|
Packit |
723767 |
# define atoll _atoi64
|
|
Packit |
723767 |
#endif
|
|
Packit |
723767 |
|
|
Packit |
723767 |
#endif /* #ifndef _DBDIMP_H */
|