equal
deleted
inserted
replaced
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 |