Re: BUG #2984: Bug Creating or Updating a View

Lists: pgsql-bugs
From: "Gabriel Bravo" <gbravo2k(at)yahoo(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #2984: Bug Creating or Updating a View
Date: 2007-02-09 17:27:45
Message-ID: 200702091727.l19HRjRg021682@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 2984
Logged by: Gabriel Bravo
Email address: gbravo2k(at)yahoo(dot)com
PostgreSQL version: 8.1.5
Operating system: Windows XP Professional
Description: Bug Creating or Updating a View
Details:

I had a view created as:

CREATE OR REPLACE VIEW vensamblado AS
SELECT DISTINCT cuestionario.idcuestionario,
cuestionario.nombrecuestionario, riesgo.idriesgo, riesgo.nombreriesgo,
riesgo.resultado, pregunta.idpregunta, pregunta.nombrepregunta,
pregunta.tiporespuesta, pregunta.posicionrespuestas, pregunta.tipocontrol,
contenidocuestionario.ordenpregunta, opcion.idopcion, opcion.nombreopcion,
opcion.valor
FROM contenidocuestionario
JOIN cuestionario ON contenidocuestionario.idcuestionario =
cuestionario.idcuestionario
JOIN riesgo ON contenidocuestionario.idriesgo = riesgo.idriesgo
JOIN (pregunta
JOIN opcion ON pregunta.idpregunta = opcion.idpregunta) ON
contenidocuestionario.idpregunta = pregunta.idpregunta
ORDER BY cuestionario.idcuestionario, riesgo.idriesgo,
pregunta.idpregunta, contenidocuestionario.ordenpregunta,
opcion.nombreopcion, cuestionario.nombrecuestionario, riesgo.nombreriesgo,
riesgo.resultado, pregunta.nombrepregunta, pregunta.tiporespuesta,
pregunta.posicionrespuestas, pregunta.tipocontrol, opcion.idopcion,
opcion.valor;

I'm trying to replace that view because the ORDER clause is incorrect and I
want to change it. I'm changing with:

CREATE OR REPLACE VIEW vensamblado AS
SELECT DISTINCT cuestionario.idcuestionario,
cuestionario.nombrecuestionario, riesgo.idriesgo,
riesgo.nombreriesgo, riesgo.resultado, pregunta.idpregunta,
pregunta.nombrepregunta,
pregunta.tiporespuesta, pregunta.posicionrespuestas, pregunta.tipocontrol,
contenidocuestionario.ordenpregunta,
opcion.idopcion, opcion.nombreopcion, opcion.valor
FROM contenidocuestionario
JOIN cuestionario ON contenidocuestionario.idcuestionario =
cuestionario.idcuestionario
JOIN riesgo ON contenidocuestionario.idriesgo = riesgo.idriesgo
JOIN (pregunta
JOIN opcion ON pregunta.idpregunta = opcion.idpregunta) ON
contenidocuestionario.idpregunta = pregunta.idpregunta
ORDER BY cuestionario.idcuestionario, riesgo.idriesgo,
pregunta.idpregunta, contenidocuestionario.ordenpregunta,
opcion.nombreopcion;

And the view definition doesn't change !!!


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Gabriel Bravo" <gbravo2k(at)yahoo(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #2984: Bug Creating or Updating a View
Date: 2007-02-12 04:54:05
Message-ID: 22409.1171256045@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

"Gabriel Bravo" <gbravo2k(at)yahoo(dot)com> writes:
> I had a view created as:

> CREATE OR REPLACE VIEW vensamblado AS
> SELECT DISTINCT cuestionario.idcuestionario,
> cuestionario.nombrecuestionario, riesgo.idriesgo, riesgo.nombreriesgo,
> riesgo.resultado, pregunta.idpregunta, pregunta.nombrepregunta,
> pregunta.tiporespuesta, pregunta.posicionrespuestas, pregunta.tipocontrol,
> contenidocuestionario.ordenpregunta, opcion.idopcion, opcion.nombreopcion,
> opcion.valor
> ...
> ORDER BY cuestionario.idcuestionario, riesgo.idriesgo,
> pregunta.idpregunta, contenidocuestionario.ordenpregunta,
> opcion.nombreopcion, cuestionario.nombrecuestionario, riesgo.nombreriesgo,
> riesgo.resultado, pregunta.nombrepregunta, pregunta.tiporespuesta,
> pregunta.posicionrespuestas, pregunta.tipocontrol, opcion.idopcion,
> opcion.valor;

> I'm trying to replace that view because the ORDER clause is incorrect and I
> want to change it.

It's not wrong and you can't fix it --- all the elements of the SELECT
DISTINCT list have to be included in the order-by list. Any you omit
will get added in behind the scenes.

regards, tom lane