驱动程序实现状态¶
警告
在 macOS x86_64 上,当在同一个进程中使用两个用 Go 编写的驱动程序时(除非在纯 Go 应用程序中),使用第二个驱动程序可能会导致崩溃。有关详细信息,请参见 GH-1841。
实现状态¶
**实验性** 驱动程序功能不完整,实现仍在进行中。**测试版** 驱动程序(大部分)功能完整,但只提供了一段时间。**稳定版** 驱动程序(大部分)功能完整(尽可能接近底层数据库),并且已经提供/测试了一段时间。
驱动程序 |
支持的语言 [1] |
实现语言 |
状态 |
---|---|---|---|
BigQuery |
C# |
C# |
实验性 |
Flight SQL (Go) |
C, Go |
Go |
稳定版 |
Flight SQL (Java) |
Java |
Java |
实验性 |
JDBC |
Java |
Java |
实验性 |
PostgreSQL |
C |
C++ |
稳定版 |
SQLite |
C |
C |
稳定版 |
Snowflake |
C, Go |
Go |
稳定版 |
功能支持¶
N/A 表示底层数据库中无法支持此功能。
有关完整详细信息,请参阅各个驱动程序文档页面。
- 批量导入
驱动程序是否支持 批量导入数据(从 Arrow 表创建或追加到数据库表)?
- 数据库元数据
驱动程序是否支持
AdbcConnectionGetObjects()
等获取数据库目录元数据等信息的函数?- 参数化查询
驱动程序是否支持绑定查询参数?
- 分区数据
能够读取(通常是分布式)结果集的单个块 (
AdbcStatementExecutePartitions()
)。- 准备好的语句
驱动程序是否支持绑定查询参数?
- 完整类型支持
驱动程序是否尽可能将所有数据库类型映射到/从等效的 Arrow 类型?
- 选择查询
驱动程序是否支持返回结果集的查询?
- SQL
驱动程序是否支持提交 SQL 查询?
- 事务
驱动程序是否支持显式事务(默认情况下假定自动提交)?
- Substrait
驱动程序是否支持提交 Substrait 计划?
- 更新查询
驱动程序是否支持不返回结果集的查询?
驱动程序 |
完整类型支持 |
SQL |
Substrait |
---|---|---|---|
Flight SQL (Go) |
Y |
Y |
N |
Flight SQL (Java) |
Y |
Y |
N |
JDBC |
N |
Y |
N/A |
PostgreSQL |
N |
Y |
N/A |
SQLite |
Y |
Y |
N/A |
驱动程序 |
增量查询 |
分区数据 |
参数化查询 |
准备好的语句 |
选择查询 |
更新查询 |
---|---|---|---|---|---|---|
Flight SQL (Go) |
Y |
Y |
Y |
Y |
Y |
Y |
Flight SQL (Java) |
N |
Y |
Y |
Y |
Y |
Y |
JDBC |
N/A |
N/A |
Y |
Y |
Y |
Y |
PostgreSQL |
N/A |
N/A |
Y [2] |
Y |
Y |
Y |
SQLite |
N/A |
N/A |
Y |
Y |
Y |
Y |
PostgreSQL 驱动程序仅支持执行不返回结果集的参数化准备好的语句(基本上是带有参数的 INSERT)。对于返回结果集的查询,使用准备好的语句很困难,因为驱动程序是围绕使用 COPY 来获得最佳性能构建的,而 COPY 在这种情况下不受支持。
驱动程序 |
批量导入 |
数据库元数据(目录等) |
事务 |
---|---|---|---|
Flight SQL (Go) |
N |
Y |
Y |
Flight SQL (Java) |
Y |
Y |
N |
JDBC |
Y |
Y |
N |
PostgreSQL |
Y |
Y |
Y |
SQLite |
Y |
Y |
Y |