Version 6.1

Las pruebas de regresión se han adaptado y modificado extensamente para la versión v6.1 de Postgres.

Se han añadido tres nuevos tipos de datos (datetime, timespan, and circle) al conjunto nativo de tipos de Postgres. Puntos, cajas, rutas y polígonos tienen sus formatos de salida consistentes por encima de los tipos de datos. La salida polígono en misc.out sólo se ha revisado para hacer correcciones relativas a la salida de regresión original.

Postgres v6.1 introduce un nuevo optimizador alternativo que utiliza algoritmos geneticos. Estos algoritmos introducen un comportamiento aleatorio en la ordenación de los resultados de la consulta cuadno la consulta contiene múltiples calificadores o múltiples tablas (dando el optimizador una elección en el orden de evaluación). Se han modificado varias pruebas de regresión para ordenar explícitamente el resultado, y hacerlo así insensible a las elecciones del optimizador. Unas pocas pruebas de regresión corresponden a tipos de datos que son inherentemente desordenados (como puntos o intervalos de tiempo), y las pruebas que involucran estos tipos se fuerzan explicitamente con set geqo to 'off' y reset geqo.

La interpretación de los especificadores de vectores (los corchetes alrededor de valores atómicos) parece haber cambiado alguna vez tras las pruebas de regresión originales. Los ficheros actuales ./expected/*.out reflejan esta nueva interpretación, ¡que puede no ser correcta!

Las pruebas de regresión con float8 fallan al menos en algunas plataformas. Esto se debe a las diferencias en las implementaciones de pow() y exp() y a los mecanismos de señalización utilizados para las condiciones de sobrecarga y subcarga.

Los resultados "aleatorios" en la prueba aleatoria deberían probocar que la prueba "aleatoria" resultase "fallida", pueso que los test de regresión se evalúan con un simple diff. Sin embargo, la prueba "aleatoria" no parece producir resultados aleatorios en mi máquina de pruebas (Linux/gcc/i686).

Migración a v6.1

Esta migración requiere un volcado completo de la base de datos 6.0 y su restauración en la base de datos en 6.1.

Aquellos que quieran migrar desde versiones iniciales 1.* deberían primero actualizarse a 1.09, porque el formato de salida de COPY se mejoró en la versión 1.02.

Lista Detallada de Cambios

Corrección de errores
---------------------
comprobaciones en la longitud empaquetada en rutinas de la librería
parche de prioridad en el gestor de bloqueos
comprobaciones para sub/sobrecarga de float8 (Bruce)
correcciones en cruces de múltiples tablas (Vadim)
corrección de un aborto de SIGPIPE (Darren)
correcciones sobre objetos grandes (Sven)
se permite que los índices btree manipulen NULL,s (Vadim)
correcciones en timezone (D'Arcy)
select SUM(x) puede devolver NULL cuando no hay filas (Thomas)
se corrigen errores del optimizador interno y del ejecutor (Vadim)
se corrigen problemas cuando bucles internos en < o <= no tienen filas (Vadim)
se previene la re-inversión de cláusulas join de índices (Vadim)
corregida la clausula join para múltiples tablas (Vadim)
corregidos hash y hashjoin para vectores (Vadim)
corrección en btree para el tipo abstime (Vadim)
correcciones para objetos grandes (Raymond)
corregidos huecos en el buffer en índices hash (Vadim)
corregido rtree para el uso de barridos internos (Vadim)
correcciones esenciales para el uso de barridos internos, limpiezas (Vadim, Andrea)
se impide la colocación de buffers locales innecesarios (Vadim, Massimo)
corregidos huecos de buffers locales en abortos de transacciones (Vadim)
corregidos huecos de memoria del gestor de ficheros, limpiados (Vadim, Massimo)
corregidos huecos de memoria del gestor de almacenamiento (Vadim)
corregido que btree duplique la manipulación (Vadim)
corregida la reencarnación de tuplas borradas causada por vacuum (Vadim)
corregido SELECT varchar()/char() INTO TABLE hace campos de longitud cero (Bruce)
corregidas muchos huecos de memoria de psql, pg_dump y libpq utiliando Purify (Igor)


Mejoras
--------------
estadisticas de optimización de atributos (Bruce)
nuevo código de carga masivo btree mucho más rápido (Paul)
añadido BTREE UNIQUE para código de carga masiva (Vadim)
nuevo aspecto del código de depuración (Massimo)
cambios masivos en libpq++ (Leo)
el nuevo optimizador GEQO acelera la optimización en tablas multi-tabla (Martin)
nuevo mensaje de alarma para inserciones no únicas en claves únicas (Marc)
update x=-1, sin espacios, ahora es válido (Bruce)
se elimina la manipulación de identificadores sensibles a las mayusculas (Bruce, Thomas, Dan)
la depuración del servidor ahora imprime un árbol agradable (Darren)
nuevas funciones de caracteres de Oracle (Edmund)
nuevas funciones de palabra clave con texto plano (Dan)
se cambian a mensajes diferentes no tal clase y insuficientes privilegios (Dan)
nueva función ANSI timestamp (Dan)
nuevos tipos ANSI Time y Date (Thomas)
mueve grandes grupos de datos en el servidor (Martin)
índices btree multicolumna (Vadim)
nuevo comando SET var TO valor (Martin)
status de transacción de actualización en las lecturas (Dan)
nuevos ajustes locales para tipos de caracteres (Oleg)
nuevo generador de series de números SEQUENCE (Vadim)
ahora es posible GROUP BY una función (Vadim)
reorganizada la prueba de regresión (Thomas, Marc)
nuevos pesos de operaciones en el optimizador (Vadim)
nueva opción psql \z grant/permit (Marc)
nuevo tipo de datos MONEY (D'Arcy, Thomas)
incrementada la velocidad de comunicación por el socket tcp (Vadim)
nueva opción VACUUM para estadisticas de atributos, y para ciertas columnas (Vadim)
muchas potenciaciones de tipos geométricos (Thomas, Keith)
Pruebas de regresión adicionales (Thomas)
nuevas variables de estilo de datos (Thomas, Vadim, Martin)
más operadores de comparación para ordenar tipos (Thomas)
nuevas funciones de conversión (Thomas)
no más formato btree compacto (Thomas)
ser permite a pg_dumpall preservar la propiedad de las bases de datos (Bruce)
nuevas variables SET GEQO=# y R_PLANS (Vadim)
el viejo optimizador (!GEQO) puede utilizar planes del lado derecho (VADIM)
merjorado el control de tipos en el traductor de SQL (Bruce)
nuevos comandos SET, SHOW y RESET (Thomas, Vadim)
nueva opción USER \connect basededatos
nueva opción destroydb -i (Igor)
nuevos comandos de psql \dt y \di (Darren)
SELECT "\n" ahora genera nueva línea (A. Duursma)
nuevas funciones de conversión de la geometría desde el formato anterior (Thomas)

Cambios en el arbol fuente
--------------------------
nuevo guión de configuración (Marc)
añadida la opción de configuración de lectura de línea (Marc)
nuevos ficheros de plantillas especificas del Sistema Operativo (Marc)
ya no se necesita editar Makefile.global (Marc)
se reordenan los ficheros de include (Marc)
parche para nextstep (Gregor Hoffleit)
se elimina código específico de WIN32 (Bruce)
se elimina la opción -e de postmaster, se mantiene sólo la opción postgres -e (Bruce)
se mezcla el código de librerías duplicadas en clientes y servidores (Martin)
ahora trabaja con eBones, Kerberos internacional (Jun)
más soporte a librerías compartidas
c++ incluye limpieza de fichero (Bruce)
Aviso sobre flex erróneo (Bruce)
Correcciones en la portabilidad para DG-UX, Ultrix, Irix, AIX.