}
$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).")";
$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' : '';
$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.