#ifdef HAVE_LIBPROTOBUF
+#if POSTGIS_PGSQL_VERSION >= 94
+#include "utils/jsonb.h"
+#endif
+
#include "uthash.h"
#define FEATURES_CAPACITY_INITIAL 50
bool geom_name_found = false;
for (i = 0; i < natts; i++) {
Oid typoid = getBaseType(tupdesc->attrs[i]->atttypid);
+#if POSTGIS_PGSQL_VERSION >= 94
if (typoid == JSONBOID)
continue;
+#endif
char *tkey = tupdesc->attrs[i]->attname.data;
char *key = palloc(strlen(tkey) + 1);
strcpy(key, tkey);
add_value_as_string(ctx, value, tags, k);
}
+#if POSTGIS_PGSQL_VERSION >= 94
static uint32_t *parse_jsonb(struct mvt_agg_context *ctx, Jsonb *jb,
uint32_t *tags)
{
return tags;
}
+#endif
static void parse_values(struct mvt_agg_context *ctx)
{
Datum datum = GetAttributeByNum(ctx->row, i+1, &isnull);
Oid typoid = getBaseType(tupdesc->attrs[i]->atttypid);
k = get_key_index(ctx, key);
- if (k == -1 && typoid != JSONBOID)
- lwerror("parse_values: unexpectedly could not find parsed key name",
- key);
if (isnull) {
POSTGIS_DEBUG(3, "parse_values isnull detected");
continue;
}
+#if POSTGIS_PGSQL_VERSION >= 94
+ if (k == -1 && typoid != JSONBOID)
+#else
+ if (k == -1)
+#endif
+ lwerror("parse_values: unexpectedly could not find parsed key name",
+ key);
+#if POSTGIS_PGSQL_VERSION >= 94
if (typoid == JSONBOID) {
tags = parse_jsonb(ctx, DatumGetJsonb(datum), tags);
continue;
}
+#endif
switch (typoid) {
case BOOLOID:
MVT_PARSE_DATUM(protobuf_c_boolean, mvt_kv_bool_value,
#include "utils/array.h"
#include "utils/typcache.h"
#include "utils/lsyscache.h"
-#include "utils/jsonb.h"
#include "catalog/pg_type.h"
#include "executor/executor.h"
#include "access/htup_details.h"
uint32_t values_hash_i;
uint32_t keys_hash_i;
uint32_t c;
-} ;
+};
LWGEOM *mvt_geom(LWGEOM *geom, GBOX *bounds, uint32_t extent, uint32_t buffer,
bool clip_geom);
TESTS += \
mvt \
geobuf
+ifeq ($(shell expr $(POSTGIS_PGSQL_VERSION) ">=" 94),1)
+ TESTS += \
+ mvt_jsonb
+endif
endif
ifeq ($(HAVE_SFCGAL),yes)
UNION
SELECT 2::int AS c1, ST_AsMVTGeom(ST_GeomFromText('POINT(26 18)'),
ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom) AS q;
-SELECT 'TA9', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT '{"c1":1,"c2":"abcd"}'::jsonb,
- ST_AsMVTGeom(ST_GeomFromText('POINT(25 17)'),
- ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom) AS q;
-SELECT 'TA10', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT '{"c1":"abcd", "c2":"abcd"}'::jsonb,
- ST_AsMVTGeom(ST_GeomFromText('POINT(25 17)'),
- ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom) AS q;
-- unsupported input
SELECT 'TU2';
CW90aGVydGVzdCIGCgR0ZXN0KIAgeAI=
TA8|GkEKBHRlc3QSDBICAAAYASIECTLePxIMEgIAABgBIgQJNNw/EgwSAgABGAEiBAk03D8aAmMxIgIo
ASICKAIogCB4Ag==
-TA9|Gi8KBHRlc3QSDhIEAAABARgBIgQJMt4/GgJjMRoCYzIiAigBIgYKBGFiY2QogCB4Ag==
-TA10|GisKBHRlc3QSDhIEAAABABgBIgQJMt4/GgJjMRoCYzIiBgoEYWJjZCiAIHgC
TU2
ERROR: pgis_asmvt_transfn: parameter row cannot be other than a rowtype
TU3
--- /dev/null
+SELECT 'TA9', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT '{"c1":1,"c2":"abcd"}'::jsonb,
+ ST_AsMVTGeom(ST_GeomFromText('POINT(25 17)'),
+ ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom) AS q;
+SELECT 'TA10', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT '{"c1":"abcd", "c2":"abcd"}'::jsonb,
+ ST_AsMVTGeom(ST_GeomFromText('POINT(25 17)'),
+ ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom) AS q;
--- /dev/null
+TA9|Gi8KBHRlc3QSDhIEAAABARgBIgQJMt4/GgJjMRoCYzIiAigBIgYKBGFiY2QogCB4Ag==
+TA10|GisKBHRlc3QSDhIEAAABABgBIgQJMt4/GgJjMRoCYzIiBgoEYWJjZCiAIHgC