try okapi update only if okapi is installed
This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
$opt['rootpath'] = dirname(__FILE__) . '/../htdocs/';
|
$opt['rootpath'] = dirname(__FILE__) . '/../htdocs/';
|
||||||
require_once($opt['rootpath'] . 'lib2/cli.inc.php');
|
require_once($opt['rootpath'] . 'lib2/cli.inc.php');
|
||||||
|
|
||||||
if (!field_exists('cache_attrib','gc_id'))
|
if (!sql_field_exists('cache_attrib','gc_id'))
|
||||||
die("\n
|
die("\n
|
||||||
ERROR: Database structure too old. You must first do a manual update
|
ERROR: Database structure too old. You must first do a manual update
|
||||||
up to commit 467aae4 (March 27, 2013) to enable automatic updates.
|
up to commit 467aae4 (March 27, 2013) to enable automatic updates.
|
||||||
@@ -44,63 +44,28 @@
|
|||||||
} while ($db_version > 0);
|
} while ($db_version > 0);
|
||||||
|
|
||||||
|
|
||||||
// test if a database table exists
|
|
||||||
function table_exists($table)
|
|
||||||
{
|
|
||||||
global $opt;
|
|
||||||
|
|
||||||
return sql_value("SELECT COUNT(*)
|
|
||||||
FROM `information_schema`.`tables`
|
|
||||||
WHERE `table_schema`='&1' AND `table_name`='&2'",
|
|
||||||
0, $opt['db']['placeholder']['db'], $table) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// test if a database field exists
|
|
||||||
function field_exists($table, $field)
|
|
||||||
{
|
|
||||||
global $opt;
|
|
||||||
|
|
||||||
return sql_value("SELECT COUNT(*)
|
|
||||||
FROM `information_schema`.`columns`
|
|
||||||
WHERE `table_schema`='&1' AND `table_name`='&2' AND `column_name`='&3'",
|
|
||||||
0, $opt['db']['placeholder']['db'], $table, $field) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get type of a database field
|
|
||||||
function field_type($table, $field)
|
|
||||||
{
|
|
||||||
global $opt;
|
|
||||||
|
|
||||||
return strtoupper(
|
|
||||||
sql_value("SELECT `data_type`
|
|
||||||
FROM `information_schema`.`columns`
|
|
||||||
WHERE `table_schema`='&1' AND `table_name`='&2' AND `column_name`='&3'",
|
|
||||||
'', $opt['db']['placeholder']['db'], $table, $field) );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Database mutations
|
// Database mutations
|
||||||
// - must be consecutively numbered
|
// - must be consecutively numbered
|
||||||
// - should behave well if run multiple times
|
// - should behave well if run multiple times
|
||||||
|
|
||||||
function dbv_100() // expands log date to datetime, to enable time logging
|
function dbv_100() // expands log date to datetime, to enable time logging
|
||||||
{
|
{
|
||||||
if (field_type('cache_logs','date') != 'DATETIME')
|
if (sql_field_type('cache_logs','date') != 'DATETIME')
|
||||||
sql("ALTER TABLE `cache_logs` CHANGE COLUMN `date` `date` DATETIME NOT NULL");
|
sql("ALTER TABLE `cache_logs` CHANGE COLUMN `date` `date` DATETIME NOT NULL");
|
||||||
if (field_type('cache_logs_archived','date') != 'DATETIME')
|
if (sql_field_type('cache_logs_archived','date') != 'DATETIME')
|
||||||
sql("ALTER TABLE `cache_logs_archived` CHANGE COLUMN `date` `date` DATETIME NOT NULL");
|
sql("ALTER TABLE `cache_logs_archived` CHANGE COLUMN `date` `date` DATETIME NOT NULL");
|
||||||
}
|
}
|
||||||
|
|
||||||
function dbv_101() // add fields for fixing OKAPI issue #232
|
function dbv_101() // add fields for fixing OKAPI issue #232
|
||||||
{
|
{
|
||||||
if (!field_exists('caches','meta_last_modified'))
|
if (!sql_field_exists('caches','meta_last_modified'))
|
||||||
{
|
{
|
||||||
// initialize with '0000-00-00 00:00:00' for existing data, that's ok
|
// initialize with '0000-00-00 00:00:00' for existing data, that's ok
|
||||||
sql("ALTER TABLE `caches` ADD COLUMN `meta_last_modified` DATETIME NOT NULL COMMENT 'via Trigger (cache_logs)' AFTER `listing_last_modified`");
|
sql("ALTER TABLE `caches` ADD COLUMN `meta_last_modified` DATETIME NOT NULL COMMENT 'via Trigger (cache_logs)' AFTER `listing_last_modified`");
|
||||||
}
|
}
|
||||||
if (!field_exists('cache_logs','log_last_modified'))
|
if (!sql_field_exists('cache_logs','log_last_modified'))
|
||||||
{
|
{
|
||||||
if (field_exists('cache_logs','okapi_syncbase'))
|
if (sql_field_exists('cache_logs','okapi_syncbase'))
|
||||||
$after = 'okapi_syncbase';
|
$after = 'okapi_syncbase';
|
||||||
else
|
else
|
||||||
$after = 'last_modified';
|
$after = 'last_modified';
|
||||||
@@ -110,9 +75,9 @@
|
|||||||
IFNULL((SELECT MAX(`last_modified`) FROM `pictures` WHERE `pictures`.`object_type`=1 AND `pictures`.`object_id` = `cache_logs`.`id`),'0')
|
IFNULL((SELECT MAX(`last_modified`) FROM `pictures` WHERE `pictures`.`object_type`=1 AND `pictures`.`object_id` = `cache_logs`.`id`),'0')
|
||||||
)");
|
)");
|
||||||
}
|
}
|
||||||
if (!field_exists('cache_logs_archived','log_last_modified'))
|
if (!sql_field_exists('cache_logs_archived','log_last_modified'))
|
||||||
{
|
{
|
||||||
if (field_exists('cache_logs_archived','okapi_syncbase'))
|
if (sql_field_exists('cache_logs_archived','okapi_syncbase'))
|
||||||
$after = 'okapi_syncbase';
|
$after = 'okapi_syncbase';
|
||||||
else
|
else
|
||||||
$after = 'last_modified';
|
$after = 'last_modified';
|
||||||
@@ -130,18 +95,18 @@
|
|||||||
|
|
||||||
function dbv_103() // update comments on static tables
|
function dbv_103() // update comments on static tables
|
||||||
{
|
{
|
||||||
if (table_exists('geodb_areas')) sql("ALTER TABLE `geodb_areas` COMMENT = 'not in use'");
|
if (sql_table_exists('geodb_areas')) sql("ALTER TABLE `geodb_areas` COMMENT = 'not in use'");
|
||||||
if (table_exists('geodb_changelog')) sql("ALTER TABLE `geodb_changelog` COMMENT = 'not in use'");
|
if (sql_table_exists('geodb_changelog')) sql("ALTER TABLE `geodb_changelog` COMMENT = 'not in use'");
|
||||||
if (table_exists('geodb_coordinates')) sql("ALTER TABLE `geodb_coordinates` COMMENT = 'static content'");
|
if (sql_table_exists('geodb_coordinates')) sql("ALTER TABLE `geodb_coordinates` COMMENT = 'static content'");
|
||||||
if (table_exists('geodb_floatdata')) sql("ALTER TABLE `geodb_floatdata` COMMENT = 'not in use'");
|
if (sql_table_exists('geodb_floatdata')) sql("ALTER TABLE `geodb_floatdata` COMMENT = 'not in use'");
|
||||||
if (table_exists('geodb_hierarchies')) sql("ALTER TABLE `geodb_hierarchies` COMMENT = 'static content'");
|
if (sql_table_exists('geodb_hierarchies')) sql("ALTER TABLE `geodb_hierarchies` COMMENT = 'static content'");
|
||||||
if (table_exists('geodb_intdata')) sql("ALTER TABLE `geodb_intdata` COMMENT = 'not in use'");
|
if (sql_table_exists('geodb_intdata')) sql("ALTER TABLE `geodb_intdata` COMMENT = 'not in use'");
|
||||||
if (table_exists('geodb_locations')) sql("ALTER TABLE `geodb_locations` COMMENT = 'static content'");
|
if (sql_table_exists('geodb_locations')) sql("ALTER TABLE `geodb_locations` COMMENT = 'static content'");
|
||||||
if (table_exists('geodb_polygons')) sql("ALTER TABLE `geodb_polygons` COMMENT = 'not in use'");
|
if (sql_table_exists('geodb_polygons')) sql("ALTER TABLE `geodb_polygons` COMMENT = 'not in use'");
|
||||||
if (table_exists('geodb_search')) sql("ALTER TABLE `geodb_search` COMMENT = 'static content, not in use'");
|
if (sql_table_exists('geodb_search')) sql("ALTER TABLE `geodb_search` COMMENT = 'static content, not in use'");
|
||||||
if (table_exists('geodb_textdata')) sql("ALTER TABLE `geodb_textdata` COMMENT = 'static content'");
|
if (sql_table_exists('geodb_textdata')) sql("ALTER TABLE `geodb_textdata` COMMENT = 'static content'");
|
||||||
if (table_exists('geodb_type_names')) sql("ALTER TABLE `geodb_type_names` COMMENT = 'not in use'");
|
if (sql_table_exists('geodb_type_names')) sql("ALTER TABLE `geodb_type_names` COMMENT = 'not in use'");
|
||||||
if (table_exists('pw_dict')) sql("ALTER TABLE `pw_dict` COMMENT = 'static content'");
|
if (sql_table_exists('pw_dict')) sql("ALTER TABLE `pw_dict` COMMENT = 'static content'");
|
||||||
sql("ALTER TABLE `npa_areas` COMMENT = 'static content'");
|
sql("ALTER TABLE `npa_areas` COMMENT = 'static content'");
|
||||||
sql("ALTER TABLE `npa_types` COMMENT = 'static content'");
|
sql("ALTER TABLE `npa_types` COMMENT = 'static content'");
|
||||||
sql("ALTER TABLE `nuts_codes` COMMENT = 'static content'");
|
sql("ALTER TABLE `nuts_codes` COMMENT = 'static content'");
|
||||||
@@ -154,15 +119,15 @@
|
|||||||
sql("ALTER TABLE `cache_logtype` COMMENT = 'obsolete'");
|
sql("ALTER TABLE `cache_logtype` COMMENT = 'obsolete'");
|
||||||
sql("ALTER TABLE `log_types` CHANGE COLUMN `cache_status` `cache_status` tinyint(1) NOT NULL default '0'");
|
sql("ALTER TABLE `log_types` CHANGE COLUMN `cache_status` `cache_status` tinyint(1) NOT NULL default '0'");
|
||||||
sql("ALTER TABLE `log_types` CHANGE COLUMN `en` `en` varchar(60) NOT NULL");
|
sql("ALTER TABLE `log_types` CHANGE COLUMN `en` `en` varchar(60) NOT NULL");
|
||||||
if (!field_exists('stat_caches','maintenance'))
|
if (!sql_field_exists('stat_caches','maintenance'))
|
||||||
sql("ALTER TABLE `stat_caches` ADD COLUMN `maintenance` smallint(5) unsigned NOT NULL AFTER `will_attend`");
|
sql("ALTER TABLE `stat_caches` ADD COLUMN `maintenance` smallint(5) unsigned NOT NULL AFTER `will_attend`");
|
||||||
if (!field_exists('stat_cache_logs','maintenance'))
|
if (!sql_field_exists('stat_cache_logs','maintenance'))
|
||||||
sql("ALTER TABLE `stat_cache_logs` ADD COLUMN `maintenance` smallint(5) unsigned NOT NULL AFTER `will_attend`");
|
sql("ALTER TABLE `stat_cache_logs` ADD COLUMN `maintenance` smallint(5) unsigned NOT NULL AFTER `will_attend`");
|
||||||
if (!field_exists('stat_user','maintenance'))
|
if (!sql_field_exists('stat_user','maintenance'))
|
||||||
sql("ALTER TABLE `stat_user` ADD COLUMN `maintenance` smallint(5) unsigned NOT NULL AFTER `will_attend`");
|
sql("ALTER TABLE `stat_user` ADD COLUMN `maintenance` smallint(5) unsigned NOT NULL AFTER `will_attend`");
|
||||||
if (!field_exists('cache_logs','oc_team_comment'))
|
if (!sql_field_exists('cache_logs','oc_team_comment'))
|
||||||
sql("ALTER TABLE `cache_logs` ADD COLUMN `oc_team_comment` tinyint(1) NOT NULL default '0' AFTER `type`");
|
sql("ALTER TABLE `cache_logs` ADD COLUMN `oc_team_comment` tinyint(1) NOT NULL default '0' AFTER `type`");
|
||||||
if (!field_exists('cache_logs_archived','oc_team_comment'))
|
if (!sql_field_exists('cache_logs_archived','oc_team_comment'))
|
||||||
sql("ALTER TABLE `cache_logs_archived` ADD COLUMN `oc_team_comment` tinyint(1) NOT NULL default '0' AFTER `type`");
|
sql("ALTER TABLE `cache_logs_archived` ADD COLUMN `oc_team_comment` tinyint(1) NOT NULL default '0' AFTER `type`");
|
||||||
// The new fields need not to be initialized, as these are new features and all
|
// The new fields need not to be initialized, as these are new features and all
|
||||||
// values are initally zero.
|
// values are initally zero.
|
||||||
@@ -170,9 +135,9 @@
|
|||||||
|
|
||||||
function dbv_105() // HTML user profile texts
|
function dbv_105() // HTML user profile texts
|
||||||
{
|
{
|
||||||
if (!field_exists('user','desc_htmledit'))
|
if (!sql_field_exists('user','desc_htmledit'))
|
||||||
sql("ALTER TABLE `user` ADD COLUMN `desc_htmledit` tinyint(1) unsigned NOT NULL DEFAULT '1' AFTER `data_license`");
|
sql("ALTER TABLE `user` ADD COLUMN `desc_htmledit` tinyint(1) unsigned NOT NULL DEFAULT '1' AFTER `data_license`");
|
||||||
if (!field_exists('user','description'))
|
if (!sql_field_exists('user','description'))
|
||||||
{
|
{
|
||||||
sql("ALTER TABLE `user` ADD COLUMN `description` mediumtext NOT NULL AFTER `data_license`");
|
sql("ALTER TABLE `user` ADD COLUMN `description` mediumtext NOT NULL AFTER `data_license`");
|
||||||
$rs = sql("SELECT `user`.`user_id`,`user_options`.`option_value` FROM `user`,`user_options` WHERE `user_options`.`user_id`=`user`.`user_id` AND `user_options`.`option_id`=3");
|
$rs = sql("SELECT `user`.`user_id`,`user_options`.`option_value` FROM `user`,`user_options` WHERE `user_options`.`user_id`=`user`.`user_id` AND `user_options`.`option_id`=3");
|
||||||
|
|||||||
@@ -25,11 +25,23 @@
|
|||||||
chdir ($rootpath . 'doc/sql/stored-proc');
|
chdir ($rootpath . 'doc/sql/stored-proc');
|
||||||
system('php maintain.php');
|
system('php maintain.php');
|
||||||
|
|
||||||
echo "updating OKAPI database\n";
|
// We do *two* tests for OKAPI presence to get some robustness agains internal OKAPI changes.
|
||||||
chdir ($rootpath . '../bin');
|
// This should be replaced by a facade function call.
|
||||||
system('php okapi-update.php | grep -i -e mutation');
|
$okapi_vars = sql_table_exists('okapi_vars');
|
||||||
|
$okapi_syncbase = sql_field_exists('caches','okapi_syncbase');
|
||||||
|
if ($okapi_vars != $okapi_syncbase)
|
||||||
|
{
|
||||||
|
echo "!! unknown OKAPI configuration; either dbupdate.php needs an update or your database configuration is wrong\n";
|
||||||
|
}
|
||||||
|
else if ($okapi_vars)
|
||||||
|
{
|
||||||
|
echo "updating OKAPI database\n";
|
||||||
|
chdir ($rootpath . '../bin');
|
||||||
|
system('php okapi-update.php | grep -i -e mutation');
|
||||||
|
}
|
||||||
|
|
||||||
echo "resetting webcache:\n";
|
echo "resetting webcache:\n";
|
||||||
|
chdir ($rootpath . '../bin');
|
||||||
system('php clear-webcache.php');
|
system('php clear-webcache.php');
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -32,6 +32,10 @@
|
|||||||
sql_export_table($f, $table) ... export table to file
|
sql_export_table($f, $table) ... export table to file
|
||||||
sql_export_table_to_file($filename, $table)
|
sql_export_table_to_file($filename, $table)
|
||||||
|
|
||||||
|
sql_table_exists ... tests if a table exists
|
||||||
|
sql_field_exists ... tests if a table and a field in this table exist
|
||||||
|
sql_field_type ... queries the type of a field (uppercase letters)
|
||||||
|
|
||||||
// slave query functions
|
// slave query functions
|
||||||
sql_slave_exclude() ... do not use slave servers for the current user
|
sql_slave_exclude() ... do not use slave servers for the current user
|
||||||
until the slaves have replicated to this point
|
until the slaves have replicated to this point
|
||||||
@@ -1081,4 +1085,39 @@
|
|||||||
sql_export_structure($f, $table);
|
sql_export_structure($f, $table);
|
||||||
fclose($f);
|
fclose($f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test if a database table exists
|
||||||
|
function sql_table_exists($table)
|
||||||
|
{
|
||||||
|
global $opt;
|
||||||
|
|
||||||
|
return sql_value("SELECT COUNT(*)
|
||||||
|
FROM `information_schema`.`tables`
|
||||||
|
WHERE `table_schema`='&1' AND `table_name`='&2'",
|
||||||
|
0, $opt['db']['placeholder']['db'], $table) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// test if a database field exists
|
||||||
|
function sql_field_exists($table, $field)
|
||||||
|
{
|
||||||
|
global $opt;
|
||||||
|
|
||||||
|
return sql_value("SELECT COUNT(*)
|
||||||
|
FROM `information_schema`.`columns`
|
||||||
|
WHERE `table_schema`='&1' AND `table_name`='&2' AND `column_name`='&3'",
|
||||||
|
0, $opt['db']['placeholder']['db'], $table, $field) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get type of a database field
|
||||||
|
function sql_field_type($table, $field)
|
||||||
|
{
|
||||||
|
global $opt;
|
||||||
|
|
||||||
|
return strtoupper(
|
||||||
|
sql_value("SELECT `data_type`
|
||||||
|
FROM `information_schema`.`columns`
|
||||||
|
WHERE `table_schema`='&1' AND `table_name`='&2' AND `column_name`='&3'",
|
||||||
|
'', $opt['db']['placeholder']['db'], $table, $field) );
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
Reference in New Issue
Block a user