src/evsql.h
author Tero Marttila <terom@fixme.fi>
Sun, 12 Oct 2008 14:57:06 +0300
changeset 24 82cfdb6680d1
parent 23 1dee73ae4ad0
child 25 99a41f48e29b
permissions -rw-r--r--
working dbfs.lookup
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#ifndef EVSQL_H
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#define EVSQL_H
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
 * An event-based (Postgre)SQL client API using libevent
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
// XXX: libpq
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
#include <postgresql/libpq-fe.h>
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
#include <event2/event.h>
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
 * The generic context handle
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
struct evsql;
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
 * A query handle
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
struct evsql_query;
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
/*
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    23
 * Parameter type
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    24
 */
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    25
enum evsql_param_format {
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    26
    EVSQL_FMT_TEXT,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    27
    EVSQL_FMT_BINARY,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    28
};
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    29
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    30
enum evsql_param_type {
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    31
    EVSQL_PARAM_INVALID,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    32
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    33
    EVSQL_PARAM_NULL,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    34
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    35
    EVSQL_PARAM_STRING,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    36
    EVSQL_PARAM_UINT16,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    37
    EVSQL_PARAM_UINT32,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    38
    EVSQL_PARAM_UINT64,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    39
};
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    40
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    41
/*
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    42
 * Query parameter info.
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    43
 *
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    44
 * Use the EVSQL_PARAM_* macros to define the value of list
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    45
 */
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
struct evsql_query_params {
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    47
    // nonzero to get results in binary format
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    48
    enum evsql_param_format result_fmt;
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    49
    
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    50
    // the list of parameters, terminated by { 0, 0 }
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    51
    struct evsql_query_param {
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    52
        // the param type
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    53
        enum evsql_param_type type;
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    54
        
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    55
        // pointer to the raw data
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    56
        const char *data_raw;
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    57
        
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    58
        // the value
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    59
        union {
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    60
            uint16_t uint16;
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    61
            uint32_t uint32;
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    62
            uint64_t uint64;
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    63
        } data;
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    64
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    65
        // the explicit length of the parameter if it's binary, zero for text.
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    66
        // set to -1 to indicate that the value is still missing
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    67
        ssize_t length;
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    68
    } list[];
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    69
};
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    70
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    71
// macros for defining evsql_query_params
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    72
#define EVSQL_PARAMS(result_fmt)            { result_fmt, 
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    73
#define EVSQL_PARAM(typenam)                    { EVSQL_PARAM_ ## typenam, NULL }
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    74
#define EVSQL_PARAMS_END                        { EVSQL_PARAM_INVALID, NULL } \
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    75
                                              } // <<<
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
 * Result type
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
 */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    80
union evsql_result {
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    81
    // libpq
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    82
    PGresult *pq;
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    83
};
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    84
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
struct evsql_result_info {
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    struct evsql *evsql;
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
    
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
    int error;
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    90
    union evsql_result result;
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
};
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
 * Callback for handling query-level errors.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
 *
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
 * The query has completed, either succesfully or unsuccesfully (look at info.error).
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
 * info.result contains the result à la the evsql's type.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
 */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    99
typedef void (*evsql_query_cb)(const struct evsql_result_info *res, void *arg);
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
 * Callback for handling connection-level errors.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
 *
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
 * The SQL context/connection suffered an error. It is not valid anymore, and may not be used.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
typedef void (*evsql_error_cb)(struct evsql *evsql, void *arg);
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
 * Create a new PostgreSQL/libpq(evpq) -based evsql using the given conninfo.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
struct evsql *evsql_new_pq (struct event_base *ev_base, const char *pq_conninfo, evsql_error_cb error_fn, void *cb_arg);
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
/*
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
 * Queue the given query for execution.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
struct evsql_query *evsql_query (struct evsql *evsql, const char *command, evsql_query_cb query_fn, void *cb_arg);
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
/*
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   119
 * Same, but uses the SQL-level support for binding parameters.
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   120
 */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   121
struct evsql_query *evsql_query_params (struct evsql *evsql, const char *command, const struct evsql_query_params *params, evsql_query_cb query_fn, void *cb_arg);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   122
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   123
/*
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   124
 * Param-building functions
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   125
 */
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   126
int evsql_param_string (struct evsql_query_params *params, size_t param, const char *ptr);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   127
int evsql_param_uint32 (struct evsql_query_params *params, size_t param, uint32_t uval);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   128
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   129
/*
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   130
 * Result-handling functions
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   131
 */
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   132
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   133
// get error message associated with function
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   134
const char *evsql_result_error (const struct evsql_result_info *res);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   135
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   136
// number of rows in the result
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   137
size_t evsql_result_rows (const struct evsql_result_info *res);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   138
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   139
// number of columns in the result
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   140
size_t evsql_result_cols (const struct evsql_result_info *res);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   141
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   142
// fetch the raw binary value from a result set, and return it via ptr
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   143
// if size is nonzero, check that the size of the field data matches
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   144
int evsql_result_binary (const struct evsql_result_info *res, size_t row, size_t col, const char **ptr, size_t size, int nullok);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   145
int evsql_result_string (const struct evsql_result_info *res, size_t row, size_t col, const char **ptr, int nullok);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   146
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   147
// fetch certain kinds of values from a binary result set
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   148
int evsql_result_uint16 (const struct evsql_result_info *res, size_t row, size_t col, uint16_t *uval, int nullok);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   149
int evsql_result_uint32 (const struct evsql_result_info *res, size_t row, size_t col, uint32_t *uval, int nullok);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   150
int evsql_result_uint64 (const struct evsql_result_info *res, size_t row, size_t col, uint64_t *uval, int nullok);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   151
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   152
// release the result set, freeing its memory
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   153
void evsql_result_free (const struct evsql_result_info *res);
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   154
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   155
// platform-dependant aliases
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   156
#define evsql_result_ushort evsql_result_uint16
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   157
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   158
#if _LP64
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   159
#define evsql_result_ulong evsql_result_uint64
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   160
#else
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   161
#define evsql_result_ulong evsql_result_uint32
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   162
#endif /* _LP64 */
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   163
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   164
/*
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
 * Close a connection. Callbacks for waiting queries will not be run.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
 *
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
 * XXX: not implemented yet.
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
void evsql_close (struct evsql *evsql);
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
#endif /* EVSQL_H */