Как стать автором
Обновить

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

Время на прочтение1 мин
Количество просмотров730
Встала задача переноса сайта на новый сервер. Из проблем ожидалась несовместимость с 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. Подобные вопросы следует обсуждать публично, если только это не коммерческое обращение.


Спасибо, Николай!
Теги:
Хабы:
Всего голосов 24: ↑22 и ↓2+20
Комментарии41

Публикации