Re: Problema Order By en PosgreSQL 8.1

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Paolo Lopez <murphyperu(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema Order By en PosgreSQL 8.1
Date: 2006-04-08 11:10:18
Message-ID: 44379A1A.4000505@soft-com.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-es-ayuda

Alvaro Herrera escribió:

>
> Me gustaria saber si alguien mas puede reproducir este problema en
> Windows.

Windows XP SP1
postgres=# select version();
version
------------------------------------------------------------------------------------------
PostgreSQL 8.1.1 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)
(1 fila)

Hasta esta expresion el ordenamiento lo hace mal en mi sistema:

CREATE TABLE tablita (
d int4 ,
e int4 ,
f int4 ,
dia int4 ,
primary key (d, e, f, dia)
);

INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 1, 1);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 1, 3);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 1, 5);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 2, 2);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 2, 4);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 2, 5);

select dia from tablita where d = 1 and e = 1 order by dia;

El resultado tanto en pgadmin como en la consola es:

dia
-----
1
3
5
2
4
5
(6 filas)

* Creo que he encontrado algo:

1.

Cambio los valores del campo 'e'

INSERT INTO tablita (d, e, f, dia) VALUES (1, 2, 1, 1);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 2, 1, 3);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 2, 1, 5);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 2, 2, 2);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 2, 2, 4);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 2, 2, 5);

select dia from tablita where d = 1 and e = 2 order by dia;

El resultado es correcto:

dia
-----
1
2
3
4
5
5
(6 filas)

2.

Cambio los valores de los campos 'd' y 'e' y les vuelvo a poner un valor igual pero disntinto a '1':

INSERT INTO tablita (d, e, f, dia) VALUES (21512, 21512, 1, 1);
INSERT INTO tablita (d, e, f, dia) VALUES (21512, 21512, 1, 3);
INSERT INTO tablita (d, e, f, dia) VALUES (21512, 21512, 1, 5);
INSERT INTO tablita (d, e, f, dia) VALUES (21512, 21512, 2, 2);
INSERT INTO tablita (d, e, f, dia) VALUES (21512, 21512, 2, 4);
INSERT INTO tablita (d, e, f, dia) VALUES (21512, 21512, 2, 5);

select dia from tablita where d = 21512 and e = 21512 order by dia;

El resultado vuelve a ser incorrecto:
dia
-----
1
3
5
2
4
5
(6 filas)

3.

Pongo a 'd' y 'e' el mismo valor pero cambio la condicion where:

INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 1, 1);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 1, 3);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 1, 5);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 2, 2);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 2, 4);
INSERT INTO tablita (d, e, f, dia) VALUES (1, 1, 2, 5);

postgres=# select dia from tablita where d > 0 and e > 0 order by dia;
dia
-----
1
2
3
4
5
5
(6 filas)

El resultaso SI es correcto

4.

Mas pruebas cambiando el where:

postgres=# select dia from tablita where e = d and e = 1 order by dia;
dia
-----
1
3
5
2
4
5
(6 filas)
Incorrecto

postgres=# select dia from tablita where d between 1 and 1 and e between 1 and 1 order by dia;
dia
-----
1
2
3
4
5
5
(6 filas)
Correcto

postgres=# select dia from tablita where e = d and e > 0 order by dia;
dia
-----
1
2
3
4
5
5
(6 filas)
Correcto

Resumen:
Da la impresion que el fallo lo da unicamente cuando:
en el where estan las dos condiciones,
'd' y 'e' tienen el mismo valor
la clausula where utiliza el operador '=' para ambas condiciones

Saludos,

--
*****************************************
Oswaldo Hernández
oswaldo(at)soft-com(dot)es
*****************************************

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Martijn van Oosterhout 2006-04-08 13:14:49 Re: bug in windows xp
Previous Message Magnus Hagander 2006-04-08 10:40:35 Re: Bug in window xp

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Milhenny Jordán 2006-04-08 12:28:40 Re: AYUDA CON ODBC DE POSTGRESQL PARA VISUAL BASIC 6.0
Previous Message Paolo Lopez 2006-04-08 05:42:39 Re: Problema Order By en PosgreSQL 8.1