fix(tradein): estimate 500 — алиас distance_m в ORDER BY-выражении
Регрессия #385 (#6 house-match): ORDER BY использует SELECT-алиас distance_m внутри арифметического выражения. PostgreSQL подставляет алиасы в ORDER BY только голым термом — внутри выражения имя ищется как колонка listings.distance_m, которой нет → "column does not exist" → 500 на каждый геокодящийся адрес. Инлайнили ST_Distance() вместо алиаса. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
cae12fe6c3
commit
dbe16c035e
1 changed files with 4 additions and 1 deletions
|
|
@ -343,7 +343,10 @@ def _fetch_analogs(
|
|||
AND scraped_at > NOW() - (:fresh_days || ' days')::interval
|
||||
AND price_rub > 0
|
||||
ORDER BY (
|
||||
distance_m / 1000.0
|
||||
-- distance_m — это SELECT-алиас. В ORDER BY-ВЫРАЖЕНИИ (не голым
|
||||
-- термом) PostgreSQL трактует имя как входную колонку listings,
|
||||
-- которой нет → "column distance_m does not exist". Инлайним ST_Distance.
|
||||
ST_Distance(geom::geography, ST_MakePoint(:lon, :lat)::geography) / 1000.0
|
||||
+ CASE WHEN :target_year IS NOT NULL AND year_built IS NOT NULL
|
||||
THEN abs(year_built - :target_year) / 12.0 ELSE 0 END
|
||||
+ CASE WHEN :target_house_type IS NOT NULL AND house_type IS NOT NULL
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue