| 1 | The semantics of NULL are well defined for us already in SQL standards. However, in the world of Geometry / Geography we have another entity which is not quite NULL nor quite fully defined: the empty geometry. Empty geometries can be created with things like intersection calls that have have no intersection, e.g. ST_Intersect('POINT(0 0)', 'POINT(1 1)') == POINT EMPTY. So, in the presence of empty, how should functions behave? |
| 2 | |
| 3 | * ST_Union(geometry, empty) == geometry |
| 4 | * ST_Union(empty, empty) == empty |
| 5 | * ST_Difference(geometry, empty) == geometry |
| 6 | * ST_Difference(empty, geometry) == empty |
| 7 | * ST_Distance(geometry, empty) == NULL |
| 8 | * ST_DWithin(geometry, empty, tolerance) == FALSE |
| 9 | * ST_Contains(geometry, empty) == FALSE |
| 10 | * ??? ST_Contains(empty, empty) == FALSE |
| 11 | * ST_Intersects(geometry, empty) == FALSE |
| 12 | * ??? ST_Intersects(empty, empty) == FALSE |
| 13 | * ??? ST_Disjoint(empty, empty) == FALSE |
| 14 | * ??? ST_Disjoint(geometry, empty) == FALSE |
| 15 | * ST_IsSimple(empty) == FALSE |
| 16 | * ST_IsValid(empty) == TRUE |