Skip to content
Extraits de code Groupes Projets
Valider 41ebd98a rédigé par esj's avatar esj
Parcourir les fichiers

#209: erreurs dans le simulateur PG du showtable MySQL, en particuleir parce...

#209: erreurs dans le simulateur PG du showtable MySQL, en particuleir parce que PG différencie les casses. Du coup on remplace = par ILIKE.
parent 52483514
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -245,7 +245,7 @@ function calcul_mysql_in($val, $valeurs, $not='') { ...@@ -245,7 +245,7 @@ function calcul_mysql_in($val, $valeurs, $not='') {
// http://doc.spip.org/@description_table // http://doc.spip.org/@description_table
function description_table($nom){ function description_table($nom){
global $tables_principales, $tables_auxiliaires, $table_des_tables, $tables_des_serveurs_sql; global $tables_principales, $tables_auxiliaires;
static $tables_externes = array(); static $tables_externes = array();
if (isset($tables_externes[$nom])) if (isset($tables_externes[$nom]))
......
...@@ -553,12 +553,12 @@ function spip_pg_errno() { ...@@ -553,12 +553,12 @@ function spip_pg_errno() {
} }
// http://doc.spip.org/@spip_pg_showtable // http://doc.spip.org/@spip_pg_showtable
function spip_pg_showtable($nom_table) function spip_pg_showtable($nom_table, $serveur='')
{ {
$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0]; $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
$link = $connexion['link']; $link = $connexion['link'];
$res = pg_query($link, "SELECT column_name, column_default, data_type FROM information_schema.columns WHERE table_name=" . _q($nom_table)); $res = pg_query($link, "SELECT column_name, column_default, data_type FROM information_schema.columns WHERE table_name ILIKE " . _q($nom_table));
if (!$res) return false; if (!$res) return false;
...@@ -567,13 +567,13 @@ function spip_pg_showtable($nom_table) ...@@ -567,13 +567,13 @@ function spip_pg_showtable($nom_table)
$fields[$field[0]] = $field[2] . (!$field[1] ? '' : (" DEFAULT " . $field[1])); $fields[$field[0]] = $field[2] . (!$field[1] ? '' : (" DEFAULT " . $field[1]));
} }
$res = pg_query($link, "SELECT indexdef FROM pg_indexes WHERE tablename=" . _q($nom_table)); $res = pg_query($link, "SELECT indexdef FROM pg_indexes WHERE tablename ILIKE " . _q($nom_table));
$keys = array(); $keys = array();
while($index = pg_fetch_array($res, NULL, PGSQL_NUM)) { while($index = pg_fetch_array($res, NULL, PGSQL_NUM)) {
if (preg_match('/CREATE\s+(UNIQUE\s+)?INDEX.*\((.*)\)$/', if (preg_match('/CREATE\s+(UNIQUE\s+)?INDEX.*\((.*)\)$/',
$index[0],$r)) { $index[0],$r)) {
$index = split(',', $r[2]); $index = split(',', $r[2]);
$keys[($r[1] ? "PRIMARY KEY " : "KEY ") . $index[0]] = $keys[($r[1] ? "PRIMARY KEY" : ("KEY " . $index[0]))] =
$r[2]; $r[2];
} }
} }
...@@ -667,7 +667,7 @@ function spip_pg_create($nom, $champs, $cles, $autoinc=false, $temporary=false, ...@@ -667,7 +667,7 @@ function spip_pg_create($nom, $champs, $cles, $autoinc=false, $temporary=false,
if (!$r) if (!$r)
spip_log("table $nom deja la"); spip_log("table $nom deja la");
else { else {
foreach($keys as $index) {@pg_query($link, $index);} foreach($keys as $index) {pg_query($link, $index);}
} }
return $r; return $r;
} }
......
...@@ -1049,8 +1049,8 @@ function trouver_table($type, $boucle) ...@@ -1049,8 +1049,8 @@ function trouver_table($type, $boucle)
if (!isset($tables_des_serveurs_sql[$s][$nom_table])) { if (!isset($tables_des_serveurs_sql[$s][$nom_table])) {
$desc = sql_showtable($nom_table, $serveur, ($nom_table != $type)); $desc = sql_showtable($nom_table, $serveur, ($nom_table != $type));
if (!$desc) { if (!$desc OR !$desc['field']) {
erreur_squelette(_T('zbug_table_inconnue', array('table' => $type)), erreur_squelette(_T('zbug_table_inconnue', array('table' => $s ? "$serveur:$type" : $type)),
$boucle->id_boucle); $boucle->id_boucle);
return null; return null;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter