Version 6.3

Hay muchas prestacines nuevas y mejoras en esta version. He aqui un breve, incompleto sumario:

Nota

Bruce Momjian escribio las siguientes notas para presentar la nueva version.

Hay algunas cosas generales en la 6.3 que quiero mencionar. Son solo los grandes items que no pueden ser descritos en una frase. Se aun necesita una revision de la lista de cambios detallado.

Primero, ahora tenemos subconsultas. Ahora que las tenemos, quiero decir que sin subconsultas, SQL es un lenguaje muy limitado. Las subconsultas son una prestacion mayor, y deberia revisar su codigo en los lugares en los que una subconsulta le provea de una mejor solucion para su sconsultas. Creo que encontrara que hay mas usos para las subconsultas de los que usted cree. Vadim nos ha puesto en el gran mapa de SQL con las subconsultas, y con ellas funcionales totalmente. La unica cosa que no puede hacer con las subconsultas en utilizarlas en lista a obtener(target list).

Segundo, la 6.3 utiliza conexion de dominio unix(unix domain sockets) en vez TCP/IP por defecto. Para permitir conexiones desde otras maquinas, tiene que utilizar la nueva opcion postmaster -i, y por supuesto editar pg_hda.conf. Tambien por esta razon el formato de pg_hba.conf ha cambiado.

Tercero, loas campos char() permitiran ahora un acceso mas rapido que varchar() o que campos de texto. Especificamente, el texto y el varchar() tienen una penalizacin para el acceso a cualquier columna despues de la primera columna de este tipo. char() utilizo tambien este acceso penalizado, pero ya no existe por mas tiempo. Esto puede sugerir que redisene algunas de sus tablas, especificamente si tienes columnas de caracteres cortos que haya definido como varchar () o texto. Este y otros cambios hacen la 6.3 aun mas rapida que versiones precedentes.

Tenemos ahora contrasenas definibles independientemente de cualquier fichero Unix. Hay nuevos comandos SQL USER. Vease la pagina de manual pg_hba.conf para mas informacion. Hay una tabla nueva, pg_shadow, que es utilizada para almacenar informacion de los usuario y las constrasenas de los usuarios, y que es, por defecto solo consultable (SELECT-able) por el super usuario de postgres. pg_user es ahora una vista de pg_shadow, y es consultable (SELECT-able) por PUBLIC. Debe seguir utilizando pg_user en sus aplicaciones sin cambios.

Las tablas creadas por usuarios ahora ya no tienen permisos de consulta (SELECT) para PUBLIC por defecto. Esto se hizo porque los estandares ANSI lo requieren. Puede por supuesto conceder (GRANT) cualquier permiso que quiera despues de que la tabla sea creada. Las tablas del sistema continuan siendo consultables (SELECT-able) por PUBLIC.

Tenemos tambien verdaderos codigos de deteccion de bloqueos (deadlock). No mas sesenta segundos de tiempo de expiracion (timeouts). Y el nuevo codigo implementa un FIFO mejor, asi que deberia haber un menor agotamiento de recursos durante un uso fuerte.

Muchas quejas han sido hechas acerca de la inadecuada documentacion en versiones anteriores. Thomas ha puesto mucho esfuerzo en muchos manuales nuevos para esta version. Compruebe en directorio /doc.

Por razones de rendimiento, time travel se elimina, pero puede ser implementado utilizando disparadores (triggers) (vease pgsql/contrib/spi/README). Por favor, compruebe el nuevo comando \d para tipos, operadores, etc. También las vistas tienen ahora sus propios permisos, no basados en las tablas subyacentes, asi que los permisos para ellas deben ser configurados separadamente. Compruebe /pgsql/interfaces para ver algunas maneras de dialogar con Postgres.

Esta es la primera version que realmente requiere una explicacion para los usuarios existentes. De muchas maneras, fue necesario esto porque la nueva version elimina muchas limitaciones, y las soluciones provisionales (work-around) que eran la gente estaba utilizando ya no se necesitan.

Migracion a v6.3

Se requiere la utilizacion de un pg_dump o de un pg_dumpall para todos aquellos que deseen migrar datos de cualquier version anterior de Postgres.

Lista Detallada de Cambios

Correccion de errores
---------
Correccion de cursores binarios rotos por implementacion de MOVE (Vadim)
Correccion para fallos de la libreria tcl(Jan)
Correccion para el manejo de matrizes (arrays), por Gerhard Hintermayer
Correccion de error en acl, y se elimina pqtrace duplicado (Bruce)
Correccion para psql \e con fichero vacio (Bruce)
Correccion para texcat en campos varchar() (Bruce)
Correccion para DBT Sendproc (Zeugswetter Andres)
Correccion para problema de sintaxis en vacuum analyze(Bruce)
Correccion para indentificadores internacionales(Tatsuo)
Correccion para agregaciones en tablas heredadas (Bruce)
Correccion fr substr() para datos fuera de rango
Correccion para select 1=1 o 2=2, select 1=1 and 2=2, y selec sum (2+) (Bruce)
Correccion para mostrar estado de del resultado cuando no hay tty de salida. La opcion -q
          aun no lo devuelve (Bruce)
Correccion para count(*), argumentos con vistas y tablas multiples y sum(3)(Bruce)
Correccion para cluster (Bruce)
Correccion para PQtrace start/stop muchas veces (Bruce)
Correccion para una variedad de problemas como bloqueos más recientes en espera
        que tienen bloqueo antes que procesos en espera mas viejos, y teniendo gente bloqueada
        en lectura no se comparte bloqueo si proceso que escribe esta esperando para cojer el                 bloqueo, y los procesos escritores que esperan no obtienen prioridad sobre los
        procesos lectores que esperan(Bruce)
Correccion para abortos en psql cuando se ejecutan consultas desde ficheros externos (James)
Correccion para el problema de multiples ordenaciones por columnas, cuando la primera
          tiene valores NULL (Jeroen)
Utilización correcto soporte de funciones de la tabla hash para float8 e int4(Thomas)
Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
Se cambia la precedencia de los operadores booleanos para emparejarlos con el comportamiento esperado(Thomas)
Se genera elog(ERORR) en enteros que sobre-crecen (Bruce)
Se permite argumentos multiples en las funciones de clausulas de constraint(Thomas)
Se comprueba los literales booleanos de entrada para 'true', 'false','yes','no','1','0'
        y se envian a elog(ERROR) si no se reconocen(Thomas)
Correccion para objetos de gran tamano importante
Correccion para GROUP BY mostrando duplicados(Vadim)
Correccion para exploracion de indice en MergeJion(Vadim)

Mejoras
------------
Sub consultas con las palabras claves EXISTS, IN, ALL y ANY (Vadim, Bruce, Thomas) 
Nuevo Manual del Usuario(Thomas, others)
Aceleracion por alineamiento de algunas funciones frecuentemente llamadas
Deteccion real de bloqueos(deadlock), no mas expiraciones por tiempo(timeout)(Bruce)
se anaden las "constantes" SQL92 CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
        CURRENT_USER(Thomas)
Se modifica la sintaxis para ser compatibles con SQL-92(Thomas)
Se implementa las clausulas SQL PRIMARY KEY y UNIQUE utilizando indices(Thomas)
Se reconoce la sintaxis SQL92 para CLAVES FORANEAS (FOREIGN KEYS). Se pone una
       aviso (notice) en el elog (Thomas)
Se permite la clausula de restriccion NOT NULL UNIQUE (cada una de ellas
       permitidas separadamente antes)(Thomas) 
Se permite el estilo de arrojar no constantes (::") Postgres (Thomas)
Se anade soporte para las constantes boleanas de SQL3 TRUE y FALSE (Thomas)
Se soporta la sintaxis SQL92 para IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
Se permiten cadenas mas cortas para literales booleanos(por ej. "t", "tr", "tru")(Thomas)
Se permiten identificadores de delimitacion SQL92(Thomas)
Se implementa decodificacion para cadenas binarias y hexadecimales SQL92 (b'10' and x'1F')(Thomas)
Support SQL92 syntax for type coercion of literal strings
        (e.g. "DATETIME 'now'")(Thomas)
Se añade conversiones para tipos int2, int4, y OID a y desde texto (Thomas)
Se utilizan bloqueos compartidos cuando se crean indices (Vadim)
La memoria libre reservada para una consulta de usuario dentro de un bloque de transaccion
        despues de esa consulta sea hecha, se habia desactivado <= 6.2.1(Vadim)
Nueva declaracion SQL, CREATE PROCEDURAL LANGUAJE (Jan)
Nuevo interfaz para el motor de base de datos en el servidor (backend)Lenguaje Procedural (PL)
      Postgres(Jan)
Se renombra la opcion pg_dump -H a -h(Bruce)
Se anade soporte Java para contrasenas, fechas euopeas (Peter)
Se utilizan indices para operaciones LIKE y ~, !~ (Bruce)
Se anade funciones hash para fecha (datetime) y marca de tiempo (timespan) (Thomas)
Se elimina Time Travel(Vadim, Bruce)
Se anade paginacion para \d y \z, y se corrige \i (Bruce)
Se anade soporte para conexiones de dominio Unix (Unix domain socket) al motor de base de datos y a 
       la libreria del frontal(Goran)
Se implementa CREATE DATABASE/WITH LOCATION y la utilidad initlocation(Thomas)
Se permiten mas palabras reservadas SQL92 y/o Postgres como identificadores de 
       columnas(Thomas)
Aumenta el soporte para SQL92 SET TIME ZONE...(Thomas)
SET/SHOW/RESET TIME ZONE utilizan la variable de entorno del motor de base de datos (backend) TZ(Thomas)
Se implementa SET keyword = DEFAULT y SET TIME ZONE DEFAULT(Thomas)
Se habilita SET TIME ZONE utilizando la variable de entorno (Thomas)
Se anade la variable de entorno PGDATESTYLE a la inicializacion del frontal y del motor de base de 
       datos(backend)(Thomas)
Se anaden las variables de entorno PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO a la libreria de 
        inicializacion del frontal(Thomas)
Se configura automaticamente la zona horario en los test de regresion con "setenv PGTZ PST8PDT"(Thomas)
Se anade la tabla pg_descripcion para informacion sobre tablas, columnas, operadores, tipos y 
        agregaciones (Bruce)
Se incremente el limite de caracteres de 16 a 32 en los nombres de tablas/indices de sistema(Bruce)
Se renombran los indices del sistema(Bruce)
Se anade la opcion 'GERMAN' para SET DATESTYLE(Thomas)
Se define un "ISO-style" formato de salida de fecha extendida con los campos "hh:mm:ss"(Thomas)
Se permite valores fraccionales para tiempos delta (por ej. '2.5 dias')(Thomas)
Se valida la entrada de numeros mas cuidadosamente para tiempos delta(Thomas)
Se implementa el dia del ano como una entrada posible para date_part()(Thomas)
Se definen las funciones timespan_finite() y text_timespan() (Thomas)
Se elimina materia archivada(Bruce)
Se habilita una base de datos de autentificacion pg_password que esta separada del fichero de contrasenas
        del sistema(Todd)
Se vuelcan los permisos ACLs, GRANT, REVOKE(Matt)
Se definen funciones de longitud de cadena text, varchar y bpchar(Thomas)
Correccion para el manejo de herencia en consultas, y computos de coste(Bruce)
Se implementa CREATE TABLE/AS SELECT (una alternativa a SELECT/INTO)(Thomas)
Se permite NOT, IS NULL, IS NOT NULL en restrccines(Thomas)
Se implementa UNIONes para SELECT(Bruce)
Se anade UNION, GROUP, DISTINCT a INSERT(Bruce)
varchar() almacena solo los bytes necesarios en disco(Bruce)
Correccion para BLOBs(Peter)
Mega-Parche para JDBC... vease README_6.3 para lista de cambios(Peter)
Se elimina "opcion" no utilizada de PQconnectdb()
Nuevo comando LOCK y pagina de manual describiendo bloqueos(deadlocks)(Bruce)
Se anaden nuevos comandos psql \da, \dd, \df, \do, \dS, and \dT(Bruce)
Mejora de psql \z para mostrar secuencias(Bruce)
Se muestran NOT NULL y DEFAULT en tabla psql \d (Bruce)
Nuevo fichero de arranque de psql .psqlrc(Andrew)
Se modifican el script de muestra del arranque en contrib/linux para mostrar syslog(Thomas)
Nuevos tipos para direcciones IP y MAC en contrib/ip_and_mac(TomH)
Conversiones de tiempo en sistema Unis con tipos date/time en contrib/unixdate(Thomas)
Actualizacion del material contrib(Massimo)
Se anade soporte para conexion Unix (Unix socket) para DBD::Pg(Goran)
Nueva interfaz para python (PyGreSQL 2.0)(D'Arcy)
El nuevo protocolo para frontal/motor de base de datos(backend) tiene un numero version, byte de orden de 
         red (Phil)
Caracteristicas de seguridad en pg_hba.conf mejorada y documentada, muchas depuraciones(Phil)
CHAR() tiene ahora acceso mas rapido que VARCHAR() o TEXT
prepocesador SQL embebido en ecpg
Se reduce la carga de columnas del sistemas(Vadim)
Se elimina la tabla pg_time(Vadim)
Se anade el atributo pg_type para indentificar tipos que necesitan longitud (bpchar, varchar)
Se anade informe de final de linea fuera de termino cuando el comando COPY falla
Se permiten que los permisos en VIEW se configuren separadamente de las tabla subyacentes.
        Por seguridad, se utiliza como apropiado GRANT/REVOKE en vistas(Jan)
Las tablas ahora no tienen por omision GRANT SELECT TO PUBLIC. Debes conceder explicitamente esos permisos.
Limpieza de ejemplos en el tutorial(Darren)


Cambios en el Arbol Fuente
-------------------
Se anaden nuevas herramientas de desarrollo html, y caracteres flotantes en /tools/backend
Correccion para compilacion en SCO
Porte a computador Stratus, Robert Gillies
Anadido soporte para shlib para BSD44_derived & i386_solaris
Se hace la configuracion de Make mas automatizada(Brook)
Se anade script para comprobar los resultados del test de regresion
Se separan las funciones de verificacion sintactica en ficheros mas pequenos, agrupados juntos(Bruce)
Se renombran heap_create a heap_create_and_catalog, rename heap_creatr
        a heap_create()(Bruce)
Parche para bloqueos en Sparc/Linux (TomS)
Se elimina PORTNAME y se reorganiza el material especifico de puertos(Marc)
Se anade fichero de optimizador README(Bruce)
Se elminan algunas recursiones en el optimizados y se limpia algo de codigo ahi(Bruce)
Correccion para bloqueo en NetBSD(Henry)
Correccion para el make libptcl(Tatsuo)
Parche para AIX(Darren)
Cambio IS TRUE, IS FALSE, ... a la expresiones utilizando "=" mas que a llamadas a funcion
        istrue() o isfalse() para permitir optimizacion(Thomas)
Varias correcciones relacionadas con NetBSD/Sparc(TomH)
Bloqueos para linux Alpha(Travis,Ryan)
Se cambian elog(ALARMAS)(WARM) a elog(ERROR)(Bruce)
FAQ para FreeBSD(Marc)
Bring in the PostODBC source tree as part of our standard distribution(Marc)
Un parche menor para HP/UX vs 9(Stan)
New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
Parches para Unixware(Billy)
Nuevo 'bloqueo' i386 para giro de bloqueo en asm(Billy)

Soporte para procesos en servidor (backends) multiplezados se elimina

Comienza un porte a OpenBSD
Comienza un porte a AUX
Comienza un porte a Cygnus
Se anaden funciones de cadena para la suite de regresion(Thomas)
Se expanden unos pocos nombres de funcion anteriormente truncados a 16 caracteres(Thomas)
Emilinada llamadas a malloc() no necesitadas y reemplazadas con palloc()(Bruce)