src/include/evsql.h
author Tero Marttila <terom@fixme.fi>
Mon, 16 Mar 2009 21:48:13 +0200
changeset 63 76a782abddca
parent 59 54a2e6be81a7
child 64 83d53afa2551
permissions -rw-r--r--
replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
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
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
     4
/**
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
     5
 * @file src/evsql.h
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
     6
 *
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
     7
 * A SQL library designed for use with libevent and PostgreSQL's libpq. Provides support for queueing non-transactional
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
     8
 * requests, transaction support, parametrized queries and result iteration.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
     9
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    10
 * Currently, the API does not expose the underlying libpq data structures, but since it is currently the only
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    11
 * underlying implementation, there is no guarantee that the same API will actually work with other databases' interface
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    12
 * libraries...
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    13
 *
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    14
 * The order of function calls and callbacks goes something like this:
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    15
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    16
 *  -   evsql_new_pq()
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    17
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    18
 *  -   evsql_trans()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    19
 *      -   evsql_trans_abort()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    20
 *      -   evsql_trans_error_cb()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    21
 *      -   evsql_trans_ready_cb()
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    22
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
    23
 *  -   evsql_query(), \ref evsql_param_ + evsql_query_params(), evsql_query_exec()
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    24
 *      -   evsql_query_abort()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    25
 *      -   evsql_query_cb()
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
    26
 *          -   \ref evsql_result_
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    27
 *          -   evsql_result_free()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    28
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    29
 *  -   evsql_trans_commit()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    30
 *      -   evsql_trans_done_cb()
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    31
 *
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    34
/**
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    35
 * System includes
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    36
 */
28
e944453ca924 split off dbfs components into a separate dir, improve dirop docs, error handling, etc
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    37
#include <stdint.h>
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    38
#include <stdbool.h>
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
#include <event2/event.h>
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    41
/**
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
    42
 * Type for error return codes
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    43
 */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
    44
typedef unsigned int evsql_err_t;
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    45
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    46
/**
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    47
 * @struct evsql
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    48
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    49
 * The generic session handle used to manage a single "database connector" with multiple queries/transactions.
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    50
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    51
 * @see \ref evsql_
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
struct evsql;
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    55
/**
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    56
 * @struct evsql_trans
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    57
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    58
 * Opaque transaction handle returned by evsql_trans() and used for the \ref evsql_query_ functions
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    59
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    60
 * @see \ref evsql_trans_
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    61
 */
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    62
struct evsql_trans;
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    63
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    64
/**
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    65
 * @struct evsql_query
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    66
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    67
 * Opaque query handle returned by the \ref evsql_query_ functions and used for evsql_query_abort()
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    68
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    69
 * @see \ref evsql_query_
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
struct evsql_query;
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    73
/**
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    74
 * @struct evsql_result
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    75
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    76
 * Opaque result handle received by evsql_query_cb(), and used with the \ref evsql_result_ functions
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    77
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
    78
 * @see evsql_query_cb
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
    79
 * @see \ref evsql_result_
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    80
 */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
    81
struct evsql_result;
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    82
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    83
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    84
 * Various transaction isolation levels for conveniance
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
    85
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
    86
 * @see evsql_trans
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    87
 */
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    88
enum evsql_trans_type {
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    89
    EVSQL_TRANS_DEFAULT,
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    90
    EVSQL_TRANS_SERIALIZABLE,
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    91
    EVSQL_TRANS_REPEATABLE_READ,
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    92
    EVSQL_TRANS_READ_COMMITTED,
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    93
    EVSQL_TRANS_READ_UNCOMMITTED,
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    94
};
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
    95
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    96
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    97
 * An item can be in different formats, the classical text-based format (i.e. snprintf "1234") or a more low-level
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
    98
 * binary format (i.e uint16_t 0x04F9 in network-byte order).
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    99
 */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   100
enum evsql_item_format {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   101
    /** Format values as text strings */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   102
    EVSQL_FMT_TEXT,
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   103
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   104
    /** Type-specific binary encoding */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   105
    EVSQL_FMT_BINARY,
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   106
};
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   107
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   108
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   109
 * An item has a specific type, these correspond somewhat to the native database types.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   110
 */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   111
