From 0f443ef707503a6c6408db7e08b05c96d5f3963d Mon Sep 17 00:00:00 2001 From: Sergey Pershin Date: Wed, 17 Apr 2024 14:53:20 -0700 Subject: [PATCH] [client] Add support for SphericalGeography type in the client. Currently in the Presto client the following query would immediately yield "" error. SELECT TO_SPHERICAL_GEOGRAPHY(ST_POINT(-71.138715, 42.337546)); This PR fixes it by adding the SphericalGeography type to the FixJsonDataUtils::fixValue(). --- .../main/java/com/facebook/presto/client/FixJsonDataUtils.java | 2 ++ .../java/com/facebook/presto/client/TestFixJsonDataUtils.java | 1 + .../java/com/facebook/presto/common/type/StandardTypes.java | 1 + 3 files changed, 4 insertions(+) diff --git a/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java b/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java index 08ab05f8df53..25e4742f696a 100644 --- a/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java +++ b/presto-client/src/main/java/com/facebook/presto/client/FixJsonDataUtils.java @@ -49,6 +49,7 @@ import static com.facebook.presto.common.type.StandardTypes.REAL; import static com.facebook.presto.common.type.StandardTypes.ROW; import static com.facebook.presto.common.type.StandardTypes.SMALLINT; +import static com.facebook.presto.common.type.StandardTypes.SPHERICAL_GEOGRAPHY; import static com.facebook.presto.common.type.StandardTypes.TIME; import static com.facebook.presto.common.type.StandardTypes.TIMESTAMP; import static com.facebook.presto.common.type.StandardTypes.TIMESTAMP_WITH_TIME_ZONE; @@ -218,6 +219,7 @@ else if (value.getClass() == String.class) { case DECIMAL: case CHAR: case GEOMETRY: + case SPHERICAL_GEOGRAPHY: case UUID: return String.class.cast(value); case BING_TILE: diff --git a/presto-client/src/test/java/com/facebook/presto/client/TestFixJsonDataUtils.java b/presto-client/src/test/java/com/facebook/presto/client/TestFixJsonDataUtils.java index d4629bba5d8d..6a7a493a27ac 100644 --- a/presto-client/src/test/java/com/facebook/presto/client/TestFixJsonDataUtils.java +++ b/presto-client/src/test/java/com/facebook/presto/client/TestFixJsonDataUtils.java @@ -66,6 +66,7 @@ private void testFixDataWithTypePrefix(String typePrefix) assertQueryResult(typePrefix + "ipaddress", "1.2.3.4", "1.2.3.4"); assertQueryResult(typePrefix + "ipprefix", "1.2.3.4/32", "1.2.3.4/32"); assertQueryResult(typePrefix + "Geometry", "POINT (1.2 3.4)", "POINT (1.2 3.4)"); + assertQueryResult(typePrefix + "SphericalGeography", "POINT (1.2 3.4)", "POINT (1.2 3.4)"); assertQueryResult(typePrefix + "map(BingTile,bigint)", ImmutableMap.of("BingTile{x=1, y=2, zoom_level=10}", 1), ImmutableMap.of("BingTile{x=1, y=2, zoom_level=10}", 1L)); // test nested map structure assertQueryResult(typePrefix + "map(map(bigint,bigint),bigint)", ImmutableMap.of("{\n \"1\" : \"2\",\n \"3\" : \"4\",\n \"5\" : \"6\"\n}", "3"), ImmutableMap.of(ImmutableMap.of(1L, 2L, 3L, 4L, 5L, 6L), 3L)); diff --git a/presto-common/src/main/java/com/facebook/presto/common/type/StandardTypes.java b/presto-common/src/main/java/com/facebook/presto/common/type/StandardTypes.java index cb94b70a4849..e00e2241a76d 100644 --- a/presto-common/src/main/java/com/facebook/presto/common/type/StandardTypes.java +++ b/presto-common/src/main/java/com/facebook/presto/common/type/StandardTypes.java @@ -52,6 +52,7 @@ public final class StandardTypes public static final String IPADDRESS = "ipaddress"; public static final String IPPREFIX = "ipprefix"; public static final String GEOMETRY = "Geometry"; + public static final String SPHERICAL_GEOGRAPHY = "SphericalGeography"; public static final String BING_TILE = "BingTile"; public static final String BIGINT_ENUM = "BigintEnum"; public static final String VARCHAR_ENUM = "VarcharEnum";