src/evsql/result.c
branchnew-evsql
changeset 51 c65d0f4c3bff
parent 46 75cecfc4603b
equal deleted inserted replaced
50:881de320e483 51:c65d0f4c3bff
    63         default:
    63         default:
    64             FATAL("res->evsql->type");
    64             FATAL("res->evsql->type");
    65     }
    65     }
    66 }
    66 }
    67 
    67 
    68 int evsql_result_field (const struct evsql_result *res, size_t row, size_t col, char ** const ptr, size_t *size) {
    68 int evsql_result_field (const struct evsql_result *res, size_t row, size_t col, const char **ptr, size_t *size) {
    69     *ptr = NULL;
    69     *ptr = NULL;
    70 
    70 
    71     switch (res->evsql->type) {
    71     switch (res->evsql->type) {
    72         case EVSQL_EVPQ:
    72         case EVSQL_EVPQ:
    73             if (PQfformat(res->result.pq, col) != 1)
    73             if (PQfformat(res->result.pq, col) != 1)
   145     
   145     
   146     // varargs
   146     // varargs
   147     va_start(vargs, res);
   147     va_start(vargs, res);
   148 
   148 
   149     for (col = res->info->columns, col_idx = 0; col->type; col++, col_idx++) {
   149     for (col = res->info->columns, col_idx = 0; col->type; col++, col_idx++) {
   150         char *value = NULL;
   150         const char *value = NULL;
   151         size_t length = 0;
   151         size_t length = 0;
   152         
   152         
   153         // check for NULLs, then try and get the field value
   153         // check for NULLs, then try and get the field value
   154         if (evsql_result_null(res, row_idx, col_idx)) {
   154         if (evsql_result_null(res, row_idx, col_idx)) {
   155             if (!col->flags.null_ok)
   155             if (!col->flags.null_ok)
   170                     item_ptr->len = length;
   170                     item_ptr->len = length;
   171                 }
   171                 }
   172             } break;
   172             } break;
   173 
   173 
   174             case EVSQL_TYPE_STRING: {
   174             case EVSQL_TYPE_STRING: {
   175                 char **str_ptr = va_arg(vargs, char **);
   175                 const char **str_ptr = va_arg(vargs, const char **);
   176 
   176 
   177                 if (value) {
   177                 if (value) {
   178                     *str_ptr = value;
   178                     *str_ptr = value;
   179                 }
   179                 }
   180 
   180