Development #55528
Le critère ILike n'échappe pas correctement les chaînes de recherche
0%
Description
Notamment les % et les \, c'est un poil le bordel parait-il sur ce sujet avec psycopg2 (https://stackoverflow.com/questions/2106207/escape-sql-like-value-for-postgres-with-psycopg2).
Cf. #55528
wcs_demarches_montoulouse_cutm_publik_preprod_nfrance_com=> select digest from carddata_7_nomenclature_at where digest ilike '%astreinte\%' ; digest -------- (0 ligne) wcs_demarches_montoulouse_cutm_publik_preprod_nfrance_com=> select digest from carddata_7_nomenclature_at where digest ilike '%astreinte\\%' ; digest ----------------------------------------------------- Astreinte\Direction du Numérique Astreinte\DEA - bâtiments communaux Astreinte\Eclairage Astreinte\Alarme dans bâtiment public télésurveillé Astreinte\Cabinet du Maire Astreinte\Eau de Toulouse Métropole Astreinte\Sports Astreinte\Droits de place - Marchés Astreinte\Tags - affiches Astreinte\Pôles (hors Toulouse) Astreinte\Parcs et jardins Astreinte\Pôles (dans Toulouse) Astreinte\Sécurité civile et risques majeurs Astreinte\Circulation - Feux tricolores Astreinte\Divers Astreinte\Animaux - SACPA - Insectes Astreinte\Location de salles (17 lignes)
quand on recherche 'astreinte\' dans une champ avec autocomplétion, w.c.s. émet la première requête, pas la seconde (le problème n'existerait plus en pg 12.x d'après stackoverflow, le flag standard_conforming_string semblant respecté même pour LIKE/ILIKE).
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier 0001-sql-escape-ILike-value-55528.patch 0001-sql-escape-ILike-value-55528.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ça ne devrait pas changer en 12.x, https://www.postgresql.org/docs/12/functions-matching.html#id-1.5.8.12.7.2 ils ont déjà cassé toutes les chaînes en 9.1 si j'ai bien compris; je ne pense pas qu'ils veuillent recommencer. Ça n'est compatible qu'avec postgresql >= 9.1 (avant et sans mettre standard_conforming_string à on, il faut mettre 4 backslash pour en chopper un).
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Il y un print() en trop; il faudrait le retirer, et gérer les conflits de rebase.
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution validée à En cours
(je vois le patch dans la branche tout différent, introduction d'une fonction like_escape, du coup je préfère repasser par une relecture).
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
C'est le même patch, j'ai juste pris en compte le changement ILike/ElementILike et factorisé le code commun.
Mis à jour par Frédéric Péters il y a presque 3 ans
Ok mais on n'est pas sur marmiton; entre ce qui a été validé hier et ce que j'ai vu dans la branche, il y a une différence, et de là je me dis préférer prendre le temps de regarder à nouveau.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier v1-to-v2.patch ajouté
- Statut changé de En cours à Solution proposée
Le diff entre les deux, si ça peut aider.
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier v1-to-v2.patch v1-to-v2.patch ajouté
Mis à jour par Frédéric Péters il y a presque 3 ans
(je ne sais pas ce qui s'est joué sur les commentaires précédents mais tu peux attacher le patch proposé ?).
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Fichier 0001-sql-escape-ILike-ElementILike-value-55528.patch 0001-sql-escape-ILike-ElementILike-value-55528.patch ajouté
Oui, aussi.
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a presque 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 549e513bf6656c06c13fb055dcf1937fe57e1157 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Jul 12 16:01:32 2021 +0200 sql: escape ILike/ElementILike value (#55528) \, _ and % must be escaped.
Mis à jour par Frédéric Péters il y a presque 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
sql: escape ILike/ElementILike value (#55528)
\, _ and % must be escaped.