Table of Contents
Esta sección intenta detallar hasta qué punto PostgreSQL se ajusta al estándar SQL actual. La siguiente información no es una declaración completa de conformidad, sino que presenta los temas principales con tanto detalle como sea razonable y útil para los usuarios.
El nombre oficial del estándar SQL es ISO/IEC 9075 “Database Language SQL” (Lenguaje de Base de Datos SQL). De vez en cuando se lanza una versión revisada del estándar; la actualización más reciente apareció en 2023. La versión de 2023 se conoce como ISO/IEC 9075:2023, o simplemente como SQL:2023. Las versiones anteriores a esa fueron SQL:2016, SQL:2011, SQL:2008, SQL:2006, SQL:2003, SQL:1999 y SQL-92. Cada versión reemplaza a la anterior, por lo que las declaraciones de conformidad con versiones anteriores no tienen validez oficial. El desarrollo de PostgreSQL apunta a la conformidad con la última versión oficial del estándar, siempre que dicha conformidad no contradiga características tradicionales o el sentido común. Muchas de las características requeridas por el estándar SQL están soportadas, aunque a veces con una sintaxis o función ligeramente diferente. Se pueden esperar más avances hacia la conformidad con el tiempo.
SQL-92 definió tres conjuntos de características para la conformidad: Entry (Entrada), Intermediate (Intermedio) y Full (Completo). La mayoría de los sistemas de gestión de bases de datos que afirmaban cumplir con el estándar SQL lo hacían únicamente en el nivel Entry, ya que el conjunto completo de características en los niveles Intermediate y Full era demasiado voluminoso o entraba en conflicto con comportamientos heredados.
A partir de SQL:1999, el estándar SQL define un gran conjunto de características individuales en lugar de los tres niveles ineficazmente amplios de SQL-92. Un subconjunto importante de estas características representa las características “Core” (principales), que toda implementación de SQL conforme debe proporcionar. El resto de las características son puramente opcionales.
El estándar se divide en varias partes, cada una de ellas conocida también por un nombre abreviado:
ISO/IEC 9075-1 Marco de trabajo (SQL/Framework)
ISO/IEC 9075-2 Fundamentos (SQL/Foundation)
ISO/IEC 9075-3 Interfaz a nivel de llamada (SQL/CLI)
ISO/IEC 9075-4 Módulos almacenados persistentes (SQL/PSM)
ISO/IEC 9075-9 Gestión de datos externos (SQL/MED)
ISO/IEC 9075-10 Enlaces de lenguajes de objetos (SQL/OLB)
ISO/IEC 9075-11 Esquemas de información y definición (SQL/Schemata)
ISO/IEC 9075-13 Rutinas y tipos usando el lenguaje Java (SQL/JRT)
ISO/IEC 9075-14 Especificaciones relacionadas con XML (SQL/XML)
ISO/IEC 9075-15 Arrays multidimensionales (SQL/MDA)
ISO/IEC 9075-16 Consultas de grafos de propiedades (SQL/PGQ)
Ten en cuenta que algunos números de parte no se usan (o ya no se usan).
El núcleo de PostgreSQL cubre las partes 1, 2, 9, 11 y 14. La parte 3 está cubierta por el controlador ODBC, y la parte 13 por el complemento PL/Java, pero actualmente no se está verificando la conformidad exacta para estos componentes. Actualmente no existen implementaciones de las partes 4, 10, 15 y 16 para PostgreSQL.
PostgreSQL soporta la mayoría de las características principales de SQL:2023. De las 177 características obligatorias requeridas para la conformidad completa con el núcleo (Core), PostgreSQL cumple con al menos 170. Además, existe una larga lista de características opcionales soportadas. Vale la pena señalar que, en el momento de escribir este documento, ninguna versión actual de ningún sistema de gestión de bases de datos afirma cumplir plenamente con Core SQL:2023.
En las siguientes dos secciones, proporcionamos una lista de aquellas características que PostgreSQL soporta, seguida de una lista de las características definidas en SQL:2023 que aún no están soportadas en PostgreSQL. Ambas listas son aproximadas: puede haber detalles menores que no sean conformes para una característica que figura como soportada, y es posible que gran parte de una característica no soportada esté de hecho implementada. El cuerpo principal de la documentación siempre contiene la información más precisa sobre lo que funciona y lo que no.
Los códigos de características que contienen un guion son subcaracterísticas. Por lo tanto, si una subcaracterística en particular no está soportada, la característica principal se lista como no soportada, incluso si se soportan algunas otras subcaracterísticas.