67 public std::enable_shared_from_this<SqlCatalog> {
86 static Result<std::shared_ptr<SqlCatalog>> Make(
const SqlCatalogConfig& config,
87 std::shared_ptr<FileIO> file_io,
88 std::shared_ptr<CatalogStore> store);
90 std::string_view name()
const override;
92 Status CreateNamespace(
94 const std::unordered_map<std::string, std::string>& properties)
override;
96 Result<std::vector<Namespace>> ListNamespaces(
const Namespace& ns)
const override;
98 Result<std::unordered_map<std::string, std::string>> GetNamespaceProperties(
101 Status DropNamespace(
const Namespace& ns)
override;
103 Result<bool> NamespaceExists(
const Namespace& ns)
const override;
105 Status UpdateNamespaceProperties(
106 const Namespace& ns,
const std::unordered_map<std::string, std::string>& updates,
107 const std::unordered_set<std::string>& removals)
override;
109 Result<std::vector<TableIdentifier>> ListTables(
const Namespace& ns)
const override;
111 Result<std::shared_ptr<Table>> CreateTable(
112 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
113 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
114 const std::string& location,
115 const std::unordered_map<std::string, std::string>& properties)
override;
117 Result<std::shared_ptr<Table>> UpdateTable(
119 const std::vector<std::unique_ptr<TableRequirement>>& requirements,
120 const std::vector<std::unique_ptr<TableUpdate>>& updates)
override;
122 Result<std::shared_ptr<Transaction>> StageCreateTable(
123 const TableIdentifier& identifier,
const std::shared_ptr<Schema>& schema,
124 const std::shared_ptr<PartitionSpec>& spec,
const std::shared_ptr<SortOrder>& order,
125 const std::string& location,
126 const std::unordered_map<std::string, std::string>& properties)
override;
128 Result<bool> TableExists(
const TableIdentifier& identifier)
const override;
134 Status DropTable(
const TableIdentifier& identifier,
bool purge)
override;
138 Result<std::shared_ptr<Table>> LoadTable(
const TableIdentifier& identifier)
override;
140 Result<std::shared_ptr<Table>> RegisterTable(
142 const std::string& metadata_file_location)
override;
150 static Result<std::shared_ptr<SqlCatalog>> MakeSqliteCatalog(
160 static Result<std::shared_ptr<SqlCatalog>> MakePostgreSqlCatalog(
170 static Result<std::shared_ptr<SqlCatalog>> MakeMySqlCatalog(
175 std::shared_ptr<CatalogStore> store);
178 Result<std::string> GetTableMetadataLocation(
const TableIdentifier& identifier)
const;
181 Result<std::shared_ptr<Table>> LoadTableFrom(
const TableIdentifier& identifier,
182 const std::string& metadata_location);
185 std::shared_ptr<FileIO> file_io_;
186 std::shared_ptr<CatalogStore> store_;