summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/go-xorm/xorm/engine.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-10-03 04:47:20 +0800
committertechknowlogick <techknowlogick@gitea.io>2019-10-02 16:47:20 -0400
commitc9f819eae0ac9cdce82e25abe25c067b1927e923 (patch)
tree70a76fc63fe980eea421a4e0c038c58ec2f56ff9 /vendor/github.com/go-xorm/xorm/engine.go
parent3be43dc5e3db1edb2587fce91ee220397493532c (diff)
downloadgitea-c9f819eae0ac9cdce82e25abe25c067b1927e923.tar.gz
gitea-c9f819eae0ac9cdce82e25abe25c067b1927e923.zip
Upgrade xorm to v0.7.9 to fix some bugs (#8354)
* upgrade xorm to v0.7.9 to fix some bugs * upgrade xormstore to v1.3.1
Diffstat (limited to 'vendor/github.com/go-xorm/xorm/engine.go')
-rw-r--r--vendor/github.com/go-xorm/xorm/engine.go58
1 files changed, 36 insertions, 22 deletions
diff --git a/vendor/github.com/go-xorm/xorm/engine.go b/vendor/github.com/go-xorm/xorm/engine.go
index 649fd1e306..4ed0f77a92 100644
--- a/vendor/github.com/go-xorm/xorm/engine.go
+++ b/vendor/github.com/go-xorm/xorm/engine.go
@@ -377,6 +377,32 @@ func (engine *Engine) NoAutoCondition(no ...bool) *Session {
return session.NoAutoCondition(no...)
}
+func (engine *Engine) loadTableInfo(table *core.Table) error {
+ colSeq, cols, err := engine.dialect.GetColumns(table.Name)
+ if err != nil {
+ return err
+ }
+ for _, name := range colSeq {
+ table.AddColumn(cols[name])
+ }
+ indexes, err := engine.dialect.GetIndexes(table.Name)
+ if err != nil {
+ return err
+ }
+ table.Indexes = indexes
+
+ for _, index := range indexes {
+ for _, name := range index.Cols {
+ if col := table.GetColumn(name); col != nil {
+ col.Indexes[index.Name] = index.Type
+ } else {
+ return fmt.Errorf("Unknown col %s in index %v of table %v, columns %v", name, index.Name, table.Name, table.ColumnsSeq())
+ }
+ }
+ }
+ return nil
+}
+
// DBMetas Retrieve all tables, columns, indexes' informations from database.
func (engine *Engine) DBMetas() ([]*core.Table, error) {
tables, err := engine.dialect.GetTables()
@@ -385,28 +411,9 @@ func (engine *Engine) DBMetas() ([]*core.Table, error) {
}
for _, table := range tables {
- colSeq, cols, err := engine.dialect.GetColumns(table.Name)
- if err != nil {
- return nil, err
- }
- for _, name := range colSeq {
- table.AddColumn(cols[name])
- }
- indexes, err := engine.dialect.GetIndexes(table.Name)
- if err != nil {
+ if err = engine.loadTableInfo(table); err != nil {
return nil, err
}
- table.Indexes = indexes
-
- for _, index := range indexes {
- for _, name := range index.Cols {
- if col := table.GetColumn(name); col != nil {
- col.Indexes[index.Name] = index.Type
- } else {
- return nil, fmt.Errorf("Unknown col %s in index %v of table %v, columns %v", name, index.Name, table.Name, table.ColumnsSeq())
- }
- }
- }
}
return tables, nil
}
@@ -907,8 +914,15 @@ func (engine *Engine) mapType(v reflect.Value) (*core.Table, error) {
fieldType := fieldValue.Type()
if ormTagStr != "" {
- col = &core.Column{FieldName: t.Field(i).Name, Nullable: true, IsPrimaryKey: false,
- IsAutoIncrement: false, MapType: core.TWOSIDES, Indexes: make(map[string]int)}
+ col = &core.Column{
+ FieldName: t.Field(i).Name,
+ Nullable: true,
+ IsPrimaryKey: false,
+ IsAutoIncrement: false,
+ MapType: core.TWOSIDES,
+ Indexes: make(map[string]int),
+ DefaultIsEmpty: true,
+ }
tags := splitTag(ormTagStr)
if len(tags) > 0 {