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

Correction de deux bugs sur SQLite

- un test sur la version de sqlite oublié lors du ménage [11078]
- permettre à sqlite les sous-requetes (un élément de FROM disparaissait) introduites en [11155]
parent 7f0408ca
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -579,7 +579,7 @@ function spip_sqlite_select($select, $from, $where='', $groupby='', $orderby='', ...@@ -579,7 +579,7 @@ function spip_sqlite_select($select, $from, $where='', $groupby='', $orderby='',
// recomposer from // recomposer from
$from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from)); $from = (!is_array($from) ? $from : _sqlite_calculer_select_as($from));
$query = $query =
_sqlite_calculer_expression('SELECT', $select, ', ') _sqlite_calculer_expression('SELECT', $select, ', ')
. _sqlite_calculer_expression('FROM', $from, ', ') . _sqlite_calculer_expression('FROM', $from, ', ')
...@@ -590,7 +590,6 @@ function spip_sqlite_select($select, $from, $where='', $groupby='', $orderby='', ...@@ -590,7 +590,6 @@ function spip_sqlite_select($select, $from, $where='', $groupby='', $orderby='',
. ($limit ? "\nLIMIT $limit" : ''); . ($limit ? "\nLIMIT $limit" : '');
// Erreur ? C'est du debug de squelette, ou une erreur du serveur // Erreur ? C'est du debug de squelette, ou une erreur du serveur
if (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode'] == 'debug') { if (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode'] == 'debug') {
include_spip('public/debug'); include_spip('public/debug');
boucle_debug_requete($query); boucle_debug_requete($query);
...@@ -826,10 +825,9 @@ function _sqlite_calculer_select_as($args){ ...@@ -826,10 +825,9 @@ function _sqlite_calculer_select_as($args){
} else $join =''; } else $join ='';
$res = ''; $res = '';
foreach($args as $k => $v) { foreach($args as $k => $v) {
$res .= ', ' . $v . (is_numeric($k) ? '' : " AS '$k'") . $join; $res .= ', ' . $v . (is_numeric($k) ? '' : " AS '$k'");
$join = '';
} }
return substr($res,2); return substr($res,2) . $join;
} }
...@@ -1199,6 +1197,8 @@ class sqlite_traiter_requete{ ...@@ -1199,6 +1197,8 @@ class sqlite_traiter_requete{
var $db = ''; // le nom de la base var $db = ''; // le nom de la base
var $tracer = false; // doit-on tracer les requetes (var_profile) var $tracer = false; // doit-on tracer les requetes (var_profile)
var $sqlite_version = ''; // Version de sqlite (2 ou 3)
// Pour les corrections a effectuer sur les requetes : // Pour les corrections a effectuer sur les requetes :
var $textes = array(); // array(code=>'texte') trouvé var $textes = array(); // array(code=>'texte') trouvé
var $codeEchappements = "%@##@%"; var $codeEchappements = "%@##@%";
...@@ -1214,6 +1214,8 @@ class sqlite_traiter_requete{ ...@@ -1214,6 +1214,8 @@ class sqlite_traiter_requete{
return false; return false;
} }
$this->sqlite_version =_sqlite_is_version('', $this->link);
$this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe']; $this->prefixe = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['prefixe'];
$this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db']; $this->db = $GLOBALS['connexions'][$this->serveur ? $this->serveur : 0]['db'];
...@@ -1228,7 +1230,7 @@ class sqlite_traiter_requete{ ...@@ -1228,7 +1230,7 @@ class sqlite_traiter_requete{
$t = $this->tracer ? trace_query_start(): 0; $t = $this->tracer ? trace_query_start(): 0;
//echo("<br /><b>executer_requete() $this->serveur >></b> $this->query"); // boum ? pourquoi ? //echo("<br /><b>executer_requete() $this->serveur >></b> $this->query"); // boum ? pourquoi ?
if ($this->link){ if ($this->link){
if (_sqlite_is_version(3, $this->link)) { if ($this->sqlite_version == 3) {
$r = $this->link->query($this->query); $r = $this->link->query($this->query);
// comptage : oblige de compter le nombre d'entrees retournees // comptage : oblige de compter le nombre d'entrees retournees
// par une requete SELECT // par une requete SELECT
......
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