ADBC
Arrow 資料庫連線能力
載入中...
搜尋中...
無符合項目
objects.h
1// 授權條款為 Apache Software Foundation (ASF) 之下述條款之一。
2// 詳情請參閱隨此檔案發行的 NOTICE 檔案,
3// 以取得額外資訊。ASF 依據以下條款授權此檔案給您,
4// 關於版權歸屬。ASF 授權此檔案
5// 於 Apache License 2.0 版 (
6// "License") 之下;除非遵守 License 規定,
7// 否則您不得使用此檔案。您可以在以下網址取得 License 的副本:
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// 除非適用法律要求或書面同意,
12// 否則依據 License 散布之軟體係以
13// "現狀" 基礎散布,不附帶任何明示或暗示的
14// 各種保證或條件。請參閱 License 以瞭解
15// 特定語言規範權限與限制。
16// 在 License 條款下。
17
18#pragma once
19
20#include <optional>
21#include <string_view>
22#include <vector>
23
24#include <arrow-adbc/adbc.h>
26#include "driver/framework/type_fwd.h"
27
28namespace adbc::driver {
29
34
36Status MakeGetObjectsSchema(ArrowSchema* schema);
37
39enum class GetObjectsDepth {
40 kCatalogs,
41 kSchemas,
42 kTables,
43 kColumns,
44};
45
51 virtual ~GetObjectsHelper() = default;
52
53 struct Table {
54 std::string_view name;
55 std::string_view type;
56 };
57
58 struct ColumnXdbc {
59 std::optional<int16_t> xdbc_data_type;
60 std::optional<std::string_view> xdbc_type_name;
61 std::optional<int32_t> xdbc_column_size;
62 std::optional<int16_t> xdbc_decimal_digits;
63 std::optional<int16_t> xdbc_num_prec_radix;
64 std::optional<int16_t> xdbc_nullable;
65 std::optional<std::string_view> xdbc_column_def;
66 std::optional<int16_t> xdbc_sql_data_type;
67 std::optional<int16_t> xdbc_datetime_sub;
68 std::optional<int32_t> xdbc_char_octet_length;
69 std::optional<std::string_view> xdbc_is_nullable;
70 std::optional<std::string_view> xdbc_scope_catalog;
71 std::optional<std::string_view> xdbc_scope_schema;
72 std::optional<std::string_view> xdbc_scope_table;
73 std::optional<bool> xdbc_is_autoincrement;
74 std::optional<bool> xdbc_is_generatedcolumn;
75 };
76
77 struct Column {
78 std::string_view column_name;
79 int32_t ordinal_position;
80 std::optional<std::string_view> remarks;
81 std::optional<ColumnXdbc> xdbc;
82 };
83
85 std::optional<std::string_view> catalog;
86 std::optional<std::string_view> schema;
87 std::string_view table;
88 std::string_view column;
89 };
90
91 struct Constraint {
92 std::optional<std::string_view> name;
93 std::string_view type;
94 std::vector<std::string_view> column_names;
95 std::optional<std::vector<ConstraintUsage>> usage;
96 };
97
98 Status Close() { return status::Ok(); }
99
103 std::optional<std::string_view> catalog_filter,
104 std::optional<std::string_view> schema_filter,
105 std::optional<std::string_view> table_filter,
106 std::optional<std::string_view> column_filter,
107 const std::vector<std::string_view>& table_types) {
108 return status::NotImplemented("GetObjects");
109 }
110
111 virtual Status LoadCatalogs(std::optional<std::string_view> catalog_filter) {
112 return status::NotImplemented("GetObjects at depth = catalog");
113 };
114
115 virtual Result<std::optional<std::string_view>> NextCatalog() { return std::nullopt; }
116
117 virtual Status LoadSchemas(std::string_view catalog,
118 std::optional<std::string_view> schema_filter) {
119 return status::NotImplemented("GetObjects at depth = schema");
120 };
121
122 virtual Result<std::optional<std::string_view>> NextSchema() { return std::nullopt; }
123
124 virtual Status LoadTables(std::string_view catalog, std::string_view schema,
125 std::optional<std::string_view> table_filter,
126 const std::vector<std::string_view>& table_types) {
127 return status::NotImplemented("GetObjects at depth = table");
128 };
129
130 virtual Result<std::optional<Table>> NextTable() { return std::nullopt; }
131
132 virtual Status LoadColumns(std::string_view catalog, std::string_view schema,
133 std::string_view table,
134 std::optional<std::string_view> column_filter) {
135 return status::NotImplemented("GetObjects at depth = column");
136 };
137
138 virtual Result<std::optional<Column>> NextColumn() { return std::nullopt; }
139
140 virtual Result<std::optional<Constraint>> NextConstraint() { return std::nullopt; }
141};
142
146 std::optional<std::string_view> catalog_filter,
147 std::optional<std::string_view> schema_filter,
148 std::optional<std::string_view> table_filter,
149 std::optional<std::string_view> column_filter,
150 const std::vector<std::string_view>& table_types,
151 ArrowArrayStream* out);
152} // namespace adbc::driver
AdbcStatusCode + AdbcError 的包裝函式。
Definition status.h:43
GetObjectsDepth
GetObjects 層級。
Definition objects.h:39
Status MakeGetObjectsSchema(ArrowSchema *schema)
為 AdbcConnectionGetObjects() 建立 ArrowSchema。
Status BuildGetObjects(GetObjectsHelper *helper, GetObjectsDepth depth, std::optional< std::string_view > catalog_filter, std::optional< std::string_view > schema_filter, std::optional< std::string_view > table_filter, std::optional< std::string_view > column_filter, const std::vector< std::string_view > &table_types, ArrowArrayStream *out)
實作 GetObjects 的輔助類別。 out/helper 的生命週期由呼叫者管理。
virtual Status Load(GetObjectsDepth depth, std::optional< std::string_view > catalog_filter, std::optional< std::string_view > schema_filter, std::optional< std::string_view > table_filter, std::optional< std::string_view > column_filter, const std::vector< std::string_view > &table_types)
擷取所有需要的metadata。 驅動程式可以延遲載入,但這讓它有機會載入資料...
Definition objects.h:102
實作 GetObjects 的輔助類別。
Definition objects.h:50