BUG #2984: Bug Creating or Updating a View

Started by Gabriel Bravoabout 19 years ago2 messagesbugs
Jump to latest
#1Gabriel Bravo
gbravo2k@yahoo.com

The following bug has been logged online:

Bug reference: 2984
Logged by: Gabriel Bravo
Email address: gbravo2k@yahoo.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 !!!

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Gabriel Bravo (#1)
Re: BUG #2984: Bug Creating or Updating a View

"Gabriel Bravo" <gbravo2k@yahoo.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