E.5. Versión 18 #

E.5.1. Descripción general
E.5.2. Migración a la versión 18
E.5.3. Cambios
E.5.4. Agradecimientos

Fecha de lanzamiento: 25 de septiembre de 2025

E.5.1. Descripción general #

PostgreSQL 18 contiene muchas características nuevas y mejoras, incluyendo:

  • Un subsistema de E/S asíncrona (AIO) que puede mejorar el rendimiento de los escaneos secuenciales, escaneos de mapas de bits de heap (bitmap heap scans), vacuums y otras operaciones.

  • pg_upgrade ahora retiene las estadísticas del optimizador.

  • Soporte para búsquedas "skip scan" que permiten utilizar índices B-tree multicolumna en más casos.

  • La función uuidv7() para generar UUIDs ordenados por marca de tiempo.

  • Columnas generadas virtuales que calculan sus valores durante las operaciones de lectura. Este es ahora el comportamiento por defecto para las columnas generadas.

  • Soporte para autenticación OAuth.

  • Soporte de OLD y NEW para cláusulas RETURNING en los comandos INSERT, UPDATE, DELETE y MERGE.

  • Restricciones temporales, o restricciones sobre rangos, para las restricciones PRIMARY KEY, UNIQUE y FOREIGN KEY.

Los elementos anteriores y otras nuevas características de PostgreSQL 18 se explican con más detalle en las secciones siguientes.

E.5.2. Migración a la versión 18 #

Se requiere un dump/restore utilizando pg_dumpall, el uso de pg_upgrade o replicación lógica para aquellos que deseen migrar datos desde cualquier versión anterior. Consulte Section 18.6 para obtener información general sobre la migración a nuevas versiones principales (major releases).

La versión 18 contiene una serie de cambios que pueden afectar la compatibilidad con versiones anteriores. Observe las siguientes incompatibilidades:

  • Cambia el comportamiento por defecto de initdb para habilitar las sumas de comprobación (data checksums) (Greg Sabino Mullane) §

    Las sumas de comprobación se pueden deshabilitar con la nueva opción de initdb --no-data-checksums. pg_upgrade requiere que coincida la configuración de las sumas de comprobación de los clústeres, por lo que esta nueva opción puede ser útil para actualizar clústeres antiguos que no las tengan habilitadas.

  • Cambia el manejo de abreviaturas de zonas horarias (Tom Lane) §

    El sistema ahora priorizará las abreviaturas de zona horaria de la sesión actual antes de verificar la variable de servidor timezone_abbreviations. Anteriormente se verificaba primero timezone_abbreviations.

  • Declara obsoleta (deprecate) la autenticación por contraseñas MD5 (Nathan Bossart) §

    El soporte para contraseñas MD5 se eliminará en una futura versión principal. CREATE ROLE y ALTER ROLE ahora emiten advertencias de obsolescencia al establecer contraseñas MD5. Estas advertencias se pueden deshabilitar estableciendo el parámetro md5_password_warnings a off.

  • Cambia VACUUM y ANALYZE para procesar los hijos de herencia de un padre (Michael Harris) §

    El comportamiento anterior se puede realizar utilizando la nueva opción ONLY.

  • Evita que COPY FROM trate \. como un marcador de fin de archivo al leer archivos CSV (Daniel Vérité, Tom Lane) § §

    psql seguirá tratando \. como un marcador de fin de archivo al leer archivos CSV desde STDIN. Los clientes psql más antiguos que se conecten a servidores PostgreSQL 18 podrían experimentar problemas con \copy. Esta versión también impone que \. debe aparecer solo en una línea.

  • Desautoriza tablas particionadas no registradas (unlogged partitioned tables) (Michael Paquier) §

    Anteriormente, ALTER TABLE SET [UN]LOGGED no hacía nada, y la creación de una tabla particionada no registrada no causaba que sus hijas fueran no registradas.

  • Ejecuta disparadores (triggers) AFTER como el rol que estaba activo cuando los eventos del disparador fueron encolados (Laurenz Albe) §

    Anteriormente, tales disparadores se ejecutaban como el rol que estaba activo al momento de la ejecución del disparador (por ejemplo, en un COMMIT). Esto es significativo para los casos en que el rol cambia entre el momento de encolar y la confirmación (commit) de la transacción.

  • Elimina el soporte no funcional para privilegios de reglas en GRANT y REVOKE (Fujii Masao) §

    Estos no han sido funcionales desde PostgreSQL 8.2.

  • Elimina la columna parent de pg_backend_memory_contexts (Melih Mutlu) §

    Esto ya no es necesario dado que se añadió pg_backend_memory_contexts.path.

  • Cambia pg_backend_memory_contexts.level y pg_log_backend_memory_contexts() para que se basen en uno (one-based) (Melih Mutlu, Atsushi Torikoshi, David Rowley, Fujii Masao) § § §

    Anteriormente, estos se basaban en cero (zero-based).

  • Cambia la búsqueda de texto completo (FTS) para usar el proveedor de colación por defecto del clúster para leer archivos de configuración y diccionarios, en lugar de utilizar siempre libc (Peter Eisentraut) §

    Los clústeres que usan por defecto proveedores de colación distintos de libc (por ejemplo, ICU, builtin) y que se comportan de forma diferente a libc para los caracteres procesados por LC_CTYPE podrían experimentar cambios en el comportamiento de algunas funciones de búsqueda de texto completo, así como en la extensión pg_trgm. Al actualizar tales clústeres utilizando pg_upgrade, se recomienda reindexar todos los índices relacionados con la búsqueda de texto completo y pg_trgm después de la actualización.

E.5.3. Cambios #

A continuación encontrará un relato detallado de los cambios entre PostgreSQL 18 y la versión principal anterior.

E.5.3.1. Servidor #

E.5.3.1.1. Optimizador #
  • Elimina automáticamente algunas autouniones (self-joins) innecesarias de tablas (Andrey Lepikhov, Alexander Kuzmenkov, Alexander Korotkov, Alena Rybakina) §

    Esta optimización se puede desactivar usando la variable de servidor enable_self_join_elimination.

  • Convierte algunas expresiones IN (VALUES ...) a x = ANY ... para obtener mejores estadísticas del optimizador (Alena Rybakina, Andrei Lepikhov) §

  • Permite transformar cláusulas OR a arreglos para un procesamiento de índices más rápido (Alexander Korotkov, Andrey Lepikhov) §

  • Acelera el procesamiento de INTERSECT, EXCEPT, agregaciones de ventana, y alias de columnas de vista (Tom Lane, David Rowley) § § § §

  • Permite que las claves de SELECT DISTINCT se reordenen internamente para evitar el ordenamiento (Richard Guo) §

    Esta optimización se puede desactivar usando enable_distinct_reordering.

  • Ignora las columnas GROUP BY que dependen funcionalmente de otras columnas (Zhang Mingli, Jian He, David Rowley) §

    Si una cláusula GROUP BY incluye todas las columnas de un índice único, así como otras columnas de la misma tabla, esas otras columnas son redundantes y pueden eliminarse de la agrupación. Esto ya era así para las claves primarias no diferidas.

  • Permite que algunas cláusulas HAVING en GROUPING SETS se inserten (pushdown) en las cláusulas WHERE (Richard Guo) § § § §

    Esto permite filtrar las filas antes. Esta versión también corrige algunas consultas de GROUPING SETS que solían devolver resultados incorrectos.

  • Mejora las estimaciones de filas para generate_series() usando valores numeric y timestamp (David Rowley, Song Jinzhou) § §

  • Permite al optimizador usar planes de tipo Right Semi Join (Richard Guo) §

    Las semi-joins se utilizan cuando se necesita averiguar si hay al menos una coincidencia.

  • Permite que las uniones de mezcla (merge joins) utilicen ordenamientos incrementales (incremental sorts) (Richard Guo) §

  • Mejora la eficiencia en la planificación de consultas que acceden a muchas particiones (Ashutosh Bapat, Yuya Watari, David Rowley) § §

  • Permite uniones basadas en particiones (partitionwise joins) en más casos, y reduce su uso de memoria (Richard Guo, Tom Lane, Ashutosh Bapat) § §

  • Mejora las estimaciones de costos de consultas de particiones (Nikita Malakhov, Andrei Lepikhov) §

  • Mejora el almacenamiento en caché de planes (plan caching) de funciones en lenguaje SQL (Alexander Pyhalov, Tom Lane) § §

  • Mejora el manejo de características desactivadas del optimizador (Robert Haas) §

E.5.3.1.2. Índices #
  • Permite búsquedas con salto (skip scans) en índices btree (Peter Geoghegan) § §

    Esto permite usar índices btree multicolumna en más casos, como cuando no hay restricciones en las primeras columnas indexadas (o hay restricciones que no son de igualdad) y existen restricciones útiles en las columnas indexadas posteriores.

  • Permite usar índices únicos que no sean btree como claves de partición y en vistas materializadas (Mark Dilger) § §

    El tipo de índice aún debe soportar la igualdad.

  • Permite que los índices GIN se creen en paralelo (Tomas Vondra, Matthias van de Meent) §

  • Permite ordenar valores para acelerar las construcciones de índices GiST y btree de tipos de rango (Bernd Helmle) §

E.5.3.1.3. General Performance #
  • Añade un subsistema de E/S asíncrona (Andres Freund, Thomas Munro, Nazir Bilal Yavuz, Melanie Plageman) § § § § § § § § § § §

    Esta característica permite que los backends pongan en cola múltiples solicitudes de lectura, lo que permite escaneos secuenciales, escaneos de mapa de bits del montículo (bitmap heap scans), vacuums, etc., más eficientes. Esto se habilita mediante la variable de servidor io_method, y se agregaron las variables de servidor io_combine_limit y io_max_combine_limit para controlarlo. Esto también permite valores de effective_io_concurrency y maintenance_io_concurrency mayores que cero en sistemas sin soporte para fadvise(). La nueva vista del sistema pg_aios muestra los descriptores de archivos que se están utilizando para la E/S asíncrona.

  • Mejora el rendimiento de los bloqueos de consultas que acceden a muchas relaciones (Tomas Vondra) §

  • Mejora el rendimiento y reduce el uso de memoria de las uniones hash (hash joins) y GROUP BY (David Rowley, Jeff Davis) § § § § §

    Esto también mejora las operaciones de conjuntos hash utilizadas por EXCEPT, y las búsquedas hash de valores de subplanes.

  • Permite que los vacuums normales congelen algunas páginas, aunque estén totalmente visibles (all-visible) (Melanie Plageman) § §

    Esto reduce la sobrecarga del congelamiento posterior de relaciones completas. La agresividad de esto se puede controlar mediante la variable de servidor y el ajuste por tabla vacuum_max_eager_freeze_failure_rate. Anteriormente, vacuum nunca procesaba páginas totalmente visibles hasta que se requería el congelamiento.

  • Añade la variable de servidor vacuum_truncate para controlar el truncamiento de archivos durante VACUUM (Nathan Bossart, Gurjeet Singh) §

    Ya existía un parámetro a nivel de almacenamiento con el mismo nombre y comportamiento.

  • Incrementa los valores por defecto de las variables de servidor effective_io_concurrency y maintenance_io_concurrency a 16 (Melanie Plageman) § §

    Esto refleja con mayor precisión el hardware moderno.

E.5.3.1.4. Monitoreo #
  • Aumenta la granularidad del registro de la variable de servidor log_connections (Melanie Plageman) §

    Esta variable de servidor antes era solo booleana, lo cual sigue siendo soportado.

  • Añade la opción log_connections para informar sobre la duración de las etapas de la conexión (Melanie Plageman) §

  • Añade el escape %L en log_line_prefix para mostrar la dirección IP del cliente (Greg Sabino Mullane) §

  • Añade la variable de servidor log_lock_failures para registrar los fallos en la adquisición de bloqueos (Yuki Seino, Fujii Masao) § §

    Específicamente, informa sobre los fallos de bloqueo en consultas SELECT ... NOWAIT.

  • Modifica pg_stat_all_tables y sus variantes para reportar el tiempo dedicado a VACUUM, ANALYZE y sus variantes automáticas (Sami Imseih) §

    Las nuevas columnas son total_vacuum_time, total_autovacuum_time, total_analyze_time y total_autoanalyze_time.

  • Añade el informe del tiempo de retraso a VACUUM and ANALYZE (Bertrand Drouvot, Nathan Bossart) § §

    Esta información aparece en el registro del servidor (log), las vistas del sistema pg_stat_progress_vacuum y pg_stat_progress_analyze, y en la salida de VACUUM y ANALYZE cuando están en modo VERBOSE; el seguimiento debe estar habilitado con la variable de servidor track_cost_delay_timing.

  • Añade la salida de estadísticas de promedio de lectura, WAL y CPU a ANALYZE VERBOSE (Anthonin Bonnefoy) § §

  • Añade el conteo de búferes de WAL llenos a la salida del registro de VACUUM/ANALYZE (VERBOSE) y autovacuum (Bertrand Drouvot) §

  • Añade el informe de estadísticas de E/S por backend (Bertrand Drouvot) § §

    Se accede a las estadísticas a través de pg_stat_get_backend_io(). Las estadísticas de E/S por backend se pueden restablecer mediante pg_stat_reset_backend_stats().

  • Añade columnas a pg_stat_io para reportar la actividad de E/S en bytes (Nazir Bilal Yavuz) §

    Las nuevas columnas son read_bytes, write_bytes y extend_bytes. Se ha eliminado la columna op_bytes, que siempre equivalía a BLCKSZ.

  • Añade filas de actividad de E/S de WAL a pg_stat_io (Nazir Bilal Yavuz, Bertrand Drouvot, Michael Paquier) § § §

    Esto incluye la actividad del receptor de WAL y un evento de espera para dichas escrituras.

  • Cambia la variable de servidor track_wal_io_timing para controlar el seguimiento de los tiempos de E/S de WAL en pg_stat_io en lugar de pg_stat_wal (Bertrand Drouvot) §

  • Elimina las columnas de lectura y sincronización (read/sync) de pg_stat_wal (Bertrand Drouvot) § §

    Esto elimina las columnas wal_write, wal_sync, wal_write_time y wal_sync_time.

  • Añade la función pg_stat_get_backend_wal() para devolver estadísticas de WAL por backend (Bertrand Drouvot) §

    Las estadísticas de WAL por backend se pueden restablecer mediante pg_stat_reset_backend_stats().

  • Añade la función pg_ls_summariesdir() para listar específicamente el contenido de PGDATA/pg_wal/summaries (Yushi Ogiwara) §

  • Añade la columna pg_stat_checkpointer.num_done para informar sobre el número de puntos de control (checkpoints) completados (Anton A. Melnikov) §

    Las columnas num_timed y num_requested cuentan tanto los puntos de control completados como los omitidos.

  • Añade la columna pg_stat_checkpointer.slru_written para informar sobre los búferes SLRU escritos (Nitin Jadhav) §

    También modifica el mensaje de registro del servidor sobre el punto de control para reportar valores separados de búferes compartidos (shared buffers) y búferes SLRU.

  • Añade columnas a pg_stat_database para informar sobre la actividad de los trabajadores en paralelo (parallel workers) (Benoit Lobréau) §

    Las nuevas columnas son parallel_workers_to_launch y parallel_workers_launched.

  • Hace que el cálculo del ID de consulta (query id) para listas de constantes considere solo la primera y última constantes (Dmitry Dolgov, Sami Imseih) § § §

    El desordenamiento (jumbling) es utilizado por pg_stat_statements.

  • Ajusta el cálculo del ID de consulta para agrupar las consultas que utilicen el mismo nombre de relación (Michael Paquier, Sami Imseih) §

    Esto es así incluso si las tablas en diferentes esquemas tienen diferentes nombres de columnas.

  • Añade la columna pg_backend_memory_contexts.type para informar el tipo de contexto de memoria (David Rowley) §

  • Añade la columna pg_backend_memory_contexts.path para mostrar los padres del contexto de memoria (Melih Mutlu) §

E.5.3.1.5. Privilegios #
  • Añade la función pg_get_acl() para recuperar detalles de control de acceso de la base de datos (Joel Jacobson) § §

  • Añade la función has_largeobject_privilege() para verificar privilegios de objetos grandes (Yugo Nagata) §

  • Permite a ALTER DEFAULT PRIVILEGES definir privilegios por defecto para objetos grandes (Takatsuka Haruka, Yugo Nagata, Laurenz Albe) §

  • Añade el rol predefinido pg_signal_autovacuum_worker (Kirill Reshke) §

    Esto permite enviar señales a los trabajadores de autovacuum.

E.5.3.1.6. Configuración del Servidor #
  • Añade soporte para el método de autenticación OAuth (Jacob Champion, Daniel Gustafsson, Thomas Munro) §

    Esto añade un método de autenticación oauth a pg_hba.conf, opciones de OAuth para libpq, una variable de servidor oauth_validator_libraries para cargar bibliotecas de validación de tokens, y una opción de configure --with-libcurl para añadir las bibliotecas requeridas en tiempo de compilación.

  • Añade la variable de servidor ssl_tls13_ciphers para permitir la especificación de múltiples suites de cifrado TLSv1.3 separadas por dos puntos (Erica Zhang, Daniel Gustafsson) §

  • Cambia el valor por defecto de la variable de servidor ssl_groups para incluir la curva elíptica X25519 (Daniel Gustafsson, Jacob Champion) §

  • Renombra la variable de servidor ssl_ecdh_curve a ssl_groups y permite especificar múltiples curvas ECDH separadas por dos puntos (Erica Zhang, Daniel Gustafsson) §

    El nombre anterior sigue funcionando.

  • Hace que las claves de solicitud de cancelación sean de 256 bits (Heikki Linnakangas, Jelte Fennema-Nio) § §

    Esto solo es posible cuando el servidor y el cliente soportan la versión 3.2 del protocolo de comunicación (wire protocol), introducida en esta versión.

  • Añade la variable de servidor autovacuum_worker_slots para especificar el número máximo de trabajadores de fondo (background workers) (Nathan Bossart) §

    Con esta variable configurada, autovacuum_max_workers se puede ajustar en tiempo de ejecución hasta este máximo sin necesidad de reiniciar el servidor.

  • Permite especificar el número fijo de tuplas muertas que activará un autovacuum (Nathan Bossart, Frédéric Yhuel) §

    La variable de servidor es autovacuum_vacuum_max_threshold. Aún se utilizan porcentajes para la activación.

  • Cambia la variable de servidor max_files_per_process para limitar solo los archivos abiertos por un backend (Andres Freund) §

    Anteriormente, los archivos abiertos por el postmaster también contaban para este límite.

  • Añade la variable de servidor num_os_semaphores para informar el número requerido de semáforos (Nathan Bossart) §

    Esto es útil para la configuración del sistema operativo.

  • Añade la variable de servidor extension_control_path para especificar la ubicación de los archivos de control de extensiones (Peter Eisentraut, Matheus Alcantara) § §

E.5.3.1.7. Replicación en Streaming y Recuperación #
  • Permite que los slots de replicación inactivos se invaliden automáticamente usando la variable de servidor idle_replication_slot_timeout (Nisha Moond, Bharath Rupireddy) §

  • Añade la variable de servidor max_active_replication_origins para controlar el máximo de orígenes de replicación activos (Euler Taveira) §

    Esto antes estaba controlado por max_replication_slots, pero este nuevo ajuste permite un conteo de orígenes mayor en casos donde se requieren menos slots.

  • Permite que los valores de las columnas generadas (generated columns) se repliquen lógicamente (Shubham Khanna, Vignesh C, Zhijie Hou, Shlok Kyal, Peter Smith) § § § §

    Si la publicación especifica una lista de columnas, todas las columnas especificadas, tanto generadas como no generadas, se publican. Sin una lista de columnas especificada, la opción de publicación publish_generated_columns controla si las columnas generadas se publican. Anteriormente las columnas generadas no se replicaban y el suscriptor tenía que calcular los valores si era posible; esto es particularmente útil para suscriptores ajenos a PostgreSQL que carecen de tal capacidad.

  • Cambia la opción por defecto de transmisión (streaming) en CREATE SUBSCRIPTION de off a parallel (Vignesh C) §

  • Permite a ALTER SUBSCRIPTION cambiar el comportamiento de confirmación en dos fases (two-phase commit) del slot de replicación (Hayato Kuroda, Ajin Cherian, Amit Kapila, Zhijie Hou) § §

  • Registra los conflictos al aplicar cambios de replicación lógica (Zhijie Hou, Nisha Moond) § § § § §

    También informa sobre estos en las nuevas columnas de pg_stat_subscription_stats.

