X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;ds=sidebyside;f=www%2Fecrire%2Freq%2Fsqlite_generique.php;h=17c0969c41291945ac903cadc12e14d9e5b5bb63;hb=f489d45ae677afde12ba9c9f70f463ea34787b45;hp=f59614169d6c6727b3d0abf1169f2b0a5b6d2c05;hpb=0dda6af18a04031b1ca8e217187966077e752fe3;p=ptitvelo%2Fweb%2Fwww.git diff --git a/www/ecrire/req/sqlite_generique.php b/www/ecrire/req/sqlite_generique.php index f596141..17c0969 100644 --- a/www/ecrire/req/sqlite_generique.php +++ b/www/ecrire/req/sqlite_generique.php @@ -512,12 +512,15 @@ function spip_sqlite_create_index($nom, $table, $champs, $unique='', $serveur = } $ifnotexists = ""; - if (_sqlite_is_version(2, '', $serveur)){ - /* simuler le IF EXISTS - version 2 */ + $version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur); + if (!function_exists('spip_version_compare')) include_spip('plugins/installer'); + + if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) { + $ifnotexists = ' IF NOT EXISTS'; + } else { + /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ $a = spip_sqlite_showtable($table, $serveur); if (isset($a['key']['KEY '.$nom])) return true; - } else { - $ifnotexists = ' IF NOT EXISTS'; } $query = "CREATE ".($unique?"UNIQUE ":"")."INDEX$ifnotexists $nom ON $table (".join(',', $champs).")"; @@ -1957,15 +1960,18 @@ function _sqlite_requete_create($nom, $champs, $cles, $autoinc = false, $tempora $ifnotexists = ""; if ($_ifnotexists){ - // simuler le IF NOT EXISTS - version 2 - if (_sqlite_is_version(2, '', $serveur)){ - $a = spip_sqlite_showtable($nom, $serveur); - if ($a) return false; - } - // sinon l'ajouter en version 3 - else { + + $version = spip_sqlite_fetch(spip_sqlite_query("select sqlite_version() AS sqlite_version",$serveur),'',$serveur); + if (!function_exists('spip_version_compare')) include_spip('plugins/installer'); + + if ($version AND spip_version_compare($version['sqlite_version'],'3.3.0','>=')) { $ifnotexists = ' IF NOT EXISTS'; + } else { + /* simuler le IF EXISTS - version 2 et sqlite < 3.3a */ + $a = spip_sqlite_showtable($table, $serveur); + if (isset($a['key']['KEY '.$nom])) return true; } + } $temporary = $temporary ? ' TEMPORARY' : ''; @@ -2273,6 +2279,11 @@ class sqlite_traducteur { $this->query = str_replace('LEFT(','_LEFT(',$this->query); } + if (strpos($this->query, 'TIMESTAMPDIFF(')!==false){ + $this->query = preg_replace('/TIMESTAMPDIFF\(\s*([^,]*)\s*,/Uims',"TIMESTAMPDIFF('\\1',",$this->query); + } + + // Correction Using // USING (non reconnu en sqlite2) // problematique car la jointure ne se fait pas du coup.