mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 15:48:12 +00:00
LibSQL: Remove Core::EventReceiver parent from SQL::Index
This relationship was only used to provide factory methods for the index (and its BTree child).
This commit is contained in:
parent
1b40bf9783
commit
5ad78cab8d
5 changed files with 19 additions and 18 deletions
|
@ -134,7 +134,7 @@ NonnullRefPtr<SQL::BTree> setup_btree(SQL::Serializer& serializer)
|
||||||
root_pointer = serializer.heap().request_new_block_index();
|
root_pointer = serializer.heap().request_new_block_index();
|
||||||
serializer.heap().set_user_value(0, root_pointer);
|
serializer.heap().set_user_value(0, root_pointer);
|
||||||
}
|
}
|
||||||
auto btree = SQL::BTree::construct(serializer, tuple_descriptor, true, root_pointer);
|
auto btree = MUST(SQL::BTree::create(serializer, tuple_descriptor, true, root_pointer));
|
||||||
btree->on_new_root = [&]() {
|
btree->on_new_root = [&]() {
|
||||||
serializer.heap().set_user_value(0, btree->root());
|
serializer.heap().set_user_value(0, btree->root());
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,17 +9,22 @@
|
||||||
|
|
||||||
namespace SQL {
|
namespace SQL {
|
||||||
|
|
||||||
|
ErrorOr<NonnullRefPtr<BTree>> BTree::create(Serializer& serializer, NonnullRefPtr<TupleDescriptor> const& descriptor, bool unique, Block::Index block_index)
|
||||||
|
{
|
||||||
|
return adopt_nonnull_ref_or_enomem(new (nothrow) BTree(serializer, descriptor, unique, block_index));
|
||||||
|
}
|
||||||
|
|
||||||
|
ErrorOr<NonnullRefPtr<BTree>> BTree::create(Serializer& serializer, NonnullRefPtr<TupleDescriptor> const& descriptor, Block::Index block_index)
|
||||||
|
{
|
||||||
|
return create(serializer, descriptor, true, block_index);
|
||||||
|
}
|
||||||
|
|
||||||
BTree::BTree(Serializer& serializer, NonnullRefPtr<TupleDescriptor> const& descriptor, bool unique, Block::Index block_index)
|
BTree::BTree(Serializer& serializer, NonnullRefPtr<TupleDescriptor> const& descriptor, bool unique, Block::Index block_index)
|
||||||
: Index(serializer, descriptor, unique, block_index)
|
: Index(serializer, descriptor, unique, block_index)
|
||||||
, m_root(nullptr)
|
, m_root(nullptr)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
BTree::BTree(Serializer& serializer, NonnullRefPtr<TupleDescriptor> const& descriptor, Block::Index block_index)
|
|
||||||
: BTree(serializer, descriptor, true, block_index)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
BTreeIterator BTree::begin()
|
BTreeIterator BTree::begin()
|
||||||
{
|
{
|
||||||
if (!m_root)
|
if (!m_root)
|
||||||
|
|
|
@ -92,10 +92,9 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
class BTree : public Index {
|
class BTree : public Index {
|
||||||
C_OBJECT(BTree);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~BTree() override = default;
|
static ErrorOr<NonnullRefPtr<BTree>> create(Serializer&, NonnullRefPtr<TupleDescriptor> const&, bool unique, Block::Index);
|
||||||
|
static ErrorOr<NonnullRefPtr<BTree>> create(Serializer&, NonnullRefPtr<TupleDescriptor> const&, Block::Index);
|
||||||
|
|
||||||
Block::Index root() const { return m_root ? m_root->block_index() : 0; }
|
Block::Index root() const { return m_root ? m_root->block_index() : 0; }
|
||||||
bool insert(Key const&);
|
bool insert(Key const&);
|
||||||
|
@ -110,7 +109,6 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BTree(Serializer&, NonnullRefPtr<TupleDescriptor> const&, bool unique, Block::Index);
|
BTree(Serializer&, NonnullRefPtr<TupleDescriptor> const&, bool unique, Block::Index);
|
||||||
BTree(Serializer&, NonnullRefPtr<TupleDescriptor> const&, Block::Index);
|
|
||||||
void initialize_root();
|
void initialize_root();
|
||||||
TreeNode* new_root();
|
TreeNode* new_root();
|
||||||
OwnPtr<TreeNode> m_root { nullptr };
|
OwnPtr<TreeNode> m_root { nullptr };
|
||||||
|
|
|
@ -32,17 +32,17 @@ ResultOr<void> Database::open()
|
||||||
VERIFY(!m_open);
|
VERIFY(!m_open);
|
||||||
TRY(m_heap->open());
|
TRY(m_heap->open());
|
||||||
|
|
||||||
m_schemas = BTree::construct(m_serializer, SchemaDef::index_def()->to_tuple_descriptor(), m_heap->schemas_root());
|
m_schemas = TRY(BTree::create(m_serializer, SchemaDef::index_def()->to_tuple_descriptor(), m_heap->schemas_root()));
|
||||||
m_schemas->on_new_root = [&]() {
|
m_schemas->on_new_root = [&]() {
|
||||||
m_heap->set_schemas_root(m_schemas->root());
|
m_heap->set_schemas_root(m_schemas->root());
|
||||||
};
|
};
|
||||||
|
|
||||||
m_tables = BTree::construct(m_serializer, TableDef::index_def()->to_tuple_descriptor(), m_heap->tables_root());
|
m_tables = TRY(BTree::create(m_serializer, TableDef::index_def()->to_tuple_descriptor(), m_heap->tables_root()));
|
||||||
m_tables->on_new_root = [&]() {
|
m_tables->on_new_root = [&]() {
|
||||||
m_heap->set_tables_root(m_tables->root());
|
m_heap->set_tables_root(m_tables->root());
|
||||||
};
|
};
|
||||||
|
|
||||||
m_table_columns = BTree::construct(m_serializer, ColumnDef::index_def()->to_tuple_descriptor(), m_heap->table_columns_root());
|
m_table_columns = TRY(BTree::create(m_serializer, ColumnDef::index_def()->to_tuple_descriptor(), m_heap->table_columns_root()));
|
||||||
m_table_columns->on_new_root = [&]() {
|
m_table_columns->on_new_root = [&]() {
|
||||||
m_heap->set_table_columns_root(m_table_columns->root());
|
m_heap->set_table_columns_root(m_table_columns->root());
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LibCore/EventReceiver.h>
|
#include <AK/RefCounted.h>
|
||||||
#include <LibSQL/Forward.h>
|
#include <LibSQL/Forward.h>
|
||||||
#include <LibSQL/Meta.h>
|
#include <LibSQL/Meta.h>
|
||||||
#include <LibSQL/Serializer.h>
|
#include <LibSQL/Serializer.h>
|
||||||
|
@ -31,11 +31,9 @@ private:
|
||||||
Block::Index m_block_index;
|
Block::Index m_block_index;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Index : public Core::EventReceiver {
|
class Index : public RefCounted<Index> {
|
||||||
C_OBJECT_ABSTRACT(Index);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
~Index() override = default;
|
virtual ~Index() = default;
|
||||||
|
|
||||||
NonnullRefPtr<TupleDescriptor> descriptor() const { return m_descriptor; }
|
NonnullRefPtr<TupleDescriptor> descriptor() const { return m_descriptor; }
|
||||||
[[nodiscard]] bool duplicates_allowed() const { return !m_unique; }
|
[[nodiscard]] bool duplicates_allowed() const { return !m_unique; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue