src/evsql/util.c
author Tero Marttila <terom@fixme.fi>
Sat, 13 Dec 2008 20:32:17 +0200
branchnew-evsql
changeset 54 7dc8ff496da1
parent 51 c65d0f4c3bff
permissions -rw-r--r--
evsql documentation further improved
34
460f995d3769 fix readdir to use ORDER BY, rename
Tero Marttila <terom@fixme.fi>
parents: 31
diff changeset
     1
#include <stdlib.h>
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#include <assert.h>
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
#include "evsql.h"
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     5
#include "../lib/log.h"
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
#include "../lib/misc.h"
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     8
#define _PARAM_TYPE_CASE(typenam) case EVSQL_TYPE_ ## typenam: return #typenam
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
     9
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    10
#define _PARAM_VAL_BUF_MAX 120
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    11
#define _PARAM_VAL_CASE(typenam, ...) case EVSQL_TYPE_ ## typenam: if (item->bytes) ret = snprintf(buf, _PARAM_VAL_BUF_MAX, __VA_ARGS__); else return "(null)"; break
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    12
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    13
const char *evsql_item_type (const struct evsql_item_info *item_info) {
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    14
    switch (item_info->type) {
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    15
        _PARAM_TYPE_CASE (INVALID   );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    16
        _PARAM_TYPE_CASE (NULL_     );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    17
        _PARAM_TYPE_CASE (BINARY    );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    18
        _PARAM_TYPE_CASE (STRING    );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    19
        _PARAM_TYPE_CASE (UINT16    );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    20
        _PARAM_TYPE_CASE (UINT32    );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    21
        _PARAM_TYPE_CASE (UINT64    );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    22
        default: return "???";
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    23
    }
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    24
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    25
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    26
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    27
static const char *evsql_item_val (const struct evsql_item *item) {
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    28
    static char buf[_PARAM_VAL_BUF_MAX];
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    29
    int ret;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    30
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    31
    switch (item->info.type) {
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    32
        _PARAM_VAL_CASE (INVALID,   "???"                               );
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    33
        _PARAM_VAL_CASE (NULL_,     "(null)"                            );
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    34
        _PARAM_VAL_CASE (BINARY,    "%zu:%s",   item->length, "... "    );
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    35
        _PARAM_VAL_CASE (STRING,    "%s",       item->bytes             );
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    36
        _PARAM_VAL_CASE (UINT16,    "%hu",      (unsigned short int)     ntohs(item->value.uint16)  );
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    37
        _PARAM_VAL_CASE (UINT32,    "%lu",      (unsigned long int)      ntohl(item->value.uint32)  );
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    38
        _PARAM_VAL_CASE (UINT64,    "%llu",     (unsigned long long int) ntohq(item->value.uint64)  );
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    39
        default: return "???";
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    40
    }
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    41
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    42
    return buf;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    43
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    44
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    45
int evsql_params_clear (struct evsql_query_params *params) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    46
    struct evsql_item *param;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    47
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    48
    for (param = params->list; param->info.type; param++) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    49
        param->bytes = NULL;
54
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    50
        param->flags.has_value = 0;
7dc8ff496da1 evsql documentation further improved
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    51
    }
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    52
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    53
    return 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    54
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    55
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    56
int evsql_param_null (struct evsql_query_params *params, size_t param) {
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    57
    struct evsql_item *p = &params->list[param];
38
1fd4da071575 rework/hack parent to be a FOREIGN KEY (add a dir_ino col), implement dbfs_link
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    58
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    59
    p->bytes = NULL;
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    60
    p->flags.has_value = 0;
38
1fd4da071575 rework/hack parent to be a FOREIGN KEY (add a dir_ino col), implement dbfs_link
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    61
1fd4da071575 rework/hack parent to be a FOREIGN KEY (add a dir_ino col), implement dbfs_link
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    62
    return 0;
1fd4da071575 rework/hack parent to be a FOREIGN KEY (add a dir_ino col), implement dbfs_link
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    63
}
1fd4da071575 rework/hack parent to be a FOREIGN KEY (add a dir_ino col), implement dbfs_link
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    64
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    65
int evsql_param_binary (struct evsql_query_params *params, size_t param, const char *ptr, size_t len) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    66
    struct evsql_item *p = &params->list[param];
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    67
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    68
    assert(p->info.type == EVSQL_TYPE_BINARY);
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    69
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    70
    p->bytes = ptr;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    71
    p->length = len;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    72
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    73
    return 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    74
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    75
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
int evsql_param_string (struct evsql_query_params *params, size_t param, const char *ptr) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    77
    struct evsql_item *p = &params->list[param];
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    79
    assert(p->info.type == EVSQL_TYPE_STRING);
48
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    80
    
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    81
    // XXX: hmm...
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    82
    p->info.format = EVSQL_FMT_TEXT;
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    84
    p->bytes = ptr;
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
    p->length = 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
    return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    90
int evsql_param_uint16 (struct evsql_query_params *params, size_t param, uint16_t uval) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    91
    struct evsql_item *p = &params->list[param];
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    92
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    93
    assert(p->info.type == EVSQL_TYPE_UINT16);
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    94
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    95
    p->value.uint16 = htons(uval);
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    96
    p->length = sizeof(uval);
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    97
    p->flags.has_value = 1;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    98
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    99
    return 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   100
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   101
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
int evsql_param_uint32 (struct evsql_query_params *params, size_t param, uint32_t uval) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   103
    struct evsql_item *p = &params->list[param];
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   105
    assert(p->info.type == EVSQL_TYPE_UINT32);
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   107
    p->value.uint32 = htonl(uval);
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
    p->length = sizeof(uval);
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   109
    p->flags.has_value = 1;
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
    return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   114
void evsql_query_debug (const char *sql, const struct evsql_query_params *params) {
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   115
    const struct evsql_item *param;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   116
    size_t param_count = 0, idx = 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   117
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   118
    // count the params
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   119
    for (param = params->list; param->info.type; param++) 
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   120
        param_count++;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   121
    
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   122
    DEBUG("sql:     %s", sql);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   123
    DEBUG("params:  %zu", param_count);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   124
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   125
    for (param = params->list; param->info.type; param++) {
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   126
        DEBUG("\t%2zu : %8s = %s", ++idx, evsql_item_type(&param->info), evsql_item_val(param));
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   127
    }
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   128
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   129
51
c65d0f4c3bff evsql: documentation improvements, fix consts, use bools
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
   130
int evsql_result_binary (const struct evsql_result *res, size_t row, size_t col, const char **ptr, size_t *size, bool nullok) {
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
    *ptr = NULL;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
    switch (res->evsql->type) {
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
        case EVSQL_EVPQ:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   135
            if (PQgetisnull(res->result.pq, row, col)) {
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   136
                if (nullok)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
                    return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
                else
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
                    ERROR("[%zu:%zu] field is null", row, col);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   140
            }
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   141
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
            if (PQfformat(res->result.pq, col) != 1)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   143
                ERROR("[%zu:%zu] PQfformat is not binary: %d", row, col, PQfformat(res->result.pq, col));
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
    
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   145
            *size = PQgetlength(res->result.pq, row, col);
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   146
            *ptr  = PQgetvalue(res->result.pq, row, col);
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
            return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
        default:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   151
            FATAL("res->evsql->type");
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
    }
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
error:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
    return -1;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   158
int evsql_result_binlen (const struct evsql_result *res, size_t row, size_t col, const char **ptr, size_t size, int nullok) {
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   159
    size_t real_size = 0;
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   160
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   161
    if (evsql_result_binary(res, row, col, ptr, &real_size, nullok))
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   162
        goto error;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   163
    
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   164
    if (*ptr == NULL) {
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   165
        assert(nullok);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   166
        return 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   167
    }
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   168
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   169
    if (size && real_size != size)
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   170
        ERROR("[%zu:%zu] field size mismatch: %zu -> %zu", row, col, size, real_size);
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   171
     
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   172
    return 0;
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   173
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   174
error:
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   175
    return -1;
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   176
}
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   177
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   178
int evsql_result_string (const struct evsql_result *res, size_t row, size_t col, const char **ptr, int nullok) {
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   179
    size_t real_size;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   180
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   181
    if (evsql_result_binary(res, row, col, ptr, &real_size, nullok))
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   182
        goto error;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   183
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   184
    assert(real_size == strlen(*ptr));
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   185
    
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   186
    return 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   187
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   188
error:
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   189
    return -1;
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   190
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   192
int evsql_result_uint16 (const struct evsql_result *res, size_t row, size_t col, uint16_t *uval, int nullok) {
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   193
    const char *data;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   194
    int16_t sval;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   195
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   196
    if (evsql_result_binlen(res, row, col, &data, sizeof(*uval), nullok))
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   197
        goto error;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   198
    
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   199
    if (!data)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   200
        return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   201
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   202
    sval = ntohs(*((int16_t *) data));
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   203
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   204
    if (sval < 0)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   205
        ERROR("negative value for unsigned: %d", sval);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   206
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   207
    *uval = sval;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   208
    
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   209
    return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   210
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   211
error:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   212
    return nullok ? 0 : -1;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   213
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   214
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   215
int evsql_result_uint32 (const struct evsql_result *res, size_t row, size_t col, uint32_t *uval, int nullok) {
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   216
    const char *data;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   217
    int32_t sval;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   218
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   219
    if (evsql_result_binlen(res, row, col, &data, sizeof(*uval), nullok))
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   220
        goto error;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   221
    
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   222
    if (!data)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   223
        return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   224
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   225
    sval = ntohl(*(int32_t *) data);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   226
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   227
    if (sval < 0)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   228
        ERROR("negative value for unsigned: %d", sval);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   229
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   230
    *uval = sval;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   231
    
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   232
    return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   233
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   234
error:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   235
    return nullok ? 0 : -1;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   236
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   237
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   238
int evsql_result_uint64 (const struct evsql_result *res, size_t row, size_t col, uint64_t *uval, int nullok) {
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   239
    const char *data;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   240
    int64_t sval;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   241
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   242
    if (evsql_result_binlen(res, row, col, &data, sizeof(*uval), nullok))
29
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   243
        goto error;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   244
    
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   245
    if (!data)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   246
        return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   247
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   248
    sval = ntohq(*(int64_t *) data);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   249
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   250
    if (sval < 0)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   251
        ERROR("negative value for unsigned: %ld", sval);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   252
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   253
    *uval = sval;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   254
    
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   255
    return 0;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   256
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   257
error:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   258
    return nullok ? 0 : -1;
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   259
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   260
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   261
const char *evsql_conn_error (struct evsql_conn *conn) {
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   262
    switch (conn->evsql->type) {
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   263
        case EVSQL_EVPQ:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   264
            if (!conn->engine.evpq)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   265
                return "unknown error (no conn)";
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   266
            
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   267
            return evpq_error_message(conn->engine.evpq);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   268
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   269
        default:
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   270
            FATAL("res->evsql->type");
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   271
    }
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   272
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   273
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   274
const char *evsql_trans_error (struct evsql_trans *trans) {
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   275
    if (trans->conn == NULL)
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   276
        return "unknown error (no trans conn)";
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   277
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   278
    return evsql_conn_error(trans->conn);
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   279
}
5de62ca9a5aa reorganize evsql into a separate dir, rename dbfs slightly, and split dbfs_op out from dirop (in prep for fileop)
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   280