Pull to refresh

Главное отличие версии 8.3, которое может вызвать проблемы при переходе на нее

Reading time 1 min
Views 712
Встала задача переноса сайта на новый сервер. Из проблем ожидалась несовместимость с PHP5, которая в итоге очень быстро решилась, а сайт все равно не поднимался. Выяснилось, что не отрабатывают простейшие запросы к БД. При ближайшем рассмотрении оказалось, что не происходит автоматическое преобразование типов.

В процессе переписки с господином Самохваловым выяснилось, что в новой версии действительно по умолчанию нет правил автопреобразования типов к текстовому.
http://www.postgresql.org/docs/current/static/release-8-3.html
Non-character data types are no longer automatically cast to TEXT (Peter, Tom)

Что происходило раньше: 0 превращался в '0' и происходило сравнение строк (text > text). Теперь автоматическое приведение типов отсутствует. Это более правильный подход. Вам надо адаптировать своё приложение.

Если вы хотите, чтобы всё работало как раньше, можете создать руками правило автоприведения int4->text, float4->text и т.д. с помощью команды CREATE CAST. Но надо понимать, что это будет именно сравнение строк, как и ранее.


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

Николай (из переписки):
P.S. Подобные вопросы следует обсуждать публично, если только это не коммерческое обращение.


Спасибо, Николай!
Tags:
Hubs:
+20
Comments 41
Comments Comments 41

Articles