[spip-dev] [spip-commit] r14467 - spip/ecrire/base

Il me semble qu'Emmanuel a changé dans SPIP la gestion de la casse des
appels à BOUCLE(TOTO) qu'il faudrait désormais écrire BOUCLE(toto).

Ca casse un nombre important de choses dans certains squelettes et
plugins, y compris je crois des plugins comme agenda ou messagerie.

C'est peut-être ça qu'il faut revoir car le but n'était que
d'accomoder certains cas très particuliers sur postgre, de tables
nommées en CamelCase ou autre. On pourrait faire une première passe
avec l'ancienne règle, et si elle ne donne pas de résultat, faire une
seconde vérif en préservant la casse.

Il me semble qu'Emmanuel a changé dans SPIP la gestion de la casse des
appels à BOUCLE(TOTO) qu'il faudrait désormais écrire BOUCLE(toto).

Il s'agit de
http://trac.rezo.net/trac/spip/changeset/14271/spip/ecrire/public

Je pense qu'il faut être plus smart : si on ne trouve pas la table,
regarder si elle existe avec une autre casse que celle qui est
indiquée dans la boucle. Ainsi sauf cas extraordinaire où deux tables
porteraient le même nom avec des casses différentes, boucle(TOTO) et
boucle(Toto) donneraient toujours la table toto, ou Toto, ou toTo (ou
spip_toto).

mais je vais peut-être laisser Emmanuel faire le truc car c'est "délicat"

-- Fil

Rien à voir avec PG, c'était une demande de Cyril pour des tables MySQL externes,
et on a pas mal discuté sur les incompatibilités que cela allait entraîner:
http://thread.gmane.org/gmane.comp.web.spip.devel/54328

Pour résumer la discussion, je trouve normal que SPIP privilégie une interface intuitive avec
les services massivement utilisé que sont MySQL et consorts,
plutôt que de privilégier une compatibilité avec ses propres extensions,
qui n'ont pas un taux d'utilisation comparable.

Committo,Ergo:Sum

2009/9/5 Committo,Ergo:sum <esj@rezo.net>

Il me semble qu’Emmanuel a changé dans SPIP la gestion de la casse des
appels à BOUCLE(TOTO) qu’il faudrait désormais écrire BOUCLE(toto).

Ca casse un nombre important de choses dans certains squelettes et
plugins, y compris je crois des plugins comme agenda ou messagerie.

C’est peut-être ça qu’il faut revoir car le but n’était que
d’accomoder certains cas très particuliers sur postgre, de tables
nommées en CamelCase ou autre.

Rien à voir avec PG, c’était une demande de Cyril pour des tables MySQL externes,
et on a pas mal discuté sur les incompatibilités que cela allait entraîner:
http://thread.gmane.org/gmane.comp.web.spip.devel/54328

Pour résumer la discussion, je trouve normal que SPIP privilégie une interface intuitive avec
les services massivement utilisé que sont MySQL et consorts,
plutôt que de privilégier une compatibilité avec ses propres extensions,
qui n’ont pas un taux d’utilisation comparable.

Le problème que j’ai tant bien que mal essayé de corrigé n’est pas uniquement lié à ce plugin … Il peut se reproduire par la suite avec d’autres certainement …

Le problème était que find_in_path me cherchait un fichier connect/XXX.php et que mon serveur n’est pas foutu de prendre connect/xxx.php pour le même fichier et qu’il me semble mieux d’avoir une homogénéité dans le nommage des fichiers que de jouer avec des casses différentes…

J’aurais pu simplement renomme connect/pour.php en connect/POUR.php mais la source d’erreur incompréhensible aurait pu être là pour d’autres cas et on aurait couru derrière car chez les uns ca marche, chez les autres non …

Rien à voir avec PG, c'était une demande de Cyril pour des tables MySQL
externes,
et on a pas mal discuté sur les incompatibilités que cela allait entraîner:
http://thread.gmane.org/gmane.comp.web.spip.devel/54328

ah merci, je ne retrouvais pas la discussion, que j'avais survolée

Pour résumer la discussion, je trouve normal que SPIP privilégie une
interface intuitive avec
les services massivement utilisé que sont MySQL et consorts,
plutôt que de privilégier une compatibilité avec ses propres extensions,
qui n'ont pas un taux d'utilisation comparable.

tu sembles dire que les choses s'opposent, mais on devrait pouvoir les
résoudre simultanément en ayant un deuxième regard si la table
n'existe pas dans la casse demandée, mais existe dans une autre
casse... non ?

-- Fil

Possible, mais les plugins de SPIP n'ayant pas une documentation intégrée,
contrairement aux serveurs SQL, je ne vois pas sur quoi m'appuyer pour écrire du code qui satisfasse tout le monde.

Committo,Ergo:Sum

n'existe pas dans la casse demandée, mais existe dans une autre
casse... non ?

Possible, mais les plugins de SPIP n'ayant pas une documentation intégrée,
contrairement aux serveurs SQL, je ne vois pas sur quoi m'appuyer pour
écrire du code qui satisfasse tout le monde.

laisse, je vais m'en occuper

-- Fil

J'ai effectivement dû modifier toutes les boucles du plugin CleverMail pour mettre des minuscules au lieu de majuscules :

http://zone.spip.org/trac/spip-zone/changeset/31289
http://zone.spip.org/trac/spip-zone/changeset/31295

-Nicolas

Il me semble qu'Emmanuel a changé dans SPIP la gestion de la casse des
appels à BOUCLE(TOTO) qu'il faudrait désormais écrire BOUCLE(toto).

Il s'agit de
http://trac.rezo.net/trac/spip/changeset/14271/spip/ecrire/public

Je pense qu'il faut être plus smart : si on ne trouve pas la table,
regarder si elle existe avec une autre casse que celle qui est
indiquée dans la boucle. Ainsi sauf cas extraordinaire où deux tables
porteraient le même nom avec des casses différentes, boucle(TOTO) et
boucle(Toto) donneraient toujours la table toto, ou Toto, ou toTo (ou
spip_toto).

OK après enquête le point bloquant n'était en fait *pas du tout* dans
le compilo, mais dans la fonction showtable de req/mysql.php, qui pour
savoir si une table existe fait ceci :
spip_mysql_query("SHOW TABLES LIKE '$nom_table'")...

Or si ma table s'appelle "Toto", les deux requetes suivantes échouent :
SHOW TABLES LIKE 'TOTO';
SHOW TABLES LIKE 'toto';

Le LIKE ici est fait en BINARY, et pas moyen d'inverser.

Mais comme ce test est inutile (!), je l'enlève et du coup les boucles
(TOTO), (toto) et (Toto) donnent le même résultat...

http://trac.rezo.net/trac/spip/changeset/14606

à vérifier et notamment dans les autres portages

-- Fil

Bonjour,

Est-ce vraiment farfelu d'utiliser l'opérateur "SOUNDS LIKE" dans ce cas ? En affinant le test éventuellement ?

GLG

Fil a écrit :

Bonjour,

Est-ce vraiment farfelu d'utiliser l'opérateur "SOUNDS LIKE" dans ce cas ? En affinant le test éventuellement ?

GLG

Fil a écrit :

Est-ce vraiment farfelu d'utiliser l'opérateur "SOUNDS LIKE" dans ce cas ?
En affinant le test éventuellement ?

SHOW TABLES n'accepte que LIKE.
http://dev.mysql.com/doc/refman/5.0/fr/show-tables.html

-- Fil