22#include "apu_config.h"
27#if defined(HAVE_MYSQL_MYSQL_H)
28#if defined(HAVE_MYSQL_MY_GLOBAL_H)
29#include <mysql/my_global.h>
30#if defined(HAVE_MYSQL_MY_SYS_H)
31#include <mysql/my_sys.h>
34#include <mysql/mysql.h>
35#include <mysql/errmsg.h>
37#if defined(HAVE_MY_GLOBAL_H)
39#if defined(HAVE_MY_SYS_H)
54#define FIELDSIZE 1048575
119 "LOB", 5, APR_BUCKET_DATA,
237 if (
sql->trans &&
sql->trans->errnum) {
238 return sql->trans->errnum;
246 (*results)->random =
seek;
247 (*results)->statement =
NULL;
248 (*results)->pool =
pool;
283 if (
res->statement) {
341 if (
row->res->statement) {
347 if (*
bind->is_null) {
353 val->value.stringval =
bind->buffer;
358 val->value.stringval =
row->row[
n];
370 if (
row->res->statement) {
375 if (*
bind->is_null) {
392 if (
row->res->statement) {
394 unsigned long len = *
bind->length;
400 if (*
bind->is_null) {
448 *((
char*)
bind->buffer+
bind->buffer_length-1) =
'\0';
458 row->res->pool,
b->bucket_alloc);
527 row->res->pool,
b->bucket_alloc);
549 if (
sql->trans &&
sql->trans->errnum) {
550 return sql->trans->errnum;
566 unsigned long len = strlen(
arg);
591 if ((*statement)->stmt) {
600 (*statement)->nargs =
nargs;
601 (*statement)->nvals =
nvals;
602 (*statement)->types =
types;
617 bind[
i].is_unsigned = 0;
675 if (
sql->trans &&
sql->trans->errnum) {
676 return sql->trans->errnum;
697 if (
sql->trans &&
sql->trans->errnum) {
698 return sql->trans->errnum;
717#if MYSQL_VERSION_ID >= 50000
721 unsigned long *
length, maxlen;
740#if MYSQL_VERSION_ID >= 50000
745 maxlen = ((*res)->res->fields[
i].length <
sql->fldsz ?
746 (*res)->res->fields[
i].length :
sql->fldsz) + 1;
753 (*res)->bind[
i].buffer_length = maxlen;
754 (*res)->bind[
i].length = &
length[
i];
757#if MYSQL_VERSION_ID >= 50000
758 (*res)->bind[
i].error =
error+
i;
783 if (
sql->trans &&
sql->trans->errnum) {
784 return sql->trans->errnum;
807 if (
sql->trans &&
sql->trans->errnum) {
808 return sql->trans->errnum;
838 bind[
i].is_unsigned = 0;
843 bind[
i].is_unsigned = 1;
848 bind[
i].is_unsigned = 0;
853 bind[
i].is_unsigned = 1;
858 bind[
i].is_unsigned = 0;
863 bind[
i].is_unsigned = 1;
866 if (
sizeof(
int) ==
sizeof(
long)) {
874 bind[
i].is_unsigned = 0;
877 if (
sizeof(
unsigned int) ==
sizeof(
unsigned long)) {
885 bind[
i].is_unsigned = 1;
897 bind[
i].is_unsigned = 0;
910 bind[
i].is_unsigned = 1;
915 bind[
i].is_unsigned = 0;
920 bind[
i].is_unsigned = 0;
931 bind[
i].is_unsigned = 0;
932 bind[
i].buffer_length = strlen((
const char *)
arg);
938 bind[
i].is_unsigned = 0;
961 if (
sql->trans &&
sql->trans->errnum) {
962 return sql->trans->errnum;
983 if (
sql->trans &&
sql->trans->errnum) {
984 return sql->trans->errnum;
1004 if (
sql->trans &&
sql->trans->errnum) {
1005 return sql->trans->errnum;
1015 sql->trans->errnum =
ret;
1028 if (
sql->trans &&
sql->trans->errnum) {
1029 return sql->trans->errnum;
1074 (*trans)->handle =
handle;
1076 return (*trans)->errnum;
1099 static const char *
const delims =
" \r\n\t;|,";
1106#if MYSQL_VERSION_ID >= 50013
1110 unsigned long flags = 0;
1125 {
"reconnect",
NULL},
1128 unsigned int port = 0;
1177#if MYSQL_VERSION_ID >= 50013
1183#if MYSQL_VERSION_ID >= 50013
1201#if MYSQL_VERSION_ID >= 50013
1234 if (
res->statement) {
1245 if (
res->statement) {
1265#if MYSQL_VERSION_ID < 100000
const char apr_size_t len
APR-UTIL Buckets/Bucket Brigades.
#define TXN_NOTICE_ERRORS(t)
#define TXN_DO_ROLLBACK(t)
APR general purpose library routines.
APR-util Versioning Interface.
const char apr_port_t port
#define APR_BUCKET_INIT(e)
#define APR_BUCKET_INSERT_AFTER(a, b)
#define APR_BRIGADE_INSERT_TAIL(b, e)
apr_bucket apr_bucket_brigade * a
apr_pool_t apr_dbd_t const char * query
apr_pool_t const char apr_dbd_t const char ** error
struct apr_dbd_prepared_t apr_dbd_prepared_t
apr_pool_t apr_dbd_t const char const char * label
apr_pool_t apr_dbd_t apr_dbd_results_t ** res
struct apr_dbd_t apr_dbd_t
apr_dbd_t int const char * statement
apr_dbd_transaction_t int mode
struct apr_dbd_results_t apr_dbd_results_t
apr_pool_t const char apr_dbd_t ** handle
apr_pool_t apr_dbd_results_t apr_dbd_row_t int rownum
apr_pool_t apr_dbd_t int apr_dbd_prepared_t int nargs
struct apr_dbd_transaction_t apr_dbd_transaction_t
apr_pool_t apr_dbd_results_t apr_dbd_row_t ** row
apr_pool_t const char * params
struct apr_dbd_row_t apr_dbd_row_t
#define APR_DBD_TRANSACTION_COMMIT
@ APR_DBD_TYPE_ZTIMESTAMP
const char apr_ssize_t int flags
const char apr_hash_t ** values
const char int apr_pool_t * pool
const apr_array_header_t * list
apr_seek_where_t apr_off_t * offset
int strncasecmp(const char *a, const char *b, size_t n)
#define apr_pcalloc(p, size)
const char const char *const * args
static const char *const types[]
static const char *const trans[040]
apr_bucket_alloc_t * list
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray