# Buggy code
def init(db_path):
    """Initialize the SQL database connection."""
    database = QSqlDatabase.addDatabase("QSQLITE")
    if not database.isValid():
        raise SqlEnvironmentError(
            "Failed to add database. Are sqlite and Qt sqlite support installed?"
        )
    database.setDatabaseName(db_path)
    if not database.open():
        error = database.lastError()
        msg = "Failed to open sqlite database at {}: {}".format(db_path, error.text())
        raise_sqlite_error(msg, error)

    # Enable write-ahead-logging and reduce disk write frequency
    # see https://sqlite.org/pragma.html and issues #2930 and #3507
    Query("PRAGMA journal_mode=WAL").run()
    Query("PRAGMA synchronous=NORMAL").run()


# Traceback (qutebrowser.misc.sql.SqlEnvironmentError)
00:59:51 DEBUG    completion completionmodel:set_pattern:179 Setting completion pattern ''
00:59:51 DEBUG    sql        sql:__init__:174 Preparing SQL query: "SELECT url, title, strftime('%Y-%m-%d', last_atime, 'unixepoch', 'localtime') FROM CompletionHistory WHERE ((url || title) LIKE :0 escape '\')  ORDER BY last_atime DESC"
00:59:51 DEBUG    sql        sql:run:207 Running SQL query: "SELECT url, title, strftime('%Y-%m-%d', last_atime, 'unixepoch', 'localtime') FROM CompletionHistory WHERE ((url || title) LIKE :0 escape '\')  ORDER BY last_atime DESC"
00:59:51 DEBUG    sql        sql:run:210 query bindings: {':0': '%%'}
00:59:51 DEBUG    sql        sql:raise_sqlite_error:94 SQL error:
00:59:51 DEBUG    sql        sql:raise_sqlite_error:96 type: ConnectionError
00:59:51 DEBUG    sql        sql:raise_sqlite_error:97 database text: database disk image is malformed
00:59:51 DEBUG    sql        sql:raise_sqlite_error:98 driver text: Unable to fetch row
00:59:51 DEBUG    sql        sql:raise_sqlite_error:99 error code: 11
00:59:51 DEBUG    sql        debug:__exit__:265 Running completion query took 0.000379 seconds.
00:59:51 DEBUG    completion debug:__exit__:265 Set pattern  took 0.001134 seconds.
00:59:51 ERROR    misc       crashsignal:exception_hook:214 Uncaught exception
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/qutebrowser/completion/completer.py", line 260, in _update_completion
completion.set_pattern(pattern)
File "/usr/lib/python3.7/site-packages/qutebrowser/completion/completionwidget.py", line 320, in set_pattern
self.model().set_pattern(pattern)
File "/usr/lib/python3.7/site-packages/qutebrowser/completion/models/completionmodel.py", line 185, in set_pattern
cat.set_pattern(pattern)
File "/usr/lib/python3.7/site-packages/qutebrowser/completion/models/histcategory.py", line 102, in set_pattern
str(i): w for i, w in enumerate(words)})
File "/usr/lib/python3.7/site-packages/qutebrowser/misc/sql.py", line 213, in run
self._check_ok('exec', ok)
File "/usr/lib/python3.7/site-packages/qutebrowser/misc/sql.py", line 196, in _check_ok
raise_sqlite_error(msg, error)
File "/usr/lib/python3.7/site-packages/qutebrowser/misc/sql.py", line 118, in raise_sqlite_error
raise SqlEnvironmentError(msg, error)
qutebrowser.misc.sql.SqlEnvironmentError: Failed to exec query "SELECT url, title, strftime('%Y-%m-%d', last_atime, 'unixepoch', 'localtime') FROM CompletionHistory WHERE ((url || title) LIKE :0 escape '\')  ORDER BY last_atime DESC": "database disk image is malformed Unable to fetch row"

# Fixed code
def init(db_path):
    """Initialize the SQL database connection."""
    database = QSqlDatabase.addDatabase("QSQLITE")
    if not database.isValid():
        raise SqlKnownError(
            "Failed to add database. Are sqlite and Qt sqlite support installed?"
        )
    database.setDatabaseName(db_path)
    if not database.open():
        error = database.lastError()
        msg = "Failed to open sqlite database at {}: {}".format(db_path, error.text())
        raise_sqlite_error(msg, error)

    # Enable write-ahead-logging and reduce disk write frequency
    # see https://sqlite.org/pragma.html and issues #2930 and #3507
    Query("PRAGMA journal_mode=WAL").run()
    Query("PRAGMA synchronous=NORMAL").run()