Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#3206 closed defect (fixed)

winnie crashing with topology ST_AddModeFace in C commit 9.3 w32 bit run

Reported by: robe Owned by: strk
Priority: blocker Milestone: PostGIS 2.2.0
Component: topology Version: master
Keywords: Cc: esseffe

Description

Winnie was doing fine for a well until commit

r13808

broke her stride:

Output looks like this:

PostgreSQL 9.3.9, compiled by Visual C++ build 1600, 32-bit
  Postgis 2.2.0dev - r13808 - 2015-07-17 16:48:51
  scripts 2.2.0dev r13808
  GEOS: 3.5.0dev-CAPI-1.9.0 r4057
  PROJ: Rel. 4.9.1, 04 March 2015

Running tests

 regress/legacy_validate .. ok 
 regress/legacy_predicate .. ok 
 regress/legacy_invalid .. ok 
 regress/sqlmm .. ok 
 regress/legacy_query .. ok 
 regress/addnode .. ok 
 regress/addedge .. ok 
 regress/addface .. ok 
 regress/addface2.5d .. ok 
 regress/addtopogeometrycolumn .. ok 
 regress/polygonize .. ok 
 regress/st_addisoedge .. ok 
 regress/st_addisonode .. ok 
 regress/st_addedgemodface .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_14_diff)
-----------------------------------------------------------------------------
--- regress/st_addedgemodface_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_14_out	2015-07-17 12:53:18 -0400
@@ -19,184 +19,7 @@
 ERROR:  Spatial exception - geometry intersects edge 4
 L1
 L2
-T1|E7|8|-19|0|10
-T1|E10|-20|17|7|4
-T1|E17|-27|11|4|5
-T1|E19|-6|27|3|10
-T1|E27|-7|-10|10|4
-T2|E8|-15|-28|0|5
-T2|E11|28|-18|11|8
-T2|E15|-8|-16|5|0
-T2|E17|-27|11|4|11
-T2|E28|-17|15|11|5
-T3|E11|28|-18|11|8
-T3|E14|16|-13|12|0
-T3|E16|29|-14|12|0
-T3|E18|10|-29|7|8
-T3|E29|14|-11|12|8
-T4|E10|-20|17|13|4
-T4|E13|18|-12|7|0
-T4|E18|-30|-29|7|8
-T4|E20|-9|30|6|13
-T4|E30|10|13|13|7
-T5|E9|19|-22|3|6
-T5|E12|-31|22|6|0
-T5|E20|31|30|14|13
-T5|E31|20|-9|14|6
-T6|E9|19|-32|3|6
-T6|E12|-31|22|6|0
-T6|E22|21|32|0|15
-T6|E32|-22|12|15|6
-T7|E6|7|-33|0|3
-T7|E19|33|27|16|10
-T7|E21|6|9|0|16
-T7|E33|-21|-6|16|3
-T8|E9|-34|-32|16|6
-T8|E19|33|27|17|10
-T8|E21|6|34|0|17
-T8|E34|19|9|17|16
-T9|E12|-31|22|6|0
-T9|E13|18|-35|7|0
-T9|E35|35|-12|18|0
-T10|E13|18|-35|7|0
-T10|E14|16|36|12|0
-T10|E36|-13|-36|0|19
-T11|E21|6|34|0|17
-T11|E22|37|32|0|15
-T11|E37|21|-37|0|20
-T12|E1|1|-38|1|0
-T12|E38|38|-1|21|0
-T13|E2|3|39|2|0
-T13|E39|-2|-39|0|22
-T14|E1|-40|-38|1|0
-T14|E40|1|40|1|1
-N23|
-T15|E1|-40|41|1|0
-T15|E38|38|-1|21|0
-T15|E41|-41|-38|0|0
-N24|
-T16|E2|3|39|23|0
-T16|E3|-3|2|23|23
-T16|E42|42|-42|23|2
-N4|
-T17|E43|-43|43|0|0
-N25|
-N26|
-T18|E4|-5|4|24|24
-T18|E5|-4|5|24|24
-T18|E43|-44|44|24|0
-T18|E44|-43|43|0|24
-T19|E12|-31|-45|6|25
-T19|E22|37|32|0|15
-T19|E35|35|45|18|0
-T19|E45|22|-12|0|25
-T20|E14|16|46|12|26
-T20|E16|29|-46|12|0
-T20|E36|-13|-36|0|19
-T20|E46|-14|36|26|0
-T21|E16|29|-47|12|0
-T21|E36|-13|-36|0|19
-T21|E46|-14|47|26|27
-T21|E47|-46|36|27|0
-T22-|N27|23
-T22-|N28|23
-T22-|N29|23
-T22|E2|3|39|28|0
-T22|E3|48|2|28|28
-T22|E42|42|-42|28|2
-T22|E48|-3|-48|28|23
-T22|N27|28
-T22|N28|23
-T22|N29|28
-T23|E2|3|39|28|0
-T23|E3|-49|49|28|29
-T23|E39|-2|-39|0|22
-T23|E42|42|-42|28|2
-T23|E48|-3|-48|29|23
-T23|E49|48|2|29|28
-T23|N27|28
-T23|N28|23
-T23|N29|29
-T24-|N30|28
-T24-|N31|28
-T24-|N32|2
-T24-|N33|28
-T24-|N34|28
-T24|E2|3|39|30|0
-T24|E3|-49|49|30|29
-T24|E42|42|-42|28|2
-T24|E49|48|2|29|30
-T24|E50|50|-50|30|28
-T24|N27|30
-T24|N30|
-T24|N31|30
-T24|N32|2
-T24|N33|28
-T24|N34|30
-T25|E2|3|39|30|0
-T25|E3|-49|49|30|29
-T25|E42|42|-42|28|2
-T25|E49|48|2|29|30
-T25|E50|50|-50|31|28
-T25|E51|51|-51|31|30
-T25|N27|30
-T25|N31|
-T25|N32|2
-T25|N33|28
-T25|N34|31
-T26|E4|-52|52|24|32
-T26|E5|-4|5|32|32
-T26|E43|-44|44|32|0
-T26|E44|-43|43|0|32
-T26|E52|-5|4|32|24
-T27|E4|-52|53|24|33
-T27|E5|-4|5|33|33
-T27|E43|-44|44|33|0
-T27|E44|-43|43|0|33
-T27|E52|-53|4|32|24
-T27|E53|-5|52|33|32
-T28|E4|-52|53|24|34
-T28|E5|-4|54|34|34
-T28|E43|-44|44|34|0
-T28|E44|-43|43|0|34
-T28|E52|-53|4|32|24
-T28|E53|-5|52|34|32
-T28|E54|5|-54|34|33
-F3,F4|{3:3,3:4,3:10,3:16,3:17}
-F5,N4|{1:4,3:5,3:11}
-F0|
-F1|POLYGON((3 30,3 38,16 38,16 30,3 30))
-F2|POLYGON((20 34,20 37,23 37,23 34,20 34))
-F3|POLYGON((9 20,9 22,21 22,21 20,9 20))
-F4|POLYGON((21 14,21 22,35 22,35 14,21 14))
-F5|POLYGON((35 14,35 22,47 22,47 14,35 14))
-F6|POLYGON((9 6,9 14,21 14,21 6,9 6))
-F7|POLYGON((21 6,21 14,35 14,35 6,21 6))
-F8|POLYGON((35 6,35 14,47 14,47 6,35 6))
-F9|POLYGON((4 31,4 34,7 34,7 31,4 31))
-F10|POLYGON((21 14,21 22,35 22,35 14,21 14))
-F11|POLYGON((35 14,35 22,47 22,47 14,35 14))
-F12|POLYGON((35 6,35 14,47 14,47 6,35 6))
-F13|POLYGON((21 6,21 14,35 14,35 6,21 6))
-F14|POLYGON((19 6,19 14,21 14,21 6,19 6))
-F15|POLYGON((9 6,9 14,11 14,11 6,9 6))
-F16|POLYGON((9 14,9 16,21 16,21 14,9 14))
-F17|POLYGON((9 14,9 22,21 22,21 14,9 14))
-F18|POLYGON((18 0,18 6,24 6,24 0,18 0))
-F19|POLYGON((32 0,32 6,38 6,38 0,32 0))
-F20|POLYGON((3 11,3 17,9 17,9 11,3 11))
-F21|POLYGON((5 27,5 30,11 30,11 27,5 27))
-F22|POLYGON((22 27,22 30,28 30,28 27,22 27))
-F23|POLYGON((25 34,25 35,27 35,27 34,25 34))
-F24|POLYGON((36 28,36 38,57 38,57 28,36 28))
-F25|POLYGON((9 0,9 6,21 6,21 0,9 0))
-F26|POLYGON((35 0,35 6,47 6,47 0,35 0))
-F27|POLYGON((35 -4,35 6,47 6,47 -4,35 -4))
-F28|POLYGON((19.5 32.5,19.5 37.5,24.5 37.5,24.5 32.5,19.5 32.5))
-F29|POLYGON((25 30,25 37,29 37,29 30,25 30))
-F30|POLYGON((17 30,17 40,31 40,31 30,17 30))
-F31|POLYGON((19 31,19 38,26 38,26 31,19 31))
-F32|POLYGON((36 33,36 38,57 38,57 33,36 33))
-F33|POLYGON((38 40,38 43,41 43,41 40,38 40))
-F34|POLYGON((35 25,35 45,63 45,63 25,35 25))
-Topology 'city_data' dropped
+server closed the connection unexpectedly
+	This probably means the server terminated abnormally
+	before or while processing the request.
+connection to server was lost
-----------------------------------------------------------------------------
 regress/st_addedgenewfaces .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_15_diff)
