Projet

Général

Profil

Actions

Anomalie #7012

fermé

ERROR: cannot change name of view column "a" to "b"

Ajouté par Jérôme Augé il y a presque 9 ans. Mis à jour il y a plus de 8 ans.

Statut:
Intégré
Priorité:
Normal
Assigné à:
Version cible:
Début:
16/06/2017
Echéance:
% réalisé:

100%

Temps estimé:
Version source:
Solution proposée:
Principaux fichiers impactés:
Complexité:
Contrôle:
Thème:
Socle technique
Régression:
Non

Description

Lors d'une migration d'un dynacase-core-3.2.14 vers dynacase-core-3.2.23 j'ai observé une erreur PHP/Pg non-fatale lors de la régénération d'une vue family.xxx avec une erreur du type :

ERROR:  cannot change name of view column "a" to "b" 

Le problème est avec l'instruction "CREATE OR REPLACE VIEW vvv AS SELECT col1, ..., colN" qui ne fonctionne que si l'ordre des colonnes "col1, ..., colN" reprend les colonnes précédentes dans le même ordre (c'est le point important) en ajoutant ensuite les colonnes additionnelles.

- https://www.postgresql.org/docs/9.1/static/sql-createview.html :

The new query must generate the same columns that were generated by the existing view query (that is, the same column names in the same order and with the same data types), but it may add additional columns to the end of the list.

Par conséquent si on crée un vue avec les colonnes "a, b", qu'on ajoute un colonne "c" et qu'on fait un "CREATE OR REPLACE" avec l'ordre "b, a, c" on a alors ce type d'erreur :

BEGIN;
    CREATE TABLE t1 (a text, b text);
    CREATE VIEW v1 AS SELECT a, b FROM t1;

    ALTER TABLE t1 ADD COLUMN c text;

    CREATE OR REPLACE VIEW v1 AS SELECT b, a, c FROM t1;
ROLLBACK;
BEGIN
CREATE TABLE
CREATE VIEW
ALTER TABLE
ERROR:  cannot change name of view column "a" to "b" 
ROLLBACK

Il semble donc que la régénération de la vue ne conserve pas l'ordre des colonnes : il faudrait s'assurer que l'ordre est conservé (si c'est possible), ou bien passer par un "BEGIN" + "DROP VIEW IF EXISTS ..." + "CREATE VIEW ..." + "COMMIT" (qui devrait fonctionner quelque soit l'ordre) ?

Mis à jour par Jérôme Augé il y a presque 9 ans

  • Description mis à jour (diff)

Mis à jour par Marc Claverie il y a plus de 8 ans

  • Version cible mis à 3.2.23

Mis à jour par Marc Claverie il y a plus de 8 ans

  • Assigné à mis à Jérôme Augé

Mis à jour par Jérôme Augé il y a plus de 8 ans

  • % réalisé changé de 0 à 100

Mis à jour par Éric Brison il y a plus de 8 ans

  • Statut changé de Nouveau à Intégré

Appliqué par commit internal-platfrom:commit:70be008d2e2ff87350cb276d50178181b3015bbe.

Actions

Formats disponibles : Atom PDF