feat: 新增 DuckDB 方言支持及 SQLite3 自动注册 IF 函数
- 新增 dialect/duckdb 方言,支持 DuckDB SQL 语法 - 新增 schema/dialect/duckdb DDL 操作支持 - dialect/sqlite3: 注册 sqlite3_with_if 驱动,连接时自动注册 IF() 函数 - engine: MakeConnection 对 sqlite3 自动使用带 IF 支持的驱动 - engine: 新增 DBConfig DuckDB 配置项及相关 Option 函数 - 统一各方言测试引用路径
This commit is contained in:
+6
-7
@@ -2,15 +2,11 @@ package engine
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
_ "git.fsdpf.net/go/db/dialect/mysql"
|
||||
_ "git.fsdpf.net/go/db/dialect/postgres"
|
||||
_ "git.fsdpf.net/go/db/dialect/sqlite3"
|
||||
_ "git.fsdpf.net/go/db/dialect/sqlserver"
|
||||
|
||||
"git.fsdpf.net/go/db"
|
||||
"git.fsdpf.net/go/db/internal/errors"
|
||||
sqlite3dialect "git.fsdpf.net/go/db/dialect/sqlite3"
|
||||
)
|
||||
|
||||
type Engine struct {
|
||||
@@ -47,16 +43,19 @@ func (e Engine) Connection(name string) *db.Database {
|
||||
func (e Engine) MakeConnection(cfg DBConfig) (db *sql.DB) {
|
||||
dsn := cfg.ToDSN()
|
||||
|
||||
driverName := cfg.Driver
|
||||
switch cfg.Driver {
|
||||
case "mysql":
|
||||
case "sqlite3":
|
||||
driverName = sqlite3dialect.DriverWithIF
|
||||
case "sqlserver":
|
||||
case "postgres":
|
||||
case "duckdb":
|
||||
default:
|
||||
panic(fmt.Sprintf("Unsupported driver: %s", cfg.Driver))
|
||||
}
|
||||
|
||||
db, err := sql.Open(cfg.Driver, dsn)
|
||||
db, err := sql.Open(driverName, dsn)
|
||||
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
||||
Reference in New Issue
Block a user