-----------------------------------------------------------------------------
--- regress/st_addedgenewfaces_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_15_out	2015-07-17 12:53:18 -0400
@@ -1,202 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-ERROR:  SQL/MM Spatial exception - start node not geometry start point.
-ERROR:  SQL/MM Spatial exception - end node not geometry end point.
-ERROR:  SQL/MM Spatial exception - end node not geometry end point.
-ERROR:  SQL/MM Spatial exception - geometry crosses a node
-ERROR:  SQL/MM Spatial exception - non-existent node
-ERROR:  SQL/MM Spatial exception - non-existent node
-ERROR:  SQL/MM Spatial exception - curve not simple
-ERROR:  Invalid edge (no two distinct vertices exist)
-ERROR:  Invalid edge (no two distinct vertices exist)
-ERROR:  SQL/MM Spatial exception - coincident edge 8
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 5
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 4
-ERROR:  Spatial exception - geometry intersects edge 4
-L1
-L2
-T1|E7|8|-19|0|11
-T1|E10|-20|17|7|10
-T1|E17|-27|11|10|5
-T1|E19|-6|27|3|11
-T1|E27|-7|-10|11|10
-T2|E8|-15|-28|0|12
-T2|E11|28|-18|13|8
-T2|E15|-8|-16|12|0
-T2|E17|-27|11|10|13
-T2|E28|-17|15|13|12
-T3|E11|28|-18|13|14
-T3|E14|16|-13|15|0
-T3|E16|29|-14|15|0
-T3|E18|10|-29|7|14
-T3|E29|14|-11|15|14
-T4|E10|-20|17|17|10
-T4|E13|18|-12|16|0
-T4|E18|-30|-29|16|14
-T4|E20|-9|30|6|17
-T4|E30|10|13|17|16
-T5|E9|19|-22|3|18
-T5|E12|-31|22|18|0
-T5|E20|31|30|19|17
-T5|E31|20|-9|19|18
-T6|E9|19|-32|3|20
-T6|E12|-31|22|20|0
-T6|E22|21|32|0|21
-T6|E32|-22|12|21|20
-T7|E6|7|-33|0|22
-T7|E19|33|27|23|11
-T7|E21|6|9|0|23
-T7|E33|-21|-6|23|22
-T8|E9|-34|-32|24|20
-T8|E19|33|27|25|11
-T8|E21|6|34|0|25
-T8|E34|19|9|25|24
-T9|E12|-31|22|20|0
-T9|E13|18|-35|16|0
-T9|E35|35|-12|26|0
-T10|E13|18|-35|16|0
-T10|E14|16|36|15|0
-T10|E36|-13|-36|0|27
-T11|E21|6|34|0|25
-T11|E22|37|32|0|21
-T11|E37|21|-37|0|28
-T12|E1|1|-38|1|0
-T12|E38|38|-1|29|0
-T13|E2|3|39|2|0
-T13|E39|-2|-39|0|30
-T14|E1|-40|-38|1|0
-T14|E40|1|40|1|1
-N23|
-T15|E1|-40|41|1|0
-T15|E38|38|-1|29|0
-T15|E41|-41|-38|0|0
-N24|
-T16|E2|3|39|32|0
-T16|E3|-3|2|32|32
-T16|E42|42|-42|32|31
-N4|
-T17|E43|-43|43|0|0
-N25|
-N26|
-T18|E4|-5|4|33|33
-T18|E5|-4|5|33|33
-T18|E43|-44|44|33|0
-T18|E44|-43|43|0|33
-T19|E12|-31|-45|20|34
-T19|E22|37|32|0|21
-T19|E35|35|45|26|0
-T19|E45|22|-12|0|34
-T20|E14|16|46|15|35
-T20|E16|29|-46|15|0
-T20|E36|-13|-36|0|27
-T20|E46|-14|36|35|0
-T21|E16|29|-47|15|0
-T21|E36|-13|-36|0|27
-T21|E46|-14|47|35|36
-T21|E47|-46|36|36|0
-T22-|N27|32
-T22-|N28|32
-T22-|N29|32
-T22|E2|3|39|38|0
-T22|E3|48|2|38|38
-T22|E42|42|-42|38|31
-T22|E48|-3|-48|38|37
-T22|N27|38
-T22|N28|37
-T22|N29|38
-T23|E2|3|39|39|0
-T23|E3|-49|49|39|40
-T23|E39|-2|-39|0|30
-T23|E42|42|-42|39|31
-T23|E48|-3|-48|40|37
-T23|E49|48|2|40|39
-T23|N27|39
-T23|N28|37
-T23|N29|40
-T24-|N30|39
-T24-|N31|39
-T24-|N32|31
-T24-|N33|39
-T24-|N34|39
-T24|E2|3|39|42|0
-T24|E3|-49|49|42|40
-T24|E42|42|-42|41|31
-T24|E49|48|2|40|42
-T24|E50|50|-50|42|41
-T24|N27|42
-T24|N30|
-T24|N31|42
-T24|N32|31
-T24|N33|41
-T24|N34|42
-T25|E2|3|39|43|0
-T25|E3|-49|49|43|40
-T25|E42|42|-42|41|31
-T25|E49|48|2|40|43
-T25|E50|50|-50|44|41
-T25|E51|51|-51|44|43
-T25|N27|43
-T25|N31|
-T25|N32|31
-T25|N33|41
-T25|N34|44
-T26|E4|-52|52|45|46
-T26|E5|-4|5|46|46
-T26|E43|-44|44|46|0
-T26|E44|-43|43|0|46
-T26|E52|-5|4|46|45
-T27|E4|-52|53|45|48
-T27|E5|-4|5|48|48
-T27|E43|-44|44|48|0
-T27|E44|-43|43|0|48
-T27|E52|-53|4|47|45
-T27|E53|-5|52|48|47
-T28|E4|-52|53|45|50
-T28|E5|-4|54|50|50
-T28|E43|-44|44|50|0
-T28|E44|-43|43|0|50
-T28|E52|-53|4|47|45
-T28|E53|-5|52|50|47
-T28|E54|5|-54|50|49
-F3,F4|{3:10,3:11,3:22,3:24,3:25}
-F5,N4|{1:4,3:12,3:13}
-F0|
-F1|POLYGON((3 30,3 38,16 38,16 30,3 30))
-F9|POLYGON((4 31,4 34,7 34,7 31,4 31))
-F10|POLYGON((21 14,21 22,35 22,35 14,21 14))
-F11|POLYGON((21 14,21 22,35 22,35 14,21 14))
-F12|POLYGON((35 14,35 22,47 22,47 14,35 14))
-F13|POLYGON((35 14,35 22,47 22,47 14,35 14))
-F14|POLYGON((35 6,35 14,47 14,47 6,35 6))
-F15|POLYGON((35 6,35 14,47 14,47 6,35 6))
-F16|POLYGON((21 6,21 14,35 14,35 6,21 6))
-F17|POLYGON((21 6,21 14,35 14,35 6,21 6))
-F19|POLYGON((19 6,19 14,21 14,21 6,19 6))
-F20|POLYGON((9 6,9 14,21 14,21 6,9 6))
-F21|POLYGON((9 6,9 14,11 14,11 6,9 6))
-F22|POLYGON((9 20,9 22,21 22,21 20,9 20))
-F24|POLYGON((9 14,9 16,21 16,21 14,9 14))
-F25|POLYGON((9 14,9 22,21 22,21 14,9 14))
-F26|POLYGON((18 0,18 6,24 6,24 0,18 0))
-F27|POLYGON((32 0,32 6,38 6,38 0,32 0))
-F28|POLYGON((3 11,3 17,9 17,9 11,3 11))
-F29|POLYGON((5 27,5 30,11 30,11 27,5 27))
-F30|POLYGON((22 27,22 30,28 30,28 27,22 27))
-F31|POLYGON((20 34,20 37,23 37,23 34,20 34))
-F34|POLYGON((9 0,9 6,21 6,21 0,9 0))
-F35|POLYGON((35 0,35 6,47 6,47 0,35 0))
-F36|POLYGON((35 -4,35 6,47 6,47 -4,35 -4))
-F37|POLYGON((25 34,25 35,27 35,27 34,25 34))
-F40|POLYGON((25 30,25 37,29 37,29 30,25 30))
-F41|POLYGON((19.5 32.5,19.5 37.5,24.5 37.5,24.5 32.5,19.5 32.5))
-F43|POLYGON((17 30,17 40,31 40,31 30,17 30))
-F44|POLYGON((19 31,19 38,26 38,26 31,19 31))
-F45|POLYGON((36 28,36 38,57 38,57 28,36 28))
-F47|POLYGON((36 33,36 38,57 38,57 33,36 33))
-F49|POLYGON((38 40,38 43,41 43,41 40,38 40))
-F50|POLYGON((35 25,35 45,63 45,63 25,35 25))
-Topology 'city_data' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_changeedgegeom .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_16_diff)
-----------------------------------------------------------------------------
--- regress/st_changeedgegeom_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_16_out	2015-07-17 12:53:18 -0400
@@ -1,44 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-T1|Edge 25 changed
-ERROR:  SQL/MM Spatial exception - start node not geometry start point.
-ERROR:  SQL/MM Spatial exception - end node not geometry end point.
-ERROR:  SQL/MM Spatial exception - geometry crosses a node
-ERROR:  SQL/MM Spatial exception - curve not simple
-ERROR:  Invalid edge (no two distinct vertices exist)
-ERROR:  SQL/MM Spatial exception - non-existent edge 666
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 1
-T2|Edge 5 changed
-T3|Edge 5 changed
-T4|Edge 26 changed
-T4F|t
-ERROR:  Edge motion collision at POINT(9 35)
-T5|Edge 3 changed
-T6|Edge 3 changed
-ERROR:  Edge motion collision at POINT(20 37)
-T7|Edge 2 changed
-T7F|t
-ERROR:  Edge motion collision at POINT(20 37)
-T7.1|Edge 2 changed
-T7F.1|t
-ERROR:  Edge twist at node POINT(4 31)
-T8|Edge 26 changed
-T8F|t
-ERROR:  Edge motion collision at POINT(9 6)
-T9|27
-ERROR:  Edge changed disposition around start node 20
-T10|28
-ERROR:  Edge changed disposition around start node 17
-T11|Edge 16 changed
-T11F|t
-T12.1|23
-ERROR:  Edge motion collision at POINT(49 10)
-T13.1|29
-T13.2|Edge 29 changed
-T13.3|26
-ERROR:  Edge motion collision at POINT(-1.1697 47.7825)
-Topology 'city_data' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_createtopogeo .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_17_diff)
-----------------------------------------------------------------------------
--- regress/st_createtopogeo_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_17_out	2015-07-17 12:53:18 -0400
@@ -1,42 +1 @@
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  Geometry SRID (0) does not match topology SRID (4326)
-T1|POINT(0 0)
-T1|1 nodes|0 edges|0 faces
-T2|SRID=4326;LINESTRING(0 0,8 -40)
-T2|2 nodes|1 edges|0 faces
-T3|SRID=4326;POLYGON((0 0,8 -40,70 34,0 0))
-T3|1 nodes|1 edges|1 faces
-T4|SRID=4326;POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,8 9,4 2,5 5))
-T4|2 nodes|2 edges|2 faces
-T5|MULTIPOINT(0 0,5 5,0 0,10 -2,5 5,0 0)
-T5|3 nodes|0 edges|0 faces
-T6|MULTILINESTRING((0 0,10 0),(10 0,0 0))
-T6|2 nodes|1 edges|0 faces
-T7|MULTILINESTRING((0 0,10 0),(5 -5,6 5))
-T7|5 nodes|4 edges|0 faces
-T8|MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((0 0,0 10,10 10,10 0,0 0)))
-T8|1 nodes|1 edges|1 faces
-T9|MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,5 15,15 15,15 5,5 5)))
-T9|2 nodes|4 edges|3 faces
-T10|MULTIPOLYGON(((0 0,5 10,10 0,0 0)),((0 20,5 10,10 20,0 20)))
-T10|1 nodes|2 edges|2 faces
-T11|GEOMETRYCOLLECTION(LINESTRING(0 0,10 0),POINT(5 0))
-T11|3 nodes|2 edges|0 faces
-T12|GEOMETRYCOLLECTION(LINESTRING(0 0,10 0),POINT(0 0),POINT(10 0))
-T12|2 nodes|1 edges|0 faces
-T13|GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,5 15,15 15,15 5,5 5),(10 10,12 10,10 12,10 10))),LINESTRING(0 0,20 0),MULTIPOINT(0 0,10 0,5 0),MULTILINESTRING((0 0,10 0),(10 0,15 5)),POINT(5 0),POINT(10.5 10.5),POINT(100 500))
-T13|10 nodes|12 edges|5 faces
-T13|1 isolated nodes in face 0
-T13|1 isolated nodes in face 5
-T14|GEOMETRYCOLLECTION(LINESTRING(8 30,16 30,16 38,3 38,3 30,8 30),POINT(4 31),LINESTRING(4 31,7 31,7 34,4 34,4 31),POINT(8 30),POINT(9 6),LINESTRING(9 6,9 14),LINESTRING(9 6,21 6),POLYGON((9 14,21 14,21 6,9 6,9 14)),POINT(9 14),LINESTRING(9 14,9 22),LINESTRING(9 14,21 14),POLYGON((9 22,21 22,21 14,9 14,9 22)),POINT(9 22),LINESTRING(9 22,21 22),POINT(9 35),LINESTRING(9 35,13 35),POINT(13 35),POLYGON((25 30,17 30,17 40,31 40,31 30,25 30)),POINT(20 37),POINT(21 6),LINESTRING(21 6,21 14),LINESTRING(21 6,35 6),POLYGON((21 14,35 14,35 6,21 6,21 14)),POINT(21 14),LINESTRING(21 14,21 22),LINESTRING(35 14,21 14),POLYGON((21 22,35 22,35 14,21 14,21 22)),POINT(21 22),LINESTRING(21 22,35 22),POINT(25 30),LINESTRING(25 30,25 35),POINT(25 35),POINT(35 6),LINESTRING(35 6,35 14),LINESTRING(35 6,47 6),POLYGON((35 14,47 14,47 6,35 6,35 14)),POINT(35 14),LINESTRING(35 14,35 22),LINESTRING(35 14,47 14),POLYGON((35 22,47 22,47 14,35 14,35 22)),POINT(35 22),LINESTRING(35 22,47 22),LINESTRING(36 38,38 35,41 34,42 33,45 32,47 28,50 28,52 32,57 33),POINT(36 38),LINESTRING(41 40,45 40,47 42,62 41,61 38,59 39,57 36,57 33),POINT(41 40),POINT(47 6),LINESTRING(47 6,47 14),POINT(47 14),LINESTRING(47 14,47 22),POINT(47 22),POINT(57 33))
-T14|22 nodes|24 edges|9 faces
-T14|1 isolated nodes in face 3
-T15|GEOMETRYCOLLECTION(LINESTRING(-5 -2,0 0),LINESTRING(0 0,10 10),LINESTRING(0 0,5 2,10 10),LINESTRING(10 10,12 10))
-T15|4 nodes|4 edges|1 faces
-T16|GEOMETRYCOLLECTION(LINESTRING(0 0,10 0),LINESTRING(0 3,20 4),LINESTRING(10 0,20 4))
-T16|4 nodes|3 edges|0 faces
-T17|MULTILINESTRING((832709.937 816560.25,832705.813 816470.25,832661.937 816561.875),(832705.812 816470.25,832709.937 816560.25),(832661.938 816561.875,832705.813 816470.25))
-T17|7 nodes|8 edges|2 faces
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_getfacegeometry .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_18_diff)
-----------------------------------------------------------------------------
--- regress/st_getfacegeometry_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_18_out	2015-07-17 12:53:18 -0400
@@ -1,10 +1 @@
-t
-f1 (with hole)|POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))
-f2 (fill hole)|POLYGON((2 2,2 8,8 8,8 2,2 2))
-ERROR:  SQL/MM Spatial exception - universal face has no geometry
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - non-existent face.
-Topology 'tt' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_getfaceedges .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_19_diff)
-----------------------------------------------------------------------------
--- regress/st_getfaceedges_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_19_out	2015-07-17 12:53:18 -0400
@@ -1,30 +1 @@
-t
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - invalid topology name
-E1
-E2
-E3
-E4
-E5
-E6
-E7
-F1
-F2
-F1|1|-4
-F1|2|5
-F1|3|7
-F1|4|-6
-F1|5|1
-F1|6|2
-F1|7|3
-F2|1|-1
-F2|2|-3
-F2|3|-2
-F0|1|4
-F0|2|6
-F0|3|-7
-F0|4|-5
-Topology 'tt' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_modedgeheal .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_20_diff)
-----------------------------------------------------------------------------
--- regress/st_modedgeheal_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_20_out	2015-07-17 12:53:18 -0400
@@ -1,150 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - non-connected edges
-ERROR:  SQL/MM Spatial exception - other edges connected (19,20)
-ERROR:  Edge 2 is closed, cannot heal to edge 3
-ERROR:  Edge 2 is closed, cannot heal to edge 3
-ERROR:  Cannot heal edge 25 with itself, try with another
-E1|POINT(8 30)|POINT(8 30)|1|-1|1|1
-E2|POINT(25 30)|POINT(25 30)|3|-2|2|2
-E3|POINT(25 30)|POINT(25 35)|-3|2|2|3
-E4|POINT(36 38)|POINT(57 33)|-5|4|5|6
-E5|POINT(41 40)|POINT(57 33)|-4|5|7|6
-E6|POINT(9 22)|POINT(21 22)|7|-21|16|17
-E7|POINT(21 22)|POINT(35 22)|8|-19|17|18
-E8|POINT(35 22)|POINT(47 22)|-15|-17|18|19
-E9|POINT(9 14)|POINT(21 14)|19|-22|15|14
-E10|POINT(35 14)|POINT(21 14)|-20|17|13|14
-E11|POINT(35 14)|POINT(47 14)|15|-18|13|12
-E12|POINT(9 6)|POINT(21 6)|20|22|8|9
-E13|POINT(21 6)|POINT(35 6)|18|-12|9|10
-E14|POINT(35 6)|POINT(47 6)|16|-13|10|11
-E15|POINT(47 14)|POINT(47 22)|-8|-16|12|19
-E16|POINT(47 6)|POINT(47 14)|-11|-14|11|12
-E17|POINT(35 14)|POINT(35 22)|-7|11|13|18
-E18|POINT(35 6)|POINT(35 14)|10|14|10|13
-E19|POINT(21 14)|POINT(21 22)|-6|-10|14|17
-E20|POINT(21 6)|POINT(21 14)|-9|13|9|14
-E21|POINT(9 14)|POINT(9 22)|6|9|15|16
-E22|POINT(9 6)|POINT(9 14)|21|12|8|15
-E25|POINT(9 35)|POINT(13 35)|-25|25|21|22
-E26|POINT(4 31)|POINT(4 31)|26|-26|20|20
-N1
-N2
-N3
-N4
-N5
-N6
-N7
-N8
-N9
-N10
-N11
-N12
-N13
-N14
-N15
-N16
-N17
-N18
-N19
-N20
-N21
-N22
-MH(4,5)|6
-MH(21,6)|16
-MH(8,15)|19
-MH(12,22)|8
-MH(16,14)|11
-E1|POINT(8 30)|POINT(8 30)|1|-1|1|1
-E2|POINT(25 30)|POINT(25 30)|3|-2|2|2
-E3|POINT(25 30)|POINT(25 35)|-3|2|2|3
-E4|POINT(36 38)|POINT(41 40)|-4|4|5|7
-E7|POINT(21 22)|POINT(35 22)|8|-19|17|18
-E8|POINT(35 22)|POINT(47 14)|-16|-17|18|12
-E9|POINT(9 14)|POINT(21 14)|19|12|15|14
-E10|POINT(35 14)|POINT(21 14)|-20|17|13|14
-E11|POINT(35 14)|POINT(47 14)|-8|-18|13|12
-E12|POINT(9 14)|POINT(21 6)|20|21|15|9
-E13|POINT(21 6)|POINT(35 6)|18|-12|9|10
-E16|POINT(35 6)|POINT(47 14)|-11|-13|10|12
-E17|POINT(35 14)|POINT(35 22)|-7|11|13|18
-E18|POINT(35 6)|POINT(35 14)|10|16|10|13
-E19|POINT(21 14)|POINT(21 22)|-21|-10|14|17
-E20|POINT(21 6)|POINT(21 14)|-9|13|9|14
-E21|POINT(9 14)|POINT(21 22)|7|9|15|17
-E25|POINT(9 35)|POINT(13 35)|-25|25|21|22
-E26|POINT(4 31)|POINT(4 31)|26|-26|20|20
-N1
-N2
-N3
-N4
-N5
-N7
-N9
-N10
-N12
-N13
-N14
-N15
-N17
-N18
-N20
-N21
-N22
-Topology 'city_data' dropped
-t
-1
-E1
-E2
-ERROR:  TopoGeom 1 in layer 1 (t.f.g) cannot be represented healing edges 1 and 2
-ERROR:  TopoGeom 1 in layer 1 (t.f.g) cannot be represented healing edges 2 and 1
-ERROR:  SQL/MM Spatial exception - non-existent edge 200
-ERROR:  SQL/MM Spatial exception - non-existent edge 100
-E3
-E4
-2|-4
-2|3
-3|4
-3|-3
-MH(3,4)|5
-ERROR:  SQL/MM Spatial exception - non-connected edges
-2|3
-3|-3
-Topology 't' dropped
-#1955|t
-#1955.1|E1
-#1955.1|E2
-#1955.1|2|start nodes
-#1955.1|H:1,2|N2|deleted
-#1955.1|1|nodes left
-#1955.2|E3
-#1955.2|E4
-#1955.2|E5
-#1955.2|4|start nodes
-#1955.2|H:3,4|N3|deleted
-#1955.2|3|nodes left
-#1955.3|E6
-#1955.3|E7
-#1955.3|E8
-#1955.3|5|start nodes
-#1955.3|H:6,7|N7|deleted
-#1955.3|4|nodes left
-#1955|Topology 't' dropped
-#1998.+|t
-#1998.N1|1
-#1998.N2|2
-#1998.E1|1
-#1998.E2|2
-#1998.E3|3
-#1998.N-|2
-#1998.M2|LINESTRING(1 1,1 0,0 0,0 1,1 1)
-#1998.-|Topology 't1998' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_modedgesplit .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_21_diff)
-----------------------------------------------------------------------------
--- regress/st_modedgesplit_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_21_out	2015-07-17 12:53:18 -0400
@@ -1,43 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-max|node|22
-max|edge|26
-ERROR:  geometry has too many points at character 53
-ERROR:  SQL/MM Spatial exception - point not on edge
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-noniso|23
-N|23||POINT(28 14)
-E|10|sn13|en23|nl27|nr17|lf7|rf4
-E|27|sn23|en14|nl-20|nr-10|lf7|rf4
-iso|24
-N|24||POINT(11 35)
-E|25|sn21|en24|nl28|nr25|lf1|rf1
-E|28|sn24|en22|nl-28|nr-25|lf1|rf1
-dangling_end|25
-N|25||POINT(25 32)
-E|3|sn2|en25|nl29|nr2|lf2|rf2
-E|29|sn25|en3|nl-29|nr-3|lf2|rf2
-dangling_start|26
-N|26||POINT(45 32)
-E|4|sn5|en26|nl30|nr4|lf0|rf0
-E|30|sn26|en6|nl-5|nr-4|lf0|rf0
-closed|27
-N|27||POINT(3 38)
-E|1|sn1|en27|nl31|nr-31|lf1|rf0
-E|31|sn27|en1|nl1|nr-1|lf1|rf0
-robust.1|E32|N30
-N|28||POINT(20 10)
-N|29||POINT(10 20)
-N|30||POINT(9 12)
-E|32|sn28|en30|nl33|nr32|lf0|rf0
-E|33|sn30|en29|nl-33|nr-32|lf0|rf0
-robust.2|t|t
-Topology 'city_data' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_newedgeheal .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_22_diff)
-----------------------------------------------------------------------------
--- regress/st_newedgeheal_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_22_out	2015-07-17 12:53:18 -0400
@@ -1,150 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - non-connected edges
-ERROR:  SQL/MM Spatial exception - other edges connected (19,20)
-ERROR:  Edge 2 is closed, cannot heal to edge 3
-ERROR:  Edge 2 is closed, cannot heal to edge 3
-ERROR:  Cannot heal edge 25 with itself, try with another
-E1|POINT(8 30)|POINT(8 30)|1|-1|1|1
-E2|POINT(25 30)|POINT(25 30)|3|-2|2|2
-E3|POINT(25 30)|POINT(25 35)|-3|2|2|3
-E4|POINT(36 38)|POINT(57 33)|-5|4|5|6
-E5|POINT(41 40)|POINT(57 33)|-4|5|7|6
-E6|POINT(9 22)|POINT(21 22)|7|-21|16|17
-E7|POINT(21 22)|POINT(35 22)|8|-19|17|18
-E8|POINT(35 22)|POINT(47 22)|-15|-17|18|19
-E9|POINT(9 14)|POINT(21 14)|19|-22|15|14
-E10|POINT(35 14)|POINT(21 14)|-20|17|13|14
-E11|POINT(35 14)|POINT(47 14)|15|-18|13|12
-E12|POINT(9 6)|POINT(21 6)|20|22|8|9
-E13|POINT(21 6)|POINT(35 6)|18|-12|9|10
-E14|POINT(35 6)|POINT(47 6)|16|-13|10|11
-E15|POINT(47 14)|POINT(47 22)|-8|-16|12|19
-E16|POINT(47 6)|POINT(47 14)|-11|-14|11|12
-E17|POINT(35 14)|POINT(35 22)|-7|11|13|18
-E18|POINT(35 6)|POINT(35 14)|10|14|10|13
-E19|POINT(21 14)|POINT(21 22)|-6|-10|14|17
-E20|POINT(21 6)|POINT(21 14)|-9|13|9|14
-E21|POINT(9 14)|POINT(9 22)|6|9|15|16
-E22|POINT(9 6)|POINT(9 14)|21|12|8|15
-E25|POINT(9 35)|POINT(13 35)|-25|25|21|22
-E26|POINT(4 31)|POINT(4 31)|26|-26|20|20
-N1
-N2
-N3
-N4
-N5
-N6
-N7
-N8
-N9
-N10
-N11
-N12
-N13
-N14
-N15
-N16
-N17
-N18
-N19
-N20
-N21
-N22
-MH(4,5)|27
-MH(21,6)|28
-MH(8,15)|29
-MH(12,22)|30
-MH(16,14)|31
-E1|POINT(8 30)|POINT(8 30)|1|-1|1|1
-E2|POINT(25 30)|POINT(25 30)|3|-2|2|2
-E3|POINT(25 30)|POINT(25 35)|-3|2|2|3
-E7|POINT(21 22)|POINT(35 22)|29|-19|17|18
-E9|POINT(9 14)|POINT(21 14)|19|30|15|14
-E10|POINT(35 14)|POINT(21 14)|-20|17|13|14
-E11|POINT(35 14)|POINT(47 14)|-29|-18|13|12
-E13|POINT(21 6)|POINT(35 6)|18|-30|9|10
-E17|POINT(35 14)|POINT(35 22)|-7|11|13|18
-E18|POINT(35 6)|POINT(35 14)|10|31|10|13
-E19|POINT(21 14)|POINT(21 22)|-28|-10|14|17
-E20|POINT(21 6)|POINT(21 14)|-9|13|9|14
-E25|POINT(9 35)|POINT(13 35)|-25|25|21|22
-E26|POINT(4 31)|POINT(4 31)|26|-26|20|20
-E27|POINT(36 38)|POINT(41 40)|-27|27|5|7
-E28|POINT(9 14)|POINT(21 22)|7|9|15|17
-E29|POINT(35 22)|POINT(47 14)|-31|-17|18|12
-E30|POINT(9 14)|POINT(21 6)|20|28|15|9
-E31|POINT(35 6)|POINT(47 14)|-11|-13|10|12
-N1
-N2
-N3
-N4
-N5
-N7
-N9
-N10
-N12
-N13
-N14
-N15
-N17
-N18
-N20
-N21
-N22
-Topology 'city_data' dropped
-t
-1
-E1
-E2
-ERROR:  TopoGeom 1 in layer 1 (t.f.g) cannot be represented healing edges 1 and 2
-ERROR:  TopoGeom 1 in layer 1 (t.f.g) cannot be represented healing edges 2 and 1
-ERROR:  SQL/MM Spatial exception - non-existent edge 200
-ERROR:  SQL/MM Spatial exception - non-existent edge 100
-E3
-E4
-2|-4
-2|3
-3|4
-3|-3
-MH(3,4)|5
-ERROR:  SQL/MM Spatial exception - non-connected edges
-2|5
-3|-5
-Topology 't' dropped
-#1955|t
-#1955.1|E1
-#1955.1|E2
-#1955.1|2|start nodes
-#1955.1|H:1,2|E3|created
-#1955.1|1|nodes left
-#1955.2|E4
-#1955.2|E5
-#1955.2|E6
-#1955.2|4|start nodes
-#1955.2|H:4,5|E7|created
-#1955.2|3|nodes left
-#1955.3|E8
-#1955.3|E9
-#1955.3|E10
-#1955.3|5|start nodes
-#1955.3|H:8,9|E11|created
-#1955.3|4|nodes left
-#1955|Topology 't' dropped
-#1998.+|t
-#1998.N1|1
-#1998.N2|2
-#1998.E1|1
-#1998.E2|2
-#1998.E3|3
-#1998.NE|4
-#1998.NE4|LINESTRING(1 1,1 0,0 0,0 1,1 1)
-#1998.-|Topology 't1998' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_newedgessplit .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_23_diff)
-----------------------------------------------------------------------------
--- regress/st_newedgessplit_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_23_out	2015-07-17 12:53:18 -0400
@@ -1,43 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-max|node|22
-max|edge|26
-ERROR:  geometry has too many points at character 54
-ERROR:  SQL/MM Spatial exception - point not on edge
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-noniso|23
-N|23||POINT(28 14)
-E|27|sn13|en23|nl28|nr17|lf7|rf4
-E|28|sn23|en14|nl-20|nr-27|lf7|rf4
-iso|24
-N|24||POINT(11 35)
-E|29|sn21|en24|nl30|nr29|lf1|rf1
-E|30|sn24|en22|nl-30|nr-29|lf1|rf1
-dangling_end|25
-N|25||POINT(25 32)
-E|31|sn2|en25|nl32|nr2|lf2|rf2
-E|32|sn25|en3|nl-32|nr-31|lf2|rf2
-dangling_start|26
-N|26||POINT(45 32)
-E|33|sn5|en26|nl34|nr33|lf0|rf0
-E|34|sn26|en6|nl-5|nr-33|lf0|rf0
-closed|27
-N|27||POINT(3 38)
-E|35|sn1|en27|nl36|nr-36|lf1|rf0
-E|36|sn27|en1|nl35|nr-35|lf1|rf0
-robust.1|E37|N30
-N|28||POINT(20 10)
-N|29||POINT(10 20)
-N|30||POINT(9 12)
-E|38|sn28|en30|nl39|nr38|lf0|rf0
-E|39|sn30|en29|nl-39|nr-38|lf0|rf0
-robust.2|t|t
-Topology 'city_data' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_remedgenewface .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_24_diff)
-----------------------------------------------------------------------------
--- regress/st_remedgenewface_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_24_out	2015-07-17 12:53:18 -0400
@@ -1,243 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - non-existent edge 0
-ERROR:  SQL/MM Spatial exception - non-existent edge 143
-RN(25)|
-RN(25)/nodes|+|21|1
-RN(25)/nodes|-|21|
-RN(25)/nodes|+|22|1
-RN(25)/nodes|-|22|
-RN(25)/edges|-|25|-25|25|1|1
-RN(4)|
-RN(4)/nodes|+|5|0
-RN(4)/nodes|-|5|
-RN(4)/edges|-|4|-5|4|0|0
-RN(4)/edges|+|5|-5|5|0|0
-RN(4)/edges|-|5|-4|5|0|0
-RN(26)|10
-RN(26)/nodes|+|20|10
-RN(26)/nodes|-|20|
-RN(26)/nodes|+|21|10
-RN(26)/nodes|-|21|1
-RN(26)/nodes|+|22|10
-RN(26)/nodes|-|22|1
-RN(26)/edges|+|1|1|-1|10|0
-RN(26)/edges|-|1|1|-1|1|0
-RN(26)/edges|-|26|26|-26|9|1
-RN(26)/faces|-|1|SRID=4326;POLYGON((3 30,3 38,16 38,16 30,3 30))
-RN(26)/faces|-|9|SRID=4326;POLYGON((4 31,4 34,7 34,7 31,4 31))
-RN(26)/faces|+|10|SRID=4326;POLYGON((3 30,3 38,16 38,16 30,3 30))
-RN(9)|11
-RN(9)/edges|+|6|7|-21|0|11
-RN(9)/edges|-|6|7|-21|0|3
-RN(9)/edges|-|9|19|-22|3|6
-RN(9)/edges|+|12|20|22|11|0
-RN(9)/edges|-|12|20|22|6|0
-RN(9)/edges|+|19|-6|-10|11|4
-RN(9)/edges|-|19|-6|-10|3|4
-RN(9)/edges|+|20|19|13|11|7
-RN(9)/edges|-|20|-9|13|6|7
-RN(9)/edges|+|21|6|-22|0|11
-RN(9)/edges|-|21|6|9|0|3
-RN(9)/edges|+|22|21|12|0|11
-RN(9)/edges|-|22|21|12|0|6
-RN(9)/faces|-|3|SRID=4326;POLYGON((9 14,9 22,21 22,21 14,9 14))
-RN(9)/faces|-|6|SRID=4326;POLYGON((9 6,9 14,21 14,21 6,9 6))
-RN(9)/faces|+|11|SRID=4326;POLYGON((9 6,9 22,21 22,21 6,9 6))
-RN(19)|12
-RN(19)/edges|+|6|7|-21|0|12
-RN(19)/edges|-|6|7|-21|0|11
-RN(19)/edges|+|7|8|-6|0|12
-RN(19)/edges|-|7|8|-19|0|4
-RN(19)/edges|+|10|-20|17|7|12
-RN(19)/edges|-|10|-20|17|7|4
-RN(19)/edges|+|12|20|22|12|0
-RN(19)/edges|-|12|20|22|11|0
-RN(19)/edges|+|17|-7|11|12|5
-RN(19)/edges|-|17|-7|11|4|5
-RN(19)/edges|-|19|-6|-10|11|4
-RN(19)/edges|+|20|-10|13|12|7
-RN(19)/edges|-|20|19|13|11|7
-RN(19)/edges|+|21|6|-22|0|12
-RN(19)/edges|-|21|6|-22|0|11
-RN(19)/edges|+|22|21|12|0|12
-RN(19)/edges|-|22|21|12|0|11
-RN(19)/faces|-|4|SRID=4326;POLYGON((21 14,21 22,35 22,35 14,21 14))
-RN(19)/faces|-|11|SRID=4326;POLYGON((9 6,9 22,21 22,21 6,9 6))
-RN(19)/faces|+|12|SRID=4326;POLYGON((9 6,9 22,35 22,35 6,9 6))
-RN(10)|13
-RN(10)/edges|+|6|7|-21|0|13
-RN(10)/edges|-|6|7|-21|0|12
-RN(10)/edges|+|7|8|-6|0|13
-RN(10)/edges|-|7|8|-6|0|12
-RN(10)/edges|-|10|-20|17|7|12
-RN(10)/edges|+|12|20|22|13|0
-RN(10)/edges|-|12|20|22|12|0
-RN(10)/edges|+|13|18|-12|13|0
-RN(10)/edges|-|13|18|-12|7|0
-RN(10)/edges|+|17|-7|11|13|5
-RN(10)/edges|-|17|-7|11|12|5
-RN(10)/edges|+|18|17|14|13|8
-RN(10)/edges|-|18|10|14|7|8
-RN(10)/edges|+|20|-20|13|13|13
-RN(10)/edges|-|20|-10|13|12|7
-RN(10)/edges|+|21|6|-22|0|13
-RN(10)/edges|-|21|6|-22|0|12
-RN(10)/edges|+|22|21|12|0|13
-RN(10)/edges|-|22|21|12|0|12
-RN(10)/faces|-|7|SRID=4326;POLYGON((21 6,21 14,35 14,35 6,21 6))
-RN(10)/faces|-|12|SRID=4326;POLYGON((9 6,9 22,35 22,35 6,9 6))
-RN(10)/faces|+|13|SRID=4326;POLYGON((9 6,9 22,35 22,35 6,9 6))
-RN(20)|
-RN(20)/nodes|+|14|13
-RN(20)/nodes|-|14|
-RN(20)/edges|+|12|13|22|13|0
-RN(20)/edges|-|12|20|22|13|0
-RN(20)/edges|-|20|-20|13|13|13
-RN(15)|
-RN(15)/edges|+|8|-8|-17|0|0
-RN(15)/edges|-|8|-15|-17|0|5
-RN(15)/edges|+|11|-16|-18|0|8
-RN(15)/edges|-|11|15|-18|5|8
-RN(15)/edges|-|15|-8|-16|5|0
-RN(15)/edges|+|17|-7|11|13|0
-RN(15)/edges|-|17|-7|11|13|5
-RN(15)/faces|-|5|SRID=4326;POLYGON((35 14,35 22,47 22,47 14,35 14))
-RN(2)|
-RN(2)/nodes|+|4|0
-RN(2)/nodes|-|4|2
-RN(2)/edges|-|2|3|-2|2|0
-RN(2)/edges|+|3|-3|3|0|0
-RN(2)/edges|-|3|-3|2|2|2
-RN(2)/faces|-|2|SRID=4326;POLYGON((17 30,17 40,31 40,31 30,17 30))
-NE(27)|27
-NE(27)/edges|+|3|-27|3|14|14
-NE(27)/edges|-|3|-3|3|0|0
-NE(27)/edges|+|27|27|-3|0|14
-NE(27)/faces|+|14|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-RN(27)|
-RN(27)/edges|+|3|-3|3|0|0
-RN(27)/edges|-|3|-27|3|14|14
-RN(27)/edges|-|27|27|-3|0|14
-RN(27)/faces|-|14|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-NE(28)|28
-NE(28)/edges|+|3|28|3|15|15
-NE(28)/edges|-|3|-3|3|0|0
-NE(28)/edges|+|28|-3|-28|15|0
-NE(28)/faces|+|15|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-RN(28)|
-RN(28)/edges|+|3|-3|3|0|0
-RN(28)/edges|-|3|28|3|15|15
-RN(28)/edges|-|28|-3|-28|15|0
-RN(28)/faces|-|15|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-NE(29)|29
-NE(29)/edges|+|3|-3|29|16|16
-NE(29)/edges|-|3|-3|3|0|0
-NE(29)/edges|+|29|3|-29|16|0
-NE(29)/faces|+|16|SRID=4326;POLYGON((22 30,22 37,28 37,28 30,22 30))
-RN(29)|
-RN(29)/edges|+|3|-3|3|0|0
-RN(29)/edges|-|3|-3|29|16|16
-RN(29)/edges|-|29|3|-29|16|0
-RN(29)/faces|-|16|SRID=4326;POLYGON((22 30,22 37,28 37,28 30,22 30))
-NE(30)|30
-NE(31)|31
-NE(30,31)/nodes|+|4|
-NE(30,31)/nodes|-|4|0
-NE(30,31)/edges|+|3|31|3|0|0
-NE(30,31)/edges|-|3|-3|3|0|0
-NE(30,31)/edges|+|30|-31|30|17|17
-NE(30,31)/edges|+|31|-3|-30|0|17
-NE(30,31)/faces|+|17|SRID=4326;POLYGON((18 35,18 40,25 40,25 35,18 35))
-RN(31)|
-RN(31)/edges|+|3|-30|3|0|0
-RN(31)/edges|-|3|31|3|0|0
-RN(31)/edges|+|30|-3|30|0|0
-RN(31)/edges|-|30|-31|30|17|17
-RN(31)/edges|-|31|-3|-30|0|17
-RN(31)/faces|-|17|SRID=4326;POLYGON((18 35,18 40,25 40,25 35,18 35))
-NE(32)|32
-NE(32)/edges|+|3|-32|3|18|18
-NE(32)/edges|-|3|-30|3|0|0
-NE(32)/edges|+|30|-3|30|18|18
-NE(32)/edges|-|30|-3|30|0|0
-NE(32)/edges|+|32|32|-30|0|18
-NE(32)/faces|+|18|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-RN(32)|
-RN(32)/edges|+|3|-30|3|0|0
-RN(32)/edges|-|3|-32|3|18|18
-RN(32)/edges|+|30|-3|30|0|0
-RN(32)/edges|-|30|-3|30|18|18
-RN(32)/edges|-|32|32|-30|0|18
-RN(32)/faces|-|18|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-NE(33)|33
-NE(33)/edges|+|3|33|3|19|19
-NE(33)/edges|-|3|-30|3|0|0
-NE(33)/edges|+|30|-3|30|19|19
-NE(33)/edges|-|30|-3|30|0|0
-NE(33)/edges|+|33|-30|-33|19|0
-NE(33)/faces|+|19|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-RN(33)|
-RN(33)/edges|+|3|-30|3|0|0
-RN(33)/edges|-|3|33|3|19|19
-RN(33)/edges|+|30|-3|30|0|0
-RN(33)/edges|-|30|-3|30|19|19
-RN(33)/edges|-|33|-30|-33|19|0
-RN(33)/faces|-|19|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-NE(34)|34
-NE(34)/edges|+|3|-30|34|0|0
-NE(34)/edges|-|3|-30|3|0|0
-NE(34)/edges|+|34|3|-34|0|20
-NE(34)/faces|+|20|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-RN(34)|
-RN(34)/edges|+|3|-30|3|0|0
-RN(34)/edges|-|3|-30|34|0|0
-RN(34)/edges|-|34|3|-34|0|20
-RN(34)/faces|-|20|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-NE(35)|35
-NE(35)/edges|+|3|-30|-35|0|0
-NE(35)/edges|-|3|-30|3|0|0
-NE(35)/edges|+|35|35|3|21|0
-NE(35)/faces|+|21|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-RN(35)|
-RN(35)/edges|+|3|-30|3|0|0
-RN(35)/edges|-|3|-30|-35|0|0
-RN(35)/edges|-|35|35|3|21|0
-RN(35)/faces|-|21|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-Topology 'city_data' dropped
-BEGIN
-t
-9
-22
-26
-COMMIT
-BEGIN
-1
-2
-3
-COMMIT
-features.land_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2 
-features.city_streets.the_geom SRID:0 TYPE:MULTILINESTRING DIMS:2 
-features.traffic_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2 
-ERROR:  TopoGeom 4 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 3
-ERROR:  TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 4
-ERROR:  TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 5
-ERROR:  TopoGeom 2 in layer 1 (features.land_parcels.feature) cannot be represented healing faces 5 and 4
-RN(11)|relations_before:|18
-RN(11)|10
-RN(11)|relations_after:|17
-ERROR:  TopoGeom 3 in layer 1 (features.land_parcels.feature) cannot be represented healing faces 10 and 0
-ERROR:  TopoGeom 3 in layer 1 (features.land_parcels.feature) cannot be represented healing faces 0 and 10
-RN(11)|P1|t
-RN(11)|P2|t
-RN(11)|P3|t
-RN(11)|P4|t
-RN(11)|P5|t
-Topology 'city_data' dropped
+psql: FATAL:  the database system is in recovery mode
-----------------------------------------------------------------------------
 regress/st_remedgemodface .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_25_diff)
