diff --git a/Userland/Libraries/LibSQL/Database.cpp b/Userland/Libraries/LibSQL/Database.cpp index 37a1ddb423..2521ea46d3 100644 --- a/Userland/Libraries/LibSQL/Database.cpp +++ b/Userland/Libraries/LibSQL/Database.cpp @@ -23,6 +23,7 @@ Database::Database(DeprecatedString name) ResultOr Database::open() { + VERIFY(!m_open); TRY(m_heap->open()); m_schemas = BTree::construct(m_serializer, SchemaDef::index_def()->to_tuple_descriptor(), m_heap->schemas_root()); diff --git a/Userland/Libraries/LibSQL/Heap.cpp b/Userland/Libraries/LibSQL/Heap.cpp index eaa568d049..53d69a53f1 100644 --- a/Userland/Libraries/LibSQL/Heap.cpp +++ b/Userland/Libraries/LibSQL/Heap.cpp @@ -29,6 +29,8 @@ Heap::~Heap() ErrorOr Heap::open() { + VERIFY(!m_file); + size_t file_size = 0; struct stat stat_buffer; if (stat(name().characters(), &stat_buffer) != 0) { diff --git a/Userland/Services/SQLServer/DatabaseConnection.cpp b/Userland/Services/SQLServer/DatabaseConnection.cpp index 581b740fb9..358545f29b 100644 --- a/Userland/Services/SQLServer/DatabaseConnection.cpp +++ b/Userland/Services/SQLServer/DatabaseConnection.cpp @@ -38,10 +38,11 @@ ErrorOr> DatabaseConnection::create(StringView return Error::from_string_view("Invalid database name"sv); auto database = TRY(find_or_create_database(database_path, database_name)); - - if (auto result = database->open(); result.is_error()) { - warnln("Could not open database: {}", result.error().error_string()); - return Error::from_string_view("Could not open database"sv); + if (!database->is_open()) { + if (auto result = database->open(); result.is_error()) { + warnln("Could not open database: {}", result.error().error_string()); + return Error::from_string_view("Could not open database"sv); + } } return adopt_nonnull_ref_or_enomem(new (nothrow) DatabaseConnection(move(database), move(database_name), client_id));