MTES-MCT / asgard-manager

Plugin QGIS pour l'administration des droits sous PostgreSQL avec ASGARD.
0 stars 0 forks source link

Paramètres par défaut de la table "layer_styles" #8

Open StormKlaus opened 1 year ago

StormKlaus commented 1 year ago

Bonjour,

La table "layer_styles" du schéma "public" possède des champs "stylename" et "owner" qui sont limités à 30 caractères par défaut :

Est-il possible de modifier ces limites par défaut (à 100 ?) et/ou d'implémenter un paramètre dans Asgard Manager permettant à l'utilisateur de redéfinir cette limite ?

Les noms de couches géographiques dépassent fréquemment les 30 caractères, l'enregistrement du style par défaut ne se fait pas dans ce contexte. Le problème pourrait aussi survenir si le nom d'utilisateur dépasse les 30 caractères.

Le SQL pour modifier les limites (pour ceux voulant corriger cela au plus vite) : ALTER TABLE public.layer_styles ALTER COLUMN stylename TYPE character varying(100) ALTER TABLE public.layer_styles ALTER COLUMN owner TYPE character varying(100)

alhyss commented 1 year ago

@StormKlaus J'ai transféré l'issue dans le Git d'AsgardManager, puisque c'est essentiellement ce module qui pourrait être concerné.

Je ne suis preneuse d'un contre-argumentaire, mais, en première approche, je ne pense pas qu'il soit vraiment judicieux d'avoir dans AsgardManager une fonctionnalité qui altère la structure d'une table de QGIS, sans que nous ne maîtrisions les effets de bord potentiels (est-ce que ce nombre maximum de caractères pourrait avoir une raison d'être ?), ni la manière dont la table va évoluer avec les versions. Il me semble préférable d'expliquer dans la documentation que ce problème peut survenir et donner la commande qui permet de passer outre la limite, que l'ADL choisira d'exécuter à ses risques et périls...

StormKlaus commented 1 year ago

Merci pour ce retour.

Pas de contre-argumentaire, suite à tes explications je te rejoins.

Si je comprend bien ce serait plus une évolution à faire remonter sur le Gihub de QGIS (https://github.com/qgis/QGIS/issues)

Pour les noms d'utilisateurs > à 30, on pourrait peut-être envisager une contrainte/limite dans Asgard Manager lors de la création des rôles de connexions, ou un message d'avertissement... Mais je sais pas finalement s'il est vraiment utile de développer quoi que ce soit à ce propos...

Évoquer ce sujet dans la documentation serait un plus.

Merci

alhyss commented 1 year ago

Oui, je pense que c'est une bonne idée de remonter la question côté QGIS, si ça n'a pas déjà été fait. Si la limitation de longueur ne sert à rien, il serait beaucoup plus propre qu'ils corrigent ça eux-mêmes.

Pour les noms de rôle, je ne sais pas trop comment on pourrait expliquer aux utilisateurs d'où vient cette limite à 30 caractères, qui n'a d'ailleurs un sens que s'ils se servent de layer_styles... @WREATCHED Que fait AsgardManager aujourd'hui pour les noms de plus de 63 caractères (qui sont tronqués par PostgreSQL) ? On pourrait imaginer une longueur limite paramétrable avec une valeur par défaut à 63 caractères ? En conseillant dans la doc de l'abaisser à 30 pour les usagers de layer_styles ?

StormKlaus commented 1 year ago

Effectivement, le problème a déjà été remonté sur le Github de QGIS, plusieurs issues à ce propos : https://github.com/qgis/QGIS/issues/47550 https://github.com/qgis/QGIS/issues/39850 https://github.com/qgis/QGIS/blob/8deed6c49742bf01d4d49a369fe52a7100fcf107/src/providers/postgres/qgspostgresprovider.cpp

Et donc si j'ai bien compris ce problème a bien été résolu dans les versions > ou alentours à la QGIS 3.0. Il n'y aurait désormais plus de limite de caractère pour les noms de couches.

Le problème est que la table layer_syles a été créé avec une version QGIS < à la 3.0 chez nous et nous sommes (étions) donc toujours contraint par cette limite.

Donc pour être en cohérence avec les dernières versions de QGIS la requête à utiliser serait plutôt celle-ci : ALTER TABLE public.layer_styles ALTER COLUMN stylename TYPE text ;

alhyss commented 1 year ago

Merci d'avoir cherché !

Si le problème est déjà résolu pour les versions de QGIS prises en charge par AsgardManager, alors il n'y a vraiment pas lieu de prévoir un correctif de notre côté. Une mention dans la doc devrait être suffisante. owner est limité à 63 caractères (et l'est toujours dans la version courante), mais c'est la limite de PostgreSQL de toute façon, donc il ne devrait pas y avoir de problème de ce côté pour les nouvelles tables layer_styles.