Sử dụng ST_Contains
trong where
mệnh đề đôi khi mang lại cho tôi các thông báo lỗi như
ERROR: GEOSContains: TopologyException: side location conflict at 37.3706 55.7882
Hiện tại tôi không thể đảm bảo tính hợp lệ cho mọi hình học trong DB, bằng cách sử dụng các công cụ nhập khẩu của bên thứ ba, vì vậy tôi chỉ nắm bắt mọi ngoại lệ:
CREATE OR REPLACE FUNCTION safe_st_contains(geom1 geometry, geom2 geometry)
RETURNS BOOL AS
$$
BEGIN
RETURN ST_Contains($1, $2);
EXCEPTION WHEN others THEN
RAISE NOTICE 'TopologyException'; -- this is a guess
RETURN FALSE;
END;
$$
LANGUAGE plpgsql;
Tôi muốn biết các trường hợp ngoại lệ như TopologyException thực sự thuộc về đâu và tôi nên sử dụng điều kiện ngoại lệ nào thay vì OTHERS
?