enum evsql_item_type {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   112
    /** End marker, zero */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   113
    EVSQL_TYPE_INVALID,
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   114
    
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   115
    /** A SQL NULL */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   116
    EVSQL_TYPE_NULL_,
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   117
    
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   118
    /** A `struct evsql_item_binary` */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   119
    EVSQL_TYPE_BINARY,
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   120
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   121
    /** A NUL-terminated char* */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   122
    EVSQL_TYPE_STRING,
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   123
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   124
    /** A uint16_t value */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   125
    EVSQL_TYPE_UINT16,
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   126
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   127
    /** A uint32_t value */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   128
    EVSQL_TYPE_UINT32,
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   129
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   130
    /** A uint64_t value */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   131
    EVSQL_TYPE_UINT64,
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   132
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   133
    EVSQL_TYPE_MAX
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   134
};
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   135
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   136
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   137
 * Value for use with EVSQL_TYPE_BINARY, this just a non-NUL-terminated char* and an explicit length
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   138
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   139
struct evsql_item_binary {
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   140
    /** The binary data */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   141
    const char *ptr;
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   142
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   143
    /** Number of bytes pointed to by ptr */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   144
    size_t len;
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   145
};
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   146
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   147
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   148
 * Metadata about the format and type of an item, this does not hold any actual value.
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   149
 */
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   150
struct evsql_item_info {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   151
    /** The format */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   152
    enum evsql_item_format format;
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   153
    
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   154
    /** The type type */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   155
    enum evsql_item_type type;
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   156
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   157
    /** Various flags */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   158
    struct evsql_item_flags {
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   159
        /** The value may be NULL @see evsql_result_next */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   160
        bool null_ok;
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   161
    } flags;
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   162
};
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   163
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   164
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   165
 * An union to provide storage for the values of small types
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   166
 *
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   167
 * @see evsql_item
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   168
 */
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   169
union evsql_item_value {
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   170
    /** 16-bit unsigned integer */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   171
    uint16_t uint16;
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   172
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   173
    /** 32-bit unsigned integer */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   174
    uint32_t uint32;
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   175
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   176
    /** 64-bit unsigned integer */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   177
    uint64_t uint64;
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   178
};
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   179
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   180
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   181
 * A generic structure containing the type and value of a query parameter or a result field.
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   182
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   183
 * @see evsql_query_info
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   184
 * @see evsql_query_params
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   185
 * @see evsql_result_info
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   186
 */
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   187
struct evsql_item {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   188
    /** The "header" containing the type and format */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   189
    struct evsql_item_info info;
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   190
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   191
    /**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   192
     * Pointer to the raw databytes. 
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   193
     * Set to NULL for SQL NULLs, otherwise &value or an external buf 
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   194
     */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   195
    const char *bytes;
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   196
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   197
    /**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   198
     * Size of the byte array pointed to by bytes, zero for EVSQL_FMT_TEXT data.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   199
     */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   200
    size_t length;
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   201
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   202
    /**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   203
     * Inline storage for small values
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   204
     */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   205
    union evsql_item_value value;
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   206
    
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   207
    /** Internal flags */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   208
    struct {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   209
        /**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   210
         * The item has a value stored in `value`
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   211
         */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   212
        bool has_value;
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   213
    } flags;
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   214
};
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   215
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   216
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   217
 * Query meta-info, similar to a prepared statement.
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   218
 *
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   219
 * Contains the literal SQL query and the types of the parameters, but no more.
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   220
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   221
 * @see evsql_query_exec
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   222
 */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   223
