Appendix D. Соответствие стандартам SQL

Table of Contents
D.1. Поддерживаемые возможности
D.2. Неподдерживаемые возможности

В данной секции делается попытка разобраться как PostgreSQL соответствуют текущему стандарту SQL. Следующая информация не является полной информацией по тому как операторы соответствуют стандартам, но даёт некоторый разумный набор сведений, которые является полезным для пользователей.

Формальное название стандарта SQL - это ISO/IEC 9075 "Database Language SQL" (Язык баз данных SQL). Время от времени выпускается пересмотренная версия этого стандарта; наиболее свежая была выпущена в 2003 году. Эта версия извесна как ISO/IEC 9075:2003 или просто как SQL:2003. Предыдущие версия назывались SQL:1999 и SQL92. Каждая версия замещает предыдщую, так что требования соответствия стандарту более ранних версий не имеют официальной силы. Разработка PostgreSQL имеет целью достижение совместимости с последней официальной версией стандарта, где такая совместимость не противоречит традиционным возможностям или здравому смыслу. Проект PostgreSQL не был представлен в Рабочей Группе ISO/IEC 9095 во время подготовки SQL:2003. Но несмотря на это, многие из возможностей, требуемых по стандарту SQL:2003 уже поддерживаются PostgreSQL, хотя иногда и с небольшими отличиями в синтаксисе или функции. Дальнейшее сближение со стандартом можно ожидать в следующих выпусках.

SQL92 определяет три списка возможностей по достигнутой совместимости: Entry, Intermediate и Full (Начальная, Промежуточная и Полная). Большинство СУБД претендующих на совместимость со стандартом SQL, соответствовали только уровню Entry, так как полный список возможностей для уровней Intermediate и Full был или слишком объёмный или приводил к конфликту с существующим поведением СУБД. Начиная с SQL:1999 определяет большой список отдельных возможностей, в отличие от неэффективного широкого разделения на три уровня в SQL92. Большой подсписок этих возможностей представлят собой "Core" (основные) возможности, каждая из которых должна поддерживаться совместимой со стандартом реализацией SQL. Оставшиеся возможности являются просто необязательными. Некоторые необязательные возможности группируются вместе в форме "пакетов", на соотвествие с которыми могут претендовать реализации SQL.

Стандарт SQL:2003 также разбит на несколько частей. Каждая часть имеет краткое название. Заметим, что эти части пронумерованы непоследовательно.

PostgreSQL реализует только части 1, 2 и 11. Часть 3 похожа на ODBC интерфейс, а часть 4 похожа на язык программирования PL/pgSQL, но в этом случае точное соответствие не планировалось и не проверялось.

PostgreSQL поддерживает большинство главных возможностей SQL:2003. Из свыше 164 обязательных возможностей, требуемых для полной совместимости "Core", PostgreSQL соответствует по крайней мере 150. Кроме того, существует длинный список поддерживаемых необязательных возможностей. Возможно это и не имеет значение, но в момент написания этих слов, ни одна текущая версия, ни одной СУБД, не соответствует полностью "Core" SQL:2003.

В следующих двух секциях мы предоставляет список тех возможностей, которые поддеживает PostgreSQL, а затем список тех возможностей, которые определены в SQL:2003, но пока не поддерживаются в PostgreSQL. Оба этих списка являются приблизительными: В них нет мелких деталей, которые не согласовываются с возможностью, которая указана как поддерживаемая и множества частей неподдерживаемой возможности, которые могут фактически быть реализованы. Основная часть этой документации всегда содержит наиболее аккуратную информацию о том, что работает, а что нет.

Note: Коды возможностей, содержащие дефис являются подвозможностями. Так, если отдельная подвозможность нереализована, основная возможность указывается как неподдерживаемая, даже если некоторые другие её подвозможности поддерживаются.