-----------------------------------------------------------------------------
--- regress/st_remedgemodface_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_25_out	2015-07-17 12:53:18 -0400
@@ -1,213 +1 @@
-BEGIN
-t
-9
-22
-26
-COMMIT
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - null argument
-ERROR:  SQL/MM Spatial exception - invalid topology name
-ERROR:  SQL/MM Spatial exception - non-existent edge 0
-ERROR:  SQL/MM Spatial exception - non-existent edge 143
-RM(25)|1
-RM(25)/nodes|+|21|1
-RM(25)/nodes|-|21|
-RM(25)/nodes|+|22|1
-RM(25)/nodes|-|22|
-RM(25)/edges|-|25|-25|25|1|1
-RM(4)|0
-RM(4)/nodes|+|5|0
-RM(4)/nodes|-|5|
-RM(4)/edges|-|4|-5|4|0|0
-RM(4)/edges|+|5|-5|5|0|0
-RM(4)/edges|-|5|-4|5|0|0
-RM(26)|1
-RM(26)/nodes|+|20|1
-RM(26)/nodes|-|20|
-RM(26)/edges|-|26|26|-26|9|1
-RM(26)/faces|-|9|SRID=4326;POLYGON((4 31,4 34,7 34,7 31,4 31))
-RM(9)|6
-RM(9)/edges|+|6|7|-21|0|6
-RM(9)/edges|-|6|7|-21|0|3
-RM(9)/edges|-|9|19|-22|3|6
-RM(9)/edges|+|19|-6|-10|6|4
-RM(9)/edges|-|19|-6|-10|3|4
-RM(9)/edges|+|20|19|13|6|7
-RM(9)/edges|-|20|-9|13|6|7
-RM(9)/edges|+|21|6|-22|0|6
-RM(9)/edges|-|21|6|9|0|3
-RM(9)/faces|-|3|SRID=4326;POLYGON((9 14,9 22,21 22,21 14,9 14))
-RM(9)/faces|+|6|SRID=4326;POLYGON((9 6,9 22,21 22,21 6,9 6))
-RM(9)/faces|-|6|SRID=4326;POLYGON((9 6,9 14,21 14,21 6,9 6))
-RM(19)|4
-RM(19)/edges|+|6|7|-21|0|4
-RM(19)/edges|-|6|7|-21|0|6
-RM(19)/edges|+|7|8|-6|0|4
-RM(19)/edges|-|7|8|-19|0|4
-RM(19)/edges|+|12|20|22|4|0
-RM(19)/edges|-|12|20|22|6|0
-RM(19)/edges|-|19|-6|-10|6|4
-RM(19)/edges|+|20|-10|13|4|7
-RM(19)/edges|-|20|19|13|6|7
-RM(19)/edges|+|21|6|-22|0|4
-RM(19)/edges|-|21|6|-22|0|6
-RM(19)/edges|+|22|21|12|0|4
-RM(19)/edges|-|22|21|12|0|6
-RM(19)/faces|+|4|SRID=4326;POLYGON((9 6,9 22,35 22,35 6,9 6))
-RM(19)/faces|-|4|SRID=4326;POLYGON((21 14,21 22,35 22,35 14,21 14))
-RM(19)/faces|-|6|SRID=4326;POLYGON((9 6,9 22,21 22,21 6,9 6))
-RM(10)|4
-RM(10)/edges|-|10|-20|17|7|4
-RM(10)/edges|+|13|18|-12|4|0
-RM(10)/edges|-|13|18|-12|7|0
-RM(10)/edges|+|18|17|14|4|8
-RM(10)/edges|-|18|10|14|7|8
-RM(10)/edges|+|20|-20|13|4|4
-RM(10)/edges|-|20|-10|13|4|7
-RM(10)/faces|-|7|SRID=4326;POLYGON((21 6,21 14,35 14,35 6,21 6))
-RM(20)|4
-RM(20)/nodes|+|14|4
-RM(20)/nodes|-|14|
-RM(20)/edges|+|12|13|22|4|0
-RM(20)/edges|-|12|20|22|4|0
-RM(20)/edges|-|20|-20|13|4|4
-RM(15)|0
-RM(15)/edges|+|8|-8|-17|0|0
-RM(15)/edges|-|8|-15|-17|0|5
-RM(15)/edges|+|11|-16|-18|0|8
-RM(15)/edges|-|11|15|-18|5|8
-RM(15)/edges|-|15|-8|-16|5|0
-RM(15)/edges|+|17|-7|11|4|0
-RM(15)/edges|-|17|-7|11|4|5
-RM(15)/faces|-|5|SRID=4326;POLYGON((35 14,35 22,47 22,47 14,35 14))
-RM(2)|0
-RM(2)/nodes|+|4|0
-RM(2)/nodes|-|4|2
-RM(2)/edges|-|2|3|-2|2|0
-RM(2)/edges|+|3|-3|3|0|0
-RM(2)/edges|-|3|-3|2|2|2
-RM(2)/faces|-|2|SRID=4326;POLYGON((17 30,17 40,31 40,31 30,17 30))
-NE(27)|27
-NE(27)/edges|+|3|-27|3|10|10
-NE(27)/edges|-|3|-3|3|0|0
-NE(27)/edges|+|27|27|-3|0|10
-NE(27)/faces|+|10|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-RM(27)|0
-RM(27)/edges|+|3|-3|3|0|0
-RM(27)/edges|-|3|-27|3|10|10
-RM(27)/edges|-|27|27|-3|0|10
-RM(27)/faces|-|10|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-NE(28)|28
-NE(28)/edges|+|3|28|3|11|11
-NE(28)/edges|-|3|-3|3|0|0
-NE(28)/edges|+|28|-3|-28|11|0
-NE(28)/faces|+|11|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-RM(28)|0
-RM(28)/edges|+|3|-3|3|0|0
-RM(28)/edges|-|3|28|3|11|11
-RM(28)/edges|-|28|-3|-28|11|0
-RM(28)/faces|-|11|SRID=4326;POLYGON((20 27,20 35,30 35,30 27,20 27))
-NE(29)|29
-NE(29)/edges|+|3|-3|29|12|12
-NE(29)/edges|-|3|-3|3|0|0
-NE(29)/edges|+|29|3|-29|12|0
-NE(29)/faces|+|12|SRID=4326;POLYGON((22 30,22 37,28 37,28 30,22 30))
-RM(29)|0
-RM(29)/edges|+|3|-3|3|0|0
-RM(29)/edges|-|3|-3|29|12|12
-RM(29)/edges|-|29|3|-29|12|0
-RM(29)/faces|-|12|SRID=4326;POLYGON((22 30,22 37,28 37,28 30,22 30))
-NE(30)|30
-NE(31)|31
-NE(30,31)/nodes|+|4|
-NE(30,31)/nodes|-|4|0
-NE(30,31)/edges|+|3|31|3|0|0
-NE(30,31)/edges|-|3|-3|3|0|0
-NE(30,31)/edges|+|30|-31|30|13|13
-NE(30,31)/edges|+|31|-3|-30|0|13
-NE(30,31)/faces|+|13|SRID=4326;POLYGON((18 35,18 40,25 40,25 35,18 35))
-RM(31)|0
-RM(31)/edges|+|3|-30|3|0|0
-RM(31)/edges|-|3|31|3|0|0
-RM(31)/edges|+|30|-3|30|0|0
-RM(31)/edges|-|30|-31|30|13|13
-RM(31)/edges|-|31|-3|-30|0|13
-RM(31)/faces|-|13|SRID=4326;POLYGON((18 35,18 40,25 40,25 35,18 35))
-NE(32)|32
-NE(32)/edges|+|3|-32|3|14|14
-NE(32)/edges|-|3|-30|3|0|0
-NE(32)/edges|+|30|-3|30|14|14
-NE(32)/edges|-|30|-3|30|0|0
-NE(32)/edges|+|32|32|-30|0|14
-NE(32)/faces|+|14|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-RM(32)|0
-RM(32)/edges|+|3|-30|3|0|0
-RM(32)/edges|-|3|-32|3|14|14
-RM(32)/edges|+|30|-3|30|0|0
-RM(32)/edges|-|30|-3|30|14|14
-RM(32)/edges|-|32|32|-30|0|14
-RM(32)/faces|-|14|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-NE(33)|33
-NE(33)/edges|+|3|33|3|15|15
-NE(33)/edges|-|3|-30|3|0|0
-NE(33)/edges|+|30|-3|30|15|15
-NE(33)/edges|-|30|-3|30|0|0
-NE(33)/edges|+|33|-30|-33|15|0
-NE(33)/faces|+|15|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-RM(33)|0
-RM(33)/edges|+|3|-30|3|0|0
-RM(33)/edges|-|3|33|3|15|15
-RM(33)/edges|+|30|-3|30|0|0
-RM(33)/edges|-|30|-3|30|15|15
-RM(33)/edges|-|33|-30|-33|15|0
-RM(33)/faces|-|15|SRID=4326;POLYGON((18 27,18 40,28 40,28 27,18 27))
-NE(34)|34
-NE(34)/edges|+|3|-30|34|0|0
-NE(34)/edges|-|3|-30|3|0|0
-NE(34)/edges|+|34|3|-34|0|16
-NE(34)/faces|+|16|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-RM(34)|0
-RM(34)/edges|+|3|-30|3|0|0
-RM(34)/edges|-|3|-30|34|0|0
-RM(34)/edges|-|34|3|-34|0|16
-RM(34)/faces|-|16|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-NE(35)|35
-NE(35)/edges|+|3|-30|-35|0|0
-NE(35)/edges|-|3|-30|3|0|0
-NE(35)/edges|+|35|35|3|17|0
-NE(35)/faces|+|17|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-RM(35)|0
-RM(35)/edges|+|3|-30|3|0|0
-RM(35)/edges|-|3|-30|-35|0|0
-RM(35)/edges|-|35|35|3|17|0
-RM(35)/faces|-|17|SRID=4326;POLYGON((22 27,22 30,28 30,28 27,22 27))
-Topology 'city_data' dropped
-BEGIN
-t
-9
-22
-26
-COMMIT
-BEGIN
-1
-2
-3
-COMMIT
-features.land_parcels.the_geom SRID:0 TYPE:MULTIPOLYGON DIMS:2 
-features.city_streets.the_geom SRID:0 TYPE:MULTILINESTRING DIMS:2 
-features.traffic_signs.the_geom SRID:0 TYPE:MULTIPOINT DIMS:2 
-ERROR:  TopoGeom 4 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 3
-ERROR:  TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 4
-ERROR:  TopoGeom 2 in layer 3 (features.city_streets.feature) cannot be represented dropping edge 5
-ERROR:  TopoGeom 2 in layer 1 (features.land_parcels.feature) cannot be represented healing faces 5 and 4
-RM(11)|relations_before:|18
-RM(11)|8
-RM(11)|relations_after:|17
-ERROR:  TopoGeom 3 in layer 1 (features.land_parcels.feature) cannot be represented healing faces 8 and 0
-ERROR:  TopoGeom 3 in layer 1 (features.land_parcels.feature) cannot be represented healing faces 0 and 8
-RM(11)|P1|t
-RM(11)|P2|t
-RM(11)|P3|t
-RM(11)|P4|t
-RM(11)|P5|t
-Topology 'city_data' dropped
+psql: FATAL:  the database system is in recovery mode

The others after that fail too but suspect because the server was in recovery mode

Change History (39)

comment:1 by robe, 9 years ago

Summary: winnie crashing with topology ST_AddModeFace in C commitwinnie crashing with topology ST_AddModeFace in C commit 9.3 w32 bit run

Okay I just ran winnie's 9.3.9 64-bit and that seems fine so seems like this might be 32-bit only issue.

run on below was fine.

PostgreSQL 9.3.9, compiled by Visual C++ build 1600, 64-bit
  Postgis 2.2.0dev - r13808 - 2015-07-17 19:23:04
  scripts 2.2.0dev r13808
  GEOS: 3.5.0dev-CAPI-1.9.0 r4058
  PROJ: Rel. 4.8.0, 6 March 2012

comment:2 by strk, 9 years ago

Cc: esseffe added

Do we have a non-windows 32bit bot to test against ? Alessandro: can you reproduce this ? Should be also reproducible with:

cd topology/test; ../../regress/run_test.pl -v --topology regress/st_addedgemodface.sql

comment:3 by strk, 9 years ago

On a 64bit linux, against PostgreSQL 9.4.1, st_addedgemodface.sql runs valgrind-clean:

==23248== Memcheck, a memory error detector
==23248== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==23248== Using Valgrind-3.11.0.SVN and LibVEX; rerun with -h for copyright info
==23248== Command: /home/postgresql-9.4/bin/postgres --single postgis_reg
==23248== 
==23248== 
==23248== HEAP SUMMARY:
==23248==     in use at exit: 2,601,151 bytes in 752 blocks
==23248==   total heap usage: 5,530 allocs, 4,778 frees, 15,179,680 bytes allocated
==23248== 
==23248== LEAK SUMMARY:
==23248==    definitely lost: 1,429 bytes in 24 blocks
==23248==    indirectly lost: 6,237 bytes in 124 blocks
==23248==      possibly lost: 0 bytes in 0 blocks
==23248==    still reachable: 2,593,485 bytes in 604 blocks
==23248==         suppressed: 0 bytes in 0 blocks
==23248== Rerun with --leak-check=full to see details of leaked memory
==23248== 
==23248== For counts of detected and suppressed errors, rerun with: -v
==23248== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 94 from 13)

