当前位置: 首页 > news >正文

使用DeepSeek辅助测试一个rust编写的postgresql协议工具包convergence

convergence是rust编写支持postgresql协议的工具包。

它的convergence/convergence-arrow/examples/datafusion.rs是一个支持datafusion后台数据引擎DeepSeek的简易服务器示例程序。

通过询问DeepSeek,我知道了怎么运行这个示例。
Rust 项目中的 examples 目录通常用于存放示例代码,这些示例展示了如何使用你这个库(在这里是 convergence-arrow)的功能。

可以在这个项目下的任何目录中运行cargo run --example datafusion, Cargo 会自动识别。但是因为它又依赖一个csv文件,所以还是要在正确的目录下执行,否则会报文件不存在的错误。

/par/convergence/convergence-arrow# cargo run --example datafusionCompiling convergence-arrow v0.17.1 (/par/convergence/convergence-arrow)Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.39sRunning `/par/convergence/target/debug/examples/datafusion`thread 'tokio-runtime-worker' panicked at convergence-arrow/examples/datafusion.rs:33:6:
failed to register csv: ObjectStore(NotFound { path: "/par/convergence/convergence-arrow/convergence-arrow/data/100_4buckets.csv", source: Os { code: 2, kind: NotFound, message: "No such file or directory" } })
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

改到上一级目录执行,就不报错了。

/par/convergence/convergence-arrow# cd ..
/par/convergence# cargo run --example datafusionFinished `dev` profile [unoptimized + debuginfo] target(s) in 3.44sRunning `target/debug/examples/datafusion`thread 'tokio-runtime-worker' panicked at /par/convergence/convergence/src/server.rs:52:27:
called `Result::unwrap()` on an `Err` value: ConnectionClosed
note: run with `RUST_BACKTRACE=1` environment variable to display a backtracethread 'tokio-runtime-worker' panicked at /par/convergence/convergence/src/server.rs:52:27:
called `Result::unwrap()` on an `Err` value: ConnectionClosedthread 'tokio-runtime-worker' panicked at /par/convergence/convergence/src/server.rs:52:27:
called `Result::unwrap()` on an `Err` value: ConnectionClosed

另开一个终端,沿用我们的postgresql协议客户端工具pgproto,一开始脚本中的表不存在就报错,后来改成查询示例中注册的test_100_4buckets表(其实是datafusion访问data/100_4buckets.csv文件),就能查询出结果了。

/par/pgproto/src# ./pgproto -h 127.0.0.1 -p 5432 -f /par/pgpo2.txt
Failed to connect to host=127.0.0.1 port=5432.
/par/pgproto/src# ./pgproto -h 127.0.0.1 -p 5432 -f /par/pgpo2.txt
FE=> Query (query="SELECT * FROM foods where category='meat' limit 2")
<= BE ErrorResponse(C 22000 S ERROR M Error during planning: table 'datafusion.public.foods' not found )
<= BE ReadyForQuery(I)/par/pgproto/src# ./pgproto -h 127.0.0.1 -p 5432 -f /par/pgpo3.txt
FE=> Query (query="select count(*) from test_100_4buckets")
<= BE RowDescription
解析出的字段名:
字段数量: 1
字段 1: count(*)
<= BE DataRow
100
<= BE CommandComplete(SELECT 1)
<= BE ReadyForQuery(I)
FE=> Query (query="select bucket, count(*) from test_100_4buckets group by bucket order by bucket")
<= BE RowDescription
解析出的字段名:
字段数量: 2
字段 1: bucket
字段 2: count(*)
<= BE DataRow
a|25
<= BE DataRow
b|25
<= BE DataRow
c|25
<= BE DataRow
d|25
<= BE CommandComplete(SELECT 4)
<= BE ReadyForQuery(I)

除了运行example, 还可以运行test, 可以test一个文件,

cargo test --test test_datafusionCompiling convergence-arrow v0.17.1 (/par/convergence/convergence-arrow)Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 34sRunning tests/test_datafusion.rs (target/debug/deps/test_datafusion-5bfe2727a2979e23)running 2 tests
test count_rows ... ok
test grouped_counts ... ok

也可以test一个函数, cargo会自动在各个文件中找这个函数。

/par/convergence# cargo test count_rowsCompiling convergence-arrow v0.17.1 (/par/convergence/convergence-arrow)Finished `test` profile [unoptimized + debuginfo] target(s) in 2m 12sRunning unittests src/lib.rs (target/debug/deps/convergence-59c3fb083bdbbb67)running 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sRunning tests/test_connection.rs (target/debug/deps/test_connection-96a75e35b0056308)running 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.00sRunning unittests src/lib.rs (target/debug/deps/convergence_arrow-a62e8f28e1b474cd)running 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sRunning tests/test_arrow.rs (target/debug/deps/test_arrow-cfca8d83e13540b8)running 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.00sRunning tests/test_datafusion.rs (target/debug/deps/test_datafusion-5bfe2727a2979e23)running 1 test
test count_rows ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 1.73s

这个工具包的功能还不完善,create table语句就不能成功,统一返回一个表已存在的错误

/par/pgproto/src# ./pgproto -h 127.0.0.1 -p 5432 -f /par/pgpo4.txt
FE=> Query (query="create table test(i int, j varchar(10))")
<= BE ErrorResponse(C 22000 S ERROR M Execution error: Table 'test' already exists )
<= BE ReadyForQuery(I)
FE=> Query (query="create table test1(i int, j varchar(10))")
<= BE ErrorResponse(C 22000 S ERROR M Execution error: Table 'test1' already exists )
<= BE ReadyForQuery(I)
http://www.dtcms.com/a/394004.html

相关文章:

  • 【00】EPGF 架构搭建教程之 总揽篇
  • 深度剖析 vector 底层原理:从手写实现到核心技术点全解析
  • 嵌入式开发学习日志29——stm32之定时器中断
  • 通俗范畴论17.3 向量空间的对偶与双对偶
  • 表格 表头增加悬浮提示内容
  • emacs段落重排快捷键
  • 第九届人单合一模式引领论坛举行 构建AI时代的智能交互生态
  • 不用搜驱动!惠普官方工具:自动适配,坏了直接重装
  • JAVA八股文——java虚拟机栈
  • 华为MindSpeed 训练加速库:架构解析
  • Java的Stream实现对list实用操作【持续更新】
  • 【AI智能体】Dify集成 Echarts实现数据报表展示实战详解
  • 【01】EPGF 架构搭建教程之 Anaconda 安装指南
  • 深度学习周报(9.15~9.21)
  • MCP实战:使用 LangGraph 和 MCP 协议无缝集成外部工具
  • 【嵌入式总线通信协议库】
  • 06.【Linux系统编程】命令行参数(给main传参)、环境变量(概念+使用)、进程的虚拟地址空间(用户实际访问的空间)
  • esp32墨水屏天气预测学习
  • LabelImg 操作指南:提高标注速度
  • redhat7.2迁移ssh免密到麒麟v10
  • Linux基操
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘protobuf’ 问题
  • EXCEL中公式和文字混合和数字自动变成大写金额
  • Linux软件安装与项目部署
  • Config-配置中心2.0
  • Meta 开源 MobileLLM-R1 系列小参数高效模型,颠覆大模型竞赛
  • 【论文阅读】One-Minute Video Generation with Test-Time Training
  • 玄鸟12600M矿机ETC/ETHW挖矿性能解析与技术参数分析
  • Rust_2025:阶段1:day7.1 类型转换
  • Composer在PHP项目中的手动类自动加载策略