src/evsql/util.c
author Tero Marttila <terom@fixme.fi>
Sat, 29 Nov 2008 01:12:00 +0200
branchnew-evsql
changeset 48 8b019d191353
parent 45 424ce5ab82fd
child 51 c65d0f4c3bff
permissions -rw-r--r--
update dbfs code to work with new evsql
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
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    48
    for (param = params->list; param->info.type; param++) 
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    49
        param->bytes = NULL;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    50
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    51
    return 0;
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
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    54
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
    55
    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
    56
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    57
    p->bytes = NULL;
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    58
    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
    59
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
    60
    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
    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
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    63
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
    64
    struct evsql_item *p = &params->list[param];
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    65
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    66
    assert(p->info.type == EVSQL_TYPE_BINARY);
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
    p->bytes = ptr;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    69
    p->length = len;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    70
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    71
    return 0;
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
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
    74
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
    75
    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
    76
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    77
    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
    78
    
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    79
    // XXX: hmm...
8b019d191353 update dbfs code to work with new evsql
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    80
    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
    81
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    82
    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
    83
    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
    84
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
    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
    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
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    88
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
    89
    struct evsql_item *p = &params->list[param];
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    90
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    91
    assert(p->info.type == EVSQL_TYPE_UINT16);
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
    p->value.uint16 = htons(uval);
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    94
    p->length = sizeof(uval);
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    95
    p->flags.has_value = 1;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    96
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    97
    return 0;
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
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
   100
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
   101
    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
   102
    
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   103
    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
   104
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   105
    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
   106
    p->length = sizeof(uval);
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   107
    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
   108
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
   109
    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
   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
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   112
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
   113
    const struct evsql_item *param;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   114
    size_t param_count = 0, idx = 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   115
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   116
    // count the params
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   117
    for (param = params->list; param->info.type; param++) 
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   118
        param_count++;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   119
    
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   120
    DEBUG("sql:     %s", sql);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   121
    DEBUG("params:  %zu", param_count);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   122
45
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   123
    for (param = params->list; param->info.type; param++) {
424ce5ab82fd compiles + some basic evsql_test
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   124
        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
   125
    }
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   126
}
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   127
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   128
int evsql_result_binary (const struct evsql_result *res, size_t row, size_t col, const char **ptr, size_t *size, 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
   129
    *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
   130
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
    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
   132
        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
   133
            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
   134
                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
   135
                    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
   136
                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
   137
                    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
   138
            }
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
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
            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
   141
                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
   142
    
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   143
            *size = PQgetlength(res->result.pq, row, col);
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   144
            *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
   145
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
   146
            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
   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
        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
   149
            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
   150
    }
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
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
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
   153
    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
   154
}
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
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   156
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
   157
    size_t real_size = 0;
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   158
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   159
    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
   160
        goto error;
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   161
    
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   162
    if (*ptr == NULL) {
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   163
        assert(nullok);
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   164
        return 0;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   165
    }
30
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   166
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   167
    if (size && real_size != size)
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   168
        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
   169
     
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   170
    return 0;
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
error:
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   173
    return -1;
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   174
}
d8fabd347a8e working open+read+flush+release
Tero Marttila <terom@fixme.fi>
parents: 29
diff changeset
   175
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   176
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
   177
    size_t real_size;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   178
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   179
    if (evsql_result_binary(res, row, col, ptr, &real_size, nullok))
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   180
        goto error;
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   181
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   182
    assert(real_size == strlen(*ptr));
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
    return 0;
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
error:
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   187
    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
   188
}
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
   189
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   190
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
   191
    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
   192
    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
   193
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   194
    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
   195
        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
   196
    
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
    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
   198
        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
   199
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
    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
   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
    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
   203
        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
   204
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
    *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
   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
    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
   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
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
   210
    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
   211
}
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
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   213
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
   214
    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
   215
    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
   216
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   217
    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
   218
        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
   219
    
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
    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
   221
        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
   222
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
    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
   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
    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
   226
        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
   227
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
    *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
   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
    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
   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
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
   233
    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
   234
}
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
44
9e76ee9729b6 more work on the new evsql interface
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   236
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
   237
    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
   238
    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
   239
31
7804cd7b5cd5 write+setattr
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   240
    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
   241
        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
   242
    
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
    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
   244
        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
   245
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
    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
   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
    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
   249
        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
   250
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
    *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
   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
    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
   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
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
   256
    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
   257
}
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
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
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
   260
    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
   261
        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
   262
            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
   263
                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
   264
            
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 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
   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
        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
   268
            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
   269
    }
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
}
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
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
   273
    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
   274
        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
   275
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 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
   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