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 將其轉換為預備語句)。


類別文件

◆ AdbcStatement

struct AdbcStatement

用於容納執行資料庫查詢所需所有狀態的容器,例如查詢本身、預備語句的參數、驅動程式參數等。

語句可以表示查詢或預備語句。

語句可以多次使用且可以重新配置(例如,它們可以重複使用以執行多個不同的查詢)。但是,執行語句(和更改某些其他狀態)將會使在該執行之前獲得的結果集無效。

可以從單一連線建立多個語句。但是,如果同時使用它們(無論是從單一執行緒還是多個執行緒),驅動程式可能會封鎖或發生錯誤。

語句不一定需要是執行緒安全的,但是只要客戶端注意序列化對語句的存取,就可以從多個執行緒中使用它們。

公開屬性

void * private_data
 不透明的實作定義狀態。當連線未初始化/釋放時,此欄位為 NULLPTR。
 
struct AdbcDriverprivate_driver
 關聯的驅動程式(由驅動程式管理器用於協助追蹤狀態)。
 

成員資料文件

◆ private_data

void* AdbcStatement::private_data

不透明的實作定義狀態。當連線未初始化/釋放時,此欄位為 NULLPTR。

◆ private_driver

struct AdbcDriver* AdbcStatement::private_driver

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

函數文件

◆ AdbcStatementBind()

AdbcStatusCode AdbcStatementBind ( struct AdbcStatement * statement,
struct ArrowArray * values,
struct ArrowSchema * schema,
struct AdbcError * error )

綁定 Arrow 資料。這可以用於大量插入或預備語句。

參數
[in]statement要綁定的語句。
[in]values要綁定的值。驅動程式將會自行呼叫釋放回呼,儘管它可能要等到語句釋放後才會執行。
[in]schema要綁定的值的結構描述。
[out]error如果需要,可選擇在此位置返回錯誤訊息。

◆ AdbcStatementBindStream()

AdbcStatusCode AdbcStatementBindStream ( struct AdbcStatement * statement,
struct ArrowArrayStream * stream,
struct AdbcError * error )

綁定 Arrow 資料。這可以用於大量插入或預備語句。

參數
[in]statement要綁定的語句。
[in]stream要綁定的值。驅動程式將會自行呼叫釋放回呼,儘管它可能要等到語句釋放後才會執行。
[out]error如果需要,可選擇在此位置返回錯誤訊息。

◆ AdbcStatementCancel()

AdbcStatusCode AdbcStatementCancel ( struct AdbcStatement * statement,
struct AdbcError * error )

取消執行進行中的查詢。

可以在 AdbcStatementExecuteQuery(或類似函數)期間或在使用從其返回的 ArrowArrayStream 時呼叫此函數。呼叫此函數應使其他函數返回 ADBC_STATUS_CANCELLED(來自 ADBC 函數)或 ECANCELED(來自 ArrowArrayStream 的方法)。 (這不能保證一定會發生,例如,結果集可能已經緩衝在記憶體中。)

這必須始終是執行緒安全的(其他操作則不是)。它不一定是訊號安全的。

ADBC API 修訂版本 1.1.0
參數
[in]statement要取消的語句。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果沒有要取消的查詢,則返回 ADBC_STATUS_INVALID_STATE。
如果無法取消查詢,則返回 ADBC_STATUS_UNKNOWN。

◆ AdbcStatementExecuteQuery()

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如果需要,可選擇在此位置返回錯誤訊息。

◆ AdbcStatementExecuteSchema()

AdbcStatusCode AdbcStatementExecuteSchema ( struct AdbcStatement * statement,
struct ArrowSchema * schema,
struct AdbcError * error )

在不執行查詢的情況下,取得查詢結果集的結構描述。

這會使任何先前的結果集無效。

根據驅動程式,這可能需要先執行 AdbcStatementPrepare。

ADBC API 修訂版本 1.1.0
參數
[in]statement要執行的語句。
[out]schema結果結構描述。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果驅動程式不支援此功能,則返回 ADBC_STATUS_NOT_IMPLEMENTED。

◆ AdbcStatementGetOption()

AdbcStatusCode AdbcStatementGetOption ( struct AdbcStatement * statement,
const char * key,
char * value,
size_t * length,
struct AdbcError * error )

取得語句的字串選項。

這必須始終是執行緒安全的(其他操作則不是),但考慮到此處的語意,不建議同時呼叫 GetOption 本身。

必須提供 length,並且必須是 value 指向的緩衝區的大小。如果有足夠的空間,驅動程式將會將選項值(包括空字元終止符)複製到緩衝區,並將 length 設定為實際值的大小。如果緩衝區太小,則不會寫入任何資料,並且 length 將會設定為所需的長度。

換句話說

  • 如果輸出長度 <= 輸入長度,則 value 將包含長度為 length 位元組的值。
  • 如果輸出長度 > 輸入長度,則 value 中沒有寫入任何內容。

對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要取得的選項。
[out]value選項值。
[in,out]lengthvalue 的長度。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcStatementGetOptionBytes()

AdbcStatusCode AdbcStatementGetOptionBytes ( struct AdbcStatement * statement,
const char * key,
uint8_t * value,
size_t * length,
struct AdbcError * error )

取得語句的位元組字串選項。

這必須始終是執行緒安全的(其他操作則不是),但考慮到此處的語意,不建議同時呼叫 GetOptionBytes 本身。

必須提供 length,並且必須是 value 指向的緩衝區的大小。如果有足夠的空間,驅動程式將會將選項值複製到緩衝區,並將 length 設定為實際值的大小。如果緩衝區太小,則不會寫入任何資料,並且 length 將會設定為所需的長度。

換句話說

  • 如果輸出長度 <= 輸入長度,則 value 將包含長度為 length 位元組的值。
  • 如果輸出長度 > 輸入長度,則 value 中沒有寫入任何內容。

對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要取得的選項。
[out]value選項值。
[in,out]length選項值長度。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcStatementGetOptionDouble()

AdbcStatusCode AdbcStatementGetOptionDouble ( struct AdbcStatement * statement,
const char * key,
double * value,
struct AdbcError * error )

取得語句的倍精度浮點數選項。

這必須始終是執行緒安全的(其他操作則不是)。

對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要取得的選項。
[out]value選項值。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcStatementGetOptionInt()

AdbcStatusCode AdbcStatementGetOptionInt ( struct AdbcStatement * statement,
const char * key,
int64_t * value,
struct AdbcError * error )

取得語句的整數選項。

這必須始終是執行緒安全的(其他操作則不是)。

對於標準選項,驅動程式必須始終支援透過選項中指定的類型取得選項值(如果他們支援取得選項值)。 (例如,透過 SetOptionDouble 設定的選項必須可以透過 GetOptionDouble 取得。)驅動程式也可以根據需要支援透過其他 getter 取得轉換後的選項值。 (例如,取得倍精度浮點數選項的字串表示形式。)

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要取得的選項。
[out]value選項值。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcStatementGetParameterSchema()

AdbcStatusCode AdbcStatementGetParameterSchema ( struct AdbcStatement * statement,
struct ArrowSchema * schema,
struct AdbcError * error )

取得綁定參數的結構描述。

這會檢索一個 Arrow 結構描述,描述參數化語句中參數的數量、名稱和類型。結構描述的欄位應按照參數的序數位置排序;具名參數應僅出現一次。

如果參數沒有名稱,或者無法確定名稱,則結構描述中對應欄位的名稱將會是空字串。如果無法確定類型,則對應欄位的類型將會是 NA (NullType)。

應在 AdbcStatementPrepare 之後呼叫此函數。

返回
如果無法確定結構描述,則返回 ADBC_STATUS_NOT_IMPLEMENTED。

◆ AdbcStatementNew()

AdbcStatusCode AdbcStatementNew ( struct AdbcConnection * connection,
struct AdbcStatement * statement,
struct AdbcError * error )

為給定的連線建立新的語句。

呼叫者傳入一個零初始化的 AdbcStatement。

驅動程式應分配其內部資料結構,並設定 private_data 欄位以指向新分配的 struct。當呼叫 AdbcStatementRelease 時,應釋放此 struct。

◆ AdbcStatementPrepare()

AdbcStatusCode AdbcStatementPrepare ( struct AdbcStatement * statement,
struct AdbcError * error )

將此語句轉換為預備語句,以便多次執行。

這會使任何先前的結果集無效。

◆ AdbcStatementRelease()

AdbcStatusCode AdbcStatementRelease ( struct AdbcStatement * statement,
struct AdbcError * error )

銷毀語句。

參數
[in]statement要釋放的語句。
[out]error如果需要,可選擇在此位置返回錯誤訊息。

◆ AdbcStatementSetOption()

AdbcStatusCode AdbcStatementSetOption ( struct AdbcStatement * statement,
const char * key,
const char * value,
struct AdbcError * error )

在語句上設定字串選項。

參數
[in]statement語句。
[in]key要設定的選項。
[in]value選項值。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_IMPLEMENTED。

◆ AdbcStatementSetOptionBytes()

AdbcStatusCode AdbcStatementSetOptionBytes ( struct AdbcStatement * statement,
const char * key,
const uint8_t * value,
size_t length,
struct AdbcError * error )

在語句上設定位元組字串選項。

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要設定的選項。
[in]value選項值。
[in]length選項值長度。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_IMPLEMENTED

◆ AdbcStatementSetOptionDouble()

AdbcStatusCode AdbcStatementSetOptionDouble ( struct AdbcStatement * statement,
const char * key,
double value,
struct AdbcError * error )

在語句上設定倍精度浮點數選項。

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要設定的選項。
[in]value選項值。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_IMPLEMENTED

◆ AdbcStatementSetOptionInt()

AdbcStatusCode AdbcStatementSetOptionInt ( struct AdbcStatement * statement,
const char * key,
int64_t value,
struct AdbcError * error )

在語句上設定整數選項。

ADBC API 修訂版本 1.1.0
參數
[in]statement語句。
[in]key要設定的選項。
[in]value選項值。
[out]error如果需要,可選擇在此位置返回錯誤訊息。
返回
如果無法識別選項,則返回 ADBC_STATUS_NOT_IMPLEMENTED