ADBC
Arrow 数据库连接性
正在加载...
正在搜索...
未找到匹配项
adbc.h
转到此文件的文档。
1// 根据 Apache 软件基金会 (ASF) 许可。
2// 或者更多贡献者许可协议。 请参阅 NOTICE 文件
3// 随此作品一起分发以获取更多信息
4// 关于版权所有权。 ASF 授权此文件
5// 根据 Apache License,版本 2.0(
6// “许可证”);除非符合许可证,否则您不得使用此文件
7// 符合许可。 您可以在以下位置获取许可证副本:
8//
9// https://apache.org/licenses/LICENSE-2.0
10//
11// 除非适用法律要求或书面同意,
12// 否则软件是按原样“AS IS”分发的,
13// 不作任何明示或暗示的保证或条件。
14// 有关管理权限和限制的特定语言,请参阅许可证
15// 在许可证下。
16// 根据许可证。
17
39
40#pragma once
41
42#include <stddef.h>
43#include <stdint.h>
44
51
53
54#ifdef __cplusplus
55extern "C" {
56#endif
57
58// Arrow 版本的额外保护,没有规范的保护
59#ifndef ARROW_FLAG_DICTIONARY_ORDERED
60
61#ifndef ARROW_C_DATA_INTERFACE
62#define ARROW_C_DATA_INTERFACE
63
64#define ARROW_FLAG_DICTIONARY_ORDERED 1
65#define ARROW_FLAG_NULLABLE 2
66#define ARROW_FLAG_MAP_KEYS_SORTED 4
67
68struct ArrowSchema {
69 // 数组类型描述
70 const char* format;
71 const char* name;
72 const char* metadata;
73 int64_t flags;
74 int64_t n_children;
75 struct ArrowSchema** children;
76 struct ArrowSchema* dictionary;
77
78 // 释放回调
79 void (*release)(struct ArrowSchema*);
80 // 不透明的生产者特定数据
81 void* private_data;
82};
83
84struct ArrowArray {
85 // 数组数据描述
86 int64_t length;
87 int64_t null_count;
88 int64_t offset;
89 int64_t n_buffers;
90 int64_t n_children;
91 const void** buffers;
92 struct ArrowArray** children;
93 struct ArrowArray* dictionary;
94
95 // 释放回调
96 void (*release)(struct ArrowArray*);
97 // 不透明的生产者特定数据
98 void* private_data;
99};
100
101#endif // ARROW_C_DATA_INTERFACE
102
103#ifndef ARROW_C_STREAM_INTERFACE
104#define ARROW_C_STREAM_INTERFACE
105
106struct ArrowArrayStream {
107 // 用于获取流类型的回调
108 // (对于流中的所有数组都相同)。
109 //
110 // 返回值:如果成功,则为 0;否则为与 `errno` 兼容的错误代码。
111 //
112 // 如果成功,则必须独立于流释放 ArrowSchema。
113 int (*get_schema)(struct ArrowArrayStream*, struct ArrowSchema* out);
114
115 // 用于获取下一个数组的回调
116 // (如果没有错误并且释放了数组,则流已结束)
117 //
118 // 返回值:如果成功,则为 0;否则为与 `errno` 兼容的错误代码。
119 //
120 // 如果成功,则必须独立于流释放 ArrowArray。
121 int (*get_next)(struct ArrowArrayStream*, struct ArrowArray* out);
122
123 // 用于获取可选的详细错误信息的回调。
124 // 只有在上次流操作失败时才必须调用此函数
125 // 返回非 0 返回代码。
126 //
127 // 返回值:指向描述的以 null 结尾的字符数组的指针
128 // 上次错误,如果没有描述可用,则为 NULL。
129 //
130 // 返回的指针仅在此流的下一个操作之前有效
131 // (包括释放)。
132 const char* (*get_last_error)(struct ArrowArrayStream*);
133
134 // 释放回调:释放流自己的资源。
135 // 请注意,由 `get_next` 返回的数组必须单独释放。
136 void (*release)(struct ArrowArrayStream*);
137
138 // 不透明的生产者特定数据
139 void* private_data;
140};
141
142#endif // ARROW_C_STREAM_INTERFACE
143#endif // ARROW_FLAG_DICTIONARY_ORDERED
144
146
148
149#ifndef ADBC
150#define ADBC
151
152// Windows 的存储类宏
153// 允许使用应用程序定义的宏进行覆盖/别名
154#if !defined(ADBC_EXPORT)
155#if defined(_WIN32)
156#if defined(ADBC_EXPORTING)
157#define ADBC_EXPORT __declspec(dllexport)
158#else
159#define ADBC_EXPORT __declspec(dllimport)
160#endif // defined(ADBC_EXPORTING)
161#else
162#define ADBC_EXPORT
163#endif // defined(_WIN32)
164#endif // !defined(ADBC_EXPORT)
165
174
176typedef uint8_t AdbcStatusCode;
177
179#define ADBC_STATUS_OK 0
180
184#define ADBC_STATUS_UNKNOWN 1
185
189#define ADBC_STATUS_NOT_IMPLEMENTED 2
190
194#define ADBC_STATUS_NOT_FOUND 3
195
199#define ADBC_STATUS_ALREADY_EXISTS 4
200
206#define ADBC_STATUS_INVALID_ARGUMENT 5
207
215#define ADBC_STATUS_INVALID_STATE 6
216
#define ADBC_STATUS_INVALID_DATA 7
224
#define ADBC_STATUS_INTEGRITY 8
232
#define ADBC_STATUS_INTERNAL 9
237
#define ADBC_STATUS_IO 10
244
#define ADBC_STATUS_CANCELLED 11
249
#define ADBC_STATUS_TIMEOUT 12
254
#define ADBC_STATUS_UNAUTHENTICATED 13
259
#define ADBC_STATUS_UNAUTHORIZED 14
264
#define ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA INT32_MIN
272
struct ADBC_EXPORT AdbcError {
char* message;
286
int32_t vendor_code;
289
char sqlstate[5];
294
void (*release)(struct AdbcError* error);
300
309
318};
319
#ifdef __cplusplus
#define ADBC_ERROR_INIT \
(AdbcError{nullptr, \
ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, \
327 {0, 0, 0, 0, 0}, \
nullptr, \
nullptr, \
nullptr})
#else
#define ADBC_ERROR_INIT \
((struct AdbcError){ \
NULL, ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, {0, 0, 0, 0, 0}, NULL, NULL, NULL})
#endif
339
#define ADBC_ERROR_1_0_0_SIZE (offsetof(struct AdbcError, private_data))
348
#define ADBC_ERROR_1_1_0_SIZE (sizeof(struct AdbcError))
357
struct ADBC_EXPORT AdbcErrorDetail {
const char* key;
const uint8_t* value;
size_t value_length;
372};
373
ADBC_EXPORT
int AdbcErrorGetDetailCount(const struct AdbcError* error);
379
ADBC_EXPORT
struct AdbcErrorDetail AdbcErrorGetDetail(const struct AdbcError* error, int index);
388
ADBC_EXPORT
const struct AdbcError* AdbcErrorFromArrayStream(struct ArrowArrayStream* stream,
AdbcStatusCode* status);
406
408
411
#define ADBC_VERSION_1_0_0 1000000
417
#define ADBC_VERSION_1_1_0 1001000
425
#define ADBC_OPTION_VALUE_ENABLED "true"
430
#define ADBC_OPTION_VALUE_DISABLED "false"
435
#define ADBC_OPTION_URI "uri"
445
#define ADBC_OPTION_USERNAME "username"
455
#define ADBC_OPTION_PASSWORD "password"
465
#define ADBC_INFO_VENDOR_NAME 0
471
#define ADBC_INFO_VENDOR_VERSION 1
476
#define ADBC_INFO_VENDOR_ARROW_VERSION 2
482
#define ADBC_INFO_VENDOR_SQL 3
487
#define ADBC_INFO_VENDOR_SUBSTRAIT 4
492
497#define ADBC_INFO_VENDOR_SUBSTRAIT_MIN_VERSION 5
498
503#define ADBC_INFO_VENDOR_SUBSTRAIT_MAX_VERSION 6
504
508#define ADBC_INFO_DRIVER_NAME 100
509
513#define ADBC_INFO_DRIVER_VERSION 101
514
518#define ADBC_INFO_DRIVER_ARROW_VERSION 102
519
528#define ADBC_INFO_DRIVER_ADBC_VERSION 103
529
533#define ADBC_OBJECT_DEPTH_ALL 0
534
538#define ADBC_OBJECT_DEPTH_CATALOGS 1
539
543#define ADBC_OBJECT_DEPTH_DB_SCHEMAS 2
544
548#define ADBC_OBJECT_DEPTH_TABLES 3
549
553#define ADBC_OBJECT_DEPTH_COLUMNS ADBC_OBJECT_DEPTH_ALL
554
558
560#define ADBC_STATISTIC_AVERAGE_BYTE_WIDTH_KEY 0
561
567#define ADBC_STATISTIC_AVERAGE_BYTE_WIDTH_NAME "adbc.statistic.byte_width"
568
570#define ADBC_STATISTIC_DISTINCT_COUNT_KEY 1
571
575#define ADBC_STATISTIC_DISTINCT_COUNT_NAME "adbc.statistic.distinct_count"
576
578#define ADBC_STATISTIC_MAX_BYTE_WIDTH_KEY 2
579
585#define ADBC_STATISTIC_MAX_BYTE_WIDTH_NAME "adbc.statistic.max_byte_width"
586
588#define ADBC_STATISTIC_MAX_VALUE_KEY 3
589
591#define ADBC_STATISTIC_MAX_VALUE_NAME "adbc.statistic.max_value"
592
594#define ADBC_STATISTIC_MIN_VALUE_KEY 4
595
597#define ADBC_STATISTIC_MIN_VALUE_NAME "adbc.statistic.min_value"
598
600#define ADBC_STATISTIC_NULL_COUNT_KEY 5
601
605#define ADBC_STATISTIC_NULL_COUNT_NAME "adbc.statistic.null_count"
606
608#define ADBC_STATISTIC_ROW_COUNT_KEY 6
609
613#define ADBC_STATISTIC_ROW_COUNT_NAME "adbc.statistic.row_count"
615
622#define ADBC_CONNECTION_OPTION_AUTOCOMMIT "adbc.connection.autocommit"
623
630#define ADBC_CONNECTION_OPTION_READ_ONLY "adbc.connection.readonly"
631
639#define ADBC_CONNECTION_OPTION_CURRENT_CATALOG "adbc.connection.catalog"
640
648#define ADBC_CONNECTION_OPTION_CURRENT_DB_SCHEMA "adbc.connection.db_schema"
649
665#define ADBC_STATEMENT_OPTION_INCREMENTAL "adbc.statement.exec.incremental"
666
680#define ADBC_STATEMENT_OPTION_PROGRESS "adbc.statement.exec.progress"
681
693#define ADBC_STATEMENT_OPTION_MAX_PROGRESS "adbc.statement.exec.max_progress"
694
706#define ADBC_CONNECTION_OPTION_ISOLATION_LEVEL \
707 "adbc.connection.transaction.isolation_level"
708
712#define ADBC_OPTION_ISOLATION_LEVEL_DEFAULT \
713 "adbc.connection.transaction.isolation.default"
714
719#define ADBC_OPTION_ISOLATION_LEVEL_READ_UNCOMMITTED \
720 "adbc.connection.transaction.isolation.read_uncommitted"
721
735#define ADBC_OPTION_ISOLATION_LEVEL_READ_COMMITTED \
736 "adbc.connection.transaction.isolation.read_committed"
737
745#define ADBC_OPTION_ISOLATION_LEVEL_REPEATABLE_READ \
746 "adbc.connection.transaction.isolation.repeatable_read"
747
754#define ADBC_OPTION_ISOLATION_LEVEL_SNAPSHOT \
755 "adbc.connection.transaction.isolation.snapshot"
756
763#define ADBC_OPTION_ISOLATION_LEVEL_SERIALIZABLE \
764 "adbc.connection.transaction.isolation.serializable"
765
776#define ADBC_OPTION_ISOLATION_LEVEL_LINEARIZABLE \
777 "adbc.connection.transaction.isolation.linearizable"
778
790
799#define ADBC_INGEST_OPTION_TARGET_TABLE "adbc.ingest.target_table"
800
804#define ADBC_INGEST_OPTION_MODE "adbc.ingest.mode"
805
807#define ADBC_INGEST_OPTION_MODE_CREATE "adbc.ingest.mode.create"
808
812#define ADBC_INGEST_OPTION_MODE_APPEND "adbc.ingest.mode.append"
813
817#define ADBC_INGEST_OPTION_MODE_REPLACE "adbc.ingest.mode.replace"
818
823#define ADBC_INGEST_OPTION_MODE_CREATE_APPEND "adbc.ingest.mode.create_append"
824
828#define ADBC_INGEST_OPTION_TARGET_CATALOG "adbc.ingest.target_catalog"
829
833#define ADBC_INGEST_OPTION_TARGET_DB_SCHEMA "adbc.ingest.target_db_schema"
834
844#define ADBC_INGEST_OPTION_TEMPORARY "adbc.ingest.temporary"
845
847
849
856
860struct ADBC_EXPORT AdbcDatabase {
867};
868
870
874
883struct ADBC_EXPORT AdbcConnection {
void* private_data; // 私有数据
struct AdbcDriver* private_driver; // 私有驱动程序
890};
891
893
902
921struct ADBC_EXPORT AdbcStatement {
void* private_data; // 私有数据
925
struct AdbcDriver* private_driver; // 私有驱动程序
929};
930
947
size_t num_partitions; // 分区数量
952
const uint8_t** partitions; // 分区数据 (字节数组的指针数组)
957
const size_t* partition_lengths; // 分区长度 (大小的数组)
960
void* private_data; // 私有数据
964
void (*release)(struct AdbcPartitions* partitions); // 释放函数
970};
971
973
975
981
988struct ADBC_EXPORT AdbcDriver {
void* private_data; // 私有数据
void* private_manager; // 私有管理器
997
AdbcStatusCode (*release)(struct AdbcDriver* driver, struct AdbcError* error); // 释放驱动程序
1003
AdbcStatusCode (*DatabaseInit)(struct AdbcDatabase*, struct AdbcError*); // 初始化数据库
AdbcStatusCode (*DatabaseNew)(struct AdbcDatabase*, struct AdbcError*); // 创建新的数据库
AdbcStatusCode (*DatabaseSetOption)(struct AdbcDatabase*, const char*, const char*, // 设置数据库选项
struct AdbcError*);
AdbcStatusCode (*DatabaseRelease)(struct AdbcDatabase*, struct AdbcError*); // 释放数据库
1009
AdbcStatusCode (*ConnectionCommit)(struct AdbcConnection*, struct AdbcError*); // 提交连接
AdbcStatusCode (*ConnectionGetInfo)(struct AdbcConnection*, const uint32_t*, size_t, // 获取连接信息
struct ArrowArrayStream*, struct AdbcError*);
AdbcStatusCode (*ConnectionGetObjects)(struct AdbcConnection*, int, const char*, // 获取连接对象
const char*, const char*, const char**,
const char*, struct ArrowArrayStream*,
struct AdbcError*);
AdbcStatusCode (*ConnectionGetTableSchema)(struct AdbcConnection*, const char*, // 获取表架构
const char*, const char*,
struct ArrowSchema*, struct AdbcError*);
AdbcStatusCode (*ConnectionGetTableTypes)(struct AdbcConnection*, // 获取表类型
struct ArrowArrayStream*, struct AdbcError*);
1022 AdbcStatusCode (*ConnectionInit)(struct AdbcConnection*, struct AdbcDatabase*,
1023 struct AdbcError*);
1024 AdbcStatusCode (*ConnectionNew)(struct AdbcConnection*, struct AdbcError*);
1025 AdbcStatusCode (*ConnectionSetOption)(struct AdbcConnection*, const char*, const char*,
1026 struct AdbcError*);
1027 AdbcStatusCode (*ConnectionReadPartition)(struct AdbcConnection*, const uint8_t*,
1028 size_t, struct ArrowArrayStream*,
1029 struct AdbcError*);
1030 AdbcStatusCode (*ConnectionRelease)(struct AdbcConnection*, struct AdbcError*);
1031 AdbcStatusCode (*ConnectionRollback)(struct AdbcConnection*, struct AdbcError*);
1032
1033 AdbcStatusCode (*StatementBind)(struct AdbcStatement*, struct ArrowArray*,
1034 struct ArrowSchema*, struct AdbcError*);
1035 AdbcStatusCode (*StatementBindStream)(struct AdbcStatement*, struct ArrowArrayStream*,
1036 struct AdbcError*);
1037 AdbcStatusCode (*StatementExecuteQuery)(struct AdbcStatement*, struct ArrowArrayStream*,
1038 int64_t*, struct AdbcError*);
1039 AdbcStatusCode (*StatementExecutePartitions)(struct AdbcStatement*, struct ArrowSchema*,
1040 struct AdbcPartitions*, int64_t*,
1041 struct AdbcError*);
1042 AdbcStatusCode (*StatementGetParameterSchema)(struct AdbcStatement*,
1043 struct ArrowSchema*, struct AdbcError*);
1044 AdbcStatusCode (*StatementNew)(struct AdbcConnection*, struct AdbcStatement*,
1045 struct AdbcError*);
1046 AdbcStatusCode (*StatementPrepare)(struct AdbcStatement*, struct AdbcError*);
1047 AdbcStatusCode (*StatementRelease)(struct AdbcStatement*, struct AdbcError*);
1048 AdbcStatusCode (*StatementSetOption)(struct AdbcStatement*, const char*, const char*,
1049 struct AdbcError*);
1050 AdbcStatusCode (*StatementSetSqlQuery)(struct AdbcStatement*, const char*,
1051 struct AdbcError*);
1052 AdbcStatusCode (*StatementSetSubstraitPlan)(struct AdbcStatement*, const uint8_t*,
1053 size_t, struct AdbcError*);
1054
1076
1077 int (*ErrorGetDetailCount)(const struct AdbcError* error);
1078 struct AdbcErrorDetail (*ErrorGetDetail)(const struct AdbcError* error, int index);
1079 const struct AdbcError* (*ErrorFromArrayStream)(struct ArrowArrayStream* stream,
1080 AdbcStatusCode* status);
1081
1082 AdbcStatusCode (*DatabaseGetOption)(struct AdbcDatabase*, const char*, char*, size_t*,
1083 struct AdbcError*);
1084 AdbcStatusCode (*DatabaseGetOptionBytes)(struct AdbcDatabase*, const char*, uint8_t*,
1085 size_t*, struct AdbcError*);
1086 AdbcStatusCode (*DatabaseGetOptionDouble)(struct AdbcDatabase*, const char*, double*,
1087 struct AdbcError*);
1088 AdbcStatusCode (*DatabaseGetOptionInt)(struct AdbcDatabase*, const char*, int64_t*,
1089 struct AdbcError*);
1090 AdbcStatusCode (*DatabaseSetOptionBytes)(struct AdbcDatabase*, const char*,
1091 const uint8_t*, size_t, struct AdbcError*);
1092 AdbcStatusCode (*DatabaseSetOptionDouble)(struct AdbcDatabase*, const char*, double,
1093 struct AdbcError*);
1094 AdbcStatusCode (*DatabaseSetOptionInt)(struct AdbcDatabase*, const char*, int64_t,
1095 struct AdbcError*);
1096
1097 AdbcStatusCode (*ConnectionCancel)(struct AdbcConnection*, struct AdbcError*);
1098 AdbcStatusCode (*ConnectionGetOption)(struct AdbcConnection*, const char*, char*,
1099 size_t*, struct AdbcError*);
1100 AdbcStatusCode (*ConnectionGetOptionBytes)(struct AdbcConnection*, const char*,
1101 uint8_t*, size_t*, struct AdbcError*);
1102 AdbcStatusCode (*ConnectionGetOptionDouble)(struct AdbcConnection*, const char*,
1103 double*, struct AdbcError*);
1104 AdbcStatusCode (*ConnectionGetOptionInt)(struct AdbcConnection*, const char*, int64_t*,
1105 struct AdbcError*);
1106 AdbcStatusCode (*ConnectionGetStatistics)(struct AdbcConnection*, const char*,
1107 const char*, const char*, char,
1108 struct ArrowArrayStream*, struct AdbcError*);
1109 AdbcStatusCode (*ConnectionGetStatisticNames)(struct AdbcConnection*,
1110 struct ArrowArrayStream*,
1111 struct AdbcError*);
1112 AdbcStatusCode (*ConnectionSetOptionBytes)(struct AdbcConnection*, const char*,
1113 const uint8_t*, size_t, struct AdbcError*);
1114 AdbcStatusCode (*ConnectionSetOptionDouble)(struct AdbcConnection*, const char*, double,
1115 struct AdbcError*);
1116 AdbcStatusCode (*ConnectionSetOptionInt)(struct AdbcConnection*, const char*, int64_t,
1117 struct AdbcError*);
1118
1119 AdbcStatusCode (*StatementCancel)(struct AdbcStatement*, struct AdbcError*);
1120 AdbcStatusCode (*StatementExecuteSchema)(struct AdbcStatement*, struct ArrowSchema*,
1121 struct AdbcError*);
1122 AdbcStatusCode (*StatementGetOption)(struct AdbcStatement*, const char*, char*, size_t*,
1123 struct AdbcError*);
1124 AdbcStatusCode (*StatementGetOptionBytes)(struct AdbcStatement*, const char*, uint8_t*,
1125 size_t*, struct AdbcError*);
1126 AdbcStatusCode (*StatementGetOptionDouble)(struct AdbcStatement*, const char*, double*,
1127 struct AdbcError*);
1128 AdbcStatusCode (*StatementGetOptionInt)(struct AdbcStatement*, const char*, int64_t*,
1129 struct AdbcError*);
1130 AdbcStatusCode (*StatementSetOptionBytes)(struct AdbcStatement*, const char*,
1131 const uint8_t*, size_t, struct AdbcError*);
1132 AdbcStatusCode (*StatementSetOptionDouble)(struct AdbcStatement*, const char*, double,
1133 struct AdbcError*);
1134 AdbcStatusCode (*StatementSetOptionInt)(struct AdbcStatement*, const char*, int64_t,
1135 struct AdbcError*);
1136
1138};
1139
1146#define ADBC_DRIVER_1_0_0_SIZE (offsetof(struct AdbcDriver, ErrorGetDetailCount))
1147
1154#define ADBC_DRIVER_1_1_0_SIZE (sizeof(struct AdbcDriver))
1155
1157
1160
1168ADBC_EXPORT
1169AdbcStatusCode AdbcDatabaseNew(struct AdbcDatabase* database, struct AdbcError* error);
1170
1207ADBC_EXPORT
1208AdbcStatusCode AdbcDatabaseGetOption(struct AdbcDatabase* database, const char* key,
1209 char* value, size_t* length,
1210 struct AdbcError* error);
1211
1247ADBC_EXPORT
1249 uint8_t* value, size_t* length,
1250 struct AdbcError* error);
1251
1271ADBC_EXPORT
1273 double* value, struct AdbcError* error);
1274
1294ADBC_EXPORT
1295AdbcStatusCode AdbcDatabaseGetOptionInt(struct AdbcDatabase* database, const char* key,
1296 int64_t* value, struct AdbcError* error);
1297
1309ADBC_EXPORT
1310AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase* database, const char* key,
1311 const char* value, struct AdbcError* error);
1312
1323ADBC_EXPORT
1325 const uint8_t* value, size_t length,
1326 struct AdbcError* error);
1327
1337ADBC_EXPORT
1339 double value, struct AdbcError* error);
1340
1350ADBC_EXPORT
1351AdbcStatusCode AdbcDatabaseSetOptionInt(struct AdbcDatabase* database, const char* key,
1352 int64_t value, struct AdbcError* error);
1353
1358ADBC_EXPORT
1360
1365ADBC_EXPORT
1367 struct AdbcError* error);
1368
1370
1373
1381ADBC_EXPORT
1383 struct AdbcError* error);
1384
1396ADBC_EXPORT
1397AdbcStatusCode AdbcConnectionSetOption(struct AdbcConnection* connection, const char* key,
1398 const char* value, struct AdbcError* error);
1399
1410ADBC_EXPORT
1412 const char* key, const uint8_t* value,
1413 size_t length, struct AdbcError* error);
1414
1427ADBC_EXPORT
1429 const char* key, int64_t value,
1430 struct AdbcError* error);
1431
1444ADBC_EXPORT
1446 const char* key, double value,
1447 struct AdbcError* error);
1448
1453ADBC_EXPORT
1455 struct AdbcDatabase* database, struct AdbcError* error);
1456
1462ADBC_EXPORT
1464 struct AdbcError* error);
1465
1486ADBC_EXPORT
1488 struct AdbcError* error);
1489
1513
1550ADBC_EXPORT
1552 const uint32_t* info_codes, size_t info_codes_length,
1553 struct ArrowArrayStream* out,
1554 struct AdbcError* error);
1555
1660ADBC_EXPORT
1662 const char* catalog, const char* db_schema,
1663 const char* table_name, const char** table_type,
1664 const char* column_name,
1665 struct ArrowArrayStream* out,
1666 struct AdbcError* error);
1667
1696ADBC_EXPORT
1697AdbcStatusCode AdbcConnectionGetOption(struct AdbcConnection* connection, const char* key,
1698 char* value, size_t* length,
1699 struct AdbcError* error);
1700
1736ADBC_EXPORT
1738 const char* key, uint8_t* value,
1739 size_t* length, struct AdbcError* error);
1740
1760ADBC_EXPORT
1762 const char* key, int64_t* value,
1763 struct AdbcError* error);
1764
1784ADBC_EXPORT
1786 const char* key, double* value,
1787 struct AdbcError* error);
1788
1849ADBC_EXPORT
1851 const char* catalog, const char* db_schema,
1852 const char* table_name, char approximate,
1853 struct ArrowArrayStream* out,
1854 struct AdbcError* error);
1855
1869ADBC_EXPORT
1871 struct ArrowArrayStream* out,
1872 struct AdbcError* error);
1873
1882ADBC_EXPORT
1884 const char* catalog, const char* db_schema,
1885 const char* table_name,
1886 struct ArrowSchema* schema,
1887 struct AdbcError* error);
1888
1902ADBC_EXPORT
1904 struct ArrowArrayStream* out,
1905 struct AdbcError* error);
1906
1908
1921
1935ADBC_EXPORT
1937 const uint8_t* serialized_partition,
1938 size_t serialized_length,
1939 struct ArrowArrayStream* out,
1940 struct AdbcError* error);
1941
1943
1951
1957ADBC_EXPORT
1959 struct AdbcError* error);
1960
1966ADBC_EXPORT
1968 struct AdbcError* error);
1969
1971
1973
1976
1984ADBC_EXPORT
1986 struct AdbcStatement* statement, struct AdbcError* error);
1987
1992ADBC_EXPORT
1994 struct AdbcError* error);
1995
2011ADBC_EXPORT
2013 struct ArrowArrayStream* out,
2014 int64_t* rows_affected, struct AdbcError* error);
2015
2032ADBC_EXPORT
2034 struct ArrowSchema* schema,
2035 struct AdbcError* error);
2036
2041ADBC_EXPORT
2043 struct AdbcError* error);
2044
2051
2061ADBC_EXPORT
2063 const char* query, struct AdbcError* error);
2064
2066
2073
2084ADBC_EXPORT
2086 const uint8_t* plan, size_t length,
2087 struct AdbcError* error);
2088
2090
2101ADBC_EXPORT
2103 struct ArrowArray* values, struct ArrowSchema* schema,
2104 struct AdbcError* error);
2105
2114ADBC_EXPORT
2116 struct ArrowArrayStream* stream,
2117 struct AdbcError* error);
2118
2139ADBC_EXPORT
2141 struct AdbcError* error);
2142
2179ADBC_EXPORT
2180AdbcStatusCode AdbcStatementGetOption(struct AdbcStatement* statement, const char* key,
2181 char* value, size_t* length,
2182 struct AdbcError* error);
2183
2219ADBC_EXPORT
2221 const char* key, uint8_t* value,
2222 size_t* length, struct AdbcError* error);
2223
2243ADBC_EXPORT
2244AdbcStatusCode AdbcStatementGetOptionInt(struct AdbcStatement* statement, const char* key,
2245 int64_t* value, struct AdbcError* error);
2246
2266ADBC_EXPORT
2268 const char* key, double* value,
2269 struct AdbcError* error);
2270
2286ADBC_EXPORT
2288 struct ArrowSchema* schema,
2289 struct AdbcError* error);
2290
2298ADBC_EXPORT
2299AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement* statement, const char* key,
2300 const char* value, struct AdbcError* error);
2301
2312ADBC_EXPORT
2314 const char* key, const uint8_t* value,
2315 size_t length, struct AdbcError* error);
2316
2326ADBC_EXPORT
2327AdbcStatusCode AdbcStatementSetOptionInt(struct AdbcStatement* statement, const char* key,
2328 int64_t value, struct AdbcError* error);
2329
2339ADBC_EXPORT
2341 const char* key, double value,
2342 struct AdbcError* error);
2343
2346
2359ADBC_EXPORT
2361 struct ArrowSchema* schema,
2362 struct AdbcPartitions* partitions,
2363 int64_t* rows_affected,
2364 struct AdbcError* error);
2365
2367
2369
2372
2399typedef AdbcStatusCode (*AdbcDriverInitFunc)(int version, void* driver,
2400 struct AdbcError* error);
2401
2403
2404#endif // ADBC
2405
2406#ifdef __cplusplus
2407}
2408#endif
AdbcStatusCode AdbcConnectionGetOptionBytes(struct AdbcConnection *connection, const char *key, uint8_t *value, size_t *length, struct AdbcError *error)
Get a bytestring option of the connection.
AdbcStatusCode AdbcConnectionGetObjects(struct AdbcConnection *connection, int depth, const char *catalog, const char *db_schema, const char *table_name, const char **table_type, const char *column_name, struct ArrowArrayStream *out, struct AdbcError *error)
Get a hierarchical view of all catalogs, database schemas, tables, and columns.
AdbcStatusCode AdbcConnectionGetTableTypes(struct AdbcConnection *connection, struct ArrowArrayStream *out, struct AdbcError *error)
Get a list of table types in the database.
AdbcStatusCode AdbcConnectionGetStatisticNames(struct AdbcConnection *connection, struct ArrowArrayStream *out, struct AdbcError *error)
Get the names of statistics specific to this driver.
AdbcStatusCode AdbcConnectionGetOptionInt(struct AdbcConnection *connection, const char *key, int64_t *value, struct AdbcError *error)
Get an integer option of the connection.
AdbcStatusCode AdbcConnectionGetOptionDouble(struct AdbcConnection *connection, const char *key, double *value, struct AdbcError *error)
Get a double option of the connection.
AdbcStatusCode AdbcConnectionGetStatistics(struct AdbcConnection *connection, const char *catalog, const char *db_schema, const char *table_name, char approximate, struct ArrowArrayStream *out, struct AdbcError *error)
Get statistics about the data distribution of table(s).
AdbcStatusCode AdbcConnectionGetOption(struct AdbcConnection *connection, const char *key, char *value, size_t *length, struct AdbcError *error)
Get a string option of the connection.
AdbcStatusCode AdbcConnectionGetInfo(struct AdbcConnection *connection, const uint32_t *info_codes, size_t info_codes_length, struct ArrowArrayStream *out, struct AdbcError *error)
Get metadata about the database/driver.
AdbcStatusCode AdbcConnectionGetTableSchema(struct AdbcConnection *connection, const char *catalog, const char *db_schema, const char *table_name, struct ArrowSchema *schema, struct AdbcError *error)
Get the Arrow schema of a table.
AdbcStatusCode AdbcConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition, size_t serialized_length, struct ArrowArrayStream *out, struct AdbcError *error)
Construct a statement for a partition of a query. The results can then be read independently.
AdbcStatusCode AdbcConnectionCommit(struct AdbcConnection *connection, struct AdbcError *error)
Commit any pending transactions. Only used if autocommit is disabled.
AdbcStatusCode AdbcConnectionRollback(struct AdbcConnection *connection, struct AdbcError *error)
Roll back any pending transactions. Only used if autocommit is disabled.
void * private_data
Opaque implementation-defined state. This field is NULLPTR iff the connection is unintialized/freed.
Definition adbc.h:886
struct AdbcDriver * private_driver
The associated driver (used by the driver manager to help track state).
Definition adbc.h:889
AdbcStatusCode AdbcConnectionSetOption(struct AdbcConnection *connection, const char *key, const char *value, struct AdbcError *error)
Set a char* option.
AdbcStatusCode AdbcConnectionCancel(struct AdbcConnection *connection, struct AdbcError *error)
Cancel the in-progress operation on a connection.
AdbcStatusCode AdbcConnectionNew(struct AdbcConnection *connection, struct AdbcError *error)
Allocate a new (but uninitialized) connection.
AdbcStatusCode AdbcConnectionSetOptionInt(struct AdbcConnection *connection, const char *key, int64_t value, struct AdbcError *error)
Set an integer option.
AdbcStatusCode AdbcConnectionSetOptionBytes(struct AdbcConnection *connection, const char *key, const uint8_t *value, size_t length, struct AdbcError *error)
Set a bytestring option on a connection.
AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct AdbcError *error)
Destroy this connection.
AdbcStatusCode AdbcConnectionInit(struct AdbcConnection *connection, struct AdbcDatabase *database, struct AdbcError *error)
Finish setting options and initialize the connection.
AdbcStatusCode AdbcConnectionSetOptionDouble(struct AdbcConnection *connection, const char *key, double value, struct AdbcError *error)
Set a double option.
An active database connection.
Definition adbc.h:883
void * private_data
Opaque implementation-defined state. This field is NULLPTR iff the connection is unintialized/freed.
Definition adbc.h:863
struct AdbcDriver * private_driver
The associated driver (used by the driver manager to help track state).
Definition adbc.h:866
AdbcStatusCode AdbcDatabaseSetOptionDouble(struct AdbcDatabase *database, const char *key, double value, struct AdbcError *error)
Set a double option on a database.
AdbcStatusCode AdbcDatabaseGetOptionBytes(struct AdbcDatabase *database, const char *key, uint8_t *value, size_t *length, struct AdbcError *error)
Get a bytestring option of the database.
AdbcStatusCode AdbcDatabaseGetOptionInt(struct AdbcDatabase *database, const char *key, int64_t *value, struct AdbcError *error)
Get an integer option of the database.
AdbcStatusCode AdbcDatabaseNew(struct AdbcDatabase *database, struct AdbcError *error)
Allocate a new (but uninitialized) database.
AdbcStatusCode AdbcDatabaseRelease(struct AdbcDatabase *database, struct AdbcError *error)
Destroy this database. No connections may exist.
AdbcStatusCode AdbcDatabaseInit(struct AdbcDatabase *database, struct AdbcError *error)
Finish setting options and initialize the database.
AdbcStatusCode AdbcDatabaseGetOptionDouble(struct AdbcDatabase *database, const char *key, double *value, struct AdbcError *error)
Get a double option of the database.
AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase *database, const char *key, const char *value, struct AdbcError *error)
Set a char* option.
AdbcStatusCode AdbcDatabaseGetOption(struct AdbcDatabase *database, const char *key, char *value, size_t *length, struct AdbcError *error)
Get a string option of the database.
AdbcStatusCode AdbcDatabaseSetOptionInt(struct AdbcDatabase *database, const char *key, int64_t value, struct AdbcError *error)
Set an integer option on a database.
AdbcStatusCode AdbcDatabaseSetOptionBytes(struct AdbcDatabase *database, const char *key, const uint8_t *value, size_t length, struct AdbcError *error)
Set a bytestring option on a database.
An instance of a database.
Definition adbc.h:860
AdbcStatusCode(* release)(struct AdbcDriver *driver, struct AdbcError *error)
Release the driver and perform any cleanup.
Definition adbc.h:1002
void * private_manager
Opaque driver manager-defined state. This field is NULL if the driver is unintialized/freed (but it n...
Definition adbc.h:996
void * private_data
Opaque driver-defined state. This field is NULL if the driver is unintialized/freed (but it need not ...
Definition adbc.h:992
AdbcStatusCode(* AdbcDriverInitFunc)(int version, void *driver, struct AdbcError *error)
Common entry point for drivers via the driver manager (which uses dlopen(3)/LoadLibrary)....
Definition adbc.h:2399
An instance of an initialized database driver.
Definition adbc.h:988
int32_t vendor_code
A vendor-specific error code, if applicable.
Definition adbc.h:288
void * private_data
Opaque implementation-defined state.
Definition adbc.h:308
const char * key
The metadata key.
Definition adbc.h:367
void(* release)(struct AdbcError *error)
Release the contained error.
Definition adbc.h:299
char * message
The error message.
Definition adbc.h:285
struct AdbcDriver * private_driver
The associated driver (used by the driver manager to help track state).
Definition adbc.h:317
char sqlstate[5]
A SQLSTATE error code, if provided, as defined by the SQL:2003 standard. If not set,...
Definition adbc.h:293
值长度。
元数据值的长度。
定义 adbc.h:371
const uint8_t * value
二进制元数据值。
定义 adbc.h:369
const struct AdbcError * AdbcErrorFromArrayStream(struct ArrowArrayStream *stream, AdbcStatusCode *status)
从驱动程序创建的 ArrowArrayStream 获取 ADBC 错误。
uint8_t AdbcStatusCode
可能失败的操作的错误码。
定义 adbc.h:176
int AdbcErrorGetDetailCount(const struct AdbcError *error)
获取错误中可用的元数据值的数量。
struct AdbcErrorDetail AdbcErrorGetDetail(const struct AdbcError *error, int index)
按索引获取错误中的元数据值。
操作的详细错误消息。
定义 adbc.h:283
错误的额外键值元数据。
定义 adbc.h:365
const size_t * partition_lengths
分区中每个对应条目的长度。
定义 adbc.h:959
void * private_data
Opaque implementation-defined state. This field is NULLPTR iff the connection is unintialized/freed.
定义 adbc.h:963
void(* release)(struct AdbcPartitions *partitions)
释放包含的分区。
定义 adbc.h:969
size_t num_partitions
分区的数量。
定义 adbc.h:951
const uint8_t ** partitions
结果集的分区,其中每个条目(最多 num_partitions 个条目)是不透明的标识符...
定义 adbc.h:956
AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcPartitions *partitions, int64_t *rows_affected, struct AdbcError *error)
执行语句并将结果作为分区结果集获取。
分布式/分区结果集的分区。
定义 adbc.h:949
AdbcStatusCode AdbcStatementSetSqlQuery(struct AdbcStatement *statement, const char *query, struct AdbcError *error)
设置要执行的 SQL 查询。
AdbcStatusCode AdbcStatementSetSubstraitPlan(struct AdbcStatement *statement, const uint8_t *plan, size_t length, struct AdbcError *error)
设置要执行的 Substrait 计划。
void * private_data
Opaque implementation-defined state. This field is NULLPTR iff the connection is unintialized/freed.
定义 adbc.h:924
struct AdbcDriver * private_driver
The associated driver (used by the driver manager to help track state).
定义 adbc.h:928
AdbcStatusCode AdbcStatementExecuteQuery(struct AdbcStatement *statement, struct ArrowArrayStream *out, int64_t *rows_affected, struct AdbcError *error)
执行语句并获取结果。
AdbcStatusCode AdbcStatementCancel(struct AdbcStatement *statement, struct AdbcError *error)
取消正在进行的查询的执行。
AdbcStatusCode AdbcStatementGetParameterSchema(struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcError *error)
获取绑定参数的模式。
AdbcStatusCode AdbcStatementSetOptionInt(struct AdbcStatement *statement, const char *key, int64_t value, struct AdbcError *error)
在语句上设置整数选项。
AdbcStatusCode AdbcStatementExecuteSchema(struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcError *error)
获取查询结果集的模式,而不执行它。
AdbcStatusCode AdbcStatementRelease(struct AdbcStatement *statement, struct AdbcError *error)
销毁语句。
AdbcStatusCode AdbcStatementSetOption(struct AdbcStatement *statement, const char *key, const char *value, struct AdbcError *error)
在语句上设置字符串选项。
AdbcStatusCode AdbcStatementPrepare(struct AdbcStatement *statement, struct AdbcError *error)
将此语句转换为预处理语句,以便多次执行。
AdbcStatusCode AdbcStatementGetOptionDouble(struct AdbcStatement *statement, const char *key, double *value, struct AdbcError *error)
获取语句的 double 选项。
AdbcStatusCode AdbcStatementSetOptionBytes(struct AdbcStatement *statement, const char *key, const uint8_t *value, size_t length, struct AdbcError *error)
在语句上设置字节串选项。
AdbcStatusCode AdbcStatementBindStream(struct AdbcStatement *statement, struct ArrowArrayStream *stream, struct AdbcError *error)
绑定 Arrow 数据。 这可用于批量插入或预处理语句。
AdbcStatusCode AdbcStatementBind(struct AdbcStatement *statement, struct ArrowArray *values, struct ArrowSchema *schema, struct AdbcError *error)
绑定 Arrow 数据。 这可用于批量插入或预处理语句。
AdbcStatusCode AdbcStatementGetOption(struct AdbcStatement *statement, const char *key, char *value, size_t *length, struct AdbcError *error)
获取语句的字符串选项。
AdbcStatusCode AdbcStatementGetOptionInt(struct AdbcStatement *statement, const char *key, int64_t *value, struct AdbcError *error)
获取语句的整数选项。
AdbcStatusCode AdbcStatementNew(struct AdbcConnection *connection, struct AdbcStatement *statement, struct AdbcError *error)
为给定的连接创建一个新语句。
AdbcStatusCode AdbcStatementGetOptionBytes(struct AdbcStatement *statement, const char *key, uint8_t *value, size_t *length, struct AdbcError *error)
获取语句的字节串选项。
AdbcStatusCode AdbcStatementSetOptionDouble(struct AdbcStatement *statement, const char *key, double value, struct AdbcError *error)
在语句上设置 double 选项。
用于执行数据库查询所需的所有状态的容器,例如查询本身...
定义 adbc.h:921