From c0fb0a5ec04c064bb848534185b51c5d1b7bdaaf Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 4 Mar 2021 08:30:52 +0300 Subject: wip for db_migrations for core schema --- classes/config.php | 26 ++- classes/db/migrations.php | 59 +++++- classes/debug.php | 5 + schema/ttrss_schema_mysql.sql | 421 ------------------------------------------ schema/ttrss_schema_pgsql.sql | 399 --------------------------------------- schema/versions/mysql/10.sql | 12 -- schema/versions/mysql/100.sql | 7 - schema/versions/mysql/101.sql | 12 -- schema/versions/mysql/102.sql | 7 - schema/versions/mysql/103.sql | 7 - schema/versions/mysql/104.sql | 7 - schema/versions/mysql/105.sql | 11 -- schema/versions/mysql/106.sql | 12 -- schema/versions/mysql/107.sql | 15 -- schema/versions/mysql/108.sql | 7 - schema/versions/mysql/109.sql | 7 - schema/versions/mysql/11.sql | 18 -- schema/versions/mysql/110.sql | 7 - schema/versions/mysql/111.sql | 7 - schema/versions/mysql/112.sql | 15 -- schema/versions/mysql/113.sql | 8 - schema/versions/mysql/114.sql | 15 -- schema/versions/mysql/115.sql | 9 - schema/versions/mysql/116.sql | 7 - schema/versions/mysql/117.sql | 8 - schema/versions/mysql/118.sql | 16 -- schema/versions/mysql/119.sql | 7 - schema/versions/mysql/12.sql | 12 -- schema/versions/mysql/120.sql | 7 - schema/versions/mysql/121.sql | 7 - schema/versions/mysql/122.sql | 7 - schema/versions/mysql/123.sql | 9 - schema/versions/mysql/124.sql | 8 - schema/versions/mysql/125.sql | 10 - schema/versions/mysql/126.sql | 8 - schema/versions/mysql/127.sql | 5 - schema/versions/mysql/128.sql | 13 -- schema/versions/mysql/129.sql | 8 - schema/versions/mysql/13.sql | 6 - schema/versions/mysql/130.sql | 7 - schema/versions/mysql/131.sql | 7 - schema/versions/mysql/132.sql | 10 - schema/versions/mysql/133.sql | 7 - schema/versions/mysql/134.sql | 7 - schema/versions/mysql/135.sql | 8 - schema/versions/mysql/136.sql | 9 - schema/versions/mysql/137.sql | 7 - schema/versions/mysql/138.sql | 7 - schema/versions/mysql/139.sql | 13 -- schema/versions/mysql/14.sql | 4 - schema/versions/mysql/140.sql | 4 - schema/versions/mysql/141.sql | 9 - schema/versions/mysql/142.sql | 4 - schema/versions/mysql/15.sql | 5 - schema/versions/mysql/16.sql | 6 - schema/versions/mysql/17.sql | 13 -- schema/versions/mysql/18.sql | 3 - schema/versions/mysql/19.sql | 11 -- schema/versions/mysql/20.sql | 3 - schema/versions/mysql/21.sql | 3 - schema/versions/mysql/22.sql | 8 - schema/versions/mysql/23.sql | 3 - schema/versions/mysql/24.sql | 3 - schema/versions/mysql/25.sql | 3 - schema/versions/mysql/26.sql | 15 -- schema/versions/mysql/27.sql | 4 - schema/versions/mysql/28.sql | 3 - schema/versions/mysql/29.sql | 3 - schema/versions/mysql/3.sql | 43 ----- schema/versions/mysql/30.sql | 4 - schema/versions/mysql/31.sql | 6 - schema/versions/mysql/32.sql | 6 - schema/versions/mysql/33.sql | 3 - schema/versions/mysql/34.sql | 3 - schema/versions/mysql/35.sql | 1 - schema/versions/mysql/36.sql | 9 - schema/versions/mysql/37.sql | 4 - schema/versions/mysql/38.sql | 3 - schema/versions/mysql/39.sql | 5 - schema/versions/mysql/4.sql | 17 -- schema/versions/mysql/40.sql | 3 - schema/versions/mysql/41.sql | 6 - schema/versions/mysql/42.sql | 3 - schema/versions/mysql/43.sql | 3 - schema/versions/mysql/44.sql | 9 - schema/versions/mysql/45.sql | 3 - schema/versions/mysql/46.sql | 4 - schema/versions/mysql/47.sql | 9 - schema/versions/mysql/48.sql | 6 - schema/versions/mysql/49.sql | 5 - schema/versions/mysql/5.sql | 12 -- schema/versions/mysql/50.sql | 19 -- schema/versions/mysql/51.sql | 16 -- schema/versions/mysql/52.sql | 5 - schema/versions/mysql/53.sql | 11 -- schema/versions/mysql/54.sql | 7 - schema/versions/mysql/55.sql | 7 - schema/versions/mysql/56.sql | 16 -- schema/versions/mysql/57.sql | 6 - schema/versions/mysql/58.sql | 7 - schema/versions/mysql/59.sql | 13 -- schema/versions/mysql/6.sql | 20 -- schema/versions/mysql/60.sql | 20 -- schema/versions/mysql/61.sql | 9 - schema/versions/mysql/62.sql | 13 -- schema/versions/mysql/63.sql | 18 -- schema/versions/mysql/64.sql | 7 - schema/versions/mysql/65.sql | 7 - schema/versions/mysql/66.sql | 7 - schema/versions/mysql/67.sql | 5 - schema/versions/mysql/68.sql | 7 - schema/versions/mysql/69.sql | 12 -- schema/versions/mysql/7.sql | 19 -- schema/versions/mysql/70.sql | 6 - schema/versions/mysql/71.sql | 7 - schema/versions/mysql/72.sql | 9 - schema/versions/mysql/73.sql | 8 - schema/versions/mysql/74.sql | 9 - schema/versions/mysql/75.sql | 10 - schema/versions/mysql/76.sql | 8 - schema/versions/mysql/77.sql | 7 - schema/versions/mysql/78.sql | 15 -- schema/versions/mysql/79.sql | 7 - schema/versions/mysql/8.sql | 14 -- schema/versions/mysql/80.sql | 9 - schema/versions/mysql/81.sql | 7 - schema/versions/mysql/82.sql | 7 - schema/versions/mysql/83.sql | 34 ---- schema/versions/mysql/84.sql | 23 --- schema/versions/mysql/85.sql | 13 -- schema/versions/mysql/86.sql | 9 - schema/versions/mysql/87.sql | 14 -- schema/versions/mysql/88.sql | 10 - schema/versions/mysql/89.sql | 7 - schema/versions/mysql/9.sql | 29 --- schema/versions/mysql/90.sql | 7 - schema/versions/mysql/91.sql | 7 - schema/versions/mysql/92.sql | 8 - schema/versions/mysql/93.sql | 10 - schema/versions/mysql/94.sql | 7 - schema/versions/mysql/95.sql | 39 ---- schema/versions/mysql/96.sql | 38 ---- schema/versions/mysql/97.sql | 10 - schema/versions/mysql/98.sql | 7 - schema/versions/mysql/99.sql | 12 -- schema/versions/pgsql/10.sql | 12 -- schema/versions/pgsql/100.sql | 7 - schema/versions/pgsql/101.sql | 11 -- schema/versions/pgsql/102.sql | 7 - schema/versions/pgsql/103.sql | 7 - schema/versions/pgsql/104.sql | 7 - schema/versions/pgsql/105.sql | 11 -- schema/versions/pgsql/106.sql | 12 -- schema/versions/pgsql/107.sql | 15 -- schema/versions/pgsql/108.sql | 7 - schema/versions/pgsql/109.sql | 7 - schema/versions/pgsql/11.sql | 18 -- schema/versions/pgsql/110.sql | 7 - schema/versions/pgsql/111.sql | 7 - schema/versions/pgsql/112.sql | 15 -- schema/versions/pgsql/113.sql | 8 - schema/versions/pgsql/114.sql | 15 -- schema/versions/pgsql/115.sql | 9 - schema/versions/pgsql/116.sql | 7 - schema/versions/pgsql/117.sql | 8 - schema/versions/pgsql/118.sql | 15 -- schema/versions/pgsql/119.sql | 7 - schema/versions/pgsql/12.sql | 15 -- schema/versions/pgsql/120.sql | 7 - schema/versions/pgsql/121.sql | 7 - schema/versions/pgsql/122.sql | 7 - schema/versions/pgsql/123.sql | 5 - schema/versions/pgsql/124.sql | 8 - schema/versions/pgsql/125.sql | 5 - schema/versions/pgsql/126.sql | 8 - schema/versions/pgsql/127.sql | 8 - schema/versions/pgsql/128.sql | 13 -- schema/versions/pgsql/129.sql | 8 - schema/versions/pgsql/13.sql | 10 - schema/versions/pgsql/130.sql | 5 - schema/versions/pgsql/131.sql | 7 - schema/versions/pgsql/132.sql | 10 - schema/versions/pgsql/133.sql | 7 - schema/versions/pgsql/134.sql | 7 - schema/versions/pgsql/135.sql | 8 - schema/versions/pgsql/136.sql | 9 - schema/versions/pgsql/137.sql | 7 - schema/versions/pgsql/138.sql | 7 - schema/versions/pgsql/139.sql | 13 -- schema/versions/pgsql/14.sql | 4 - schema/versions/pgsql/140.sql | 4 - schema/versions/pgsql/141.sql | 11 -- schema/versions/pgsql/142.sql | 4 - schema/versions/pgsql/15.sql | 5 - schema/versions/pgsql/16.sql | 6 - schema/versions/pgsql/17.sql | 13 -- schema/versions/pgsql/18.sql | 3 - schema/versions/pgsql/19.sql | 11 -- schema/versions/pgsql/20.sql | 3 - schema/versions/pgsql/21.sql | 3 - schema/versions/pgsql/22.sql | 8 - schema/versions/pgsql/23.sql | 3 - schema/versions/pgsql/24.sql | 3 - schema/versions/pgsql/25.sql | 3 - schema/versions/pgsql/26.sql | 13 -- schema/versions/pgsql/27.sql | 4 - schema/versions/pgsql/28.sql | 3 - schema/versions/pgsql/29.sql | 3 - schema/versions/pgsql/3.sql | 43 ----- schema/versions/pgsql/30.sql | 4 - schema/versions/pgsql/31.sql | 6 - schema/versions/pgsql/32.sql | 6 - schema/versions/pgsql/33.sql | 3 - schema/versions/pgsql/34.sql | 7 - schema/versions/pgsql/35.sql | 3 - schema/versions/pgsql/36.sql | 9 - schema/versions/pgsql/37.sql | 4 - schema/versions/pgsql/38.sql | 3 - schema/versions/pgsql/39.sql | 5 - schema/versions/pgsql/4.sql | 17 -- schema/versions/pgsql/40.sql | 3 - schema/versions/pgsql/41.sql | 6 - schema/versions/pgsql/42.sql | 3 - schema/versions/pgsql/43.sql | 7 - schema/versions/pgsql/44.sql | 6 - schema/versions/pgsql/45.sql | 3 - schema/versions/pgsql/46.sql | 5 - schema/versions/pgsql/47.sql | 12 -- schema/versions/pgsql/48.sql | 9 - schema/versions/pgsql/49.sql | 9 - schema/versions/pgsql/5.sql | 10 - schema/versions/pgsql/50.sql | 19 -- schema/versions/pgsql/51.sql | 18 -- schema/versions/pgsql/52.sql | 9 - schema/versions/pgsql/53.sql | 15 -- schema/versions/pgsql/54.sql | 7 - schema/versions/pgsql/55.sql | 7 - schema/versions/pgsql/56.sql | 5 - schema/versions/pgsql/57.sql | 6 - schema/versions/pgsql/58.sql | 7 - schema/versions/pgsql/59.sql | 13 -- schema/versions/pgsql/6.sql | 24 --- schema/versions/pgsql/60.sql | 18 -- schema/versions/pgsql/61.sql | 9 - schema/versions/pgsql/62.sql | 13 -- schema/versions/pgsql/63.sql | 16 -- schema/versions/pgsql/64.sql | 7 - schema/versions/pgsql/65.sql | 7 - schema/versions/pgsql/66.sql | 7 - schema/versions/pgsql/67.sql | 9 - schema/versions/pgsql/68.sql | 7 - schema/versions/pgsql/69.sql | 11 -- schema/versions/pgsql/7.sql | 22 --- schema/versions/pgsql/70.sql | 6 - schema/versions/pgsql/71.sql | 7 - schema/versions/pgsql/72.sql | 9 - schema/versions/pgsql/73.sql | 8 - schema/versions/pgsql/74.sql | 9 - schema/versions/pgsql/75.sql | 10 - schema/versions/pgsql/76.sql | 8 - schema/versions/pgsql/77.sql | 7 - schema/versions/pgsql/78.sql | 15 -- schema/versions/pgsql/79.sql | 7 - schema/versions/pgsql/8.sql | 17 -- schema/versions/pgsql/80.sql | 9 - schema/versions/pgsql/81.sql | 7 - schema/versions/pgsql/82.sql | 7 - schema/versions/pgsql/83.sql | 32 ---- schema/versions/pgsql/84.sql | 22 --- schema/versions/pgsql/85.sql | 13 -- schema/versions/pgsql/86.sql | 9 - schema/versions/pgsql/87.sql | 14 -- schema/versions/pgsql/88.sql | 10 - schema/versions/pgsql/89.sql | 7 - schema/versions/pgsql/9.sql | 33 ---- schema/versions/pgsql/90.sql | 7 - schema/versions/pgsql/91.sql | 7 - schema/versions/pgsql/92.sql | 8 - schema/versions/pgsql/93.sql | 10 - schema/versions/pgsql/94.sql | 7 - schema/versions/pgsql/95.sql | 39 ---- schema/versions/pgsql/96.sql | 23 --- schema/versions/pgsql/97.sql | 10 - schema/versions/pgsql/98.sql | 7 - schema/versions/pgsql/99.sql | 12 -- sql/mysql/migrations/10.sql | 12 ++ sql/mysql/migrations/100.sql | 7 + sql/mysql/migrations/101.sql | 12 ++ sql/mysql/migrations/102.sql | 7 + sql/mysql/migrations/103.sql | 7 + sql/mysql/migrations/104.sql | 7 + sql/mysql/migrations/105.sql | 11 ++ sql/mysql/migrations/106.sql | 12 ++ sql/mysql/migrations/107.sql | 15 ++ sql/mysql/migrations/108.sql | 7 + sql/mysql/migrations/109.sql | 7 + sql/mysql/migrations/11.sql | 18 ++ sql/mysql/migrations/110.sql | 7 + sql/mysql/migrations/111.sql | 7 + sql/mysql/migrations/112.sql | 15 ++ sql/mysql/migrations/113.sql | 8 + sql/mysql/migrations/114.sql | 15 ++ sql/mysql/migrations/115.sql | 9 + sql/mysql/migrations/116.sql | 7 + sql/mysql/migrations/117.sql | 8 + sql/mysql/migrations/118.sql | 16 ++ sql/mysql/migrations/119.sql | 7 + sql/mysql/migrations/12.sql | 12 ++ sql/mysql/migrations/120.sql | 7 + sql/mysql/migrations/121.sql | 7 + sql/mysql/migrations/122.sql | 7 + sql/mysql/migrations/123.sql | 9 + sql/mysql/migrations/124.sql | 8 + sql/mysql/migrations/125.sql | 10 + sql/mysql/migrations/126.sql | 8 + sql/mysql/migrations/127.sql | 5 + sql/mysql/migrations/128.sql | 13 ++ sql/mysql/migrations/129.sql | 8 + sql/mysql/migrations/13.sql | 6 + sql/mysql/migrations/130.sql | 7 + sql/mysql/migrations/131.sql | 7 + sql/mysql/migrations/132.sql | 10 + sql/mysql/migrations/133.sql | 7 + sql/mysql/migrations/134.sql | 7 + sql/mysql/migrations/135.sql | 8 + sql/mysql/migrations/136.sql | 9 + sql/mysql/migrations/137.sql | 7 + sql/mysql/migrations/138.sql | 7 + sql/mysql/migrations/139.sql | 13 ++ sql/mysql/migrations/14.sql | 4 + sql/mysql/migrations/140.sql | 4 + sql/mysql/migrations/141.sql | 9 + sql/mysql/migrations/142.sql | 4 + sql/mysql/migrations/15.sql | 5 + sql/mysql/migrations/16.sql | 6 + sql/mysql/migrations/17.sql | 13 ++ sql/mysql/migrations/18.sql | 3 + sql/mysql/migrations/19.sql | 11 ++ sql/mysql/migrations/20.sql | 3 + sql/mysql/migrations/21.sql | 3 + sql/mysql/migrations/22.sql | 8 + sql/mysql/migrations/23.sql | 3 + sql/mysql/migrations/24.sql | 3 + sql/mysql/migrations/25.sql | 3 + sql/mysql/migrations/26.sql | 15 ++ sql/mysql/migrations/27.sql | 4 + sql/mysql/migrations/28.sql | 3 + sql/mysql/migrations/29.sql | 3 + sql/mysql/migrations/3.sql | 43 +++++ sql/mysql/migrations/30.sql | 4 + sql/mysql/migrations/31.sql | 6 + sql/mysql/migrations/32.sql | 6 + sql/mysql/migrations/33.sql | 3 + sql/mysql/migrations/34.sql | 3 + sql/mysql/migrations/35.sql | 1 + sql/mysql/migrations/36.sql | 9 + sql/mysql/migrations/37.sql | 4 + sql/mysql/migrations/38.sql | 3 + sql/mysql/migrations/39.sql | 5 + sql/mysql/migrations/4.sql | 17 ++ sql/mysql/migrations/40.sql | 3 + sql/mysql/migrations/41.sql | 6 + sql/mysql/migrations/42.sql | 3 + sql/mysql/migrations/43.sql | 3 + sql/mysql/migrations/44.sql | 9 + sql/mysql/migrations/45.sql | 3 + sql/mysql/migrations/46.sql | 4 + sql/mysql/migrations/47.sql | 9 + sql/mysql/migrations/48.sql | 6 + sql/mysql/migrations/49.sql | 5 + sql/mysql/migrations/5.sql | 12 ++ sql/mysql/migrations/50.sql | 19 ++ sql/mysql/migrations/51.sql | 16 ++ sql/mysql/migrations/52.sql | 5 + sql/mysql/migrations/53.sql | 11 ++ sql/mysql/migrations/54.sql | 7 + sql/mysql/migrations/55.sql | 7 + sql/mysql/migrations/56.sql | 16 ++ sql/mysql/migrations/57.sql | 6 + sql/mysql/migrations/58.sql | 7 + sql/mysql/migrations/59.sql | 13 ++ sql/mysql/migrations/6.sql | 20 ++ sql/mysql/migrations/60.sql | 20 ++ sql/mysql/migrations/61.sql | 9 + sql/mysql/migrations/62.sql | 13 ++ sql/mysql/migrations/63.sql | 18 ++ sql/mysql/migrations/64.sql | 7 + sql/mysql/migrations/65.sql | 7 + sql/mysql/migrations/66.sql | 7 + sql/mysql/migrations/67.sql | 5 + sql/mysql/migrations/68.sql | 7 + sql/mysql/migrations/69.sql | 12 ++ sql/mysql/migrations/7.sql | 19 ++ sql/mysql/migrations/70.sql | 6 + sql/mysql/migrations/71.sql | 7 + sql/mysql/migrations/72.sql | 9 + sql/mysql/migrations/73.sql | 8 + sql/mysql/migrations/74.sql | 9 + sql/mysql/migrations/75.sql | 10 + sql/mysql/migrations/76.sql | 8 + sql/mysql/migrations/77.sql | 7 + sql/mysql/migrations/78.sql | 15 ++ sql/mysql/migrations/79.sql | 7 + sql/mysql/migrations/8.sql | 14 ++ sql/mysql/migrations/80.sql | 9 + sql/mysql/migrations/81.sql | 7 + sql/mysql/migrations/82.sql | 7 + sql/mysql/migrations/83.sql | 34 ++++ sql/mysql/migrations/84.sql | 23 +++ sql/mysql/migrations/85.sql | 13 ++ sql/mysql/migrations/86.sql | 9 + sql/mysql/migrations/87.sql | 14 ++ sql/mysql/migrations/88.sql | 10 + sql/mysql/migrations/89.sql | 7 + sql/mysql/migrations/9.sql | 29 +++ sql/mysql/migrations/90.sql | 7 + sql/mysql/migrations/91.sql | 7 + sql/mysql/migrations/92.sql | 8 + sql/mysql/migrations/93.sql | 10 + sql/mysql/migrations/94.sql | 7 + sql/mysql/migrations/95.sql | 39 ++++ sql/mysql/migrations/96.sql | 38 ++++ sql/mysql/migrations/97.sql | 10 + sql/mysql/migrations/98.sql | 7 + sql/mysql/migrations/99.sql | 12 ++ sql/mysql/schema.sql | 421 ++++++++++++++++++++++++++++++++++++++++++ sql/pgsql/migrations/10.sql | 12 ++ sql/pgsql/migrations/100.sql | 7 + sql/pgsql/migrations/101.sql | 11 ++ sql/pgsql/migrations/102.sql | 7 + sql/pgsql/migrations/103.sql | 7 + sql/pgsql/migrations/104.sql | 7 + sql/pgsql/migrations/105.sql | 11 ++ sql/pgsql/migrations/106.sql | 12 ++ sql/pgsql/migrations/107.sql | 15 ++ sql/pgsql/migrations/108.sql | 7 + sql/pgsql/migrations/109.sql | 7 + sql/pgsql/migrations/11.sql | 18 ++ sql/pgsql/migrations/110.sql | 7 + sql/pgsql/migrations/111.sql | 7 + sql/pgsql/migrations/112.sql | 15 ++ sql/pgsql/migrations/113.sql | 8 + sql/pgsql/migrations/114.sql | 15 ++ sql/pgsql/migrations/115.sql | 9 + sql/pgsql/migrations/116.sql | 7 + sql/pgsql/migrations/117.sql | 8 + sql/pgsql/migrations/118.sql | 15 ++ sql/pgsql/migrations/119.sql | 7 + sql/pgsql/migrations/12.sql | 15 ++ sql/pgsql/migrations/120.sql | 7 + sql/pgsql/migrations/121.sql | 7 + sql/pgsql/migrations/122.sql | 7 + sql/pgsql/migrations/123.sql | 5 + sql/pgsql/migrations/124.sql | 8 + sql/pgsql/migrations/125.sql | 5 + sql/pgsql/migrations/126.sql | 8 + sql/pgsql/migrations/127.sql | 8 + sql/pgsql/migrations/128.sql | 13 ++ sql/pgsql/migrations/129.sql | 8 + sql/pgsql/migrations/13.sql | 10 + sql/pgsql/migrations/130.sql | 5 + sql/pgsql/migrations/131.sql | 7 + sql/pgsql/migrations/132.sql | 10 + sql/pgsql/migrations/133.sql | 7 + sql/pgsql/migrations/134.sql | 7 + sql/pgsql/migrations/135.sql | 8 + sql/pgsql/migrations/136.sql | 9 + sql/pgsql/migrations/137.sql | 7 + sql/pgsql/migrations/138.sql | 7 + sql/pgsql/migrations/139.sql | 13 ++ sql/pgsql/migrations/14.sql | 4 + sql/pgsql/migrations/140.sql | 4 + sql/pgsql/migrations/141.sql | 11 ++ sql/pgsql/migrations/142.sql | 4 + sql/pgsql/migrations/15.sql | 5 + sql/pgsql/migrations/16.sql | 6 + sql/pgsql/migrations/17.sql | 13 ++ sql/pgsql/migrations/18.sql | 3 + sql/pgsql/migrations/19.sql | 11 ++ sql/pgsql/migrations/20.sql | 3 + sql/pgsql/migrations/21.sql | 3 + sql/pgsql/migrations/22.sql | 8 + sql/pgsql/migrations/23.sql | 3 + sql/pgsql/migrations/24.sql | 3 + sql/pgsql/migrations/25.sql | 3 + sql/pgsql/migrations/26.sql | 13 ++ sql/pgsql/migrations/27.sql | 4 + sql/pgsql/migrations/28.sql | 3 + sql/pgsql/migrations/29.sql | 3 + sql/pgsql/migrations/3.sql | 43 +++++ sql/pgsql/migrations/30.sql | 4 + sql/pgsql/migrations/31.sql | 6 + sql/pgsql/migrations/32.sql | 6 + sql/pgsql/migrations/33.sql | 3 + sql/pgsql/migrations/34.sql | 7 + sql/pgsql/migrations/35.sql | 3 + sql/pgsql/migrations/36.sql | 9 + sql/pgsql/migrations/37.sql | 4 + sql/pgsql/migrations/38.sql | 3 + sql/pgsql/migrations/39.sql | 5 + sql/pgsql/migrations/4.sql | 17 ++ sql/pgsql/migrations/40.sql | 3 + sql/pgsql/migrations/41.sql | 6 + sql/pgsql/migrations/42.sql | 3 + sql/pgsql/migrations/43.sql | 7 + sql/pgsql/migrations/44.sql | 6 + sql/pgsql/migrations/45.sql | 3 + sql/pgsql/migrations/46.sql | 5 + sql/pgsql/migrations/47.sql | 12 ++ sql/pgsql/migrations/48.sql | 9 + sql/pgsql/migrations/49.sql | 9 + sql/pgsql/migrations/5.sql | 10 + sql/pgsql/migrations/50.sql | 19 ++ sql/pgsql/migrations/51.sql | 18 ++ sql/pgsql/migrations/52.sql | 9 + sql/pgsql/migrations/53.sql | 15 ++ sql/pgsql/migrations/54.sql | 7 + sql/pgsql/migrations/55.sql | 7 + sql/pgsql/migrations/56.sql | 5 + sql/pgsql/migrations/57.sql | 6 + sql/pgsql/migrations/58.sql | 7 + sql/pgsql/migrations/59.sql | 13 ++ sql/pgsql/migrations/6.sql | 24 +++ sql/pgsql/migrations/60.sql | 18 ++ sql/pgsql/migrations/61.sql | 9 + sql/pgsql/migrations/62.sql | 13 ++ sql/pgsql/migrations/63.sql | 16 ++ sql/pgsql/migrations/64.sql | 7 + sql/pgsql/migrations/65.sql | 7 + sql/pgsql/migrations/66.sql | 7 + sql/pgsql/migrations/67.sql | 9 + sql/pgsql/migrations/68.sql | 7 + sql/pgsql/migrations/69.sql | 11 ++ sql/pgsql/migrations/7.sql | 22 +++ sql/pgsql/migrations/70.sql | 6 + sql/pgsql/migrations/71.sql | 7 + sql/pgsql/migrations/72.sql | 9 + sql/pgsql/migrations/73.sql | 8 + sql/pgsql/migrations/74.sql | 9 + sql/pgsql/migrations/75.sql | 10 + sql/pgsql/migrations/76.sql | 8 + sql/pgsql/migrations/77.sql | 7 + sql/pgsql/migrations/78.sql | 15 ++ sql/pgsql/migrations/79.sql | 7 + sql/pgsql/migrations/8.sql | 17 ++ sql/pgsql/migrations/80.sql | 9 + sql/pgsql/migrations/81.sql | 7 + sql/pgsql/migrations/82.sql | 7 + sql/pgsql/migrations/83.sql | 32 ++++ sql/pgsql/migrations/84.sql | 22 +++ sql/pgsql/migrations/85.sql | 13 ++ sql/pgsql/migrations/86.sql | 9 + sql/pgsql/migrations/87.sql | 14 ++ sql/pgsql/migrations/88.sql | 10 + sql/pgsql/migrations/89.sql | 7 + sql/pgsql/migrations/9.sql | 33 ++++ sql/pgsql/migrations/90.sql | 7 + sql/pgsql/migrations/91.sql | 7 + sql/pgsql/migrations/92.sql | 8 + sql/pgsql/migrations/93.sql | 10 + sql/pgsql/migrations/94.sql | 7 + sql/pgsql/migrations/95.sql | 39 ++++ sql/pgsql/migrations/96.sql | 23 +++ sql/pgsql/migrations/97.sql | 10 + sql/pgsql/migrations/98.sql | 7 + sql/pgsql/migrations/99.sql | 12 ++ sql/pgsql/schema.sql | 399 +++++++++++++++++++++++++++++++++++++++ update.php | 35 +++- 568 files changed, 3599 insertions(+), 3520 deletions(-) delete mode 100644 schema/ttrss_schema_mysql.sql delete mode 100644 schema/ttrss_schema_pgsql.sql delete mode 100644 schema/versions/mysql/10.sql delete mode 100644 schema/versions/mysql/100.sql delete mode 100644 schema/versions/mysql/101.sql delete mode 100644 schema/versions/mysql/102.sql delete mode 100644 schema/versions/mysql/103.sql delete mode 100644 schema/versions/mysql/104.sql delete mode 100644 schema/versions/mysql/105.sql delete mode 100644 schema/versions/mysql/106.sql delete mode 100644 schema/versions/mysql/107.sql delete mode 100644 schema/versions/mysql/108.sql delete mode 100644 schema/versions/mysql/109.sql delete mode 100644 schema/versions/mysql/11.sql delete mode 100644 schema/versions/mysql/110.sql delete mode 100644 schema/versions/mysql/111.sql delete mode 100644 schema/versions/mysql/112.sql delete mode 100644 schema/versions/mysql/113.sql delete mode 100644 schema/versions/mysql/114.sql delete mode 100644 schema/versions/mysql/115.sql delete mode 100644 schema/versions/mysql/116.sql delete mode 100644 schema/versions/mysql/117.sql delete mode 100644 schema/versions/mysql/118.sql delete mode 100644 schema/versions/mysql/119.sql delete mode 100644 schema/versions/mysql/12.sql delete mode 100644 schema/versions/mysql/120.sql delete mode 100644 schema/versions/mysql/121.sql delete mode 100644 schema/versions/mysql/122.sql delete mode 100644 schema/versions/mysql/123.sql delete mode 100644 schema/versions/mysql/124.sql delete mode 100644 schema/versions/mysql/125.sql delete mode 100644 schema/versions/mysql/126.sql delete mode 100644 schema/versions/mysql/127.sql delete mode 100644 schema/versions/mysql/128.sql delete mode 100644 schema/versions/mysql/129.sql delete mode 100644 schema/versions/mysql/13.sql delete mode 100644 schema/versions/mysql/130.sql delete mode 100644 schema/versions/mysql/131.sql delete mode 100644 schema/versions/mysql/132.sql delete mode 100644 schema/versions/mysql/133.sql delete mode 100644 schema/versions/mysql/134.sql delete mode 100644 schema/versions/mysql/135.sql delete mode 100644 schema/versions/mysql/136.sql delete mode 100644 schema/versions/mysql/137.sql delete mode 100644 schema/versions/mysql/138.sql delete mode 100644 schema/versions/mysql/139.sql delete mode 100644 schema/versions/mysql/14.sql delete mode 100644 schema/versions/mysql/140.sql delete mode 100644 schema/versions/mysql/141.sql delete mode 100644 schema/versions/mysql/142.sql delete mode 100644 schema/versions/mysql/15.sql delete mode 100644 schema/versions/mysql/16.sql delete mode 100644 schema/versions/mysql/17.sql delete mode 100644 schema/versions/mysql/18.sql delete mode 100644 schema/versions/mysql/19.sql delete mode 100644 schema/versions/mysql/20.sql delete mode 100644 schema/versions/mysql/21.sql delete mode 100644 schema/versions/mysql/22.sql delete mode 100644 schema/versions/mysql/23.sql delete mode 100644 schema/versions/mysql/24.sql delete mode 100644 schema/versions/mysql/25.sql delete mode 100644 schema/versions/mysql/26.sql delete mode 100644 schema/versions/mysql/27.sql delete mode 100644 schema/versions/mysql/28.sql delete mode 100644 schema/versions/mysql/29.sql delete mode 100644 schema/versions/mysql/3.sql delete mode 100644 schema/versions/mysql/30.sql delete mode 100644 schema/versions/mysql/31.sql delete mode 100644 schema/versions/mysql/32.sql delete mode 100644 schema/versions/mysql/33.sql delete mode 100644 schema/versions/mysql/34.sql delete mode 100644 schema/versions/mysql/35.sql delete mode 100644 schema/versions/mysql/36.sql delete mode 100644 schema/versions/mysql/37.sql delete mode 100644 schema/versions/mysql/38.sql delete mode 100644 schema/versions/mysql/39.sql delete mode 100644 schema/versions/mysql/4.sql delete mode 100644 schema/versions/mysql/40.sql delete mode 100644 schema/versions/mysql/41.sql delete mode 100644 schema/versions/mysql/42.sql delete mode 100644 schema/versions/mysql/43.sql delete mode 100644 schema/versions/mysql/44.sql delete mode 100644 schema/versions/mysql/45.sql delete mode 100644 schema/versions/mysql/46.sql delete mode 100644 schema/versions/mysql/47.sql delete mode 100644 schema/versions/mysql/48.sql delete mode 100644 schema/versions/mysql/49.sql delete mode 100644 schema/versions/mysql/5.sql delete mode 100644 schema/versions/mysql/50.sql delete mode 100644 schema/versions/mysql/51.sql delete mode 100644 schema/versions/mysql/52.sql delete mode 100644 schema/versions/mysql/53.sql delete mode 100644 schema/versions/mysql/54.sql delete mode 100644 schema/versions/mysql/55.sql delete mode 100644 schema/versions/mysql/56.sql delete mode 100644 schema/versions/mysql/57.sql delete mode 100644 schema/versions/mysql/58.sql delete mode 100644 schema/versions/mysql/59.sql delete mode 100644 schema/versions/mysql/6.sql delete mode 100644 schema/versions/mysql/60.sql delete mode 100644 schema/versions/mysql/61.sql delete mode 100644 schema/versions/mysql/62.sql delete mode 100644 schema/versions/mysql/63.sql delete mode 100644 schema/versions/mysql/64.sql delete mode 100644 schema/versions/mysql/65.sql delete mode 100644 schema/versions/mysql/66.sql delete mode 100644 schema/versions/mysql/67.sql delete mode 100644 schema/versions/mysql/68.sql delete mode 100644 schema/versions/mysql/69.sql delete mode 100644 schema/versions/mysql/7.sql delete mode 100644 schema/versions/mysql/70.sql delete mode 100644 schema/versions/mysql/71.sql delete mode 100644 schema/versions/mysql/72.sql delete mode 100644 schema/versions/mysql/73.sql delete mode 100644 schema/versions/mysql/74.sql delete mode 100644 schema/versions/mysql/75.sql delete mode 100644 schema/versions/mysql/76.sql delete mode 100644 schema/versions/mysql/77.sql delete mode 100644 schema/versions/mysql/78.sql delete mode 100644 schema/versions/mysql/79.sql delete mode 100644 schema/versions/mysql/8.sql delete mode 100644 schema/versions/mysql/80.sql delete mode 100644 schema/versions/mysql/81.sql delete mode 100644 schema/versions/mysql/82.sql delete mode 100644 schema/versions/mysql/83.sql delete mode 100644 schema/versions/mysql/84.sql delete mode 100644 schema/versions/mysql/85.sql delete mode 100644 schema/versions/mysql/86.sql delete mode 100644 schema/versions/mysql/87.sql delete mode 100644 schema/versions/mysql/88.sql delete mode 100644 schema/versions/mysql/89.sql delete mode 100644 schema/versions/mysql/9.sql delete mode 100644 schema/versions/mysql/90.sql delete mode 100644 schema/versions/mysql/91.sql delete mode 100644 schema/versions/mysql/92.sql delete mode 100644 schema/versions/mysql/93.sql delete mode 100644 schema/versions/mysql/94.sql delete mode 100644 schema/versions/mysql/95.sql delete mode 100644 schema/versions/mysql/96.sql delete mode 100644 schema/versions/mysql/97.sql delete mode 100644 schema/versions/mysql/98.sql delete mode 100644 schema/versions/mysql/99.sql delete mode 100644 schema/versions/pgsql/10.sql delete mode 100644 schema/versions/pgsql/100.sql delete mode 100644 schema/versions/pgsql/101.sql delete mode 100644 schema/versions/pgsql/102.sql delete mode 100644 schema/versions/pgsql/103.sql delete mode 100644 schema/versions/pgsql/104.sql delete mode 100644 schema/versions/pgsql/105.sql delete mode 100644 schema/versions/pgsql/106.sql delete mode 100644 schema/versions/pgsql/107.sql delete mode 100644 schema/versions/pgsql/108.sql delete mode 100644 schema/versions/pgsql/109.sql delete mode 100644 schema/versions/pgsql/11.sql delete mode 100644 schema/versions/pgsql/110.sql delete mode 100644 schema/versions/pgsql/111.sql delete mode 100644 schema/versions/pgsql/112.sql delete mode 100644 schema/versions/pgsql/113.sql delete mode 100644 schema/versions/pgsql/114.sql delete mode 100644 schema/versions/pgsql/115.sql delete mode 100644 schema/versions/pgsql/116.sql delete mode 100644 schema/versions/pgsql/117.sql delete mode 100644 schema/versions/pgsql/118.sql delete mode 100644 schema/versions/pgsql/119.sql delete mode 100644 schema/versions/pgsql/12.sql delete mode 100644 schema/versions/pgsql/120.sql delete mode 100644 schema/versions/pgsql/121.sql delete mode 100644 schema/versions/pgsql/122.sql delete mode 100644 schema/versions/pgsql/123.sql delete mode 100644 schema/versions/pgsql/124.sql delete mode 100644 schema/versions/pgsql/125.sql delete mode 100644 schema/versions/pgsql/126.sql delete mode 100644 schema/versions/pgsql/127.sql delete mode 100644 schema/versions/pgsql/128.sql delete mode 100644 schema/versions/pgsql/129.sql delete mode 100644 schema/versions/pgsql/13.sql delete mode 100644 schema/versions/pgsql/130.sql delete mode 100644 schema/versions/pgsql/131.sql delete mode 100644 schema/versions/pgsql/132.sql delete mode 100644 schema/versions/pgsql/133.sql delete mode 100644 schema/versions/pgsql/134.sql delete mode 100644 schema/versions/pgsql/135.sql delete mode 100644 schema/versions/pgsql/136.sql delete mode 100644 schema/versions/pgsql/137.sql delete mode 100644 schema/versions/pgsql/138.sql delete mode 100644 schema/versions/pgsql/139.sql delete mode 100644 schema/versions/pgsql/14.sql delete mode 100644 schema/versions/pgsql/140.sql delete mode 100644 schema/versions/pgsql/141.sql delete mode 100644 schema/versions/pgsql/142.sql delete mode 100644 schema/versions/pgsql/15.sql delete mode 100644 schema/versions/pgsql/16.sql delete mode 100644 schema/versions/pgsql/17.sql delete mode 100644 schema/versions/pgsql/18.sql delete mode 100644 schema/versions/pgsql/19.sql delete mode 100644 schema/versions/pgsql/20.sql delete mode 100644 schema/versions/pgsql/21.sql delete mode 100644 schema/versions/pgsql/22.sql delete mode 100644 schema/versions/pgsql/23.sql delete mode 100644 schema/versions/pgsql/24.sql delete mode 100644 schema/versions/pgsql/25.sql delete mode 100644 schema/versions/pgsql/26.sql delete mode 100644 schema/versions/pgsql/27.sql delete mode 100644 schema/versions/pgsql/28.sql delete mode 100644 schema/versions/pgsql/29.sql delete mode 100644 schema/versions/pgsql/3.sql delete mode 100644 schema/versions/pgsql/30.sql delete mode 100644 schema/versions/pgsql/31.sql delete mode 100644 schema/versions/pgsql/32.sql delete mode 100644 schema/versions/pgsql/33.sql delete mode 100644 schema/versions/pgsql/34.sql delete mode 100644 schema/versions/pgsql/35.sql delete mode 100644 schema/versions/pgsql/36.sql delete mode 100644 schema/versions/pgsql/37.sql delete mode 100644 schema/versions/pgsql/38.sql delete mode 100644 schema/versions/pgsql/39.sql delete mode 100644 schema/versions/pgsql/4.sql delete mode 100644 schema/versions/pgsql/40.sql delete mode 100644 schema/versions/pgsql/41.sql delete mode 100644 schema/versions/pgsql/42.sql delete mode 100644 schema/versions/pgsql/43.sql delete mode 100644 schema/versions/pgsql/44.sql delete mode 100644 schema/versions/pgsql/45.sql delete mode 100644 schema/versions/pgsql/46.sql delete mode 100644 schema/versions/pgsql/47.sql delete mode 100644 schema/versions/pgsql/48.sql delete mode 100644 schema/versions/pgsql/49.sql delete mode 100644 schema/versions/pgsql/5.sql delete mode 100644 schema/versions/pgsql/50.sql delete mode 100644 schema/versions/pgsql/51.sql delete mode 100644 schema/versions/pgsql/52.sql delete mode 100644 schema/versions/pgsql/53.sql delete mode 100644 schema/versions/pgsql/54.sql delete mode 100644 schema/versions/pgsql/55.sql delete mode 100644 schema/versions/pgsql/56.sql delete mode 100644 schema/versions/pgsql/57.sql delete mode 100644 schema/versions/pgsql/58.sql delete mode 100644 schema/versions/pgsql/59.sql delete mode 100644 schema/versions/pgsql/6.sql delete mode 100644 schema/versions/pgsql/60.sql delete mode 100644 schema/versions/pgsql/61.sql delete mode 100644 schema/versions/pgsql/62.sql delete mode 100644 schema/versions/pgsql/63.sql delete mode 100644 schema/versions/pgsql/64.sql delete mode 100644 schema/versions/pgsql/65.sql delete mode 100644 schema/versions/pgsql/66.sql delete mode 100644 schema/versions/pgsql/67.sql delete mode 100644 schema/versions/pgsql/68.sql delete mode 100644 schema/versions/pgsql/69.sql delete mode 100644 schema/versions/pgsql/7.sql delete mode 100644 schema/versions/pgsql/70.sql delete mode 100644 schema/versions/pgsql/71.sql delete mode 100644 schema/versions/pgsql/72.sql delete mode 100644 schema/versions/pgsql/73.sql delete mode 100644 schema/versions/pgsql/74.sql delete mode 100644 schema/versions/pgsql/75.sql delete mode 100644 schema/versions/pgsql/76.sql delete mode 100644 schema/versions/pgsql/77.sql delete mode 100644 schema/versions/pgsql/78.sql delete mode 100644 schema/versions/pgsql/79.sql delete mode 100644 schema/versions/pgsql/8.sql delete mode 100644 schema/versions/pgsql/80.sql delete mode 100644 schema/versions/pgsql/81.sql delete mode 100644 schema/versions/pgsql/82.sql delete mode 100644 schema/versions/pgsql/83.sql delete mode 100644 schema/versions/pgsql/84.sql delete mode 100644 schema/versions/pgsql/85.sql delete mode 100644 schema/versions/pgsql/86.sql delete mode 100644 schema/versions/pgsql/87.sql delete mode 100644 schema/versions/pgsql/88.sql delete mode 100644 schema/versions/pgsql/89.sql delete mode 100644 schema/versions/pgsql/9.sql delete mode 100644 schema/versions/pgsql/90.sql delete mode 100644 schema/versions/pgsql/91.sql delete mode 100644 schema/versions/pgsql/92.sql delete mode 100644 schema/versions/pgsql/93.sql delete mode 100644 schema/versions/pgsql/94.sql delete mode 100644 schema/versions/pgsql/95.sql delete mode 100644 schema/versions/pgsql/96.sql delete mode 100644 schema/versions/pgsql/97.sql delete mode 100644 schema/versions/pgsql/98.sql delete mode 100644 schema/versions/pgsql/99.sql create mode 100644 sql/mysql/migrations/10.sql create mode 100644 sql/mysql/migrations/100.sql create mode 100644 sql/mysql/migrations/101.sql create mode 100644 sql/mysql/migrations/102.sql create mode 100644 sql/mysql/migrations/103.sql create mode 100644 sql/mysql/migrations/104.sql create mode 100644 sql/mysql/migrations/105.sql create mode 100644 sql/mysql/migrations/106.sql create mode 100644 sql/mysql/migrations/107.sql create mode 100644 sql/mysql/migrations/108.sql create mode 100644 sql/mysql/migrations/109.sql create mode 100644 sql/mysql/migrations/11.sql create mode 100644 sql/mysql/migrations/110.sql create mode 100644 sql/mysql/migrations/111.sql create mode 100644 sql/mysql/migrations/112.sql create mode 100644 sql/mysql/migrations/113.sql create mode 100644 sql/mysql/migrations/114.sql create mode 100644 sql/mysql/migrations/115.sql create mode 100644 sql/mysql/migrations/116.sql create mode 100644 sql/mysql/migrations/117.sql create mode 100644 sql/mysql/migrations/118.sql create mode 100644 sql/mysql/migrations/119.sql create mode 100644 sql/mysql/migrations/12.sql create mode 100644 sql/mysql/migrations/120.sql create mode 100644 sql/mysql/migrations/121.sql create mode 100644 sql/mysql/migrations/122.sql create mode 100644 sql/mysql/migrations/123.sql create mode 100644 sql/mysql/migrations/124.sql create mode 100644 sql/mysql/migrations/125.sql create mode 100644 sql/mysql/migrations/126.sql create mode 100644 sql/mysql/migrations/127.sql create mode 100644 sql/mysql/migrations/128.sql create mode 100644 sql/mysql/migrations/129.sql create mode 100644 sql/mysql/migrations/13.sql create mode 100644 sql/mysql/migrations/130.sql create mode 100644 sql/mysql/migrations/131.sql create mode 100644 sql/mysql/migrations/132.sql create mode 100644 sql/mysql/migrations/133.sql create mode 100644 sql/mysql/migrations/134.sql create mode 100644 sql/mysql/migrations/135.sql create mode 100644 sql/mysql/migrations/136.sql create mode 100644 sql/mysql/migrations/137.sql create mode 100644 sql/mysql/migrations/138.sql create mode 100644 sql/mysql/migrations/139.sql create mode 100644 sql/mysql/migrations/14.sql create mode 100644 sql/mysql/migrations/140.sql create mode 100644 sql/mysql/migrations/141.sql create mode 100644 sql/mysql/migrations/142.sql create mode 100644 sql/mysql/migrations/15.sql create mode 100644 sql/mysql/migrations/16.sql create mode 100644 sql/mysql/migrations/17.sql create mode 100644 sql/mysql/migrations/18.sql create mode 100644 sql/mysql/migrations/19.sql create mode 100644 sql/mysql/migrations/20.sql create mode 100644 sql/mysql/migrations/21.sql create mode 100644 sql/mysql/migrations/22.sql create mode 100644 sql/mysql/migrations/23.sql create mode 100644 sql/mysql/migrations/24.sql create mode 100644 sql/mysql/migrations/25.sql create mode 100644 sql/mysql/migrations/26.sql create mode 100644 sql/mysql/migrations/27.sql create mode 100644 sql/mysql/migrations/28.sql create mode 100644 sql/mysql/migrations/29.sql create mode 100644 sql/mysql/migrations/3.sql create mode 100644 sql/mysql/migrations/30.sql create mode 100644 sql/mysql/migrations/31.sql create mode 100644 sql/mysql/migrations/32.sql create mode 100644 sql/mysql/migrations/33.sql create mode 100644 sql/mysql/migrations/34.sql create mode 100644 sql/mysql/migrations/35.sql create mode 100644 sql/mysql/migrations/36.sql create mode 100644 sql/mysql/migrations/37.sql create mode 100644 sql/mysql/migrations/38.sql create mode 100644 sql/mysql/migrations/39.sql create mode 100644 sql/mysql/migrations/4.sql create mode 100644 sql/mysql/migrations/40.sql create mode 100644 sql/mysql/migrations/41.sql create mode 100644 sql/mysql/migrations/42.sql create mode 100644 sql/mysql/migrations/43.sql create mode 100644 sql/mysql/migrations/44.sql create mode 100644 sql/mysql/migrations/45.sql create mode 100644 sql/mysql/migrations/46.sql create mode 100644 sql/mysql/migrations/47.sql create mode 100644 sql/mysql/migrations/48.sql create mode 100644 sql/mysql/migrations/49.sql create mode 100644 sql/mysql/migrations/5.sql create mode 100644 sql/mysql/migrations/50.sql create mode 100644 sql/mysql/migrations/51.sql create mode 100644 sql/mysql/migrations/52.sql create mode 100644 sql/mysql/migrations/53.sql create mode 100644 sql/mysql/migrations/54.sql create mode 100644 sql/mysql/migrations/55.sql create mode 100644 sql/mysql/migrations/56.sql create mode 100644 sql/mysql/migrations/57.sql create mode 100644 sql/mysql/migrations/58.sql create mode 100644 sql/mysql/migrations/59.sql create mode 100644 sql/mysql/migrations/6.sql create mode 100644 sql/mysql/migrations/60.sql create mode 100644 sql/mysql/migrations/61.sql create mode 100644 sql/mysql/migrations/62.sql create mode 100644 sql/mysql/migrations/63.sql create mode 100644 sql/mysql/migrations/64.sql create mode 100644 sql/mysql/migrations/65.sql create mode 100644 sql/mysql/migrations/66.sql create mode 100644 sql/mysql/migrations/67.sql create mode 100644 sql/mysql/migrations/68.sql create mode 100644 sql/mysql/migrations/69.sql create mode 100644 sql/mysql/migrations/7.sql create mode 100644 sql/mysql/migrations/70.sql create mode 100644 sql/mysql/migrations/71.sql create mode 100644 sql/mysql/migrations/72.sql create mode 100644 sql/mysql/migrations/73.sql create mode 100644 sql/mysql/migrations/74.sql create mode 100644 sql/mysql/migrations/75.sql create mode 100644 sql/mysql/migrations/76.sql create mode 100644 sql/mysql/migrations/77.sql create mode 100644 sql/mysql/migrations/78.sql create mode 100644 sql/mysql/migrations/79.sql create mode 100644 sql/mysql/migrations/8.sql create mode 100644 sql/mysql/migrations/80.sql create mode 100644 sql/mysql/migrations/81.sql create mode 100644 sql/mysql/migrations/82.sql create mode 100644 sql/mysql/migrations/83.sql create mode 100644 sql/mysql/migrations/84.sql create mode 100644 sql/mysql/migrations/85.sql create mode 100644 sql/mysql/migrations/86.sql create mode 100644 sql/mysql/migrations/87.sql create mode 100644 sql/mysql/migrations/88.sql create mode 100644 sql/mysql/migrations/89.sql create mode 100644 sql/mysql/migrations/9.sql create mode 100644 sql/mysql/migrations/90.sql create mode 100644 sql/mysql/migrations/91.sql create mode 100644 sql/mysql/migrations/92.sql create mode 100644 sql/mysql/migrations/93.sql create mode 100644 sql/mysql/migrations/94.sql create mode 100644 sql/mysql/migrations/95.sql create mode 100644 sql/mysql/migrations/96.sql create mode 100644 sql/mysql/migrations/97.sql create mode 100644 sql/mysql/migrations/98.sql create mode 100644 sql/mysql/migrations/99.sql create mode 100644 sql/mysql/schema.sql create mode 100644 sql/pgsql/migrations/10.sql create mode 100644 sql/pgsql/migrations/100.sql create mode 100644 sql/pgsql/migrations/101.sql create mode 100644 sql/pgsql/migrations/102.sql create mode 100644 sql/pgsql/migrations/103.sql create mode 100644 sql/pgsql/migrations/104.sql create mode 100644 sql/pgsql/migrations/105.sql create mode 100644 sql/pgsql/migrations/106.sql create mode 100644 sql/pgsql/migrations/107.sql create mode 100644 sql/pgsql/migrations/108.sql create mode 100644 sql/pgsql/migrations/109.sql create mode 100644 sql/pgsql/migrations/11.sql create mode 100644 sql/pgsql/migrations/110.sql create mode 100644 sql/pgsql/migrations/111.sql create mode 100644 sql/pgsql/migrations/112.sql create mode 100644 sql/pgsql/migrations/113.sql create mode 100644 sql/pgsql/migrations/114.sql create mode 100644 sql/pgsql/migrations/115.sql create mode 100644 sql/pgsql/migrations/116.sql create mode 100644 sql/pgsql/migrations/117.sql create mode 100644 sql/pgsql/migrations/118.sql create mode 100644 sql/pgsql/migrations/119.sql create mode 100644 sql/pgsql/migrations/12.sql create mode 100644 sql/pgsql/migrations/120.sql create mode 100644 sql/pgsql/migrations/121.sql create mode 100644 sql/pgsql/migrations/122.sql create mode 100644 sql/pgsql/migrations/123.sql create mode 100644 sql/pgsql/migrations/124.sql create mode 100644 sql/pgsql/migrations/125.sql create mode 100644 sql/pgsql/migrations/126.sql create mode 100644 sql/pgsql/migrations/127.sql create mode 100644 sql/pgsql/migrations/128.sql create mode 100644 sql/pgsql/migrations/129.sql create mode 100644 sql/pgsql/migrations/13.sql create mode 100644 sql/pgsql/migrations/130.sql create mode 100644 sql/pgsql/migrations/131.sql create mode 100644 sql/pgsql/migrations/132.sql create mode 100644 sql/pgsql/migrations/133.sql create mode 100644 sql/pgsql/migrations/134.sql create mode 100644 sql/pgsql/migrations/135.sql create mode 100644 sql/pgsql/migrations/136.sql create mode 100644 sql/pgsql/migrations/137.sql create mode 100644 sql/pgsql/migrations/138.sql create mode 100644 sql/pgsql/migrations/139.sql create mode 100644 sql/pgsql/migrations/14.sql create mode 100644 sql/pgsql/migrations/140.sql create mode 100644 sql/pgsql/migrations/141.sql create mode 100644 sql/pgsql/migrations/142.sql create mode 100644 sql/pgsql/migrations/15.sql create mode 100644 sql/pgsql/migrations/16.sql create mode 100644 sql/pgsql/migrations/17.sql create mode 100644 sql/pgsql/migrations/18.sql create mode 100644 sql/pgsql/migrations/19.sql create mode 100644 sql/pgsql/migrations/20.sql create mode 100644 sql/pgsql/migrations/21.sql create mode 100644 sql/pgsql/migrations/22.sql create mode 100644 sql/pgsql/migrations/23.sql create mode 100644 sql/pgsql/migrations/24.sql create mode 100644 sql/pgsql/migrations/25.sql create mode 100644 sql/pgsql/migrations/26.sql create mode 100644 sql/pgsql/migrations/27.sql create mode 100644 sql/pgsql/migrations/28.sql create mode 100644 sql/pgsql/migrations/29.sql create mode 100644 sql/pgsql/migrations/3.sql create mode 100644 sql/pgsql/migrations/30.sql create mode 100644 sql/pgsql/migrations/31.sql create mode 100644 sql/pgsql/migrations/32.sql create mode 100644 sql/pgsql/migrations/33.sql create mode 100644 sql/pgsql/migrations/34.sql create mode 100644 sql/pgsql/migrations/35.sql create mode 100644 sql/pgsql/migrations/36.sql create mode 100644 sql/pgsql/migrations/37.sql create mode 100644 sql/pgsql/migrations/38.sql create mode 100644 sql/pgsql/migrations/39.sql create mode 100644 sql/pgsql/migrations/4.sql create mode 100644 sql/pgsql/migrations/40.sql create mode 100644 sql/pgsql/migrations/41.sql create mode 100644 sql/pgsql/migrations/42.sql create mode 100644 sql/pgsql/migrations/43.sql create mode 100644 sql/pgsql/migrations/44.sql create mode 100644 sql/pgsql/migrations/45.sql create mode 100644 sql/pgsql/migrations/46.sql create mode 100644 sql/pgsql/migrations/47.sql create mode 100644 sql/pgsql/migrations/48.sql create mode 100644 sql/pgsql/migrations/49.sql create mode 100644 sql/pgsql/migrations/5.sql create mode 100644 sql/pgsql/migrations/50.sql create mode 100644 sql/pgsql/migrations/51.sql create mode 100644 sql/pgsql/migrations/52.sql create mode 100644 sql/pgsql/migrations/53.sql create mode 100644 sql/pgsql/migrations/54.sql create mode 100644 sql/pgsql/migrations/55.sql create mode 100644 sql/pgsql/migrations/56.sql create mode 100644 sql/pgsql/migrations/57.sql create mode 100644 sql/pgsql/migrations/58.sql create mode 100644 sql/pgsql/migrations/59.sql create mode 100644 sql/pgsql/migrations/6.sql create mode 100644 sql/pgsql/migrations/60.sql create mode 100644 sql/pgsql/migrations/61.sql create mode 100644 sql/pgsql/migrations/62.sql create mode 100644 sql/pgsql/migrations/63.sql create mode 100644 sql/pgsql/migrations/64.sql create mode 100644 sql/pgsql/migrations/65.sql create mode 100644 sql/pgsql/migrations/66.sql create mode 100644 sql/pgsql/migrations/67.sql create mode 100644 sql/pgsql/migrations/68.sql create mode 100644 sql/pgsql/migrations/69.sql create mode 100644 sql/pgsql/migrations/7.sql create mode 100644 sql/pgsql/migrations/70.sql create mode 100644 sql/pgsql/migrations/71.sql create mode 100644 sql/pgsql/migrations/72.sql create mode 100644 sql/pgsql/migrations/73.sql create mode 100644 sql/pgsql/migrations/74.sql create mode 100644 sql/pgsql/migrations/75.sql create mode 100644 sql/pgsql/migrations/76.sql create mode 100644 sql/pgsql/migrations/77.sql create mode 100644 sql/pgsql/migrations/78.sql create mode 100644 sql/pgsql/migrations/79.sql create mode 100644 sql/pgsql/migrations/8.sql create mode 100644 sql/pgsql/migrations/80.sql create mode 100644 sql/pgsql/migrations/81.sql create mode 100644 sql/pgsql/migrations/82.sql create mode 100644 sql/pgsql/migrations/83.sql create mode 100644 sql/pgsql/migrations/84.sql create mode 100644 sql/pgsql/migrations/85.sql create mode 100644 sql/pgsql/migrations/86.sql create mode 100644 sql/pgsql/migrations/87.sql create mode 100644 sql/pgsql/migrations/88.sql create mode 100644 sql/pgsql/migrations/89.sql create mode 100644 sql/pgsql/migrations/9.sql create mode 100644 sql/pgsql/migrations/90.sql create mode 100644 sql/pgsql/migrations/91.sql create mode 100644 sql/pgsql/migrations/92.sql create mode 100644 sql/pgsql/migrations/93.sql create mode 100644 sql/pgsql/migrations/94.sql create mode 100644 sql/pgsql/migrations/95.sql create mode 100644 sql/pgsql/migrations/96.sql create mode 100644 sql/pgsql/migrations/97.sql create mode 100644 sql/pgsql/migrations/98.sql create mode 100644 sql/pgsql/migrations/99.sql create mode 100644 sql/pgsql/schema.sql diff --git a/classes/config.php b/classes/config.php index 7a37d4a86..30b65305a 100644 --- a/classes/config.php +++ b/classes/config.php @@ -114,6 +114,9 @@ class Config { private $schema_version = null; private $version = []; + /** @var Db_Migrations $migrations */ + private $migrations; + public static function get_instance() : Config { if (self::$instance == null) self::$instance = new self(); @@ -218,18 +221,25 @@ class Config { return $rv; } - static function get_schema_version(bool $nocache = false) { - return self::get_instance()->_schema_version($nocache); + static function get_migrations() : Db_Migrations { + return self::get_instance()->_get_migrations(); } - function _schema_version(bool $nocache = false) { - if (empty($this->schema_version) || $nocache) { - $row = Db::pdo()->query("SELECT schema_version FROM ttrss_version")->fetch(); - - $this->schema_version = (int) $row["schema_version"]; + private function _get_migrations() : Db_Migrations { + if (empty($this->migrations)) { + $this->migrations = new Db_Migrations(); + $this->migrations->initialize(dirname(__DIR__) . "/sql", "ttrss_version", true); } - return $this->schema_version; + return $this->migrations; + } + + static function is_migration_needed() : bool { + return self::get_migrations()->is_migration_needed(); + } + + static function get_schema_version() : int { + return self::get_migrations()->get_version(); } static function cast_to(string $value, int $type_hint) { diff --git a/classes/db/migrations.php b/classes/db/migrations.php index f85b4d7c7..e77904f60 100644 --- a/classes/db/migrations.php +++ b/classes/db/migrations.php @@ -10,6 +10,7 @@ class Db_Migrations { private $cached_version; private $cached_max_version; + private $max_version_override; function __construct() { $this->pdo = Db::pdo(); @@ -22,14 +23,17 @@ class Db_Migrations { $base_is_latest); } - function initialize(string $root_path, string $migrations_table, bool $base_is_latest = true) { + function initialize(string $root_path, string $migrations_table, bool $base_is_latest = true, int $max_version_override = 0) { $this->base_path = "$root_path/" . Config::get(Config::DB_TYPE); $this->migrations_path = $this->base_path . "/migrations"; $this->migrations_table = $migrations_table; $this->base_is_latest = $base_is_latest; + $this->max_version_override = $max_version_override; } private function set_version(int $version) { + Debug::log("Updating table {$this->migrations_table} with version ${version}...", Debug::LOG_EXTENDED); + $sth = $this->pdo->query("SELECT * FROM {$this->migrations_table}"); if ($res = $sth->fetch()) { @@ -43,7 +47,7 @@ class Db_Migrations { $this->cached_version = $version; } - private function get_version() : int { + function get_version() : int { if (isset($this->cached_version)) return $this->cached_version; @@ -68,10 +72,26 @@ class Db_Migrations { private function migrate_to(int $version) { try { + if ($version <= $this->get_version()) { + Debug::log("Refusing to apply version $version: current version is higher", Debug::LOG_VERBOSE); + return false; + } + + if ($version == 0) + Debug::log("Loading base database schema...", Debug::LOG_VERBOSE); + else + Debug::log("Starting migration to $version...", Debug::LOG_VERBOSE); + $this->pdo->beginTransaction(); foreach ($this->get_lines($version) as $line) { - $this->pdo->query($line); + Debug::log($line, Debug::LOG_EXTENDED); + try { + $this->pdo->query($line); + } catch (PDOException $e) { + Debug::log("Failed on line: $line"); + throw $e; + } } if ($version == 0 && $this->base_is_latest) @@ -80,7 +100,10 @@ class Db_Migrations { $this->set_version($version); $this->pdo->commit(); + Debug::log("Migration finished, current version: " . $this->get_version(), Debug::LOG_VERBOSE); + } catch (PDOException $e) { + Debug::log("Migration failed: " . $e->getMessage(), Debug::LOG_VERBOSE); try { $this->pdo->rollback(); } catch (PDOException $ie) { @@ -90,7 +113,10 @@ class Db_Migrations { } } - private function get_max_version() : int { + function get_max_version() : int { + if ($this->max_version_override > 0) + return $this->max_version_override; + if (isset($this->cached_max_version)) return $this->cached_max_version; @@ -108,17 +134,32 @@ class Db_Migrations { return $this->cached_max_version; } + function is_migration_needed() : bool { + return $this->get_version() != $this->get_max_version(); + } + function migrate() : bool { - for ($i = $this->get_version() + 1; $i <= $this->get_max_version(); $i++) + if ($this->get_version() == -1) { + try { + $this->migrate_to(0); + } catch (PDOException $e) { + user_error("Failed to load base schema for {$this->migrations_table}: " . $e->getMessage(), E_USER_WARNING); + return false; + } + } + + for ($i = $this->get_version() + 1; $i <= $this->get_max_version(); $i++) { try { $this->migrate_to($i); } catch (PDOException $e) { - user_error("Failed applying migration $i on table {$this->migrations_table}: " . $e->getMessage(), E_USER_WARNING); + user_error("Failed to apply migration ${i} for {$this->migrations_table}: " . $e->getMessage(), E_USER_WARNING); + return false; //throw $e; } + } - return $this->get_version() == $this->get_max_version(); + return !$this->is_migration_needed(); } private function get_lines(int $version) : array { @@ -134,11 +175,11 @@ class Db_Migrations { }); return array_filter(explode(";", implode("", $lines)), function ($line) { - return strlen(trim($line)) > 0; + return strlen(trim($line)) > 0 && !in_array(strtolower($line), ["begin", "commit"]); }); } else { - user_error(E_USER_ERROR, "[migrations] requested schema file ${filename} not found."); + user_error("Requested schema file ${filename} not found.", E_USER_ERROR); return []; } } diff --git a/classes/debug.php b/classes/debug.php index 3061c6893..a0dcac35b 100644 --- a/classes/debug.php +++ b/classes/debug.php @@ -1,5 +1,10 @@ get_max_version()); + + $migrations->migrate(); + + } else { + Debug::log("Database schema is already at latest version."); + } + + /*Debug::log("Checking for updates (" . Config::get(Config::DB_TYPE) . ")..."); $updater = new Db_Updater(Db::pdo(), Config::get(Config::DB_TYPE)); @@ -412,7 +435,7 @@ Debug::log("All done."); } else { Debug::log("Database schema is already at latest version."); - } + } */ } -- cgit v1.2.3