Несовместимые изменения:
* BETA-0.3 НЕСОВМЕСТИМА С БАЗАМИ ДАННЫХ, СОЗДАННЫМИ ПРЕДЫДУЩИМИ ВЕРСИЯМИ
(из-за изменения системного каталога и структур индексов).
* двойные кавычки (") резко осуждаются как ограничивающий символ для строк;
тебе нужно преобразовать их в одиночные кавычки (').
* имена итоговых функций (например. int4sum) переименованы в соответствии с
SQL стандартом (например. sum).
* Синтаксис CHANGE ACL заменен на синтаксис GRANT/REVOKE.
* float литералы (например. 3.14) теперь типа float4 (вместо float8 в предыдущих
версиях); тебе нужно сделать преобразование типа, если ты использовал
тип float8. Если ты пренебрег выполнением преобразования и назначил
полю float литералов тип float8, то ты можешь получить неправильные значения
из-за хранения!
* LIBPQ была полностью отремонтирована, так что клиентские приложения могут
подключаться к нескольким серверам
* поле usesysid в pg_user было изменено из int2 в int4, чтобы расширить
диапазон ids пользователей Unix.
* netbsd/freebsd/bsd o/s порты были объединены в один
BSD44_derived порт. (спасибо Alistair Crooks)
SQL standard-compliance (следующие список изменений делает postgres95
более compliant со стандартом SQL-92):
* следующие типы SQL теперь встроены: smallint, int(eger), float, real,
char(N), varchar(N), date и time.
Псевдонимы существовавших типов postgres:
smallint -> int2
integer, int -> int4
float, real -> float4
char(N) и varchar(N) реализованы как обрезанный тип text. Вдобавок,
char(N) выполняет заполнение пробелами.
* одинарная кавычка (') используется для ограничивания строк; '' (в дополнении к
\') поддерживается для вставки одинарной кавычки в строку
* Используются стандартные SQL названия итоговых функций (MAX, MIN, AVG, SUM, COUNT)
(Также, итоговые функции теперь могут быть перегружены, т.е. ты можешь определить
свою собственную итоговую функцию MAX для работы с пользовательским типом.)
* CHANGE ACL удалена. Добавлен синтаксис GRANT/REVOKE.
- Группам могут быть назначены привилегии с помощью ключевого слова "GROUP".
Например:
GRANT SELECT ON foobar TO GROUP my_group;
Ключевое слово 'PUBLIC' также поддерживается для обозначения всех пользователей.
Привилегии могут быть предоставлены или отменены только для одного пользователя или группы
по одному.
"WITH GRANT OPTION" не поддерживается. Только владельцы класса могут
изменять контроль доступа
- Контроль доступа по умолчанию предоставляет пользователям доступ только для чтения.
Ты должен точно указывать предоставление доступа вставки/обновления пользователям. Чтобы
изменить это, измени строку
src/backend/utils/acl.h, которая определяет ACL_WORLD_DEFAULT
Исправленные баги:
* баг где итоговые функции с пустыми таблицами не работали был исправлен. Теперь,
итоговые функции работающие на пустых таблицах возвращают начальные условия
итоговых функций. Таким образом, COUNT пустой таблицы вернет теперь правильный 0.
MAX/MIN пустой таблицы вернут кортеж значений NULL.
* разрешено использование \; внутри монитора
* механизм асинхронного уведомления LISTEN/NOTIFY теперь работает
* NOTIFY в телах правил действий теперь работают
* хэш индексация работает, и метод доступа, в общем, должен выполняться быстрее.
создание больших индексов btree выполняется намного быстрее. (спасибо Paul
Aoki)
Другие изменения и улучшения:
* добавлен оператор EXPLAIN, используемый для объяснения плана выполнения запросов
(например. "EXPLAIN SELECT * FROM EMP" выводит план выполнения для запроса).
* сообщения WARN и NOTICE больше не имеют временных отметок. Чтобы включить
временные отметки в сообщениях об ошибках, раскомментируй строку в
src/backend/utils/elog.h:
/* define ELOG_TIMESTAMPS */
* При нарушении контроля доступа выдается сообщение
"Either no such class or insufficient privilege".
Тоже самое сообщение выдается когда класс не найден.
Это предостережёт непревелигерованных пользователей от угадывания существующих
превелигерованных классов.
* изменились некоторые дополнительные системные каталоги, которые не видимы
для пользователя.
libpgtcl изменения:
* Опция -oid добавлена в команду "pg_result" tcl.
pg_result -oid возвращает oid последнего вставленного кортежа. Если последняя
команда была не INSERT, то pg_result -oid возвращает "".
* доступен интерфейс большого объекта как команды pg_lo* tcl:
pg_lo_open, pg_lo_close, pg_lo_creat и т.д.
Улучшения портируемости и новые порты:
* была убрана flex/lex. Теперь, ты можешь использовать
flex вместо lex на любой платформе. Больше мы не делаем
предположений, какой lex взят за основу на используемой платформе.
* Порт Linux-ELF теперь поддерживается. Протестированы различные конфигурации:
Признаны рабочими следующие конфигурации:
ядро 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
все в ELF формате,
Новые утилиты:
* добавлена в дистрибутив ipcclean
ipcclean обычно не нужно запускать, но если сервер упал и оставшиеся
разделяемые сегменты памяти повисли, ipcclean очистит их.
Новая документация:
* руководство пользователя был пересмотрен и добавлена документация libpq.