From 04dfc57388a402dfe0f44f6a0864dad9a906b7f4 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Tue, 27 Jul 2021 11:47:15 +0200 Subject: [PATCH] =?UTF-8?q?Bugfix=20sqlite=20sur=20le=20traitement=20des?= =?UTF-8?q?=20cas=20`SELECT=200=20as=20num=20+=20ORDER=20BY=20num`=20:=20a?= =?UTF-8?q?vec=20l'ajout=20d'une=20clause=20sinum=20systematique,=20on=20a?= =?UTF-8?q?vait=20maintenant=20un=20`ORDER=20BY=20sinum,=20num`=20qui=20se?= =?UTF-8?q?=20transformait=20en=20`ORDER=20BY=20siVIDE(),=20VIDE()`=20inva?= =?UTF-8?q?lide=20Cela=20dit,=20avec=20un=20sqlite=203.28=20ce=20remplacem?= =?UTF-8?q?ent=20parait=20superflu,=20sa=20suppression=20serait=20peut-?= =?UTF-8?q?=C3=AAtre=20judicieuse=20=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/req/sqlite_generique.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php index 42856286ab..aca50f796f 100644 --- a/ecrire/req/sqlite_generique.php +++ b/ecrire/req/sqlite_generique.php @@ -3019,7 +3019,8 @@ class sqlite_traducteur { // il dit que x ne doit pas être un integer dans le order by ! // on remplace du coup x par vide() dans ce cas uniquement // - // rien que pour public/vertebrer.php ? + // apparait dans public/vertebrer.php et dans le plugin menu aussi qui genere aussi ce genre de requete via un {par num #GET{tri_num}} + // mais est-ce encore un soucis pour sqlite en 2021 ? (ie commenter le preg_replace marche très bien en sqlite 3.28) if ((strpos($this->query, "0 AS") !== false)) { // on ne remplace que dans ORDER BY ou GROUP BY if (preg_match('/\s(ORDER|GROUP) BY\s/i', $this->query, $regs)) { @@ -3030,7 +3031,9 @@ class sqlite_traducteur { // on remplace dans $suite le nom par vide() preg_match_all('/\b0 AS\s*([^\s,]+)/', $this->query, $matches, PREG_PATTERN_ORDER); foreach ($matches[1] as $m) { - $suite = str_replace($m, 'VIDE()', $suite); + if (strpos($suite, $m) !== false) { + $suite = preg_replace(",\b$m\b,", 'VIDE()', $suite); + } } $this->query .= $suite; } -- GitLab