170 похожих чатов

Добрый день, не до конца понимаю на каком этапе библиотека

sqlx получая на вход запрос вида SELECT x FROM y WHERE x IN ($1, $2, $3) и аргументы под этот запрос как ...interface{} подменяет их на реальные значения? Конкретно интересует каким образом мы получаем строки с допустим enum типов (сгенерированных через enumer и имеющих методы вроде UnmarshalText/JSON), пролистал код либы, но ответа для себя не нашел.

17 ответов

11 просмотров

> подменяет их на реальные значения она их и не подменяет, это механизм бд - placeholders

J- Автор вопроса
Alexander Shavelev
> подменяет их на реальные значения она их и не п...

ок, а в какой момент мы конвертируем все заданные аргументы в строки, чтобы передать их дальше в нормальном виде?

J
ок, а в какой момент мы конвертируем все заданные ...

что такое «нормальный вид»?) почему обязательно строки - у пг есть и бинарный протокол)

J- Автор вопроса
Alexander Shavelev
что такое «нормальный вид»?) почему обязательно ст...

в нормальный вид я имею ввиду, что когда я передаю тип uuid.UUID в качестве параметра я на выходе получу запрос с WHERE id = '3124124124-242424-24', мне интересно как мы делаем переход от какого-то конкретного типа к представлению в виде строки.

J
в нормальный вид я имею ввиду, что когда я передаю...

уже на сервере бд туда вы передаете «вот запрос», «вот параметры для него»

J
в нормальный вид я имею ввиду, что когда я передаю...

еще вы можете делать «вот запрос» а потом N раз «вот параметры»

Alexander Shavelev
уже на сервере бд туда вы передаете «вот запрос»,...

Все не так, драйвер кастит в нужный ему тип данные которые вы передали как аргумент

do not import flask 🇺🇦
Все не так, драйвер кастит в нужный ему тип данные...

ну я к тому что драйвер не подставляет в запрос сами параметры это отдельные сущности что передаются

Владимир Столяров
А это смотря какой драйвер и как настроить

есть какие-то что по дефолту подставляют на уровне приложения?

Alexander Shavelev
ух, это прям откровение для меня)

В исходники пг зашита хэш мапа, какие типы во что кастить. В некоторых драйверах можно указать свою логику

do not import flask 🇺🇦
В исходники пг зашита хэш мапа, какие типы во что ...

а доклад что кидали выше это про «узнает про эту мапу для каждого нового подключения и тд. потому сделали оптимизацию»?

Alexander Shavelev
а доклад что кидали выше это про «узнает про эту м...

Доклад про местные костыли и не только. А в случае с этой мапой - просто решили принебречь лишними запросами к бд, приняв на веру, что все реплики бд находятся в одной конфигурации в данный момент времени, если я правильно понял

J
в нормальный вид я имею ввиду, что когда я передаю...

Правильно сказано, это механизм placeholdes. На уровне go-кода вообще такого нет, со стороны go на сервер передается отдельно запрос «SELECT x FROM y WHERE x IN (?, ?, ?)» (в зависимости от диалекта плейсхолдеры могут по-разному отмечаться), и отдельно передаются параметры

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта