Posible bug?

From: Jose Luis Balle <joseluisballe(at)gmail(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Posible bug?
Date: 2010-01-06 16:07:07
Message-ID: 6d87542d1001060807ke3e3ab2q86d3b1b8f2a4e937@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola lista,
acabo de toparme con una situación que me llamó la atención, no si
postgresql se está comportando como debiera por lo que les expongo
para ver si alguien puede replicar esta situacion.
Una sentencia que a mi modo de parecer debería devolver un error de
SQL debido a la inexistencia de una columna en una subconsulta, corre
perfectamente tomando la columna de la consulta principal.

-- Dado el siguiente esquema:

CREATE SCHEMA test;

CREATE TABLE test.rubros(
id character varying(3) NOT NULL,
rubro character varying(35),
CONSTRAINT rubros_pkey PRIMARY KEY (id)
)
WITH (OIDS=FALSE);

INSERT INTO test.rubros VALUES ('1', 'Rubro 1');
INSERT INTO test.rubros VALUES ('1.1', 'Rubro 11');
INSERT INTO test.rubros VALUES ('2', 'Rubro 2');
INSERT INTO test.rubros VALUES ('2.1', 'Rubro 21');

CREATE TABLE test.valores(
id serial,
rubroid character varying(3),
descripcion character varying(30),
monto float,
CONSTRAINT valores_pkey PRIMARY KEY (id)
)
WITH (OIDS=FALSE);

INSERT INTO test.valores (rubroid,descripcion, monto) VALUES
('1.1','JAMON',100);
INSERT INTO test.valores (rubroid,descripcion, monto) VALUES
('1.1','PALETA',200);
INSERT INTO test.valores (rubroid,descripcion, monto) VALUES
('2.1','PEBETE',10);
INSERT INTO test.valores (rubroid,descripcion, monto) VALUES
('2.1','GALLETA',20);

--la siguente consulta debería devolver un error ya que la tabla
test.rubro no tiene una columna descripcion. Sin embargo corre
perfectamente tomando los valores de la columna descripcion de la
tabla test.valores.

SELECT (SELECT descripcion FROM test.rubros WHERE
rubros.id=substr(valores.rubroid,1,1)) as rubro, *
FROM test.valores;

--devuelve
"rubro";"id";"rubroid";"descripcion";"monto"
"JAMON";1;"1.1";"JAMON";100
"PALETA";2;"1.1";"PALETA";200
"PEBETE";3;"2.1";"PEBETE";10
"GALLETA";4;"2.1";"GALLETA";20

--

Espero comentarios, se que debería haber utilizado el alias de
test.rubros en la subconsulta y utilizo la subconsulta para obtener el
rubro padre de cada fila. Podria usar un join o un where si, pero me
salió así y me encontré con este problema.
Saludos.

--
"La pregunta no debería ser ¿Por qué Dios permite esto?, si no ¿Por
qué Dios permite que yo permita esto?"

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2010-01-06 16:36:00 Re: Postgre en Linux
Previous Message Daniela Mamede d'Almeida 2010-01-06 15:05:29 Vistas materializadas