> shell->psql colesci > psql (8.4.2) > Type "help" for help. > > colesci=# select sb.oid,sb.sabocopr,sb.sabofhci from saldbode sb where > sb.saboarti='1003' and sb.sabofhci <= '2010-09-09' and sb.sabocopr != 0 > order by sb.sabofhci desc ; > oid | sabocopr | sabofhci > -----------+------------------+------------ > 879676839 | 14693.6960236998 | 2009-12-04 > 879676723 | 14094.6000000000 | 2009-12-04 > 879676823 | 14630.8422959184 | 2009-12-03 > 879669539 | 12682.3767346939 | 2008-11-04 > 879671175 | 14565.3400000000 | 2008-11-04 > 879668961 | 12258.7100000000 | 2008-10-31 > (6 rows) > > > > Como se observa los registos viene organizados por la fecha de forma > descendenrte, pero el caso que se tiene es que cuando se desea obtener el > primer registro del set, el motor, segun se observa decide usar el segundo > registro, es decir usa como > > segundo ordenamiento el oid, puede ser un fallo? como por obtener el primer > registro, ? , por que razon la segunda consulta > > me arroja el segundo registro y no el primero ? > > > > colesci=# select sb.oid,sb.sabocopr,sb.sabofhci from saldbode sb where > sb.saboarti='1003' and sb.sabofhci <= '2010-09-09' and sb.sabocopr != 0 > order by sb.sabofhci desc limit 1; > oid | sabocopr | sabofhci > -----------+------------------+------------ > 879676723 | 14094.6000000000 | 2009-12-04 > (1 row) > > colesci=# > > Y claro el informe que estabamos evaluando nos arrojo diferencias entre la > version 7.3.7 y 8.4.2 > >
Lo que sucede es que 7.3 utiliza un algoritmo de recuperación de datos distinto a >8. De hecho, para esta compatibilidad creo que deberías desactivar synchronize_seqscan (obliga a buscar en el orden de los bloques) u agregar la columna OID en tu tabla y ordenar por la misma. De hecho, en teoría, si esos registros están en bloques distintos y haces un VACUUM FULL (obligando a cambiar la ubicación física de dicho registro) puede ser que te retorne el otro registro. El motivo es que seguramente el segundo registro estaba en un bloque 'más cercano' o en caché. Solución, agregar una columna más en el order by u ordernar por por ctid si no quires agregar OID. Además recuerda que oid no viene por defecto en las versiones superiores a 8. -- Emanuel Calvo Franco www.emanuelcalvofranco.com.ar Join: http://www.thevenusproject.com/ - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda