ADBC
Arrow 数据库连接
加载中...
搜索中...
无匹配项
元数据

函数

AdbcStatusCode AdbcConnectionGetInfo (struct AdbcConnection *connection, const uint32_t *info_codes, size_t info_codes_length, struct ArrowArrayStream *out, struct AdbcError *error)
 获取关于数据库/驱动程序的元数据。
 
AdbcStatusCode AdbcConnectionGetObjects (struct AdbcConnection *connection, int depth, const char *catalog, const char *db_schema, const char *table_name, const char **table_type, const char *column_name, struct ArrowArrayStream *out, struct AdbcError *error)
 获取所有目录、数据库模式、表和列的层次结构视图。
 
AdbcStatusCode AdbcConnectionGetOption (struct AdbcConnection *connection, const char *key, char *value, size_t *length, struct AdbcError *error)
 获取连接的字符串选项。
 
AdbcStatusCode AdbcConnectionGetOptionBytes (struct AdbcConnection *connection, const char *key, uint8_t *value, size_t *length, struct AdbcError *error)
 获取连接的字节串选项。
 
AdbcStatusCode AdbcConnectionGetOptionInt (struct AdbcConnection *connection, const char *key, int64_t *value, struct AdbcError *error)
 获取连接的整数选项。
 
AdbcStatusCode AdbcConnectionGetOptionDouble (struct AdbcConnection *connection, const char *key, double *value, struct AdbcError *error)
 获取连接的双精度选项。
 
AdbcStatusCode AdbcConnectionGetStatistics (struct AdbcConnection *connection, const char *catalog, const char *db_schema, const char *table_name, char approximate, struct ArrowArrayStream *out, struct AdbcError *error)
 获取关于表的数据分布的统计信息。
 
AdbcStatusCode AdbcConnectionGetStatisticNames (struct AdbcConnection *connection, struct ArrowArrayStream *out, struct AdbcError *error)
 获取此驱动程序特有的统计信息名称。
 
AdbcStatusCode AdbcConnectionGetTableSchema (struct AdbcConnection *connection, const char *catalog, const char *db_schema, const char *table_name, struct ArrowSchema *schema, struct AdbcError *error)
 获取表的 Arrow 模式。
 
AdbcStatusCode AdbcConnectionGetTableTypes (struct AdbcConnection *connection, struct ArrowArrayStream *out, struct AdbcError *error)
 获取数据库中表类型的列表。
 

详细说明

用于检索有关数据库的元数据的函数。

通常,这些函数返回一个 ArrowArrayStream,可以使用它来获取 Arrow 数据形式的元数据。返回的元数据具有函数文档字符串中给出的预期模式。除非另有说明,否则模式字段可以为空。虽然这些函数中未使用 AdbcStatement,但为了并发管理的目的,结果集可能计为驱动程序的活动语句(例如,如果驱动程序对并发活动语句有限制,并且它必须在内部执行 SQL 查询才能实现元数据函数)。

AdbcConnection 必须比返回的 ArrowArrayStream 的生命周期长。

某些函数接受“搜索模式”参数,这些参数是可以包含特殊字符“%”以匹配零个或多个字符,或“_”以匹配一个字符的字符串。(请参阅 JDBC 中 DatabaseMetaData 的文档或 ODBC 文档中的“模式值参数”。)当前不支持转义。

函数文档

◆ AdbcConnectionGetInfo()

AdbcStatusCode AdbcConnectionGetInfo ( struct AdbcConnection * connection,
const uint32_t * info_codes,
size_t info_codes_length,
struct ArrowArrayStream * out,
struct AdbcError * error )

获取关于数据库/驱动程序的元数据。

结果是一个具有以下模式的 Arrow 数据集

字段名称字段类型
info_nameuint32 not null
info_valueINFO_SCHEMA

INFO_SCHEMA 是一个密集的联合,其成员为

字段名称(类型代码)字段类型
string_value (0)utf8
bool_value (1)bool
int64_value (2)int64
int32_bitmask (3)int32
string_list (4)list<utf8>
int32_to_int32_list_map (5)map<int32, list<int32>>

每个元数据都由一个整数代码标识。识别的代码定义为常量。代码 [0, 10_000) 保留供 ADBC 使用。驱动程序/供应商将忽略对无法识别代码的请求(该行将从结果中省略)。

自 ADBC 1.1.0 起:范围 [500, 1_000) 保留用于“XDBC”信息,这与 Arrow Flight SQL GetSqlInfo RPC 中相同信息代码范围提供的元数据相同。

参数
[in]connection要查询的连接。
[in]info_codes要获取的元数据代码列表,如果要获取所有代码,则为 NULL。
[in]info_codes_lengthinfo_codes 参数的长度。如果 info_codes 为 NULL,则忽略。
[out]out结果集。
[out]error如果发生错误,则为错误详细信息。

◆ AdbcConnectionGetObjects()

AdbcStatusCode AdbcConnectionGetObjects ( struct AdbcConnection * connection,
int depth,
const char * catalog,
const char * db_schema,
const char * table_name,
const char ** table_type,
const char * column_name,
struct ArrowArrayStream * out,
struct AdbcError * error )

获取所有目录、数据库模式、表和列的层次结构视图。

结果是一个具有以下模式的 Arrow 数据集

字段名称字段类型
catalog_nameutf8
catalog_db_schemaslist<DB_SCHEMA_SCHEMA>

DB_SCHEMA_SCHEMA 是一个具有以下字段的结构体

字段名称字段类型
db_schema_nameutf8
db_schema_tableslist<TABLE_SCHEMA>

TABLE_SCHEMA 是一个具有以下字段的结构体

字段名称字段类型
table_nameutf8 not null
table_typeutf8 not null
table_columnslist<COLUMN_SCHEMA>
table_constraintslist<CONSTRAINT_SCHEMA>

COLUMN_SCHEMA 是一个具有以下字段的结构体

字段名称字段类型注释
column_nameutf8 not null
ordinal_positionint32(1)
remarksutf8(2)
xdbc_data_typeint16(3)
xdbc_type_nameutf8(3)
xdbc_column_sizeint32(3)
xdbc_decimal_digitsint16(3)
xdbc_num_prec_radixint16(3)
xdbc_nullableint16(3)
xdbc_column_defutf8(3)
xdbc_sql_data_typeint16(3)
xdbc_datetime_subint16(3)
xdbc_char_octet_lengthint32(3)
xdbc_is_nullableutf8(3)
xdbc_scope_catalogutf8(3)
xdbc_scope_schemautf8(3)
xdbc_scope_tableutf8(3)
xdbc_is_autoincrementbool(3)
xdbc_is_generatedcolumnbool(3)
  1. 列在表中的序号位置(从 1 开始)。
  2. 列的数据库特定描述。
  3. 可选值。如果驱动程序不支持,则应为空。xdbc_ 值旨在以一种无关的方式提供与 JDBC/ODBC 兼容的元数据。

CONSTRAINT_SCHEMA 是一个具有以下字段的结构体

字段名称字段类型注释
constraint_nameutf8
constraint_typeutf8 not null(1)
constraint_column_nameslist<utf8> not null(2)
constraint_column_usagelist<USAGE_SCHEMA>(3)
  1. 'CHECK'、'FOREIGN KEY'、'PRIMARY KEY' 或 'UNIQUE' 之一。
  2. 当前表上受约束的列,按顺序排列。
  3. 仅限 FOREIGN KEY,被引用的表和列。

USAGE_SCHEMA是一个具有以下字段的结构体

字段名称字段类型
fk_catalogutf8
fk_db_schemautf8
fk_tableutf8 not null
fk_column_nameutf8 not null

AdbcConnection 必须比返回的 ArrowArrayStream 的生命周期长。

参数
[in]connection数据库连接。
[in]depth要显示的嵌套级别。如果为 0,则显示所有级别。如果为 1,则仅显示目录(即 catalog_schemas 将为空)。如果为 2,则仅显示目录和模式(即 db_schema_tables 将为空),依此类推。
[in]catalog仅显示给定目录中的表。如果为 NULL,则不按目录过滤。如果为空字符串,则仅显示没有目录的表。可以是搜索模式(请参阅章节文档)。
[in]db_schema仅显示给定数据库模式中的表。如果为 NULL,则不按数据库模式过滤。如果为空字符串,则仅显示没有数据库模式的表。可以是搜索模式(请参阅章节文档)。
[in]table_name仅显示具有给定名称的表。如果为 NULL,则不按名称过滤。可以是搜索模式(请参阅章节文档)。
[in]table_type仅显示与给定表类型之一匹配的表。如果为 NULL,则显示任何类型的表。有效的表类型可以从 GetTableTypes 获取。使用 NULL 条目终止列表。
[in]column_name仅显示具有给定名称的列。如果为 NULL,则不按名称过滤。可以是搜索模式(请参阅章节文档)。
[out]out结果集。
[out]error如果发生错误,则为错误详细信息。

◆ AdbcConnectionGetOption()

AdbcStatusCode AdbcConnectionGetOption ( struct AdbcConnection * connection,
const char * key,
char * value,
size_t * length,
struct AdbcError * error )

获取连接的字符串选项。

这必须始终是线程安全的(其他操作不是),但考虑到这里的语义,不建议将 GetOption 与自身并发调用。

必须提供 length,并且它必须是指向 value 的缓冲区的大小。如果有足够的空间,驱动程序会将选项值(包括空终止符)复制到缓冲区并将 length 设置为实际值的大小。如果缓冲区太小,则不会写入任何数据,并且 length 将设置为所需的长度。

换句话说

  • 如果输出 length <= 输入 length,则 value 将包含一个 length 字节的值。
  • 如果输出 length > 输入 length,则不会向 value 写入任何内容。
自从
ADBC API 版本 1.1.0
参数
[in]connection数据库连接。
[in]key要获取的选项。
[out]value选项值。
[in,out]lengthvalue 的长度。
[out]error如有必要,返回错误消息的可选位置。
返回值
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetOptionBytes()

AdbcStatusCode AdbcConnectionGetOptionBytes ( struct AdbcConnection * connection,
const char * key,
uint8_t * value,
size_t * length,
struct AdbcError * error )

获取连接的字节串选项。

这必须始终是线程安全的(其他操作不是),但考虑到这里的语义,不建议将 GetOptionBytes 与自身并发调用。

必须提供 length,并且它必须是指向 value 的缓冲区的大小。如果有足够的空间,驱动程序会将选项值复制到缓冲区并将 length 设置为实际值的大小。如果缓冲区太小,则不会写入任何数据,并且 length 将设置为所需的长度。

换句话说

  • 如果输出 length <= 输入 length,则 value 将包含一个 length 字节的值。
  • 如果输出 length > 输入 length,则不会向 value 写入任何内容。

对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序还可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。)

自从
ADBC API 版本 1.1.0
参数
[in]connection连接。
[in]key要获取的选项。
[out]value选项值。
[in,out]length选项值的长度。
[out]error如有必要,返回错误消息的可选位置。
返回值
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetOptionDouble()

AdbcStatusCode AdbcConnectionGetOptionDouble ( struct AdbcConnection * connection,
const char * key,
double * value,
struct AdbcError * error )

获取连接的双精度选项。

此操作必须始终是线程安全的(其他操作则不是)。

对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序还可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。)

自从
ADBC API 版本 1.1.0
参数
[in]connection数据库连接。
[in]key要获取的选项。
[out]value选项值。
[out]error如有必要,返回错误消息的可选位置。
返回值
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetOptionInt()

AdbcStatusCode AdbcConnectionGetOptionInt ( struct AdbcConnection * connection,
const char * key,
int64_t * value,
struct AdbcError * error )

获取连接的整数选项。

此操作必须始终是线程安全的(其他操作则不是)。

对于标准选项,驱动程序必须始终支持通过选项中指定的类型获取选项值(如果它们支持获取选项值)。(例如,通过 SetOptionDouble 设置的选项必须可以通过 GetOptionDouble 检索。)如果需要,驱动程序还可以支持通过其他 getter 获取转换后的选项值。(例如,获取双精度选项的字符串表示形式。)

自从
ADBC API 版本 1.1.0
参数
[in]connection数据库连接。
[in]key要获取的选项。
[out]value选项值。
[out]error如有必要,返回错误消息的可选位置。
返回值
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetStatisticNames()

AdbcStatusCode AdbcConnectionGetStatisticNames ( struct AdbcConnection * connection,
struct ArrowArrayStream * out,
struct AdbcError * error )

获取此驱动程序特有的统计信息名称。

结果是一个具有以下模式的 Arrow 数据集

字段名称字段类型
统计信息名称utf8 not null
统计信息键int16 非空
自从
ADBC API 版本 1.1.0
参数
[in]connection数据库连接。
[out]out结果集。
[out]error如果发生错误,则为错误详细信息。

◆ AdbcConnectionGetStatistics()

AdbcStatusCode AdbcConnectionGetStatistics ( struct AdbcConnection * connection,
const char * catalog,
const char * db_schema,
const char * table_name,
char 近似值,
struct ArrowArrayStream * out,
struct AdbcError * error )

获取关于表的数据分布的统计信息。

结果是一个具有以下模式的 Arrow 数据集

字段名称字段类型
catalog_nameutf8
catalog_db_schemaslist<DB_SCHEMA_SCHEMA> 非空

DB_SCHEMA_SCHEMA 是一个具有以下字段的结构体

字段名称字段类型
db_schema_nameutf8
数据库模式统计信息list<STATISTICS_SCHEMA> 非空

STATISTICS_SCHEMA 是一个包含以下字段的结构体

字段名称字段类型注释
table_nameutf8 not null
column_nameutf8(1)
统计信息键int16 非空(2)
统计信息值VALUE_SCHEMA 非空
统计信息是否近似bool 非空(3)
  1. 如果为空,则统计信息应用于整个表。
  2. 字典编码的统计信息名称(尽管我们不使用 Arrow 字典类型)。[0, 1024) 范围内的值保留给 ADBC 使用。其他值用于特定于实现的统计信息。有关预定义统计信息类型的定义,请参阅 ADBC 统计信息类型。要获取驱动程序特定的统计信息名称,请使用 AdbcConnectionGetStatisticNames。
  3. 如果为 true,则该值为近似值或尽力而为的值。

VALUE_SCHEMA 是一个密集联合体,其成员为

字段名称字段类型
int64int64
uint64uint64
float64float64
binarybinary

AdbcConnection 必须比返回的 ArrowArrayStream 的生命周期长。

自从
ADBC API 版本 1.1.0
参数
[in]connection数据库连接。
[in]catalog目录(或 nullptr)。可以是搜索模式(请参阅章节文档)。
[in]db_schema数据库模式(或 nullptr)。可以是搜索模式(请参阅章节文档)。
[in]table_name表名(或 nullptr)。可以是搜索模式(请参阅章节文档)。
[in]近似值如果为零,则请求统计信息的精确值,否则允许使用尽力而为、近似或缓存的值。数据库可能会返回近似值,如结果所示。请求精确值可能代价高昂或不受支持。
[out]out结果集。
[out]error如果发生错误,则为错误详细信息。

◆ AdbcConnectionGetTableSchema()

AdbcStatusCode AdbcConnectionGetTableSchema ( struct AdbcConnection * connection,
const char * catalog,
const char * db_schema,
const char * table_name,
struct ArrowSchema * 模式,
struct AdbcError * error )

获取表的 Arrow 模式。

参数
[in]connection数据库连接。
[in]catalog目录(如果不适用,则为 nullptr)。
[in]db_schema数据库模式(如果不适用,则为 nullptr)。
[in]table_name表名。
[out]模式表模式。
[out]error如果发生错误,则为错误详细信息。

◆ AdbcConnectionGetTableTypes()

AdbcStatusCode AdbcConnectionGetTableTypes ( struct AdbcConnection * connection,
struct ArrowArrayStream * out,
struct AdbcError * error )

获取数据库中表类型的列表。

结果是一个具有以下模式的 Arrow 数据集

字段名称字段类型
table_typeutf8 not null

AdbcConnection 必须比返回的 ArrowArrayStream 的生命周期长。

参数
[in]connection数据库连接。
[out]out结果集。
[out]error如果发生错误,则为错误详细信息。