Projet

Général

Profil

Bug #66394

pl/pgsql, l'enregistrement « new » n'a pas de champs « _end_datetime »

Ajouté par Frédéric Péters il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
18 juin 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
    File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 1186, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
    File "/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py", line 1377, in execute_sqlcursor.execute(sql, params)
    File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 99, in execute
return super().execute(sql, params)
    File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
    File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context)    File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
    File "/usr/lib/python3/dist-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
    File "/usr/lib/python3/dist-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
    django.db.utils.ProgrammingError: ERREUR:  l'enregistrement « new » n'a pas de champs « _end_datetime »
    CONTEXT:  fonction PL/pgsql set_end_datetime(), ligne 6 à affectation

Fichiers


Demandes liées

Lié à Chrono - Bug #66374: IntegrityError: ERREUR: la valeur d'une clé en conflit rompt la contrainte d'exclusion « tstzrange_constraint »Fermé17 juin 2022

Actions

Révisions associées

Révision 0e000fa4 (diff)
Ajouté par Lauréline Guérin il y a presque 2 ans

agendas: fix pg function set_ignore_reason on desk deletion (#66394)

Historique

#2

Mis à jour par Lauréline Guérin il y a presque 2 ans

pas de _ignore_reason non plus ?
hypothèse: lorsque la 0052 est passée il y a 2 ans l'extension btree_Gist n'était pas dispo, elle l'est maintenant.

#3

Mis à jour par Lauréline Guérin il y a presque 2 ans

au cas où, voici de quoi remettre d'équerre les instances qui en ont besoin.
migrations:
0128: vidée, pour éviter une opération inutile lors de la mep
0129: reprise de 0052, avec un IF NOT EXISTS sur la création des champs techniques (et rien en sql_forwards), et une mise à jour de _end_datetime uniquement s'il est null
0130: reprise de 0053, avec un DROP CONSTRAINT IF EXISTS avant l'ajout (pas de ADD CONSTRAINT IF NOT EXISTS dispo)

#6

Mis à jour par Lauréline Guérin il y a presque 2 ans

  • Lié à Bug #66374: IntegrityError: ERREUR: la valeur d'une clé en conflit rompt la contrainte d'exclusion « tstzrange_constraint » ajouté
#7

Mis à jour par Lauréline Guérin il y a presque 2 ans

  • Statut changé de En cours à Solution proposée
  • Assigné à mis à Lauréline Guérin
#8

Mis à jour par Frédéric Péters il y a presque 2 ans

  • Statut changé de Solution proposée à Solution validée
#9

Mis à jour par Lauréline Guérin il y a presque 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 0e000fa4300991094deb99d16fd6d697d7458536
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Sat Jun 18 22:19:46 2022 +0200

    agendas: fix pg function set_ignore_reason on desk deletion (#66394)
#10

Mis à jour par Transition automatique il y a presque 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#11

Mis à jour par Pierre Ducroquet il y a presque 2 ans

Pour info, ce qu'il s'est passé (je me base sur la prod, mais c'était pareil en recette)...
Avant PG13, l'extension btree_gist ne pouvait être installée que par un superuser.
Lorsque la migration a été jouée le 13 août 2020, l'extension n'était pas présente. Sur l'ensemble des tenants créés avant juin 2021, les colonnes ne sont pas présentes parce que l'extension n'avait pas été installée.
Une fois l'extension installée, on peut voir que les tenants ont bien les bonnes colonnes.

Requête utilisée :

select 'SELECT *, ''' || nspname || ''' FROM ' || nspname || '.' || pc.relname || ' WHERE app = ''agendas'' AND name=''0052_event_date_range_constraint'';' from pg_class pc join pg_namespace pn on pn.oid = pc.relnamespace join pg_class pc2 on pc2.relname = 'agendas_event' and pc2.relnamespace = pc.relnamespace where pc.relname = 'django_migrations' and not exists(select 1 from pg_attribute where attrelid = pc2.oid and attname = '_end_datetime');

Déterminer la date exacte d'installation de l'extension n'est pas facile, mais j'ai pu confirmer qu'elle a été installée entre le 25 mai 2021 et le 14 juin 2021:

chrono=# select oid, * from pg_extension where extname = 'btree_gist';
    oid    |  extname   | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
-----------+------------+----------+--------------+----------------+------------+-----------+--------------
 839654838 | btree_gist |       10 |         2200 | t              | 1.5        |           | 
(1 ligne)
chrono=# select oid, * from pg_namespace where oid < 839654838 order by oid desc limit 2;
    oid    |                    nspname                     | nspowner | nspacl 
-----------+------------------------------------------------+----------+--------
 800388535 | agendas_mesdemarches_eurelien_fr               |    16401 | 
 794439243 | agendas_montpellier_eservices_montpellier3m_fr |    16401 | 
(2 lignes)

chrono=# select oid, * from pg_namespace where oid > 839654838 order by oid asc limit 2;
    oid    |              nspname               | nspowner | nspacl 
-----------+------------------------------------+----------+--------
 848017803 | agendas_isereconnect_fr            |    16401 | 
 864689946 | agendas_services_agglo_haguenau_fr |    16401 | 
(2 lignes)
chrono=# select * from agendas_mesdemarches_eurelien_fr.django_migrations limit 1;
 id |     app      |     name     |            applied            
----+--------------+--------------+-------------------------------
  1 | contenttypes | 0001_initial | 2021-05-25 15:04:14.149322+00
(1 ligne)
chrono=# select * from agendas_isereconnect_fr.django_migrations limit 1;
 id |     app      |     name     |            applied            
----+--------------+--------------+-------------------------------
  1 | contenttypes | 0001_initial | 2021-06-14 19:58:25.589696+00
(1 ligne)

#12

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF