From a7f6aa92d3e387a65a636f24bbbd5d94520c28dd Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 27 Jul 2013 21:59:11 +0800 Subject: [PATCH] bug fix --- session.go | 14 ++++++++++---- statement.go | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/session.go b/session.go index f68257ff..41f41ab2 100644 --- a/session.go +++ b/session.go @@ -337,15 +337,21 @@ func (session *Session) CreateTable(bean interface{}) error { sql := statement.genCreateSQL() _, err := session.Exec(sql) if err == nil { - sql = statement.genIndexSQL() - if len(sql) > 0 { + sqls := statement.genIndexSQL() + for _, sql := range sqls { _, err = session.Exec(sql) + if err != nil { + return err + } } } if err == nil { - sql = statement.genUniqueSQL() - if len(sql) > 0 { + sqls := statement.genUniqueSQL() + for _, sql := range sqls { _, err = session.Exec(sql) + if err != nil { + return err + } } } return err diff --git a/statement.go b/statement.go index 7fc28885..aa1cd510 100644 --- a/statement.go +++ b/statement.go @@ -241,22 +241,24 @@ func (statement *Statement) genCreateSQL() string { return sql } -func (statement *Statement) genIndexSQL() string { - var sql string = "" +func (statement *Statement) genIndexSQL() []string { + var sqls []string = make([]string, 0) for indexName, cols := range statement.RefTable.Indexes { - sql += fmt.Sprintf("CREATE INDEX IDX_%v_%v ON %v (%v);", statement.TableName(), indexName, + sql := fmt.Sprintf("CREATE INDEX IDX_%v_%v ON %v (%v);", statement.TableName(), indexName, statement.TableName(), strings.Join(cols, ",")) + sqls = append(sqls, sql) } - return sql + return sqls } -func (statement *Statement) genUniqueSQL() string { - var sql string = "" +func (statement *Statement) genUniqueSQL() []string { + var sqls []string = make([]string, 0) for indexName, cols := range statement.RefTable.Uniques { - sql += fmt.Sprintf("CREATE UNIQUE INDEX UQE_%v_%v ON %v (%v);", statement.TableName(), indexName, + sql := fmt.Sprintf("CREATE UNIQUE INDEX UQE_%v_%v ON %v (%v);", statement.TableName(), indexName, statement.TableName(), strings.Join(cols, ",")) + sqls = append(sqls, sql) } - return sql + return sqls } func (statement *Statement) genDropSQL() string {