struct evsql_query_info {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   224
    /** The SQL query itself */
43
5776ace903b5 some new structs
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   225
    const char *sql;
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   226
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   227
    /** 
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   228
     * A variable-length array of the item_info parameters, terminated by an EVSQL_TYPE_INVALID entry.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   229
     */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   230
    struct evsql_item_info params[];
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   231
};
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   232
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   233
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   234
 * Contains the query parameter types and their actual values
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   235
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   236
 * @see evsql_query_params
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   237
 */
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   238
struct evsql_query_params {
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   239
    /** Requested result format for this query. XXX: move elsewhere */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   240
    enum evsql_item_format result_format;
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   241
    
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   242
    /**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   243
     * A variable-length array of the item parameter-values, terminated by an EVSQL_TYPE_INVALID entry.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   244
     */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   245
    struct evsql_item list[];
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   246
};
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   247
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   248
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   249
 * Result layout metadata. This contains the stucture needed to decode result rows.
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   250
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   251
 * @see evsql_result_begin
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   252
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   253
struct evsql_result_info {
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   254
    /** XXX: make up something useful to stick here */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   255
    int _unused;
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   256
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   257
    /**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   258
     * A variable-length array of the item_info column types.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   259
     */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   260
    struct evsql_item_info columns[];
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   261
};
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   262
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   263
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   264
 * Magic macros for defining param/result info -lists
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   265
 *  
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   266
 * @code
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   267
 *  static struct evsql_query_params params = EVSQL_PARAMS(EVSQL_FMT_BINARY) {
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   268
 *      EVSQL_PARAM( UINT32 ),
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   269
 *      ...,
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   270
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   271
 *      EVSQL_PARAMS_END
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   272
 *  };
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   273
 * @endcode
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   274
 *
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   275
 * @name EVSQL_TYPE/PARAM_*
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   276
 * @{
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   277
 */
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   278
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   279
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   280
 * A `struct evsql_item_info` initializer, using FMT_BINARY and the given EVSQL_TYPE_ -suffix.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   281
 *
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   282
 * @param typenam the suffix of an evsql_item_type name
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   283
 *
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   284
 * @see struct evsql_item_info
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   285
 * @see enum evsql_item_type
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   286
 */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   287
#define EVSQL_TYPE(typenam)                     { EVSQL_FMT_BINARY, EVSQL_TYPE_ ## typenam, { false } }
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   288
#define EVSQL_TYPE_NULL(typenam)                { EVSQL_FMT_BINARY, EVSQL_TYPE_ ## typenam, { true } }
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   289
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   290
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   291
 * End marker for a `struct evsql_item_info` array.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   292
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   293
 * @see struct evsql_item_info
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   294
 */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   295
#define EVSQL_TYPE_END                          EVSQL_TYPE(INVALID)
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   296
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   297
/**
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   298
 * Initializer block for an evsql_query_params struct
48
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   299
 */
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   300
#define EVSQL_PARAMS(result_fmt)            { result_fmt, 
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   301
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   302
/**
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   303
 * An evsql_item initializer
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   304
 */
50
881de320e483 convert dbfs/link.c
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
   305
#define EVSQL_PARAM(typenam)                    { EVSQL_TYPE(typenam) }
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   306
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   307
/**
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   308
 * Include the ending item and terminate the pseudo-block started using #EVSQL_PARAMS
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   309
 */
50
881de320e483 convert dbfs/link.c
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
   310
#define EVSQL_PARAMS_END                        { EVSQL_TYPE_END } \
48
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   311
                                              } // <<<
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   312
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   313
// @}
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   314
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   315
/**
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   316
 * Callback definitions
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   317
 *
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   318
 * @name evsql_*_cb
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   319
 * @{
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   320
 */
50
881de320e483 convert dbfs/link.c
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
   321
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   322
/**
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   323
 * Callback for handling query results.
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   324
 *
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   325
 * The query has completed, either succesfully or unsuccesfully.
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   326
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   327
 * Use the \ref evsql_result_ functions to manipulate the results, and call evsql_result_free() (or equivalent) once done.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   328
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   329
 * @param res The result handle that must be result_free'd after use
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   330
 * @param arg The void* passed to \ref evsql_query_
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   331
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   332
 * @see evsql_query
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   333
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   334
typedef void (*evsql_query_cb)(struct evsql_result *res, void *arg);
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   335
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   336
/**
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   337
 * Callback for handling global-level errors.
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   338
 *
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   339
 * The evsql is not useable anymore.
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   340
 *
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   341
 * XXX: this is not actually called yet, as no retry logic is implemented, so an evsql itself never fails.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   342
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   343
 * @see evsql_new_pq
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   344
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   345
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
   346
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   347
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   348
 * Callback for handling transaction-level errors. This may be called at any time during a transaction's lifetime,
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   349
 * including from within the \ref evsql_query_ functions (but not always).
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   350
 *
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   351
 * The transaction is not useable anymore.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   352
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   353
 * @param trans the transaction in question
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   354
 * @param arg the void* passed to evsql_trans
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   355
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   356
 * @see evsql_trans
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   357
 */
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   358
typedef void (*evsql_trans_error_cb)(struct evsql_trans *trans, void *arg);
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   359
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   360
/**
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   361
 * Callback for handling evsql_trans/evsql_query_abort completion. The transaction is ready for use with \ref evsql_query_.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   362
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   363
 * @param trans the transaction in question
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   364
 * @param arg the void* passed to evsql_trans
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   365
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   366
 * @see evsql_trans
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   367
 * @see evsql_query_abort
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   368
 */
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   369
typedef void (*evsql_trans_ready_cb)(struct evsql_trans *trans, void *arg);
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   370
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   371
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   372
 * Callback for handling evsql_trans_commit completion. The transaction was commited, and should not be used anymore.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   373
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   374
 * @param trans the transaction in question
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   375
 * @param arg the void* passed to evsql_trans
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   376
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   377
 * @see evsql_trans
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   378
 * @see evsql_trans_commit
26
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   379
 */
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   380
typedef void (*evsql_trans_done_cb)(struct evsql_trans *trans, void *arg);
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   381
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   382
// @}
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   383
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   384
/**
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   385
 * Session functions
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   386
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   387
 * @defgroup evsql_* Session interface
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   388
 * @see evsql.h
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   389
 * @{
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   390
 */
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   391
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   392
/**
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   393
 * Session creation functions
26
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   394
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   395
 * @defgroup evsql_new_* Session creation interface
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   396
 * @see evsql.h
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   397
 * @{
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   398
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   399
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   400
/**
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   401
 * Create a new PostgreSQL/libpq (evpq) -based evsql using the given conninfo.
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   402
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   403
 * The given \a pq_conninfo pointer must stay valid for the duration of the evsql's lifetime.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   404
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   405
 * See the libpq reference manual for the syntax of pq_conninfo
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   406
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   407
 * @param ev_base the libevent base to use
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   408
 * @param pq_conninfo the libpq connection information
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   409
 * @param error_fn XXX: not used, may be NULL
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   410
 * @param cb_arg: XXX: not used, argument for error_fn
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   411
 * @return the evsql context handle for use with other functions
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   412
 */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   413
struct evsql *evsql_new_pq (struct event_base *ev_base, const char *pq_conninfo, 
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   414
    evsql_error_cb error_fn, 
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   415
    void *cb_arg
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   416
);
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   417
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   418
// @}
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   419
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   420
/**
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   421
 * Close a connection. Callbacks for waiting queries will not be run.
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   422
 *
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   423
 * XXX: not implemented yet.
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   424
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   425
 * @param evsql the context handle from \ref evsql_new_
53
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   426
 */
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   427
void evsql_close (struct evsql *evsql);
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   428
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   429
// @}
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   430
0d6e07f4c9a1 separate evsql documentation
Tero Marttila <terom@fixme.fi>
parents: 52
diff changeset
   431
/**
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   432
 * Query API
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   433
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   434
 * @defgroup evsql_query_* Query interface
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   435
 * @see evsql.h
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   436
 * @{
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   437
 */
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   438
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   439
/**
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   440
 * Queue the given query for execution.
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   441
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   442
 * If \a trans is given (i.e. not NULL), then the transaction must be idle, and the query will be executed in that
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   443
 * transaction's context. Otherwise, the query will be executed without a transaction using an idle connection, or
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   444
 * enqueued for later execution.
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   445
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   446
 * Once the query is complete (got a result, got an error, the connection failed), then \a query_fn will be called.
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   447
 * The callback can use the \ref evsql_result_ functions to manipulate the query results.
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   448
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   449
 * The returned evsql_query handle can be passed to evsql_query_abort at any point before \a query_fn being called. 
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   450
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   451
 * @param evsql the context handle from \ref evsql_new_
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   452
 * @param trans the optional transaction handle from evsql_trans
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   453
 * @param command the raw SQL command itself
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   454
 * @param query_fn the evsql_query_cb() to call once the query is complete
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   455
 * @param cb_arg the void* passed to the above
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   456
 * @return the evsql_query handle that can be used to abort the query
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   457
 */
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   458
struct evsql_query *evsql_query (struct evsql *evsql, struct evsql_trans *trans, const char *command, evsql_query_cb query_fn, void *cb_arg);
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   459
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   460
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   461
 * Execute the given SQL query using the list of parameter types/values given via evsql_query_params.
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   462
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   463
 * Use the EVSQL_PARAMS macros to declare \a params, and the \ref evsql_param_ functions to populate the values.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   464
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   465
 * See evsql_query() for more info about behaviour.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   466
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   467
 * See the <a href="http://www.postgresql.org/docs/8.3/static/libpq-exec.html#LIBPQ-EXEC-MAIN">libpq PQexecParams tip</a>
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   468
 * for the parameter syntax to use.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   469
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   470
 * @param evsql the context handle from \ref evsql_new_
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   471
 * @param trans the optional transaction handle from evsql_trans
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   472
 * @param command the SQL command to bind the parameters to
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   473
 * @param params the parameter types and values
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   474
 * @param query_fn the evsql_query_cb() to call once the query is complete
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   475
 * @param cb_arg the void* passed to the above
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   476
 * @see evsql_query
