fix(gisogd66): CAST(:geojson AS text) — AmbiguousParameter ронял каждый upsert #2383
1 changed files with 6 additions and 2 deletions
|
|
@ -277,8 +277,12 @@ def _upsert_permit(db: Session, rec: dict[str, Any]) -> str:
|
||||||
:doc_group, :doc_num, :doc_name, :date_doc, :date_reg,
|
:doc_group, :doc_num, :doc_name, :date_doc, :date_reg,
|
||||||
:approved_org, :source_schema, :source_key,
|
:approved_org, :source_schema, :source_key,
|
||||||
CAST(:cad_nums AS text[]),
|
CAST(:cad_nums AS text[]),
|
||||||
CASE WHEN :geojson IS NULL THEN NULL
|
-- CAST обязателен: без него ни одно вхождение :geojson не даёт Postgres
|
||||||
ELSE ST_Multi(ST_SetSRID(ST_GeomFromGeoJSON(:geojson), 4326)) END,
|
-- тип параметра (ST_GeomFromGeoJSON перегружена text/json/jsonb) →
|
||||||
|
-- psycopg.errors.AmbiguousParameter на КАЖДОЙ строке (прод-прогон #2367).
|
||||||
|
CASE WHEN CAST(:geojson AS text) IS NULL THEN NULL
|
||||||
|
ELSE ST_Multi(ST_SetSRID(
|
||||||
|
ST_GeomFromGeoJSON(CAST(:geojson AS text)), 4326)) END,
|
||||||
NOW(), NOW()
|
NOW(), NOW()
|
||||||
)
|
)
|
||||||
ON CONFLICT (doc_group, doc_num) DO UPDATE
|
ON CONFLICT (doc_group, doc_num) DO UPDATE
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue