[spip-dev] [SQL] Bug sur les tables entourées de quotes...

Bonjour,

Il semble que SPIP (toutes versions) ne tienne pas compte du préfixe des tables dans ce cas là :
sql_alter('TABLE `spip_jeux` CHANGE `titre` `titre_prive` TEXT');

La constante suivante (req/my_sql.php) l'interdit :
define('_SQL_PREFIXE_TABLE', '/([,\s])spip_/S');

Que fait-on dans ce cas ?

1. Corriger SPIP et définir une autre constante pour prendre en compte le caractère : `

2. Corriger tous les plugins (!!!)... J'ai trouvé 45 fichiers concernés par ce bug sur la zone, soit presque autant de plugins.

Pour bénéficier de préfixes personnalisés, la bonne syntaxe est donc aujourd'hui :
sql_alter('TABLE spip_jeux CHANGE `titre` `titre_prive` TEXT');

Qu'en pensez-vous ?
Ceci est probablement la source de nombreux bugs de insidieux...

Pat

(...suite)

Et par conséquent, la fonction suivante est *totalement invalide* en cas d'utilisation des préfixes, car la table ne sera jamais trouvée à cause des quotes :

// http://doc.spip.org/@spip_mysql_drop_table
function spip_mysql_drop_table($table, $exist='', $serveur='',$requeter=true)
{
  if ($exist) $exist =" IF EXISTS";
  return spip_mysql_query("DROP TABLE$exist `$table`", $serveur, $requeter);
}

Que faire donc ?

Vu que SPIP lui-même est bugué, il vaut mieux le corriger (toutes versions si possible) et laisser tranquille les plugins, sachant que ces plugins (dont il faudrait faire la liste) risquent d'être incompatibles avec les préfixes différents de "spip_".

Pat