diff --git a/README.md b/README.md index 6c0e1d6..560995f 100644 --- a/README.md +++ b/README.md @@ -104,9 +104,11 @@ SparkSession spark = SparkSession.builder().appName("mobilityspark").master("loc GeneratedSpatioTemporalUDFs.registerAll(spark); ``` -Temporal values, spans, span sets and sets travel as their MEOS WKB bytes, a binary column, and a -column of their hex-WKB text reads as well; geometries travel as WKT or EWKT text, and boxes, -circular buffers, network points and poses as their text form: +A value travels in the codec the MEOS catalog states for its type: temporal values, spans, span +sets, sets, boxes, circular buffers, network points and poses as their MEOS WKB bytes, a binary +column, read as well from their hex-WKB text and, for a type with a generic text reader such as a +box, from their text form; geometries travel as EWKT and are read from WKT or EWKT, and network +segments and JSON as their text form: ```sql -- accessors under their canonical MobilityDB SQL names diff --git a/src/test/java/org/mobilitydb/spark/GeneratedSurfaceTest.java b/src/test/java/org/mobilitydb/spark/GeneratedSurfaceTest.java index 10b7fbb..ed40468 100644 --- a/src/test/java/org/mobilitydb/spark/GeneratedSurfaceTest.java +++ b/src/test/java/org/mobilitydb/spark/GeneratedSurfaceTest.java @@ -283,6 +283,12 @@ void values_travel_as_wkb_and_hex_wkb_stays_readable() { assertTrue(t instanceof byte[], "a temporal travels as WKB, got " + t.getClass()); Object span = scalar("SELECT timeSpan(" + tint + ")"); assertTrue(span instanceof byte[], "a span travels as WKB, got " + span.getClass()); + // A box travels as its WKB bytes too, and is read from those bytes and from its text. + String box = "'STBOX X((1,1),(2,2))'"; + Object stbox = scalar("SELECT stbox_in(" + box + ")"); + assertTrue(stbox instanceof byte[], "a box travels as WKB, got " + stbox.getClass()); + assertEquals("STBOX X((1,1),(2,2))", scalar("SELECT stbox_out(stbox_in(" + box + "), 15)")); + assertEquals(Boolean.FALSE, scalar("SELECT hasZ(" + box + ")")); // The bytes and the hex-WKB text of one value answer alike. assertEquals(3, ((Number) scalar("SELECT numInstants(" + tint + ")")).intValue()); assertEquals(3, ((Number) scalar("SELECT numInstants('" + TINT_HEX + "')")).intValue());