Cambios incompatibles: * BETA-0.3 ES INCOMPATIBLE CON BASES DE DATOS CREADAS CON VERSIONES PREVIAS (debido a cambios en el catálogo del sistema y a cambios en la estructura de los índices). * las dobles comillas (") se desprecian como un carácter de limitación para cadenas literales; necesitarás convertirlas a apostrofes ('). * el nombre de los agregados (como int4sum) se renombran de acuerdo con el SQL estándar (por ejemplo sum). * la sintaxis CHANGE ACL se reemplaza por la sintaxis GRANT/REVOKE. * los literales flotantes (como 3.14) son ahora del tipo float4 (en lugar del float8 de versiones anteriores); deberá realizar un transformado de tipos si su instalación depende de que siga siendo float8. ¡Si rechaza realizar el transformado de tipos, y asigna un literal flotante a un campo de tipo float8, es posible que los valores almacenados sean incorrectos! * se ha recompuesto totalmente LIBPQ para que las aplicaciones cliente (frontend) puedan conectarse a multiples servidores (backend). * el campo usesysid de pg_user se ha cambiado de int2 a int4 para permitir mayores rangos de identificadores de usuarios de Unix. * los portes a los sistemas operativos netbsd/freebsd/bsd se han consolidado en un unico port derivado de BSD44. (Gracias a Alistair Crooks). Cumplimento del estándar SQL (los siguientes detalles cambian para hacer a posgres95 más ajustado al estándar SQL-92): * se han incluido los siguientes tipos SQL: smallint, int(eger), float, real, char(N), varchar(N), date y time. Los siguientes son alias de los tipos postgres existentes: smallint -> int2 integer, int -> int4 float, real -> float4 char(N) y varchar(N) se han implementado como tipos text truncados. Además, char(N) rellena a blancos el espacio no utilizado. * se utiliza el apóstrofe (') para limitar cadenas literales; " (además de \') se soportan para permitir insertar un único límite en una cadena. * se utilizan los nombres de agregados de SQL estándar (MAX, MIN, AVG, SUM, COUNT) (También, se pueden ahora sobrecargar los agregados, es decir, puede usted definir su propio agregado MAX para disponer de un tipo definido por el usuario). * se ha eliminado CHANGE ACL. Se añade la sintaxis GRANT/REVOKE. - Se pueden dar privilegios a un grupo utilizando la palabra clave "GROUP". Por ejemplo: GRANT SELECT ON mi_tabla TO GROUP mi_grupo; La palabra clave 'PUBLIC' también está soportada para autorizar a todos los usuarios. Sólo de pueden otorgar o retirar privilegios a un usuario o grupo cada vez. "WITH GRANT OPTION" no está soportado. Sólo los propietarios de clases pueden cambiar el control de acceso. - El control de acceso de defecto es autorizar a los usuarios sólo a leer. Deberá usted autorizar explícitamente el acceso en inserción/actualización a los usuarios. Para cambiar esto, deberá modificar la línea src/backend/utils/acl.h que define ACL_WORLD_DEFAULT Errores corregidos: * se ha corregido el error segun el cual los agregados de tablas vacías no trabajaban adecuadamente. Ahora, los agregados ejecutados sobre tablas vacías devuelven las condiciones iniciales de los agregados. Así, COUNT de una tabla vacía devuelve correctamente el valor 0. MAX/MIN de una taba vacía devolverá una tupla de valor NULL. * se permite el uso de \; dentro del monitor. * el mecanismo de notificación asincrono LISTEN/NOTIFY ya trabaja. * NOTIFY en el cuerpo de las reglas de acción ya trabaja. * ya funcionan los índices hash, y los método de acceso en general deberían funcionar mejor. La creación de grandes índices btree debería ser mucho más rápida. (Gracias a Paul Aoki). Otros cambios y potenciaciones: * se añade la instrucción EXPLAIN utilizada para analizar el plan de ejecución de una consulta. (es decir: "EXPLAIN SELECT * FROM EMP" muestra el plan de ejecución de la consulta). * los mensajes WARN y NOTICE ya no muestran tiempo de ejecución en sí mismos. Para activar el tiempo de ejecución en los mensajes de error, descomente en src/backend/utils/elog.h: la línea /* define ELOG_TIMESTAMPS */ * En una violación del control de acceso, se dará el mensaje "Either no such class or insufficient privilege" Este es el mismo mensaje que se devuelve cuando no se encuentra una clase. Esto disuade a los usuarios no privilegiados de sospechar la existencia de clases privilegiadas. * se han hecho algunos cambios adicionales en el catálogo del sistema que no son visibles para el usuario. cambios en libpgtcl: * se añade la opción -oid al comando de tcl "pg_result". pg_result -oid devolverá el oid de la última tupla insertada. Si el último comando no fue una inserción, pg_result -oid devuelve "". * el interface de objetos largos está utilizable como comandos tcl pg_lo*: pg_lo_open, pg_lo_close, pg_lo_creat, etc. Potenciaciones de la Portabilidad y Nuevas Migraciones: * Se han limpiado problemas con flex/lex. Ahora, se debería poder utilizar flex en lugar de lex en cualquier plataforma. Ya se harán asumciones sobre la forma de analizador sintáctico elegido basadas en la plataforma que utilice. * Ahora se soporta la migración a Linux-ELF. Se han probado varias configuraciones: Se sabe que la siguiente configuración funciona: kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24 todo en formato ELF. Nuevas utilidades: * ipcclean añadido a la distribución habitualmente no se necesita ejecutar ipcclean, pero si cae su servidor y deja segmentos de memoria ocupados, ipcclean los limpiara para usted. Nueva documentación: * se ha revisado el manual del usuario y se ha añadido la documentación de libpq. |