I guess this might have to do with LWT_INT64. Before this commit we included postgis_config.h, do you have _WIN32 defined in postgis_config.h by any chance ?

comment:4 by strk, 9 years ago

Alessandro: would it work for you to use int64_t from stdint.h, rather than our own macros ?

comment:5 by strk, 9 years ago

Can you try this change please ? https://github.com/postgis/postgis/pull/46

It uses stdint.h and inttypes.h headers to deal with 64bit integers.

comment:6 by strk, 9 years ago

Well I committed the PR as r13810, let's see if winnie is any happier now.

comment:7 by robe, 9 years ago

hmm well that did something, but not sure it's good. Now I'm getting failure on SQL/MM

 regress/sqlmm .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_4_diff)
-----------------------------------------------------------------------------
--- regress/sqlmm_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.3_geos3.5.0dev_gdal2.0.0w32/test_4_out	2015-07-18 12:23:28 -0400
@@ -3,21 +3,21 @@
 ERROR:  SQL/MM Spatial exception - null argument
 ERROR:  SQL/MM Spatial exception - null argument
 ERROR:  SQL/MM Spatial exception - null argument
-1
-2
-3
-4
-5
-6
-ERROR:  SQL/MM Spatial exception - coincident node
-ERROR:  SQL/MM Spatial exception - coincident node
-7
-8
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
 ERROR:  SQL/MM Spatial exception - not within face
 ERROR:  SQL/MM Spatial exception - invalid point
