Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 936102 - kde-apps/akonadi: Switch default database backend (from QMYSQL) to QSQLITE (IUSE => "mysql +sqlite")
Summary: kde-apps/akonadi: Switch default database backend (from QMYSQL) to QSQLITE (I...
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Gentoo KDE team
URL:
Whiteboard:
Keywords: PullRequest
Depends on: 681658
Blocks: 935416
  Show dependency tree
 
Reported: 2024-07-15 10:20 UTC by Andreas Sturmlechner
Modified: 2024-11-09 16:03 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Sturmlechner gentoo-dev 2024-07-15 10:20:18 UTC
What happened so far:
https://kontact.kde.org/blog/2023/2023-05-03-kde-pim-march-april-2023/#akonadi
https://kontact.kde.org/blog/2024/2024-01-01-kde-pim-november-december-2024/#akonadi


Consequently, a year ago we dropped our warning about QSQLITE backend:

    kde-apps/akonadi: Drop obsolete QSQLITE3 deps, args, ewarn
    
    tl;dr: Upstream QSQLITE driver is considered stable, more up to date,
    old (and by now outdated) QSQLITE3 fork was removed.
    
    Upstream commit e70a7a5521b4d8fe0bb36a5b3392c547851507b0


Missing, so far, was 

1) an upstream migration utility to switch backends without starting from scratch, but it is part of 24.05:

    https://discuss.kde.org/t/migrate-akonadi-to-sqlite-from-postgres/7094
    https://kontact.kde.org/blog/2024/2024-03-01-kde-pim-january-february-2024/#akonadi

2) a clear "Go" by upstream that this backend should be preferred. While QMYSQL is still default ("for the time being"), the wording has changed: 

    https://invent.kde.org/pim/akonadi/-/commit/064b9f38

    DATABASE_BACKEND (Default: MYSQL, available: MYSQL, POSTGRES, SQLITE):
    Define which database driver to use by default. MYSQL is the default 
    right now, SQLITE is recommended for most users.


FreeBSD have already switched:
https://euroquis.nl//freebsd/2023/04/24/akonadi.html

What we need to do:
a) search for remaining known issues with QSQLITE (bugs.kde.org, FreeBSD)
b) test the upstream migration tool
c) add instructions for users about the migration path (postinst, news item?)
d) don't break existing users' setups
   - leave IUSE="+mysql" enabled for some time(?)
   - detect "new" from "upgrade" for setting up default "DRIVER=" config
e) do it (with 25.04.2 already, or wait for 24.08?)
Comment 1 Andreas Sturmlechner gentoo-dev 2024-10-10 23:55:38 UTC
Migration on my newly upgraded old laptop worked rather simple, and fine, coming from postgresql:13.

> $ akonadi-db-migrator --newengine sqlite
> Stopping Akonadi service...
> org.kde.pim.akonadiserver: Running DB initializer
> org.kde.pim.akonadiserver: DB initializer done
> org.kde.pim.akonadiserver: Running DB initializer
> org.kde.pim.akonadiserver: DB initializer done
> Running fsck on the source database
> Database fsck completed
> Migrating table SchemaVersionTable (1/19)...
> 100%...
> Optimizing table SchemaVersionTable...
> Migrating table ResourceTable (2/19)...
> 50%...
> 100%...
> Optimizing table ResourceTable...
> Migrating table CollectionTable (3/19)...
> 50%...
> 100%...
> Optimizing table CollectionTable...
> Migrating table MimeTypeTable (4/19)...
> 30%...
> 100%...
> Optimizing table MimeTypeTable...
> Migrating table PimItemTable (5/19)...
> 0%...
> 10%...
> 20%...
> 30%...
> 40%...
> 50%...
> 60%...
> 70%...
> 80%...
> 90%...
> 100%...
> Optimizing table PimItemTable...
> Migrating table FlagTable (6/19)...
> 50%...
> 100%...
> Optimizing table FlagTable...
> Migrating table PartTypeTable (7/19)...
> 10%...
> 20%...
> 30%...
> 40%...
> 50%...
> 60%...
> 70%...
> 80%...
> 90%...
> 100%...
> Optimizing table PartTypeTable...
> Migrating table PartTable (8/19)...
> 0%...
> 10%...
> 20%...
> 30%...
> 40%...
> 50%...
> 60%...
> 70%...
> 80%...
> 90%...
> 100%...
> Optimizing table PartTable...
> Migrating table CollectionAttributeTable (9/19)...
> 30%...
> 50%...
> 80%...
> 100%...
> Optimizing table CollectionAttributeTable...
> Migrating table TagTypeTable (10/19)...
> 100%...
> Optimizing table TagTypeTable...
> Migrating table TagTable (11/19)...
> Optimizing table TagTable...
> Migrating table TagAttributeTable (12/19)...
> Optimizing table TagAttributeTable...
> Migrating table TagRemoteIdResourceRelationTable (13/19)...
> Optimizing table TagRemoteIdResourceRelationTable...
> Migrating table RelationTypeTable (14/19)...
> 100%...
> Optimizing table RelationTypeTable...
> Migrating table RelationTable (15/19)...
> Optimizing table RelationTable...
> Migrating table PimItemFlagRelation (16/19)...
> 0%...
> 10%...
> 20%...
> 30%...
> 40%...
> 50%...
> 60%...
> 70%...
> 80%...
> 90%...
> 100%...
> Optimizing table PimItemFlagRelation...
> Migrating table PimItemTagRelation (17/19)...
> Optimizing table PimItemTagRelation...
> Migrating table CollectionMimeTypeRelation (18/19)...
> 20%...
> 50%...
> 70%...
> 100%...
> Optimizing table CollectionMimeTypeRelation...
> Migrating table CollectionPimItemRelation (19/19)...
> Optimizing table CollectionPimItemRelation...
> waiting for server to shut down.... done
> server stopped
> Backing up original database...
> Starting Akonadi service...
> Migration completed successfully.

After that, I found ~/.config/akonadi/akonadiserverrc to have been switched Driver=QSQLITE by the tool as well, together with an added [QSQLITE] section pointing to the resulting akonadi.db.

So it seems like any migration guide will be rather short.
Comment 2 Andreas Sturmlechner gentoo-dev 2024-10-11 00:02:52 UTC
(In reply to Andreas Sturmlechner from comment #1)
> After that, I found ~/.config/akonadi/akonadiserverrc to have been switched
> Driver=QSQLITE by the tool as well, together with an added [QSQLITE] section
> pointing to the resulting akonadi.db.
... with a copy of the orig file named akonadiserverrc.bkp in the same dir.