E.5.3.2. Comandos de Utilidad #

  • Permite que las columnas generadas sean virtuales, y las hace la opción por defecto (Peter Eisentraut, Jian He, Richard Guo, Dean Rasheed) § § §

    Las columnas generadas virtuales generan sus valores cuando se leen las columnas, no cuando se escriben. El comportamiento de escritura aún se puede especificar mediante la opción STORED.

  • Añade soporte para OLD/NEW a RETURNING en consultas DML (Dean Rasheed) §

    Anteriormente, RETURNING solo devolvía nuevos valores para INSERT y UPDATE, y valores antiguos para DELETE; MERGE devolvía el valor adecuado según la consulta interna ejecutada. Esta nueva sintaxis permite que la lista RETURNING de INSERT/UPDATE/DELETE/MERGE devuelva explícitamente valores antiguos y nuevos utilizando los alias especiales old y new. Estos alias se pueden renombrar para evitar conflictos con otros identificadores.

  • Permite crear tablas extranjeras (foreign tables) de manera similar a las tablas locales existentes (Zhang Mingli) §

    La sintaxis es CREATE FOREIGN TABLE ... LIKE.

  • Permite LIKE con ordenaciones no deterministas (nondeterministic collations) (Peter Eisentraut) §

  • Permite funciones de búsqueda de posición de texto con ordenaciones no deterministas (Peter Eisentraut) §

    Anteriormente, estas generaban un error.

  • Añade el proveedor de ordenación integrado PG_UNICODE_FAST (Jeff Davis) §

    Esta configuración regional (locale) soporta el mapeo de mayúsculas y minúsculas (case mapping), pero ordena en el orden de puntos de código (code point), no en el orden del lenguaje natural.

  • Permite que VACUUM y ANALYZE procesen tablas particionadas sin procesar sus hijos (Michael Harris) §

    Esto se habilita con la nueva opción ONLY. Esto es útil ya que autovacuum no procesa tablas particionadas, solo sus hijos.

  • Añade funciones para modificar las estadísticas del optimizador por relación y por columna (Corey Huinker) § § §

    Las funciones son pg_restore_relation_stats(), pg_restore_attribute_stats(), pg_clear_relation_stats() y pg_clear_attribute_stats().

  • Añade la variable de servidor file_copy_method para controlar el método de copia de archivos (Nazir Bilal Yavuz) §

    Esto controla si CREATE DATABASE ... STRATEGY=FILE_COPY y ALTER DATABASE ... SET TABLESPACE utilizan copia o clonación de archivos.

E.5.3.2.1. Restricciones #
  • Permite la especificación de restricciones PRIMARY KEY, UNIQUE y claves extranjeras (foreign keys) temporales sin superposición (Paul A. Jungwirth) § §

    Esto se especifica con WITHOUT OVERLAPS para PRIMARY KEY and UNIQUE, y con PERIOD para claves extranjeras, todos aplicados a la última columna especificada.

  • Permite que las restricciones CHECK y de clave extranjera se especifiquen como NOT ENFORCED (Amul Sul) § §

    Esto también añade la columna pg_constraint.conenforced.

  • Requiere que las relaciones de clave primaria/extranjera utilicen ordenaciones deterministas o las mismas ordenaciones no deterministas (Peter Eisentraut) §

    La restauración de un pg_dump, también utilizado por pg_upgrade, fallará si no se cumplen estos requisitos; se deben realizar cambios en el esquema para que estos métodos de actualización tengan éxito.

  • Almacena las especificaciones NOT NULL de las columnas en pg_constraint (Álvaro Herrera, Bernd Helmle) § §

    Esto permite especificar nombres para la restricción NOT NULL. También añade restricciones NOT NULL a tablas extranjeras y control de herencia de NOT NULL a tablas locales.

  • Permite a ALTER TABLE establecer el atributo NOT VALID de las restricciones NOT NULL (Rushabh Lathia, Jian He) §

  • Permite modificar la heredabilidad de las restricciones NOT NULL (Suraj Kharage, Álvaro Herrera) § §

    La sintaxis es ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT.

  • Permite restricciones de clave extranjera NOT VALID en tablas particionadas (Amul Sul) §

  • Permite eliminar restricciones usando ONLY en tablas particionadas (Álvaro Herrera) §

    Esto estaba anteriormente prohibido por error.

E.5.3.2.2. COPY #
  • Añade REJECT_LIMIT para controlar el número de filas inválidas que COPY FROM puede ignorar (Atsushi Torikoshi) §

    Esto está disponible cuando ON_ERROR = 'ignore'.

  • Permite a COPY TO copiar filas de vistas materializadas pobladas (Jian He) §

  • Añade el nivel silent para COPY LOG_VERBOSITY para suprimir la salida del registro de las filas ignoradas (Atsushi Torikoshi) §

    Este nuevo nivel suprime la salida para las filas de entrada descartadas cuando on_error = 'ignore'.

  • Desautoriza COPY FREEZE en tablas extranjeras (Nathan Bossart) §

    Anteriormente, el COPY funcionaba pero el FREEZE se ignoraba, por lo que se desautoriza este comando.

E.5.3.2.3. EXPLAIN #
  • Incluye automáticamente la salida de BUFFERS en EXPLAIN ANALYZE (Guillaume Lelarge, David Rowley) §

  • Añade el conteo de búferes de WAL llenos a la salida de EXPLAIN (WAL) (Bertrand Drouvot) §

  • En EXPLAIN ANALYZE, reporta el número de búsquedas de índice utilizadas por cada nodo de escaneo de índice (Peter Geoghegan) §

  • Modifica EXPLAIN para mostrar conteos de filas fraccionarios (Ibrar Ahmed, Ilia Evdokimov, Robert Haas) § §

  • Añade detalles de uso de memoria y disco para los nodos Material, Window Aggregate y expresiones de tabla comunes (CTE) a la salida de EXPLAIN (David Rowley, Tatsuo Ishii) § § § §

  • Añade detalles sobre los argumentos de las funciones de ventana a la salida de EXPLAIN (Tom Lane) §

  • Añade estadísticas de la caché del trabajador de Parallel Bitmap Heap Scan a EXPLAIN ANALYZE (David Geier, Heikki Linnakangas, Donghang Lin, Alena Rybakina, David Rowley) §

  • Indica los nodos desactivados en la salida de EXPLAIN ANALYZE (Robert Haas, David Rowley, Laurenz Albe) § § §

E.5.3.3. Tipos de Datos #

  • Mejora el mapeo y la conversión completa de mayúsculas y minúsculas de Unicode (Jeff Davis) § §

    Esto añade la capacidad de realizar mapeos condicionales y de tipo título (title case), así como mapear caracteres individuales a múltiples caracteres.

  • Permite que los valores null de jsonb se conviertan (cast) a tipos escalares como NULL (Tom Lane) §

    Anteriormente, estas conversiones generaban un error.

  • Añade un parámetro opcional a json{b}_strip_nulls para permitir la eliminación de elementos null en los arreglos (Florents Tselai) §

  • Añade la función array_sort() que ordena la primera dimensión de un arreglo (Junwang Zhao, Jian He) §

  • Añade la función array_reverse() que invierte la primera dimensión de un arreglo (Aleksander Alekseev) §

  • Añade la función reverse() para invertir bytes de bytea (Aleksander Alekseev) §

  • Permite la conversión (cast) entre tipos enteros y bytea (Aleksander Alekseev) §

    Los valores enteros se almacenan como valores en complemento a dos en bytea.

  • Actualiza los datos de Unicode a Unicode 16.0.0 (Peter Eisentraut) §

  • Añade derivación morfológica (stemming) de Snowball para búsquedas de texto completo en estonio (Tom Lane) §

  • Mejora los códigos de error de XML para que coincidan más estrechamente con el estándar SQL (Tom Lane) §

    Estos errores se reportan a través de SQLSTATE.

