mysql_fdw 集成go-mysql-server 开发的mysql server
早期go-mysql-server golang 包对于mysql 的支持有限,但是dolthub团队扩展之后我们可以集成了
以下是一个简单的demo测试
环境准备
- docker-compose
mysql_fdw 环境
version: "3"
services:
pg:
image: dalongrong/pgspider:mysql
ports:
- "5432:5432"
environment:
- "POSTGRES_PASSWORD=dalong"
- mysql server
go.mod
module mysql-app
go 1.15
require github.com/dolthub/go-mysql-server v0.6.1-0.20201113020219-f934e2bcb07f
main.go
package main
import (
sqle "github.com/dolthub/go-mysql-server"
"github.com/dolthub/go-mysql-server/auth"
"github.com/dolthub/go-mysql-server/memory"
"github.com/dolthub/go-mysql-server/server"
"github.com/dolthub/go-mysql-server/sql"
)
func main() {
driver := sqle.NewDefault()
driver.AddDatabase(createTestDatabase())
config := server.Config{
Protocol: "tcp",
Address: "0.0.0.0:3306",
Auth: auth.NewNativeSingle("root", "dalong", auth.AllPermissions),
}
s, err := server.NewDefaultServer(config, driver)
if err != nil {
panic(err)
}
s.Start()
}
func createTestDatabase() *memory.Database {
const (
dbName = "test"
tableName = "mytable"
)
db := memory.NewDatabase(dbName)
table := memory.NewTable(tableName, sql.Schema{
{Name: "name", Type: sql.Text, Nullable: false, Source: tableName},
{Name: "email", Type: sql.Text, Nullable: false, Source: tableName},
})
db.AddTable(tableName, table)
ctx := sql.NewEmptyContext()
rows := []sql.Row{
sql.NewRow("John Doe", "john@doe.com"),
sql.NewRow("John Doe", "johnalt@doe.com"),
sql.NewRow("Jane Doe", "jane@doe.com"),
sql.NewRow("Evil Bob", "evilbob@gmail.com"),
}
for _, row := range rows {
table.Insert(ctx, row)
}
return db
}
运行
- 启动服务
docker-compose up -d
go run main.go
- 效果
pg
mysql
说明
以上只是一个简单的demo,实际上dolthub 团队扩展的go-mysql-server 支持的特性还是比较多的
参考资料
https://github.com/dolthub/go-mysql-server
https://github.com/EnterpriseDB/mysql_fdw
https://github.com/pgspider/pgspider
https://github.com/rongfengliang/pgspider-docker
https://hub.docker.com/repository/docker/dalongrong/pgspider
https://github.com/rongfengliang/go-mysql-server-mysql-fdw
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-11-22 cube.js 最近的一些更新
2018-11-22 续drone 1.0 新界面调整
2018-11-22 使用kompose 快速转换dokcer-compose 文件为k8s deploy 文件
2016-11-22 k8s DNS 服务发现的一个坑