clean up intermediate tables earlier with --drop

When --drop is given, we can remove all node geometry information
already after the import with osm2pgsql. Also drop all unnecessary
tables before creating the final indices.
This commit is contained in:
Sarah Hoffmann
2020-02-12 11:03:20 +01:00
parent 97b892fac2
commit b9171dd10b
4 changed files with 30 additions and 12 deletions

View File

@@ -16,6 +16,7 @@ class SetupFunctions
protected $bEnableDiffUpdates;
protected $bEnableDebugStatements;
protected $bNoPartitions;
protected $bDrop;
protected $oDB = null;
public function __construct(array $aCMDResult)
@@ -74,6 +75,8 @@ class SetupFunctions
} else {
$this->bEnableDiffUpdates = false;
}
$this->bDrop = $aCMDResult['drop'];
}
public function createDB()
@@ -208,6 +211,11 @@ class SetupFunctions
if (!$this->sIgnoreErrors && !$this->oDB->getRow('select * from place limit 1')) {
fail('No Data');
}
if ($this->bDrop) {
$this->dropTable('planet_osm_nodes');
$this->removeFlatnodeFile();
}
}
public function createFunctions()
@@ -576,6 +584,9 @@ class SetupFunctions
}
$sTemplate = file_get_contents(CONST_BasePath.'/sql/indices.src.sql');
if (!$this->bDrop) {
$sTemplate .= file_get_contents(CONST_BasePath.'/sql/indices_updates.src.sql');
}
if (!$this->dbReverseOnly()) {
$sTemplate .= file_get_contents(CONST_BasePath.'/sql/indices_search.src.sql');
}
@@ -655,6 +666,11 @@ class SetupFunctions
$this->dropTable($sDrop);
}
$this->removeFlatnodeFile();
}
private function removeFlatnodeFile()
{
if (!is_null(CONST_Osm2pgsql_Flatnode_File) && CONST_Osm2pgsql_Flatnode_File) {
if (file_exists(CONST_Osm2pgsql_Flatnode_File)) {
if ($this->bVerbose) echo 'Deleting '.CONST_Osm2pgsql_Flatnode_File."\n";

View File

@@ -8,7 +8,6 @@ CREATE INDEX CONCURRENTLY idx_place_addressline_address_place_id on place_addres
DROP INDEX CONCURRENTLY IF EXISTS idx_placex_rank_search;
CREATE INDEX CONCURRENTLY idx_placex_rank_search ON placex USING BTREE (rank_search) {ts:search-index};
CREATE INDEX CONCURRENTLY idx_placex_rank_address ON placex USING BTREE (rank_address) {ts:search-index};
CREATE INDEX CONCURRENTLY idx_placex_pendingsector ON placex USING BTREE (rank_search,geometry_sector) {ts:address-index} where indexed_status > 0;
CREATE INDEX CONCURRENTLY idx_placex_parent_place_id ON placex USING BTREE (parent_place_id) {ts:search-index} where parent_place_id IS NOT NULL;
CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_lookupPoint
@@ -29,14 +28,8 @@ CREATE INDEX CONCURRENTLY idx_placex_geometry_reverse_placeNode
GRANT SELECT ON table country_osm_grid to "{www-user}";
CREATE INDEX CONCURRENTLY idx_location_area_country_place_id ON location_area_country USING BTREE (place_id) {ts:address-index};
CREATE INDEX CONCURRENTLY idx_osmline_parent_place_id ON location_property_osmline USING BTREE (parent_place_id) {ts:search-index};
CREATE INDEX CONCURRENTLY idx_osmline_parent_osm_id ON location_property_osmline USING BTREE (osm_id) {ts:search-index};
DROP INDEX CONCURRENTLY IF EXISTS place_id_idx;
CREATE UNIQUE INDEX CONCURRENTLY idx_place_osm_unique on place using btree(osm_id,osm_type,class,type) {ts:address-index};
CREATE UNIQUE INDEX CONCURRENTLY idx_postcode_id ON location_postcode USING BTREE (place_id) {ts:search-index};
CREATE INDEX CONCURRENTLY idx_postcode_postcode ON location_postcode USING BTREE (postcode) {ts:search-index};

View File

@@ -0,0 +1,9 @@
-- Indices used only during search and update.
-- These indices are created only after the indexing process is done.
CREATE INDEX CONCURRENTLY idx_placex_pendingsector ON placex USING BTREE (rank_search,geometry_sector) {ts:address-index} where indexed_status > 0;
CREATE INDEX CONCURRENTLY idx_location_area_country_place_id ON location_area_country USING BTREE (place_id) {ts:address-index};
DROP INDEX CONCURRENTLY IF EXISTS place_id_idx;
CREATE UNIQUE INDEX CONCURRENTLY idx_place_osm_unique on place using btree(osm_id,osm_type,class) {ts:address-index};

View File

@@ -138,6 +138,11 @@ if ($aCMDResult['index'] || $aCMDResult['all']) {
$oSetup->index($aCMDResult['index-noanalyse']);
}
if ($aCMDResult['drop']) {
$bDidSomething = true;
$oSetup->drop($aCMDResult);
}
if ($aCMDResult['create-search-indices'] || $aCMDResult['all']) {
$bDidSomething = true;
$oSetup->createSearchIndices();
@@ -148,11 +153,6 @@ if ($aCMDResult['create-country-names'] || $aCMDResult['all']) {
$oSetup->createCountryNames($aCMDResult);
}
if ($aCMDResult['drop']) {
$bDidSomething = true;
$oSetup->drop($aCMDResult);
}
// ******************************************************
// If we did something, repeat the warnings
if (!$bDidSomething) {