E.5.3.4. Funciones #

  • Añade la función casefold() para permitir coincidencias insensibles a mayúsculas y minúsculas (case-insensitive) más sofisticadas (Jeff Davis) §

    Esto permite comparaciones más precisas, es decir, un carácter puede tener múltiples equivalentes en mayúsculas o minúsculas, o la conversión a mayúsculas o minúsculas cambia el número de caracteres.

  • Permite agregados MIN()/MAX() en arreglos y tipos compuestos (Aleksander Alekseev, Marat Buharov) § §

  • Añade una opción WEEK a EXTRACT() (Tom Lane) §

  • Mejora la salida de EXTRACT(QUARTER ...) para valores negativos (Tom Lane) §

  • Añade soporte para números romanos en to_number() (Hunaid Sohail) §

    Se accede a esto a través del patrón RN.

  • Añade la función de generación de UUID versión 7 uuidv7() (Andrey Borodin) §

    Este valor de UUID es ordenable temporalmente. Se ha añadido la función alternativa uuidv4() para generar explícitamente UUIDs de versión 4.

  • Añade las funciones crc32() y crc32c() para calcular valores CRC (Aleksander Alekseev) §

  • Añade las funciones matemáticas gamma() y lgamma() (Dean Rasheed) §

  • Permite la sintaxis => para argumentos de cursor con nombre en PL/pgSQL (Pavel Stehule) §

    Anteriormente, solo se aceptaba :=.

  • Permite que las funciones regexp_match[es]()/regexp_like()/regexp_replace()/regexp_count()/regexp_instr()/regexp_substr()/regexp_split_to_table()/regexp_split_to_array() utilicen argumentos con nombre (Jian He) §

E.5.3.5. Libpq #

  • Añade la función PQfullProtocolVersion() para informar el número completo de versión del protocolo, incluyendo la versión menor (Jacob Champion, Jelte Fennema-Nio) §

  • Añade parámetros de conexión de libpq y variables de entorno para especificar la versión del protocolo mínima y máxima aceptable para las conexiones (Jelte Fennema-Nio) § §

  • Informa sobre los cambios de search_path al cliente (Alexander Kukushkin, Jelte Fennema-Nio, Tomas Vondra) § §

  • Añade la salida de PQtrace() para todos los tipos de mensajes, incluyendo la autenticación (Jelte Fennema-Nio) § § § § §

  • Añade el parámetro de conexión de libpq sslkeylogfile que vuelca el material de clave SSL (Abhishek Chanda, Daniel Gustafsson) §

    Esto es útil para la depuración.

  • Modifica algunas firmas de funciones de libpq para utilizar int64_t (Thomas Munro) §

    Anteriormente utilizaban pg_int64, que ahora está desaconsejado.

E.5.3.6. psql #

  • Permite a psql analizar (parse), asociar (bind) y cerrar sentencias preparadas con nombre (Anthonin Bonnefoy, Michael Paquier) § §

    Esto se logra con los nuevos comandos \parse, \bind_named y \close_prepared.

  • Añade comandos de barra invertida (backslash) en psql para permitir el envío de consultas en canalización (pipeline) (Anthonin Bonnefoy) § § §

    Los nuevos comandos son \startpipeline, \syncpipeline, \sendpipeline, \endpipeline, \flushrequest, \flush y \getresults.

  • Permite añadir el estado de la canalización (pipeline) al prompt de psql y añade variables de estado relacionadas (Anthonin Bonnefoy) §

    El nuevo carácter del prompt es %P y las nuevas variables de psql son PIPELINE_SYNC_COUNT, PIPELINE_COMMAND_COUNT y PIPELINE_RESULT_COUNT.

  • Permite añadir el nombre de servicio de la conexión al prompt de psql o acceder a él a través de una variable de psql (Michael Banck) §

  • Añade una opción en psql para utilizar el modo expandido en todos los comandos de lista (Dean Rasheed) §

    Añadir el sufijo de barra invertida x habilita esto.

  • Cambia \conninfo de psql para utilizar un formato tabular e incluir más información (Álvaro Herrera, Maiquel Grassi, Hunaid Sohail) §

  • Añade el indicador de protección contra filtraciones (leakproof) de la función a las salidas de \df+, \do+, \dAo+ y \dC+ de psql (Yugo Nagata) §

  • Añade detalles del método de acceso para relaciones particionadas en \dP+ (Justin Pryzby) §

  • Añade default_version a la salida de extensiones de \dx en psql (Magnus Hagander) §

  • Añade la variable de psql WATCH_INTERVAL para establecer el tiempo de espera por defecto de \watch (Daniel Gustafsson) §

E.5.3.7. Aplicaciones del Servidor #

  • Cambia initdb para habilitar las sumas de comprobación (checksums) por defecto (Greg Sabino Mullane) § §

    La nueva opción de initdb --no-data-checksums desactiva las sumas de comprobación.

  • Añade la opción de initdb --no-sync-data-files para evitar la sincronización de archivos de montículo/índice (heap/index) (Nathan Bossart) §

    La opción de initdb --no-sync sigue estando disponible para evitar la sincronización de cualquier archivo.

  • Añade la opción de vacuumdb --missing-stats-only para calcular solo las estadísticas faltantes del optimizador (Corey Huinker, Nathan Bossart) § §

    Esta opción solo la pueden ejecutar los superusuarios y solo se puede usar con las opciones --analyze-only y --analyze-in-stages.

  • Añade la opción de pg_combinebackup -k/--link para habilitar enlaces duros (hard linking) (Israel Barth Rubio, Robert Haas) §

    Solo algunos archivos se pueden enlazar de forma dura. Esto no debe usarse si los respaldos se utilizarán de manera independiente.

  • Permite a pg_verifybackup verificar respaldos en formato tar (Amul Sul) §

  • Si la opción --source-server de pg_rewind especifica un nombre de base de datos, lo utiliza en la salida de --write-recovery-conf (Masahiko Sawada) §

  • Añade la opción de pg_resetwal --char-signedness para cambiar el signo por defecto de char (Masahiko Sawada) §

  • Añade la opción de pg_dump --statistics (Jeff Davis) § §

  • Añade la opción --sequence-data a pg_dump y pg_dumpall para volcar los datos de secuencias que normalmente se excluirían (Nathan Bossart) § §

  • Añade las opciones --statistics-only, --no-statistics, --no-data y --no-schema a pg_dump, pg_dumpall y pg_restore (Corey Huinker, Jeff Davis) §

  • Añade la opción --no-policies para desactivar el procesamiento de políticas de seguridad a nivel de fila (row level security) en pg_dump, pg_dumpall y pg_restore (Nikolay Samokhvalov) §

    Esto es útil para migrar a sistemas con políticas diferentes.

