Exemplo n.º 1
0
	inline static int open (ckdb::Plugin * handle, ckdb::Key * errorKey, Builder builder = defaultBuilder)
	{
		kdb::KeySet config (elektraPluginGetConfig (handle));
		int ret = openHelper (handle, config, errorKey, builder);
		config.release ();
		return ret;
	}
Exemplo n.º 2
0
bool SqlDatabase::openOrCreateReadWrite( const QString& filename )
{
    if( isOpen() ) {
        return true;
    }

    if( !openHelper(filename, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE) ) {
        return false;
    }

    if( !checkDb() ) {
        qDebug() << "Consistency check failed, removing broken db" << filename;
        close();
        QFile::remove(filename);

        return openHelper(filename, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE);
    }

    return true;
}
Exemplo n.º 3
0
bool SqlDatabase::openOrCreateReadWrite(const QString &filename)
{
    if (isOpen()) {
        return true;
    }

    if (!openHelper(filename, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE)) {
        return false;
    }

    auto checkResult = checkDb();
    if (checkResult != CheckDbResult::Ok) {
        if (checkResult == CheckDbResult::CantPrepare) {
            // When disk space is low, preparing may fail even though the db is fine.
            // Typically CANTOPEN or IOERR.
            qint64 freeSpace = Utility::freeDiskSpace(QFileInfo(filename).dir().absolutePath());
            if (freeSpace != -1 && freeSpace < 1000000) {
                qCWarning(lcSql) << "Can't prepare consistency check and disk space is low:" << freeSpace;
                close();
                return false;
            }

            // Even when there's enough disk space, it might very well be that the
            // file is on a read-only filesystem and can't be opened because of that.
            if (_errId == SQLITE_CANTOPEN) {
                qCWarning(lcSql) << "Can't open db to prepare consistency check, aborting";
                close();
                return false;
            }
        }

        qCCritical(lcSql) << "Consistency check failed, removing broken db" << filename;
        close();
        QFile::remove(filename);

        return openHelper(filename, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE);
    }

    return true;
}
Exemplo n.º 4
0
bool SqlDatabase::openReadOnly( const QString& filename )
{
    if( isOpen() ) {
        return true;
    }

    if( !openHelper(filename, SQLITE_OPEN_READONLY) ) {
        return false;
    }

    if( !checkDb() ) {
        qDebug() << "Consistency check failed in readonly mode, giving up" << filename;
        close();
        return false;
    }

    return true;
}