-ERROR:  SQL/MM Spatial exception - coincident node
-ERROR:  SQL/MM Spatial exception - coincident node
-ERROR:  SQL/MM Spatial exception - coincident node
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84
+ERROR:  syntax error at or near "d" at character 84

http://winnie.postgis.net:1500/job/PostGIS_EDB_regress/2750/consoleFull

Which seems really odd. I'll try to see if the 64-bit still works.

comment:8 by robe, 9 years ago

okay I think we need to revert that change. It broke winnie's 64-bit in addition to not fixing the 32-bit and seeing compile notices like this on the 64-bit

 /**********************************************************************
 ^
postgis_topology.c:26:0: warning: "POSTGIS_DEBUG_LEVEL" redefined [enabled by default]
 #define POSTGIS_DEBUG_LEVEL 1
 ^
In file included from postgis_topology.c:22:0:
../postgis_config.h:123:0: note: this is the location of the previous definition
 #define POSTGIS_DEBUG_LEVEL 0
 ^
postgis_topology.c: In function 'addEdgeValues':
postgis_topology.c:219:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
     if ( edge->edge_id != -1 ) appendStringInfo(str, "%" PRId64, edge->edge_id);
     ^
postgis_topology.c:224:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s%" PRId64, sep, edge->start_node);
     ^
postgis_topology.c:228:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s%" PRId64, sep, edge->end_node);
     ^
postgis_topology.c:232:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s%" PRId64, sep, edge->face_left);
     ^
postgis_topology.c:236:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s%" PRId64, sep, edge->face_right);
     ^
postgis_topology.c:240:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s%" PRId64, sep, edge->next_left);
     ^
postgis_topology.c:241:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
     if ( fullEdgeData ) appendStringInfo(str, ",%" PRId64, ABS(edge->next_left));
     ^
postgis_topology.c:245:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s%" PRId64, sep, edge->next_right);
     ^
postgis_topology.c:246:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
     if ( fullEdgeData ) appendStringInfo(str, ",%" PRId64, ABS(edge->next_right));
     ^
postgis_topology.c: In function 'addEdgeUpdate':
postgis_topology.c:298:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->edge_id);
     ^
postgis_topology.c:303:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->start_node);
     ^
postgis_topology.c:308:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->end_node);
     ^
postgis_topology.c:313:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->face_left);
     ^
postgis_topology.c:318:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->face_right);
     ^
postgis_topology.c:323:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->next_left);
     ^
postgis_topology.c:327:7: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
       appendStringInfo(str, "%s %" PRId64, op, ABS(edge->next_left));
       ^
postgis_topology.c:332:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, edge->next_right);
     ^
postgis_topology.c:336:7: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
       appendStringInfo(str, "%s %" PRId64, op, ABS(edge->next_right));
       ^
postgis_topology.c: In function 'addNodeUpdate':
postgis_topology.c:377:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(str, "%s %" PRId64, op, node->node_id);
     ^
postgis_topology.c:383:7: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
       appendStringInfo(str, "%" PRId64, node->containing_face);
       ^
postgis_topology.c: In function 'addNodeValues':
postgis_topology.c:442:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
     if ( node->node_id != -1 ) appendStringInfo(str, "%" PRId64, node->node_id);
     ^
postgis_topology.c:449:7: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
       appendStringInfo(str, "%s%" PRId64, sep, node->containing_face);
       ^
postgis_topology.c: In function 'addFaceValues':
postgis_topology.c:471:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
   if ( face->face_id != -1 ) appendStringInfo(str, "(%" PRId64, face->face_id);
   ^
postgis_topology.c: In function 'cb_getEdgeById':
postgis_topology.c:706:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_getEdgeByNode':
postgis_topology.c:752:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c:757:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_getEdgeByFace':
postgis_topology.c:805:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c:810:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_getFacesById':
postgis_topology.c:858:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_getRingEdges':
postgis_topology.c:911:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
     edge, topo->name, ABS(edge), topo->name);
     ^
postgis_topology.c:911:5: warning: format '%d' expects argument of type 'int', but argument 5 has type 'LWT_ELEMID' [-Wformat=]
postgis_topology.c:952:5: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
     POSTGIS_DEBUGF(1, "Component %d in ring of edge %" PRId64 " is edge %d",
     ^
postgis_topology.c: In function 'cb_getNodeById':
postgis_topology.c:977:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_getNodeByFace':
postgis_topology.c:1022:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_updateFacesById':
postgis_topology.c:1526:7: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
       face->mbr->xmax, face->mbr->ymax, topo->srid);
       ^
postgis_topology.c: In function 'cb_updateTopoGeomEdgeSplit':
postgis_topology.c:1718:5: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
     topo->name, (new_edge2 == -1 ? "," : "USING" ), topo->id, split_edge );
     ^
postgis_topology.c:1779:7: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
       topogeo_id, layer_id, negate ? -new_edge1 : new_edge1, element_type);
       ^
postgis_topology.c:1792:9: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
         topogeo_id, layer_id, negate ? -new_edge2 : new_edge2, element_type);
         ^
postgis_topology.c: In function 'cb_updateTopoGeomFaceSplit':
postgis_topology.c:1818:3: warning: format '%d' expects argument of type 'int', but argument 5 has type 'LWT_ELEMID' [-Wformat=]
   POSTGIS_DEBUGF(1, "cb_updateTopoGeomFaceSplit signalled "
   ^
postgis_topology.c:1818:3: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
postgis_topology.c:1818:3: warning: format '%d' expects argument of type 'int', but argument 7 has type 'LWT_ELEMID' [-Wformat=]
postgis_topology.c:1832:5: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
     topo->name, (new_face2 == -1 ? "," : "USING" ), topo->id, split_face );
     ^
postgis_topology.c:1895:7: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
       topogeo_id, layer_id, negate ? -new_face1 : new_face1, element_type);
       ^
postgis_topology.c:1911:9: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
         topogeo_id, layer_id, negate ? -new_face2 : new_face2, element_type);
         ^
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g -O2   -shared -static-libgcc -o postgis_topology-2.2.dll  postgis_topology.o -Le:/jenkins/postgresql/rel/pg9.4w64gcc48/lib -Wl,--allow-multiple-definition -Wl,--disable-auto-import -L/projects/libxml/rel-libxml2-2.7.8w64gcc48/lib  -Wl,--as-needed   ../libpgcommon/libpgcommon.a ../liblwgeom/.libs/liblwgeom.a  -L/projects/geos/rel-3.5.0devw64gcc48/lib -L/projects/proj/rel-4.9.1w64gcc48/lib -lgeos_c -lproj -L/projects/json-c/rel-0.12w64gcc48/lib -ljson-c -L/projects/libxml/rel-libxml2-2.7.8w64gcc48/lib -lxml2 -lws2_32 -L/projects/CGAL/rel-sfcgal-1.1.0w64gcc48/lib -lSFCGAL -L/projects/pcre/rel-8.33w64gcc48/lib -L/projects/CGAL/rel-sfcgal-1.1.0w64gcc48/lib -lSFCGAL -Le:/jenkins/postgresql/rel/pg9.4w64gcc48/lib -lpostgres -lpgcommon -lpgport -lxml2 -lwsock32 -lm  -lws2_32 -Wl,--export-all-symbols -Wl,--out-implib=libpostgis_topology-2.2.a
/mingw/bin/cpp -traditional-cpp -w -P topology.sql.in | grep -v '^#' | \
/bin/perl -lpe "s'MODULE_PATHNAME'\$libdir/postgis_topology-2.2'g" > topology.sql
/mingw/bin/cpp -traditional-cpp -w -P topology_drop_before.sql.in | grep -v '^#' | \
/bin/perl -lpe "s'MODULE_PATHNAME'\$libdir/postgis_topology-2.2'g" > topology_drop_before.sql
/bin/perl -0777 -ne 's/^(CREATE|ALTER) (CAST|OPERATOR|TYPE|TABLE|SCHEMA|DOMAIN|TRIGGER).*?;//msg;print;' topology.sql > topology_upgrade.sql.in
/mingw/bin/cpp -traditional-cpp -w -P topology_drop_after.sql.in | grep -v '^#' | \
/bin/perl -lpe "s'MODULE_PATHNAME'\$libdir/postgis_topology-2.2'g" > topology_drop_after.sql
cat topology_drop_before.sql topology_upgrade.sql.in topology_drop_after.sql > topology_upgrade.sql
/bin/perl ../utils/create_undef.pl topology.sql 94 > uninstall_topology.sql
make[1]: Leaving directory `/projects/postgis/branches/2.2/topology'
---- Making all in loader
make[1]: Entering directory `/projects/postgis/branches/2.2/loader'
x86_64-w64-mingw32-gcc -I ../liblwgeom -g -O2  -DDLL_EXPORT -DPIC  -Wall -Wmissing-prototypes -I/projects/proj/rel-4.9.1w64gcc48/include  -I/projects/rel-libiconv-1.13.1w64gcc48/include -I. -I./ -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/internal -I./src/include/port/win32 -DEXEC_BACKEND -I/projects/libxml/rel-libxml2-2.7.8w64gcc48/include/libxml2  "-I/src/include/port/win32" -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server/port/win32  -c -o shpopen.o shpopen.c
x86_64-w64-mingw32-gcc -I ../liblwgeom -g -O2  -DDLL_EXPORT -DPIC  -Wall -Wmissing-prototypes -I/projects/proj/rel-4.9.1w64gcc48/include  -I/projects/rel-libiconv-1.13.1w64gcc48/include -I. -I./ -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/internal -I./src/include/port/win32 -DEXEC_BACKEND -I/projects/libxml/rel-libxml2-2.7.8w64gcc48/include/libxml2  "-I/src/include/port/win32" -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server/port/win32  -c -o dbfopen.o dbfopen.c
x86_64-w64-mingw32-gcc -I ../liblwgeom -g -O2  -DDLL_EXPORT -DPIC  -Wall -Wmissing-prototypes -I/projects/proj/rel-4.9.1w64gcc48/include  -I/projects/rel-libiconv-1.13.1w64gcc48/include -I. -I./ -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/internal -I./src/include/port/win32 -DEXEC_BACKEND -I/projects/libxml/rel-libxml2-2.7.8w64gcc48/include/libxml2  "-I/src/include/port/win32" -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server/port/win32  -c -o getopt.o getopt.c
x86_64-w64-mingw32-gcc -I ../liblwgeom -g -O2  -DDLL_EXPORT -DPIC  -Wall -Wmissing-prototypes -I/projects/proj/rel-4.9.1w64gcc48/include  -I/projects/rel-libiconv-1.13.1w64gcc48/include -I. -I./ -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/internal -I./src/include/port/win32 -DEXEC_BACKEND -I/projects/libxml/rel-libxml2-2.7.8w64gcc48/include/libxml2  "-I/src/include/port/win32" -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server/port/win32  -c -o shpcommon.o shpcommon.c
x86_64-w64-mingw32-gcc -I ../liblwgeom -g -O2  -DDLL_EXPORT -DPIC  -Wall -Wmissing-prototypes -I/projects/proj/rel-4.9.1w64gcc48/include  -I/projects/rel-libiconv-1.13.1w64gcc48/include -I. -I./ -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/internal -I./src/include/port/win32 -DEXEC_BACKEND -I/projects/libxml/rel-libxml2-2.7.8w64gcc48/include/libxml2  "-I/src/include/port/win32" -Ie:/jenkins/postgresql/rel/pg9.4w64gcc48/include/server/port/win32  -c -o safileio.o safileio.c
safileio.c:74:0: warning: ignoring #pragma comment  [-Wunknown-pragmas]
 #       pragma comment(lib, "kernel32.lib")
 ^
safileio.c:219:16: warning: no previous prototype for 'Utf8ToWideChar' [-Wmissing-prototypes]
 const wchar_t* Utf8ToWideChar( const char *pszFilename )
                ^
safileio.c:247:8: warning: no previous prototype for 'SAUtf8WFOpen' [-Wmissing-prototypes]
 SAFile SAUtf8WFOpen( const char *pszFilename, const char *pszAccess )
        ^
safileio.c:266:5: warning: no previous prototype for 'SAUtf8WRemove' [-Wmissing-prototypes]
 int SAUtf8WRemove( const char *pszFilename )

comment:9 by strk, 9 years ago

warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID'

The above means that PRId64 macro expands to 'd' while %d is not good to print LWT_ELEMID which should expand to int64_t.

Could you please try this simple test:

--- testint.c ---
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
int main()
{
  int64_t x = 1;
  printf("%" PRId64, x);
  return 0;
}

Compile with: gcc -Wall -o testint testint.c

comment:10 by strk, 9 years ago

On my system (ubuntu 64bit), the PRId64 macro expands to "ld", and int64_t is a typedef to a "long int".

You can check what happens on your system using the -E switch to gcc:

 gcc -Wall -E testint.c | grep '\(printf.*x)\| int64_t;\)'

Output on my system:

typedef long int int64_t;
  printf("%" "l" "d", x);

comment:11 by robe, 9 years ago

on my mingw-w64 32-bit (gcc 4.8.1) it returns:

__extension__ typedef long long int64_t;
  printf("%" "I64d", x);

on my mingw-w64 64-bit (gcc 4.8.3) it returns:

__extension__ typedef long long int64_t;
  printf("%" "I64d", x);

different from yours but same on both 32-bit/64-bit for me.

comment:12 by strk, 9 years ago

And does it error out when you try to build it ?

As the original warning was:

warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID'

There must be somewhere in which we're using "%d" rather than "%I64d", or is it redefined ?

comment:13 by robe, 9 years ago

It doesn't error in building just in regress testing, but it throws those notices during build.

comment:14 by strk, 9 years ago

I meant the short test I've sent. Does it give the same warnings as the PostGIS build ? I don't know what the __extension__ string does, in that output you pasted.

comment:16 by strk, 9 years ago

Does adding this back help ?

#ifdef _WIN32
typedef __int64 LWT_INT64;
#else
typedef long long int LWT_INT64;
#endif

To replace the int64_t typedef, basically…

comment:17 by robe, 9 years ago

nope. Can we just revert that change you made that broke my 64-bit build.

comment:18 by robe, 9 years ago

Hold off I misunderstood you in last comment. thought you had committed. I'll close out if it fixes.

comment:19 by robe, 9 years ago

nope didn't work even for my 64-bit.

still get the

+ERROR:  syntax error at or near "d" at character 72

and my compile gives these warnings if I put back in those lines

postgis_topology.c: In function 'cb_getRingEdges':
postgis_topology.c:919:5: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
     edge, topo->name, ABS(edge), topo->name);
     ^
postgis_topology.c:919:5: warning: format '%d' expects argument of type 'int', but argument 5 has type 'LWT_ELEMID' [-Wformat=]
postgis_topology.c: In function 'cb_getNodeById':
postgis_topology.c:985:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_getNodeByFace':
postgis_topology.c:1030:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);
     ^
postgis_topology.c: In function 'cb_updateFacesById':
postgis_topology.c:1534:7: warning: format '%d' expects argument of type 'int', but argument 3 has type 'LWT_ELEMID' [-Wformat=]
       face->mbr->xmax, face->mbr->ymax, topo->srid);
       ^
postgis_topology.c: In function 'cb_updateTopoGeomEdgeSplit':
postgis_topology.c:1726:5: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
     topo->name, (new_edge2 == -1 ? "," : "USING" ), topo->id, split_edge );
     ^
postgis_topology.c:1790:7: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
       topogeo_id, layer_id, negate ? -new_edge1 : new_edge1, element_type);
       ^
postgis_topology.c:1803:9: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
         topogeo_id, layer_id, negate ? -new_edge2 : new_edge2, element_type);
         ^
postgis_topology.c: In function 'cb_updateTopoGeomFaceSplit':
postgis_topology.c:1843:5: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
     topo->name, (new_face2 == -1 ? "," : "USING" ), topo->id, split_face );
     ^
postgis_topology.c:1906:7: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
       topogeo_id, layer_id, negate ? -new_face1 : new_face1, element_type);
       ^
postgis_topology.c:1922:9: warning: format '%d' expects argument of type 'int', but argument 6 has type 'LWT_ELEMID' [-Wformat=]
         topogeo_id, layer_id, negate ? -new_face2 : new_face2, element_type);
         ^
postgis_topology.c: In function 'cb_deleteFacesById':
postgis_topology.c:1997:5: warning: format '%d' expects argument of type 'int', but argument 4 has type 'LWT_ELEMID' [-Wformat=]
     appendStringInfo(sql, "%s%" PRId64, (i?",":""), ids[i]);

Please revert if you can so at least I have a 64-bit working install.

comment:20 by strk, 9 years ago

For the record: linux 32bit is ok:

PostgreSQL 9.1.2 on i686-pc-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5, 32-bit
  Postgis 2.2.0dev - r13812 - 2015-07-21 16:38:32
  scripts 2.2.0dev r13812
  GEOS: 3.5.0dev-CAPI-1.9.0 r4059
  PROJ: Rel. 4.7.1, 23 September 2009

comment:21 by robe, 9 years ago

Was it okay before you made the change to fix my 32-bit (which broke my 64-bit :() ?

r13808 was the one I want to go back to. I can live with my 32-bit broken but can't function with my 64-bit broken. If you can't go back, I have to stop building topology on windows.

comment:22 by robe, 9 years ago

strk I disabled topology testing on winnie for now until we get this issue resolved. Hopefully we can before 2.2 goes out otherwise I can't package topology on windows.

comment:23 by robe, 9 years ago

wonder if this is related because we are using a postgresql append function:

http://postgresql.nabble.com/Re-COMMITTERS-pgsql-Centralize-definition-of-integer-limits-td5843954.html

comment:24 by strk, 9 years ago

If you stop bots builds I've no way to check if any change solves the problem. How about having her only build in a github branch so I can test fixes there ?

comment:25 by robe, 9 years ago

strk that works for me. Let me know the link to the github branch and I'll point her at it.

comment:26 by strk, 9 years ago

on-purpose github branch is: "winnie". I hadn't pushed anything new in there, but we can use it specifically for feeding winnie with patches to be tested

comment:27 by robe, 9 years ago

ran into a stumbling block — see #3219

comment:28 by robe, 9 years ago

strk,

I tested against mingw compiled PostgreSQL and I get the issue there as well so not specific to my VC++ regress run.

comment:29 by robe, 9 years ago

FYI: brought this up for discussion on pgsql-hackers to see if any of them have an opinion, suggestions:

http://www.postgresql.org/message-id/000001d0cbc9$200d9350$6028b9f0$@pcorp.us

comment:30 by robe, 9 years ago

strk, Alvaro suggested on http://www.postgresql.org/message-id/000001d0cbc9$200d9350$6028b9f0$@pcorp.us


I think you could use INT64_FORMAT for this.


Does that help any?

comment:31 by robe, 9 years ago

Tom Lane also commented and explained.

http://www.postgresql.org/message-id/15982.1438377791@sss.pgh.pa.us


Issue is when code like this was introduced

appendStringInfo(str, "%s%" PRId64, sep, edge→start_node);

Which uses a PostgreSQL function appendStringInfo - as noted here: https://trac.osgeo.org/postgis/ticket/3206

Huh. Apparently, whichever Windows compiler you're using defines PRId64 as "d", which surely seems pretty broken.

I noticed a thread in March on pgsql-hackers that discussed int limits http://www.postgresql.org/message-id/20150331141423.GK4878@alap3.anarazel.de in PostgreSQL and Andres Freund made this comment which stuck in my head: " for another we'd need some uglyness to determine the correct printf modifier for int64_t (can't use PRId64 etc afaics)." What exactly did he mean by can't use PRId64?

That was about the fact that we don't know whether PRId64 is defined as "ld" or "lld" on machines where either of those could legitimately mean a 64-bit int. (And while either would work at runtime in that case, we'd get compiler warnings we don't want if we chose the wrong one.) That problem doesn't apply to Windows AFAIK.

However, some googling suggests that PRId64 isn't defined on all Windows build environments, and your report says that there's at least one such environment where it is defined, but wrongly :-(. So that's yet another good reason to stay away from PRId64. You'll notice that it appears nowhere in the Postgres sources.

You did not say how you're declaring the variable that's being printed here, but if it's based on the int64 type declared by c.h, you should use the INT64_FORMAT or INT64_MODIFIER strings declared by c.h/pg_config.h.

regards, tom lane


So aside from my compiler being possibly broken in some way — does seem like we should stay away from PRI64. I'm testing using INT64_FORMAT just replacing for your appendInfoString calls now. My compiler warning went away and it fixed the sqlmm failure and others. Though I got to check the other 3 why those are still failing:

Creating database 'postgis_reg'
Loading PostGIS into 'postgis_reg'
Loading Topology into 'postgis_reg'
PostgreSQL 9.4.4 on x86_64-w64-mingw32, compiled by gcc.exe (x86_64-win32-seh-rev1, Built by MinGW-W64 project) 4.8.3, 64-bit
  Postgis 2.2.0dev - r13864 - 2015-07-31 21:35:35
  scripts 2.2.0dev r13864
  GEOS: 3.5.0dev-CAPI-1.9.0 r4064
  PROJ: Rel. 4.9.1, 04 March 2015

Running tests

 regress/legacy_validate .. ok
 regress/legacy_predicate .. ok
 regress/legacy_invalid .. ok
 regress/sqlmm .. ok
 regress/legacy_query .. ok
 regress/addnode .. ok
 regress/addedge .. ok
 regress/addface .. ok
 regress/addface2.5d .. ok
 regress/addtopogeometrycolumn .. ok
 regress/polygonize .. ok
 regress/st_addisoedge .. failed (diff expected obtained: /projects/postgis/tmp/2.2_pg9.4w64/test_12_diff)
 regress/st_addisonode .. ok
 regress/st_addedgemodface .. failed (diff expected obtained: /projects/postgis/tmp/2.2_pg9.4w64/test_14_diff)
 regress/st_addedgenewfaces .. failed (diff expected obtained: /projects/postgis/tmp/2.2_pg9.4w64/test_15_diff)
 regress/st_changeedgegeom .. ok
 regress/st_createtopogeo .. ok
 regress/st_getfacegeometry .. ok
 regress/st_getfaceedges .. ok
 regress/st_modedgeheal .. ok
 regress/st_modedgesplit .. ok
 regress/st_newedgeheal .. ok
 regress/st_newedgessplit .. ok
 regress/st_remedgenewface .. ok
 regress/st_remedgemodface .. ok
 regress/st_simplify .. ok
 regress/topoelement .. ok
 regress/topoelementarray_agg .. ok
 regress/topogeo_addlinestring .. ok
 regress/topogeo_addpoint .. ok
 regress/topogeo_addpolygon .. ok
 regress/topogeometry_type .. ok
 regress/topojson .. ok
 regress/topologysummary .. ok
 regress/topo2.5d .. ok
 regress/totopogeom .. ok
 regress/droptopology .. ok
 regress/droptopogeometrycolumn .. ok
 regress/copytopology .. ok
 regress/createtopogeom .. ok
 regress/createtopology .. ok
 regress/gml .. ok
 regress/getnodebypoint .. ok
 regress/getedgebypoint .. ok
 regress/getfacebypoint .. ok
 regress/getringedges .. ok
 regress/gettopogeomelements .. ok
 regress/layertrigger .. ok
 regress/validatetopology .. ok
 uninstall .. ok (4336)

Run tests: 50
Failed: 3
Makefile:84: recipe for target `check' failed
make[1]: *** [check] Error 3
make[1]: Leaving directory `/projects/postgis/branches/2.2/topology/test'
Makefile:109: recipe for target `check' failed
make: *** [check] Error 2

might be just parts of the topology code I missed replacing.

comment:32 by robe, 9 years ago

strk I committed my code at r13865 and enabled topology testing on winnie.

Debbie still seems to be passing topology tests fine. On winnie I still have issues, but the syntax errors are gone and compiler warnings are gone. Now what is left is this:

Running tests

 regress/legacy_validate .. ok 
 regress/legacy_predicate .. ok 
 regress/legacy_invalid .. ok 
 regress/sqlmm .. ok 
 regress/legacy_query .. ok 
 regress/addnode .. ok 
 regress/addedge .. ok 
 regress/addface .. ok 
 regress/addface2.5d .. ok 
 regress/addtopogeometrycolumn .. ok 
 regress/polygonize .. ok 
 regress/st_addisoedge .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.4_geos3.5.0dev_gdal2.0w64/test_12_diff)
-----------------------------------------------------------------------------
--- regress/st_addisoedge_expected	2015-07-30 10:40:34 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.4_geos3.5.0dev_gdal2.0w64/test_12_out	2015-07-31 17:54:27 -0400
@@ -29,5 +29,5 @@
 ERROR:  SQL/MM Spatial exception - not isolated node
 ERROR:  Closed edges would not be isolated, try ST_AddEdgeNewFaces
 ERROR:  SQL/MM Spatial exception - not isolated node
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 2
+ERROR:  SQL/MM Spatial exception - geometry crosses edge 64d
 Topology 'tt' dropped
-----------------------------------------------------------------------------
 regress/st_addisonode .. ok 
 regress/st_addedgemodface .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.4_geos3.5.0dev_gdal2.0w64/test_14_diff)
-----------------------------------------------------------------------------
--- regress/st_addedgemodface_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.4_geos3.5.0dev_gdal2.0w64/test_14_out	2015-07-31 17:54:27 -0400
@@ -13,10 +13,10 @@
 ERROR:  SQL/MM Spatial exception - curve not simple
 ERROR:  Invalid edge (no two distinct vertices exist)
 ERROR:  Invalid edge (no two distinct vertices exist)
-ERROR:  SQL/MM Spatial exception - coincident edge 8
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 5
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 4
-ERROR:  Spatial exception - geometry intersects edge 4
+ERROR:  SQL/MM Spatial exception - coincident edge 64d
+ERROR:  SQL/MM Spatial exception - geometry crosses edge 64d
+ERROR:  SQL/MM Spatial exception - geometry crosses edge 64d
+ERROR:  Spatial exception - geometry intersects edge 64d
 L1
 L2
 T1|E7|8|-19|0|10
-----------------------------------------------------------------------------
 regress/st_addedgenewfaces .. failed (diff expected obtained: /projects/postgis/tmp/2.2.0dev_pg9.4_geos3.5.0dev_gdal2.0w64/test_15_diff)
-----------------------------------------------------------------------------
--- regress/st_addedgenewfaces_expected	2014-08-07 22:32:08 -0400
+++ /projects/postgis/tmp/2.2.0dev_pg9.4_geos3.5.0dev_gdal2.0w64/test_15_out	2015-07-31 17:54:27 -0400
@@ -13,10 +13,10 @@
 ERROR:  SQL/MM Spatial exception - curve not simple
 ERROR:  Invalid edge (no two distinct vertices exist)
 ERROR:  Invalid edge (no two distinct vertices exist)
-ERROR:  SQL/MM Spatial exception - coincident edge 8
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 5
-ERROR:  SQL/MM Spatial exception - geometry crosses edge 4
-ERROR:  Spatial exception - geometry intersects edge 4
+ERROR:  SQL/MM Spatial exception - coincident edge 64d
+ERROR:  SQL/MM Spatial exception - geometry crosses edge 64d
+ERROR:  SQL/MM Spatial exception - geometry crosses edge 64d
+ERROR:  Spatial exception - geometry intersects edge 64d
 L1
 L2
 T1|E7|8|-19|0|11
-----------------------------------------------------------------------------
 regress/st_changeedgegeom .. ok 
 regress/st_createtopogeo .. ok 
 regress/st_getfacegeometry .. ok 
 regress/st_getfaceedges .. ok 
 regress/st_modedgeheal .. ok 
 regress/st_modedgesplit .. ok 
 regress/st_newedgeheal .. ok 
 regress/st_newedgessplit .. ok 
 regress/st_remedgenewface .. ok 
 regress/st_remedgemodface .. ok 
 regress/st_simplify .. ok 
 regress/topoelement .. ok 
 regress/topoelementarray_agg .. ok 
 regress/topogeo_addlinestring .. ok 
 regress/topogeo_addpoint .. ok 
 regress/topogeo_addpolygon .. ok 
 regress/topogeometry_type .. ok 
 regress/topojson .. ok 
 regress/topologysummary .. ok 
 regress/topo2.5d .. ok 
 regress/totopogeom .. ok 
 regress/droptopology .. ok 
 regress/droptopogeometrycolumn .. ok 
 regress/copytopology .. ok 
 regress/createtopogeom .. ok 
 regress/createtopology .. ok 
 regress/gml .. ok 
 regress/getnodebypoint .. ok 
 regress/getedgebypoint .. ok 
 regress/getfacebypoint .. ok 
 regress/getringedges .. ok 
 regress/gettopogeomelements .. ok 
 regress/layertrigger .. ok 
 regress/validatetopology .. ok 
 uninstall .  /projects/postgis/branches/2.2/regress/00-regress-install/share/contrib/postgis/uninstall_topology.sql
  /projects/postgis/branches/2.2/regress/00-regress-install/share/contrib/postgis/uninstall_postgis.sql
. ok (4336)

Run tests: 50
Failed: 3

I presume the 64d errors are additional places where PRI64d needs to be replaced (possibly not in appendInfoString). I was hesitant to replace your PRId64 calls in anything but the postgresql appendInfoString calls.

Last edited 9 years ago by robe (previous) (diff)

comment:33 by robe, 9 years ago

strk at a glance my guess is the cause of the remaining issues are in lwerror calls because of the non-standard PRI64d of windows, so we've got to get rid of those, but not sure what to replace with. :).

More wisdom from Tom Lane: http://www.postgresql.org/message-id/13415.1438386185@sss.pgh.pa.us


Huh. Apparently, whichever Windows compiler you're using defines PRId64 as "d", which surely seems pretty broken.

I think it was only failing on the postgresql function calls.

And this: gcc -Wall -E testint.c | grep '\(printf.*x)\| int64_t;\)' Returned: extension typedef long long int64_t;

printf("%" "I64d", x);

Oooh … so the issue is the nonstandard "I64" length modifier. Now I understand. That probably works fine with Microsoft's printf, but

(1) gcc does not understand it, which is why you're getting the compile warnings with the erroneous claim that the format is just "d", and

(2) our implementation of snprintf doesn't understand it either, which presumably is causing weird runtime behavior for you when you try to use this with StringInfo functions.

Adherence to standards was never MS' strong point was it.

Anyway, it would be advisable to switch your declarations to use PG's int64 if you are going to use INT64_FORMAT. If you use that macro with a platform-provided int64_t declaration then you are going to get compile warnings on some platforms; that is exactly the point that Andres was making in the previous discussion.

regards, tom lane


comment:34 by strk, 9 years ago

I've pushed to "winnie" branch on github a commit which stubs use of our own LWTFMT_ELEMID and defines it to PRId64 on all but WIN32 systems, please take a look Regina, and see if you can tweak to be correct on WIN32 and WIN64. Winnie scares me too much to check by myself.

comment:35 by robe, 9 years ago

doesn't work. tried on my machine and get

lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:597:64: note: in expansion of macro 'LWTFMT_ELEMID'
         lwerror("SQL/MM Spatial exception - coincident edge %" LWTFMT_ELEMID,
                                                                ^
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:612:66: note: in expansion of macro 'LWTFMT_ELEMID'
         lwerror("Spatial exception - geometry intersects edge %" LWTFMT_ELEMID,
                                                                  ^
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:628:17: note: in expansion of macro 'LWTFMT_ELEMID'
                 LWTFMT_ELEMID, edge->edge_id);
                 ^
lwgeom_topo.c: In function '_lwt_FindAdjacentEdges':
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:1257:44: note: in expansion of macro 'LWTFMT_ELEMID'
       lwerror("corrupted topology: edge %" LWTFMT_ELEMID
                                            ^
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:1384:54: note: in expansion of macro 'LWTFMT_ELEMID'
       lwerror("Corrupted topology: adjacent edges %" LWTFMT_ELEMID " and %" LWTFMT_ELEMID
                                                      ^
lwgeom_topo.c: In function '_lwt_AddFaceSplit':
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:1472:55: note: in expansion of macro 'LWTFMT_ELEMID'
     lwerror("Backend error (no ring edges for edge %" LWTFMT_ELEMID "): %s",
                                                       ^
lwgeom_topo.c: In function '_lwt_AddEdge':
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:2073:41: note: in expansion of macro 'LWTFMT_ELEMID'
                 " (endnodes in faces %" LWTFMT_ELEMID " and %" LWTFMT_ELEMID ")",
                                         ^
lwgeom_topo.c:33:24: error: expected ')' before 'd'
 # define LWTFMT_ELEMID d
                        ^
lwgeom_topo.c:2200:22: note: in expansion of macro 'LWTFMT_ELEMID'
     lwerror("Left(%" LWTFMT_ELEMID ")/right(%" LWTFMT_ELEMID ")"
                      ^
Makefile:187: recipe for target `lwgeom_topo.lo' failed
make[1]: *** [lwgeom_topo.lo] Error 1
make[1]: Leaving directory `/projects/postgis/branches/winnie/liblwgeom'
GNUmakefile:14: recipe for target `all' failed
make: *** [all] Error 1

comment:36 by robe, 9 years ago

strk why is winnie so different from trunk, I thought you were going to resynch before you started. I assume trunk is newer so just made my corrections in trunk at r13878.

comment:37 by robe, 9 years ago

Resolution: fixed
Status: newclosed

both 32-bit and 64-bit pass on winnie now against trunk

comment:38 by strk, 9 years ago

Great ! Can I remove the "winnie" branch now ? Looking forward for crashers !

comment:39 by robe, 9 years ago

Yes. I'll inactivate the job as well unless you tell me to reactivate for some other use.

Note: See TracTickets for help on using tickets.