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)