mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-14 18:37:58 +00:00
Merge branch 'drop' of https://github.com/woodpeck/Nominatim
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
array('index-output', '', 0, 1, 1, 1, 'string', 'File to dump index information to'),
|
||||
array('create-search-indices', '', 0, 1, 0, 0, 'bool', 'Create additional indices required for search and update'),
|
||||
array('create-website', '', 0, 1, 1, 1, 'realpath', 'Create symlinks to setup web directory'),
|
||||
array('drop', '', 0, 1, 0, 0, 'bool', 'Drop tables needed for updates, making the database readonly'),
|
||||
);
|
||||
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
|
||||
|
||||
@@ -557,7 +558,7 @@
|
||||
if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
|
||||
}
|
||||
|
||||
if ($aCMDResult['osmosis-init'] || $aCMDResult['all'])
|
||||
if ($aCMDResult['osmosis-init'] || ($aCMDResult['all'] && !$aCMDResult['drop'])) // no use doing osmosis-init when dropping update tables
|
||||
{
|
||||
$bDidSomething = true;
|
||||
$oDB =& getDB();
|
||||
@@ -729,6 +730,63 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($aCMDResult['drop']))
|
||||
{
|
||||
$bDidSomething = true;
|
||||
|
||||
// tables we want to keep. everything else goes.
|
||||
$aKeepTables = array(
|
||||
"*columns",
|
||||
"import_polygon_*",
|
||||
"import_status",
|
||||
"place_addressline",
|
||||
"location_property*",
|
||||
"placex",
|
||||
"search_name",
|
||||
"seq_*",
|
||||
"word",
|
||||
"query_log",
|
||||
"new_query_log",
|
||||
"gb_postcode",
|
||||
"spatial_ref_sys"
|
||||
);
|
||||
|
||||
$oDB =& getDB();
|
||||
$aDropTables = array();
|
||||
$aHaveTables = $oDB->getCol("SELECT tablename FROM pg_tables WHERE schemaname='public'");
|
||||
if (PEAR::isError($aHaveTables))
|
||||
{
|
||||
fail($aPartitions->getMessage());
|
||||
}
|
||||
foreach($aHaveTables as $sTable)
|
||||
{
|
||||
$bFound = false;
|
||||
foreach ($aKeepTables as $sKeep)
|
||||
{
|
||||
if (fnmatch($sKeep, $sTable))
|
||||
{
|
||||
$bFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$bFound) array_push($aDropTables, $sTable);
|
||||
}
|
||||
|
||||
foreach ($aDropTables as $sDrop)
|
||||
{
|
||||
if ($aCMDResult['verbose']) echo "dropping table $sDrop\n";
|
||||
@pg_query($oDB->connection, "DROP TABLE $sDrop CASCADE");
|
||||
// ignore warnings/errors as they might be caused by a table having
|
||||
// been deleted already by CASCADE
|
||||
}
|
||||
|
||||
if (!is_null(CONST_Osm2pgsql_Flatnode_File))
|
||||
{
|
||||
if ($aCMDResult['verbose']) echo "deleting ".CONST_Osm2pgsql_Flatnode_File."\n";
|
||||
unlink(CONST_Osm2pgsql_Flatnode_File);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$bDidSomething)
|
||||
{
|
||||
showUsage($aCMDOptions, true);
|
||||
|
||||
Reference in New Issue
Block a user