25
99a41f48e29b evsql transactions, it compiles...
Tero Marttila <terom@fixme.fi>
parents: 24
diff changeset
   477
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   478
struct evsql_query *evsql_query_params (struct evsql *evsql, struct evsql_trans *trans, 
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   479
    const char *command, const struct evsql_query_params *params, 
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   480
    evsql_query_cb query_fn, void *cb_arg
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   481
);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   482
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   483
/**
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   484
 * Execute the given \a query_info's SQL query with the values given as variable arguments, using the \a query_info to
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   485
 * resolve the types.
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   486
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   487
 * See evsql_query() for more info about behaviour.
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   488
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   489
 * @param evsql the context handle from \ref evsql_new_
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   490
 * @param trans the optional transaction handle from evsql_trans
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   491
 * @param query_info the SQL query information
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   492
 * @param query_fn the evsql_query_cb() to call once the query is complete
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   493
 * @param cb_arg the void* passed to the above
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   494
 * @see evsql_query
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   495
 */
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   496
struct evsql_query *evsql_query_exec (struct evsql *evsql, struct evsql_trans *trans, 
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   497
    const struct evsql_query_info *query_info,
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   498
    evsql_query_cb query_fn, void *cb_arg,
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   499
    ...
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   500
);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   501
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   502
/**
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   503
 * Abort a \a query returned by \ref evsql_query_ that has not yet completed (query_fn has not been called yet).
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   504
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   505
 * The actual query itself may or may not be aborted (and hence may or may not be executed on the server), but \a query_fn
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   506
 * will not be called anymore, and the query will dispose of itself and any results returned.
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   507
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   508
 * If the \a query is part of a transaction, then \a trans must be given, and the query must be the query that is currently
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   509
 * executing on that trans. The transaction's \a ready_fn will be called once the query has been aborted and the
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   510
 * transaction is now idle again.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   511
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   512
 * @param trans if the query is part of a transaction, then it MUST be given here
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   513
 * @param query the in-progress query to abort
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   514
 */
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   515
void evsql_query_abort (struct evsql_trans *trans, struct evsql_query *query);
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   516
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   517
/**
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   518
 * Print out a textual dump of the given \a sql query and \a params using DEBUG
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   519
 *
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   520
 * @param sql the SQL query command
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   521
 * @param params the list of parameter types and values
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   522
 */
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   523
void evsql_query_debug (const char *sql, const struct evsql_query_params *params);
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   524
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   525
// @}
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   526
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   527
/**
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   528
 * Transaction API
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   529
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   530
 * @defgroup evsql_trans_* Transaction interface
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   531
 * @see evsql.h
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   532
 * @{
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   533
 */
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   534
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   535
/**
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   536
 * Create a new transaction.
28
e944453ca924 split off dbfs components into a separate dir, improve dirop docs, error handling, etc
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   537
 *
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   538
 * A transaction will be allocated its own connection, and the "BEGIN TRANSACTION ..." query will be sent (use the
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   539
 * \a type argument to specify this). 
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   540
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   541
 * Once the transaction has been opened, the given \a ready_fn will be triggered, and the transaction can then
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   542
 * be used (see \ref evsql_query_).
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   543
 *
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   544
 * If, at any point, the transaction-connection fails, any pending query will be forgotten (i.e. the query callback
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   545
 * will NOT be called), and the given \a error_fn will be called. Note that this includes some, but not all,
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   546
 * cases where \ref evsql_query_ returns an error.
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   547
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   548
 * Once you are done with the transaction, call either evsql_trans_commit() or evsql_trans_abort().
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   549
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   550
 * @param evsql the context handle from \ref evsql_new_
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   551
 * @param type the type of transaction to create
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   552
 * @param error_fn the evsql_trans_error_cb() to call if this transaction fails
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   553
 * @param ready_fn the evsql_trans_ready_cb() to call once this transaction is ready for use
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   554
 * @param done_fn the evsql_trans_done_cb() to call once this transaction has been commmited
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   555
 * @param cb_arg the void* to pass to the above
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   556
 * @return the evsql_trans handle for use with other functions
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   557
 */
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   558
struct evsql_trans *evsql_trans (struct evsql *evsql, enum evsql_trans_type type, 
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   559
    evsql_trans_error_cb error_fn, 
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   560
    evsql_trans_ready_cb ready_fn, 
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   561
    evsql_trans_done_cb done_fn, 
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   562
    void *cb_arg
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   563
);
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   564
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   565
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   566
 * Commit a transaction using "COMMIT TRANSACTION".
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   567
 *
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   568
 * The transaction must be idle, just like for evsql_query. Once the transaction has been commited, the transaction's
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   569
 * \a done_fn will be called, after which the transaction must not be used anymore.
