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:
@@ -0,0 +1,38 @@
|
||||
package duckdb
|
||||
|
||||
import (
|
||||
_ "github.com/marcboeker/go-duckdb"
|
||||
|
||||
"git.fsdpf.net/go/db"
|
||||
)
|
||||
|
||||
func DialectOptions() *db.SQLDialectOptions {
|
||||
do := db.DefaultDialectOptions()
|
||||
|
||||
// DuckDB uses PostgreSQL-style placeholders ($1, $2, etc.)
|
||||
do.PlaceHolderFragment = []byte("$")
|
||||
do.IncludePlaceholderNum = true
|
||||
|
||||
// DuckDB supports most PostgreSQL features
|
||||
do.SupportsReturn = true
|
||||
do.SupportsOrderByOnUpdate = false
|
||||
do.SupportsLimitOnUpdate = false
|
||||
do.SupportsOrderByOnDelete = false
|
||||
do.SupportsLimitOnDelete = false
|
||||
do.SupportsConflictUpdateWhere = true
|
||||
do.SupportsInsertIgnoreSyntax = false
|
||||
do.SupportsConflictTarget = true
|
||||
do.SupportsWithCTE = true
|
||||
do.SupportsWithCTERecursive = true
|
||||
do.SupportsDistinctOn = true
|
||||
do.SupportsWindowFunction = true
|
||||
|
||||
// Use double quotes for identifiers (PostgreSQL-style)
|
||||
do.QuoteRune = '"'
|
||||
|
||||
return do
|
||||
}
|
||||
|
||||
func init() {
|
||||
db.RegisterDialect("duckdb", DialectOptions())
|
||||
}
|
||||
Reference in New Issue
Block a user