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 AdbcErrorAdbcErrorFromArrayStream (struct ArrowArrayStream *stream, AdbcStatusCode *status)
 從驅動程式建立的 ArrowArrayStream 取得 ADBC 錯誤。
 

詳細描述

ADBC 使用整數錯誤代碼來發出錯誤訊號。為了提供更多關於錯誤的詳細資訊,函式也可能透過選用的 out 參數傳回 AdbcError,可以檢查它。如果提供,呼叫者有責任將 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 AdbcDriverprivate_driver
 關聯的驅動程式 (由驅動程式管理器用於協助追蹤狀態)。
 

成員資料文件

◆ message

char* AdbcError::message

錯誤訊息。

◆ private_data

void* AdbcError::private_data

不透明的實作定義狀態。

除非 vendor_code 為 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA,否則不得使用此欄位。如果存在,當錯誤未初始化/釋放時,此欄位為 NULLPTR。

ADBC API 修訂版 1.1.0

◆ private_driver

struct AdbcDriver* AdbcError::private_driver

關聯的驅動程式 (由驅動程式管理器用於協助追蹤狀態)。

除非 vendor_code 為 ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA,否則不得使用此欄位。

ADBC API 修訂版 1.1.0

◆ release

void(* AdbcError::release) (struct AdbcError *error)

釋放包含的錯誤。

與其他結構不同,這是一個嵌入式回呼,使驅動程式管理器和驅動程式更容易協作。

◆ sqlstate

char AdbcError::sqlstate[5]

SQLSTATE 錯誤代碼 (如果提供),如 SQL:2003 標準所定義。如果未設定,應設定為 "\0\0\0\0\0"。

◆ vendor_code

int32_t AdbcError::vendor_code

廠商特定的錯誤代碼 (如果適用)。

◆ AdbcErrorDetail

struct AdbcErrorDetail

錯誤的額外鍵值 metadata。

此處的欄位由驅動程式擁有,不應釋放。當呼叫 AdbcError 中的 release 回呼時,此處的欄位會失效。

ADBC API 修訂版 1.1.0

公開屬性

const char * key
 Metadata 鍵。
 
const uint8_t * value
 二進位 metadata 值。
 
size_t value_length
 Metadata 值的長度。
 

成員資料文件

◆ key

const char* AdbcErrorDetail::key

Metadata 鍵。

◆ value

const uint8_t* AdbcErrorDetail::value

二進位 metadata 值。

◆ value_length

size_t AdbcErrorDetail::value_length

Metadata 值的長度。

巨集定義文件

◆ ADBC_ERROR_1_0_0_SIZE

#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 結構的此部分。

ADBC API 修訂版 1.1.0

◆ ADBC_ERROR_1_1_0_SIZE

#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 結構的此部分。

ADBC API 修訂版 1.1.0

◆ ADBC_ERROR_INIT

#define ADBC_ERROR_INIT
Value
((struct AdbcError){ \
NULL, ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA, {0, 0, 0, 0, 0}, NULL, NULL, NULL})
#define ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA
告知驅動程式/驅動程式管理器我們正在使用來自 ADBC 1.... 的擴充 AdbcError struct。
定義 adbc.h:257
操作的詳細錯誤訊息。
定義 adbc.h:269

初始化完整 AdbcError 結構的輔助工具。

ADBC API 修訂版 1.1.0

◆ ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA

#define ADBC_ERROR_VENDOR_CODE_PRIVATE_DATA   INT32_MIN

告知驅動程式/驅動程式管理器我們正在使用來自 ADBC 1.1.0 的擴充 AdbcError struct。

請參閱 AdbcError 文件以了解用法。

ADBC API 修訂版 1.1.0

◆ ADBC_STATUS_ALREADY_EXISTS

#define ADBC_STATUS_ALREADY_EXISTS   4

要求的資源已存在。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_CANCELLED

#define ADBC_STATUS_CANCELLED   11

操作已取消,並非由於逾時。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_INTEGRITY

#define ADBC_STATUS_INTEGRITY   8

資料庫的完整性受到影響。

例如,外鍵檢查可能失敗,或者可能違反唯一性約束。

可能僅表示資料庫端錯誤。

◆ ADBC_STATUS_INTERNAL

#define ADBC_STATUS_INTERNAL   9

驅動程式或資料庫內部發生錯誤。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_INVALID_ARGUMENT

#define ADBC_STATUS_INVALID_ARGUMENT   5

引數無效,可能是程式設計錯誤。

例如,它們的格式可能錯誤或超出範圍。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_INVALID_DATA

#define ADBC_STATUS_INVALID_DATA   7

處理了無效資料 (非程式設計錯誤)。

例如,查詢執行期間可能發生除以零的情況。

可能僅表示資料庫端錯誤。

◆ ADBC_STATUS_INVALID_STATE

#define ADBC_STATUS_INVALID_STATE   6

未滿足操作的先決條件,可能是程式設計錯誤。

例如,物件可能未初始化,或者可能尚未完全設定。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_IO

#define ADBC_STATUS_IO   10

發生 I/O 錯誤。

例如,遠端服務可能無法使用。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_NOT_FOUND

#define ADBC_STATUS_NOT_FOUND   3

找不到要求的資源。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_NOT_IMPLEMENTED

#define ADBC_STATUS_NOT_IMPLEMENTED   2

此操作未實作或不支援。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_OK

#define ADBC_STATUS_OK   0

無錯誤。

◆ ADBC_STATUS_TIMEOUT

#define ADBC_STATUS_TIMEOUT   12

操作由於逾時而取消。

可能表示驅動程式端或資料庫端錯誤。

◆ ADBC_STATUS_UNAUTHENTICATED

#define ADBC_STATUS_UNAUTHENTICATED   13

驗證失敗。

可能僅表示資料庫端錯誤。

◆ ADBC_STATUS_UNAUTHORIZED

#define ADBC_STATUS_UNAUTHORIZED   14

用戶端未經授權執行給定操作。

可能僅表示資料庫端錯誤。

◆ ADBC_STATUS_UNKNOWN

#define ADBC_STATUS_UNKNOWN   1

發生不明錯誤。

可能表示驅動程式端或資料庫端錯誤。

類型定義文件

◆ AdbcStatusCode

typedef uint8_t AdbcStatusCode

可能失敗之操作的錯誤代碼。

函式文件

◆ AdbcErrorFromArrayStream()

const struct AdbcError * AdbcErrorFromArrayStream ( struct ArrowArrayStream * stream,
AdbcStatusCode * status )

從驅動程式建立的 ArrowArrayStream 取得 ADBC 錯誤。

這允許檢索錯誤詳細資訊和 Arrow C Stream 介面通常會抑制的其他 metadata。

呼叫者「絕不能」釋放錯誤;它由 stream 本身中的 release 回呼管理。

參數
[in]stream要查詢的 stream。
[out]statusADBC 狀態代碼,如果沒有錯誤,則為 ADBC_STATUS_OK。如果 stream 不包含 ADBC 錯誤,或指標為 NULL,則不寫入。
回傳值
如果不支援,則為 NULL。
ADBC API 修訂版 1.1.0

◆ AdbcErrorGetDetail()

struct AdbcErrorDetail AdbcErrorGetDetail ( const struct AdbcError * error,
int index )

依索引取得錯誤中的 metadata 值。

如果索引無效,則傳回以 NULL/0 欄位初始化的 AdbcErrorDetail

ADBC API 修訂版 1.1.0

◆ AdbcErrorGetDetailCount()

int AdbcErrorGetDetailCount ( const struct AdbcError * error)

取得錯誤中可用的 metadata 值數量。

ADBC API 修訂版 1.1.0