560 bool skipNested =
false;
561 JsonbIteratorToken
r;
564 if (!JB_ROOT_IS_OBJECT(jb))
567 it = JsonbIteratorInit(&jb->root);
569 while ((
r = JsonbIteratorNext(&it, &v, skipNested)) != WJB_DONE)
573 if (
r == WJB_KEY && v.type != jbvNull)
579 char *key = palloc(v.val.string.len + 1);
580 memcpy(key, v.val.string.val, v.val.string.len);
581 key[v.val.string.len] =
'\0';
585 r = JsonbIteratorNext(&it, &v, skipNested);
587 if (v.type == jbvString)
589 char *
value = palloc(v.val.string.len + 1);
590 memcpy(
value, v.val.string.val, v.val.string.len);
591 value[v.val.string.len] =
'\0';
594 else if (v.type == jbvBool)
598 sizeof(protobuf_c_boolean),
600 VECTOR_TILE__TILE__VALUE__TEST_ONEOF_BOOL_VALUE);
602 else if (v.type == jbvNumeric)
607 str = DatumGetCString(DirectFunctionCall1(numeric_out,
608 PointerGetDatum(v.val.numeric)));
609 d = strtod(
str, NULL);
610 l = strtol(
str, NULL, 10);
612 if (fabs(d - (
double)l) > FLT_EPSILON)
618 VECTOR_TILE__TILE__VALUE__TEST_ONEOF_DOUBLE_VALUE);
static uint32_t get_key_index_with_size(mvt_agg_context *ctx, const char *name, size_t size)
#define MVT_PARSE_INT_VALUE(value)
static uint32_t add_key(mvt_agg_context *ctx, char *name)
#define MVT_PARSE_VALUE(hash, newvalue, size, pfvaluefield, pftype)
static void add_value_as_string(mvt_agg_context *ctx, struct feature_builder *feature, char *value, uint32_t k)