2022 43 Open source weekly report
2022-10-21 18:34:16 Author: cloudsjhan.github.io(查看原文) 阅读量:6 收藏

2022 43 Open source weekly report

发表于 | 分类于 | 阅读次数: |

| 字数统计: 704 | 阅读时长 ≈ 3

2022 NO.40 weekly report

Go driver SDK for databend cloud released!

由于在 databend cloud 各个项目的代码中已经充斥着大量重复的请求 databend-query 的代码,所以亟需一个 driver SDK 来实现大一统,于是在几周前就开始着手实现 databend cloud 的 go driver,当时用比较短的时间大概实现了一个架子,详情可以见 这篇文章。碍于中间有几个优先级比较高的工作就暂时搁置了,本周 all in 这个项目一周,终于 release 了 v0.0.1 版本,虽然代码的结构、功能的丰富程度、代码的优雅程度都跟标杆 SDK - clickhouse-go 的水平有较大差距,但基本的方法比如 sql.Open, Exec, Query, Next, Rows 等都已经可用。先来看几个🌰吧!

Execution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  dsn, cfg, err := getDSN()
if err != nil {
log.Fatalf("failed to create DSN from Config: %v, err: %v", cfg, err)
}
conn, err := sql.Open("databend", dsn)
if err != nil {
return err
}
conn.Exec(`DROP TABLE IF EXISTS data`)
_, err = conn.Exec(`
CREATE TABLE IF NOT EXISTS data(
Col1 UInt8,
Col2 String
)
`)
if err != nil {
return err
}
_, err = conn.Exec("INSERT INTO data VALUES (1, 'test-1')")

Query Row

可以用 Scan 方法来解析出单条数据

1
2
3
4
5
6
7
8
9
10
row := conn.QueryRow("SELECT * FROM data")
var (
col1 uint8
col2, col3, col4 string
col5 []string
col6 time.Time
)
if err := row.Scan(&col1, &col2, &col3, &col4, &col5, &col6); err != nil {
return err
}

Query Rows

当然可以用 Next 来不断迭代获取所有数据

1
2
3
4
5
6
7
8
9
10
11
12
13
row := conn.QueryRow("SELECT * FROM data")
var (
col1 uint8
col2, col3, col4 string
col5 []string
col6 time.Time
)
for rows.Next() {
if err := row.Scan(&col1, &col2, &col3, &col4, &col5, &col6); err != nil {
return err
}
fmt.Printf("row: col1=%d, col2=%s, col3=%s, col4=%s, col5=%v, col6=%v\n", col1, col2, col3, col4, col5, col6)
}

这样在请求 databend-query 的时候,就不用再每次都写一遍 http 请求/解析的代码啦。

bendsql 尝鲜 go driver

Go driver release 后马上就迎来了第一个用户(小白鼠) - bendsql。bendsql 中有个命令用来执行 SQL 语句, bendsql query "select * from table",所以我先将这里面请求 databend-query 的代码都换成了 go driver - https://github.com/databendcloud/bendsql/pull/22,可以看到删掉了不少代码,清晰了不少。接下来要在其他项目中去检验了。

来看看效果:

本周 kubectl-kruise 插件迎来了一次更新,包含了两个 bug-fix 和新的 feature:

🐛 Bug fix:

🚀 Feat:

好了,以上。


-------------The End-------------

cloud sjhan wechat

subscribe to my blog by scanning my public wechat account

0%


文章来源: https://cloudsjhan.github.io/2022/10/21/2022-43-Open-source-weekly-report/
如有侵权请联系:admin#unsafe.sh