diff --git a/client/dtmcli/dtmimp/types.go b/client/dtmcli/dtmimp/types.go index 827b1c1..a889d5f 100644 --- a/client/dtmcli/dtmimp/types.go +++ b/client/dtmcli/dtmimp/types.go @@ -22,4 +22,5 @@ type DBConf struct { User string `yaml:"User"` Password string `yaml:"Password"` Db string `yaml:"Db"` + Schema string `yaml:"Schema"` } diff --git a/client/dtmcli/dtmimp/utils.go b/client/dtmcli/dtmimp/utils.go index b6e45cb..3811523 100644 --- a/client/dtmcli/dtmimp/utils.go +++ b/client/dtmcli/dtmimp/utils.go @@ -216,8 +216,8 @@ func GetDsn(conf DBConf) string { dsn := map[string]string{ "mysql": fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=Local&interpolateParams=true", conf.User, conf.Password, host, conf.Port, conf.Db), - "postgres": fmt.Sprintf("host=%s user=%s password=%s dbname='%s' port=%d sslmode=disable", - host, conf.User, conf.Password, conf.Db, conf.Port), + "postgres": fmt.Sprintf("host=%s user=%s password=%s dbname='%s' search_path=%s port=%d sslmode=disable", + host, conf.User, conf.Password, conf.Db, conf.Schema, conf.Port), }[driver] PanicIf(dsn == "", fmt.Errorf("unknow driver: %s", driver)) return dsn diff --git a/conf.sample.yml b/conf.sample.yml index 5c2a8f7..259fa14 100644 --- a/conf.sample.yml +++ b/conf.sample.yml @@ -26,6 +26,8 @@ # User: 'postgres' # Password: 'mysecretpassword' # Port: '5432' +# Db: 'postgres' +# Schema: 'myschema' ### following config is for only Driver postgres/mysql # MaxOpenConns: 500 diff --git a/dtmsvr/config/config.go b/dtmsvr/config/config.go index 0ac3a86..aa2e1cb 100644 --- a/dtmsvr/config/config.go +++ b/dtmsvr/config/config.go @@ -54,6 +54,7 @@ type Store struct { User string `yaml:"User"` Password string `yaml:"Password"` Db string `yaml:"Db" default:"dtm"` + Schema string `yaml:"Schema" default:"public"` MaxOpenConns int64 `yaml:"MaxOpenConns" default:"500"` MaxIdleConns int64 `yaml:"MaxIdleConns" default:"500"` ConnMaxLifeTime int64 `yaml:"ConnMaxLifeTime" default:"5"` @@ -76,6 +77,7 @@ func (s *Store) GetDBConf() dtmcli.DBConf { User: s.User, Password: s.Password, Db: s.Db, + Schema: s.Schema, } } diff --git a/dtmsvr/config/config_test.go b/dtmsvr/config/config_test.go index f7ac1e8..84425dc 100644 --- a/dtmsvr/config/config_test.go +++ b/dtmsvr/config/config_test.go @@ -52,6 +52,11 @@ func TestCheckConfig(t *testing.T) { userExpect := errors.New("Db user not valid ") assert.Equal(t, userErr, userExpect) + conf.Store = Store{Driver: Postgres, Host: "127.0.0.1", Port: 8686, User: "postgres", Schema: ""} + schemaErr := checkConfig(&conf) + schemaExpect := errors.New("Postgres schema not valid") + assert.Equal(t, schemaErr, schemaExpect) + conf.Store = Store{Driver: Redis, Host: "", Port: 8686} assert.Equal(t, errors.New("Redis host not valid"), checkConfig(&conf)) diff --git a/dtmsvr/config/config_utils.go b/dtmsvr/config/config_utils.go index 8e5c011..3ebd3bc 100644 --- a/dtmsvr/config/config_utils.go +++ b/dtmsvr/config/config_utils.go @@ -78,6 +78,9 @@ func checkConfig(conf *Type) error { if conf.Store.User == "" { return errors.New("Db user not valid ") } + if conf.Store.Schema == "" { + return errors.New("Postgres schema not valid") + } case Redis: if conf.Store.Host == "" { return errors.New("Redis host not valid")