switch (strategy)
{
+
+ /* Basic overlaps */
case RTOverlapStrategyNumber:
retval = (bool) box2df_overlaps(key, query);
break;
case RTOldContainedByStrategyNumber:
retval = (bool) box2df_contains(query, key);
break;
+
+ /* To one side */
+ case RTAboveStrategyNumber:
+ retval = (bool) box2df_above(key, query);
+ break;
+ case RTBelowStrategyNumber:
+ retval = (bool) box2df_below(key, query);
+ break;
+ case RTRightStrategyNumber:
+ retval = (bool) box2df_right(key, query);
+ break;
+ case RTLeftStrategyNumber:
+ retval = (bool) box2df_left(key, query);
+ break;
+
+ /* Overlapping to one side */
+ case RTOverAboveStrategyNumber:
+ retval = (bool) box2df_overabove(key, query);
+ break;
+ case RTOverBelowStrategyNumber:
+ retval = (bool) box2df_overbelow(key, query);
+ break;
+ case RTOverRightStrategyNumber:
+ retval = (bool) box2df_overright(key, query);
+ break;
+ case RTOverLeftStrategyNumber:
+ retval = (bool) box2df_overleft(key, query);
+ break;
+
default:
retval = FALSE;
}
switch (strategy)
{
+
+ /* Basic overlaps */
case RTOverlapStrategyNumber:
retval = (bool) box2df_overlaps(key, query);
break;
case RTOldContainedByStrategyNumber:
retval = (bool) box2df_overlaps(key, query);
break;
+
+ /* To one side */
+ case RTAboveStrategyNumber:
+ retval = (bool)(!box2df_overbelow(key, query));
+ break;
+ case RTBelowStrategyNumber:
+ retval = (bool)(!box2df_overabove(key, query));
+ break;
+ case RTRightStrategyNumber:
+ retval = (bool)(!box2df_overleft(key, query));
+ break;
+ case RTLeftStrategyNumber:
+ retval = (bool)(!box2df_overright(key, query));
+ break;
+
+ /* Overlapping to one side */
+ case RTOverAboveStrategyNumber:
+ retval = (bool)(!box2df_below(key, query));
+ break;
+ case RTOverBelowStrategyNumber:
+ retval = (bool)(!box2df_above(key, query));
+ break;
+ case RTOverRightStrategyNumber:
+ retval = (bool)(!box2df_left(key, query));
+ break;
+ case RTOverLeftStrategyNumber:
+ retval = (bool)(!box2df_right(key, query));
+ break;
+
default:
retval = FALSE;
}
-- #2028 --
SELECT '#2028', ST_AsText(ST_Multi('TRIANGLE((0 0, 0 1, 1 1, 0 0))'));
+
+-- #2035 START ------------------------------------------------------------
+
+-- Simple geographic table, with single point.
+CREATE TABLE "city" (
+ "id" integer,
+ "name" varchar(30) NOT NULL,
+ "point" geometry(POINT,4326) NOT NULL
+);
+CREATE INDEX "city_point_id" ON "city" USING GIST ( "point" );
+
+-- Initial data, with points around the world.
+INSERT INTO "city" (id, name, point) VALUES (1, 'Houston', 'SRID=4326;POINT(-95.363151 29.763374)');
+INSERT INTO "city" (id, name, point) VALUES (2, 'Dallas', 'SRID=4326;POINT(-95.363151 29.763374)');
+INSERT INTO "city" (id, name, point) VALUES (3, 'Oklahoma City', 'SRID=4326;POINT(-97.521157 34.464642)');
+INSERT INTO "city" (id, name, point) VALUES (4, 'Wellington', 'SRID=4326;POINT(174.783117 -41.315268)');
+INSERT INTO "city" (id, name, point) VALUES (5, 'Pueblo', 'SRID=4326;POINT(-104.609252 38.255001)');
+INSERT INTO "city" (id, name, point) VALUES (6, 'Lawrence', 'SRID=4326;POINT(-95.23506 38.971823)');
+INSERT INTO "city" (id, name, point) VALUES (7, 'Chicago', 'SRID=4326;POINT(-87.650175 41.850385)');
+INSERT INTO "city" (id, name, point) VALUES (8, 'Victoria', 'SRID=4326;POINT(-123.305196 48.462611)');
+
+-- This query, or COUNT(*), does not return anything; should return 6 cities,
+-- excluding Pueblo and Victoria. The Polygon is a simple approximation of
+-- Colorado.
+SELECT '#2035a', Count(*) FROM "city"
+ WHERE "city"."point" >> ST_GeomFromEWKT('SRID=4326;POLYGON ((-109.060253 36.992426, -109.060253 41.003444, -102.041524 41.003444, -102.041524 36.992426, -109.060253 36.992426))');
+
+-- However, when a LIMIT is placed on statement, the query suddenly works.
+SELECT '#2035b', Count(*) FROM "city"
+ WHERE "city"."point" >> ST_GeomFromEWKT('SRID=4326;POLYGON ((-109.060253 36.992426, -109.060253 41.003444, -102.041524 41.003444, -102.041524 36.992426, -109.060253 36.992426))') LIMIT 6;
+
+DROP TABLE "city";
+-- #2035 END --------------------------------------------------------------
+
+
-- #2084 --
SELECT '#2048', num, ST_Within('POINT(-54.394 56.522)', "the_geom"), ST_CoveredBy('POINT(-54.394 56.522)', "the_geom")
FROM ( VALUES
#1996|{"type":"Point","coordinates":[]}
#2001|POLYGON((0 0,0 1,1 1,0 0))
#2028|TIN(((0 0,0 1,1 1,0 0)))
+#2035a|6
+#2035b|6
#2048|1|f|f
#2048|2|t|t
#2048|3|f|f