From b2c916812ab6c11fdc9a67ee4ae20412aee1da3d Mon Sep 17 00:00:00 2001 From: Esteban Zimanyi Date: Mon, 19 Oct 2026 10:13:08 +0200 Subject: [PATCH] Test every aggregate of the typed surface against MobilityDB's answer AggregatesCatalogTest runs each of the 263 aggregate overloads the typed Spark SQL surface registers over two rows of sample values, repartitioned so that the partial states merge, and compares the text of its answer with the one MobilityDB gives over the same rows in the time zone UTC, which the test states. 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. The test also states the 22 aggregate names the surface registers, the catalog's but for the three raster aggregates, which the codegen of JMEOS leaves out, and checks that those three are not registered. The point cloud values name pcid 1, three dimensions of type double, which src/test/resources/pointcloud_schemas.xml states and the test hands to MEOS before the SparkSession is built. --- .../spark/AggregatesCatalogTest.java | 909 ++++++++++++++++++ src/test/resources/pointcloud_schemas.xml | 32 + 2 files changed, 941 insertions(+) create mode 100644 src/test/java/org/mobilitydb/spark/AggregatesCatalogTest.java create mode 100644 src/test/resources/pointcloud_schemas.xml 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 + +