E.5.3.7.2. pg_upgrade #
  • Permite a pg_upgrade preservar las estadísticas del optimizador (Corey Huinker, Jeff Davis, Nathan Bossart) § § § §

    Las estadísticas extendidas no se preservan. También añade la opción --no-statistics a pg_upgrade para desactivar la preservación de estadísticas.

  • Añade la opción de pg_upgrade --swap para intercambiar (swap) directorios en lugar de copiar, clonar o enlazar archivos (Nathan Bossart) §

    Este modo es potencialmente el más rápido.

  • Añade la opción de pg_upgrade --set-char-signedness para configurar el signo por defecto de char del nuevo clúster (Masahiko Sawada) § §

    Esto permite manejar los casos en que el signo de la CPU por defecto de un clúster anterior a PostgreSQL 18 no coincide con el del nuevo clúster.

E.5.3.7.3. Aplicaciones de Replicación Lógica #
  • Añade la opción --all a pg_createsubscriber para crear réplicas lógicas para todas las bases de datos (Shubham Khanna) §

  • Añade la opción --clean a pg_createsubscriber para eliminar publicaciones (Shubham Khanna) § §

  • Añade la opción --enable-two-phase a pg_createsubscriber para habilitar transacciones preparadas (Shubham Khanna) §

  • Añade la opción --enable-failover a pg_recvlogical para especificar slots de failover (Hayato Kuroda) §

    También añade la opción --enable-two-phase como un sinónimo de --two-phase y desaconseja esta última.

  • Permite que --drop-slot de pg_recvlogical funcione sin --dbname (Hayato Kuroda) §

E.5.3.8. Código Fuente #

  • Separa la carga y la ejecución de los puntos de inyección (injection points) (Michael Paquier, Heikki Linnakangas) § §

    Los puntos de inyección ahora se pueden crear, pero no ejecutar, a través de INJECTION_POINT_LOAD(), y dichos puntos de inyección se pueden ejecutar a través de INJECTION_POINT_CACHED().

  • Soporta argumentos en tiempo de ejecución en los puntos de inyección (Michael Paquier) §

  • Permite código de prueba de puntos de inyección en línea con IS_INJECTION_POINT_ATTACHED() (Heikki Linnakangas) §

  • Mejora el rendimiento del procesamiento de cadenas JSON largas mediante el uso de SIMD (Single Instruction Multiple Data) (David Rowley) §

  • Acelera los cálculos de CRC32C utilizando instrucciones AVX-512 de x86 (Raghuveer Devulapalli, Paul Amonson) §

  • Añade intrínsecas de CPU ARM Neon y SVE para popcount (conteo de bits enteros) (Chiranmoy Bhattacharya, Devanga Susmitha, Rama Malladi) § §

  • Mejora la velocidad de la multiplicación y división numérica (Joel Jacobson, Dean Rasheed) § § § §

  • Añade la opción de configure --with-libnuma para habilitar la compatibilidad con NUMA (Jakub Wartak, Bertrand Drouvot) § § §

    La función pg_numa_available() informa sobre la compatibilidad con NUMA, y las vistas del sistema pg_shmem_allocations_numa y pg_buffercache_numa informan sobre la distribución de memoria compartida en los nodos NUMA.

  • Añade la tabla TOAST a pg_index para permitir índices de expresiones muy grandes (Nathan Bossart) §

  • Elimina la columna pg_attribute.attcacheoff (David Rowley) §

  • Añade la columna pg_class.relallfrozen (Melanie Plageman) §

  • Añade amgettreeheight, amconsistentequality y amconsistentordering al access method API de índices (Mark Dilger) § §

  • Add GiST support function stratnum() (Paul A. Jungwirth) §

  • Record the default CPU signedness of char in pg_controldata (Masahiko Sawada) §

  • Añade soporte para la "Limited API" de Python en PL/Python (Peter Eisentraut) § §

    Esto ayuda a prevenir problemas causados por discrepancias de versión de Python 3.x.

  • Cambia la versión mínima de Python soportada a la 3.6.8 (Jacob Champion) §

  • Elimina la compatibilidad con versiones de OpenSSL anteriores a la 1.1.1 (Daniel Gustafsson) § §

  • Si LLVM está habilitado, requiere la versión 14 o posterior (Thomas Munro) §

  • Añade la macro PG_MODULE_MAGIC_EXT para permitir que las extensiones reporten su nombre y versión (Andrei Lepikhov) §

    Esta información se puede acceder a través de la nueva función pg_get_loaded_modules().

  • Documenta que SPI_connect()/SPI_connect_ext() siempre devuelve éxito (SPI_OK_CONNECT) (Stepan Neretin) §

    Los errores siempre se reportan a través de ereport().

  • Añade una sección de documentación sobre la compatibilidad de API y ABI (David Wheeler, Peter Eisentraut) §

  • Elimina la designación experimental de las compilaciones de Meson en Windows (Aleksander Alekseev) §

  • Elimina las opciones de configure --disable-spinlocks y --disable-atomics (Thomas Munro) § §

    Ahora se requieren operaciones atómicas de 32 bits.

  • Elimina el soporte para la arquitectura HPPA/PA-RISC (Tom Lane) §

E.5.3.9. Módulos Adicionales #

  • Añade la extensión pg_logicalinspect para inspeccionar instantáneas lógicas (logical snapshots) (Bertrand Drouvot) §

  • Añade la extensión pg_overexplain que agrega detalles de depuración a la salida de EXPLAIN (Robert Haas) §

  • Añade columnas de salida a postgres_fdw_get_connections() (Hayato Kuroda, Sagar Dilip Shedge) § § § §

    La nueva columna de salida used_in_xact indica si el conector de datos extranjeros (foreign data wrapper) está siendo utilizado por una transacción actual, closed indica si está cerrado, user_name indica el nombre de usuario y remote_backend_pid indica el identificador de proceso del backend remoto.

  • Permite que la autenticación SCRAM del cliente se pase a los servidores de postgres_fdw (Matheus Alcantara, Peter Eisentraut) §

    Esto evita almacenar información de autenticación de postgres_fdw en la base de datos, y se habilita con la opción de conexión de postgres_fdw use_scram_passthrough. libpq utiliza los nuevos parámetros de conexión scram_client_key y scram_server_key.

  • Permite que la autenticación SCRAM del cliente se pase a los servidores de dblink (Matheus Alcantara) §

  • Añade las opciones on_error y log_verbosity a file_fdw (Atsushi Torikoshi) §

    Estas controlan cómo maneja e informa file_fdw sobre las filas de archivos inválidas.

  • Añade reject_limit para controlar el número de filas inválidas que file_fdw puede ignorar (Atsushi Torikoshi) §

    Esto está activo cuando ON_ERROR = 'ignore'.

  • Añade la variable configurable min_password_length a passwordcheck (Emanuele Musella, Maurizio Boriani) §

    Esto controla la longitud mínima de la contraseña.

  • Hace que pgbench informe sobre el número de transacciones fallidas, reintentadas u omitidas en los reportes por script (Yugo Nagata) §

  • Añade la variable de servidor de isn weak para controlar la aceptación de dígitos de control inválidos (Viktor Holmberg) §

    Esto antes estaba controlado únicamente por la función isn_weak().

  • Permite ordenar valores para acelerar las construcciones de índices btree_gist (Bernd Helmle, Andrey Borodin) §

  • Añade la función de comprobación de amcheck gin_index_check() para verificar índices GIN (Grigory Kryachko, Heikki Linnakangas, Andrey Borodin) §

  • Añade las funciones pg_buffercache_evict_relation() y pg_buffercache_evict_all() para desalojar los buffers compartidos no fijados (unpinned shared buffers) (Nazir Bilal Yavuz) §

    La función existente pg_buffercache_evict() ahora devuelve el estado de vaciado del buffer (buffer flush status).

  • Permite que las extensiones instalen opciones personalizadas de EXPLAIN (Robert Haas, Sami Imseih) § § §

  • Permite que las extensiones utilicen la API de estadísticas acumulativas del servidor (Michael Paquier) § §

