1
0
mirror of https://github.com/uptrace/go-clickhouse.git synced 2025-06-08 23:26:11 +02:00

chore: improve auto-create database

This commit is contained in:
Vladimir Mihailenco 2023-05-19 09:30:07 +03:00
parent ad9e630abf
commit c0e67d2ec4
2 changed files with 13 additions and 1 deletions

View File

@ -29,6 +29,7 @@ type Config struct {
User string
Password string
Database string
Cluster string
DialTimeout time.Duration
TLSConfig *tls.Config
@ -151,6 +152,12 @@ func WithDatabase(database string) Option {
}
}
func WithCluster(cluster string) Option {
return func(db *DB) {
db.conf.Cluster = cluster
}
}
// WithDialTimeout configures dial timeout for establishing new connections.
// Default is 5 seconds.
func WithDialTimeout(timeout time.Duration) Option {

View File

@ -130,10 +130,15 @@ func (db *DB) autoCreateDatabase() {
conf := db.conf.clone()
conf.Database = ""
query := "CREATE DATABASE IF NOT EXISTS ?"
if conf.Cluster != "" {
query += " ON CLUSTER ?"
}
tmp := newDB(conf)
defer tmp.Close()
if _, err := tmp.Exec("CREATE DATABASE IF NOT EXISTS ?", Ident(db.conf.Database)); err != nil {
if _, err := tmp.Exec(query, Ident(db.conf.Database), Ident(db.conf.Cluster)); err != nil {
internal.Logger.Printf("create database %q failed: %s", db.conf.Database, err)
}
}