f(g(h(d))) досить складно ментально, бо треба знайти власне з чого все там починається (h(d)) і читати справа наліво.Багато мов, включаючи Elixir, так чи інакше цю проблему вирішили, чи то з чимось типу pipe operator, чи то с UFCS (Universal Function Call Syntax).
А от SQL (яким я зараз займаюсь дуже багато) — ні.
І доводиться писати и вичитувати не дуже прозорі запити типу:
select convert_from(convert_to('Hello', 'utf-8'), 'utf-8')Не дуже зрозуміло з чого тут все починається і чим закінчується.
А якщо ми перепишемо це отак?
select 'Hello' |> convert_to('utf-8') |> convert_from('utf-8')Значно краще! Тут можна зрозуміти (якщо знати про що ці
convert функції) що беремо текст, конвертуємо у bytea, і назад. Не дуже корисно, але це просто приклад 🥹І мене це вже настількі достало, що так не можна, що я написав цього ранку прототип який власне це і робить за мене (див. скріншот). Я ще не знайшов нормального способу переписувати таким чином всі прямі запити до постгресу у сесії, але навіть якщо це неможливо, в мене все рівно є план написати вбудовану проксі/баунсер для постгресу. От воно ї зможе переписувати. А поки цього нема, можна переписувати запити використовуючи функцію
extended_sql.Запитання до читачів:
А які у вас є нарікання до SQL і що б ви хотіли покращити або виправити в ньому?