Skip to content
  • Heinz Wiesinger's avatar
    Only remove init connections to the database on server shutdown. · b145f47f
    Heinz Wiesinger authored
    Summary:
    With MariaDB 10.2 libmysqlclient was replaced with libmariadb that
    changed how establishing database connections behaves. The MySQL
    QSQL driver calls mysql_server_end() on QSqlDatabase::removeDatabase()
    if the overall connection count dropped to 0 (which it does when
    the init connection is removed).
    A future QSqlDatabase:addDatabase() would call mysql_server_init()
    again, but this no longer works with libmariadb as that one only
    allows calling mysql_server_init() once. Future calls are simply
    ignored.
    
    In order to prevent this from happening we have to keep the
    init connection open until the server shuts down, so the connection
    count only drops to 0 at shutdown and mysql_server_end() isn't
    called before.
    
    This is a workaround for QTBUG-63108
    
    CCBUG: 383991
    
    Reviewers: dvratil, mlaurent
    
    Reviewed By: dvratil
    
    Subscribers: #kde_pim
    
    Tags: #kde_pim
    
    Differential Revision: https://phabricator.kde.org/D7858
    b145f47f