59#ifndef ARROW_FLAG_DICTIONARY_ORDERED
61#ifndef ARROW_C_DATA_INTERFACE
62#define ARROW_C_DATA_INTERFACE
64#define ARROW_FLAG_DICTIONARY_ORDERED 1
65#define ARROW_FLAG_NULLABLE 2
66#define ARROW_FLAG_MAP_KEYS_SORTED 4
75 struct ArrowSchema** children;
76 struct ArrowSchema* dictionary;
79 void (*release)(
struct ArrowSchema*);
92 struct ArrowArray** children;
93 struct ArrowArray* dictionary;
96 void (*release)(
struct ArrowArray*);
103#ifndef ARROW_C_STREAM_INTERFACE
104#define ARROW_C_STREAM_INTERFACE
106struct ArrowArrayStream {
113 int (*get_schema)(
struct ArrowArrayStream*,
struct ArrowSchema* out);
121 int (*get_next)(
struct ArrowArrayStream*,
struct ArrowArray* out);
132 const char* (*get_last_error)(
struct ArrowArrayStream*);
136 void (*release)(
struct ArrowArrayStream*);
154#if !defined(ADBC_EXPORT)
156#if defined(ADBC_EXPORTING)
157#define ADBC_EXPORT __declspec(dllexport)
159#define ADBC_EXPORT __declspec(dllimport)
179#define ADBC_STATUS_OK 0
183#define ADBC_STATUS_UNKNOWN 1
187#define ADBC_STATUS_NOT_IMPLEMENTED 2
191#define ADBC_STATUS_NOT_FOUND 3
195#define ADBC_STATUS_ALREADY_EXISTS 4
201#define ADBC_STATUS_INVALID_ARGUMENT 5
209#define ADBC_STATUS_INVALID_STATE 6
216#define ADBC_STATUS_INVALID_DATA 7
223#define ADBC_STATUS_INTEGRITY 8
227#define ADBC_STATUS_INTERNAL 9
233#define ADBC_STATUS_IO 10
237#define ADBC_STATUS_CANCELLED 11
241#define ADBC_STATUS_TIMEOUT 12
245#define ADBC_STATUS_UNAUTHENTICATED 13
249#define ADBC_STATUS_UNAUTHORIZED 14
257#define ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA INT32_MIN
310#define ADBC_ERROR_INIT \
311 (AdbcError{nullptr, \
312 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, \
321#define ADBC_ERROR_INIT \
322 ((struct AdbcError){ \
323 NULL, ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, {0, 0, 0, 0, 0}, NULL, NULL, NULL})
333#define ADBC_ERROR_1_0_0_SIZE (offsetof(struct AdbcError, private_data))
341#define ADBC_ERROR_1_1_0_SIZE (sizeof(struct AdbcError))
401#define ADBC_VERSION_1_0_0 1000000
409#define ADBC_VERSION_1_1_0 1001000
414#define ADBC_OPTION_VALUE_ENABLED "true"
418#define ADBC_OPTION_VALUE_DISABLED "false"
428#define ADBC_OPTION_URI "uri"
437#define ADBC_OPTION_USERNAME "username"
446#define ADBC_OPTION_PASSWORD "password"
452#define ADBC_INFO_VENDOR_NAME 0
456#define ADBC_INFO_VENDOR_VERSION 1
461#define ADBC_INFO_VENDOR_ARROW_VERSION 2
465#define ADBC_INFO_VENDOR_SQL 3
469#define ADBC_INFO_VENDOR_SUBSTRAIT 4
474#define ADBC_INFO_VENDOR_SUBSTRAIT_MIN_VERSION 5
479#define ADBC_INFO_VENDOR_SUBSTRAIT_MAX_VERSION 6
484#define ADBC_INFO_DRIVER_NAME 100
488#define ADBC_INFO_DRIVER_VERSION 101
492#define ADBC_INFO_DRIVER_ARROW_VERSION 102
501#define ADBC_INFO_DRIVER_ADBC_VERSION 103
506#define ADBC_OBJECT_DEPTH_ALL 0
510#define ADBC_OBJECT_DEPTH_CATALOGS 1
514#define ADBC_OBJECT_DEPTH_DB_SCHEMAS 2
518#define ADBC_OBJECT_DEPTH_TABLES 3
522#define ADBC_OBJECT_DEPTH_COLUMNS ADBC_OBJECT_DEPTH_ALL
529#define ADBC_STATISTIC_AVERAGE_BYTE_WIDTH_KEY 0
535#define ADBC_STATISTIC_AVERAGE_BYTE_WIDTH_NAME "adbc.statistic.byte_width"
537#define ADBC_STATISTIC_DISTINCT_COUNT_KEY 1
541#define ADBC_STATISTIC_DISTINCT_COUNT_NAME "adbc.statistic.distinct_count"
543#define ADBC_STATISTIC_MAX_BYTE_WIDTH_KEY 2
549#define ADBC_STATISTIC_MAX_BYTE_WIDTH_NAME "adbc.statistic.max_byte_width"
551#define ADBC_STATISTIC_MAX_VALUE_KEY 3
553#define ADBC_STATISTIC_MAX_VALUE_NAME "adbc.statistic.max_value"
555#define ADBC_STATISTIC_MIN_VALUE_KEY 4
557#define ADBC_STATISTIC_MIN_VALUE_NAME "adbc.statistic.min_value"
559#define ADBC_STATISTIC_NULL_COUNT_KEY 5
563#define ADBC_STATISTIC_NULL_COUNT_NAME "adbc.statistic.null_count"
565#define ADBC_STATISTIC_ROW_COUNT_KEY 6
569#define ADBC_STATISTIC_ROW_COUNT_NAME "adbc.statistic.row_count"
578#define ADBC_CONNECTION_OPTION_AUTOCOMMIT "adbc.connection.autocommit"
586#define ADBC_CONNECTION_OPTION_READ_ONLY "adbc.connection.readonly"
595#define ADBC_CONNECTION_OPTION_CURRENT_CATALOG "adbc.connection.catalog"
604#define ADBC_CONNECTION_OPTION_CURRENT_DB_SCHEMA "adbc.connection.db_schema"
621#define ADBC_STATEMENT_OPTION_INCREMENTAL "adbc.statement.exec.incremental"
636#define ADBC_STATEMENT_OPTION_PROGRESS "adbc.statement.exec.progress"
649#define ADBC_STATEMENT_OPTION_MAX_PROGRESS "adbc.statement.exec.max_progress"
662#define ADBC_CONNECTION_OPTION_ISOLATION_LEVEL \
663 "adbc.connection.transaction.isolation_level"
668#define ADBC_OPTION_ISOLATION_LEVEL_DEFAULT \
669 "adbc.connection.transaction.isolation.default"
675#define ADBC_OPTION_ISOLATION_LEVEL_READ_UNCOMMITTED \
676 "adbc.connection.transaction.isolation.read_uncommitted"
691#define ADBC_OPTION_ISOLATION_LEVEL_READ_COMMITTED \
692 "adbc.connection.transaction.isolation.read_committed"
701#define ADBC_OPTION_ISOLATION_LEVEL_REPEATABLE_READ \
702 "adbc.connection.transaction.isolation.repeatable_read"
710#define ADBC_OPTION_ISOLATION_LEVEL_SNAPSHOT \
711 "adbc.connection.transaction.isolation.snapshot"
719#define ADBC_OPTION_ISOLATION_LEVEL_SERIALIZABLE \
720 "adbc.connection.transaction.isolation.serializable"
732#define ADBC_OPTION_ISOLATION_LEVEL_LINEARIZABLE \
733 "adbc.connection.transaction.isolation.linearizable"
755#define ADBC_INGEST_OPTION_TARGET_TABLE "adbc.ingest.target_table"
759#define ADBC_INGEST_OPTION_MODE "adbc.ingest.mode"
761#define ADBC_INGEST_OPTION_MODE_CREATE "adbc.ingest.mode.create"
765#define ADBC_INGEST_OPTION_MODE_APPEND "adbc.ingest.mode.append"
769#define ADBC_INGEST_OPTION_MODE_REPLACE "adbc.ingest.mode.replace"
774#define ADBC_INGEST_OPTION_MODE_CREATE_APPEND "adbc.ingest.mode.create_append"
778#define ADBC_INGEST_OPTION_TARGET_CATALOG "adbc.ingest.target_catalog"
782#define ADBC_INGEST_OPTION_TARGET_DB_SCHEMA "adbc.ingest.target_db_schema"
792#define ADBC_INGEST_OPTION_TEMPORARY "adbc.ingest.temporary"
960 struct ArrowArrayStream*,
struct AdbcError*);
962 const char*,
const char*,
const char**,
963 const char*,
struct ArrowArrayStream*,
966 const char*,
const char*,
969 struct ArrowArrayStream*,
struct AdbcError*);
976 size_t,
struct ArrowArrayStream*,
1025 int (*ErrorGetDetailCount)(
const struct AdbcError* error);
1027 const struct AdbcError* (*ErrorFromArrayStream)(
struct ArrowArrayStream* stream,
1039 const uint8_t*, size_t,
struct AdbcError*);
1055 const char*,
const char*, char,
1056 struct ArrowArrayStream*,
struct AdbcError*);
1058 struct ArrowArrayStream*,
1061 const uint8_t*, size_t,
struct AdbcError*);
1079 const uint8_t*, size_t,
struct AdbcError*);
1094#define ADBC_DRIVER_1_0_0_SIZE (offsetof(struct AdbcDriver, ErrorGetDetailCount))
1102#define ADBC_DRIVER_1_1_0_SIZE (sizeof(struct AdbcDriver))
1157 char* value,
size_t* length,
1197 uint8_t* value,
size_t* length,
1221 double* value,
struct AdbcError* error);
1244 int64_t* value,
struct AdbcError* error);
1259 const char* value,
struct AdbcError* error);
1273 const uint8_t* value,
size_t length,
1300 int64_t value,
struct AdbcError* error);
1346 const char* value,
struct AdbcError* error);
1360 const char* key,
const uint8_t* value,
1361 size_t length,
struct AdbcError* error);
1377 const char* key, int64_t value,
1394 const char* key,
double value,
1500 const uint32_t* info_codes,
size_t info_codes_length,
1501 struct ArrowArrayStream* out,
1610 const char* catalog,
const char* db_schema,
1611 const char* table_name,
const char** table_type,
1612 const char* column_name,
1613 struct ArrowArrayStream* out,
1646 char* value,
size_t* length,
1686 const char* key, uint8_t* value,
1687 size_t* length,
struct AdbcError* error);
1710 const char* key, int64_t* value,
1734 const char* key,
double* value,
1799 const char* catalog,
const char* db_schema,
1800 const char* table_name,
char approximate,
1801 struct ArrowArrayStream* out,
1819 struct ArrowArrayStream* out,
1832 const char* catalog,
const char* db_schema,
1833 const char* table_name,
1834 struct ArrowSchema* schema,
1852 struct ArrowArrayStream* out,
1885 const uint8_t* serialized_partition,
1886 size_t serialized_length,
1887 struct ArrowArrayStream* out,
1961 struct ArrowArrayStream* out,
1962 int64_t* rows_affected,
struct AdbcError* error);
1982 struct ArrowSchema* schema,
2011 const char* query,
struct AdbcError* error);
2034 const uint8_t* plan,
size_t length,
2051 struct ArrowArray* values,
struct ArrowSchema* schema,
2064 struct ArrowArrayStream* stream,
2129 char* value,
size_t* length,
2169 const char* key, uint8_t* value,
2170 size_t* length,
struct AdbcError* error);
2193 int64_t* value,
struct AdbcError* error);
2216 const char* key,
double* value,
2236 struct ArrowSchema* schema,
2248 const char* value,
struct AdbcError* error);
2262 const char* key,
const uint8_t* value,
2263 size_t length,
struct AdbcError* error);
2276 int64_t value,
struct AdbcError* error);
2289 const char* key,
double value,
2309 struct ArrowSchema* schema,
2311 int64_t* rows_affected,
AdbcStatusCode AdbcConnectionReadPartition(struct AdbcConnection *connection, const uint8_t *serialized_partition, size_t serialized_length, struct ArrowArrayStream *out, struct AdbcError *error)
為查詢的分割區建構陳述式。然後可以獨立讀取結果。
AdbcStatusCode AdbcConnectionCommit(struct AdbcConnection *connection, struct AdbcError *error)
提交任何待處理的交易。僅在停用自動提交時使用。
AdbcStatusCode AdbcConnectionRollback(struct AdbcConnection *connection, struct AdbcError *error)
回滾任何待處理的交易。僅在停用自動提交時使用。
void * private_data
不透明的實作定義狀態。如果連線未初始化/釋放,則此欄位為 NULLPTR。
Definition adbc.h:834
struct AdbcDriver * private_driver
相關聯的驅動程式 (由驅動程式管理員用於協助追蹤狀態)。
Definition adbc.h:837
AdbcStatusCode AdbcConnectionSetOption(struct AdbcConnection *connection, const char *key, const char *value, struct AdbcError *error)
設定 char* 選項。
AdbcStatusCode AdbcConnectionCancel(struct AdbcConnection *connection, struct AdbcError *error)
取消連線上正在進行的操作。
AdbcStatusCode AdbcConnectionNew(struct AdbcConnection *connection, struct AdbcError *error)
分配新的 (但未初始化) 連線。
AdbcStatusCode AdbcConnectionSetOptionInt(struct AdbcConnection *connection, const char *key, int64_t value, struct AdbcError *error)
設定整數選項。
AdbcStatusCode AdbcConnectionSetOptionBytes(struct AdbcConnection *connection, const char *key, const uint8_t *value, size_t length, struct AdbcError *error)
在連線上設定位元組字串選項。
AdbcStatusCode AdbcConnectionRelease(struct AdbcConnection *connection, struct AdbcError *error)
銷毀此連線。
AdbcStatusCode AdbcConnectionInit(struct AdbcConnection *connection, struct AdbcDatabase *database, struct AdbcError *error)
完成設定選項並初始化連線。
AdbcStatusCode AdbcConnectionSetOptionDouble(struct AdbcConnection *connection, const char *key, double value, struct AdbcError *error)
設定倍精度浮點數選項。
活動的資料庫連線。
Definition adbc.h:831
void * private_data
不透明的實作定義狀態。如果連線未初始化/釋放,則此欄位為 NULLPTR。
Definition adbc.h:811
struct AdbcDriver * private_driver
相關聯的驅動程式 (由驅動程式管理員用於協助追蹤狀態)。
Definition adbc.h:814
AdbcStatusCode AdbcDatabaseSetOptionDouble(struct AdbcDatabase *database, const char *key, double value, struct AdbcError *error)
在資料庫上設定倍精度浮點數選項。
AdbcStatusCode AdbcDatabaseGetOptionBytes(struct AdbcDatabase *database, const char *key, uint8_t *value, size_t *length, struct AdbcError *error)
取得資料庫的位元組字串選項。
AdbcStatusCode AdbcDatabaseGetOptionInt(struct AdbcDatabase *database, const char *key, int64_t *value, struct AdbcError *error)
取得資料庫的整數選項。
AdbcStatusCode AdbcDatabaseNew(struct AdbcDatabase *database, struct AdbcError *error)
分配新的 (但未初始化) 資料庫。
AdbcStatusCode AdbcDatabaseRelease(struct AdbcDatabase *database, struct AdbcError *error)
銷毀此資料庫。不得存在任何連線。
AdbcStatusCode AdbcDatabaseInit(struct AdbcDatabase *database, struct AdbcError *error)
完成設定選項並初始化資料庫。
AdbcStatusCode AdbcDatabaseGetOptionDouble(struct AdbcDatabase *database, const char *key, double *value, struct AdbcError *error)
取得資料庫的倍精度浮點數選項。
AdbcStatusCode AdbcDatabaseSetOption(struct AdbcDatabase *database, const char *key, const char *value, struct AdbcError *error)
設定 char* 選項。
AdbcStatusCode AdbcDatabaseGetOption(struct AdbcDatabase *database, const char *key, char *value, size_t *length, struct AdbcError *error)
取得資料庫的字串選項。
AdbcStatusCode AdbcDatabaseSetOptionInt(struct AdbcDatabase *database, const char *key, int64_t value, struct AdbcError *error)
在資料庫上設定整數選項。
AdbcStatusCode AdbcDatabaseSetOptionBytes(struct AdbcDatabase *database, const char *key, const uint8_t *value, size_t length, struct AdbcError *error)
在資料庫上設定位元組字串選項。
資料庫的執行個體。
Definition adbc.h:808
void * private_manager
不透明的驅動程式管理員定義狀態。如果驅動程式未初始化/釋放,則此欄位為 NULL (但不需要...)。
Definition adbc.h:944
void * private_data
不透明的驅動程式定義狀態。如果驅動程式未初始化/釋放,則此欄位為 NULL (但不需要...)。
Definition adbc.h:940
AdbcStatusCode(* AdbcDriverInitFunc)(int version, void *driver, struct AdbcError *error)
透過驅動程式管理員 (使用 dlopen(3)/LoadLibrary) 的驅動程式通用進入點...
Definition adbc.h:2347
已初始化的資料庫驅動程式的執行個體。
Definition adbc.h:936
int32_t vendor_code
供應商特定的錯誤代碼 (如果適用)。
Definition adbc.h:274
void * private_data
不透明的實作定義狀態。
Definition adbc.h:294
const char * key
中繼資料金鑰。
Definition adbc.h:352
char * message
錯誤訊息。
Definition adbc.h:271
struct AdbcDriver * private_driver
相關聯的驅動程式 (由驅動程式管理員用於協助追蹤狀態)。
Definition adbc.h:303
size_t value_length
中繼資料值的長度。
Definition adbc.h:356
const uint8_t * value
二進位中繼資料值。
Definition adbc.h:354
const struct AdbcError * AdbcErrorFromArrayStream(struct ArrowArrayStream *stream, AdbcStatusCode *status)
從驅動程式建立的 ArrowArrayStream 取得 ADBC 錯誤。
uint8_t AdbcStatusCode
可能失敗之操作的錯誤代碼。
Definition adbc.h:176
int AdbcErrorGetDetailCount(const struct AdbcError *error)
取得錯誤中可用的中繼資料值數量。
struct AdbcErrorDetail AdbcErrorGetDetail(const struct AdbcError *error, int index)
依索引取得錯誤中的中繼資料值。
操作的詳細錯誤訊息。
Definition adbc.h:269
錯誤的額外鍵值中繼資料。
Definition adbc.h:350
const size_t * partition_lengths
分割區中每個對應項目的長度。
Definition adbc.h:907
void * private_data
不透明的實作定義狀態。如果連線未初始化/釋放,則此欄位為 NULLPTR。
Definition adbc.h:911
void(* release)(struct AdbcPartitions *partitions)
釋放包含的分割區。
Definition adbc.h:917
size_t num_partitions
分割區的數量。
Definition adbc.h:899
const uint8_t ** partitions
結果集的分割區,其中每個項目 (最多 num_partitions 個項目) 都是不透明的識別碼...
Definition adbc.h:904
AdbcStatusCode AdbcStatementExecutePartitions(struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcPartitions *partitions, int64_t *rows_affected, struct AdbcError *error)
執行陳述式並取得分割結果集形式的結果。
分散式/分割結果集的分割區。
Definition adbc.h:897
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
不透明的實作定義狀態。如果連線未初始化/釋放,則此欄位為 NULLPTR。
Definition adbc.h:872
struct AdbcDriver * private_driver
相關聯的驅動程式 (由驅動程式管理員用於協助追蹤狀態)。
Definition adbc.h:876
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)
取得陳述式的倍精度浮點數選項。
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)
在陳述式上設定倍精度浮點數選項。
執行資料庫查詢所需的所有狀態的容器,例如查詢本身,...
Definition adbc.h:869