]> git.openstreetmap.org Git - nominatim.git/blobdiff - docs/admin/Migration.md
Merge pull request #1923 from lonvia/split-indexing-for-boundries
[nominatim.git] / docs / admin / Migration.md
index e3b7c0eaec36a24cd78aa517d364ae20f6456a9b..917d37859d1a7e7bdb0a7ee142343df988536b92 100644 (file)
 This page describes database migrations necessary to update existing databases
 to newer versions of Nominatim.
 
 This page describes database migrations necessary to update existing databases
 to newer versions of Nominatim.
 
-SQL statements should be executed from the postgres commandline. Execute
+SQL statements should be executed from the PostgreSQL commandline. Execute
 `psql nominatim` to enter command line mode.
 
 `psql nominatim` to enter command line mode.
 
+## 3.5.0 -> master
 
 
-## 3.2.0 -> master
+### Change order during indexing
+
+When reindexing places during updates, there is now a different order used
+which needs a different database index. Create it with the following SQL command:
+
+```sql
+CREATE INDEX idx_placex_pendingsector_rank_address
+  ON placex USING BTREE (rank_address, geometry_sector) where indexed_status > 0;
+```
+
+You can then drop the old index with:
+
+```sql
+DROP INDEX idx_placex_pendingsector
+```
+
+
+### Switching to dotenv
+
+As part of the work changing the configuration format, the configuration for
+the website is now using a separate configuration file. To create the
+configuration file, run the following command after updating:
+
+```sh
+./utils/setup.php --setup-website
+```
+
+## 3.4.0 -> 3.5.0
+
+### New Wikipedia/Wikidata importance tables
+
+The `wikipedia_*` tables have a new format that also includes references to
+Wikidata. You need to update the computation functions and the tables as
+follows:
+
+  * download the new Wikipedia tables as described in the import section
+  * reimport the tables: `./utils/setup.php --import-wikipedia-articles`
+  * update the functions: `./utils/setup.php --create-functions --enable-diff-updates`
+  * compute importance: `./utils/update.php --recompute-importance`
+
+The last step takes about 10 hours on the full planet.
+
+Remove one function (it will be recreated in the next step):
+
+```sql
+DROP FUNCTION create_country(hstore,character varying);
+```
+
+Finally, update all SQL functions:
+
+```sh
+./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
+```
+
+## 3.3.0 -> 3.4.0
+
+### Reorganisation of location_area_country table
+
+The table `location_area_country` has been optimized. You need to switch to the
+new format when you run updates. While updates are disabled, run the following
+SQL commands:
+
+```sql
+CREATE TABLE location_area_country_new AS
+  SELECT place_id, country_code, geometry FROM location_area_country;
+DROP TABLE location_area_country;
+ALTER TABLE location_area_country_new RENAME TO location_area_country;
+CREATE INDEX idx_location_area_country_geometry ON location_area_country USING GIST (geometry);
+CREATE INDEX idx_location_area_country_place_id ON location_area_country USING BTREE (place_id);
+```
+
+Finally, update all SQL functions:
+
+```sh
+./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
+```
+
+## 3.2.0 -> 3.3.0
+
+### New database connection string (DSN) format
+
+Previously database connection setting (`CONST_Database_DSN` in `settings/*.php`) had the format
+
+   * (simple) `pgsql://@/nominatim`
+   * (complex) `pgsql://johndoe:secret@machine1.domain.com:1234/db1`
+
+The new format is
+
+   * (simple) `pgsql:dbname=nominatim`
+   * (complex) `pgsql:dbname=db1;host=machine1.domain.com;port=1234;user=johndoe;password=secret`
 
 ### Natural Earth country boundaries no longer needed as fallback
 
 
 ### Natural Earth country boundaries no longer needed as fallback
 
@@ -21,6 +111,14 @@ Finally, update all SQL functions:
 ./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
 ```
 
 ./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
 ```
 
+### Configurable Address Levels
+
+The new configurable address levels require a new table. Create it with the
+following command:
+
+```sh
+./utils/update.php --update-address-levels
+```
 
 ## 3.1.0 -> 3.2.0
 
 
 ## 3.1.0 -> 3.2.0