diff --git a/src/test/java/org/mobilitydb/spark/AggregatesCatalogTest.java b/src/test/java/org/mobilitydb/spark/AggregatesCatalogTest.java new file mode 100644 index 00000000..bba52063 --- /dev/null +++ b/src/test/java/org/mobilitydb/spark/AggregatesCatalogTest.java @@ -0,0 +1,909 @@ +/***************************************************************************** + * + * This MobilityDB code is provided under The PostgreSQL License. + * Copyright (c) 2020-2026, Université libre de Bruxelles and MobilityDB + * contributors + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose, without fee, and without a written + * agreement is hereby granted, provided that the above copyright notice and + * this paragraph and the following two paragraphs appear in all copies. + * + * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING + * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, + * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON + * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + *****************************************************************************/ + +package org.mobilitydb.spark; + +import functions.GeneratedFunctions; +import java.net.URISyntaxException; +import java.nio.file.Paths; +import java.util.stream.Stream; +import org.apache.spark.sql.SparkSession; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; +import org.mobilitydb.spark.sql.MobilitySparkSql; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Every aggregate overload the typed Spark SQL surface registers, over two rows of sample values, + * against the answer MobilityDB gives over the same rows in the time zone UTC; and the names it + * registers, the catalog's but for the raster aggregates, which #_catalog_aggregates of JMEOS's + * codegen_jvm.py leaves out. A value whose text carries a coordinate or a float is written with + * six decimals, as MobilityDuck's test/sql/aggregates_catalog.test writes it over the same rows. + */ +class AggregatesCatalogTest { + + private static SparkSession spark; + + @BeforeAll + static void init() throws URISyntaxException { + // The point cloud values name pcid 1, three dimensions of type double, which the document + // beside this test states, the schema MobilityDuck's test/sql/tpcpatch.test registers + GeneratedFunctions.meos_set_pointcloud_schemas_xml(Paths.get(AggregatesCatalogTest.class + .getResource("/pointcloud_schemas.xml").toURI()).toString()); + spark = SparkSession.builder().appName("aggregates-catalog").master("local[2]") + .config("spark.ui.enabled", "false") + .config("spark.sql.session.timeZone", "UTC") + .config("spark.sql.datetime.java8API.enabled", "true") + .getOrCreate(); + MobilitySparkSql.registerAll(spark); + } + + @AfterAll + static void stopSpark() { + if (spark != null) { + spark.stop(); + } + } + + private static String answer(String sql) { + return (String) spark.sql(sql).collectAsList().get(0).get(0); + } + + /** Each aggregate name of the catalog the surface registers, registered. */ + @TestFactory + Stream theNameIsRegistered() { + return Stream.of("appendInstantAgg", + "appendSequenceAgg", + "extent", + "mergeAgg", + "setUnionAgg", + "spanUnionAgg", + "spansetUnionAgg", + "tAndAgg", + "tAvg", + "tCentroid", + "tCount", + "tMaxAgg", + "tMinAgg", + "tOrAgg", + "tSum", + "tdensity", + "tnpoints", + "wAvgAgg", + "wCount", + "wMax", + "wMin", + "wSum") + .map(name -> DynamicTest.dynamicTest(name, () -> assertEquals(true, spark.catalog().functionExists(name)))); + } + + /** Each aggregate name of the catalog whose every entry is over a raster, not registered. */ + @TestFactory + Stream theNameIsNotRegistered() { + return Stream.of("rasterUnion", "sameAlignmentAgg", "summaryStatsAgg") + .map(name -> DynamicTest.dynamicTest(name, () -> assertEquals(false, spark.catalog().functionExists(name)))); + } + + /** Each overload: its signature, its query over two rows, and MobilityDB's answer. */ + private static final String[][] OVERLOADS = { + {"appendInstantAgg(tcbuffer)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "[Cbuffer(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Cbuffer(POINT(2 2),0.5)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tcbuffer, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "Interp=Step;[Cbuffer(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Cbuffer(POINT(2 2),0.5)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tcbuffer, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "Interp=Step;[Cbuffer(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Cbuffer(POINT(2 2),0.5)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeometry)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeometry, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeometry, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeography)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeography, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeography, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{[POINT(1 1)@2020-01-01 00:00:00+00], [POINT(2 2)@2020-01-02 00:00:00+00]}"}, + {"appendInstantAgg(tgeompoint)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeompoint, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "Interp=Step;[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeompoint, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "Interp=Step;[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeogpoint)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeogpoint, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "Interp=Step;[POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tgeogpoint, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "Interp=Step;{[POINT(1 1)@2020-01-01 00:00:00+00], [POINT(2 2)@2020-01-02 00:00:00+00]}"}, + {"appendInstantAgg(th3index)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "[8a2a1072b59ffff@2020-01-01 00:00:00+00, 8a2a1072b597fff@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(th3index, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "[8a2a1072b59ffff@2020-01-01 00:00:00+00, 8a2a1072b597fff@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(th3index, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "[8a2a1072b59ffff@2020-01-01 00:00:00+00, 8a2a1072b597fff@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tjsonb)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "[\"{\\\"a\\\": 1}\"@2020-01-01 00:00:00+00, \"{\\\"a\\\": 2}\"@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tjsonb, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "[\"{\\\"a\\\": 1}\"@2020-01-01 00:00:00+00, \"{\\\"a\\\": 2}\"@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tjsonb, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "[\"{\\\"a\\\": 1}\"@2020-01-01 00:00:00+00, \"{\\\"a\\\": 2}\"@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tnpoint)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "[NPoint(1,0.5)@2020-01-01 00:00:00+00, NPoint(1,0.7)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tnpoint, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "Interp=Step;[NPoint(1,0.5)@2020-01-01 00:00:00+00, NPoint(1,0.7)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tnpoint, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "Interp=Step;{[NPoint(1,0.5)@2020-01-01 00:00:00+00], [NPoint(1,0.7)@2020-01-02 00:00:00+00]}"}, + {"appendInstantAgg(tpcpoint)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "[0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01 00:00:00+00, 0101000000000000000000004000000000000000400000000000000040@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpcpoint, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "[0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01 00:00:00+00, 0101000000000000000000004000000000000000400000000000000040@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpcpoint, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "[0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01 00:00:00+00, 0101000000000000000000004000000000000000400000000000000040@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpcpatch)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "[01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01 00:00:00+00, 01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpcpatch, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "[01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01 00:00:00+00, 01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpcpatch, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "[01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01 00:00:00+00, 01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpose)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "[Pose(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Pose(POINT(2 2),0.5)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpose, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "Interp=Step;[Pose(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Pose(POINT(2 2),0.5)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tpose, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "Interp=Step;[Pose(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Pose(POINT(2 2),0.5)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tposechain)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "[PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))@2020-01-01 00:00:00+00, PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tposechain, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "Interp=Step;[PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))@2020-01-01 00:00:00+00, PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tposechain, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "Interp=Step;[PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))@2020-01-01 00:00:00+00, PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tquadbin)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "[4813ffffffffffff@2020-01-01 00:00:00+00, 4817ffffffffffff@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tquadbin, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "[4813ffffffffffff@2020-01-01 00:00:00+00, 4817ffffffffffff@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tquadbin, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "[4813ffffffffffff@2020-01-01 00:00:00+00, 4817ffffffffffff@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(trgeometry)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "POLYGON((0 0,1 0,1 1,0 1,0 0));[Pose(POINT(5 5),0)@2020-01-01 00:00:00+00, Pose(POINT(6 6),0)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(trgeometry, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "POLYGON((0 0,1 0,1 1,0 1,0 0));Interp=Step;[Pose(POINT(5 5),0)@2020-01-01 00:00:00+00, Pose(POINT(6 6),0)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(trgeometry, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "POLYGON((0 0,1 0,1 1,0 1,0 0));Interp=Step;[Pose(POINT(5 5),0)@2020-01-01 00:00:00+00, Pose(POINT(6 6),0)@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(ts2cell)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "[47c3c444c000000c@2020-01-01 00:00:00+00, 47c3c444c0000004@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(ts2cell, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "[47c3c444c000000c@2020-01-01 00:00:00+00, 47c3c444c0000004@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(ts2cell, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "[47c3c444c000000c@2020-01-01 00:00:00+00, 47c3c444c0000004@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tbool)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "[t@2020-01-01 00:00:00+00, f@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tbool, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "[t@2020-01-01 00:00:00+00, f@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tbool, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "[t@2020-01-01 00:00:00+00, f@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tint)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tint, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tint, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tbigint)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tbigint, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tbigint, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tfloat)", + "SELECT asText(appendInstantAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "[1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tfloat, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step'), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "Interp=Step;[1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(tfloat, VARCHAR, DOUBLE, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', CAST(10.0 AS DOUBLE), INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "Interp=Step;[1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(ttext)", + "SELECT asText(appendInstantAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "[\"a\"@2020-01-01 00:00:00+00, \"b\"@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(ttext, VARCHAR)", + "SELECT asText(appendInstantAgg(v, 'step')) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "[\"a\"@2020-01-01 00:00:00+00, \"b\"@2020-01-02 00:00:00+00]"}, + {"appendInstantAgg(ttext, VARCHAR, INTERVAL)", + "SELECT asText(appendInstantAgg(v, 'step', INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "[\"a\"@2020-01-01 00:00:00+00, \"b\"@2020-01-02 00:00:00+00]"}, + {"appendSequenceAgg(tcbuffer)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('[Cbuffer(Point(1 1),0.5)@2020-01-01, Cbuffer(Point(1 1),0.5)@2020-01-02]'), ('[Cbuffer(Point(2 2),0.5)@2020-01-03, Cbuffer(Point(2 2),0.5)@2020-01-04]') AS t(s))", + "{[Cbuffer(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Cbuffer(POINT(1 1),0.5)@2020-01-02 00:00:00+00], [Cbuffer(POINT(2 2),0.5)@2020-01-03 00:00:00+00, Cbuffer(POINT(2 2),0.5)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tgeometry)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('[Point(1 1)@2020-01-01, Point(1 1)@2020-01-02]'), ('[Point(2 2)@2020-01-03, Point(2 2)@2020-01-04]') AS t(s))", + "{[POINT(1 1)@2020-01-01 00:00:00+00, POINT(1 1)@2020-01-02 00:00:00+00], [POINT(2 2)@2020-01-03 00:00:00+00, POINT(2 2)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tgeography)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('[Point(1 1)@2020-01-01, Point(1 1)@2020-01-02]'), ('[Point(2 2)@2020-01-03, Point(2 2)@2020-01-04]') AS t(s))", + "{[POINT(1 1)@2020-01-01 00:00:00+00, POINT(1 1)@2020-01-02 00:00:00+00], [POINT(2 2)@2020-01-03 00:00:00+00, POINT(2 2)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tgeompoint)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('[Point(1 1)@2020-01-01, Point(1 1)@2020-01-02]'), ('[Point(2 2)@2020-01-03, Point(2 2)@2020-01-04]') AS t(s))", + "{[POINT(1 1)@2020-01-01 00:00:00+00, POINT(1 1)@2020-01-02 00:00:00+00], [POINT(2 2)@2020-01-03 00:00:00+00, POINT(2 2)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tgeogpoint)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('[Point(1 1)@2020-01-01, Point(1 1)@2020-01-02]'), ('[Point(2 2)@2020-01-03, Point(2 2)@2020-01-04]') AS t(s))", + "{[POINT(1 1)@2020-01-01 00:00:00+00, POINT(1 1)@2020-01-02 00:00:00+00], [POINT(2 2)@2020-01-03 00:00:00+00, POINT(2 2)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(th3index)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('[8a2a1072b59ffff@2020-01-01, 8a2a1072b59ffff@2020-01-02]'), ('[8a2a1072b597fff@2020-01-03, 8a2a1072b597fff@2020-01-04]') AS t(s))", + "{[8a2a1072b59ffff@2020-01-01 00:00:00+00, 8a2a1072b59ffff@2020-01-02 00:00:00+00], [8a2a1072b597fff@2020-01-03 00:00:00+00, 8a2a1072b597fff@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tjsonb)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('[\"{\\\\\"a\\\\\": 1}\"@2020-01-01, \"{\\\\\"a\\\\\": 1}\"@2020-01-02]'), ('[\"{\\\\\"a\\\\\": 2}\"@2020-01-03, \"{\\\\\"a\\\\\": 2}\"@2020-01-04]') AS t(s))", + "{[\"{\\\"a\\\": 1}\"@2020-01-01 00:00:00+00, \"{\\\"a\\\": 1}\"@2020-01-02 00:00:00+00], [\"{\\\"a\\\": 2}\"@2020-01-03 00:00:00+00, \"{\\\"a\\\": 2}\"@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tnpoint)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('[Npoint(1,0.5)@2020-01-01, Npoint(1,0.5)@2020-01-02]'), ('[Npoint(1,0.7)@2020-01-03, Npoint(1,0.7)@2020-01-04]') AS t(s))", + "{[NPoint(1,0.5)@2020-01-01 00:00:00+00, NPoint(1,0.5)@2020-01-02 00:00:00+00], [NPoint(1,0.7)@2020-01-03 00:00:00+00, NPoint(1,0.7)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tpcpoint)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('[0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01, 0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-02]'), ('[0101000000000000000000004000000000000000400000000000000040@2020-01-03, 0101000000000000000000004000000000000000400000000000000040@2020-01-04]') AS t(s))", + "{[0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01 00:00:00+00, 0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-02 00:00:00+00], [0101000000000000000000004000000000000000400000000000000040@2020-01-03 00:00:00+00, 0101000000000000000000004000000000000000400000000000000040@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tpcpatch)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('[01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01, 01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-02]'), ('[01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-03, 01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-04]') AS t(s))", + "{[01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01 00:00:00+00, 01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-02 00:00:00+00], [01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-03 00:00:00+00, 01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tpose)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('[Pose(Point(1 1),0.5)@2020-01-01, Pose(Point(1 1),0.5)@2020-01-02]'), ('[Pose(Point(2 2),0.5)@2020-01-03, Pose(Point(2 2),0.5)@2020-01-04]') AS t(s))", + "{[Pose(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Pose(POINT(1 1),0.5)@2020-01-02 00:00:00+00], [Pose(POINT(2 2),0.5)@2020-01-03 00:00:00+00, Pose(POINT(2 2),0.5)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tposechain)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('[PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01, PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-02]'), ('[PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-03, PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-04]') AS t(s))", + "{[PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))@2020-01-01 00:00:00+00, PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))@2020-01-02 00:00:00+00], [PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))@2020-01-03 00:00:00+00, PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tquadbin)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('[4813ffffffffffff@2020-01-01, 4813ffffffffffff@2020-01-02]'), ('[4817ffffffffffff@2020-01-03, 4817ffffffffffff@2020-01-04]') AS t(s))", + "{[4813ffffffffffff@2020-01-01 00:00:00+00, 4813ffffffffffff@2020-01-02 00:00:00+00], [4817ffffffffffff@2020-01-03 00:00:00+00, 4817ffffffffffff@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(trgeometry)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(5 5),0)@2020-01-01, Pose(Point(5 5),0)@2020-01-02]'), ('Polygon((0 0,1 0,1 1,0 1,0 0));[Pose(Point(6 6),0)@2020-01-03, Pose(Point(6 6),0)@2020-01-04]') AS t(s))", + "POLYGON((0 0,1 0,1 1,0 1,0 0));{[Pose(POINT(5 5),0)@2020-01-01 00:00:00+00, Pose(POINT(5 5),0)@2020-01-02 00:00:00+00], [Pose(POINT(6 6),0)@2020-01-03 00:00:00+00, Pose(POINT(6 6),0)@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(ts2cell)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('[47c3c444c000000c@2020-01-01, 47c3c444c000000c@2020-01-02]'), ('[47c3c444c0000004@2020-01-03, 47c3c444c0000004@2020-01-04]') AS t(s))", + "{[47c3c444c000000c@2020-01-01 00:00:00+00, 47c3c444c000000c@2020-01-02 00:00:00+00], [47c3c444c0000004@2020-01-03 00:00:00+00, 47c3c444c0000004@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tbool)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('[t@2020-01-01, t@2020-01-02]'), ('[f@2020-01-03, f@2020-01-04]') AS t(s))", + "{[t@2020-01-01 00:00:00+00, t@2020-01-02 00:00:00+00], [f@2020-01-03 00:00:00+00, f@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tint)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('[1@2020-01-01, 1@2020-01-02]'), ('[2@2020-01-03, 2@2020-01-04]') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00], [2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tbigint)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('[1@2020-01-01, 1@2020-01-02]'), ('[2@2020-01-03, 2@2020-01-04]') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00], [2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(tfloat)", + "SELECT asText(appendSequenceAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('[1.5@2020-01-01, 1.5@2020-01-02]'), ('[2.5@2020-01-03, 2.5@2020-01-04]') AS t(s))", + "{[1.5@2020-01-01 00:00:00+00, 1.5@2020-01-02 00:00:00+00], [2.5@2020-01-03 00:00:00+00, 2.5@2020-01-04 00:00:00+00]}"}, + {"appendSequenceAgg(ttext)", + "SELECT asText(appendSequenceAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('[\"a\"@2020-01-01, \"a\"@2020-01-02]'), ('[\"b\"@2020-01-03, \"b\"@2020-01-04]') AS t(s))", + "{[\"a\"@2020-01-01 00:00:00+00, \"a\"@2020-01-02 00:00:00+00], [\"b\"@2020-01-03 00:00:00+00, \"b\"@2020-01-04 00:00:00+00]}"}, + {"extent(tcbuffer)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "STBOX XT(((0.5,0.5),(2.5,2.5)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(stbox)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ stboxFromText(s) AS v FROM VALUES ('STBOX XT(((1,1),(3,3)),[2020-01-01, 2020-01-03])'), ('STBOX XT(((2,2),(5,5)),[2020-01-02, 2020-01-05])') AS t(s))", + "STBOX XT(((1,1),(5,5)),[2020-01-01 00:00:00+00, 2020-01-05 00:00:00+00])"}, + {"extent(tgeometry)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "STBOX XT(((1,1),(2,2)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tgeography)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "SRID=4326;GEODSTBOX XT(((1,1),(2,2)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tgeompoint)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "STBOX XT(((1,1),(2,2)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tgeogpoint)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "SRID=4326;GEODSTBOX XT(((1,1),(2,2)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(th3index)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "SRID=4326;GEODSTBOX XT(((-74.045692,40.688785),(-74.043521,40.691181)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tjsonb)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]"}, + {"extent(tnpoint)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "SRID=5676;STBOX XT(((34.650693,75.384585),(48.718663,77.764071)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tpcbox)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tpcboxFromText(s) AS v FROM VALUES ('TPCBOX(XT(((0,0),(10,10)),[2020-01-01, 2020-01-31]), 1)'), ('TPCBOX(XT(((5,5),(20,20)),[2020-01-15, 2020-02-15]), 1)') AS t(s))", + "TPCBOX(XT(((0,0),(20,20)),[2020-01-01 00:00:00+00, 2020-02-15 00:00:00+00]), 1)"}, + {"extent(tpcpoint)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "TPCBOX(ZT(((1,1,1),(2,2,2)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]), 1)"}, + {"extent(tpcpatch)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "TPCBOX(ZT(((1,1,1),(3,3,3)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]), 1)"}, + {"extent(tpose)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "STBOX XT(((1,1),(2,2)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tposechain)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "STBOX XT(((0,0),(11.745379,5.088176)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tquadbin)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "SRID=4326;STBOX XT(((-180,0),(180,85.051129)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(trgeometry)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "STBOX XT(((5,5),(7,7)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(ts2cell)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "SRID=4326;GEODSTBOX XT(((4.340366,50.82102),(4.340366,50.82102)),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(intspan)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ intspanFromText(s) AS v FROM VALUES ('[1, 3]'), ('[2, 5]') AS t(s))", + "[1, 6)"}, + {"extent(bigintspan)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ bigintspanFromText(s) AS v FROM VALUES ('[1, 3]'), ('[2, 5]') AS t(s))", + "[1, 6)"}, + {"extent(floatspan)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ floatspanFromText(s) AS v FROM VALUES ('[1.5, 3.5]'), ('[2.5, 5.5]') AS t(s))", + "[1.5, 5.5]"}, + {"extent(datespan)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ datespanFromText(s) AS v FROM VALUES ('[2020-01-01, 2020-01-03]'), ('[2020-01-02, 2020-01-05]') AS t(s))", + "[2020-01-01, 2020-01-06)"}, + {"extent(tstzspan)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzspanFromText(s) AS v FROM VALUES ('[2020-01-01, 2020-01-03]'), ('[2020-01-02, 2020-01-05]') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-05 00:00:00+00]"}, + {"extent(INTEGER)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS INT) AS v FROM VALUES ('1'), ('2') AS t(s))", + "[1, 3)"}, + {"extent(BIGINT)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS BIGINT) AS v FROM VALUES ('1'), ('2') AS t(s))", + "[1, 3)"}, + {"extent(DOUBLE)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS DOUBLE) AS v FROM VALUES ('1.5'), ('2.5') AS t(s))", + "[1.5, 2.5]"}, + {"extent(DATE)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS DATE) AS v FROM VALUES ('2020-01-01'), ('2020-01-02') AS t(s))", + "[2020-01-01, 2020-01-03)"}, + {"extent(TIMESTAMP WITH TIME ZONE)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS TIMESTAMP) AS v FROM VALUES ('2020-01-01 00:00:00'), ('2020-01-02 00:00:00') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]"}, + {"extent(intset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ intsetFromText(s) AS v FROM VALUES ('{1}'), ('{1, 2}') AS t(s))", + "[1, 3)"}, + {"extent(bigintset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ bigintsetFromText(s) AS v FROM VALUES ('{1}'), ('{1, 2}') AS t(s))", + "[1, 3)"}, + {"extent(floatset)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ floatsetFromText(s) AS v FROM VALUES ('{1.5}'), ('{1.5, 2.5}') AS t(s))", + "[1.5, 2.5]"}, + {"extent(dateset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ datesetFromText(s) AS v FROM VALUES ('{2020-01-01}'), ('{2020-01-01, 2020-01-02}') AS t(s))", + "[2020-01-01, 2020-01-03)"}, + {"extent(tstzset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzsetFromText(s) AS v FROM VALUES ('{2020-01-01 00:00:00+00}'), ('{2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00}') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]"}, + {"extent(intspanset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ intspansetFromText(s) AS v FROM VALUES ('{[1, 3]}'), ('{[2, 5]}') AS t(s))", + "[1, 6)"}, + {"extent(bigintspanset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ bigintspansetFromText(s) AS v FROM VALUES ('{[1, 3]}'), ('{[2, 5]}') AS t(s))", + "[1, 6)"}, + {"extent(floatspanset)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ floatspansetFromText(s) AS v FROM VALUES ('{[1.5, 3.5]}'), ('{[2.5, 5.5]}') AS t(s))", + "[1.5, 5.5]"}, + {"extent(datespanset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ datespansetFromText(s) AS v FROM VALUES ('{[2020-01-01, 2020-01-03]}'), ('{[2020-01-02, 2020-01-05]}') AS t(s))", + "[2020-01-01, 2020-01-06)"}, + {"extent(tstzspanset)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzspansetFromText(s) AS v FROM VALUES ('{[2020-01-01, 2020-01-03]}'), ('{[2020-01-02, 2020-01-05]}') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-05 00:00:00+00]"}, + {"extent(tbox)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tboxFromText(s) AS v FROM VALUES ('TBOXFLOAT XT([1, 3],[2020-01-01, 2020-01-03])'), ('TBOXFLOAT XT([2, 5],[2020-01-02, 2020-01-05])') AS t(s))", + "TBOXFLOAT XT([1, 5],[2020-01-01 00:00:00+00, 2020-01-05 00:00:00+00])"}, + {"extent(tbool)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]"}, + {"extent(ttext)", + "SELECT asText(extent(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00]"}, + {"extent(tint)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "TBOXINT XT([1, 3),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tbigint)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "TBOXBIGINT XT([1, 3),[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"extent(tfloat)", + "SELECT asText(extent(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "TBOXFLOAT XT([1.5, 2.5],[2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00])"}, + {"mergeAgg(tcbuffer)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "{Cbuffer(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Cbuffer(POINT(2 2),0.5)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tgeometry)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tgeography)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tgeompoint)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tgeogpoint)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(th3index)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "{8a2a1072b59ffff@2020-01-01 00:00:00+00, 8a2a1072b597fff@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tjsonb)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "{\"{\\\"a\\\": 1}\"@2020-01-01 00:00:00+00, \"{\\\"a\\\": 2}\"@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tnpoint)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "{NPoint(1,0.5)@2020-01-01 00:00:00+00, NPoint(1,0.7)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tpcpoint)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "{0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01 00:00:00+00, 0101000000000000000000004000000000000000400000000000000040@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tpcpatch)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "{01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01 00:00:00+00, 01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tpose)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "{Pose(POINT(1 1),0.5)@2020-01-01 00:00:00+00, Pose(POINT(2 2),0.5)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tposechain)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "{PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))@2020-01-01 00:00:00+00, PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tquadbin)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "{4813ffffffffffff@2020-01-01 00:00:00+00, 4817ffffffffffff@2020-01-02 00:00:00+00}"}, + {"mergeAgg(trgeometry)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "POLYGON((0 0,1 0,1 1,0 1,0 0));{Pose(POINT(5 5),0)@2020-01-01 00:00:00+00, Pose(POINT(6 6),0)@2020-01-02 00:00:00+00}"}, + {"mergeAgg(ts2cell)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "{47c3c444c000000c@2020-01-01 00:00:00+00, 47c3c444c0000004@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tbool)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "{t@2020-01-01 00:00:00+00, f@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tint)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tbigint)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"mergeAgg(tfloat)", + "SELECT asText(mergeAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00}"}, + {"mergeAgg(ttext)", + "SELECT asText(mergeAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "{\"a\"@2020-01-01 00:00:00+00, \"b\"@2020-01-02 00:00:00+00}"}, + {"setUnionAgg(cbuffer)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ cbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)'), ('Cbuffer(Point(2 2),0.5)') AS t(s))", + "{\"Cbuffer(POINT(1 1),0.5)\", \"Cbuffer(POINT(2 2),0.5)\"}"}, + {"setUnionAgg(cbufferset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ cbuffersetFromText(s) AS v FROM VALUES ('{\"Cbuffer(Point(1 1),0.5)\"}'), ('{\"Cbuffer(Point(1 1),0.5)\", \"Cbuffer(Point(2 2),0.5)\"}') AS t(s))", + "{\"Cbuffer(POINT(1 1),0.5)\", \"Cbuffer(POINT(2 2),0.5)\"}"}, + {"setUnionAgg(GEOMETRY)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ geometryFromHexEWKB(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F'), ('010100000000000000000000400000000000000040') AS t(s))", + "{\"POINT(1 1)\", \"POINT(2 2)\"}"}, + {"setUnionAgg(geography)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ geographyFromHexEWKB(s) AS v FROM VALUES ('0101000020E6100000000000000000F03F000000000000F03F'), ('0101000020E610000000000000000000400000000000000040') AS t(s))", + "{\"POINT(1 1)\", \"POINT(2 2)\"}"}, + {"setUnionAgg(geomset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ geomsetFromText(s) AS v FROM VALUES ('{\"Point(1 1)\"}'), ('{\"Point(1 1)\", \"Point(2 2)\"}') AS t(s))", + "{\"POINT(1 1)\", \"POINT(2 2)\"}"}, + {"setUnionAgg(geogset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ geogsetFromText(s) AS v FROM VALUES ('{\"Point(1 1)\"}'), ('{\"Point(1 1)\", \"Point(2 2)\"}') AS t(s))", + "{\"POINT(1 1)\", \"POINT(2 2)\"}"}, + {"setUnionAgg(h3index)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ h3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff'), ('8a2a1072b597fff') AS t(s))", + "{\"8a2a1072b597fff\", \"8a2a1072b59ffff\"}"}, + {"setUnionAgg(h3indexset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ h3indexsetFromText(s) AS v FROM VALUES ('{8a2a1072b59ffff}'), ('{8a2a1072b59ffff, 8a2a1072b597fff}') AS t(s))", + "{\"8a2a1072b597fff\", \"8a2a1072b59ffff\"}"}, + {"setUnionAgg(jsonb)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ jsonbFromText(s) AS v FROM VALUES ('{\"a\": 1}'), ('{\"a\": 2}') AS t(s))", + "{\"{\\\"a\\\": 1}\", \"{\\\"a\\\": 2}\"}"}, + {"setUnionAgg(jsonbset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ jsonbsetFromText(s) AS v FROM VALUES ('{\"{\\\\\"a\\\\\": 1}\"}'), ('{\"{\\\\\"a\\\\\": 1}\", \"{\\\\\"a\\\\\": 2}\"}') AS t(s))", + "{\"{\\\"a\\\": 1}\", \"{\\\"a\\\": 2}\"}"}, + {"setUnionAgg(npoint)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ npointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)'), ('Npoint(1,0.7)') AS t(s))", + "{\"NPoint(1,0.5)\", \"NPoint(1,0.7)\"}"}, + {"setUnionAgg(npointset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ npointsetFromText(s) AS v FROM VALUES ('{\"Npoint(1,0.5)\"}'), ('{\"Npoint(1,0.5)\", \"Npoint(1,0.7)\"}') AS t(s))", + "{\"NPoint(1,0.5)\", \"NPoint(1,0.7)\"}"}, + {"setUnionAgg(pcpoint)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ pcpointFromHexWKB(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F'), ('0101000000000000000000004000000000000000400000000000000040') AS t(s))", + "{\"0101000000000000000000004000000000000000400000000000000040\", \"0101000000000000000000F03F000000000000F03F000000000000F03F\"}"}, + {"setUnionAgg(pcpointset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ pcpointsetFromText(s) AS v FROM VALUES ('{\"0101000000000000000000F03F000000000000F03F000000000000F03F\"}'), ('{\"0101000000000000000000F03F000000000000F03F000000000000F03F\", \"0101000000000000000000004000000000000000400000000000000040\"}') AS t(s))", + "{\"0101000000000000000000004000000000000000400000000000000040\", \"0101000000000000000000F03F000000000000F03F000000000000F03F\"}"}, + {"setUnionAgg(pcpatch)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ pcpatchFromHexWKB(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040'), ('01010000000000000001000000000000000000084000000000000008400000000000000840') AS t(s))", + "{\"01010000000000000001000000000000000000084000000000000008400000000000000840\", \"01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040\"}"}, + {"setUnionAgg(pcpatchset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ pcpatchsetFromText(s) AS v FROM VALUES ('{\"01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040\"}'), ('{\"01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040\", \"01010000000000000001000000000000000000084000000000000008400000000000000840\"}') AS t(s))", + "{\"01010000000000000001000000000000000000084000000000000008400000000000000840\", \"01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040\"}"}, + {"setUnionAgg(pose)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ poseFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)'), ('Pose(Point(2 2),0.5)') AS t(s))", + "{\"Pose(POINT(1 1),0.5)\", \"Pose(POINT(2 2),0.5)\"}"}, + {"setUnionAgg(poseset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ posesetFromText(s) AS v FROM VALUES ('{\"Pose(Point(1 1),0.5)\"}'), ('{\"Pose(Point(1 1),0.5)\", \"Pose(Point(2 2),0.5)\"}') AS t(s))", + "{\"Pose(POINT(1 1),0.5)\", \"Pose(POINT(2 2),0.5)\"}"}, + {"setUnionAgg(posechain)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ posechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))') AS t(s))", + "{\"PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))\", \"PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))\"}"}, + {"setUnionAgg(posechainset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ posechainsetFromText(s) AS v FROM VALUES ('{\"PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))\"}'), ('{\"PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))\", \"PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))\"}') AS t(s))", + "{\"PoseChain(Pose(POINT(0 0),0),Pose(POINT(10 0),0))\", \"PoseChain(Pose(POINT(1 2),0.1),Pose(POINT(11 2),0.1))\"}"}, + {"setUnionAgg(quadbin)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ quadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff'), ('4817ffffffffffff') AS t(s))", + "{\"4813ffffffffffff\", \"4817ffffffffffff\"}"}, + {"setUnionAgg(quadbinset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ quadbinsetFromText(s) AS v FROM VALUES ('{4813ffffffffffff}'), ('{4813ffffffffffff, 4817ffffffffffff}') AS t(s))", + "{\"4813ffffffffffff\", \"4817ffffffffffff\"}"}, + {"setUnionAgg(s2cell)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ s2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c'), ('47c3c444c0000004') AS t(s))", + "{\"47c3c444c0000004\", \"47c3c444c000000c\"}"}, + {"setUnionAgg(s2cellset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ s2cellsetFromText(s) AS v FROM VALUES ('{47c3c444c000000c}'), ('{47c3c444c000000c, 47c3c444c0000004}') AS t(s))", + "{\"47c3c444c0000004\", \"47c3c444c000000c\"}"}, + {"setUnionAgg(INTEGER)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS INT) AS v FROM VALUES ('1'), ('2') AS t(s))", + "{1, 2}"}, + {"setUnionAgg(BIGINT)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS BIGINT) AS v FROM VALUES ('1'), ('2') AS t(s))", + "{1, 2}"}, + {"setUnionAgg(DOUBLE)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS DOUBLE) AS v FROM VALUES ('1.5'), ('2.5') AS t(s))", + "{1.5, 2.5}"}, + {"setUnionAgg(VARCHAR)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ s AS v FROM VALUES ('a'), ('b') AS t(s))", + "{\"a\", \"b\"}"}, + {"setUnionAgg(DATE)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS DATE) AS v FROM VALUES ('2020-01-01'), ('2020-01-02') AS t(s))", + "{2020-01-01, 2020-01-02}"}, + {"setUnionAgg(TIMESTAMP WITH TIME ZONE)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS TIMESTAMP) AS v FROM VALUES ('2020-01-01 00:00:00'), ('2020-01-02 00:00:00') AS t(s))", + "{\"2020-01-01 00:00:00+00\", \"2020-01-02 00:00:00+00\"}"}, + {"setUnionAgg(intset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ intsetFromText(s) AS v FROM VALUES ('{1}'), ('{1, 2}') AS t(s))", + "{1, 2}"}, + {"setUnionAgg(bigintset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ bigintsetFromText(s) AS v FROM VALUES ('{1}'), ('{1, 2}') AS t(s))", + "{1, 2}"}, + {"setUnionAgg(floatset)", + "SELECT asText(setUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ floatsetFromText(s) AS v FROM VALUES ('{1.5}'), ('{1.5, 2.5}') AS t(s))", + "{1.5, 2.5}"}, + {"setUnionAgg(textset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ textsetFromText(s) AS v FROM VALUES ('{\"a\"}'), ('{\"a\", \"b\"}') AS t(s))", + "{\"a\", \"b\"}"}, + {"setUnionAgg(dateset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ datesetFromText(s) AS v FROM VALUES ('{2020-01-01}'), ('{2020-01-01, 2020-01-02}') AS t(s))", + "{2020-01-01, 2020-01-02}"}, + {"setUnionAgg(tstzset)", + "SELECT asText(setUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzsetFromText(s) AS v FROM VALUES ('{2020-01-01 00:00:00+00}'), ('{2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00}') AS t(s))", + "{\"2020-01-01 00:00:00+00\", \"2020-01-02 00:00:00+00\"}"}, + {"spanUnionAgg(intspan)", + "SELECT asText(spanUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ intspanFromText(s) AS v FROM VALUES ('[1, 3]'), ('[2, 5]') AS t(s))", + "{[1, 6)}"}, + {"spanUnionAgg(bigintspan)", + "SELECT asText(spanUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ bigintspanFromText(s) AS v FROM VALUES ('[1, 3]'), ('[2, 5]') AS t(s))", + "{[1, 6)}"}, + {"spanUnionAgg(floatspan)", + "SELECT asText(spanUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ floatspanFromText(s) AS v FROM VALUES ('[1.5, 3.5]'), ('[2.5, 5.5]') AS t(s))", + "{[1.5, 5.5]}"}, + {"spanUnionAgg(datespan)", + "SELECT asText(spanUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ datespanFromText(s) AS v FROM VALUES ('[2020-01-01, 2020-01-03]'), ('[2020-01-02, 2020-01-05]') AS t(s))", + "{[2020-01-01, 2020-01-06)}"}, + {"spanUnionAgg(tstzspan)", + "SELECT asText(spanUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzspanFromText(s) AS v FROM VALUES ('[2020-01-01, 2020-01-03]'), ('[2020-01-02, 2020-01-05]') AS t(s))", + "{[2020-01-01 00:00:00+00, 2020-01-05 00:00:00+00]}"}, + {"spansetUnionAgg(intspanset)", + "SELECT asText(spansetUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ intspansetFromText(s) AS v FROM VALUES ('{[1, 3]}'), ('{[2, 5]}') AS t(s))", + "{[1, 6)}"}, + {"spansetUnionAgg(bigintspanset)", + "SELECT asText(spansetUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ bigintspansetFromText(s) AS v FROM VALUES ('{[1, 3]}'), ('{[2, 5]}') AS t(s))", + "{[1, 6)}"}, + {"spansetUnionAgg(floatspanset)", + "SELECT asText(spansetUnionAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ floatspansetFromText(s) AS v FROM VALUES ('{[1.5, 3.5]}'), ('{[2.5, 5.5]}') AS t(s))", + "{[1.5, 5.5]}"}, + {"spansetUnionAgg(datespanset)", + "SELECT asText(spansetUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ datespansetFromText(s) AS v FROM VALUES ('{[2020-01-01, 2020-01-03]}'), ('{[2020-01-02, 2020-01-05]}') AS t(s))", + "{[2020-01-01, 2020-01-06)}"}, + {"spansetUnionAgg(tstzspanset)", + "SELECT asText(spansetUnionAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzspansetFromText(s) AS v FROM VALUES ('{[2020-01-01, 2020-01-03]}'), ('{[2020-01-02, 2020-01-05]}') AS t(s))", + "{[2020-01-01 00:00:00+00, 2020-01-05 00:00:00+00]}"}, + {"tAndAgg(tbool)", + "SELECT asText(tAndAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "{t@2020-01-01 00:00:00+00, f@2020-01-02 00:00:00+00}"}, + {"tAvg(tint)", + "SELECT asText(tAvg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tAvg(tbigint)", + "SELECT asText(tAvg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tAvg(tfloat)", + "SELECT asText(tAvg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00}"}, + {"tCentroid(tgeompoint)", + "SELECT asText(tCentroid(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{POINT(1 1)@2020-01-01 00:00:00+00, POINT(2 2)@2020-01-02 00:00:00+00}"}, + {"tCentroid(tnpoint)", + "SELECT asText(tCentroid(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "{POINT(48.718663 77.764071)@2020-01-01 00:00:00+00, POINT(34.650693 75.384585)@2020-01-02 00:00:00+00}"}, + {"tCount(tcbuffer)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tgeometry)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tgeography)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tgeompoint)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tgeogpoint)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(th3index)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tjsonb)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tnpoint)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tpcpoint)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tpcpatch)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tpose)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tposechain)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tquadbin)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(trgeometry)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(ts2cell)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(TIMESTAMP WITH TIME ZONE)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ CAST(s AS TIMESTAMP) AS v FROM VALUES ('2020-01-01 00:00:00'), ('2020-01-02 00:00:00') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tstzset)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzsetFromText(s) AS v FROM VALUES ('{2020-01-01 00:00:00+00}'), ('{2020-01-01 00:00:00+00, 2020-01-02 00:00:00+00}') AS t(s))", + "{2@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tstzspan)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzspanFromText(s) AS v FROM VALUES ('[2020-01-01, 2020-01-03]'), ('[2020-01-02, 2020-01-05]') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-05 00:00:00+00]}"}, + {"tCount(tstzspanset)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tstzspansetFromText(s) AS v FROM VALUES ('{[2020-01-01, 2020-01-03]}'), ('{[2020-01-02, 2020-01-05]}') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-05 00:00:00+00]}"}, + {"tCount(tbool)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tint)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tbigint)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(tfloat)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tCount(ttext)", + "SELECT asText(tCount(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"tMaxAgg(tint)", + "SELECT asText(tMaxAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tMaxAgg(tbigint)", + "SELECT asText(tMaxAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tMaxAgg(tfloat)", + "SELECT asText(tMaxAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00}"}, + {"tMaxAgg(ttext)", + "SELECT asText(tMaxAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "{\"a\"@2020-01-01 00:00:00+00, \"b\"@2020-01-02 00:00:00+00}"}, + {"tMinAgg(tint)", + "SELECT asText(tMinAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tMinAgg(tbigint)", + "SELECT asText(tMinAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tMinAgg(tfloat)", + "SELECT asText(tMinAgg(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00}"}, + {"tMinAgg(ttext)", + "SELECT asText(tMinAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ ttextFromText(s) AS v FROM VALUES ('\"a\"@2020-01-01'), ('\"b\"@2020-01-02') AS t(s))", + "{\"a\"@2020-01-01 00:00:00+00, \"b\"@2020-01-02 00:00:00+00}"}, + {"tOrAgg(tbool)", + "SELECT asText(tOrAgg(v)) FROM (SELECT /*+ REPARTITION(2) */ tboolFromText(s) AS v FROM VALUES ('t@2020-01-01'), ('f@2020-01-02') AS t(s))", + "{t@2020-01-01 00:00:00+00, f@2020-01-02 00:00:00+00}"}, + {"tSum(tint)", + "SELECT asText(tSum(v)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tSum(tbigint)", + "SELECT asText(tSum(v)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00}"}, + {"tSum(tfloat)", + "SELECT asText(tSum(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{1.5@2020-01-01 00:00:00+00, 2.5@2020-01-02 00:00:00+00}"}, + {"tdensity(tpcpatch)", + "SELECT asText(tdensity(v), 6) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "{2@2020-01-01 00:00:00+00, Infinity@2020-01-02 00:00:00+00}"}, + {"tnpoints(tpcpatch)", + "SELECT asText(tnpoints(v)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "{2@2020-01-01 00:00:00+00, 1@2020-01-02 00:00:00+00}"}, + {"wAvgAgg(tint, INTERVAL)", + "SELECT asText(wAvgAgg(v, INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "Interp=Step;{[1@2020-01-01 00:00:00+00, 1.5@2020-01-02 00:00:00+00, 1.5@2020-01-03 00:00:00+00], (2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wAvgAgg(tbigint, INTERVAL)", + "SELECT asText(wAvgAgg(v, INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "Interp=Step;{[1@2020-01-01 00:00:00+00, 1.5@2020-01-02 00:00:00+00, 1.5@2020-01-03 00:00:00+00], (2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wAvgAgg(tfloat, INTERVAL)", + "SELECT asText(wAvgAgg(v, INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{[1.5@2020-01-01 00:00:00+00, 1.5@2020-01-02 00:00:00+00), [2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (2.5@2020-01-03 00:00:00+00, 2.5@2020-01-04 00:00:00+00]}"}, + {"wCount(tcbuffer, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tcbufferFromText(s) AS v FROM VALUES ('Cbuffer(Point(1 1),0.5)@2020-01-01'), ('Cbuffer(Point(2 2),0.5)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tgeometry, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tgeometryFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tgeography, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tgeographyFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tgeompoint, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tgeompointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tgeogpoint, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tgeogpointFromText(s) AS v FROM VALUES ('Point(1 1)@2020-01-01'), ('Point(2 2)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(th3index, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ th3indexFromText(s) AS v FROM VALUES ('8a2a1072b59ffff@2020-01-01'), ('8a2a1072b597fff@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tjsonb, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tjsonbFromText(s) AS v FROM VALUES ('\"{\\\\\"a\\\\\": 1}\"@2020-01-01'), ('\"{\\\\\"a\\\\\": 2}\"@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tnpoint, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tnpointFromText(s) AS v FROM VALUES ('Npoint(1,0.5)@2020-01-01'), ('Npoint(1,0.7)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tpcpoint, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tpcpointFromText(s) AS v FROM VALUES ('0101000000000000000000F03F000000000000F03F000000000000F03F@2020-01-01'), ('0101000000000000000000004000000000000000400000000000000040@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tpcpatch, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tpcpatchFromText(s) AS v FROM VALUES ('01010000000000000002000000000000000000F03F000000000000F03F000000000000F03F000000000000004000000000000000400000000000000040@2020-01-01'), ('01010000000000000001000000000000000000084000000000000008400000000000000840@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tpose, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tposeFromText(s) AS v FROM VALUES ('Pose(Point(1 1),0.5)@2020-01-01'), ('Pose(Point(2 2),0.5)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tposechain, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tposechainFromText(s) AS v FROM VALUES ('PoseChain(Pose(Point(0 0),0),Pose(Point(10 0),0))@2020-01-01'), ('PoseChain(Pose(Point(1 2),0.1),Pose(Point(11 2),0.1))@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tquadbin, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tquadbinFromText(s) AS v FROM VALUES ('4813ffffffffffff@2020-01-01'), ('4817ffffffffffff@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(trgeometry, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ trgeometryFromText(s) AS v FROM VALUES ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(5 5),0)@2020-01-01'), ('Polygon((0 0,1 0,1 1,0 1,0 0));Pose(Point(6 6),0)@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(ts2cell, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ ts2cellFromText(s) AS v FROM VALUES ('47c3c444c000000c@2020-01-01'), ('47c3c444c0000004@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tint, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tbigint, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wCount(tfloat, INTERVAL)", + "SELECT asText(wCount(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-03 00:00:00+00], (1@2020-01-03 00:00:00+00, 1@2020-01-04 00:00:00+00]}"}, + {"wMax(tint, INTERVAL)", + "SELECT asText(wMax(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wMax(tbigint, INTERVAL)", + "SELECT asText(wMax(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 2@2020-01-02 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wMax(tfloat, INTERVAL)", + "SELECT asText(wMax(v, INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{[1.5@2020-01-01 00:00:00+00, 1.5@2020-01-02 00:00:00+00), [2.5@2020-01-02 00:00:00+00, 2.5@2020-01-04 00:00:00+00]}"}, + {"wMin(tint, INTERVAL)", + "SELECT asText(wMin(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 1@2020-01-03 00:00:00+00], (2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wMin(tbigint, INTERVAL)", + "SELECT asText(wMin(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 1@2020-01-03 00:00:00+00], (2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wMin(tfloat, INTERVAL)", + "SELECT asText(wMin(v, INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{[1.5@2020-01-01 00:00:00+00, 1.5@2020-01-03 00:00:00+00], (2.5@2020-01-03 00:00:00+00, 2.5@2020-01-04 00:00:00+00]}"}, + {"wSum(tint, INTERVAL)", + "SELECT asText(wSum(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 3@2020-01-02 00:00:00+00, 3@2020-01-03 00:00:00+00], (2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wSum(tbigint, INTERVAL)", + "SELECT asText(wSum(v, INTERVAL '2' DAY)) FROM (SELECT /*+ REPARTITION(2) */ tbigintFromText(s) AS v FROM VALUES ('1@2020-01-01'), ('2@2020-01-02') AS t(s))", + "{[1@2020-01-01 00:00:00+00, 3@2020-01-02 00:00:00+00, 3@2020-01-03 00:00:00+00], (2@2020-01-03 00:00:00+00, 2@2020-01-04 00:00:00+00]}"}, + {"wSum(tfloat, INTERVAL)", + "SELECT asText(wSum(v, INTERVAL '2' DAY), 6) FROM (SELECT /*+ REPARTITION(2) */ tfloatFromText(s) AS v FROM VALUES ('1.5@2020-01-01'), ('2.5@2020-01-02') AS t(s))", + "{[1.5@2020-01-01 00:00:00+00, 1.5@2020-01-02 00:00:00+00), [4@2020-01-02 00:00:00+00, 4@2020-01-03 00:00:00+00], (2.5@2020-01-03 00:00:00+00, 2.5@2020-01-04 00:00:00+00]}"}}; + + @TestFactory + Stream theOverloadAnswersWhatMobilityDBAnswers() { + return Stream.of(OVERLOADS) + .map(c -> DynamicTest.dynamicTest(c[0], () -> assertEquals(c[2], answer(c[1])))); + } +} diff --git a/src/test/resources/pointcloud_schemas.xml b/src/test/resources/pointcloud_schemas.xml new file mode 100644 index 00000000..9ede413e --- /dev/null +++ b/src/test/resources/pointcloud_schemas.xml @@ -0,0 +1,32 @@ + + + + + + 1 + 8 + X + double + + + 2 + 8 + Y + double + + + 3 + 8 + Z + double + + none + +