Add DBVersion
This commit is contained in:
parent
0907b7a7fd
commit
77a4ff63c5
|
@ -44,6 +44,7 @@ type Dialect interface {
|
||||||
URI() *URI
|
URI() *URI
|
||||||
SQLType(*schemas.Column) string
|
SQLType(*schemas.Column) string
|
||||||
FormatBytes(b []byte) string
|
FormatBytes(b []byte) string
|
||||||
|
Version(ctx context.Context, queryer core.Queryer) (string, error)
|
||||||
|
|
||||||
IsReserved(string) bool
|
IsReserved(string) bool
|
||||||
Quoter() schemas.Quoter
|
Quoter() schemas.Quoter
|
||||||
|
|
|
@ -253,6 +253,24 @@ func (db *mssql) SetParams(params map[string]string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *mssql) Version(ctx context.Context, queryer core.Queryer) (string, error) {
|
||||||
|
rows, err := queryer.QueryContext(ctx, "SELECT @@VERSION")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var version string
|
||||||
|
if !rows.Next() {
|
||||||
|
return "", errors.New("Unknow version")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Scan(&version); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *mssql) SQLType(c *schemas.Column) string {
|
func (db *mssql) SQLType(c *schemas.Column) string {
|
||||||
var res string
|
var res string
|
||||||
switch t := c.SQLType.Name; t {
|
switch t := c.SQLType.Name; t {
|
||||||
|
|
|
@ -188,6 +188,24 @@ func (db *mysql) Init(uri *URI) error {
|
||||||
return db.Base.Init(db, uri)
|
return db.Base.Init(db, uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *mysql) Version(ctx context.Context, queryer core.Queryer) (string, error) {
|
||||||
|
rows, err := queryer.QueryContext(ctx, "SELECT VERSION()")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var version string
|
||||||
|
if !rows.Next() {
|
||||||
|
return "", errors.New("Unknow version")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Scan(&version); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *mysql) SetParams(params map[string]string) {
|
func (db *mysql) SetParams(params map[string]string) {
|
||||||
rowFormat, ok := params["rowFormat"]
|
rowFormat, ok := params["rowFormat"]
|
||||||
if ok {
|
if ok {
|
||||||
|
|
|
@ -515,6 +515,24 @@ func (db *oracle) Init(uri *URI) error {
|
||||||
return db.Base.Init(db, uri)
|
return db.Base.Init(db, uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *oracle) Version(ctx context.Context, queryer core.Queryer) (string, error) {
|
||||||
|
rows, err := queryer.QueryContext(ctx, "select * from v$version where banner like 'Oracle%'")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var version string
|
||||||
|
if !rows.Next() {
|
||||||
|
return "", errors.New("Unknow version")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Scan(&version); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *oracle) SQLType(c *schemas.Column) string {
|
func (db *oracle) SQLType(c *schemas.Column) string {
|
||||||
var res string
|
var res string
|
||||||
switch t := c.SQLType.Name; t {
|
switch t := c.SQLType.Name; t {
|
||||||
|
|
|
@ -788,6 +788,24 @@ func (db *postgres) Init(uri *URI) error {
|
||||||
return db.Base.Init(db, uri)
|
return db.Base.Init(db, uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *postgres) Version(ctx context.Context, queryer core.Queryer) (string, error) {
|
||||||
|
rows, err := queryer.QueryContext(ctx, "SELECT version()")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var version string
|
||||||
|
if !rows.Next() {
|
||||||
|
return "", errors.New("Unknow version")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Scan(&version); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *postgres) getSchema() string {
|
func (db *postgres) getSchema() string {
|
||||||
if db.uri.Schema != "" {
|
if db.uri.Schema != "" {
|
||||||
return db.uri.Schema
|
return db.uri.Schema
|
||||||
|
|
|
@ -160,6 +160,24 @@ func (db *sqlite3) Init(uri *URI) error {
|
||||||
return db.Base.Init(db, uri)
|
return db.Base.Init(db, uri)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *sqlite3) Version(ctx context.Context, queryer core.Queryer) (string, error) {
|
||||||
|
rows, err := queryer.QueryContext(ctx, "SELECT sqlite_version()")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
var version string
|
||||||
|
if !rows.Next() {
|
||||||
|
return "", errors.New("Unknow version")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Scan(&version); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *sqlite3) SetQuotePolicy(quotePolicy QuotePolicy) {
|
func (db *sqlite3) SetQuotePolicy(quotePolicy QuotePolicy) {
|
||||||
switch quotePolicy {
|
switch quotePolicy {
|
||||||
case QuotePolicyNone:
|
case QuotePolicyNone:
|
||||||
|
|
12
engine.go
12
engine.go
|
@ -925,15 +925,9 @@ func (engine *Engine) Having(conditions string) *Session {
|
||||||
return session.Having(conditions)
|
return session.Having(conditions)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Table table struct
|
// DBVersion returns the database version
|
||||||
type Table struct {
|
func (engine *Engine) DBVersion() (string, error) {
|
||||||
*schemas.Table
|
return engine.dialect.Version(engine.defaultContext, engine.db)
|
||||||
Name string
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsValid if table is valid
|
|
||||||
func (t *Table) IsValid() bool {
|
|
||||||
return t.Table != nil && len(t.Name) > 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TableInfo get table info according to bean's content
|
// TableInfo get table info according to bean's content
|
||||||
|
|
|
@ -200,3 +200,12 @@ func TestImport(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NoError(t, sess.Commit())
|
assert.NoError(t, sess.Commit())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDBVersion(t *testing.T) {
|
||||||
|
assert.NoError(t, PrepareEngine())
|
||||||
|
|
||||||
|
version, err := testEngine.DBVersion()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
fmt.Println(testEngine.Dialect().URI().DBType, "version", version)
|
||||||
|
}
|
||||||
|
|
|
@ -79,6 +79,7 @@ type EngineInterface interface {
|
||||||
|
|
||||||
Before(func(interface{})) *Session
|
Before(func(interface{})) *Session
|
||||||
Charset(charset string) *Session
|
Charset(charset string) *Session
|
||||||
|
DBVersion() (string, error)
|
||||||
ClearCache(...interface{}) error
|
ClearCache(...interface{}) error
|
||||||
Context(context.Context) *Session
|
Context(context.Context) *Session
|
||||||
CreateTables(...interface{}) error
|
CreateTables(...interface{}) error
|
||||||
|
|
Loading…
Reference in New Issue