]> granicus.if.org Git - postgis/commitdiff
Get rid of knn tests where multiple records have the same distances
authorRegina Obe <lr@pcorp.us>
Sat, 8 Apr 2017 12:25:39 +0000 (12:25 +0000)
committerRegina Obe <lr@pcorp.us>
Sat, 8 Apr 2017 12:25:39 +0000 (12:25 +0000)
closes #3649 for 2.4

git-svn-id: http://svn.osgeo.org/postgis/trunk@15349 b70326c6-7e19-0410-871a-916f4a2858ee

regress/knn_recheck.sql
regress/knn_recheck_expected

index c216eadc1c70b7d824252374b204a28358853566..6d9e0e2aa25cc67eeb6496784fa768adcc95d546 100644 (file)
@@ -14,7 +14,7 @@ FROM generate_series(0,3) i;
 \r
 \r
 INSERT INTO knn_recheck_geom(gid,geom)\r
-SELECT 600000 + ROW_NUMBER() OVER(ORDER BY gid) AS gid, ST_Translate(ST_Buffer(geom,8,15),100,300) As geom\r
+SELECT 600000 + ROW_NUMBER() OVER(ORDER BY gid) AS gid, ST_Translate(ST_Buffer(geom,8,15 ),100,300) As geom\r
 FROM knn_recheck_geom\r
 WHERE gid IN(1000, 10000, 2000,3000);\r
 \r
@@ -37,8 +37,8 @@ FROM knn_recheck_geom As a
        LEFT JOIN \r
                LATERAL ( SELECT  gid, geom, a.geom <-> g.geom As knn_dist\r
                        FROM knn_recheck_geom As g WHERE a.gid <> g.gid ORDER BY a.geom <-> g.geom LIMIT 5) As b ON true\r
-       WHERE a.gid IN(1,500101,500003)\r
-ORDER BY a.gid, true_rn;\r
+       WHERE a.gid IN(1,500101)\r
+ORDER BY a.gid, true_rn, b.gid;\r
 \r
 -- create index and repeat\r
 CREATE INDEX idx_knn_recheck_geom_gist ON knn_recheck_geom USING gist(geom);\r
@@ -60,8 +60,8 @@ FROM knn_recheck_geom As a
        LEFT JOIN \r
                LATERAL ( SELECT  gid, geom, a.geom <-> g.geom As knn_dist\r
                        FROM knn_recheck_geom As g WHERE a.gid <> g.gid ORDER BY a.geom <-> g.geom LIMIT 5) As b ON true\r
-       WHERE a.gid IN(1,500101,500003)\r
-ORDER BY a.gid, true_rn;\r
+       WHERE a.gid IN(1,500101)\r
+ORDER BY a.gid, true_rn, b.gid;\r
 \r
 DROP TABLE knn_recheck_geom;\r
 \r
@@ -102,7 +102,7 @@ SELECT '#3g' As t, a.gid,  ARRAY(SELECT  gid
                        FROM knn_recheck_geog As g WHERE a.gid <> g.gid ORDER BY ST_Distance(a.geog, g.geog, false) LIMIT 5) = ARRAY(SELECT  gid\r
                        FROM knn_recheck_geog As g WHERE a.gid <> g.gid ORDER BY a.geog <-> g.geog LIMIT 5) As dist_order_agree\r
 FROM knn_recheck_geog As a \r
-       WHERE a.gid IN(500000,500010,1000,2614)\r
+       WHERE a.gid IN(500000,500010,1000)\r
 ORDER BY a.gid;\r
 \r
 \r
@@ -121,11 +121,11 @@ SELECT '#2g' As t, gid, ST_Distance( 'LINESTRING(75 10, 75 12, 80 20)'::geograph
 FROM knn_recheck_geog\r
 ORDER BY 'LINESTRING(75 10, 75 12, 80 20)'::geography <-> geog LIMIT 5;\r
 \r
-SELECT '#3g' As t, a.gid,  ARRAY(SELECT  gid\r
+SELECT '#3g' As t, a.gid,  ARRAY(SELECT  g.gid\r
                        FROM knn_recheck_geog As g WHERE a.gid <> g.gid ORDER BY ST_Distance(a.geog, g.geog, false) LIMIT 5) = ARRAY(SELECT  gid\r
                        FROM knn_recheck_geog As g WHERE a.gid <> g.gid ORDER BY a.geog <-> g.geog LIMIT 5) As dist_order_agree\r
 FROM knn_recheck_geog As a \r
-       WHERE a.gid IN(500000,500010,1000,2614)\r
+       WHERE a.gid IN(500000,500010,1000)\r
 ORDER BY a.gid;\r
 \r
 DROP TABLE knn_recheck_geog;\r
@@ -189,8 +189,8 @@ FROM knn_recheck_geom_nd As a
        LEFT JOIN \r
                LATERAL ( SELECT  gid, geom, a.geom <<->> g.geom As knn_dist\r
                        FROM knn_recheck_geom_nd As g WHERE a.gid <> g.gid ORDER BY a.geom <<->> g.geom LIMIT 5) As b ON true\r
-       WHERE a.gid IN(1,500003,600001)\r
-ORDER BY a.gid, true_rn;\r
+       WHERE a.gid IN(1,600001)\r
+ORDER BY a.gid, true_rn, b.gid;\r
 \r
 -- create index and repeat\r
 CREATE INDEX idx_knn_recheck_geom_nd_gist ON knn_recheck_geom_nd USING gist(geom gist_geometry_ops_nd);\r
@@ -214,8 +214,8 @@ FROM knn_recheck_geom_nd As a
        LEFT JOIN \r
                LATERAL ( SELECT  gid, geom, a.geom <<->> g.geom As knn_dist\r
                        FROM knn_recheck_geom_nd As g WHERE a.gid <> g.gid ORDER BY a.geom <<->> g.geom LIMIT 5) As b ON true\r
-       WHERE a.gid IN(1,500003,600001)\r
-ORDER BY a.gid, true_rn;\r
+       WHERE a.gid IN(1,600001)\r
+ORDER BY a.gid, true_rn, b.gid;\r
 \r
 \r
 DROP TABLE knn_recheck_geom_nd;\r
index 9c37f237389dfd8fc4e739307395706911328756..c280daaaa376b51592adece12506a75eed6e1e83 100644 (file)
 #3|1|147|9.6598|9.6598
 #3|1|291|10.8780|10.8780
 #3|1|292|13.4929|13.4929
-#3|500003|500004|1447.7424|1447.7424
-#3|500003|500002|1447.7424|1447.7424
-#3|500003|500001|3423.4486|3423.4486
-#3|500003|500005|3423.4486|3423.4486
-#3|500003|22837|5123.7770|5123.7770
 #3|500101|500000|0.0000|0.0000
 #3|500101|600004|971.4947|971.4947
 #3|500101|600001|1106.0791|1106.0791
 #3|1|147|9.6598|9.6598
 #3|1|291|10.8780|10.8780
 #3|1|292|13.4929|13.4929
-#3|500003|500004|1447.7424|1447.7424
-#3|500003|500002|1447.7424|1447.7424
-#3|500003|500001|3423.4486|3423.4486
-#3|500003|500005|3423.4486|3423.4486
-#3|500003|22837|5123.7770|5123.7770
 #3|500101|500000|0.0000|0.0000
 #3|500101|600004|971.4947|971.4947
 #3|500101|600001|1106.0791|1106.0791
@@ -59,7 +49,6 @@
 #2g|30695|21264.3654|21264.3654
 #2g|30512|25313.2118|25313.2118
 #3g|1000|t
-#3g|2614|t
 #3g|500000|t
 #1g|500000|0.0000|0.0000
 #1g|600003|69974.6935|69974.6935
@@ -72,7 +61,6 @@
 #2g|30695|21264.3654|21264.3654
 #2g|30512|25313.2118|25313.2118
 #3g|1000|t
-#3g|2614|t
 #3g|500000|t
 #1nd-3|290|260.6797|260.6797
 #1nd-3|287|264.3000|264.3000
 #3nd-3|1|294|9.6598|9.6598
 #3nd-3|1|582|10.8780|10.8780
 #3nd-3|1|583|13.4929|13.4929
-#3nd-3|500003|500004|1448.3262|1448.3262
-#3nd-3|500003|500002|1448.3262|1448.3262
-#3nd-3|500003|500001|3424.9088|3424.9088
-#3nd-3|500003|500005|3424.9088|3424.9088
-#3nd-3|500003|45674|5153.7747|5153.7747
 #3nd-3|600001|600002|0.0000|0.0000
 #3nd-3|600001|9752|54.2730|54.2730
 #3nd-3|600001|9461|54.3900|54.3900
 #3nd-3|1|294|9.6598|9.6598
 #3nd-3|1|582|10.8780|10.8780
 #3nd-3|1|583|13.4929|13.4929
-#3nd-3|500003|500004|1448.3262|1448.3262
-#3nd-3|500003|500002|1448.3262|1448.3262
-#3nd-3|500003|500001|3424.9088|3424.9088
-#3nd-3|500003|500005|3424.9088|3424.9088
-#3nd-3|500003|45674|5153.7747|5153.7747
 #3nd-3|600001|600002|0.0000|0.0000
 #3nd-3|600001|9752|54.2730|54.2730
 #3nd-3|600001|9461|54.3900|54.3900