void SQLiteDatabase::setMaximumSize(int64_t size) { if (size < 0) size = 0; int currentPageSize = pageSize(); ASSERT(currentPageSize); int64_t newMaxPageCount = currentPageSize ? size / currentPageSize : 0; MutexLocker locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, "PRAGMA max_page_count = " + String::number(newMaxPageCount)); statement.prepare(); if (statement.step() != SQLResultRow) #if OS(WINDOWS) LOG_ERROR("Failed to set maximum size of database to %I64i bytes", static_cast<long long>(size)); #else LOG_ERROR("Failed to set maximum size of database to %lli bytes", static_cast<long long>(size)); #endif enableAuthorizer(true); }
Vector<String> Database::performGetTableNames() { disableAuthorizer(); SQLiteStatement statement(sqliteDatabase(), "SELECT name FROM sqlite_master WHERE type='table';"); if (statement.prepare() != SQLResultOk) { LOG_ERROR("Unable to retrieve list of tables for database %s", databaseDebugName().ascii().data()); enableAuthorizer(); return Vector<String>(); } Vector<String> tableNames; int result; while ((result = statement.step()) == SQLResultRow) { String name = statement.getColumnText(0); if (name != databaseInfoTableName()) tableNames.append(name); } enableAuthorizer(); if (result != SQLResultDone) { LOG_ERROR("Error getting tables for database %s", databaseDebugName().ascii().data()); return Vector<String>(); } return tableNames; }
void SQLiteDatabase::runIncrementalVacuumCommand() { MutexLocker locker(m_authorizerLock); enableAuthorizer(false); if (!executeCommand("PRAGMA incremental_vacuum")) LOG(SQLDatabase, "Unable to run incremental vacuum - %s", lastErrorMsg()); enableAuthorizer(true); }
int SQLiteDatabase::runIncrementalVacuumCommand() { LockHolder locker(m_authorizerLock); enableAuthorizer(false); if (!executeCommand(ASCIILiteral("PRAGMA incremental_vacuum"))) LOG(SQLDatabase, "Unable to run incremental vacuum - %s", lastErrorMsg()); enableAuthorizer(true); return lastError(); }
int64_t SQLiteDatabase::maximumSize() { MutexLocker locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, "PRAGMA max_page_count"); int64_t size = statement.getColumnInt64(0) * pageSize(); enableAuthorizer(true); return size; }
int64_t SQLiteDatabase::freeSpaceSize() { MutexLocker locker(m_authorizerLock); enableAuthorizer(false); // Note: freelist_count was added in SQLite 3.4.1. SQLiteStatement statement(*this, "PRAGMA freelist_count"); int64_t size = statement.getColumnInt64(0) * pageSize(); enableAuthorizer(true); return size; }
int64_t SQLiteDatabase::totalSize() { int64_t pageCount = 0; { MutexLocker locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, "PRAGMA page_count"); pageCount = statement.getColumnInt64(0); enableAuthorizer(true); } return pageCount * pageSize(); }
int64_t SQLiteDatabase::maximumSize() { int64_t maxPageCount = 0; { LockHolder locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, ASCIILiteral("PRAGMA max_page_count")); maxPageCount = statement.getColumnInt64(0); enableAuthorizer(true); } return maxPageCount * pageSize(); }
int64_t SQLiteDatabase::freeSpaceSize() { int64_t freelistCount = 0; { LockHolder locker(m_authorizerLock); enableAuthorizer(false); // Note: freelist_count was added in SQLite 3.4.1. SQLiteStatement statement(*this, ASCIILiteral("PRAGMA freelist_count")); freelistCount = statement.getColumnInt64(0); enableAuthorizer(true); } return freelistCount * pageSize(); }
int SQLiteDatabase::pageSize() { // Since the page size of a database is locked in at creation and therefore cannot be dynamic, // we can cache the value for future use if (m_pageSize == -1) { MutexLocker locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, "PRAGMA page_size"); m_pageSize = statement.getColumnInt(0); enableAuthorizer(true); } return m_pageSize; }
void SQLiteDatabase::setMaximumSize(int64_t size) { if (size < 0) size = 0; int currentPageSize = pageSize(); ASSERT(currentPageSize || !m_db); int64_t newMaxPageCount = currentPageSize ? size / currentPageSize : 0; LockHolder locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, "PRAGMA max_page_count = " + String::number(newMaxPageCount)); statement.prepare(); if (statement.step() != SQLITE_ROW) LOG_ERROR("Failed to set maximum size of database to %lli bytes", static_cast<long long>(size)); enableAuthorizer(true); }
void SQLiteDatabase::setMaximumSize(int64_t size) { if (size < 0) size = 0; int currentPageSize = pageSize(); ASSERT(currentPageSize || !m_db); int64_t newMaxPageCount = currentPageSize ? size / currentPageSize : 0; MutexLocker locker(m_authorizerLock); enableAuthorizer(false); SQLiteStatement statement(*this, "PRAGMA max_page_count = " + String::number(newMaxPageCount)); statement.prepare(); if (statement.step() != SQLResultRow) DLOG(ERROR) << "Failed to set maximum size of database to " << size << " bytes"; enableAuthorizer(true); }
void SQLiteDatabase::setAuthorizer(DatabaseAuthorizer* auth) { if (!m_db) { NOTREACHED() << "Attempt to set an authorizer on a non-open SQL database"; return; } MutexLocker locker(m_authorizerLock); m_authorizer = auth; enableAuthorizer(true); }
void SQLiteDatabase::setAuthorizer(PassRefPtr<DatabaseAuthorizer> auth) { if (!m_db) { LOG_ERROR("Attempt to set an authorizer on a non-open SQL database"); ASSERT_NOT_REACHED(); return; } MutexLocker locker(m_authorizerLock); m_authorizer = auth; enableAuthorizer(true); }
void SQLiteDatabase::setAuthorizer(DatabaseAuthorizer& authorizer) { if (!m_db) { LOG_ERROR("Attempt to set an authorizer on a non-open SQL database"); ASSERT_NOT_REACHED(); return; } LockHolder locker(m_authorizerLock); m_authorizer = &authorizer; enableAuthorizer(true); }