ADBC
Arrow 資料庫連線能力
|
主題 | |
分割結果 | |
SQL 語意 | |
Substrait 語意 | |
類別 | |
struct | AdbcStatement |
用於容納執行資料庫查詢所需所有狀態的容器,例如查詢本身、預備語句的參數、驅動程式參數等。 更多資訊... | |
函數 | |
AdbcStatusCode | AdbcStatementNew (struct AdbcConnection *connection, struct AdbcStatement *statement, struct AdbcError *error) |
為給定的連線建立新的語句。 | |
AdbcStatusCode | AdbcStatementRelease (struct AdbcStatement *statement, struct AdbcError *error) |
銷毀語句。 | |
AdbcStatusCode | AdbcStatementExecuteQuery (struct AdbcStatement *statement, struct ArrowArrayStream *out, int64_t *rows_affected, struct AdbcError *error) |
執行語句並取得結果。 | |
AdbcStatusCode | AdbcStatementExecuteSchema (struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcError *error) |
在不執行查詢的情況下,取得查詢結果集的結構描述。 | |
AdbcStatusCode | AdbcStatementPrepare (struct AdbcStatement *statement, struct AdbcError *error) |
將此語句轉換為預備語句,以便多次執行。 | |
AdbcStatusCode | AdbcStatementBind (struct AdbcStatement *statement, struct ArrowArray *values, struct ArrowSchema *schema, struct AdbcError *error) |
綁定 Arrow 資料。這可以用於大量插入或預備語句。 | |
AdbcStatusCode | AdbcStatementBindStream (struct AdbcStatement *statement, struct ArrowArrayStream *stream, struct AdbcError *error) |
綁定 Arrow 資料。這可以用於大量插入或預備語句。 | |
AdbcStatusCode | AdbcStatementCancel (struct AdbcStatement *statement, struct AdbcError *error) |
取消執行進行中的查詢。 | |
AdbcStatusCode | AdbcStatementGetOption (struct AdbcStatement *statement, const char *key, char *value, size_t *length, struct AdbcError *error) |
取得語句的字串選項。 | |
AdbcStatusCode | AdbcStatementGetOptionBytes (struct AdbcStatement *statement, const char *key, uint8_t *value, size_t *length, struct AdbcError *error) |
取得語句的位元組字串選項。 | |
AdbcStatusCode | AdbcStatementGetOptionInt (struct AdbcStatement *statement, const char *key, int64_t *value, struct AdbcError *error) |
取得語句的整數選項。 | |
AdbcStatusCode | AdbcStatementGetOptionDouble (struct AdbcStatement *statement, const char *key, double *value, struct AdbcError *error) |
取得語句的倍精度浮點數選項。 | |
AdbcStatusCode | AdbcStatementGetParameterSchema (struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcError *error) |
取得綁定參數的結構描述。 | |
AdbcStatusCode | AdbcStatementSetOption (struct AdbcStatement *statement, const char *key, const char *value, struct AdbcError *error) |
在語句上設定字串選項。 | |
AdbcStatusCode | AdbcStatementSetOptionBytes (struct AdbcStatement *statement, const char *key, const uint8_t *value, size_t length, struct AdbcError *error) |
在語句上設定位元組字串選項。 | |
AdbcStatusCode | AdbcStatementSetOptionInt (struct AdbcStatement *statement, const char *key, int64_t value, struct AdbcError *error) |
在語句上設定整數選項。 | |
AdbcStatusCode | AdbcStatementSetOptionDouble (struct AdbcStatement *statement, const char *key, double value, struct AdbcError *error) |
在語句上設定倍精度浮點數選項。 | |
應用程式應首先使用 AdbcStatementNew 初始化語句。然後,應使用 AdbcStatementSetSqlQuery 和 AdbcStatementSetOption 等函數配置語句。最後,可以使用 AdbcStatementExecuteQuery 執行語句(或先呼叫 AdbcStatementPrepare 將其轉換為預備語句)。
struct AdbcStatement |
用於容納執行資料庫查詢所需所有狀態的容器,例如查詢本身、預備語句的參數、驅動程式參數等。
語句可以表示查詢或預備語句。
語句可以多次使用且可以重新配置(例如,它們可以重複使用以執行多個不同的查詢)。但是,執行語句(和更改某些其他狀態)將會使在該執行之前獲得的結果集無效。
可以從單一連線建立多個語句。但是,如果同時使用它們(無論是從單一執行緒還是多個執行緒),驅動程式可能會封鎖或發生錯誤。
語句不一定需要是執行緒安全的,但是只要客戶端注意序列化對語句的存取,就可以從多個執行緒中使用它們。
公開屬性 | |
void * | private_data |
不透明的實作定義狀態。當連線未初始化/釋放時,此欄位為 NULLPTR。 | |
struct AdbcDriver * | private_driver |
關聯的驅動程式(由驅動程式管理器用於協助追蹤狀態)。 | |
void* AdbcStatement::private_data |
不透明的實作定義狀態。當連線未初始化/釋放時,此欄位為 NULLPTR。
struct AdbcDriver* AdbcStatement::private_driver |
關聯的驅動程式(由驅動程式管理器用於協助追蹤狀態)。
AdbcStatusCode AdbcStatementBind | ( | struct AdbcStatement * | statement, |
struct ArrowArray * | values, | ||
struct ArrowSchema * | schema, | ||
struct AdbcError * | error ) |
綁定 Arrow 資料。這可以用於大量插入或預備語句。
[in] | statement | 要綁定的語句。 |
[in] | values | 要綁定的值。驅動程式將會自行呼叫釋放回呼,儘管它可能要等到語句釋放後才會執行。 |
[in] | schema | 要綁定的值的結構描述。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementBindStream | ( | struct AdbcStatement * | statement, |
struct ArrowArrayStream * | stream, | ||
struct AdbcError * | error ) |
綁定 Arrow 資料。這可以用於大量插入或預備語句。
[in] | statement | 要綁定的語句。 |
[in] | stream | 要綁定的值。驅動程式將會自行呼叫釋放回呼,儘管它可能要等到語句釋放後才會執行。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementCancel | ( | struct AdbcStatement * | statement, |
struct AdbcError * | error ) |
取消執行進行中的查詢。
可以在 AdbcStatementExecuteQuery(或類似函數)期間或在使用從其返回的 ArrowArrayStream 時呼叫此函數。呼叫此函數應使其他函數返回 ADBC_STATUS_CANCELLED(來自 ADBC 函數)或 ECANCELED(來自 ArrowArrayStream 的方法)。 (這不能保證一定會發生,例如,結果集可能已經緩衝在記憶體中。)
這必須始終是執行緒安全的(其他操作則不是)。它不一定是訊號安全的。
[in] | statement | 要取消的語句。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementExecuteQuery | ( | struct AdbcStatement * | statement, |
struct ArrowArrayStream * | out, | ||
int64_t * | rows_affected, | ||
struct AdbcError * | error ) |
執行語句並取得結果。
這會使任何先前的結果集無效。此 AdbcStatement 必須比返回的 ArrowArrayStream 存活更久。
自 ADBC 1.1.0 起:釋放返回的 ArrowArrayStream 而不完全使用它等同於呼叫 AdbcStatementCancel。
[in] | statement | 要執行的語句。 |
[out] | out | 結果。如果客戶端不希望有結果集,則傳遞 NULL。 |
[out] | rows_affected | 受影響的行數(如果已知),否則為 -1。如果客戶端不想要此資訊,則傳遞 NULL。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementExecuteSchema | ( | struct AdbcStatement * | statement, |
struct ArrowSchema * | schema, | ||
struct AdbcError * | error ) |
在不執行查詢的情況下,取得查詢結果集的結構描述。
這會使任何先前的結果集無效。
根據驅動程式,這可能需要先執行 AdbcStatementPrepare。
[in] | statement | 要執行的語句。 |
[out] | schema | 結果結構描述。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementGetOption | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
char * | value, | ||
size_t * | length, | ||
struct AdbcError * | error ) |
取得語句的字串選項。
這必須始終是執行緒安全的(其他操作則不是),但考慮到此處的語意,不建議同時呼叫 GetOption 本身。
必須提供 length,並且必須是 value 指向的緩衝區的大小。如果有足夠的空間,驅動程式將會將選項值(包括空字元終止符)複製到緩衝區,並將 length 設定為實際值的大小。如果緩衝區太小,則不會寫入任何資料,並且 length 將會設定為所需的長度。
換句話說
對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)
[in] | statement | 語句。 |
[in] | key | 要取得的選項。 |
[out] | value | 選項值。 |
[in,out] | length | value 的長度。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementGetOptionBytes | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
uint8_t * | value, | ||
size_t * | length, | ||
struct AdbcError * | error ) |
取得語句的位元組字串選項。
這必須始終是執行緒安全的(其他操作則不是),但考慮到此處的語意,不建議同時呼叫 GetOptionBytes 本身。
必須提供 length,並且必須是 value 指向的緩衝區的大小。如果有足夠的空間,驅動程式將會將選項值複製到緩衝區,並將 length 設定為實際值的大小。如果緩衝區太小,則不會寫入任何資料,並且 length 將會設定為所需的長度。
換句話說
對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)
[in] | statement | 語句。 |
[in] | key | 要取得的選項。 |
[out] | value | 選項值。 |
[in,out] | length | 選項值長度。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementGetOptionDouble | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
double * | value, | ||
struct AdbcError * | error ) |
取得語句的倍精度浮點數選項。
這必須始終是執行緒安全的(其他操作則不是)。
對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)
[in] | statement | 語句。 |
[in] | key | 要取得的選項。 |
[out] | value | 選項值。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementGetOptionInt | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
int64_t * | value, | ||
struct AdbcError * | error ) |
取得語句的整數選項。
這必須始終是執行緒安全的(其他操作則不是)。
對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)
[in] | statement | 語句。 |
[in] | key | 要取得的選項。 |
[out] | value | 選項值。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementGetParameterSchema | ( | struct AdbcStatement * | statement, |
struct ArrowSchema * | schema, | ||
struct AdbcError * | error ) |
取得綁定參數的結構描述。
這會檢索一個 Arrow 結構描述,描述參數化語句中參數的數量、名稱和類型。結構描述的欄位應按照參數的序數位置排序;具名參數應僅出現一次。
如果參數沒有名稱,或者無法確定名稱,則結構描述中對應欄位的名稱將會是空字串。如果無法確定類型,則對應欄位的類型將會是 NA (NullType)。
應在 AdbcStatementPrepare 之後呼叫此函數。
AdbcStatusCode AdbcStatementNew | ( | struct AdbcConnection * | connection, |
struct AdbcStatement * | statement, | ||
struct AdbcError * | error ) |
為給定的連線建立新的語句。
呼叫者傳入一個零初始化的 AdbcStatement。
驅動程式應分配其內部資料結構,並設定 private_data 欄位以指向新分配的 struct。當呼叫 AdbcStatementRelease 時,應釋放此 struct。
AdbcStatusCode AdbcStatementPrepare | ( | struct AdbcStatement * | statement, |
struct AdbcError * | error ) |
將此語句轉換為預備語句,以便多次執行。
這會使任何先前的結果集無效。
AdbcStatusCode AdbcStatementRelease | ( | struct AdbcStatement * | statement, |
struct AdbcError * | error ) |
銷毀語句。
[in] | statement | 要釋放的語句。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementSetOption | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
const char * | value, | ||
struct AdbcError * | error ) |
在語句上設定字串選項。
[in] | statement | 語句。 |
[in] | key | 要設定的選項。 |
[in] | value | 選項值。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementSetOptionBytes | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
const uint8_t * | value, | ||
size_t | length, | ||
struct AdbcError * | error ) |
在語句上設定位元組字串選項。
[in] | statement | 語句。 |
[in] | key | 要設定的選項。 |
[in] | value | 選項值。 |
[in] | length | 選項值長度。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementSetOptionDouble | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
double | value, | ||
struct AdbcError * | error ) |
在語句上設定倍精度浮點數選項。
[in] | statement | 語句。 |
[in] | key | 要設定的選項。 |
[in] | value | 選項值。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |
AdbcStatusCode AdbcStatementSetOptionInt | ( | struct AdbcStatement * | statement, |
const char * | key, | ||
int64_t | value, | ||
struct AdbcError * | error ) |
在語句上設定整數選項。
[in] | statement | 語句。 |
[in] | key | 要設定的選項。 |
[in] | value | 選項值。 |
[out] | error | 如果需要,可選擇在此位置返回錯誤訊息。 |