mirror of
https://gitee.com/johng/gf.git
synced 2024-12-03 12:47:50 +08:00
42 lines
1021 B
Go
42 lines
1021 B
Go
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file,
|
|
// You can obtain one at https://github.com/gogf/gf.
|
|
|
|
package clickhouse
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
|
|
"github.com/ClickHouse/clickhouse-go/v2"
|
|
)
|
|
|
|
// PingMaster pings the master node to check authentication or keeps the connection alive.
|
|
func (d *Driver) PingMaster() error {
|
|
conn, err := d.Master()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return d.ping(conn)
|
|
}
|
|
|
|
// PingSlave pings the slave node to check authentication or keeps the connection alive.
|
|
func (d *Driver) PingSlave() error {
|
|
conn, err := d.Slave()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return d.ping(conn)
|
|
}
|
|
|
|
// ping Returns the Clickhouse specific error.
|
|
func (d *Driver) ping(conn *sql.DB) error {
|
|
err := conn.Ping()
|
|
if exception, ok := err.(*clickhouse.Exception); ok {
|
|
return fmt.Errorf("[%d]%s", exception.Code, exception.Message)
|
|
}
|
|
return err
|
|
}
|