};
struct mvt_kv_string_value {
- char *string_value;
+ const char *string_value;
uint32_t id;
UT_hash_handle hh;
};
char *value = OidOutputFunctionCall(foutoid, datum);
POSTGIS_DEBUGF(4, "parse_value_as_string value: %s", value);
size_t size = strlen(value);
- HASH_FIND(hh, ctx->string_values_hash, &value, size, kv);
+ HASH_FIND(hh, ctx->string_values_hash, value, size, kv);
if (!kv) {
POSTGIS_DEBUG(4, "parse_value_as_string value not found");
kv = palloc(sizeof(*kv));
POSTGIS_DEBUGF(4, "parse_value_as_string new hash key: %d", ctx->values_hash_i);
kv->id = ctx->values_hash_i++;
kv->string_value = value;
- HASH_ADD(hh, ctx->string_values_hash, string_value, size, kv);
+ HASH_ADD_KEYPTR(hh, ctx->string_values_hash, kv->string_value, size, kv);
}
tags[c*2] = k - 1;
tags[c*2+1] = kv->id;
double_values_hash, double_value,
DatumGetFloat8, sizeof(double));
break;
- case TEXTOID:
- MVT_PARSE_DATUM(char *, mvt_kv_string_value,
- string_values_hash, string_value,
- TextDatumGetCString, strlen(value));
- break;
default:
parse_value_as_string(ctx, typoid, datum, tags, c, k);
break;
UNION
SELECT 2 AS c1, 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 'TA5', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT
+SELECT 'TA5', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT
ST_AsMVTGeom(ST_GeomFromText('POINT(25 17)'),
ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom, 1 AS c1, 'abcd'::text AS c2) AS q;
SELECT 'TA6', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (SELECT 1 AS c1, -1 AS c2,
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 'TA7', encode(ST_AsMVT('test', 4096, 'geom', q), 'base64') FROM (
+ SELECT 'test' AS c1, ST_AsMVTGeom(ST_GeomFromText('POINT(25 17)'),
+ ST_MakeBox2D(ST_Point(0, 0), ST_Point(4096, 4096)), 4096, 0, false) AS geom
+ UNION
+ SELECT 'test' 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;
-- unsupported input
SELECT 'TU2';
SELECT encode(ST_AsMVT('test', 4096, 'geom', 1), 'base64');
SELECT 'TU3';
SELECT encode(ST_AsMVT('test', 4096, 'geom', q), 'base64')
- FROM (SELECT NULL::integer AS c1, NULL AS geom) AS q;
\ No newline at end of file
+ FROM (SELECT NULL::integer AS c1, NULL AS geom) AS q;