mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
use coalsce() instead of indexless postgis functions
ST_Intersects is deemed too expensive by the query planer which leads to odd plans when index use is avoided.
This commit is contained in:
@@ -70,11 +70,12 @@ class Geometry(types.UserDefinedType): # type: ignore[type-arg]
|
||||
|
||||
|
||||
def ST_DWithin_no_index(self, other: SaColumn, distance: SaColumn) -> SaColumn:
|
||||
return sa.func._ST_DWithin(self, other, distance, type_=sa.Boolean)
|
||||
return sa.func.ST_DWithin(sa.func.coalesce(sa.null(), self),
|
||||
other, distance, type_=sa.Boolean)
|
||||
|
||||
|
||||
def ST_Intersects_no_index(self, other: SaColumn) -> SaColumn:
|
||||
return sa.func._ST_Intersects(self, other, type_=sa.Boolean)
|
||||
def ST_Intersects_no_index(self, other: SaColumn) -> 'sa.Operators':
|
||||
return sa.func.coalesce(sa.null(), self).op('&&')(other)
|
||||
|
||||
|
||||
def ST_Distance(self, other: SaColumn) -> SaColumn:
|
||||
|
||||
Reference in New Issue
Block a user