use traditional positional parameters on insert into select
This commit is contained in:
parent
1706dae164
commit
ecda83fa14
|
@ -943,6 +943,20 @@ func TestInsertWhere(t *testing.T) {
|
||||||
assert.EqualValues(t, 5, j5.Index)
|
assert.EqualValues(t, 5, j5.Index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInsertSelectPositionalParameter(t *testing.T) {
|
||||||
|
assert.NoError(t, prepareEngine())
|
||||||
|
|
||||||
|
type InsertSelect struct {
|
||||||
|
Id int64
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
assertSync(t, new(InsertSelect))
|
||||||
|
|
||||||
|
_, err := testEngine.Exec("INSERT INTO insert_select (name) SELECT ?", "xlw")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
type NightlyRate struct {
|
type NightlyRate struct {
|
||||||
ID int64 `xorm:"'id' not null pk BIGINT(20)" json:"id"`
|
ID int64 `xorm:"'id' not null pk BIGINT(20)" json:"id"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,8 @@ func convertArg(arg interface{}, convertFunc func(string) string) string {
|
||||||
return fmt.Sprintf("%v", arg)
|
return fmt.Sprintf("%v", arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const insertSelectPlaceHolder = true
|
||||||
|
|
||||||
func (statement *Statement) writeArg(w *builder.BytesWriter, arg interface{}) error {
|
func (statement *Statement) writeArg(w *builder.BytesWriter, arg interface{}) error {
|
||||||
switch argv := arg.(type) {
|
switch argv := arg.(type) {
|
||||||
case bool:
|
case bool:
|
||||||
|
@ -110,6 +112,12 @@ func (statement *Statement) writeArg(w *builder.BytesWriter, arg interface{}) er
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
if insertSelectPlaceHolder {
|
||||||
|
if err := w.WriteByte('?'); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
w.Append(arg)
|
||||||
|
} else {
|
||||||
var convertFunc = convertStringSingleQuote
|
var convertFunc = convertStringSingleQuote
|
||||||
if statement.Engine.dialect.DBType() == core.MYSQL {
|
if statement.Engine.dialect.DBType() == core.MYSQL {
|
||||||
convertFunc = convertString
|
convertFunc = convertString
|
||||||
|
@ -118,6 +126,7 @@ func (statement *Statement) writeArg(w *builder.BytesWriter, arg interface{}) er
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue