Search
Write a publication
Pull to refresh

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

Reading time1 min
Views798
Встала задача переноса сайта на новый сервер. Из проблем ожидалась несовместимость с 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:
Total votes 24: ↑22 and ↓2+20
Comments41

Articles