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 中相同的信息代码范围提供的元数据相同。

参数
[输入]connection要查询的连接。
[输入]info_codes要获取的元数据代码列表,如果为 NULL,则获取所有代码。
[输入]info_codes_lengthinfo_codes 参数的长度。 如果 info_codes 为 NULL,则忽略。
[输出]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 是一个具有以下字段的 Struct

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

TABLE_SCHEMA 是一个具有以下字段的 Struct

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

COLUMN_SCHEMA 是一个具有以下字段的 Struct

字段名称字段类型评论
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. 可选值。如果驱动程序不支持,则应为 null。 xdbc_ 值旨在以不可知的方式提供 JDBC/ODBC 兼容的元数据。

CONSTRAINT_SCHEMA 是一个具有以下字段的 Struct

字段名称字段类型评论
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 是一个具有以下字段的 Struct

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

AdbcConnection 必须比返回的 ArrowArrayStream 存活时间更长。

参数
[输入]connection数据库连接。
[输入]depth要显示的嵌套级别。 如果为 0,则显示所有级别。 如果为 1,则仅显示目录(即 catalog_schemas 将为 null)。 如果为 2,则仅显示目录和模式(即 db_schema_tables 将为 null),依此类推。
[输入]catalog仅显示给定目录中的表。 如果为 NULL,则不按目录过滤。 如果为空字符串,则仅显示没有目录的表。 可以是搜索模式(请参阅章节文档)。
[输入]db_schema仅显示给定数据库模式中的表。 如果为 NULL,则不按数据库模式过滤。 如果为空字符串,则仅显示没有数据库模式的表。 可以是搜索模式(请参阅章节文档)。
[输入]table_name仅显示具有给定名称的表。 如果为 NULL,则不按名称过滤。 可以是搜索模式(请参阅章节文档)。
[输入]table_type仅显示与给定表类型之一匹配的表。 如果为 NULL,则显示任何类型的表。 有效的表类型可以从 GetTableTypes 获取。 以 NULL 条目终止列表。
[输入]column_name仅显示具有给定名称的列。 如果为 NULL,则不按名称过滤。 可以是搜索模式(请参阅章节文档)。
[输出]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
参数
[输入]connection数据库连接。
[输入]key要获取的选项。
[输出]value选项值。
[输入,输出]lengthvalue 的长度。
[输出]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 获取转换后的选项值。 (例如,获取 double 选项的字符串表示形式。)

ADBC API 修订版 1.1.0
参数
[输入]connection连接。
[输入]key要获取的选项。
[输出]value选项值。
[输入,输出]length选项值的长度。
[输出]error如果需要,可以选择返回错误消息的位置。
返回
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetOptionDouble()

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

获取连接的双精度浮点数选项。

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

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

ADBC API 修订版 1.1.0
参数
[输入]connection数据库连接。
[输入]key要获取的选项。
[输出]value选项值。
[输出]error如果需要,可以选择返回错误消息的位置。
返回
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetOptionInt()

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

获取连接的整数选项。

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

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

ADBC API 修订版 1.1.0
参数
[输入]connection数据库连接。
[输入]key要获取的选项。
[输出]value选项值。
[输出]error如果需要,可以选择返回错误消息的位置。
返回
如果无法识别该选项,则返回 ADBC_STATUS_NOT_FOUND。

◆ AdbcConnectionGetStatisticNames()

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

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

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

字段名称字段类型
statistic_nameutf8 not null
statistic_keyint16 not null
ADBC API 修订版 1.1.0
参数
[输入]connection数据库连接。
[输出]out结果集。
[输出]error如果发生错误,则提供错误详细信息。

◆ AdbcConnectionGetStatistics()

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

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

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

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

DB_SCHEMA_SCHEMA 是一个具有以下字段的 Struct

字段名称字段类型
db_schema_nameutf8
db_schema_statisticslist<STATISTICS_SCHEMA> not null

STATISTICS_SCHEMA 是一个结构体,具有以下字段

字段名称字段类型评论
table_nameutf8 not null
column_nameutf8(1)
statistic_keyint16 not null(2)
statistic_valueVALUE_SCHEMA not null
statistic_is_approximatebool not null(3)
  1. 如果为空,则统计信息适用于整个表。
  2. 一个字典编码的统计名称(虽然我们不使用 Arrow 字典类型)。 [0, 1024) 中的值保留给 ADBC。 其他值用于特定于实现的统计信息。 有关预定义统计类型的定义,请参见 ADBC 统计类型。 要获取特定于驱动程序的统计名称,请使用 AdbcConnectionGetStatisticNames。
  3. 如果为 true,则该值是近似值或尽力而为。

VALUE_SCHEMA 是一个具有以下成员的密集联合

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

AdbcConnection 必须比返回的 ArrowArrayStream 存活时间更长。

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

◆ AdbcConnectionGetTableSchema()

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

获取表的 Arrow 模式。

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

◆ AdbcConnectionGetTableTypes()

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

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

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

字段名称字段类型
table_typeutf8 not null

AdbcConnection 必须比返回的 ArrowArrayStream 存活时间更长。

参数
[输入]connection数据库连接。
[输出]out结果集。
[输出]error如果发生错误,则提供错误详细信息。