+-- POINT --
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POINT EMPTY'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POINT(EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POINT(0 0)'
::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POINT Z (0 0 0)'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POINT M (0 0 0)'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POINT ZM (0 0 0 0)'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POINT ZM (0 0 0)' -- broken, misses an ordinate value
+::text as g ) as foo;
+
+
+
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POINT((0 0))'
::text as g ) as foo;
+
+
+-- MULTIPOINT --
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOINT EMPTY'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOINT(EMPTY)'
::text as g ) as foo;
+
-- This is supported for backward compatibility
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOINT(0 0, 2 0)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOINT((0 0), (2 0))'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOINT((0 0), (2 0), EMPTY)'
::text as g ) as foo;
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTIPOINT Z ((0 0 0), (2 0 0))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTIPOINT M ((0 0 0), (2 0 0))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTIPOINT ZM ((0 0 0 0), (2 0 0 0))'
+::text as g ) as foo;
+
+
+-- LINESTRING --
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'LINESTRING EMPTY'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'LINESTRING(EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'LINESTRING(0 0, 1 1)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'LINESTRING((0 0, 1 1))'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'LINESTRING((0 0), (1 1))'
::text as g ) as foo;
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'LINESTRING Z (0 0 0, 1 1 0)'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'LINESTRING M (0 0 0, 1 1 0)'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'LINESTRING ZM (0 0 0 0, 1 1 0 0)'
+::text as g ) as foo;
+
+
+-- MULTILINESTRING --
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING EMPTY'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING(EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING(0 0, 2 0)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING((0 0, 2 0))'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING((0 0, 2 0), (1 1, 2 2))'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING((0 0, 2 0), (1 1, 2 2), EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTILINESTRING((0 0, 2 0), (1 1, 2 2), (EMPTY))'
::text as g ) as foo;
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTILINESTRING Z ((0 0 0, 2 0 0), (1 1 0, 2 2 0))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTILINESTRING M ((0 0 0, 2 0 0), (1 1 0, 2 2 0))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTILINESTRING ZM ((0 0 0 0, 2 0 0 0), (1 1 0 0, 2 2 0 0))'
+::text as g ) as foo;
+
+
+-- POLYGON --
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POLYGON EMPTY'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POLYGON(EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POLYGON((0 0,1 0,1 1,0 1,0 0))'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))'
::text as g ) as foo;
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))'
+::text as g ) as foo;
+
+
+
+-- MULTIPOLYGON --
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOLYGON EMPTY'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOLYGON(EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOLYGON((EMPTY))'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))'
::text as g ) as foo;
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))'
+::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))'
+::text as g ) as foo;
+
+
+-- GEOMETRYCOLLECTION --
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'GEOMETRYCOLLECTION EMPTY'
::text as g ) as foo;
+
-- This is supported for backward compatibility
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'GEOMETRYCOLLECTION(EMPTY)'
::text as g ) as foo;
+
SELECT g,
ST_AsText(g::geometry),
ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
'GEOMETRYCOLLECTION((EMPTY))'
::text as g ) as foo;
+
+SELECT g,
+ ST_AsText(g::geometry),
+ ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT
+'GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0, 2 0),(1 1, 2 2)))'
+::text as g ) as foo;
+
ERROR: parse error - invalid geometry
HINT: "POINT(EMPTY" <-- parse error at position 11 within geometry
POINT(0 0)|POINT(0 0)|t
+POINT Z (0 0 0)|POINT Z (0 0 0)|t
+POINT M (0 0 0)|POINT M (0 0 0)|t
+POINT ZM (0 0 0 0)|POINT ZM (0 0 0 0)|t
+ERROR: can not mix dimensionality in a geometry
+HINT: "POINT ZM (0 0 0)" <-- parse error at position 16 within geometry
ERROR: parse error - invalid geometry
HINT: "POINT((" <-- parse error at position 7 within geometry
MULTIPOINT EMPTY|MULTIPOINT EMPTY|t
MULTIPOINT((0 0), (2 0))|MULTIPOINT(0 0,2 0)|t
ERROR: parse error - invalid geometry
HINT: "MULTIPOINT((0 0), (2 0), EMPTY" <-- parse error at position 30 within geometry
+MULTIPOINT Z ((0 0 0), (2 0 0))|MULTIPOINT Z (0 0 0,2 0 0)|t
+MULTIPOINT M ((0 0 0), (2 0 0))|MULTIPOINT M (0 0 0,2 0 0)|t
+MULTIPOINT ZM ((0 0 0 0), (2 0 0 0))|MULTIPOINT ZM (0 0 0 0,2 0 0 0)|t
LINESTRING EMPTY|LINESTRING EMPTY|t
ERROR: parse error - invalid geometry
HINT: "LINESTRING(EMPTY" <-- parse error at position 16 within geometry
HINT: "LINESTRING((" <-- parse error at position 12 within geometry
ERROR: parse error - invalid geometry
HINT: "LINESTRING((" <-- parse error at position 12 within geometry
+LINESTRING Z (0 0 0, 1 1 0)|LINESTRING Z (0 0 0,1 1 0)|t
+LINESTRING M (0 0 0, 1 1 0)|LINESTRING M (0 0 0,1 1 0)|t
+LINESTRING ZM (0 0 0 0, 1 1 0 0)|LINESTRING ZM (0 0 0 0,1 1 0 0)|t
MULTILINESTRING EMPTY|MULTILINESTRING EMPTY|t
ERROR: parse error - invalid geometry
HINT: "MULTILINESTRING(EMPTY" <-- parse error at position 21 within geometry
HINT: "...ESTRING((0 0, 2 0), (1 1, 2 2), EMPTY" <-- parse error at position 45 within geometry
ERROR: parse error - invalid geometry
HINT: "...STRING((0 0, 2 0), (1 1, 2 2), (EMPTY" <-- parse error at position 46 within geometry
+MULTILINESTRING Z ((0 0 0, 2 0 0), (1 1 0, 2 2 0))|MULTILINESTRING Z ((0 0 0,2 0 0),(1 1 0,2 2 0))|t
+MULTILINESTRING M ((0 0 0, 2 0 0), (1 1 0, 2 2 0))|MULTILINESTRING M ((0 0 0,2 0 0),(1 1 0,2 2 0))|t
+MULTILINESTRING ZM ((0 0 0 0, 2 0 0 0), (1 1 0 0, 2 2 0 0))|MULTILINESTRING ZM ((0 0 0 0,2 0 0 0),(1 1 0 0,2 2 0 0))|t
POLYGON EMPTY|POLYGON EMPTY|t
ERROR: parse error - invalid geometry
HINT: "POLYGON(EMPTY" <-- parse error at position 13 within geometry
POLYGON((0 0,1 0,1 1,0 1,0 0))|POLYGON((0 0,1 0,1 1,0 1,0 0))|t
POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))|POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))|t
+POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|t
+POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))|t
+POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))|POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))|t
MULTIPOLYGON EMPTY|MULTIPOLYGON EMPTY|t
ERROR: parse error - invalid geometry
HINT: "MULTIPOLYGON(EMPTY" <-- parse error at position 18 within geometry
ERROR: parse error - invalid geometry
HINT: "MULTIPOLYGON((EMPTY" <-- parse error at position 19 within geometry
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))|MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))|t
+MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|t
+MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))|t
+MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))|MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))|t
GEOMETRYCOLLECTION EMPTY|GEOMETRYCOLLECTION EMPTY|t
ERROR: parse error - invalid geometry
HINT: "GEOMETRYCOLLECTION(EMPTY" <-- parse error at position 24 within geometry
ERROR: parse error - invalid geometry
HINT: "GEOMETRYCOLLECTION((" <-- parse error at position 20 within geometry
+GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0, 2 0),(1 1, 2 2)))|GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0,2 0),(1 1,2 2)))|t