mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-30 14:01:02 +00:00 
			
		
		
		
	
					parent
					
						
							
								a8c024043c
							
						
					
				
			
			
				commit
				
					
						f8882f4fa9
					
				
			
		
					 6 changed files with 61 additions and 11 deletions
				
			
		
							
								
								
									
										3
									
								
								vendor/github.com/go-xorm/xorm/dialect_mssql.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/go-xorm/xorm/dialect_mssql.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -254,6 +254,9 @@ func (db *mssql) SqlType(c *core.Column) string { | |||
| 	case core.TinyInt: | ||||
| 		res = core.TinyInt | ||||
| 		c.Length = 0 | ||||
| 	case core.BigInt: | ||||
| 		res = core.BigInt | ||||
| 		c.Length = 0 | ||||
| 	default: | ||||
| 		res = t | ||||
| 	} | ||||
|  |  | |||
							
								
								
									
										8
									
								
								vendor/github.com/go-xorm/xorm/session_insert.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/go-xorm/xorm/session_insert.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -25,6 +25,12 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) { | |||
| 		defer session.Close() | ||||
| 	} | ||||
| 
 | ||||
| 	session.autoResetStatement = false | ||||
| 	defer func() { | ||||
| 		session.autoResetStatement = true | ||||
| 		session.resetStatement() | ||||
| 	}() | ||||
| 
 | ||||
| 	for _, bean := range beans { | ||||
| 		switch bean.(type) { | ||||
| 		case map[string]interface{}: | ||||
|  | @ -35,7 +41,6 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) { | |||
| 			affected += cnt | ||||
| 		case []map[string]interface{}: | ||||
| 			s := bean.([]map[string]interface{}) | ||||
| 			session.autoResetStatement = false | ||||
| 			for i := 0; i < len(s); i++ { | ||||
| 				cnt, err := session.insertMapInterface(s[i]) | ||||
| 				if err != nil { | ||||
|  | @ -51,7 +56,6 @@ func (session *Session) Insert(beans ...interface{}) (int64, error) { | |||
| 			affected += cnt | ||||
| 		case []map[string]string: | ||||
| 			s := bean.([]map[string]string) | ||||
| 			session.autoResetStatement = false | ||||
| 			for i := 0; i < len(s); i++ { | ||||
| 				cnt, err := session.insertMapString(s[i]) | ||||
| 				if err != nil { | ||||
|  |  | |||
							
								
								
									
										53
									
								
								vendor/github.com/go-xorm/xorm/statement_args.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								vendor/github.com/go-xorm/xorm/statement_args.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -6,17 +6,60 @@ package xorm | |||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"reflect" | ||||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"xorm.io/builder" | ||||
| 	"xorm.io/core" | ||||
| ) | ||||
| 
 | ||||
| func quoteNeeded(a interface{}) bool { | ||||
| 	switch a.(type) { | ||||
| 	case int, int8, int16, int32, int64: | ||||
| 		return false | ||||
| 	case uint, uint8, uint16, uint32, uint64: | ||||
| 		return false | ||||
| 	case float32, float64: | ||||
| 		return false | ||||
| 	case bool: | ||||
| 		return false | ||||
| 	case string: | ||||
| 		return true | ||||
| 	case time.Time, *time.Time: | ||||
| 		return true | ||||
| 	case builder.Builder, *builder.Builder: | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	t := reflect.TypeOf(a) | ||||
| 	switch t.Kind() { | ||||
| 	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: | ||||
| 		return false | ||||
| 	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: | ||||
| 		return false | ||||
| 	case reflect.Float32, reflect.Float64: | ||||
| 		return false | ||||
| 	case reflect.Bool: | ||||
| 		return false | ||||
| 	case reflect.String: | ||||
| 		return true | ||||
| 	} | ||||
| 
 | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
| func convertArg(arg interface{}) string { | ||||
| 	if quoteNeeded(arg) { | ||||
| 		argv := fmt.Sprintf("%v", arg) | ||||
| 		return "'" + strings.Replace(argv, "'", "''", -1) + "'" | ||||
| 	} | ||||
| 
 | ||||
| 	return fmt.Sprintf("%v", arg) | ||||
| } | ||||
| 
 | ||||
| func (statement *Statement) writeArg(w *builder.BytesWriter, arg interface{}) error { | ||||
| 	switch argv := arg.(type) { | ||||
| 	case string: | ||||
| 		if _, err := w.WriteString("'" + argv + "'"); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	case bool: | ||||
| 		if statement.Engine.dialect.DBType() == core.MSSQL { | ||||
| 			if argv { | ||||
|  | @ -50,7 +93,7 @@ func (statement *Statement) writeArg(w *builder.BytesWriter, arg interface{}) er | |||
| 			return err | ||||
| 		} | ||||
| 	default: | ||||
| 		if _, err := w.WriteString(fmt.Sprintf("%v", argv)); err != nil { | ||||
| 		if _, err := w.WriteString(convertArg(arg)); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue