From 5c116a34d6208696c2307e20a18d5ceda3061ccc Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 22 Apr 2016 21:43:22 +0800 Subject: [PATCH] bug fixed #379 --- VERSION | 2 +- doc.go | 18 ++++++++++-------- mssql_dialect.go | 4 ---- mymysql_driver.go | 4 ---- mysql_dialect.go | 4 ---- mysql_driver.go | 4 ---- oci8_driver.go | 4 ---- odbc_driver.go | 4 ---- oracle_dialect.go | 4 ---- postgres_dialect.go | 20 +++++++++++--------- pq_driver.go | 8 ++------ session.go | 4 ++-- statement.go | 4 ++-- xorm.go | 2 +- 14 files changed, 29 insertions(+), 57 deletions(-) diff --git a/VERSION b/VERSION index 9cb20167..ed14c179 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -xorm v0.5.3.0407 +xorm v0.5.4.0422 diff --git a/doc.go b/doc.go index 54ce2b98..e5c35c67 100644 --- a/doc.go +++ b/doc.go @@ -1,4 +1,4 @@ -// Copyright 2013 - 2015 The Xorm Authors. All rights reserved. +// Copyright 2013 - 2016 The XORM Authors. All rights reserved. // Use of this source code is governed by a BSD // license that can be found in the LICENSE file. @@ -129,26 +129,28 @@ Attention: the above 7 methods should be the last chainable method. 5. Sql, let you custom SQL - engine.Sql("select * from user").Find() + var users []User + engine.Sql("select * from user").Find(&users) 6. Cols, Omit, Distinct - engine.Cols("col1, col2").Find() + var users []*User + engine.Cols("col1, col2").Find(&users) // SELECT col1, col2 FROM user engine.Cols("col1", "col2").Where().Update(user) // UPDATE user set col1 = ?, col2 = ? Where ... - engine.Omit("col1").Find() + engine.Omit("col1").Find(&users) // SELECT col2, col3 FROM user - engine.Omit("col1").Insert() + engine.Omit("col1").Insert(&user) // INSERT INTO table (non-col1) VALUES () - engine.Distinct("col1").Find() + engine.Distinct("col1").Find(&users) // SELECT DISTINCT col1 FROM user 7. Join, GroupBy, Having - engine.GroupBy("name").Having("name='xlw'").Find() + engine.GroupBy("name").Having("name='xlw'").Find(&users) //SELECT * FROM user GROUP BY name HAVING name='xlw' - engine.Join("LEFT", "userdetail", "user.id=userdetail.id").Find() + engine.Join("LEFT", "userdetail", "user.id=userdetail.id").Find(&users) //SELECT * FROM user LEFT JOIN userdetail ON user.id=userdetail.id More usage, please visit http://xorm.io/docs diff --git a/mssql_dialect.go b/mssql_dialect.go index e738dc6c..adca5b5a 100644 --- a/mssql_dialect.go +++ b/mssql_dialect.go @@ -13,10 +13,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// RegisterDialect("mssql", &mssql{}) -// } - var ( mssqlReservedWords = map[string]bool{ "ADD": true, diff --git a/mymysql_driver.go b/mymysql_driver.go index 53094de9..ef3086a4 100644 --- a/mymysql_driver.go +++ b/mymysql_driver.go @@ -12,10 +12,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// core.RegisterDriver("mymysql", &mymysqlDriver{}) -// } - type mymysqlDriver struct { } diff --git a/mysql_dialect.go b/mysql_dialect.go index d7cb0cec..a9997f6a 100644 --- a/mysql_dialect.go +++ b/mysql_dialect.go @@ -15,10 +15,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// RegisterDialect("mysql", &mysql{}) -// } - var ( mysqlReservedWords = map[string]bool{ "ADD": true, diff --git a/mysql_driver.go b/mysql_driver.go index 872d854d..6ceeed58 100644 --- a/mysql_driver.go +++ b/mysql_driver.go @@ -11,10 +11,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// core.RegisterDriver("mysql", &mysqlDriver{}) -// } - type mysqlDriver struct { } diff --git a/oci8_driver.go b/oci8_driver.go index f16a2a37..ec5f2022 100644 --- a/oci8_driver.go +++ b/oci8_driver.go @@ -11,10 +11,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// core.RegisterDriver("oci8", &oci8Driver{}) -// } - type oci8Driver struct { } diff --git a/odbc_driver.go b/odbc_driver.go index 81b87fde..6770de60 100644 --- a/odbc_driver.go +++ b/odbc_driver.go @@ -11,10 +11,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// core.RegisterDriver("odbc", &odbcDriver{}) -// } - type odbcDriver struct { } diff --git a/oracle_dialect.go b/oracle_dialect.go index 8b28902f..6a767b7c 100644 --- a/oracle_dialect.go +++ b/oracle_dialect.go @@ -13,10 +13,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// RegisterDialect("oracle", &oracle{}) -// } - var ( oracleReservedWords = map[string]bool{ "ACCESS": true, diff --git a/postgres_dialect.go b/postgres_dialect.go index 61791e65..773de726 100644 --- a/postgres_dialect.go +++ b/postgres_dialect.go @@ -13,9 +13,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// RegisterDialect("postgres", &postgres{}) -// } // from http://www.postgresql.org/docs/current/static/sql-keywords-appendix.html var ( postgresReservedWords = map[string]bool{ @@ -913,7 +910,8 @@ func (db *postgres) IsColumnExist(tableName, colName string) (bool, error) { } func (db *postgres) GetColumns(tableName string) ([]string, map[string]*core.Column, error) { - args := []interface{}{tableName, db.URI().Schema} + // FIXME: the schema should be replaced by user custom's + args := []interface{}{tableName, "public"} s := `SELECT column_name, column_default, is_nullable, data_type, character_maximum_length, numeric_precision, numeric_precision_radix , CASE WHEN p.contype = 'p' THEN true ELSE false END AS primarykey, CASE WHEN p.contype = 'u' THEN true ELSE false END AS uniquekey @@ -986,11 +984,13 @@ WHERE c.relkind = 'r'::char AND c.relname = $1 AND s.table_schema = $2 AND f.att col.SQLType = core.SQLType{core.Bool, 0, 0} case "time without time zone": col.SQLType = core.SQLType{core.Time, 0, 0} + case "oid": + col.SQLType = core.SQLType{core.BigInt, 0, 0} default: col.SQLType = core.SQLType{strings.ToUpper(dataType), 0, 0} } if _, ok := core.SqlTypes[col.SQLType.Name]; !ok { - return nil, nil, errors.New(fmt.Sprintf("unkonw colType %v", dataType)) + return nil, nil, errors.New(fmt.Sprintf("unknow colType: %v", dataType)) } col.Length = maxLen @@ -1012,8 +1012,9 @@ WHERE c.relkind = 'r'::char AND c.relname = $1 AND s.table_schema = $2 AND f.att } func (db *postgres) GetTables() ([]*core.Table, error) { - args := []interface{}{} - s := fmt.Sprintf("SELECT tablename FROM pg_tables where schemaname = '%s'", db.Uri.Schema) + // FIXME: replace public to user customrize schema + args := []interface{}{"public"} + s := fmt.Sprintf("SELECT tablename FROM pg_tables WHERE schemaname = $1") db.LogSQL(s, args) rows, err := db.DB().Query(s, args...) @@ -1037,8 +1038,9 @@ func (db *postgres) GetTables() ([]*core.Table, error) { } func (db *postgres) GetIndexes(tableName string) (map[string]*core.Index, error) { - args := []interface{}{tableName} - s := fmt.Sprintf("SELECT indexname, indexdef FROM pg_indexes WHERE schemaname='%s' AND tablename=$1", db.URI().Schema) + // FIXME: replace the public schema to user specify schema + args := []interface{}{"public", tableName} + s := fmt.Sprintf("SELECT indexname, indexdef FROM pg_indexes WHERE schemaname=$1 AND tablename=$2") db.LogSQL(s, args) rows, err := db.DB().Query(s, args...) diff --git a/pq_driver.go b/pq_driver.go index 88500384..5d608f25 100644 --- a/pq_driver.go +++ b/pq_driver.go @@ -14,10 +14,6 @@ import ( "github.com/go-xorm/core" ) -// func init() { -// core.RegisterDriver("postgres", &pqDriver{}) -// } - type pqDriver struct { } @@ -115,9 +111,9 @@ func (p *pqDriver) Parse(driverName, dataSourceName string) (*core.Uri, error) { if db.DbName == "" { return nil, errors.New("dbname is empty") } - db.Schema = o.Get("schema") + /*db.Schema = o.Get("schema") if len(db.Schema) == 0 { db.Schema = "public" - } + }*/ return db, nil } diff --git a/session.go b/session.go index 74572239..8d1a7cee 100644 --- a/session.go +++ b/session.go @@ -3888,9 +3888,9 @@ func (session *Session) tbName(table *core.Table) string { tbName = session.Statement.AltTableName } - if len(session.Engine.dialect.URI().Schema) > 0 { + /*if len(session.Engine.dialect.URI().Schema) > 0 { return session.Engine.dialect.URI().Schema + "." + tbName - } + }*/ return tbName } diff --git a/statement.go b/statement.go index 2e84cc5c..66151ebe 100644 --- a/statement.go +++ b/statement.go @@ -674,10 +674,10 @@ func (statement *Statement) TableName() string { } if statement.RefTable != nil { - schema := statement.Engine.dialect.URI().Schema + /*schema := statement.Engine.dialect.URI().Schema if len(schema) > 0 { return schema + "." + statement.RefTable.Name - } + }*/ return statement.RefTable.Name } return "" diff --git a/xorm.go b/xorm.go index 317eddef..2235472d 100644 --- a/xorm.go +++ b/xorm.go @@ -17,7 +17,7 @@ import ( const ( // Version show the xorm's version - Version string = "0.5.3.0407" + Version string = "0.5.4.0422" ) func regDrvsNDialects() bool {