Blame dbdimp.h

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 */