}
*key_r = str_c(ctx->key);
- if ((ctx->flags & DICT_ITERATE_FLAG_NO_VALUE) != 0)
- *value_r = "";
- else {
+ if ((ctx->flags & DICT_ITERATE_FLAG_NO_VALUE) == 0) {
*value_r = sql_dict_result_unescape_value(ctx->map,
pool_datastack_create(), ctx->result);
}
path = t_strconcat(iter->paths[iter->path_idx], *key_r, NULL);
if ((iter->flags & DICT_ITERATE_FLAG_NO_VALUE) != 0) {
*key_r = path;
- *value_r = NULL;
return TRUE;
}
p_clear(iter->value_pool);
passed as parameter, e.g. it can be dict-fail when
iteration is not supported. */
ctx->event = event_create(dict->event);
+ ctx->flags = flags;
event_add_str(ctx->event, "key", paths[0]);
event_set_name(ctx->event, "dict_iteration_started");
}
if (!ctx->dict->v.iterate(ctx, key_r, value_r))
return FALSE;
+ if ((ctx->flags & DICT_ITERATE_FLAG_NO_VALUE) != 0) {
+ /* always return value as NULL to be consistent across
+ drivers */
+ *value_r = NULL;
+ }
ctx->row_count++;
return TRUE;
}