28
e944453ca924 split off dbfs components into a separate dir, improve dirop docs, error handling, etc
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   570
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   571
 * You cannot abort a COMMIT, calling trans_abort() on trans after a succesful trans_commit is an error.
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   572
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   573
 * Note that \a done_fn will never be called directly, always indirectly via the event loop.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   574
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   575
 * @param trans the transaction handle from evsql_trans to commit
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   576
 * @see evsql_trans
26
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   577
 */
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   578
int evsql_trans_commit (struct evsql_trans *trans);
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   579
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   580
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   581
 * Abort a transaction, using "ROLLBACK TRANSACTION".
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   582
 *
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   583
 * No more transaction callbacks will be called. If there was a query running, it will be aborted, and the transaction
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   584
 * then rollback'd.
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   585
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   586
 * You cannot abort a COMMIT, calling trans_abort on \a trans after a call to trans_commit is an error.
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   587
 * 
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   588
 * Do not call evsql_trans_abort from within evsql_trans_error_cb()!
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   589
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   590
 * @param trans the transaction from evsql_trans to abort
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   591
 * @see evsql_trans
26
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   592
 */
27
461be4cd34a3 working open/read/close -dir
Tero Marttila <terom@fixme.fi>
parents: 26
diff changeset
   593
void evsql_trans_abort (struct evsql_trans *trans);
26
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   594
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   595
/** 
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   596
 * Retrieve the transaction-specific error message from the underlying engine.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   597
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   598
 * Intended to be called from evsql_trans_error_cb()
26
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   599
 */
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   600
const char *evsql_trans_error (struct evsql_trans *trans);
61668c57f4bb preliminary *dir implementation
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
   601
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   602
// @}
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   603
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   604
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   605
 * Parameter-building functions.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   606
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   607
 * These manipulate the value of the given parameter index.
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   608
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   609
 * @defgroup evsql_param_* Parameter interface
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   610
 * @see evsql.h
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   611
 * @{
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   612
 */
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   613
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   614
/**
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   615
 * Sets the value of the parameter at the given index
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   616
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   617
 * @param params the evsql_query_params struct
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   618
 * @param param the parameter index
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   619
 * @param ptr pointer to the binary data
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   620
 * @param len size of the binary data in bytes
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   621
 * @return zero on success, <0 on error
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   622
 */
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   623
int evsql_param_binary (struct evsql_query_params *params, size_t param, const char *ptr, size_t len);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   624
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   625
/** @see evsql_param_binary */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   626
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
   627
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   628
/** @see evsql_param_binary */
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   629
int evsql_param_uint16 (struct evsql_query_params *params, size_t param, uint16_t uval);
23
1dee73ae4ad0 evsql_query_params compiles...
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
   630
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   631
/** @see evsql_param_binary */
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   632
int evsql_param_uint32 (struct evsql_query_params *params, size_t param, uint32_t uval);
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   633
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   634
/**
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   635
 * Sets the given parameter to NULL
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   636
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   637
 * @param params the evsql_query_params struct
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   638
 * @param param the parameter index
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   639
 * @return zero on success, <0 on error
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   640
 */
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   641
int evsql_param_null (struct evsql_query_params *params, size_t param);
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   642
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   643
/**
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   644
 * Clears all the parameter values (sets them to NULL)
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   645
 *
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   646
 * @param params the evsql_query_params struct
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   647
 * @return zero on success, <0 on error
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   648
 */
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   649
int evsql_params_clear (struct evsql_query_params *params);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   650
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   651
// @}
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   652
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   653
/**
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   654
 * Result-handling functions
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   655
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   656
 * @defgroup evsql_result_* Result interface
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   657
 * @see evsql.h
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   658
 * @see evsql_result
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   659
 * @{
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   660
 */
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   661
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   662
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   663
 * Check the result for errors. Intended for use with non-data queries, i.e. CREATE, etc.
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   664
 *
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   665
 * Returns zero if the query was OK, err otherwise. EIO indicates an SQL error, the error message can be retrived
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   666
 * using evsql_result_error.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   667
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   668
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   669
 * @return zero on success, EIO on SQL error, positive error code otherwise
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   670
 */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   671
evsql_err_t evsql_result_check (struct evsql_result *res);
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   672
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   673
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   674
 * The iterator-based interface results interface.
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   675
 *
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   676
 * Define an evsql_result_info struct that describes the columns returned by the query, and call evsql_result_begin on
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   677
 * the evsql_result. This verifies the query result, and then prepares it for iteration using evsql_result_next.
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   678
 *
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   679
 * Call evsql_result_end once you've stopped iteration.
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   680
 *
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   681
 * Returns zero if the evsql_result is ready for iteration, err otherwise. EIO indicates an SQL error, the error
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   682
 * message can be retreived using evsql_result_error. The result must be released in both cases.
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   683
 *
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   684
 * Note: currently the iterator state is simply stored in evsql_result, so only one iterator at a time per evsql_result.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   685
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   686
 * @param info the metadata to use to handle the result row columns
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   687
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   688
 * @return zero on success, +err on error
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   689
 */
63
76a782abddca replace use of err_t in evsql.h with evsql_err_t, fix some warnings with EVSQL_TYPE initializer, and update .hgignore for doxygen output
Tero Marttila <terom@fixme.fi>
parents: 59
diff changeset
   690
evsql_err_t evsql_result_begin (struct evsql_result_info *info, struct evsql_result *res);
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   691
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   692
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   693
 * Reads the next result row from the result prepared using evsql_result_begin. Stores the field values into to given
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   694
 * pointer arguments based on the evsql_result_info given to evsql_result_begin.
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   695
 *
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   696
 * If a field is NULL, and the result_info's evsql_item_type has flags.null_ok set, the given pointer is left
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   697
 * untouched, otherwise, an error is returned.
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   698
 *
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   699
 * @param res the result handle previous prepared using evsql_result_begin
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   700
 * @param ... a set of pointers corresponding to the evsql_result_info specified using evsql_result_begin
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   701
 * @return >0 when a row was read, zero when there are no more rows left, and -err on error
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   702
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   703
int evsql_result_next (struct evsql_result *res, ...);
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   704
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   705
/**
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   706
 * Ends the result iteration, releasing any associated resources and the result itself.
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   707
 *
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   708
 * The result should not be iterated or accessed anymore.
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   709
 *
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   710
 * Note: this does the same thing as evsql_result_free, and works regardless of evsql_result_begin returning
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   711
 * succesfully or not.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   712
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   713
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   714
 * @see evsql_result_free
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   715
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   716
void evsql_result_end (struct evsql_result *res);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   717
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   718
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   719
 * Get the error message associated with the result, intended for use after evsql_result_check/begin return an error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   720
 * code.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   721
 * 
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   722
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   723
 * @return a char* containing the NUL-terminated error string. Valid until evsql_result_free is called.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   724
 */
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   725
const char *evsql_result_error (const struct evsql_result *res);
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   726
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   727
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   728
 * Get the number of data rows returned by the query
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   729
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   730
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   731
 * @return the number of rows, >= 0
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   732
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   733
size_t evsql_result_rows (const struct evsql_result *res);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   734
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   735
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   736
 * Get the number of columns in the data results from the query
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   737
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   738
 * @param res the result handle passed to evsql_query_cb()
55
0b92d553400a evsql: more improvements
Tero Marttila <terom@fixme.fi>
parents: 54
diff changeset
   739
 * @return the number of columns, presumeably zero if there were no results
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   740
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   741
size_t evsql_result_cols (const struct evsql_result *res);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   742
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   743
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   744
 * Get the number of rows affected by an UPDATE/INSERT/etc query.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   745
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   746
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   747
 * @return the number of rows affected, >= 0
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   748
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   749
size_t evsql_result_affected (const struct evsql_result *res);
34
460f995d3769 fix readdir to use ORDER BY, rename
Tero Marttila <terom@fixme.fi>
parents: 31
diff changeset
   750
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   751
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   752
 * Fetch the raw binary value for the given field, returning it via ptr/size.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   753
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   754
 * The given row/col must be within bounds as returned by evsql_result_rows/cols.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   755
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   756
 * *ptr will point to *size bytes of read-only memory allocated internally.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   757
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   758
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   759
 * @param row the row index to access
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   760
 * @param col the column index to access
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   761
 * @param ptr where to store a pointer to the read-only field data, free'd upon evsql_result_free
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   762
 * @param size updated to the size of the field value pointed to by ptr
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   763
 * @param nullok when true and the field value is NULL, *ptr and *size are not modified, otherwise NULL means an error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   764
 * @return zero on success, <0 on error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   765
 */
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   766
int evsql_result_binary (const struct evsql_result *res, size_t row, size_t col, const char **ptr, size_t *size, bool nullok);
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   767
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   768
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   769
 * Fetch the textual value of the given field, returning it via ptr.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   770
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   771
 * The given row/col must be within bounds as returned by evsql_result_rows/cols.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   772
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   773
 * *ptr will point to a NUL-terminated string allocated internally.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   774
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   775
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   776
 * @param row the row index to access
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   777
 * @param col the column index to access
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   778
 * @param ptr where to store a pointer to the read-only field data, free'd upon evsql_result_free
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   779
 * @param nullok when true and the field value is NULL, *ptr and *size are not modified, otherwise NULL means an error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   780
 * @return zero on success, <0 on error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   781
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   782
int evsql_result_string (const struct evsql_result *res, size_t row, size_t col, const char **ptr, int nullok);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   783
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   784
/**
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   785
 * Use evsql_result_binary to read a binary field value, and then convert it using ntoh[slq], storing the value in
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   786
 * *val.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   787
 *
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   788
 * The given row/col must be within bounds as returned by evsql_result_rows/cols.
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   789
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   790
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   791
 * @param row the row index to access
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   792
 * @param col the column index to access
52
f5037572c326 improved evsql docs and added a doxygen config file
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   793
 * @param uval where to store the decoded value
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   794
 * @param nullok when true and the field value is NULL, *ptr and *size are not modified, otherwise NULL means an error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   795
 * @return zero on success, <0 on error
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   796
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   797
int evsql_result_uint16 (const struct evsql_result *res, size_t row, size_t col, uint16_t *uval, int nullok);
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   798
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   799
/** @see evsql_result_uint16 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   800
int evsql_result_uint32 (const struct evsql_result *res, size_t row, size_t col, uint32_t *uval, int nullok);
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   801
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   802
/** @see evsql_result_uint16 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   803
int evsql_result_uint64 (const struct evsql_result *res, size_t row, size_t col, uint64_t *uval, int nullok);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   804
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   805
/**
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   806
 * Every result handle passed to evsql_query_cb() MUST be released by the user, using this function.
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   807
 *
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 53
diff changeset
   808
 * @param res the result handle passed to evsql_query_cb()
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   809
 */
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
   810
void evsql_result_free (struct evsql_result *res);
24
82cfdb6680d1 working dbfs.lookup
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
   811
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   812
// @}
21
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   813
e5da1d428e3e new evsql for queueing SQL queries
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   814
#endif /* EVSQL_H */