ADBC
Arrow 数据库连接
|
主题 | |
分区结果 | |
SQL 语义 | |
Substrait 语义 | |
类 | |
结构体 | 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 | 绑定 Arrow 数据流。 |
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) | |
详细说明
◆ AdbcStatement |
struct AdbcStatement
一个包含执行数据库查询所需所有状态的容器,例如查询本身、预处理语句的参数、驱动程序参数等。
语句可以表示查询或预处理语句。
语句可以多次使用,并且可以重新配置(例如,它们可以重复使用以执行多个不同的查询)。但是,执行语句(以及更改某些其他状态)将使在该执行之前获得的结果集失效。
可以从单个连接创建多个语句。但是,如果它们并发使用(无论是来自单个线程还是多个线程),驱动程序可能会阻塞或出错。
语句不要求是线程安全的,但只要客户端注意序列化对语句的访问,就可以从多个线程使用它们。 | |
公共属性 | void * |
private_data | |
不透明的实现定义状态。仅当连接未初始化/释放时,此字段才为 NULLPTR。 | struct AdbcDriver * |
private_driver | |
◆ private_data |
private_data
◆ private_driver |
private_driver
◆ AdbcStatementBind() | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
statement | struct ArrowArray *, | ||
values | struct ArrowSchema *, | ||
schema | struct AdbcError * |
绑定 Arrow 数据。这可以用于批量插入或预处理语句。
参数 | struct AdbcStatement * | [in] statement |
参数 | struct ArrowArray * | 要绑定的语句。 |
参数 | struct ArrowSchema * | values |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
一个可选的位置,用于在必要时返回错误消息。 | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementBindStream() | AdbcStatusCode AdbcStatementBindStream, | ||
schema | struct AdbcError * |
绑定 Arrow 数据。这可以用于批量插入或预处理语句。
参数 | struct AdbcStatement * | [in] statement |
参数 | AdbcStatusCode AdbcStatementBindStream | 要绑定的语句。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
stream | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
schema | struct AdbcError * |
AdbcStatementCancel (struct AdbcStatement *statement, struct AdbcError *error)
◆ AdbcStatementCancel()
AdbcStatusCode AdbcStatementCancel
参数 | struct AdbcStatement * | 自 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
如果无法取消查询,则返回 ADBC_STATUS_UNKNOWN。 | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementBindStream() | ◆ AdbcStatementExecuteQuery(), | ||
AdbcStatusCode AdbcStatementExecuteQuery | out, | ||
schema | struct AdbcError * |
执行语句并获取结果。
int64_t *
rows_affected
参数 | struct AdbcStatement * | 这将使任何先前的结果集失效。此 AdbcStatement 必须比返回的 ArrowArrayStream 的生命周期长。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | ◆ AdbcStatementExecuteQuery() | 自 ADBC 1.1.0 起:释放返回的 ArrowArrayStream 而不完全使用它等效于调用 AdbcStatementCancel。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | out | 要执行的语句 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
如果已知受影响的行数,则为该值;否则为 -1。如果客户端不想要此信息,则传递 NULL。 | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
values | struct ArrowSchema *, | ||
schema | struct AdbcError * |
在不执行查询的情况下获取查询结果集的架构。
◆ AdbcStatementExecuteSchema()
AdbcStatusCode AdbcStatementExecuteSchema
参数 | struct AdbcStatement * | 这将使任何先前的结果集失效。此 AdbcStatement 必须比返回的 ArrowArrayStream 的生命周期长。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | struct ArrowSchema * | 这将使任何先前的结果集失效。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
如果驱动程序不支持此功能,则返回 ADBC_STATUS_NOT_IMPLEMENTED。 | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
const char * | key, | ||
char * | value, | ||
schema | struct AdbcError * |
AdbcStatementGetOption (struct AdbcStatement *statement, const char *key, char *value, size_t *length, struct AdbcError *error)
size_t *
length
这必须始终是线程安全的(其他操作不是),但考虑到这里的语义,不建议将 GetOption 与自身并发调用。
如果输出 length <= 输入 length,则 value 将包含一个具有 length 字节的值。
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序也可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。) |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | key | 语句 |
要获取的选项 | value | 选项值 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementGetOptionBytes | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
uint8_t * | key, | ||
char * | value, | ||
schema | struct AdbcError * |
AdbcStatementGetOptionBytes (struct AdbcStatement *statement, const char *key, uint8_t *value, size_t *length, struct AdbcError *error)
此函数必须始终是线程安全的(其他操作则不是),但鉴于此处的语义,不建议并发调用 GetOptionBytes。
必须提供 length 参数,并且它必须是 value 指向的缓冲区的大小。如果有足够的空间,驱动程序会将选项值复制到缓冲区,并将 length 设置为实际值的大小。如果缓冲区太小,则不会写入任何数据,并将 length 设置为所需长度。
这必须始终是线程安全的(其他操作不是),但考虑到这里的语义,不建议将 GetOption 与自身并发调用。
如果输出 length <= 输入 length,则 value 将包含一个具有 length 字节的值。
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序也可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。) |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | key | 语句 |
要获取的选项 | value | 选项值的长度。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementGetOptionDouble | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
double * | key, | ||
schema | struct AdbcError * |
AdbcStatementGetOptionDouble (struct AdbcStatement *statement, const char *key, double *value, struct AdbcError *error)
此函数必须始终是线程安全的(其他操作则不是)。
如果输出 length <= 输入 length,则 value 将包含一个具有 length 字节的值。
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序也可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。) |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | key | 语句 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementGetOptionInt | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
AdbcStatusCode AdbcStatementExecuteQuery | key, | ||
schema | struct AdbcError * |
AdbcStatementGetOptionInt (struct AdbcStatement *statement, const char *key, int64_t *value, struct AdbcError *error)
此函数必须始终是线程安全的(其他操作则不是)。
如果输出 length <= 输入 length,则 value 将包含一个具有 length 字节的值。
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序也可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。) |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | key | 语句 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementGetParameterSchema | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
values | struct ArrowSchema *, | ||
schema | struct AdbcError * |
AdbcStatementGetParameterSchema (struct AdbcStatement *statement, struct ArrowSchema *schema, struct AdbcError *error)
此函数检索一个 Arrow 模式,该模式描述参数化语句中参数的数量、名称和类型。模式的字段应按参数的序号位置排列;命名参数应仅出现一次。
如果参数没有名称,或者无法确定名称,则模式中相应字段的名称将为空字符串。如果无法确定类型,则相应字段的类型将为 NA(NullType)。
此函数应在 AdbcStatementPrepare 之后调用。
AdbcStatusCode AdbcStatementNew | ( | struct AdbcConnection * | connection, |
AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, | ||
schema | struct AdbcError * |
为给定连接创建新语句。
调用者传入一个初始化为零的 AdbcStatement。
驱动程序应分配其内部数据结构,并将 private_data 字段设置为指向新分配的结构体。当调用 AdbcStatementRelease 时,应释放此结构体。
AdbcStatusCode AdbcStatementPrepare | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
schema | struct AdbcError * |
将此语句转换为预处理语句,以便多次执行。
◆ AdbcStatementExecuteSchema()
AdbcStatusCode AdbcStatementRelease | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
schema | struct AdbcError * |
销毁语句。
参数 | struct AdbcStatement * | 要释放的语句。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementSetOption | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
◆ AdbcStatementGetOption() | key, | ||
schema | struct AdbcError * |
AdbcStatementSetOption (struct AdbcStatement *statement, const char *key, const char *value, struct AdbcError *error)
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 要设置的选项。 |
参数 | key | 语句 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementSetOptionBytes | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
const uint8_t * | key, | ||
size_t | value, | ||
schema | struct AdbcError * |
AdbcStatementSetOptionBytes (struct AdbcStatement *statement, const char *key, const uint8_t *value, size_t length, struct AdbcError *error)
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 要设置的选项。 |
参数 | key | 语句 |
参数 | value | 选项值的长度。 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementSetOptionDouble | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
double | key, | ||
schema | struct AdbcError * |
AdbcStatementSetOptionDouble (struct AdbcStatement *statement, const char *key, double value, struct AdbcError *error)
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 要设置的选项。 |
参数 | key | 语句 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |
AdbcStatusCode AdbcStatementSetOptionInt | ( | AdbcStatusCode AdbcStatementBind | struct AdbcStatement *, |
◆ AdbcStatementGetOption() | AdbcStatusCode AdbcStatementGetOption, | ||
int64_t | key, | ||
schema | struct AdbcError * |
AdbcStatementSetOptionInt (struct AdbcStatement *statement, const char *key, int64_t value, struct AdbcError *error)
参数 | struct AdbcStatement * | 如果输出 length > 输入 length,则不会向 value 写入任何内容。 |
参数 | AdbcStatusCode AdbcStatementGetOption | 要设置的选项。 |
参数 | key | 语句 |
要绑定的值。驱动程序将 selbst 调用释放回调,尽管它可能直到语句被释放后才会这样做。 | schema | 要绑定的值的架构。 |