40 public std::enable_shared_from_this<InMemoryCatalog> {
42 InMemoryCatalog(std::string
const& name, std::shared_ptr<FileIO>
const& file_io,
43 std::string
const& warehouse_location,
44 std::unordered_map<std::string, std::string>
const& properties);
47 static std::shared_ptr<InMemoryCatalog> Make(
48 std::string
const& name, std::shared_ptr<FileIO>
const& file_io,
49 std::string
const& warehouse_location,
50 std::unordered_map<std::string, std::string>
const& properties);
52 std::string_view name()
const override;
54 Status CreateNamespace(
56 const std::unordered_map<std::string, std::string>& properties)
override;
58 Result<std::vector<Namespace>> ListNamespaces(
const Namespace& ns)
const override;
60 Status DropNamespace(
const Namespace& ns)
override;
62 Result<bool> NamespaceExists(
const Namespace& ns)
const override;
64 Result<std::unordered_map<std::string, std::string>> GetNamespaceProperties(
67 Status UpdateNamespaceProperties(
68 const Namespace& ns,
const std::unordered_map<std::string, std::string>& updates,
69 const std::unordered_set<std::string>& removals)
override;
71 Result<std::vector<TableIdentifier>> ListTables(
const Namespace& ns)
const override;
73 Result<std::shared_ptr<Table>> CreateTable(
74 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
75 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
76 const std::string& location,
77 const std::unordered_map<std::string, std::string>& properties)
override;
79 Result<std::shared_ptr<Table>> UpdateTable(
81 const std::vector<std::unique_ptr<TableRequirement>>& requirements,
82 const std::vector<std::unique_ptr<TableUpdate>>& updates)
override;
84 Result<std::shared_ptr<Transaction>> StageCreateTable(
85 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
86 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
87 const std::string& location,
88 const std::unordered_map<std::string, std::string>& properties)
override;
90 Result<bool> TableExists(
const TableIdentifier& identifier)
const override;
92 Status DropTable(
const TableIdentifier& identifier,
bool purge)
override;
96 Result<std::shared_ptr<Table>> LoadTable(
const TableIdentifier& identifier)
override;
98 Result<std::shared_ptr<Table>> RegisterTable(
100 const std::string& metadata_file_location)
override;
103 std::string catalog_name_;
104 std::unordered_map<std::string, std::string> properties_;
105 std::shared_ptr<FileIO> file_io_;
106 std::string warehouse_location_;
107 std::unique_ptr<class InMemoryNamespace> root_namespace_;
108 mutable std::shared_mutex mutex_;