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

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

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


Спасибо, Николай!
Теги:postgresqlpostgresqlсубдбазы данных
Хабы: PostgreSQL
Всего голосов 24: ↑22 и ↓2 +20
Просмотры590

Комментарии 41

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

Похожие публикации

Лучшие публикации за сутки