github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/logictest/testdata/logic_test/geospatial (about)

     1  statement ok
     2  CREATE TABLE geo_table(
     3    id int primary key,
     4    geog geography(geometry, 4326),
     5    geom geometry(point),
     6    orphan geography,
     7    FAMILY f (orphan)
     8  )
     9  
    10  statement ok
    11  INSERT INTO geo_table VALUES
    12    (1, 'POINT(1.0 1.0)', 'POINT(2.0 2.0)', 'POINT(3.0 3.0)'),
    13    (2, 'LINESTRING(1.0 1.0, 2.0 2.0)', 'POINT(1.0 1.0)', 'POINT(3.0 3.0)')
    14  
    15  statement error SRID 4004 does not match column SRID 4326
    16  INSERT INTO geo_table (id, geog) VALUES
    17    (3, 'SRID=4004;POINT(1.0 2.0)')
    18  
    19  statement error type LineString does not match column type Point
    20  INSERT INTO geo_table (id, geom) VALUES
    21    (3, 'SRID=4004;LINESTRING(0.0 0.0, 1.0 2.0)')
    22  
    23  query ITTT rowsort
    24  SELECT * FROM geo_table
    25  ----
    26  1  0101000020E6100000000000000000F03F000000000000F03F                                          010100000000000000000000400000000000000040  0101000020E610000000000000000008400000000000000840
    27  2  0102000020E610000002000000000000000000F03F000000000000F03F00000000000000400000000000000040  0101000000000000000000F03F000000000000F03F  0101000020E610000000000000000008400000000000000840
    28  
    29  query T rowsort
    30  SELECT orphan FROM geo_table
    31  ----
    32  0101000020E610000000000000000008400000000000000840
    33  0101000020E610000000000000000008400000000000000840
    34  
    35  query TTBTTTB rowsort
    36  SHOW COLUMNS FROM geo_table
    37  ----
    38  id      INT8                      false  NULL  ·  {primary}  false
    39  geog    GEOGRAPHY(GEOMETRY,4326)  true   NULL  ·  {}         false
    40  geom    GEOMETRY(POINT)           true   NULL  ·  {}         false
    41  orphan  GEOGRAPHY                 true   NULL  ·  {}         false
    42  
    43  statement error column bad_pk is of type geography and thus is not indexable
    44  CREATE TABLE bad_geog_table(bad_pk geography primary key)
    45  
    46  statement error column bad_pk is of type geometry and thus is not indexable
    47  CREATE TABLE bad_geom_table(bad_pk geometry primary key)
    48  
    49  statement error column geog is of type geography and thus is not indexable
    50  CREATE INDEX geog_idx ON geo_table(geog)
    51  
    52  statement error column geom is of type geometry and thus is not indexable
    53  CREATE INDEX geom_idx ON geo_table(geom)
    54  
    55  statement ok
    56  CREATE INVERTED INDEX geog_idx ON geo_table(geog)
    57  
    58  statement ok
    59  CREATE INVERTED INDEX geom_idx ON geo_table(geom)
    60  
    61  statement ok
    62  INSERT INTO geo_table VALUES
    63    (3, 'POINT(1.0 1.0)', 'POINT(2.0 2.0)', 'POINT(3.0 3.0)')
    64  
    65  query ITTT rowsort
    66  SELECT * FROM geo_table
    67  ----
    68  1  0101000020E6100000000000000000F03F000000000000F03F                                          010100000000000000000000400000000000000040  0101000020E610000000000000000008400000000000000840
    69  2  0102000020E610000002000000000000000000F03F000000000000F03F00000000000000400000000000000040  0101000000000000000000F03F000000000000F03F  0101000020E610000000000000000008400000000000000840
    70  3  0101000020E6100000000000000000F03F000000000000F03F                                          010100000000000000000000400000000000000040  0101000020E610000000000000000008400000000000000840
    71  
    72  statement ok
    73  CREATE TABLE geo_array_table(id int, geog geography array, geom geometry array)
    74  
    75  statement ok
    76  INSERT INTO geo_array_table VALUES (
    77    1,
    78    array['POINT(1.0 1.0)'::geography, 'LINESTRING(2.0 2.0, 3.0 3.0)'::geography],
    79    array['POINT(1.0 1.0)'::geometry, 'LINESTRING(2.0 2.0, 3.0 3.0)'::geometry]
    80  )
    81  
    82  query ITT
    83  SELECT * FROM geo_array_table
    84  ----
    85  1  {0101000020E6100000000000000000F03F000000000000F03F,0102000020E6100000020000000000000000000040000000000000004000000000000008400000000000000840}  {0101000000000000000000F03F000000000000F03F,0102000000020000000000000000000040000000000000004000000000000008400000000000000840}
    86  
    87  query TT
    88  SELECT NULL::geometry, NULL::geography
    89  ----
    90  NULL  NULL
    91  
    92  query T
    93  SELECT ST_AsText(p) FROM (VALUES
    94    (ST_Point(1, 2)),
    95    (ST_Point(3, 4))
    96  ) tbl(p)
    97  ----
    98  POINT (1 2)
    99  POINT (3 4)
   100  
   101  subtest cast_test
   102  
   103  query T
   104  SELECT ST_AsEWKT(geom) FROM (VALUES
   105    ('SRID=4326;POINT(1.0 2.0)'::geometry::geometry(point, 4326)),
   106    ('SRID=4326;POINT(1.0 2.0)'::geometry::geometry(geometry, 4326)),
   107    ('SRID=4326;POINT(1.0 2.0)'::geography::geometry)
   108  ) t(geom)
   109  ----
   110  SRID=4326;POINT (1 2)
   111  SRID=4326;POINT (1 2)
   112  SRID=4326;POINT (1 2)
   113  
   114  query T
   115  SELECT ST_AsEWKT(geog) FROM (VALUES
   116    ('POINT(1.0 2.0)'::geography::geography(point, 4326)),
   117    ('POINT(1.0 2.0)'::geometry::geography(point, 4326)),
   118    ('SRID=4004;POINT(1.0 2.0)'::geometry::geography(point, 4004)),
   119    ('SRID=4004;POINT(1.0 2.0)'::geometry::geography),
   120    ('SRID=4004;POINT(1.0 2.0)'::geography::geography(point, 4004)),
   121    ('SRID=4004;POINT(1.0 2.0)'::geography::geography(geometry, 4004)),
   122    ('POINT(1.0 2.0)'::geometry::geography),
   123    ('POINT(1.0 2.0)'::geometry::geography(geometry, 4326))
   124  ) t(geog)
   125  ----
   126  SRID=4326;POINT (1 2)
   127  SRID=4326;POINT (1 2)
   128  SRID=4004;POINT (1 2)
   129  SRID=4004;POINT (1 2)
   130  SRID=4004;POINT (1 2)
   131  SRID=4004;POINT (1 2)
   132  SRID=4326;POINT (1 2)
   133  SRID=4326;POINT (1 2)
   134  
   135  statement error SRID 4004 does not match column SRID 4326
   136  SELECT 'SRID=4004;POINT(2.0 3.0)'::geometry::geography(point, 4326)
   137  
   138  statement error SRID 4326 does not match column SRID 4004
   139  SELECT 'SRID=4326;POINT(2.0 3.0)'::geometry::geography(point, 4004)
   140  
   141  statement error SRID 4326 does not match column SRID 4004
   142  SELECT 'SRID=4326;POINT(2.0 3.0)'::geography::geography(point, 4004)
   143  
   144  statement error SRID 4004 does not match column SRID 4326
   145  SELECT 'SRID=4004;POINT(2.0 3.0)'::geometry::geometry(point, 4326)
   146  
   147  statement error SRID 4004 does not match column SRID 4326
   148  SELECT 'SRID=4004;POINT(2.0 3.0)'::geography::geometry(point, 4326)
   149  
   150  statement error SRID 4326 does not match column SRID 4004
   151  SELECT 'POINT(1.0 2.0)'::geometry::geography(geometry, 4004)
   152  
   153  statement error type Point does not match column type LineString
   154  SELECT 'SRID=4004;POINT(2.0 3.0)'::geometry::geometry(linestring)
   155  
   156  statement error type Point does not match column type LineString
   157  SELECT 'SRID=4004;POINT(2.0 3.0)'::geometry::geography(linestring)
   158  
   159  statement error type Point does not match column type LineString
   160  SELECT 'SRID=4004;POINT(2.0 3.0)'::geography::geography(linestring)
   161  
   162  statement error type Point does not match column type LineString
   163  SELECT 'SRID=4004;POINT(2.0 3.0)'::geography::geometry(linestring)
   164  
   165  subtest parse_and_unparse
   166  
   167  statement ok
   168  CREATE TABLE parse_test (
   169    id SERIAL PRIMARY KEY,
   170    geom GEOMETRY,
   171    geog GEOGRAPHY
   172  )
   173  
   174  # These values cannot be inserted into the database due to mismatching SRIDs.
   175  query TT
   176  SELECT
   177    ST_AsEWKT(geom),
   178    ST_AsEWKT(geog)
   179  FROM ( VALUES
   180    (ST_GeometryFromText('SRID=4326;POINT(1.0 2.0)', 4004), ST_GeographyFromText('SRID=4326;POINT(1.0 2.0)', 4004)),
   181    (ST_GeomFromText('SRID=4326;POINT(1.0 2.0)', 4004), ST_GeogFromText('SRID=4326;POINT(1.0 2.0)', 4004)),
   182    (ST_GeometryFromText('SRID=4326;POINT(1.0 2.0)'), ST_GeographyFromText('POINT(1.0 2.0)', 4004)),
   183    (ST_GeomFromEWKT('SRID=4004;POINT(1.0 2.0)'), ST_GeogFromEWKT('SRID=4004;POINT(1.0 2.0)')),
   184    (ST_GeomFromWKB(decode('0101000000000000000000F03F000000000000F03F', 'hex'), 4004), ST_GeogFromWKB(decode('0101000000000000000000F03F000000000000F03F', 'hex'), 4004))
   185  ) t(geom, geog)
   186  ----
   187  SRID=4004;POINT (1 2)  SRID=4004;POINT (1 2)
   188  SRID=4004;POINT (1 2)  SRID=4004;POINT (1 2)
   189  SRID=4326;POINT (1 2)  SRID=4004;POINT (1 2)
   190  SRID=4004;POINT (1 2)  SRID=4004;POINT (1 2)
   191  SRID=4004;POINT (1 1)  SRID=4004;POINT (1 1)
   192  
   193  
   194  statement ok
   195  INSERT INTO parse_test (geom, geog) VALUES
   196    (ST_GeomFromText('POINT(1.0 2.0)'), ST_GeogFromText('POINT(1.0 2.0)')),
   197    (ST_GeomFromText('SRID=4326;POINT(1.0 2.0)'), ST_GeogFromText('SRID=4326;POINT(1.0 2.0)')),
   198    (ST_GeometryFromText('SRID=4004;POINT(1.0 2.0)'), ST_GeographyFromText('POINT(1.0 2.0)')),
   199    (ST_GeomFromGeoJSON('{"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}'), ST_GeogFromGeoJSON('{"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}')),
   200    (ST_GeomFromGeoJSON('{"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}'::jsonb), ST_GeogFromGeoJSON('{"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}'::jsonb)),
   201    (ST_GeomFromWKB(decode('0101000000000000000000F03F000000000000F03F', 'hex')), ST_GeogFromWKB(decode('0101000000000000000000F03F000000000000F03F', 'hex'))),
   202    (ST_GeomFromEWKB(decode('0101000000000000000000F03F000000000000F03F', 'hex')), ST_GeogFromEWKB(decode('0101000000000000000000F03F000000000000F03F', 'hex'))),
   203    (st_geomfromgeojson('null':::jsonb), st_geogfromgeojson('null':::jsonb))
   204  
   205  query BB
   206  SELECT
   207    st_geomfromwkb(decode('0101000000000000000000F03F000000000000F03F', 'hex')) = st_wkbtosql(decode('0101000000000000000000F03F000000000000F03F', 'hex')),
   208    st_geomfromtext('POINT(1.0 2.0)') = st_wkttosql('POINT(1.0 2.0)')
   209  ----
   210  true  true
   211  
   212  query TTTTTTTT
   213  SELECT
   214    ST_AsText(geom),
   215    ST_AsEWKT(geom),
   216    ST_AsBinary(geom),
   217    ST_AsBinary(geom, 'ndr'),
   218    ST_AsBinary(geom, 'xdr'),
   219    ST_AsEWKB(geom),
   220    ST_AsKML(geom),
   221    ST_AsGeoJSON(geom)
   222  FROM parse_test ORDER BY id ASC
   223  ----
   224  POINT (1 2)                                    POINT (1 2)                                                                           [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   225  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   226  POINT (1 2)                                    SRID=4326;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   227  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   228  POINT (1 2)                                    SRID=4004;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 164 15 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   229  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   230  POINT (1 2)                                    POINT (1 2)                                                                           [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   231  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   232  POINT (1 2)                                    POINT (1 2)                                                                           [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   233  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   234  POINT (1 1)                                    POINT (1 1)                                                                           [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [0 0 0 0 1 63 240 0 0 0 0 0 0 63 240 0 0 0 0 0 0]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  <?xml version="1.0" encoding="UTF-8"?>
   235  <Point><coordinates>1,1</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,1]},"properties":null}
   236  POINT (1 1)                                    POINT (1 1)                                                                           [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [0 0 0 0 1 63 240 0 0 0 0 0 0 63 240 0 0 0 0 0 0]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  <?xml version="1.0" encoding="UTF-8"?>
   237  <Point><coordinates>1,1</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,1]},"properties":null}
   238  NULL                                           NULL                                                                                  NULL  NULL  NULL  NULL  NULL  NULL
   239  
   240  query TTTT
   241  SELECT
   242    ST_AsHexWKB(geom),
   243    ST_AsHexEWKB(geom),
   244    ST_AsHexEWKB(geom, 'ndr'),
   245    ST_AsHexEWKB(geom, 'xdr')
   246  FROM parse_test ORDER BY id ASC
   247  ----
   248  0101000000000000000000F03F0000000000000040  0101000000000000000000F03F0000000000000040          0101000000000000000000F03F0000000000000040          00000000013FF00000000000004000000000000000
   249  0101000000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0020000001000010E63FF00000000000004000000000000000
   250  0101000000000000000000F03F0000000000000040  0101000020A40F0000000000000000F03F0000000000000040  0101000020A40F0000000000000000F03F0000000000000040  002000000100000FA43FF00000000000004000000000000000
   251  0101000000000000000000F03F0000000000000040  0101000000000000000000F03F0000000000000040          0101000000000000000000F03F0000000000000040          00000000013FF00000000000004000000000000000
   252  0101000000000000000000F03F0000000000000040  0101000000000000000000F03F0000000000000040          0101000000000000000000F03F0000000000000040          00000000013FF00000000000004000000000000000
   253  0101000000000000000000F03F000000000000F03F  0101000000000000000000F03F000000000000F03F          0101000000000000000000F03F000000000000F03F          00000000013FF00000000000003FF0000000000000
   254  0101000000000000000000F03F000000000000F03F  0101000000000000000000F03F000000000000F03F          0101000000000000000000F03F000000000000F03F          00000000013FF00000000000003FF0000000000000
   255  NULL                                        NULL                                                NULL                                                NULL
   256  
   257  query TTTTTTTT
   258  SELECT
   259    ST_AsText(geog),
   260    ST_AsEWKT(geog),
   261    ST_AsBinary(geog),
   262    ST_AsBinary(geog, 'ndr'),
   263    ST_AsBinary(geog, 'xdr'),
   264    ST_AsEWKB(geog),
   265    ST_AsKML(geog),
   266    ST_AsGeoJSON(geog)
   267  FROM parse_test ORDER BY id ASC
   268  ----
   269  POINT (1 2)                                    SRID=4326;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   270  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   271  POINT (1 2)                                    SRID=4326;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   272  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   273  POINT (1 2)                                    SRID=4326;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   274  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   275  POINT (1 2)                                    SRID=4326;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   276  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   277  POINT (1 2)                                    SRID=4326;POINT (1 2)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  [0 0 0 0 1 63 240 0 0 0 0 0 0 64 0 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 0 64]  <?xml version="1.0" encoding="UTF-8"?>
   278  <Point><coordinates>1,2</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,2]},"properties":null}
   279  POINT (1 1)                                    SRID=4326;POINT (1 1)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [0 0 0 0 1 63 240 0 0 0 0 0 0 63 240 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  <?xml version="1.0" encoding="UTF-8"?>
   280  <Point><coordinates>1,1</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,1]},"properties":null}
   281  POINT (1 1)                                    SRID=4326;POINT (1 1)                                                                 [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [1 1 0 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  [0 0 0 0 1 63 240 0 0 0 0 0 0 63 240 0 0 0 0 0 0]  [1 1 0 0 32 230 16 0 0 0 0 0 0 0 0 240 63 0 0 0 0 0 0 240 63]  <?xml version="1.0" encoding="UTF-8"?>
   282  <Point><coordinates>1,1</coordinates></Point>  {"type":"Feature","geometry":{"type":"Point","coordinates":[1,1]},"properties":null}
   283  NULL                                           NULL                                                                                  NULL  NULL  NULL  NULL  NULL  NULL
   284  
   285  query TTTT
   286  SELECT
   287    ST_AsHexWKB(geog),
   288    ST_AsHexEWKB(geog),
   289    ST_AsHexEWKB(geog, 'ndr'),
   290    ST_AsHexEWKB(geog, 'xdr')
   291  FROM parse_test ORDER BY id ASC
   292  ----
   293  0101000000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0020000001000010E63FF00000000000004000000000000000
   294  0101000000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0020000001000010E63FF00000000000004000000000000000
   295  0101000000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0020000001000010E63FF00000000000004000000000000000
   296  0101000000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0020000001000010E63FF00000000000004000000000000000
   297  0101000000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0101000020E6100000000000000000F03F0000000000000040  0020000001000010E63FF00000000000004000000000000000
   298  0101000000000000000000F03F000000000000F03F  0101000020E6100000000000000000F03F000000000000F03F  0101000020E6100000000000000000F03F000000000000F03F  0020000001000010E63FF00000000000003FF0000000000000
   299  0101000000000000000000F03F000000000000F03F  0101000020E6100000000000000000F03F000000000000F03F  0101000020E6100000000000000000F03F000000000000F03F  0020000001000010E63FF00000000000003FF0000000000000
   300  NULL                                        NULL                                                NULL                                                NULL
   301  
   302  query TTTTTTTT
   303  SELECT
   304    ST_PointFromText('POINT(1.0 1.0)'),
   305    ST_PointFromText('POINT(1.0 1.0)', 4326),
   306    ST_PointFromText('LINESTRING(1.0 1.0, 2.0 2.0)'),
   307    ST_PointFromText('LINESTRING(1.0 1.0, 2.0 2.0)', 4326),
   308    ST_PointFromWKB(ST_AsBinary('POINT(1.0 1.0)'::geometry)),
   309    ST_PointFromWKB(ST_AsBinary('POINT(1.0 1.0)'::geometry), 4326),
   310    ST_PointFromWKB(ST_AsBinary('LINESTRING(1.0 1.0, 2.0 2.0)'::geometry)),
   311    ST_PointFromWKB(ST_AsBinary('LINESTRING(1.0 1.0, 2.0 2.0)'::geometry), 4326)
   312  ----
   313  0101000000000000000000F03F000000000000F03F  0101000020E6100000000000000000F03F000000000000F03F  NULL  NULL  0101000000000000000000F03F000000000000F03F  0101000020E6100000000000000000F03F000000000000F03F  NULL  NULL
   314  
   315  subtest geom_operators
   316  
   317  statement ok
   318  CREATE TABLE geom_operators_test (
   319    dsc TEXT PRIMARY KEY,
   320    geom GEOMETRY
   321  )
   322  
   323  statement ok
   324  INSERT INTO geom_operators_test VALUES
   325    ('NULL', NULL),
   326    ('Square (left)', 'POLYGON((-1.0 0.0, 0.0 0.0, 0.0 1.0, -1.0 1.0, -1.0 0.0))'),
   327    ('Point middle of Left Square', 'POINT(-0.5 0.5)'),
   328    ('Square (right)', 'POLYGON((0.0 0.0, 1.0 0.0, 1.0 1.0, 0.0 1.0, 0.0 0.0))'),
   329    ('Point middle of Right Square', 'POINT(0.5 0.5)'),
   330    ('Square overlapping left and right square', 'POLYGON((-0.1 0.0, 1.0 0.0, 1.0 1.0, -0.1 1.0, -0.1 0.0))'),
   331    ('Line going through left and right square', 'LINESTRING(-0.5 0.5, 0.5 0.5)'),
   332    ('Faraway point', 'POINT(5.0 5.0)'),
   333    ('Empty LineString', 'LINESTRING EMPTY'),
   334    ('Empty GeometryCollection', 'GEOMETRYCOLLECTION EMPTY')
   335    -- ('Partially Empty GeometryCollection', 'GEOMETRYCOLLECTION ( LINESTRING EMPTY, POINT (0.0 0.0) )'): omitted, see: #49209
   336  
   337  # GROUP BY
   338  query TR
   339  SELECT
   340    a.dsc,
   341    ST_Area(a.geom)
   342  FROM geom_operators_test a
   343  GROUP BY a.dsc, a.geom
   344  ORDER BY a.dsc
   345  ----
   346  Empty GeometryCollection                  0
   347  Empty LineString                          0
   348  Faraway point                             0
   349  Line going through left and right square  0
   350  NULL                                      NULL
   351  Point middle of Left Square               0
   352  Point middle of Right Square              0
   353  Square (left)                             1
   354  Square (right)                            1
   355  Square overlapping left and right square  1.1
   356  
   357  # Unary operators
   358  query TRRRR
   359  SELECT
   360    a.dsc,
   361    ST_Area(a.geom),
   362    ST_Area2D(a.geom),
   363    ST_Length(a.geom),
   364    ST_Perimeter(a.geom)
   365  FROM geom_operators_test a
   366  ORDER BY a.dsc
   367  ----
   368  Empty GeometryCollection                  0     0     0     0
   369  Empty LineString                          0     0     0     0
   370  Faraway point                             0     0     0     0
   371  Line going through left and right square  0     0     1     0
   372  NULL                                      NULL  NULL  NULL  NULL
   373  Point middle of Left Square               0     0     0     0
   374  Point middle of Right Square              0     0     0     0
   375  Square (left)                             1     1     0     4
   376  Square (right)                            1     1     0     4
   377  Square overlapping left and right square  1.1   1.1   0     4.2
   378  
   379  query TT
   380  SELECT
   381    a.dsc,
   382    ST_AsEWKT(ST_Centroid(a.geom))
   383  FROM geom_operators_test a
   384  ORDER BY a.dsc
   385  ----
   386  Empty GeometryCollection                  POINT EMPTY
   387  Empty LineString                          POINT EMPTY
   388  Faraway point                             POINT (5 5)
   389  Line going through left and right square  POINT (0 0.5)
   390  NULL                                      NULL
   391  Point middle of Left Square               POINT (-0.5 0.5)
   392  Point middle of Right Square              POINT (0.5 0.5)
   393  Square (left)                             POINT (-0.5 0.5)
   394  Square (right)                            POINT (0.5 0.5)
   395  Square overlapping left and right square  POINT (0.4499999999999999 0.5)
   396  
   397  # Functions which take in strings as input as well.
   398  query TT
   399  SELECT
   400    dsc,
   401    ST_AsEWKT(ST_Centroid(ewkt))
   402  FROM [SELECT dsc, ST_AsEWKT(a.geom) ewkt FROM geom_operators_test a]
   403  ORDER BY dsc ASC
   404  ----
   405  Empty GeometryCollection                  POINT EMPTY
   406  Empty LineString                          POINT EMPTY
   407  Faraway point                             POINT (5 5)
   408  Line going through left and right square  POINT (0 0.5)
   409  NULL                                      NULL
   410  Point middle of Left Square               POINT (-0.5 0.5)
   411  Point middle of Right Square              POINT (0.5 0.5)
   412  Square (left)                             POINT (-0.5 0.5)
   413  Square (right)                            POINT (0.5 0.5)
   414  Square overlapping left and right square  POINT (0.4499999999999999 0.5)
   415  
   416  # Binary operators
   417  query TTRR
   418  SELECT
   419    a.dsc,
   420    b.dsc,
   421    ST_Distance(a.geom, b.geom),
   422    ST_MaxDistance(a.geom, b.geom)
   423  FROM geom_operators_test a
   424  JOIN geom_operators_test b ON (1=1)
   425  ORDER BY a.dsc, b.dsc
   426  ----
   427  Empty GeometryCollection                  Empty GeometryCollection                  NULL              NULL
   428  Empty GeometryCollection                  Empty LineString                          NULL              NULL
   429  Empty GeometryCollection                  Faraway point                             NULL              NULL
   430  Empty GeometryCollection                  Line going through left and right square  NULL              NULL
   431  Empty GeometryCollection                  NULL                                      NULL              NULL
   432  Empty GeometryCollection                  Point middle of Left Square               NULL              NULL
   433  Empty GeometryCollection                  Point middle of Right Square              NULL              NULL
   434  Empty GeometryCollection                  Square (left)                             NULL              NULL
   435  Empty GeometryCollection                  Square (right)                            NULL              NULL
   436  Empty GeometryCollection                  Square overlapping left and right square  NULL              NULL
   437  Empty LineString                          Empty GeometryCollection                  NULL              NULL
   438  Empty LineString                          Empty LineString                          NULL              NULL
   439  Empty LineString                          Faraway point                             NULL              NULL
   440  Empty LineString                          Line going through left and right square  NULL              NULL
   441  Empty LineString                          NULL                                      NULL              NULL
   442  Empty LineString                          Point middle of Left Square               NULL              NULL
   443  Empty LineString                          Point middle of Right Square              NULL              NULL
   444  Empty LineString                          Square (left)                             NULL              NULL
   445  Empty LineString                          Square (right)                            NULL              NULL
   446  Empty LineString                          Square overlapping left and right square  NULL              NULL
   447  Faraway point                             Empty GeometryCollection                  NULL              NULL
   448  Faraway point                             Empty LineString                          NULL              NULL
   449  Faraway point                             Faraway point                             0                 0
   450  Faraway point                             Line going through left and right square  6.36396103067893  7.10633520177595
   451  Faraway point                             NULL                                      NULL              NULL
   452  Faraway point                             Point middle of Left Square               7.10633520177595  7.10633520177595
   453  Faraway point                             Point middle of Right Square              6.36396103067893  6.36396103067893
   454  Faraway point                             Square (left)                             6.40312423743285  7.81024967590665
   455  Faraway point                             Square (right)                            5.65685424949238  7.07106781186548
   456  Faraway point                             Square overlapping left and right square  5.65685424949238  7.14212853426764
   457  Line going through left and right square  Empty GeometryCollection                  NULL              NULL
   458  Line going through left and right square  Empty LineString                          NULL              NULL
   459  Line going through left and right square  Faraway point                             6.36396103067893  7.10633520177595
   460  Line going through left and right square  Line going through left and right square  0                 1
   461  Line going through left and right square  NULL                                      NULL              NULL
   462  Line going through left and right square  Point middle of Left Square               0                 1
   463  Line going through left and right square  Point middle of Right Square              0                 1
   464  Line going through left and right square  Square (left)                             0                 1.58113883008419
   465  Line going through left and right square  Square (right)                            0                 1.58113883008419
   466  Line going through left and right square  Square overlapping left and right square  0                 1.58113883008419
   467  NULL                                      Empty GeometryCollection                  NULL              NULL
   468  NULL                                      Empty LineString                          NULL              NULL
   469  NULL                                      Faraway point                             NULL              NULL
   470  NULL                                      Line going through left and right square  NULL              NULL
   471  NULL                                      NULL                                      NULL              NULL
   472  NULL                                      Point middle of Left Square               NULL              NULL
   473  NULL                                      Point middle of Right Square              NULL              NULL
   474  NULL                                      Square (left)                             NULL              NULL
   475  NULL                                      Square (right)                            NULL              NULL
   476  NULL                                      Square overlapping left and right square  NULL              NULL
   477  Point middle of Left Square               Empty GeometryCollection                  NULL              NULL
   478  Point middle of Left Square               Empty LineString                          NULL              NULL
   479  Point middle of Left Square               Faraway point                             7.10633520177595  7.10633520177595
   480  Point middle of Left Square               Line going through left and right square  0                 1
   481  Point middle of Left Square               NULL                                      NULL              NULL
   482  Point middle of Left Square               Point middle of Left Square               0                 0
   483  Point middle of Left Square               Point middle of Right Square              1                 1
   484  Point middle of Left Square               Square (left)                             0                 0.707106781186548
   485  Point middle of Left Square               Square (right)                            0.5               1.58113883008419
   486  Point middle of Left Square               Square overlapping left and right square  0.4               1.58113883008419
   487  Point middle of Right Square              Empty GeometryCollection                  NULL              NULL
   488  Point middle of Right Square              Empty LineString                          NULL              NULL
   489  Point middle of Right Square              Faraway point                             6.36396103067893  6.36396103067893
   490  Point middle of Right Square              Line going through left and right square  0                 1
   491  Point middle of Right Square              NULL                                      NULL              NULL
   492  Point middle of Right Square              Point middle of Left Square               1                 1
   493  Point middle of Right Square              Point middle of Right Square              0                 0
   494  Point middle of Right Square              Square (left)                             0.5               1.58113883008419
   495  Point middle of Right Square              Square (right)                            0                 0.707106781186548
   496  Point middle of Right Square              Square overlapping left and right square  0                 0.781024967590665
   497  Square (left)                             Empty GeometryCollection                  NULL              NULL
   498  Square (left)                             Empty LineString                          NULL              NULL
   499  Square (left)                             Faraway point                             6.40312423743285  7.81024967590665
   500  Square (left)                             Line going through left and right square  0                 1.58113883008419
   501  Square (left)                             NULL                                      NULL              NULL
   502  Square (left)                             Point middle of Left Square               0                 0.707106781186548
   503  Square (left)                             Point middle of Right Square              0.5               1.58113883008419
   504  Square (left)                             Square (left)                             0                 1.4142135623731
   505  Square (left)                             Square (right)                            0                 2.23606797749979
   506  Square (left)                             Square overlapping left and right square  0                 2.23606797749979
   507  Square (right)                            Empty GeometryCollection                  NULL              NULL
   508  Square (right)                            Empty LineString                          NULL              NULL
   509  Square (right)                            Faraway point                             5.65685424949238  7.07106781186548
   510  Square (right)                            Line going through left and right square  0                 1.58113883008419
   511  Square (right)                            NULL                                      NULL              NULL
   512  Square (right)                            Point middle of Left Square               0.5               1.58113883008419
   513  Square (right)                            Point middle of Right Square              0                 0.707106781186548
   514  Square (right)                            Square (left)                             0                 2.23606797749979
   515  Square (right)                            Square (right)                            0                 1.4142135623731
   516  Square (right)                            Square overlapping left and right square  0                 1.48660687473185
   517  Square overlapping left and right square  Empty GeometryCollection                  NULL              NULL
   518  Square overlapping left and right square  Empty LineString                          NULL              NULL
   519  Square overlapping left and right square  Faraway point                             5.65685424949238  7.14212853426764
   520  Square overlapping left and right square  Line going through left and right square  0                 1.58113883008419
   521  Square overlapping left and right square  NULL                                      NULL              NULL
   522  Square overlapping left and right square  Point middle of Left Square               0.4               1.58113883008419
   523  Square overlapping left and right square  Point middle of Right Square              0                 0.781024967590665
   524  Square overlapping left and right square  Square (left)                             0                 2.23606797749979
   525  Square overlapping left and right square  Square (right)                            0                 1.48660687473185
   526  Square overlapping left and right square  Square overlapping left and right square  0                 1.48660687473185
   527  
   528  # Binary predicates
   529  query TTBBBBBBBBBB
   530  SELECT
   531    a.dsc,
   532    b.dsc,
   533    ST_Covers(a.geom, b.geom),
   534    ST_CoveredBy(a.geom, b.geom),
   535    ST_Contains(a.geom, b.geom),
   536    ST_ContainsProperly(a.geom, b.geom),
   537    ST_Crosses(a.geom, b.geom),
   538    ST_Equals(a.geom, b.geom),
   539    ST_Intersects(a.geom, b.geom),
   540    ST_Overlaps(a.geom, b.geom),
   541    ST_Touches(a.geom, b.geom),
   542    ST_Within(a.geom, b.geom)
   543  FROM geom_operators_test a
   544  JOIN geom_operators_test b ON (1=1)
   545  ORDER BY a.dsc, b.dsc
   546  ----
   547  Empty GeometryCollection                  Empty GeometryCollection                  false  false  false  false  false  true   false  false  false  false
   548  Empty GeometryCollection                  Empty LineString                          false  false  false  false  false  true   false  false  false  false
   549  Empty GeometryCollection                  Faraway point                             false  false  false  false  false  false  false  false  false  false
   550  Empty GeometryCollection                  Line going through left and right square  false  false  false  false  false  false  false  false  false  false
   551  Empty GeometryCollection                  NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   552  Empty GeometryCollection                  Point middle of Left Square               false  false  false  false  false  false  false  false  false  false
   553  Empty GeometryCollection                  Point middle of Right Square              false  false  false  false  false  false  false  false  false  false
   554  Empty GeometryCollection                  Square (left)                             false  false  false  false  false  false  false  false  false  false
   555  Empty GeometryCollection                  Square (right)                            false  false  false  false  false  false  false  false  false  false
   556  Empty GeometryCollection                  Square overlapping left and right square  false  false  false  false  false  false  false  false  false  false
   557  Empty LineString                          Empty GeometryCollection                  false  false  false  false  false  true   false  false  false  false
   558  Empty LineString                          Empty LineString                          false  false  false  false  false  true   false  false  false  false
   559  Empty LineString                          Faraway point                             false  false  false  false  false  false  false  false  false  false
   560  Empty LineString                          Line going through left and right square  false  false  false  false  false  false  false  false  false  false
   561  Empty LineString                          NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   562  Empty LineString                          Point middle of Left Square               false  false  false  false  false  false  false  false  false  false
   563  Empty LineString                          Point middle of Right Square              false  false  false  false  false  false  false  false  false  false
   564  Empty LineString                          Square (left)                             false  false  false  false  false  false  false  false  false  false
   565  Empty LineString                          Square (right)                            false  false  false  false  false  false  false  false  false  false
   566  Empty LineString                          Square overlapping left and right square  false  false  false  false  false  false  false  false  false  false
   567  Faraway point                             Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   568  Faraway point                             Empty LineString                          false  false  false  false  false  false  false  false  false  false
   569  Faraway point                             Faraway point                             true   true   true   true   false  true   true   false  false  true
   570  Faraway point                             Line going through left and right square  false  false  false  false  false  false  false  false  false  false
   571  Faraway point                             NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   572  Faraway point                             Point middle of Left Square               false  false  false  false  false  false  false  false  false  false
   573  Faraway point                             Point middle of Right Square              false  false  false  false  false  false  false  false  false  false
   574  Faraway point                             Square (left)                             false  false  false  false  false  false  false  false  false  false
   575  Faraway point                             Square (right)                            false  false  false  false  false  false  false  false  false  false
   576  Faraway point                             Square overlapping left and right square  false  false  false  false  false  false  false  false  false  false
   577  Line going through left and right square  Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   578  Line going through left and right square  Empty LineString                          false  false  false  false  false  false  false  false  false  false
   579  Line going through left and right square  Faraway point                             false  false  false  false  false  false  false  false  false  false
   580  Line going through left and right square  Line going through left and right square  true   true   true   false  false  true   true   false  false  true
   581  Line going through left and right square  NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   582  Line going through left and right square  Point middle of Left Square               true   false  false  false  false  false  true   false  true   false
   583  Line going through left and right square  Point middle of Right Square              true   false  false  false  false  false  true   false  true   false
   584  Line going through left and right square  Square (left)                             false  false  false  false  true   false  true   false  false  false
   585  Line going through left and right square  Square (right)                            false  false  false  false  true   false  true   false  false  false
   586  Line going through left and right square  Square overlapping left and right square  false  false  false  false  true   false  true   false  false  false
   587  NULL                                      Empty GeometryCollection                  NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   588  NULL                                      Empty LineString                          NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   589  NULL                                      Faraway point                             NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   590  NULL                                      Line going through left and right square  NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   591  NULL                                      NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   592  NULL                                      Point middle of Left Square               NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   593  NULL                                      Point middle of Right Square              NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   594  NULL                                      Square (left)                             NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   595  NULL                                      Square (right)                            NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   596  NULL                                      Square overlapping left and right square  NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   597  Point middle of Left Square               Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   598  Point middle of Left Square               Empty LineString                          false  false  false  false  false  false  false  false  false  false
   599  Point middle of Left Square               Faraway point                             false  false  false  false  false  false  false  false  false  false
   600  Point middle of Left Square               Line going through left and right square  false  true   false  false  false  false  true   false  true   false
   601  Point middle of Left Square               NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   602  Point middle of Left Square               Point middle of Left Square               true   true   true   true   false  true   true   false  false  true
   603  Point middle of Left Square               Point middle of Right Square              false  false  false  false  false  false  false  false  false  false
   604  Point middle of Left Square               Square (left)                             false  true   false  false  false  false  true   false  false  true
   605  Point middle of Left Square               Square (right)                            false  false  false  false  false  false  false  false  false  false
   606  Point middle of Left Square               Square overlapping left and right square  false  false  false  false  false  false  false  false  false  false
   607  Point middle of Right Square              Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   608  Point middle of Right Square              Empty LineString                          false  false  false  false  false  false  false  false  false  false
   609  Point middle of Right Square              Faraway point                             false  false  false  false  false  false  false  false  false  false
   610  Point middle of Right Square              Line going through left and right square  false  true   false  false  false  false  true   false  true   false
   611  Point middle of Right Square              NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   612  Point middle of Right Square              Point middle of Left Square               false  false  false  false  false  false  false  false  false  false
   613  Point middle of Right Square              Point middle of Right Square              true   true   true   true   false  true   true   false  false  true
   614  Point middle of Right Square              Square (left)                             false  false  false  false  false  false  false  false  false  false
   615  Point middle of Right Square              Square (right)                            false  true   false  false  false  false  true   false  false  true
   616  Point middle of Right Square              Square overlapping left and right square  false  true   false  false  false  false  true   false  false  true
   617  Square (left)                             Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   618  Square (left)                             Empty LineString                          false  false  false  false  false  false  false  false  false  false
   619  Square (left)                             Faraway point                             false  false  false  false  false  false  false  false  false  false
   620  Square (left)                             Line going through left and right square  false  false  false  false  true   false  true   false  false  false
   621  Square (left)                             NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   622  Square (left)                             Point middle of Left Square               true   false  true   true   false  false  true   false  false  false
   623  Square (left)                             Point middle of Right Square              false  false  false  false  false  false  false  false  false  false
   624  Square (left)                             Square (left)                             true   true   true   false  false  true   true   false  false  true
   625  Square (left)                             Square (right)                            false  false  false  false  false  false  true   false  true   false
   626  Square (left)                             Square overlapping left and right square  false  false  false  false  false  false  true   true   false  false
   627  Square (right)                            Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   628  Square (right)                            Empty LineString                          false  false  false  false  false  false  false  false  false  false
   629  Square (right)                            Faraway point                             false  false  false  false  false  false  false  false  false  false
   630  Square (right)                            Line going through left and right square  false  false  false  false  true   false  true   false  false  false
   631  Square (right)                            NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   632  Square (right)                            Point middle of Left Square               false  false  false  false  false  false  false  false  false  false
   633  Square (right)                            Point middle of Right Square              true   false  true   true   false  false  true   false  false  false
   634  Square (right)                            Square (left)                             false  false  false  false  false  false  true   false  true   false
   635  Square (right)                            Square (right)                            true   true   true   false  false  true   true   false  false  true
   636  Square (right)                            Square overlapping left and right square  false  true   false  false  false  false  true   false  false  true
   637  Square overlapping left and right square  Empty GeometryCollection                  false  false  false  false  false  false  false  false  false  false
   638  Square overlapping left and right square  Empty LineString                          false  false  false  false  false  false  false  false  false  false
   639  Square overlapping left and right square  Faraway point                             false  false  false  false  false  false  false  false  false  false
   640  Square overlapping left and right square  Line going through left and right square  false  false  false  false  true   false  true   false  false  false
   641  Square overlapping left and right square  NULL                                      NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL   NULL
   642  Square overlapping left and right square  Point middle of Left Square               false  false  false  false  false  false  false  false  false  false
   643  Square overlapping left and right square  Point middle of Right Square              true   false  true   true   false  false  true   false  false  false
   644  Square overlapping left and right square  Square (left)                             false  false  false  false  false  false  true   true   false  false
   645  Square overlapping left and right square  Square (right)                            true   false  true   false  false  false  true   false  false  false
   646  Square overlapping left and right square  Square overlapping left and right square  true   true   true   false  false  true   true   false  false  true
   647  
   648  # DWithin
   649  query TTBB
   650  SELECT
   651    a.dsc,
   652    b.dsc,
   653    ST_DWithin(a.geom, b.geom, 1),
   654    ST_DFullyWithin(a.geom, b.geom, 1)
   655  FROM geom_operators_test a
   656  JOIN geom_operators_test b ON (1=1)
   657  ORDER BY a.dsc, b.dsc
   658  ----
   659  Empty GeometryCollection                  Empty GeometryCollection                  false  false
   660  Empty GeometryCollection                  Empty LineString                          false  false
   661  Empty GeometryCollection                  Faraway point                             false  false
   662  Empty GeometryCollection                  Line going through left and right square  false  false
   663  Empty GeometryCollection                  NULL                                      NULL   NULL
   664  Empty GeometryCollection                  Point middle of Left Square               false  false
   665  Empty GeometryCollection                  Point middle of Right Square              false  false
   666  Empty GeometryCollection                  Square (left)                             false  false
   667  Empty GeometryCollection                  Square (right)                            false  false
   668  Empty GeometryCollection                  Square overlapping left and right square  false  false
   669  Empty LineString                          Empty GeometryCollection                  false  false
   670  Empty LineString                          Empty LineString                          false  false
   671  Empty LineString                          Faraway point                             false  false
   672  Empty LineString                          Line going through left and right square  false  false
   673  Empty LineString                          NULL                                      NULL   NULL
   674  Empty LineString                          Point middle of Left Square               false  false
   675  Empty LineString                          Point middle of Right Square              false  false
   676  Empty LineString                          Square (left)                             false  false
   677  Empty LineString                          Square (right)                            false  false
   678  Empty LineString                          Square overlapping left and right square  false  false
   679  Faraway point                             Empty GeometryCollection                  false  false
   680  Faraway point                             Empty LineString                          false  false
   681  Faraway point                             Faraway point                             true   true
   682  Faraway point                             Line going through left and right square  false  false
   683  Faraway point                             NULL                                      NULL   NULL
   684  Faraway point                             Point middle of Left Square               false  false
   685  Faraway point                             Point middle of Right Square              false  false
   686  Faraway point                             Square (left)                             false  false
   687  Faraway point                             Square (right)                            false  false
   688  Faraway point                             Square overlapping left and right square  false  false
   689  Line going through left and right square  Empty GeometryCollection                  false  false
   690  Line going through left and right square  Empty LineString                          false  false
   691  Line going through left and right square  Faraway point                             false  false
   692  Line going through left and right square  Line going through left and right square  true   true
   693  Line going through left and right square  NULL                                      NULL   NULL
   694  Line going through left and right square  Point middle of Left Square               true   true
   695  Line going through left and right square  Point middle of Right Square              true   true
   696  Line going through left and right square  Square (left)                             true   false
   697  Line going through left and right square  Square (right)                            true   false
   698  Line going through left and right square  Square overlapping left and right square  true   false
   699  NULL                                      Empty GeometryCollection                  NULL   NULL
   700  NULL                                      Empty LineString                          NULL   NULL
   701  NULL                                      Faraway point                             NULL   NULL
   702  NULL                                      Line going through left and right square  NULL   NULL
   703  NULL                                      NULL                                      NULL   NULL
   704  NULL                                      Point middle of Left Square               NULL   NULL
   705  NULL                                      Point middle of Right Square              NULL   NULL
   706  NULL                                      Square (left)                             NULL   NULL
   707  NULL                                      Square (right)                            NULL   NULL
   708  NULL                                      Square overlapping left and right square  NULL   NULL
   709  Point middle of Left Square               Empty GeometryCollection                  false  false
   710  Point middle of Left Square               Empty LineString                          false  false
   711  Point middle of Left Square               Faraway point                             false  false
   712  Point middle of Left Square               Line going through left and right square  true   true
   713  Point middle of Left Square               NULL                                      NULL   NULL
   714  Point middle of Left Square               Point middle of Left Square               true   true
   715  Point middle of Left Square               Point middle of Right Square              true   true
   716  Point middle of Left Square               Square (left)                             true   true
   717  Point middle of Left Square               Square (right)                            true   false
   718  Point middle of Left Square               Square overlapping left and right square  true   false
   719  Point middle of Right Square              Empty GeometryCollection                  false  false
   720  Point middle of Right Square              Empty LineString                          false  false
   721  Point middle of Right Square              Faraway point                             false  false
   722  Point middle of Right Square              Line going through left and right square  true   true
   723  Point middle of Right Square              NULL                                      NULL   NULL
   724  Point middle of Right Square              Point middle of Left Square               true   true
   725  Point middle of Right Square              Point middle of Right Square              true   true
   726  Point middle of Right Square              Square (left)                             true   false
   727  Point middle of Right Square              Square (right)                            true   true
   728  Point middle of Right Square              Square overlapping left and right square  true   true
   729  Square (left)                             Empty GeometryCollection                  false  false
   730  Square (left)                             Empty LineString                          false  false
   731  Square (left)                             Faraway point                             false  false
   732  Square (left)                             Line going through left and right square  true   false
   733  Square (left)                             NULL                                      NULL   NULL
   734  Square (left)                             Point middle of Left Square               true   true
   735  Square (left)                             Point middle of Right Square              true   false
   736  Square (left)                             Square (left)                             true   false
   737  Square (left)                             Square (right)                            true   false
   738  Square (left)                             Square overlapping left and right square  true   false
   739  Square (right)                            Empty GeometryCollection                  false  false
   740  Square (right)                            Empty LineString                          false  false
   741  Square (right)                            Faraway point                             false  false
   742  Square (right)                            Line going through left and right square  true   false
   743  Square (right)                            NULL                                      NULL   NULL
   744  Square (right)                            Point middle of Left Square               true   false
   745  Square (right)                            Point middle of Right Square              true   true
   746  Square (right)                            Square (left)                             true   false
   747  Square (right)                            Square (right)                            true   false
   748  Square (right)                            Square overlapping left and right square  true   false
   749  Square overlapping left and right square  Empty GeometryCollection                  false  false
   750  Square overlapping left and right square  Empty LineString                          false  false
   751  Square overlapping left and right square  Faraway point                             false  false
   752  Square overlapping left and right square  Line going through left and right square  true   false
   753  Square overlapping left and right square  NULL                                      NULL   NULL
   754  Square overlapping left and right square  Point middle of Left Square               true   false
   755  Square overlapping left and right square  Point middle of Right Square              true   true
   756  Square overlapping left and right square  Square (left)                             true   false
   757  Square overlapping left and right square  Square (right)                            true   false
   758  Square overlapping left and right square  Square overlapping left and right square  true   false
   759  
   760  # Buffer -- unfortunately due to floating point precision, these results can be off by small
   761  # epsilon across operating systems. Until ST_AsEWKT with precision is implemented, we'll have to
   762  # verify that it works by checking another statistic for now.
   763  query TIII
   764  SELECT
   765    a.dsc,
   766    ST_NPoints(ST_Buffer(a.geom, 10)),
   767    ST_NPoints(ST_Buffer(a.geom, 10, 2)),
   768    ST_NPoints(ST_Buffer(a.geom, 10, 'quad_segs=4 endcap=flat'))
   769  FROM geom_operators_test a
   770  ORDER BY a.dsc
   771  ----
   772  Empty GeometryCollection                  0     0     0
   773  Empty LineString                          0     0     0
   774  Faraway point                             33    9     0
   775  Line going through left and right square  35    11    5
   776  NULL                                      NULL  NULL  NULL
   777  Point middle of Left Square               33    9     0
   778  Point middle of Right Square              33    9     0
   779  Square (left)                             37    13    21
   780  Square (right)                            37    13    21
   781  Square overlapping left and right square  37    13    21
   782  
   783  # Test raw string with ST_Buffer
   784  query I
   785  SELECT ST_NPoints(ST_Buffer('SRID=4326;POINT(0 0)', 10.0))
   786  ----
   787  33
   788  
   789  # DE-9IM relations
   790  query TTTB
   791  SELECT
   792    a.dsc,
   793    b.dsc,
   794    ST_Relate(a.geom, b.geom),
   795    ST_Relate(a.geom, b.geom, 'T**FF*FF*')
   796  FROM geom_operators_test a
   797  JOIN geom_operators_test b ON (1=1)
   798  ORDER BY a.dsc, b.dsc
   799  ----
   800  Empty GeometryCollection                  Empty GeometryCollection                  FFFFFFFF2  false
   801  Empty GeometryCollection                  Empty LineString                          FFFFFFFF2  false
   802  Empty GeometryCollection                  Faraway point                             FFFFFF0F2  false
   803  Empty GeometryCollection                  Line going through left and right square  FFFFFF102  false
   804  Empty GeometryCollection                  NULL                                      NULL       NULL
   805  Empty GeometryCollection                  Point middle of Left Square               FFFFFF0F2  false
   806  Empty GeometryCollection                  Point middle of Right Square              FFFFFF0F2  false
   807  Empty GeometryCollection                  Square (left)                             FFFFFF212  false
   808  Empty GeometryCollection                  Square (right)                            FFFFFF212  false
   809  Empty GeometryCollection                  Square overlapping left and right square  FFFFFF212  false
   810  Empty LineString                          Empty GeometryCollection                  FFFFFFFF2  false
   811  Empty LineString                          Empty LineString                          FFFFFFFF2  false
   812  Empty LineString                          Faraway point                             FFFFFF0F2  false
   813  Empty LineString                          Line going through left and right square  FFFFFF102  false
   814  Empty LineString                          NULL                                      NULL       NULL
   815  Empty LineString                          Point middle of Left Square               FFFFFF0F2  false
   816  Empty LineString                          Point middle of Right Square              FFFFFF0F2  false
   817  Empty LineString                          Square (left)                             FFFFFF212  false
   818  Empty LineString                          Square (right)                            FFFFFF212  false
   819  Empty LineString                          Square overlapping left and right square  FFFFFF212  false
   820  Faraway point                             Empty GeometryCollection                  FF0FFFFF2  false
   821  Faraway point                             Empty LineString                          FF0FFFFF2  false
   822  Faraway point                             Faraway point                             0FFFFFFF2  true
   823  Faraway point                             Line going through left and right square  FF0FFF102  false
   824  Faraway point                             NULL                                      NULL       NULL
   825  Faraway point                             Point middle of Left Square               FF0FFF0F2  false
   826  Faraway point                             Point middle of Right Square              FF0FFF0F2  false
   827  Faraway point                             Square (left)                             FF0FFF212  false
   828  Faraway point                             Square (right)                            FF0FFF212  false
   829  Faraway point                             Square overlapping left and right square  FF0FFF212  false
   830  Line going through left and right square  Empty GeometryCollection                  FF1FF0FF2  false
   831  Line going through left and right square  Empty LineString                          FF1FF0FF2  false
   832  Line going through left and right square  Faraway point                             FF1FF00F2  false
   833  Line going through left and right square  Line going through left and right square  1FFF0FFF2  false
   834  Line going through left and right square  NULL                                      NULL       NULL
   835  Line going through left and right square  Point middle of Left Square               FF10F0FF2  false
   836  Line going through left and right square  Point middle of Right Square              FF10F0FF2  false
   837  Line going through left and right square  Square (left)                             1010F0212  false
   838  Line going through left and right square  Square (right)                            1010F0212  false
   839  Line going through left and right square  Square overlapping left and right square  1010F0212  false
   840  NULL                                      Empty GeometryCollection                  NULL       NULL
   841  NULL                                      Empty LineString                          NULL       NULL
   842  NULL                                      Faraway point                             NULL       NULL
   843  NULL                                      Line going through left and right square  NULL       NULL
   844  NULL                                      NULL                                      NULL       NULL
   845  NULL                                      Point middle of Left Square               NULL       NULL
   846  NULL                                      Point middle of Right Square              NULL       NULL
   847  NULL                                      Square (left)                             NULL       NULL
   848  NULL                                      Square (right)                            NULL       NULL
   849  NULL                                      Square overlapping left and right square  NULL       NULL
   850  Point middle of Left Square               Empty GeometryCollection                  FF0FFFFF2  false
   851  Point middle of Left Square               Empty LineString                          FF0FFFFF2  false
   852  Point middle of Left Square               Faraway point                             FF0FFF0F2  false
   853  Point middle of Left Square               Line going through left and right square  F0FFFF102  false
   854  Point middle of Left Square               NULL                                      NULL       NULL
   855  Point middle of Left Square               Point middle of Left Square               0FFFFFFF2  true
   856  Point middle of Left Square               Point middle of Right Square              FF0FFF0F2  false
   857  Point middle of Left Square               Square (left)                             0FFFFF212  false
   858  Point middle of Left Square               Square (right)                            FF0FFF212  false
   859  Point middle of Left Square               Square overlapping left and right square  FF0FFF212  false
   860  Point middle of Right Square              Empty GeometryCollection                  FF0FFFFF2  false
   861  Point middle of Right Square              Empty LineString                          FF0FFFFF2  false
   862  Point middle of Right Square              Faraway point                             FF0FFF0F2  false
   863  Point middle of Right Square              Line going through left and right square  F0FFFF102  false
   864  Point middle of Right Square              NULL                                      NULL       NULL
   865  Point middle of Right Square              Point middle of Left Square               FF0FFF0F2  false
   866  Point middle of Right Square              Point middle of Right Square              0FFFFFFF2  true
   867  Point middle of Right Square              Square (left)                             FF0FFF212  false
   868  Point middle of Right Square              Square (right)                            0FFFFF212  false
   869  Point middle of Right Square              Square overlapping left and right square  0FFFFF212  false
   870  Square (left)                             Empty GeometryCollection                  FF2FF1FF2  false
   871  Square (left)                             Empty LineString                          FF2FF1FF2  false
   872  Square (left)                             Faraway point                             FF2FF10F2  false
   873  Square (left)                             Line going through left and right square  1020F1102  false
   874  Square (left)                             NULL                                      NULL       NULL
   875  Square (left)                             Point middle of Left Square               0F2FF1FF2  true
   876  Square (left)                             Point middle of Right Square              FF2FF10F2  false
   877  Square (left)                             Square (left)                             2FFF1FFF2  false
   878  Square (left)                             Square (right)                            FF2F11212  false
   879  Square (left)                             Square overlapping left and right square  212111212  false
   880  Square (right)                            Empty GeometryCollection                  FF2FF1FF2  false
   881  Square (right)                            Empty LineString                          FF2FF1FF2  false
   882  Square (right)                            Faraway point                             FF2FF10F2  false
   883  Square (right)                            Line going through left and right square  1020F1102  false
   884  Square (right)                            NULL                                      NULL       NULL
   885  Square (right)                            Point middle of Left Square               FF2FF10F2  false
   886  Square (right)                            Point middle of Right Square              0F2FF1FF2  true
   887  Square (right)                            Square (left)                             FF2F11212  false
   888  Square (right)                            Square (right)                            2FFF1FFF2  false
   889  Square (right)                            Square overlapping left and right square  2FF11F212  false
   890  Square overlapping left and right square  Empty GeometryCollection                  FF2FF1FF2  false
   891  Square overlapping left and right square  Empty LineString                          FF2FF1FF2  false
   892  Square overlapping left and right square  Faraway point                             FF2FF10F2  false
   893  Square overlapping left and right square  Line going through left and right square  1020F1102  false
   894  Square overlapping left and right square  NULL                                      NULL       NULL
   895  Square overlapping left and right square  Point middle of Left Square               FF2FF10F2  false
   896  Square overlapping left and right square  Point middle of Right Square              0F2FF1FF2  true
   897  Square overlapping left and right square  Square (left)                             212111212  false
   898  Square overlapping left and right square  Square (right)                            212F11FF2  false
   899  Square overlapping left and right square  Square overlapping left and right square  2FFF1FFF2  false
   900  
   901  # basic metadata
   902  query TTIIITTT
   903  SELECT
   904    a.dsc,
   905    ST_GeometryType(a.geom),
   906    ST_NDims(a.geom),
   907    ST_NPoints(a.geom),
   908    ST_NumGeometries(a.geom),
   909    ST_GeometryN(a.geom, 0),
   910    ST_GeometryN(a.geom, 1),
   911    ST_GeometryN(a.geom, 2)
   912  FROM geom_operators_test a
   913  ORDER BY a.dsc
   914  ----
   915  Empty GeometryCollection                  ST_GeometryCollection  0     0     0     NULL  NULL                                                                                                                                                                                        NULL
   916  Empty LineString                          ST_LineString          2     0     0     NULL  010200000000000000                                                                                                                                                                          NULL
   917  Faraway point                             ST_Point               2     1     1     NULL  010100000000000000000014400000000000001440                                                                                                                                                  NULL
   918  Line going through left and right square  ST_LineString          2     2     1     NULL  010200000002000000000000000000E0BF000000000000E03F000000000000E03F000000000000E03F                                                                                                          NULL
   919  NULL                                      NULL                   NULL  NULL  NULL  NULL  NULL                                                                                                                                                                                        NULL
   920  Point middle of Left Square               ST_Point               2     1     1     NULL  0101000000000000000000E0BF000000000000E03F                                                                                                                                                  NULL
   921  Point middle of Right Square              ST_Point               2     1     1     NULL  0101000000000000000000E03F000000000000E03F                                                                                                                                                  NULL
   922  Square (left)                             ST_Polygon             2     5     1     NULL  01030000000100000005000000000000000000F0BF0000000000000000000000000000000000000000000000000000000000000000000000000000F03F000000000000F0BF000000000000F03F000000000000F0BF0000000000000000  NULL
   923  Square (right)                            ST_Polygon             2     5     1     NULL  0103000000010000000500000000000000000000000000000000000000000000000000F03F0000000000000000000000000000F03F000000000000F03F0000000000000000000000000000F03F00000000000000000000000000000000  NULL
   924  Square overlapping left and right square  ST_Polygon             2     5     1     NULL  010300000001000000050000009A9999999999B9BF0000000000000000000000000000F03F0000000000000000000000000000F03F000000000000F03F9A9999999999B9BF000000000000F03F9A9999999999B9BF0000000000000000  NULL
   925  
   926  # Point specific operations
   927  query RR
   928  SELECT
   929    ST_X(a.geom),
   930    ST_Y(a.geom)
   931  FROM (VALUES
   932    ('POINT(1.0 2.0)'::geometry),
   933    ('POINT(33.0 66.0)'::geometry)
   934  --  ('0101000000000000000000F87F000000000000F87F'::geometry) -- POINT EMPTY -- blocked on https://github.com/twpayne/go-geom/pull/159
   935  ) a(geom)
   936  ----
   937  1   2
   938  33  66
   939  
   940  statement error argument to ST_X\(\) must have shape POINT
   941  SELECT ST_X('LINESTRING(0.0 0.0, 1.0 1.0)')
   942  
   943  statement error argument to ST_Y\(\) must have shape POINT
   944  SELECT ST_Y('LINESTRING(0.0 0.0, 1.0 1.0)')
   945  
   946  # LineString specific operations
   947  query TTITTTTT
   948  SELECT
   949    ST_AsEWKT(ST_StartPoint(a.geom)),
   950    ST_AsEWKT(ST_EndPoint(a.geom)),
   951    ST_NumPoints(a.geom),
   952    ST_AsEWKT(ST_PointN(a.geom, 0)),
   953    ST_AsEWKT(ST_PointN(a.geom, 1)),
   954    ST_AsEWKT(ST_PointN(a.geom, 2)),
   955    ST_AsEWKT(ST_PointN(a.geom, 3)),
   956    ST_AsEWKT(ST_PointN(a.geom, 4))
   957  FROM (VALUES
   958    ('LINESTRING EMPTY'::geometry),
   959    ('LINESTRING (0.0 0.0, 1.0 1.0, 2.0 2.0)'::geometry),
   960    ('SRID=4326;LINESTRING (0.0 0.0, 1.0 1.0, 2.0 2.0)'::geometry),
   961    ('MULTILINESTRING ((0.0 0.0, 1.0 1.0, 2.0 2.0), (3.0 3.0, 4.0 4.0))'::geometry)
   962  ) a(geom)
   963  ----
   964  NULL                   NULL                   0     NULL  NULL                   NULL                   NULL                   NULL
   965  POINT (0 0)            POINT (2 2)            3     NULL  POINT (0 0)            POINT (1 1)            POINT (2 2)            NULL
   966  SRID=4326;POINT (0 0)  SRID=4326;POINT (2 2)  3     NULL  SRID=4326;POINT (0 0)  SRID=4326;POINT (1 1)  SRID=4326;POINT (2 2)  NULL
   967  NULL                   NULL                   NULL  NULL  NULL                   NULL                   NULL                   NULL
   968  
   969  # Polygon specific operations
   970  query IIITTTT
   971  SELECT
   972    ST_NRings(a.geom),
   973    ST_NumInteriorRing(a.geom),
   974    ST_NumInteriorRings(a.geom),
   975    ST_AsEWKT(ST_ExteriorRing(a.geom)),
   976    ST_AsEWKT(ST_InteriorRingN(a.geom, 0)),
   977    ST_AsEWKT(ST_InteriorRingN(a.geom, 1)),
   978    ST_AsEWKT(ST_InteriorRingN(a.geom, 2))
   979  FROM (VALUES
   980    ('POLYGON EMPTY'::geometry),
   981    ('POLYGON((0 0,1 0, 1 1, 0 0))'::geometry),
   982    ('POLYGON((0 0,1 0, 1 1, 0 0),(0.1 0.1,0.9 0.1, 0.9 0.9, 0.1 0.1))'::geometry),
   983    ('SRID=4326;POLYGON((0 0,1 0, 1 1, 0 0),(0.1 0.1,0.9 0.1, 0.9 0.9, 0.1 0.1))'::geometry),
   984    ('LINESTRING EMPTY'::geometry)
   985  ) a(geom)
   986  ----
   987  0  0     0     LINESTRING EMPTY                           NULL  NULL                                                       NULL
   988  1  0     0     LINESTRING (0 0, 1 0, 1 1, 0 0)            NULL  NULL                                                       NULL
   989  2  1     1     LINESTRING (0 0, 1 0, 1 1, 0 0)            NULL  LINESTRING (0.1 0.1, 0.9 0.1, 0.9 0.9, 0.1 0.1)            NULL
   990  2  1     1     SRID=4326;LINESTRING (0 0, 1 0, 1 1, 0 0)  NULL  SRID=4326;LINESTRING (0.1 0.1, 0.9 0.1, 0.9 0.9, 0.1 0.1)  NULL
   991  0  NULL  NULL  NULL                                       NULL  NULL                                                       NULL
   992  
   993  # Multi-Geometry related operations.
   994  query ITTT
   995  SELECT
   996    ST_NumGeometries(a.geom),
   997    ST_AsEWKT(ST_GeometryN(a.geom, 0)),
   998    ST_AsEWKT(ST_GeometryN(a.geom, 1)),
   999    ST_AsEWKT(ST_GeometryN(a.geom, 2))
  1000  FROM (VALUES
  1001    ('MULTIPOINT EMPTY'::geometry),
  1002    ('MULTILINESTRING EMPTY'::geometry),
  1003    ('MULTIPOLYGON EMPTY'::geometry),
  1004    ('MULTIPOINT((0 0), (1 1), (2 2))'::geometry),
  1005    ('SRID=4326;MULTIPOINT((0 0), (1 1), (2 2))'::geometry),
  1006    ('MULTILINESTRING((0 0, 1 1), (2 2, 3 3))'::geometry),
  1007    ('SRID=4326;MULTILINESTRING((0 0, 1 1), (2 2, 3 3))'::geometry),
  1008    ('MULTIPOLYGON(((0 0,1 0, 1 1, 0 0)),((0.1 0.1,0.9 0.1, 0.9 0.9, 0.1 0.1)))'::geometry),
  1009    ('SRID=4326;MULTIPOLYGON(((0 0,1 0, 1 1, 0 0)),((0.1 0.1,0.9 0.1, 0.9 0.9, 0.1 0.1)))'::geometry),
  1010    ('GEOMETRYCOLLECTION (POINT (40 10),LINESTRING (10 10, 20 20, 10 40),POLYGON ((40 40, 20 45, 45 30, 40 40)))'::geometry),
  1011    ('SRID=4326;GEOMETRYCOLLECTION (POINT (40 10),LINESTRING (10 10, 20 20, 10 40),POLYGON ((40 40, 20 45, 45 30, 40 40)))'::geometry)
  1012  ) a(geom)
  1013  ----
  1014  0  NULL  NULL                                      NULL
  1015  0  NULL  NULL                                      NULL
  1016  0  NULL  NULL                                      NULL
  1017  3  NULL  POINT (0 0)                               POINT (1 1)
  1018  3  NULL  SRID=4326;POINT (0 0)                     SRID=4326;POINT (1 1)
  1019  2  NULL  LINESTRING (0 0, 1 1)                     LINESTRING (2 2, 3 3)
  1020  2  NULL  SRID=4326;LINESTRING (0 0, 1 1)           SRID=4326;LINESTRING (2 2, 3 3)
  1021  2  NULL  POLYGON ((0 0, 1 0, 1 1, 0 0))            POLYGON ((0.1 0.1, 0.9 0.1, 0.9 0.9, 0.1 0.1))
  1022  2  NULL  SRID=4326;POLYGON ((0 0, 1 0, 1 1, 0 0))  SRID=4326;POLYGON ((0.1 0.1, 0.9 0.1, 0.9 0.9, 0.1 0.1))
  1023  3  NULL  POINT (40 10)                             LINESTRING (10 10, 20 20, 10 40)
  1024  3  NULL  SRID=4326;POINT (40 10)                   SRID=4326;LINESTRING (10 10, 20 20, 10 40)
  1025  
  1026  subtest geog_operators
  1027  
  1028  statement ok
  1029  CREATE TABLE geog_operators_test AS SELECT dsc, geom::geography AS geog FROM geom_operators_test
  1030  
  1031  # GROUP BY
  1032  query TR
  1033  SELECT
  1034    a.dsc,
  1035    ST_Area(a.geog)
  1036  FROM geog_operators_test a
  1037  GROUP BY a.dsc, a.geog
  1038  ORDER BY a.dsc
  1039  ----
  1040  Empty GeometryCollection                  0
  1041  Empty LineString                          0
  1042  Faraway point                             0
  1043  Line going through left and right square  0
  1044  NULL                                      NULL
  1045  Point middle of Left Square               0
  1046  Point middle of Right Square              0
  1047  Square (left)                             1.23087783614695e+10
  1048  Square (right)                            1.23087783614695e+10
  1049  Square overlapping left and right square  1.35397288423019e+10
  1050  
  1051  # Unary operators
  1052  query TRRRRRRRRR
  1053  SELECT
  1054    a.dsc,
  1055    ST_Area(a.geog), ST_Area(a.geog, false), ST_Area(a.geog, true),
  1056    ST_Length(a.geog), ST_Length(a.geog, false), ST_Length(a.geog, true),
  1057    ST_Perimeter(a.geog), ST_Perimeter(a.geog, false), ST_Perimeter(a.geog, true)
  1058  FROM geog_operators_test a
  1059  ORDER BY a.dsc
  1060  ----
  1061  Empty GeometryCollection                  0                     0                     0                     0                 0                 0                 0                 0                 0
  1062  Empty LineString                          0                     0                     0                     0                 0                 0                 0                 0                 0
  1063  Faraway point                             0                     0                     0                     0                 0                 0                 0                 0                 0
  1064  Line going through left and right square  0                     0                     0                     111315.280354463  111190.845659241  111315.280354463  0                 0                 0
  1065  NULL                                      NULL                  NULL                  NULL                  NULL              NULL              NULL              NULL              NULL              NULL
  1066  Point middle of Left Square               0                     0                     0                     0                 0                 0                 0                 0                 0
  1067  Point middle of Right Square              0                     0                     0                     0                 0                 0                 0                 0                 0
  1068  Square (left)                             1.23087783614695e+10  1.23640317985177e+10  1.23087783614695e+10  0                 0                 0                 443770.917248302  444763.382959477  443770.917248302
  1069  Square (right)                            1.23087783614695e+10  1.23640317985177e+10  1.23087783614695e+10  0                 0                 0                 443770.917248302  444763.382959477  443770.917248302
  1070  Square overlapping left and right square  1.35397288423019e+10  1.36005074605892e+10  1.35397288423019e+10  0                 0                 0                 466033.131162169  467000.705209206  466033.131162169
  1071  
  1072  # Binary operators
  1073  query TTRRR
  1074  SELECT
  1075    a.dsc,
  1076    b.dsc,
  1077    ST_Distance(a.geog, b.geog), ST_Distance(a.geog, b.geog, false), ST_Distance(a.geog, b.geog, true)
  1078  FROM geog_operators_test a
  1079  JOIN geog_operators_test b ON (1=1)
  1080  ORDER BY a.dsc, b.dsc
  1081  ----
  1082  Empty GeometryCollection                  Empty GeometryCollection                  NULL              NULL              NULL
  1083  Empty GeometryCollection                  Empty LineString                          NULL              NULL              NULL
  1084  Empty GeometryCollection                  Faraway point                             NULL              NULL              NULL
  1085  Empty GeometryCollection                  Line going through left and right square  NULL              NULL              NULL
  1086  Empty GeometryCollection                  NULL                                      NULL              NULL              NULL
  1087  Empty GeometryCollection                  Point middle of Left Square               NULL              NULL              NULL
  1088  Empty GeometryCollection                  Point middle of Right Square              NULL              NULL              NULL
  1089  Empty GeometryCollection                  Square (left)                             NULL              NULL              NULL
  1090  Empty GeometryCollection                  Square (right)                            NULL              NULL              NULL
  1091  Empty GeometryCollection                  Square overlapping left and right square  NULL              NULL              NULL
  1092  Empty LineString                          Empty GeometryCollection                  NULL              NULL              NULL
  1093  Empty LineString                          Empty LineString                          NULL              NULL              NULL
  1094  Empty LineString                          Faraway point                             NULL              NULL              NULL
  1095  Empty LineString                          Line going through left and right square  NULL              NULL              NULL
  1096  Empty LineString                          NULL                                      NULL              NULL              NULL
  1097  Empty LineString                          Point middle of Left Square               NULL              NULL              NULL
  1098  Empty LineString                          Point middle of Right Square              NULL              NULL              NULL
  1099  Empty LineString                          Square (left)                             NULL              NULL              NULL
  1100  Empty LineString                          Square (right)                            NULL              NULL              NULL
  1101  Empty LineString                          Square overlapping left and right square  NULL              NULL              NULL
  1102  Faraway point                             Empty GeometryCollection                  NULL              NULL              NULL
  1103  Faraway point                             Empty LineString                          NULL              NULL              NULL
  1104  Faraway point                             Faraway point                             0                 0                 0
  1105  Faraway point                             Line going through left and right square  705577.648328755  707142.162247235  705577.648328755
  1106  Faraway point                             NULL                                      NULL              NULL              NULL
  1107  Faraway point                             Point middle of Left Square               788297.405265007  789521.780520966  788297.405265007
  1108  Faraway point                             Point middle of Right Square              705577.648328755  707142.162247235  705577.648328755
  1109  Faraway point                             Square (left)                             710260.975395327  711311.966664979  710260.975395327
  1110  Faraway point                             Square (right)                            627129.502610754  628519.033787529  627129.502610754
  1111  Faraway point                             Square overlapping left and right square  627129.502610754  628519.033787529  627129.502610754
  1112  Line going through left and right square  Empty GeometryCollection                  NULL              NULL              NULL
  1113  Line going through left and right square  Empty LineString                          NULL              NULL              NULL
  1114  Line going through left and right square  Faraway point                             705577.648328755  707142.162247235  705577.648328755
  1115  Line going through left and right square  Line going through left and right square  0                 0                 0
  1116  Line going through left and right square  NULL                                      NULL              NULL              NULL
  1117  Line going through left and right square  Point middle of Left Square               0                 0                 0
  1118  Line going through left and right square  Point middle of Right Square              0                 0                 0
  1119  Line going through left and right square  Square (left)                             0                 0                 0
  1120  Line going through left and right square  Square (right)                            0                 0                 0
  1121  Line going through left and right square  Square overlapping left and right square  0                 0                 0
  1122  NULL                                      Empty GeometryCollection                  NULL              NULL              NULL
  1123  NULL                                      Empty LineString                          NULL              NULL              NULL
  1124  NULL                                      Faraway point                             NULL              NULL              NULL
  1125  NULL                                      Line going through left and right square  NULL              NULL              NULL
  1126  NULL                                      NULL                                      NULL              NULL              NULL
  1127  NULL                                      Point middle of Left Square               NULL              NULL              NULL
  1128  NULL                                      Point middle of Right Square              NULL              NULL              NULL
  1129  NULL                                      Square (left)                             NULL              NULL              NULL
  1130  NULL                                      Square (right)                            NULL              NULL              NULL
  1131  NULL                                      Square overlapping left and right square  NULL              NULL              NULL
  1132  Point middle of Left Square               Empty GeometryCollection                  NULL              NULL              NULL
  1133  Point middle of Left Square               Empty LineString                          NULL              NULL              NULL
  1134  Point middle of Left Square               Faraway point                             788297.405265007  789521.780520966  788297.405265007
  1135  Point middle of Left Square               Line going through left and right square  0                 0                 0
  1136  Point middle of Left Square               NULL                                      NULL              NULL              NULL
  1137  Point middle of Left Square               Point middle of Left Square               0                 0                 0
  1138  Point middle of Left Square               Point middle of Right Square              111315.280354463  111190.845659241  111315.280354463
  1139  Point middle of Left Square               Square (left)                             0                 0                 0
  1140  Point middle of Left Square               Square (right)                            55657.6401772334  55595.4228296203  55657.6401772334
  1141  Point middle of Left Square               Square overlapping left and right square  44526.1121572803  44476.338279173   44526.1121572803
  1142  Point middle of Right Square              Empty GeometryCollection                  NULL              NULL              NULL
  1143  Point middle of Right Square              Empty LineString                          NULL              NULL              NULL
  1144  Point middle of Right Square              Faraway point                             705577.648328755  707142.162247235  705577.648328755
  1145  Point middle of Right Square              Line going through left and right square  0                 0                 0
  1146  Point middle of Right Square              NULL                                      NULL              NULL              NULL
  1147  Point middle of Right Square              Point middle of Left Square               111315.280354463  111190.845659241  111315.280354463
  1148  Point middle of Right Square              Point middle of Right Square              0                 0                 0
  1149  Point middle of Right Square              Square (left)                             55657.6401772334  55595.4228296203  55657.6401772334
  1150  Point middle of Right Square              Square (right)                            0                 0                 0
  1151  Point middle of Right Square              Square overlapping left and right square  0                 0                 0
  1152  Square (left)                             Empty GeometryCollection                  NULL              NULL              NULL
  1153  Square (left)                             Empty LineString                          NULL              NULL              NULL
  1154  Square (left)                             Faraway point                             710260.975395327  711311.966664979  710260.975395327
  1155  Square (left)                             Line going through left and right square  0                 0                 0
  1156  Square (left)                             NULL                                      NULL              NULL              NULL
  1157  Square (left)                             Point middle of Left Square               0                 0                 0
  1158  Square (left)                             Point middle of Right Square              55657.6401772334  55595.4228296203  55657.6401772334
  1159  Square (left)                             Square (left)                             0                 0                 0
  1160  Square (left)                             Square (right)                            0                 0                 0
  1161  Square (left)                             Square overlapping left and right square  0                 0                 0
  1162  Square (right)                            Empty GeometryCollection                  NULL              NULL              NULL
  1163  Square (right)                            Empty LineString                          NULL              NULL              NULL
  1164  Square (right)                            Faraway point                             627129.502610754  628519.033787529  627129.502610754
  1165  Square (right)                            Line going through left and right square  0                 0                 0
  1166  Square (right)                            NULL                                      NULL              NULL              NULL
  1167  Square (right)                            Point middle of Left Square               55657.6401772334  55595.4228296203  55657.6401772334
  1168  Square (right)                            Point middle of Right Square              0                 0                 0
  1169  Square (right)                            Square (left)                             0                 0                 0
  1170  Square (right)                            Square (right)                            0                 0                 0
  1171  Square (right)                            Square overlapping left and right square  0                 0                 0
  1172  Square overlapping left and right square  Empty GeometryCollection                  NULL              NULL              NULL
  1173  Square overlapping left and right square  Empty LineString                          NULL              NULL              NULL
  1174  Square overlapping left and right square  Faraway point                             627129.502610754  628519.033787529  627129.502610754
  1175  Square overlapping left and right square  Line going through left and right square  0                 0                 0
  1176  Square overlapping left and right square  NULL                                      NULL              NULL              NULL
  1177  Square overlapping left and right square  Point middle of Left Square               44526.1121572803  44476.338279173   44526.1121572803
  1178  Square overlapping left and right square  Point middle of Right Square              0                 0                 0
  1179  Square overlapping left and right square  Square (left)                             0                 0                 0
  1180  Square overlapping left and right square  Square (right)                            0                 0                 0
  1181  Square overlapping left and right square  Square overlapping left and right square  0                 0                 0
  1182  
  1183  # Binary predicates
  1184  query TTBBB
  1185  SELECT
  1186    a.dsc,
  1187    b.dsc,
  1188    ST_Covers(a.geog, b.geog),
  1189    ST_CoveredBy(a.geog, b.geog),
  1190    ST_Intersects(a.geog, b.geog)
  1191  FROM geog_operators_test a
  1192  JOIN geog_operators_test b ON (1=1)
  1193  ORDER BY a.dsc, b.dsc
  1194  ----
  1195  Empty GeometryCollection                  Empty GeometryCollection                  false  false  false
  1196  Empty GeometryCollection                  Empty LineString                          false  false  false
  1197  Empty GeometryCollection                  Faraway point                             false  false  false
  1198  Empty GeometryCollection                  Line going through left and right square  false  false  false
  1199  Empty GeometryCollection                  NULL                                      NULL   NULL   NULL
  1200  Empty GeometryCollection                  Point middle of Left Square               false  false  false
  1201  Empty GeometryCollection                  Point middle of Right Square              false  false  false
  1202  Empty GeometryCollection                  Square (left)                             false  false  false
  1203  Empty GeometryCollection                  Square (right)                            false  false  false
  1204  Empty GeometryCollection                  Square overlapping left and right square  false  false  false
  1205  Empty LineString                          Empty GeometryCollection                  false  false  false
  1206  Empty LineString                          Empty LineString                          false  false  false
  1207  Empty LineString                          Faraway point                             false  false  false
  1208  Empty LineString                          Line going through left and right square  false  false  false
  1209  Empty LineString                          NULL                                      NULL   NULL   NULL
  1210  Empty LineString                          Point middle of Left Square               false  false  false
  1211  Empty LineString                          Point middle of Right Square              false  false  false
  1212  Empty LineString                          Square (left)                             false  false  false
  1213  Empty LineString                          Square (right)                            false  false  false
  1214  Empty LineString                          Square overlapping left and right square  false  false  false
  1215  Faraway point                             Empty GeometryCollection                  false  false  false
  1216  Faraway point                             Empty LineString                          false  false  false
  1217  Faraway point                             Faraway point                             true   true   true
  1218  Faraway point                             Line going through left and right square  false  false  false
  1219  Faraway point                             NULL                                      NULL   NULL   NULL
  1220  Faraway point                             Point middle of Left Square               false  false  false
  1221  Faraway point                             Point middle of Right Square              false  false  false
  1222  Faraway point                             Square (left)                             false  false  false
  1223  Faraway point                             Square (right)                            false  false  false
  1224  Faraway point                             Square overlapping left and right square  false  false  false
  1225  Line going through left and right square  Empty GeometryCollection                  false  false  false
  1226  Line going through left and right square  Empty LineString                          false  false  false
  1227  Line going through left and right square  Faraway point                             false  false  false
  1228  Line going through left and right square  Line going through left and right square  true   true   true
  1229  Line going through left and right square  NULL                                      NULL   NULL   NULL
  1230  Line going through left and right square  Point middle of Left Square               true   false  true
  1231  Line going through left and right square  Point middle of Right Square              true   false  true
  1232  Line going through left and right square  Square (left)                             false  false  true
  1233  Line going through left and right square  Square (right)                            false  false  true
  1234  Line going through left and right square  Square overlapping left and right square  false  false  true
  1235  NULL                                      Empty GeometryCollection                  NULL   NULL   NULL
  1236  NULL                                      Empty LineString                          NULL   NULL   NULL
  1237  NULL                                      Faraway point                             NULL   NULL   NULL
  1238  NULL                                      Line going through left and right square  NULL   NULL   NULL
  1239  NULL                                      NULL                                      NULL   NULL   NULL
  1240  NULL                                      Point middle of Left Square               NULL   NULL   NULL
  1241  NULL                                      Point middle of Right Square              NULL   NULL   NULL
  1242  NULL                                      Square (left)                             NULL   NULL   NULL
  1243  NULL                                      Square (right)                            NULL   NULL   NULL
  1244  NULL                                      Square overlapping left and right square  NULL   NULL   NULL
  1245  Point middle of Left Square               Empty GeometryCollection                  false  false  false
  1246  Point middle of Left Square               Empty LineString                          false  false  false
  1247  Point middle of Left Square               Faraway point                             false  false  false
  1248  Point middle of Left Square               Line going through left and right square  false  true   true
  1249  Point middle of Left Square               NULL                                      NULL   NULL   NULL
  1250  Point middle of Left Square               Point middle of Left Square               true   true   true
  1251  Point middle of Left Square               Point middle of Right Square              false  false  false
  1252  Point middle of Left Square               Square (left)                             false  true   true
  1253  Point middle of Left Square               Square (right)                            false  false  false
  1254  Point middle of Left Square               Square overlapping left and right square  false  false  false
  1255  Point middle of Right Square              Empty GeometryCollection                  false  false  false
  1256  Point middle of Right Square              Empty LineString                          false  false  false
  1257  Point middle of Right Square              Faraway point                             false  false  false
  1258  Point middle of Right Square              Line going through left and right square  false  true   true
  1259  Point middle of Right Square              NULL                                      NULL   NULL   NULL
  1260  Point middle of Right Square              Point middle of Left Square               false  false  false
  1261  Point middle of Right Square              Point middle of Right Square              true   true   true
  1262  Point middle of Right Square              Square (left)                             false  false  false
  1263  Point middle of Right Square              Square (right)                            false  true   true
  1264  Point middle of Right Square              Square overlapping left and right square  false  true   true
  1265  Square (left)                             Empty GeometryCollection                  false  false  false
  1266  Square (left)                             Empty LineString                          false  false  false
  1267  Square (left)                             Faraway point                             false  false  false
  1268  Square (left)                             Line going through left and right square  false  false  true
  1269  Square (left)                             NULL                                      NULL   NULL   NULL
  1270  Square (left)                             Point middle of Left Square               true   false  true
  1271  Square (left)                             Point middle of Right Square              false  false  false
  1272  Square (left)                             Square (left)                             true   true   true
  1273  Square (left)                             Square (right)                            false  false  true
  1274  Square (left)                             Square overlapping left and right square  false  false  true
  1275  Square (right)                            Empty GeometryCollection                  false  false  false
  1276  Square (right)                            Empty LineString                          false  false  false
  1277  Square (right)                            Faraway point                             false  false  false
  1278  Square (right)                            Line going through left and right square  false  false  true
  1279  Square (right)                            NULL                                      NULL   NULL   NULL
  1280  Square (right)                            Point middle of Left Square               false  false  false
  1281  Square (right)                            Point middle of Right Square              true   false  true
  1282  Square (right)                            Square (left)                             false  false  true
  1283  Square (right)                            Square (right)                            true   true   true
  1284  Square (right)                            Square overlapping left and right square  false  false  true
  1285  Square overlapping left and right square  Empty GeometryCollection                  false  false  false
  1286  Square overlapping left and right square  Empty LineString                          false  false  false
  1287  Square overlapping left and right square  Faraway point                             false  false  false
  1288  Square overlapping left and right square  Line going through left and right square  false  false  true
  1289  Square overlapping left and right square  NULL                                      NULL   NULL   NULL
  1290  Square overlapping left and right square  Point middle of Left Square               false  false  false
  1291  Square overlapping left and right square  Point middle of Right Square              true   false  true
  1292  Square overlapping left and right square  Square (left)                             false  false  true
  1293  Square overlapping left and right square  Square (right)                            false  false  true
  1294  Square overlapping left and right square  Square overlapping left and right square  true   true   true
  1295  
  1296  # DWithin
  1297  query TTBBB
  1298  SELECT
  1299    a.dsc,
  1300    b.dsc,
  1301    ST_DWithin(a.geog, b.geog, 70558),
  1302    ST_DWithin(a.geog, b.geog, 70558, false),
  1303    ST_DWithin(a.geog, b.geog, 70558, true)
  1304  FROM geog_operators_test a
  1305  JOIN geog_operators_test b ON (1=1)
  1306  ORDER BY a.dsc, b.dsc
  1307  ----
  1308  Empty GeometryCollection                  Empty GeometryCollection                  false  false  false
  1309  Empty GeometryCollection                  Empty LineString                          false  false  false
  1310  Empty GeometryCollection                  Faraway point                             false  false  false
  1311  Empty GeometryCollection                  Line going through left and right square  false  false  false
  1312  Empty GeometryCollection                  NULL                                      NULL   NULL   NULL
  1313  Empty GeometryCollection                  Point middle of Left Square               false  false  false
  1314  Empty GeometryCollection                  Point middle of Right Square              false  false  false
  1315  Empty GeometryCollection                  Square (left)                             false  false  false
  1316  Empty GeometryCollection                  Square (right)                            false  false  false
  1317  Empty GeometryCollection                  Square overlapping left and right square  false  false  false
  1318  Empty LineString                          Empty GeometryCollection                  false  false  false
  1319  Empty LineString                          Empty LineString                          false  false  false
  1320  Empty LineString                          Faraway point                             false  false  false
  1321  Empty LineString                          Line going through left and right square  false  false  false
  1322  Empty LineString                          NULL                                      NULL   NULL   NULL
  1323  Empty LineString                          Point middle of Left Square               false  false  false
  1324  Empty LineString                          Point middle of Right Square              false  false  false
  1325  Empty LineString                          Square (left)                             false  false  false
  1326  Empty LineString                          Square (right)                            false  false  false
  1327  Empty LineString                          Square overlapping left and right square  false  false  false
  1328  Faraway point                             Empty GeometryCollection                  false  false  false
  1329  Faraway point                             Empty LineString                          false  false  false
  1330  Faraway point                             Faraway point                             true   true   true
  1331  Faraway point                             Line going through left and right square  false  false  false
  1332  Faraway point                             NULL                                      NULL   NULL   NULL
  1333  Faraway point                             Point middle of Left Square               false  false  false
  1334  Faraway point                             Point middle of Right Square              false  false  false
  1335  Faraway point                             Square (left)                             false  false  false
  1336  Faraway point                             Square (right)                            false  false  false
  1337  Faraway point                             Square overlapping left and right square  false  false  false
  1338  Line going through left and right square  Empty GeometryCollection                  false  false  false
  1339  Line going through left and right square  Empty LineString                          false  false  false
  1340  Line going through left and right square  Faraway point                             false  false  false
  1341  Line going through left and right square  Line going through left and right square  true   true   true
  1342  Line going through left and right square  NULL                                      NULL   NULL   NULL
  1343  Line going through left and right square  Point middle of Left Square               true   true   true
  1344  Line going through left and right square  Point middle of Right Square              true   true   true
  1345  Line going through left and right square  Square (left)                             true   true   true
  1346  Line going through left and right square  Square (right)                            true   true   true
  1347  Line going through left and right square  Square overlapping left and right square  true   true   true
  1348  NULL                                      Empty GeometryCollection                  NULL   NULL   NULL
  1349  NULL                                      Empty LineString                          NULL   NULL   NULL
  1350  NULL                                      Faraway point                             NULL   NULL   NULL
  1351  NULL                                      Line going through left and right square  NULL   NULL   NULL
  1352  NULL                                      NULL                                      NULL   NULL   NULL
  1353  NULL                                      Point middle of Left Square               NULL   NULL   NULL
  1354  NULL                                      Point middle of Right Square              NULL   NULL   NULL
  1355  NULL                                      Square (left)                             NULL   NULL   NULL
  1356  NULL                                      Square (right)                            NULL   NULL   NULL
  1357  NULL                                      Square overlapping left and right square  NULL   NULL   NULL
  1358  Point middle of Left Square               Empty GeometryCollection                  false  false  false
  1359  Point middle of Left Square               Empty LineString                          false  false  false
  1360  Point middle of Left Square               Faraway point                             false  false  false
  1361  Point middle of Left Square               Line going through left and right square  true   true   true
  1362  Point middle of Left Square               NULL                                      NULL   NULL   NULL
  1363  Point middle of Left Square               Point middle of Left Square               true   true   true
  1364  Point middle of Left Square               Point middle of Right Square              false  false  false
  1365  Point middle of Left Square               Square (left)                             true   true   true
  1366  Point middle of Left Square               Square (right)                            true   true   true
  1367  Point middle of Left Square               Square overlapping left and right square  true   true   true
  1368  Point middle of Right Square              Empty GeometryCollection                  false  false  false
  1369  Point middle of Right Square              Empty LineString                          false  false  false
  1370  Point middle of Right Square              Faraway point                             false  false  false
  1371  Point middle of Right Square              Line going through left and right square  true   true   true
  1372  Point middle of Right Square              NULL                                      NULL   NULL   NULL
  1373  Point middle of Right Square              Point middle of Left Square               false  false  false
  1374  Point middle of Right Square              Point middle of Right Square              true   true   true
  1375  Point middle of Right Square              Square (left)                             true   true   true
  1376  Point middle of Right Square              Square (right)                            true   true   true
  1377  Point middle of Right Square              Square overlapping left and right square  true   true   true
  1378  Square (left)                             Empty GeometryCollection                  false  false  false
  1379  Square (left)                             Empty LineString                          false  false  false
  1380  Square (left)                             Faraway point                             false  false  false
  1381  Square (left)                             Line going through left and right square  true   true   true
  1382  Square (left)                             NULL                                      NULL   NULL   NULL
  1383  Square (left)                             Point middle of Left Square               true   true   true
  1384  Square (left)                             Point middle of Right Square              true   true   true
  1385  Square (left)                             Square (left)                             true   true   true
  1386  Square (left)                             Square (right)                            true   true   true
  1387  Square (left)                             Square overlapping left and right square  true   true   true
  1388  Square (right)                            Empty GeometryCollection                  false  false  false
  1389  Square (right)                            Empty LineString                          false  false  false
  1390  Square (right)                            Faraway point                             false  false  false
  1391  Square (right)                            Line going through left and right square  true   true   true
  1392  Square (right)                            NULL                                      NULL   NULL   NULL
  1393  Square (right)                            Point middle of Left Square               true   true   true
  1394  Square (right)                            Point middle of Right Square              true   true   true
  1395  Square (right)                            Square (left)                             true   true   true
  1396  Square (right)                            Square (right)                            true   true   true
  1397  Square (right)                            Square overlapping left and right square  true   true   true
  1398  Square overlapping left and right square  Empty GeometryCollection                  false  false  false
  1399  Square overlapping left and right square  Empty LineString                          false  false  false
  1400  Square overlapping left and right square  Faraway point                             false  false  false
  1401  Square overlapping left and right square  Line going through left and right square  true   true   true
  1402  Square overlapping left and right square  NULL                                      NULL   NULL   NULL
  1403  Square overlapping left and right square  Point middle of Left Square               true   true   true
  1404  Square overlapping left and right square  Point middle of Right Square              true   true   true
  1405  Square overlapping left and right square  Square (left)                             true   true   true
  1406  Square overlapping left and right square  Square (right)                            true   true   true
  1407  Square overlapping left and right square  Square overlapping left and right square  true   true   true
  1408  
  1409  # ST_Segmentize
  1410  query TTT
  1411  SELECT
  1412    dsc,
  1413    ST_AsText(ST_Segmentize(geog, 100000)),
  1414    ST_AsText(ST_Segmentize(geog, 50000))
  1415  FROM geog_operators_test
  1416  ORDER BY dsc
  1417  ----
  1418  Empty GeometryCollection                  GEOMETRYCOLLECTION EMPTY                                                                                                                                    GEOMETRYCOLLECTION EMPTY
  1419  Empty LineString                          LINESTRING EMPTY                                                                                                                                            LINESTRING EMPTY
  1420  Faraway point                             POINT (5 5)                                                                                                                                                 POINT (5 5)
  1421  Line going through left and right square  LINESTRING (-0.5 0.5, -0.00000000000000009939611878359099 0.5000190382262164, 0.5 0.5)                                                                      LINESTRING (-0.5 0.5, -0.25000000036247944 0.500014278647005, -0.00000000000000009939611878359099 0.5000190382262164, 0.2500000003624792 0.5000142786470051, 0.5 0.5)
  1422  NULL                                      NULL                                                                                                                                                        NULL
  1423  Point middle of Left Square               POINT (-0.5 0.5)                                                                                                                                            POINT (-0.5 0.5)
  1424  Point middle of Right Square              POINT (0.5 0.5)                                                                                                                                             POINT (0.5 0.5)
  1425  Square (left)                             POLYGON ((-1 0, -0.5000000000000001 0, 0 0, 0 0.5, 0 1, -0.4999999999999998 1.0000380706528733, -1 1, -0.9999999999999998 0.5000000000000001, -1 0))        POLYGON ((-1 0, -0.7499999999999998 0, -0.5000000000000001 0, -0.2499999999999997 0, 0 0, 0 0.25, 0 0.5, 0 0.75, 0 1, -0.2499999985501929 1.0000285529443267, -0.4999999999999998 1.0000380706528733, -0.7500000014498067 1.0000285529443265, -1 1, -1 0.7499999999999998, -0.9999999999999998 0.5000000000000001, -0.9999999999999998 0.25, -1 0))
  1426  Square (right)                            POLYGON ((0 0, 0.5 0, 1 0, 1 0.4999999999999999, 1 1, 0.5 1.0000380706528733, 0 1, 0 0.5000000000000001, 0 0))                                              POLYGON ((0 0, 0.25 0, 0.5 0, 0.75 0, 1 0, 0.9999999999999998 0.25, 1 0.4999999999999999, 0.9999999999999998 0.7499999999999999, 1 1, 0.750000001449807 1.0000285529443267, 0.5 1.0000380706528733, 0.2499999985501931 1.0000285529443267, 0 1, 0 0.7499999999999998, 0 0.5000000000000001, 0 0.2499999999999997, 0 0))
  1427  Square overlapping left and right square  POLYGON ((-0.1 0, 0.44999999999999996 0, 1 0, 1 0.4999999999999999, 1 1, 0.44999999999999996 1.0000460657968335, -0.1 1, -0.1 0.5000000000000001, -0.1 0))  POLYGON ((-0.1 0, 0.17500000000000007 0, 0.44999999999999996 0, 0.7249999999999999 0, 1 0, 0.9999999999999998 0.25, 1 0.4999999999999999, 0.9999999999999998 0.7499999999999999, 1 1, 0.7250000019297163 1.0000345492812595, 0.44999999999999996 1.0000460657968335, 0.17499999807028374 1.0000345492812592, -0.1 1, -0.1 0.75, -0.1 0.5000000000000001, -0.10000000000000002 0.2499999999999997, -0.1 0))
  1428  
  1429  query T
  1430  SELECT ST_AsText(ST_Segmentize('MULTIPOINT (0 0, 1 1)'::geography, -1))
  1431  ----
  1432  MULTIPOINT (0 0, 1 1)
  1433  
  1434  statement error st_segmentize\(\): maximum segment length must be positive
  1435  SELECT ST_Segmentize('POLYGON((0.0 0.0, 1.0 0.0, 1.0 1.0, 0.0 1.0, 0.0 0.0))'::geography, 0)
  1436  
  1437  subtest pg_extension
  1438  
  1439  statement ok
  1440  CREATE TABLE pg_extension_test (
  1441    a geography(point, 4326),
  1442    b geometry(linestring, 3857),
  1443    c geometry,
  1444    d geography
  1445  )
  1446  
  1447  query TTTTIIT rowsort
  1448  SELECT * FROM pg_extension.geography_columns WHERE f_table_name = 'pg_extension_test'
  1449  ----
  1450  test  public  pg_extension_test  a  2     4326  POINT
  1451  test  public  pg_extension_test  d  NULL  0     GEOMETRY
  1452  
  1453  query TTTTIIT rowsort
  1454  SELECT * FROM pg_extension.geometry_columns WHERE f_table_name = 'pg_extension_test'
  1455  ----
  1456  test  public  pg_extension_test  b  2  3857  LINESTRING
  1457  test  public  pg_extension_test  c  2  0     GEOMETRY
  1458  
  1459  query TTTTIIT rowsort
  1460  SELECT * FROM geography_columns WHERE f_table_name = 'pg_extension_test'
  1461  ----
  1462  test  public  pg_extension_test  a  2     4326  POINT
  1463  test  public  pg_extension_test  d  NULL  0     GEOMETRY
  1464  
  1465  query TTTTIIT rowsort
  1466  SELECT * FROM geometry_columns WHERE f_table_name = 'pg_extension_test'
  1467  ----
  1468  test  public  pg_extension_test  b  2  3857  LINESTRING
  1469  test  public  pg_extension_test  c  2  0     GEOMETRY
  1470  
  1471  statement error not yet implemented
  1472  SELECT * FROM pg_extension.spatial_ref_sys ORDER BY srid ASC
  1473  
  1474  subtest st_srid
  1475  
  1476  statement ok
  1477  CREATE TABLE geo_st_srid(
  1478    id int primary key,
  1479    geog geography(geometry),
  1480    geom geometry(point)
  1481  )
  1482  
  1483  statement ok
  1484  INSERT INTO geo_st_srid VALUES
  1485    (1, ST_GeogFromText('SRID=4004;POINT(1.0 2.0)'), ST_GeomFromText('POINT(5.0 5.0)', 0)),
  1486    (2, ST_GeogFromText('SRID=4326;POINT(1.0 2.0)'), ST_GeomFromText('POINT(5.0 5.0)', 4326)),
  1487    (3, ST_SetSRID(ST_GeogFromText('SRID=4326;POINT(1.0 2.0)'), 4004), ST_SetSRID(ST_GeomFromText('POINT(5.0 5.0)', 4326), 3857))
  1488  
  1489  query III
  1490  SELECT
  1491    id,
  1492    st_srid(geog),
  1493    st_srid(geom)
  1494  FROM geo_st_srid
  1495  ORDER BY id
  1496  ----
  1497  1  4004  0
  1498  2  4326  4326
  1499  3  4004  3857
  1500  
  1501  subtest st_summary
  1502  
  1503  query T
  1504  SELECT ST_Summary('POINT(0 0)'::geometry)
  1505  ----
  1506  Point[B]
  1507  
  1508  query T
  1509  SELECT ST_Summary('SRID=4326;POINT(0 0)'::geometry)
  1510  ----
  1511  Point[BS]
  1512  
  1513  query T
  1514  SELECT ST_Summary('POINT(0 0 0)'::geometry)
  1515  ----
  1516  Point[B]
  1517  
  1518  query T
  1519  SELECT ST_Summary('POINT(0 0 0 0)'::geometry)
  1520  ----
  1521  Point[B]
  1522  
  1523  query T
  1524  SELECT ST_Summary('MULTIPOINT(0 0)'::geometry)
  1525  ----
  1526  MultiPoint[B] with 1 element
  1527  Point[B]
  1528  
  1529  query T
  1530  SELECT ST_Summary('SRID=4326;MULTIPOINT(0 0)'::geometry)
  1531  ----
  1532  MultiPoint[BS] with 1 element
  1533    Point[B]
  1534  
  1535  query T
  1536  SELECT ST_Summary('GEOMETRYCOLLECTION(MULTILINESTRING((0 0, 1 0),(2 0, 4 4)),MULTIPOINT(0 0))'::geometry)
  1537  ----
  1538  GeometryCollection[B] with 2 elements
  1539    MultiLineString[B] with 2 elements
  1540      LineString[B] with 2 points
  1541      LineString[B] with 2 points
  1542    MultiPoint[B] with 1 element
  1543      Point[B]
  1544  
  1545  
  1546  query T
  1547  SELECT ST_Summary('SRID=4326;GEOMETRYCOLLECTION(MULTILINESTRING((0 0, 1 0),(2 0, 4 4)),MULTIPOINT(0 0))'::geometry)
  1548  ----
  1549  GeometryCollection[BS] with 2 elements
  1550    MultiLineString[B] with 2 elements
  1551      LineString[B] with 2 points
  1552      LineString[B] with 2 points
  1553    MultiPoint[B] with 1 element
  1554      Point[B]
  1555  
  1556  query T
  1557  SELECT ST_Summary('POINT(0 0)'::geography)
  1558  ----
  1559  Point[BSG]
  1560  
  1561  query T
  1562  SELECT ST_Summary('SRID=4326;POINT(0 0)'::geography)
  1563  ----
  1564  Point[BSG]
  1565  
  1566  query T
  1567  SELECT ST_Summary('POINT(0 0 0)'::geography)
  1568  ----
  1569  Point[BSG]
  1570  
  1571  query T
  1572  SELECT ST_Summary('POINT(0 0 0 0)'::geography)
  1573  ----
  1574  Point[BSG]
  1575  
  1576  query T
  1577  SELECT ST_Summary('MULTIPOINT(0 0)'::geography)
  1578  ----
  1579  MultiPoint[BSG] with 1 element
  1580    Point[BG]
  1581  
  1582  query T
  1583  SELECT ST_Summary('SRID=4326;MULTIPOINT(0 0)'::geography)
  1584  ----
  1585  MultiPoint[BSG] with 1 element
  1586    Point[BG]
  1587  
  1588  query T
  1589  SELECT ST_Summary('GEOMETRYCOLLECTION(MULTILINESTRING((0 0, 1 0),(2 0, 4 4)),MULTIPOINT(0 0))'::geography)
  1590  ----
  1591  GeometryCollection[BSG] with 2 elements
  1592    MultiLineString[BG] with 2 elements
  1593      LineString[BG] with 2 points
  1594      LineString[BG] with 2 points
  1595    MultiPoint[BG] with 1 element
  1596      Point[BG]
  1597  
  1598  
  1599  query T
  1600  SELECT ST_Summary('SRID=4326;GEOMETRYCOLLECTION(MULTILINESTRING((0 0, 1 0),(2 0, 4 4)),MULTIPOINT(0 0))'::geography)
  1601  ----
  1602  GeometryCollection[BSG] with 2 elements
  1603    MultiLineString[BG] with 2 elements
  1604      LineString[BG] with 2 points
  1605      LineString[BG] with 2 points
  1606    MultiPoint[BG] with 1 element
  1607      Point[BG]
  1608  
  1609  subtest geom_linear_reference
  1610  
  1611  statement ok
  1612  CREATE TABLE geom_linear (
  1613    dsc  TEXT PRIMARY KEY,
  1614    geom GEOMETRY
  1615  )
  1616  
  1617  statement ok
  1618  INSERT INTO geom_linear VALUES
  1619    ('Empty LineString', 'LINESTRING EMPTY'),
  1620    ('LineString anticlockwise covering all the quadrants', 'LINESTRING(1 -1, 2 2, -2 2, -1 -1)'),
  1621    ('LineString clockwise covering all the quadrants with SRID 4004', 'SRID=4004;LINESTRING(1 -1, -1 -1, -2 2, 2 2)')
  1622  
  1623  # ST_LineInterpolatePoint, ST_LineInterpolatePoints
  1624  query TRBTTT
  1625  SELECT
  1626    a.dsc,
  1627    b.fraction,
  1628    c.repeat,
  1629    ST_AsEWKT(ST_LineInterpolatePoint(a.geom, b.fraction::float)),
  1630    ST_AsEWKT(ST_LineInterpolatePoints(a.geom, b.fraction::float)),
  1631    ST_AsEWKT(ST_LineInterPolatePoints(a.geom, b.fraction::float, c.repeat))
  1632  FROM geom_linear a
  1633  JOIN (VALUES (0.0), (0.2), (0.5), (0.51), (1.0)) b(fraction) ON (1=1)
  1634  JOIN (VALUES (true), (false)) c(repeat) ON (1=1)
  1635  ORDER BY a.dsc, b.fraction, c.repeat
  1636  ----
  1637  Empty LineString                                                0.0   false  POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1638  Empty LineString                                                0.0   true   POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1639  Empty LineString                                                0.2   false  POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1640  Empty LineString                                                0.2   true   POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1641  Empty LineString                                                0.5   false  POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1642  Empty LineString                                                0.5   true   POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1643  Empty LineString                                                0.51  false  POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1644  Empty LineString                                                0.51  true   POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1645  Empty LineString                                                1.0   false  POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1646  Empty LineString                                                1.0   true   POINT EMPTY                                              POINT EMPTY                                                                                                                                  POINT EMPTY
  1647  LineString anticlockwise covering all the quadrants             0.0   false  POINT (1 -1)                                             POINT (1 -1)                                                                                                                                 POINT (1 -1)
  1648  LineString anticlockwise covering all the quadrants             0.0   true   POINT (1 -1)                                             POINT (1 -1)                                                                                                                                 POINT (1 -1)
  1649  LineString anticlockwise covering all the quadrants             0.2   false  POINT (1.6529822128134706 0.9589466384404113)            MULTIPOINT (1.6529822128134706 0.9589466384404113, 1.032455532033675 2, -1.0324555320336777 2, -1.65298221281347 0.9589466384404097, -1 -1)  POINT (1.6529822128134706 0.9589466384404113)
  1650  LineString anticlockwise covering all the quadrants             0.2   true   POINT (1.6529822128134706 0.9589466384404113)            MULTIPOINT (1.6529822128134706 0.9589466384404113, 1.032455532033675 2, -1.0324555320336777 2, -1.65298221281347 0.9589466384404097, -1 -1)  MULTIPOINT (1.6529822128134706 0.9589466384404113, 1.032455532033675 2, -1.0324555320336777 2, -1.65298221281347 0.9589466384404097, -1 -1)
  1651  LineString anticlockwise covering all the quadrants             0.5   false  POINT (-0.0000000000000004440892098500626 2)             MULTIPOINT (-0.0000000000000004440892098500626 2, -1 -1)                                                                                     POINT (-0.0000000000000004440892098500626 2)
  1652  LineString anticlockwise covering all the quadrants             0.5   true   POINT (-0.0000000000000004440892098500626 2)             MULTIPOINT (-0.0000000000000004440892098500626 2, -1 -1)                                                                                     MULTIPOINT (-0.0000000000000004440892098500626 2, -1 -1)
  1653  LineString anticlockwise covering all the quadrants             0.51  false  POINT (-0.10324555320336826 2)                           POINT (-0.10324555320336826 2)                                                                                                               POINT (-0.10324555320336826 2)
  1654  LineString anticlockwise covering all the quadrants             0.51  true   POINT (-0.10324555320336826 2)                           POINT (-0.10324555320336826 2)                                                                                                               POINT (-0.10324555320336826 2)
  1655  LineString anticlockwise covering all the quadrants             1.0   false  POINT (-1 -1)                                            POINT (-1 -1)                                                                                                                                POINT (-1 -1)
  1656  LineString anticlockwise covering all the quadrants             1.0   true   POINT (-1 -1)                                            POINT (-1 -1)                                                                                                                                POINT (-1 -1)
  1657  LineString clockwise covering all the quadrants with SRID 4004  0.0   false  SRID=4004;POINT (1 -1)                                   SRID=4004;POINT (1 -1)                                                                                                                       SRID=4004;POINT (1 -1)
  1658  LineString clockwise covering all the quadrants with SRID 4004  0.0   true   SRID=4004;POINT (1 -1)                                   SRID=4004;POINT (1 -1)                                                                                                                       SRID=4004;POINT (1 -1)
  1659  LineString clockwise covering all the quadrants with SRID 4004  0.2   false  SRID=4004;POINT (-0.8324555320336762 -1)                 SRID=4004;MULTIPOINT (-0.8324555320336762 -1, -1.5264911064067355 0.579473319220206, -1.6649110640673515 2, 0.16754446796632472 2, 2 2)      SRID=4004;POINT (-0.8324555320336762 -1)
  1660  LineString clockwise covering all the quadrants with SRID 4004  0.2   true   SRID=4004;POINT (-0.8324555320336762 -1)                 SRID=4004;MULTIPOINT (-0.8324555320336762 -1, -1.5264911064067355 0.579473319220206, -1.6649110640673515 2, 0.16754446796632472 2, 2 2)      SRID=4004;MULTIPOINT (-0.8324555320336762 -1, -1.5264911064067355 0.579473319220206, -1.6649110640673515 2, 0.16754446796632472 2, 2 2)
  1661  LineString clockwise covering all the quadrants with SRID 4004  0.5   false  SRID=4004;POINT (-1.816227766016838 1.448683298050514)   SRID=4004;MULTIPOINT (-1.816227766016838 1.448683298050514, 2 2)                                                                             SRID=4004;POINT (-1.816227766016838 1.448683298050514)
  1662  LineString clockwise covering all the quadrants with SRID 4004  0.5   true   SRID=4004;POINT (-1.816227766016838 1.448683298050514)   SRID=4004;MULTIPOINT (-1.816227766016838 1.448683298050514, 2 2)                                                                             SRID=4004;MULTIPOINT (-1.816227766016838 1.448683298050514, 2 2)
  1663  LineString clockwise covering all the quadrants with SRID 4004  0.51  false  SRID=4004;POINT (-1.845201431977848 1.5356042959335445)  SRID=4004;POINT (-1.845201431977848 1.5356042959335445)                                                                                      SRID=4004;POINT (-1.845201431977848 1.5356042959335445)
  1664  LineString clockwise covering all the quadrants with SRID 4004  0.51  true   SRID=4004;POINT (-1.845201431977848 1.5356042959335445)  SRID=4004;POINT (-1.845201431977848 1.5356042959335445)                                                                                      SRID=4004;POINT (-1.845201431977848 1.5356042959335445)
  1665  LineString clockwise covering all the quadrants with SRID 4004  1.0   false  SRID=4004;POINT (2 2)                                    SRID=4004;POINT (2 2)                                                                                                                        SRID=4004;POINT (2 2)
  1666  LineString clockwise covering all the quadrants with SRID 4004  1.0   true   SRID=4004;POINT (2 2)                                    SRID=4004;POINT (2 2)                                                                                                                        SRID=4004;POINT (2 2)
  1667  
  1668  statement error st_lineinterpolatepoint\(\): fraction -1.000000 should be within \[0 1\] range
  1669  SELECT ST_LineInterpolatePoint('LINESTRING (0 0, 1 1)'::geometry, -1)
  1670  
  1671  statement error st_lineinterpolatepoints\(\): fraction -1.000000 should be within \[0 1\] range
  1672  SELECT ST_LineInterpolatePoints('LINESTRING (0 0, 1 1)'::geometry, -1, false)
  1673  
  1674  statement error st_lineinterpolatepoint\(\): geometry MultiLineString should be LineString
  1675  SELECT ST_LineInterpolatePoint('MULTILINESTRING ((0 0, 1 1), (1 1, 0 0))'::geometry, 0.2)
  1676  
  1677  statement error st_lineinterpolatepoints\(\): geometry MultiLineString should be LineString
  1678  SELECT ST_LineInterpolatePoints('MULTILINESTRING ((0 0, 1 1), (1 1, 0 0))'::geometry, 0.2, false)
  1679  
  1680  statement error st_lineinterpolatepoint\(\): geometry Point should be LineString
  1681  SELECT ST_LineInterpolatePoint('POINT (0 0)'::geometry, 0.2)
  1682  
  1683  statement error st_lineinterpolatepoints\(\): geometry Point should be LineString
  1684  SELECT ST_LineInterpolatePoints('POINT (0 0)'::geometry, 0.2, false)
  1685  
  1686  statement error st_lineinterpolatepoint\(\): geometry Polygon should be LineString
  1687  SELECT ST_LineInterpolatePoint('POLYGON((-1.0 0.0, 0.0 0.0, 0.0 1.0, -1.0 1.0, -1.0 0.0))'::geometry, 0.2)
  1688  
  1689  statement error st_lineinterpolatepoints\(\): geometry Polygon should be LineString
  1690  SELECT ST_LineInterpolatePoints('POLYGON((-1.0 0.0, 0.0 0.0, 0.0 1.0, -1.0 1.0, -1.0 0.0))'::geometry, 0.2, false)