E.5.3.9.1. pg_stat_statements #
  • Permite que las consultas de CREATE TABLE AS y DECLARE sean rastreadas por pg_stat_statements (Anthonin Bonnefoy) §

    Ahora también se les asignan identificadores de consulta (query IDs).

  • Permite parametrizar los valores de SET en pg_stat_statements (Greg Sabino Mullane, Michael Paquier) §

    Esto reduce la sobrecarga (bloat) causada por las sentencias SET con constantes diferentes.

  • Añade columnas a pg_stat_statements para reportar la actividad paralela (Guillaume Lelarge) §

    Las nuevas columnas son parallel_workers_to_launch y parallel_workers_launched.

  • Añade pg_stat_statements.wal_buffers_full para reportar buffers de WAL llenos (Bertrand Drouvot) §

E.5.3.9.2. pgcrypto #
  • Añade los algoritmos de pgcrypto sha256crypt y sha512crypt (Bernd Helmle) §

  • Añade el modo CFB a la encriptación y desencriptación de pgcrypto (Umar Hayat) §

  • Añade la función fips_mode() para reportar el modo FIPS del servidor (Daniel Gustafsson) §

  • Añade la variable de servidor de pgcrypto builtin_crypto_enabled para permitir desactivar las funciones criptográficas incorporadas que no son del modo FIPS (Daniel Gustafsson, Joe Conway) §

    Esto es útil para garantizar el comportamiento del modo FIPS.

E.5.4. Agradecimientos #

Las siguientes personas (en orden alfabético) han contribuido a esta versión como autores de parches, committers, revisores, probadores o notificadores de fallos.

Abhishek Chanda
Adam Guo
Adam Rauch
Aidar Imamov
Ajin Cherian
Alastair Turner
Alec Cozens
Aleksander Alekseev
Alena Rybakina
Alex Friedman
Alex Richman
Alexander Alehin
Alexander Borisov
Alexander Korotkov
Alexander Kozhemyakin
Alexander Kukushkin
Alexander Kuzmenkov
Alexander Kuznetsov
Alexander Lakhin
Alexander Pyhalov
Alexandra Wang
Alexey Dvoichenkov
Alexey Makhmutov
Alexey Shishkin
Ali Akbar
Álvaro Herrera
Álvaro Mongil
Amit Kapila
Amit Langote
Amul Sul
Andreas Karlsson
Andreas Scherbaum
Andreas Ulbrich
Andrei Lepikhov
Andres Freund
Andrew
Andrew Bille
Andrew Dunstan
Andrew Jackson
Andrew Kane
Andrew Watkins
Andrey Borodin
Andrey Chudnovsky
Andrey Rachitskiy
Andrey Rudometov
Andy Alsup
Andy Fan
Anthonin Bonnefoy
Anthony Hsu
Anthony Leung
Anton Melnikov
Anton Voloshin
Antonin Houska
Antti Lampinen
Arseniy Mukhin
Artur Zakirov
Arun Thirupathi
Ashutosh Bapat
Asphator
Atsushi Torikoshi
Avi Weinberg
Aya Iwata
Ayush Tiwari
Ayush Vatsa
Bastien Roucariès
Ben Peachey Higdon
Benoit Lobréau
Bernd Helmle
Bernd Reiß
Bernhard Wiedemann
Bertrand Drouvot
Bertrand Mamasam
Bharath Rupireddy
Bogdan Grigorenko
Boyu Yang
Braulio Fdo Gonzalez
Bruce Momjian
Bykov Ivan
Cameron Vogt
Cary Huang
Cédric Villemain
Cees van Zeeland
ChangAo Chen
Chao Li
Chapman Flack
Charles Samborski
Chengwen Wu
Chengxi Sun
Chiranmoy Bhattacharya
Chris Gooch
Christian Charukiewicz
Christoph Berg
Christophe Courtois
Christopher Inokuchi
Clemens Ruck
Corey Huinker
Craig Milhiser
Crisp Lee
Dagfinn Ilmari Mannsåker
Daniel Elishakov
Daniel Gustafsson
Daniel Vérité
Daniel Westermann
Daniele Varrazzo
Daniil Davydov
Daria Shanina
Dave Cramer
Dave Page
David Benjamin
David Christensen
David Fiedler
David G. Johnston
David Geier
David Rowley
David Steele
David Wheeler
David Zhang
Davinder Singh
Dean Rasheed
Devanga Susmitha
Devrim Gündüz
Dian Fay
Dilip Kumar
Dimitrios Apostolou
Dipesh Dhameliya
Dmitrii Bondar
Dmitry Dolgov
Dmitry Koval
Dmitry Kovalenko
Dmitry Yurichev
Dominique Devienne
Donghang Lin
Dorjpalam Batbaatar
Drew Callahan
Duncan Sands
Dwayne Towell
Dzmitry Jachnik
Egor Chindyaskin
Egor Rogov
Emanuel Ionescu
Emanuele Musella
Emre Hasegeli
Eric Cyr
Erica Zhang
Erik Nordström
Erik Rijkers
Erik Wienhold
Erki Eessaar
Ethan Mertz
Etienne LAFARGE
Etsuro Fujita
Euler Taveira
Evan Si
Evgeniy Gorbanev
Fabio R. Sluzala
Fabrízio de Royes Mello
Feike Steenbergen
Feliphe Pozzer
Felix
Fire Emerald
Florents Tselai
Francesco Degrassi
Frank Streitzig
Frédéric Yhuel
Fredrik Widlert
Gabriele Bartolini
Gavin Panella
Geoff Winkless
George MacKerron
Gilles Darold
Grant Gryczan
Greg Burd
Greg Sabino Mullane
Greg Stark
Grigory Kryachko
Guillaume Lelarge
Gunnar Morling
Gunnar Wagner
Gurjeet Singh
Haifang Wang
Hajime Matsunaga
Hamid Akhtar
Hannu Krosing
Hari Krishna Sunder
Haruka Takatsuka
Hayato Kuroda
Heikki Linnakangas
Hironobu Suzuki
Holger Jakobs
Hubert Lubaczewski
Hugo Dubois
Hugo Zhang
Hunaid Sohail
Hywel Carver
Ian Barwick
Ibrar Ahmed
Igor Gnatyuk
Igor Korot
Ilia Evdokimov
Ilya Gladyshev
Ilyasov Ian
Imran Zaheer
Isaac Morland
Israel Barth Rubio
Ivan Kush
Jacob Brazeal
Jacob Champion
Jaime Casanova
Jakob Egger
Jakub Wartak
James Coleman
James Hunter
Jan Behrens
Japin Li
Jason Smith
Jayesh Dehankar
Jeevan Chalke
Jeff Davis
Jehan-Guillaume de Rorthais
Jelte Fennema-Nio
Jian He
Jianghua Yang
Jiao Shuntian
Jim Jones
Jim Nasby
Jingtang Zhang
Jingzhou Fu
Joe Conway
Joel Jacobson
John Hutchins
John Naylor
Jonathan Katz
Jorge Solórzano
José Villanova
Josef Šimánek
Joseph Koshakow
Julien Rouhaud
Junwang Zhao
Justin Pryzby
Kaido Vaikla
Kaimeh
Karina Litskevich
Karthik S
Kartyshov Ivan
Kashif Zeeshan
Keisuke Kuroda
Kevin Hale Boyes
Kevin K Biju
Kirill Reshke
Kirill Zdornyy
Koen De Groote
Koichi Suzuki
Koki Nakamura
Konstantin Knizhnik
Kouhei Sutou
Kuntal Ghosh
Kyotaro Horiguchi
Lakshmi Narayana Velayudam
Lars Kanis
Laurence Parry
Laurenz Albe
Lele Gaifax
Li Yong
Lilian Ontowhee
Lingbin Meng
Luboslav Špilák
Luca Vallisa
Lukas Fittl
Maciek Sakrejda
Magnus Hagander
Mahendra Singh Thalor
Mahendrakar Srinivasarao
Maiquel Grassi
Maksim Korotkov
Maksim Melnikov
Man Zeng
Marat Buharov
Marc Balmer
Marco Nenciarini
Marcos Pegoraro
Marina Polyakova
Mark Callaghan
Mark Dilger
Marlene Brandstaetter
Marlene Reiterer
Martin Rakhmanov
Masahiko Sawada
Masahiro Ikeda
Masao Fujii
Mason Mackaman
Mat Arye
Matheus Alcantara
Mats Kindahl
Matthew Gabeler-Lee
Matthew Kim
Matthew Sterrett
Matthew Woodcraft
Matthias van de Meent
Matthieu Denais
Maurizio Boriani
Max Johnson
Max Madden
Maxim Boguk
Maxim Orlov
Maximilian Chrzan
Melanie Plageman
Melih Mutlu
Mert Alev
Michael Banck
Michael Bondarenko
Michael Christofides
Michael Guissine
Michael Harris
Michaël Paquier
Michail Nikolaev
Michal Kleczek
Michel Pelletier
Mikaël Gourlaouen
Mikhail Gribkov
Mikhail Kot
Milosz Chmura
Muralikrishna Bandaru
Murat Efendioglu
Mutaamba Maasha
Naeem Akhter
Nat Makarevitch
Nathan Bossart
Navneet Kumar
Nazir Bilal Yavuz
Neil Conway
Niccolò Fei
Nick Davies
Nicolas Maus
Niek Brasa
Nikhil Raj
Nikita
Nikita Kalinin
Nikita Malakhov
Nikolay Samokhvalov
Nikolay Shaplov
Nisha Moond
Nitin Jadhav
Nitin Motiani
Noah Misch
Noboru Saito
Noriyoshi Shinoda
Ole Peder Brandtzæg
Oleg Sibiryakov
Oleg Tselebrovskiy
Olleg Samoylov
Onder Kalaci
Ondrej Navratil
Patrick Stählin
Paul Amonson
Paul Jungwirth
Paul Ramsey
Pavel Borisov
Pavel Luzanov
Pavel Nekrasov
Pavel Stehule
Peter Eisentraut
Peter Geoghegan
Peter Mittere
Peter Smith
Phil Eaton
Philipp Salvisberg
Philippe Beaudoin
Pierre Giraud
Pixian Shi
Polina Bungina
Przemyslaw Sztoch
Quynh Tran
Rafia Sabih
Raghuveer Devulapalli
Rahila Syed
Rama Malladi
Ran Benita
Ranier Vilela
Renan Alves Fonseca
Richard Guo
Richard Neill
Rintaro Ikeda
Robert Haas
Robert Treat
Robins Tharakan
Roman Zharkov
Ronald Cruz
Ronan Dunklau
Rui Zhao
Rushabh Lathia
Rustam Allakov
Ryo Kanbayashi
Ryohei Takahashi
RyotaK
Sagar Dilip Shedge
Salvatore Dipietro
Sam Gabrielsson
Sam James
Sameer Kumar
Sami Imseih
Samuel Thibault
Satyanarayana Narlapuram
Sebastian Skalacki
Senglee Choi
Sergei Kornilov
Sergey Belyashov
Sergey Dudoladov
Sergey Prokhorenko
Sergey Sargsyan
Sergey Soloviev
Sergey Tatarintsev
Shaik Mohammad Mujeeb
Shawn McCoy
Shenhao Wang
Shihao Zhong
Shinya Kato
Shlok Kyal
Shubham Khanna
Shveta Malik
Simon Riggs
Smolkin Grigory
Sofia Kopikova
Song Hongyu
Song Jinzhou
Soumyadeep Chakraborty
Sravan Kumar
Srinath Reddy
Stan Hu
Stepan Neretin
Stephen Fewer
Stephen Frost
Steve Chavez
Steven Niu
Suraj Kharage
Sven Klemm
Takamichi Osumi
Takeshi Ideriha
Tatsuo Ishii
Ted Yu
Tels
Tender Wang
Teodor Sigaev
Thom Brown
Thomas Baehler
Thomas Krennwallner
Thomas Munro
Tim Wood
Timur Magomedov
Tobias Wendorff
Todd Cook
Tofig Aliev
Tom Lane
Tomas Vondra
Tomasz Rybak
Tomasz Szypowski
Torsten Foertsch
Toshi Harada
Tristan Partin
Triveni N
Umar Hayat
Vallimaharajan G
Vasya Boytsov
Victor Yegorov
Vignesh C
Viktor Holmberg
Vinícius Abrahão
Vinod Sridharan
Virender Singla
Vitaly Davydov
Vladlen Popolitov
Vladyslav Nebozhyn
Walid Ibrahim
Webbo Han
Wenhui Qiu
Will Mortensen
Will Storey
Wolfgang Walther
Xin Zhang
Xing Guo
Xuneng Zhou
Yan Chengpen
Yang Lei
Yaroslav Saburov
Yaroslav Syrytsia
Yasir Hussain
Yasuo Honda
Yogesh Sharma
Yonghao Lee
Yoran Heling
Yu Liang
Yugo Nagata
Yuhang Qiu
Yuki Seino
Yura Sokolov
Yurii Rashkovskii
Yushi Ogiwara
Yusuke Sugie
Yuta Katsuragi
Yuto Sasaki
Yuuki Fujii
Yuya Watari
Zane Duffield
Zeyuan Hu
Zhang Mingli
Zhihong Yu
Zhijie Hou
Zsolt Parragi