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

Всем привет. Есть приложение на .net которое пишет в бд

данные. Иногда в таблицах проскакивает BC даты (до нашей эры). Приложение на .net не могло передать такую дату, так как тип отвечающий за дату не переваривает значения выходящие за пределы 0001-9999 по годам. Это какая то бага постгри. Сталкивался кто с таким?

16 ответов

9 просмотров

> Приложение на .net не могло передать такую дату, так как тип отвечающий за дату не переваривает значения выходящие за пределы 0001-9999 по годам. Non sequitur. То, что в .net преобразовывает этот тип для передачи, могло "сломать" значение, например. > Это какая то бага постгри. Т.е. совсем не факт. А Вы можете воспроизвести? Или залогировать запросы этого приложения (включить для них логирование в PostgreSQL, я имею в виду)? И вообще, в логах PostgreSQL есть что-то "странное" (вдруг эта база вообще "битая")?

Dmitriy-Gavrilenko Автор вопроса
Yaroslav Schekin
> Приложение на .net не могло передать такую дату,...

> Non sequitur. То, что в .net преобразовывает этот тип для передачи, могло "сломать" значение, например. Есть цепочка. Источник данных -> .NET -> PGS. Если источник передает в .NET дату в нашей эре, т.е. от 0001-01-01, то .NET ее примет и запишет в БД. Если источник передаст дату до нашей эры, то .NET отвалится уже на этом этапе и до процесса записи в БД дело не дойдет. Соответственно вывод. Источник и .NET обработали нашу эру, .NET записал данные в таблицу, постгря сломала даты. Так как даты "сломаны" .net не может обратно их прочитаться из БД. Причем заметил (сейчас сломанные даты затерты для работы приложения), что сломанным датам не хватает 29 минут до "нашей эры". Т.е. значение "0001-01-01 23:31 BC" или около того

Dmitriy Gavrilenko
> Non sequitur. То, что в .net преобразовывает эт...

Хмм... мне ещё раз написать то же самое? ;( Хорошо, Ваш вывод не следует из посылок, и я показал Вам пример одного из мест, где оно может "ломаться". > .NET записал данные в таблицу, Вот это место, ещё раз. В общем, почему бы Вам не включить логирование запросов? Так будет точно понятно, "кто виноват", хотя бы.

Dmitriy-Gavrilenko Автор вопроса
Yaroslav Schekin
Хмм... мне ещё раз написать то же самое? ;( Хорошо...

База в облаке, прямого доступа нет. Я попробую конечно с админами связаться, чтобы они что нибудь предприняли по поводу логов.

Dmitriy Gavrilenko
База в облаке, прямого доступа нет. Я попробую кон...

А это хоть настоящий PostgreSQL, или какая-то хорошая (если верить vendor-у) имитация? ;) Я к тому, что если второе — это вообще не сюда... А что значит "прямого доступа нет"? Ни у кого нет прав superuser в этом instance PostgreSQL (права в OS на сервере, где он установлен, не нужны)?

Dmitriy-Gavrilenko Автор вопроса
Yaroslav Schekin
А это хоть настоящий PostgreSQL, или какая-то хоро...

Вроде настоящий. Логи включаются через запрос? А прочитать их можно без проникновения в FS сервера? Если да, то трудностей не составит все это включить и смотреть.

Dmitriy Gavrilenko
Вроде настоящий. Логи включаются через запрос? А п...

> Логи включаются через запрос? Можно и через запрос, да. ALTER SYSTEM / ALTER ROLE / ALTER DATABASE (что удобнее / точнее) + reload. > А прочитать их можно без проникновения в FS сервера? Superuser-у можно, конечно... но неудобно / это hacks. См. https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-GENFILE Ну или COPY FROM | "PROGRAM". Поэтому куда удобнее, если доступ под postgres всё же есть.

Dmitriy-Gavrilenko Автор вопроса
Yaroslav Schekin
> Логи включаются через запрос? Можно и через зап...

Во, вместо записи 0001-01-01 вставляет такую дату 0001-12-31 21:29:43.000 BC При чем во всех случаях

Dmitriy Gavrilenko
Во, вместо записи 0001-01-01 вставляет такую дату ...

Т.е. Вы до логов добрались, всё-таки? Можете запрос оттуда показать?

Dmitriy Gavrilenko
screenshot

Во-первых, откуда этот лог (как-то он на логи PostgreSQL не похож)? Во-вторых, какого типа поле modified (и что выводит запрос к этой записи в psql)?

Dmitriy-Gavrilenko Автор вопроса
Yaroslav Schekin
Во-первых, откуда этот лог (как-то он на логи Post...

Это логи из postgresql, просто облачный провайдер отображает их таким вот образом modified timestamp(3) with time zone not null значение - 0001-12-31 21:29:43.000 BC

Dmitriy Gavrilenko
Это логи из postgresql, просто облачный провайдер ...

> значение - 0001-12-31 21:29:43.000 BC psql на запрос к полю такого типа такогой дряни не выдаст никогда. Вы думаете, я просто так обратил внимание, что результат нужен из него?

Dmitriy-Gavrilenko Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта