improve clickhouse driver

This commit is contained in:
daguang
2022-02-24 21:06:26 +08:00
parent a6bbb8424c
commit 5e3c0bd9aa
2 changed files with 17 additions and 9 deletions

View File

@ -65,19 +65,17 @@ func (d *Driver) Open(config *gdb.ConfigNode) (*sql.DB, error) {
source string
driver = "clickhouse"
)
if config.Pass != "" {
if config.Link != "" {
source = config.Link
} else if config.Pass != "" {
source = fmt.Sprintf(
"clickhouse://%s:%s@%s:%s/%s",
config.User, config.Pass, config.Host, config.Port, config.Name)
"clickhouse://%s:%s@%s:%s/%s?charset=%s&debug=%s",
config.User, config.Pass, config.Host, config.Port, config.Name, config.Charset, gconv.String(config.Debug))
} else {
source = fmt.Sprintf(
"clickhouse://%s@%s:%s/%s",
config.User, config.Host, config.Port, config.Name)
"clickhouse://%s@%s:%s/%s?charset=%s&debug=%s",
config.User, config.Host, config.Port, config.Name, config.Charset, gconv.String(config.Debug))
}
source += fmt.Sprintf(
"?charset=%s&debug=%s",
config.Charset, gconv.String(config.Debug),
)
db, err := sql.Open(driver, source)
if err != nil {
return nil, err

View File

@ -242,3 +242,13 @@ func TestDriver_TableFields(t *testing.T) {
gtest.AssertEQ(len(field), 4)
gtest.AssertNQ(field, nil)
}
func TestDriver_OpenLink(t *testing.T) {
connect, err := gdb.New(gdb.ConfigNode{
Link: "clickhouse://default@127.0.0.1:9000/default?dial_timeout=200ms&max_execution_time=60&skip_verify=true&secure=false&compress=true",
Type: "clickhouse",
})
gtest.AssertNil(err)
gtest.AssertNE(connect, nil)
gtest.AssertNil(connect.PingMaster())
}