mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-26 23:28:14 +03:00
Sql: Allow prepare fail for PRAGMA quick_check #5357
This actually happens in low-disk situations.
This commit is contained in:
parent
22135f9f57
commit
6835429a28
2 changed files with 6 additions and 4 deletions
|
@ -70,7 +70,9 @@ bool SqlDatabase::openHelper( const QString& filename, int sqliteFlags )
|
||||||
|
|
||||||
bool SqlDatabase::checkDb()
|
bool SqlDatabase::checkDb()
|
||||||
{
|
{
|
||||||
SqlQuery quick_check("PRAGMA quick_check;", *this);
|
// quick_check can fail with a disk IO error when diskspace is low
|
||||||
|
SqlQuery quick_check(*this);
|
||||||
|
quick_check.prepare("PRAGMA quick_check;", /*allow_failure=*/true);
|
||||||
if( !quick_check.exec() ) {
|
if( !quick_check.exec() ) {
|
||||||
qDebug() << "Error running quick_check on database";
|
qDebug() << "Error running quick_check on database";
|
||||||
return false;
|
return false;
|
||||||
|
@ -199,7 +201,7 @@ SqlQuery::SqlQuery(const QString& sql, SqlDatabase& db)
|
||||||
prepare(sql);
|
prepare(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SqlQuery::prepare( const QString& sql)
|
int SqlQuery::prepare( const QString& sql, bool allow_failure )
|
||||||
{
|
{
|
||||||
QString s(sql);
|
QString s(sql);
|
||||||
_sql = s.trimmed();
|
_sql = s.trimmed();
|
||||||
|
@ -221,7 +223,7 @@ int SqlQuery::prepare( const QString& sql)
|
||||||
if( _errId != SQLITE_OK ) {
|
if( _errId != SQLITE_OK ) {
|
||||||
_error = QString::fromUtf8(sqlite3_errmsg(_db));
|
_error = QString::fromUtf8(sqlite3_errmsg(_db));
|
||||||
qWarning() << "Sqlite prepare statement error:" << _error << "in" <<_sql;
|
qWarning() << "Sqlite prepare statement error:" << _error << "in" <<_sql;
|
||||||
Q_ASSERT(!"SQLITE Prepare error");
|
Q_ASSERT(allow_failure || !"SQLITE Prepare error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _errId;
|
return _errId;
|
||||||
|
|
|
@ -80,7 +80,7 @@ public:
|
||||||
bool isSelect();
|
bool isSelect();
|
||||||
bool isPragma();
|
bool isPragma();
|
||||||
bool exec();
|
bool exec();
|
||||||
int prepare( const QString& sql );
|
int prepare( const QString& sql, bool allow_failure = false );
|
||||||
bool next();
|
bool next();
|
||||||
void bindValue(int pos, const QVariant& value);
|
void bindValue(int pos, const QVariant& value);
|
||||||
QString lastQuery() const;
|
QString lastQuery() const;
|
||||||
|
|
Loading…
Reference in a new issue