ADBC
Arrow 資料庫連線能力
|
類別 | |
struct | AdbcError |
操作的詳細錯誤訊息。 更多... | |
struct | AdbcErrorDetail |
錯誤的額外鍵值 metadata。 更多... | |
巨集 | |
#define | ADBC_STATUS_OK 0 |
無錯誤。 | |
#define | ADBC_STATUS_UNKNOWN 1 |
發生不明錯誤。 | |
#define | ADBC_STATUS_NOT_IMPLEMENTED 2 |
此操作未實作或不支援。 | |
#define | ADBC_STATUS_NOT_FOUND 3 |
找不到要求的資源。 | |
#define | ADBC_STATUS_ALREADY_EXISTS 4 |
要求的資源已存在。 | |
#define | ADBC_STATUS_INVALID_ARGUMENT 5 |
引數無效,可能是程式設計錯誤。 | |
#define | ADBC_STATUS_INVALID_STATE 6 |
未滿足操作的先決條件,可能是程式設計錯誤。 | |
#define | ADBC_STATUS_INVALID_DATA 7 |
處理了無效資料 (非程式設計錯誤)。 | |
#define | ADBC_STATUS_INTEGRITY 8 |
資料庫的完整性受到影響。 | |
#define | ADBC_STATUS_INTERNAL 9 |
驅動程式或資料庫內部發生錯誤。 | |
#define | ADBC_STATUS_IO 10 |
發生 I/O 錯誤。 | |
#define | ADBC_STATUS_CANCELLED 11 |
操作已取消,並非由於逾時。 | |
#define | ADBC_STATUS_TIMEOUT 12 |
操作由於逾時而取消。 | |
#define | ADBC_STATUS_UNAUTHENTICATED 13 |
驗證失敗。 | |
#define | ADBC_STATUS_UNAUTHORIZED 14 |
用戶端未經授權執行給定操作。 | |
#define | ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA INT32_MIN |
告知驅動程式/驅動程式管理器我們正在使用來自 ADBC 1.1.0 的擴充 AdbcError struct。 | |
#define | ADBC_ERROR_INIT |
初始化完整 AdbcError 結構的輔助工具。 | |
#define | ADBC_ERROR_1_0_0_SIZE (offsetof(struct AdbcError, private_data)) |
ADBC 1.0.0 中 AdbcError 結構的大小。 | |
#define | ADBC_ERROR_1_1_0_SIZE (sizeof(struct AdbcError)) |
ADBC 1.1.0 中 AdbcError 結構的大小。 | |
類型定義 | |
typedef uint8_t | AdbcStatusCode |
可能失敗之操作的錯誤代碼。 | |
函式 | |
int | AdbcErrorGetDetailCount (const struct AdbcError *error) |
取得錯誤中可用的 metadata 值數量。 | |
struct AdbcErrorDetail | AdbcErrorGetDetail (const struct AdbcError *error, int index) |
依索引取得錯誤中的 metadata 值。 | |
const struct AdbcError * | AdbcErrorFromArrayStream (struct ArrowArrayStream *stream, AdbcStatusCode *status) |
從驅動程式建立的 ArrowArrayStream 取得 ADBC 錯誤。 | |
ADBC 使用整數錯誤代碼來發出錯誤訊號。為了提供更多關於錯誤的詳細資訊,函式也可能透過選用的 out 參數傳回 AdbcError,可以檢查它。如果提供,呼叫者有責任將 AdbcError 值初始化為零。
struct AdbcError |
操作的詳細錯誤訊息。
呼叫者必須將此結構初始化為零 (在 ADBC 1.1.0 中澄清)。
此結構在 ADBC 1.1.0 中擴充。使用 ADBC 1.0.0 的驅動程式和用戶端將不會有 private_data 或 private_driver 欄位。驅動程式應僅在 vendor_code 等於 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA 時讀取/寫入這些欄位。用戶端必須初始化此結構,以避免未初始化的值混淆驅動程式的可能性。
公開屬性 | |
char * | message |
錯誤訊息。 | |
int32_t | vendor_code |
廠商特定的錯誤代碼 (如果適用)。 | |
char | sqlstate [5] |
SQLSTATE 錯誤代碼 (如果提供),如 SQL:2003 標準所定義。如果未設定,應設定為 "\0\0\0\0\0"。 | |
void(* | release )(struct AdbcError *error) |
釋放包含的錯誤。 | |
void * | private_data |
不透明的實作定義狀態。 | |
struct AdbcDriver * | private_driver |
關聯的驅動程式 (由驅動程式管理器用於協助追蹤狀態)。 | |
char* AdbcError::message |
錯誤訊息。
void* AdbcError::private_data |
不透明的實作定義狀態。
除非 vendor_code 為 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA,否則不得使用此欄位。如果存在,當錯誤未初始化/釋放時,此欄位為 NULLPTR。
struct AdbcDriver* AdbcError::private_driver |
關聯的驅動程式 (由驅動程式管理器用於協助追蹤狀態)。
除非 vendor_code 為 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA,否則不得使用此欄位。
void(* AdbcError::release) (struct AdbcError *error) |
釋放包含的錯誤。
與其他結構不同,這是一個嵌入式回呼,使驅動程式管理器和驅動程式更容易協作。
char AdbcError::sqlstate[5] |
SQLSTATE 錯誤代碼 (如果提供),如 SQL:2003 標準所定義。如果未設定,應設定為 "\0\0\0\0\0"。
int32_t AdbcError::vendor_code |
廠商特定的錯誤代碼 (如果適用)。
struct AdbcErrorDetail |
#define ADBC_ERROR_1_0_0_SIZE (offsetof(struct AdbcError, private_data)) |
ADBC 1.0.0 中 AdbcError 結構的大小。
針對 ADBC 1.1.0 及更高版本撰寫的驅動程式,當 vendor_code 不是 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA 時,永遠不應接觸超過 AdbcDriver 結構的此部分。
#define ADBC_ERROR_1_1_0_SIZE (sizeof(struct AdbcError)) |
ADBC 1.1.0 中 AdbcError 結構的大小。
針對 ADBC 1.1.0 及更高版本撰寫的驅動程式,當 vendor_code 為 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA 時,永遠不應接觸超過 AdbcDriver 結構的此部分。
#define ADBC_ERROR_INIT |
初始化完整 AdbcError 結構的輔助工具。
#define ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA INT32_MIN |
#define ADBC_STATUS_ALREADY_EXISTS 4 |
要求的資源已存在。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_CANCELLED 11 |
操作已取消,並非由於逾時。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_INTEGRITY 8 |
資料庫的完整性受到影響。
例如,外鍵檢查可能失敗,或者可能違反唯一性約束。
可能僅表示資料庫端錯誤。
#define ADBC_STATUS_INTERNAL 9 |
驅動程式或資料庫內部發生錯誤。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_INVALID_ARGUMENT 5 |
引數無效,可能是程式設計錯誤。
例如,它們的格式可能錯誤或超出範圍。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_INVALID_DATA 7 |
處理了無效資料 (非程式設計錯誤)。
例如,查詢執行期間可能發生除以零的情況。
可能僅表示資料庫端錯誤。
#define ADBC_STATUS_INVALID_STATE 6 |
未滿足操作的先決條件,可能是程式設計錯誤。
例如,物件可能未初始化,或者可能尚未完全設定。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_IO 10 |
發生 I/O 錯誤。
例如,遠端服務可能無法使用。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_NOT_FOUND 3 |
找不到要求的資源。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_NOT_IMPLEMENTED 2 |
此操作未實作或不支援。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_OK 0 |
無錯誤。
#define ADBC_STATUS_TIMEOUT 12 |
操作由於逾時而取消。
可能表示驅動程式端或資料庫端錯誤。
#define ADBC_STATUS_UNAUTHENTICATED 13 |
驗證失敗。
可能僅表示資料庫端錯誤。
#define ADBC_STATUS_UNAUTHORIZED 14 |
用戶端未經授權執行給定操作。
可能僅表示資料庫端錯誤。
#define ADBC_STATUS_UNKNOWN 1 |
發生不明錯誤。
可能表示驅動程式端或資料庫端錯誤。
typedef uint8_t AdbcStatusCode |
可能失敗之操作的錯誤代碼。
const struct AdbcError * AdbcErrorFromArrayStream | ( | struct ArrowArrayStream * | stream, |
AdbcStatusCode * | status ) |
從驅動程式建立的 ArrowArrayStream 取得 ADBC 錯誤。
這允許檢索錯誤詳細資訊和 Arrow C Stream 介面通常會抑制的其他 metadata。
呼叫者「絕不能」釋放錯誤;它由 stream 本身中的 release 回呼管理。
[in] | stream | 要查詢的 stream。 |
[out] | status | ADBC 狀態代碼,如果沒有錯誤,則為 ADBC_STATUS_OK。如果 stream 不包含 ADBC 錯誤,或指標為 NULL,則不寫入。 |
struct AdbcErrorDetail AdbcErrorGetDetail | ( | const struct AdbcError * | error, |
int | index ) |
int AdbcErrorGetDetailCount | ( | const struct AdbcError * | error | ) |
取得錯誤中可用的 metadata 值數量。