mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	fix MSSQL bug on org (#3405)
This commit is contained in:
		
							
								
								
									
										96
									
								
								vendor/github.com/go-xorm/xorm/engine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								vendor/github.com/go-xorm/xorm/engine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -47,6 +47,23 @@ type Engine struct {
 | 
			
		||||
	disableGlobalCache bool
 | 
			
		||||
 | 
			
		||||
	tagHandlers map[string]tagHandler
 | 
			
		||||
 | 
			
		||||
	engineGroup *EngineGroup
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BufferSize sets buffer size for iterate
 | 
			
		||||
func (engine *Engine) BufferSize(size int) *Session {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	session.isAutoClose = true
 | 
			
		||||
	return session.BufferSize(size)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CondDeleted returns the conditions whether a record is soft deleted.
 | 
			
		||||
func (engine *Engine) CondDeleted(colName string) builder.Cond {
 | 
			
		||||
	if engine.dialect.DBType() == core.MSSQL {
 | 
			
		||||
		return builder.IsNull{colName}
 | 
			
		||||
	}
 | 
			
		||||
	return builder.IsNull{colName}.Or(builder.Eq{colName: zeroTime1})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ShowSQL show SQL statement or not on logger if log level is great than INFO
 | 
			
		||||
@@ -79,6 +96,11 @@ func (engine *Engine) SetLogger(logger core.ILogger) {
 | 
			
		||||
	engine.dialect.SetLogger(logger)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetLogLevel sets the logger level
 | 
			
		||||
func (engine *Engine) SetLogLevel(level core.LogLevel) {
 | 
			
		||||
	engine.logger.SetLevel(level)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetDisableGlobalCache disable global cache or not
 | 
			
		||||
func (engine *Engine) SetDisableGlobalCache(disable bool) {
 | 
			
		||||
	if engine.disableGlobalCache != disable {
 | 
			
		||||
@@ -201,6 +223,11 @@ func (engine *Engine) SetDefaultCacher(cacher core.Cacher) {
 | 
			
		||||
	engine.Cacher = cacher
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetDefaultCacher returns the default cacher
 | 
			
		||||
func (engine *Engine) GetDefaultCacher() core.Cacher {
 | 
			
		||||
	return engine.Cacher
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NoCache If you has set default cacher, and you want temporilly stop use cache,
 | 
			
		||||
// you can use NoCache()
 | 
			
		||||
func (engine *Engine) NoCache() *Session {
 | 
			
		||||
@@ -736,6 +763,13 @@ func (engine *Engine) OrderBy(order string) *Session {
 | 
			
		||||
	return session.OrderBy(order)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Prepare enables prepare statement
 | 
			
		||||
func (engine *Engine) Prepare() *Session {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	session.isAutoClose = true
 | 
			
		||||
	return session.Prepare()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Join the join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
 | 
			
		||||
func (engine *Engine) Join(joinOperator string, tablename interface{}, condition string, args ...interface{}) *Session {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
@@ -757,7 +791,8 @@ func (engine *Engine) Having(conditions string) *Session {
 | 
			
		||||
	return session.Having(conditions)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (engine *Engine) unMapType(t reflect.Type) {
 | 
			
		||||
// UnMapType removes the datbase mapper of a type
 | 
			
		||||
func (engine *Engine) UnMapType(t reflect.Type) {
 | 
			
		||||
	engine.mutex.Lock()
 | 
			
		||||
	defer engine.mutex.Unlock()
 | 
			
		||||
	delete(engine.Tables, t)
 | 
			
		||||
@@ -914,7 +949,7 @@ func (engine *Engine) mapType(v reflect.Value) (*core.Table, error) {
 | 
			
		||||
					}
 | 
			
		||||
					if pStart > -1 {
 | 
			
		||||
						if !strings.HasSuffix(k, ")") {
 | 
			
		||||
							return nil, errors.New("cannot match ) charactor")
 | 
			
		||||
							return nil, fmt.Errorf("field %s tag %s cannot match ) charactor", col.FieldName, key)
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						ctx.tagName = k[:pStart]
 | 
			
		||||
@@ -1341,24 +1376,24 @@ func (engine *Engine) Exec(sql string, args ...interface{}) (sql.Result, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Query a raw sql and return records as []map[string][]byte
 | 
			
		||||
func (engine *Engine) Query(sql string, paramStr ...interface{}) (resultsSlice []map[string][]byte, err error) {
 | 
			
		||||
func (engine *Engine) Query(sqlorArgs ...interface{}) (resultsSlice []map[string][]byte, err error) {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	defer session.Close()
 | 
			
		||||
	return session.Query(sql, paramStr...)
 | 
			
		||||
	return session.Query(sqlorArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// QueryString runs a raw sql and return records as []map[string]string
 | 
			
		||||
func (engine *Engine) QueryString(sqlStr string, args ...interface{}) ([]map[string]string, error) {
 | 
			
		||||
func (engine *Engine) QueryString(sqlorArgs ...interface{}) ([]map[string]string, error) {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	defer session.Close()
 | 
			
		||||
	return session.QueryString(sqlStr, args...)
 | 
			
		||||
	return session.QueryString(sqlorArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// QueryInterface runs a raw sql and return records as []map[string]interface{}
 | 
			
		||||
func (engine *Engine) QueryInterface(sqlStr string, args ...interface{}) ([]map[string]interface{}, error) {
 | 
			
		||||
func (engine *Engine) QueryInterface(sqlorArgs ...interface{}) ([]map[string]interface{}, error) {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	defer session.Close()
 | 
			
		||||
	return session.QueryInterface(sqlStr, args...)
 | 
			
		||||
	return session.QueryInterface(sqlorArgs...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Insert one or more records
 | 
			
		||||
@@ -1564,24 +1599,39 @@ func (engine *Engine) formatTime(sqlTypeName string, t time.Time) (v interface{}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetColumnMapper returns the column name mapper
 | 
			
		||||
func (engine *Engine) GetColumnMapper() core.IMapper {
 | 
			
		||||
	return engine.ColumnMapper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetTableMapper returns the table name mapper
 | 
			
		||||
func (engine *Engine) GetTableMapper() core.IMapper {
 | 
			
		||||
	return engine.TableMapper
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetTZLocation returns time zone of the application
 | 
			
		||||
func (engine *Engine) GetTZLocation() *time.Location {
 | 
			
		||||
	return engine.TZLocation
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetTZLocation sets time zone of the application
 | 
			
		||||
func (engine *Engine) SetTZLocation(tz *time.Location) {
 | 
			
		||||
	engine.TZLocation = tz
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetTZDatabase returns time zone of the database
 | 
			
		||||
func (engine *Engine) GetTZDatabase() *time.Location {
 | 
			
		||||
	return engine.DatabaseTZ
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SetTZDatabase sets time zone of the database
 | 
			
		||||
func (engine *Engine) SetTZDatabase(tz *time.Location) {
 | 
			
		||||
	engine.DatabaseTZ = tz
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Unscoped always disable struct tag "deleted"
 | 
			
		||||
func (engine *Engine) Unscoped() *Session {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	session.isAutoClose = true
 | 
			
		||||
	return session.Unscoped()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CondDeleted returns the conditions whether a record is soft deleted.
 | 
			
		||||
func (engine *Engine) CondDeleted(colName string) builder.Cond {
 | 
			
		||||
	if engine.dialect.DBType() == core.MSSQL {
 | 
			
		||||
		return builder.IsNull{colName}
 | 
			
		||||
	}
 | 
			
		||||
	return builder.IsNull{colName}.Or(builder.Eq{colName: zeroTime1})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// BufferSize sets buffer size for iterate
 | 
			
		||||
func (engine *Engine) BufferSize(size int) *Session {
 | 
			
		||||
	session := engine.NewSession()
 | 
			
		||||
	session.isAutoClose = true
 | 
			
		||||
	return session.BufferSize(size)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user