Skip to content
Extraits de code Groupes Projets
Valider dc9eba7d rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Corrections PostGreSQL

- certains retours de !$requeter étaient mal placés
- un argument de la fonction spip_pg_countsel() n'était pas à sa place
parent 9cba8b9d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -98,7 +98,7 @@ $GLOBALS['spip_pg_functions_1'] = array( ...@@ -98,7 +98,7 @@ $GLOBALS['spip_pg_functions_1'] = array(
// Par ou ca passe une fois les traductions faites // Par ou ca passe une fois les traductions faites
// http://doc.spip.org/@spip_pg_trace_query // http://doc.spip.org/@spip_pg_trace_query
function spip_pg_trace_query($query, $serveur='',$requeter=true) function spip_pg_trace_query($query, $serveur='')
{ {
$connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0]; $connexion = $GLOBALS['connexions'][$serveur ? $serveur : 0];
$prefixe = $connexion['prefixe']; $prefixe = $connexion['prefixe'];
...@@ -274,7 +274,7 @@ function spip_pg_select($select, $from, $where='', ...@@ -274,7 +274,7 @@ function spip_pg_select($select, $from, $where='',
$having = join("\n\tAND ", array_map('calculer_pg_where', $having)); $having = join("\n\tAND ", array_map('calculer_pg_where', $having));
} }
$from = spip_pg_from($from, $prefixe); $from = spip_pg_from($from, $prefixe);
$q = "SELECT ". $select $query = "SELECT ". $select
. (!$from ? '' : "\nFROM $from") . (!$from ? '' : "\nFROM $from")
. (!$where ? '' : ("\nWHERE " . (!is_array($where) ? calculer_pg_where($where) : (join("\n\tAND ", array_map('calculer_pg_where', $where)))))) . (!$where ? '' : ("\nWHERE " . (!is_array($where) ? calculer_pg_where($where) : (join("\n\tAND ", array_map('calculer_pg_where', $where))))))
. spip_pg_groupby($groupby, $from, $select) . spip_pg_groupby($groupby, $from, $select)
...@@ -288,12 +288,15 @@ function spip_pg_select($select, $from, $where='', ...@@ -288,12 +288,15 @@ function spip_pg_select($select, $from, $where='',
if ($requeter && $GLOBALS['var_mode'] == 'debug') { if ($requeter && $GLOBALS['var_mode'] == 'debug') {
include_spip('public/debug'); include_spip('public/debug');
boucle_debug_requete($q); boucle_debug_requete($query);
} }
if (!($res = spip_pg_trace_query($q, $serveur, $requeter))) { // renvoyer la requete inerte si demandee
if (!$requeter) return $query;
if (!($res = spip_pg_trace_query($query, $serveur))) {
include_spip('public/debug'); include_spip('public/debug');
erreur_requete_boucle($q, 0, 0); erreur_requete_boucle($query, 0, 0);
} }
return $res; return $res;
...@@ -517,13 +520,14 @@ function spip_pg_fetch($res, $t='', $serveur='',$requeter=true) { ...@@ -517,13 +520,14 @@ function spip_pg_fetch($res, $t='', $serveur='',$requeter=true) {
if ($res) $res = pg_fetch_array($res, NULL, PGSQL_ASSOC); if ($res) $res = pg_fetch_array($res, NULL, PGSQL_ASSOC);
return $res; return $res;
} }
// http://doc.spip.org/@spip_pg_countsel // http://doc.spip.org/@spip_pg_countsel
function spip_pg_countsel($from = array(), $where = array(), function spip_pg_countsel($from = array(), $where = array(),
$groupby=array(), $limit='', $having = array(), $serveur='',$requeter=true) $groupby=array(), $limit='', $sousrequete = '',
$having = array(), $serveur='',$requeter=true)
{ {
$r = spip_pg_select('COUNT(*)', $from, $where, $r = spip_pg_select('COUNT(*)', $from, $where,
$groupby, '', $limit, $sousrequete, $having, '','', $serveur, $requeter); $groupby, '', $limit, $having, $serveur, $requeter);
if ($r && $requeter) list($r) = pg_fetch_array($r, NULL, PGSQL_NUM); if ($r && $requeter) list($r) = pg_fetch_array($r, NULL, PGSQL_NUM);
return $r; return $r;
} }
...@@ -546,10 +550,14 @@ function spip_pg_delete($table, $where='', $serveur='',$requeter=true) { ...@@ -546,10 +550,14 @@ function spip_pg_delete($table, $where='', $serveur='',$requeter=true) {
$link = $connexion['link']; $link = $connexion['link'];
$db = $connexion['db']; $db = $connexion['db'];
if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table); if ($prefixe) $table = preg_replace('/^spip/', $prefixe, $table);
return spip_pg_trace_query(
calculer_pg_expression('DELETE FROM', $table, ',') $query = calculer_pg_expression('DELETE FROM', $table, ',')
. calculer_pg_expression('WHERE', $where, 'AND'), . calculer_pg_expression('WHERE', $where, 'AND');
$serveur, $requeter);
// renvoyer la requete inerte si demandee
if (!$requeter) return $query;
return spip_pg_trace_query($query, $serveur);
} }
// http://doc.spip.org/@spip_pg_insert // http://doc.spip.org/@spip_pg_insert
...@@ -611,11 +619,14 @@ function spip_pg_update($table, $champs, $where='', $desc='', $serveur='',$reque ...@@ -611,11 +619,14 @@ function spip_pg_update($table, $champs, $where='', $desc='', $serveur='',$reque
$set[] = $champ . '=' . $val; $set[] = $champ . '=' . $val;
} }
return spip_pg_trace_query( $query = calculer_pg_expression('UPDATE', $table, ',')
calculer_pg_expression('UPDATE', $table, ',')
. calculer_pg_expression('SET', $set, ',') . calculer_pg_expression('SET', $set, ',')
. calculer_pg_expression('WHERE', $where, 'AND'), . calculer_pg_expression('WHERE', $where, 'AND');
$serveur, $requeter);
// renvoyer la requete inerte si demandee
if (!$requeter) return $query;
return spip_pg_trace_query($query, $serveur);
} }
// idem, mais les valeurs sont des constantes a mettre entre apostrophes // idem, mais les valeurs sont des constantes a mettre entre apostrophes
......
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