In 查询,参数为空数组时,不应该忽略条件 #536

Closed
opened 2017-02-22 09:10:02 +00:00 by hilyjiang · 0 comments
hilyjiang commented 2017-02-22 09:10:02 +00:00 (Migrated from github.com)

测试代码:

package main

import (
	"fmt"
	"time"

	"github.com/go-xorm/core"
	"github.com/go-xorm/xorm"
	_ "github.com/mattn/go-sqlite3"
)

type User struct {
	Id      int
	Name    string
	Salt    string
	Age     int
	Passwd  string    `xorm:"varchar(200)"`
	Created time.Time `xorm:"created"`
	Updated time.Time `xorm:"updated"`
}

func main() {
	engine, err := xorm.NewEngine("sqlite3", "test.db")
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	// 建表
	err = engine.Sync2(new(User))
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	// 插入一条测试数据
	user := new(User)
	user.Id = 1
	user.Name = "hi"
	engine.Insert(user)

	engine.ShowSQL(true)
	engine.Logger().SetLevel(core.LOG_DEBUG)

	// IN ()
	users := make([]*User, 0)
	err = engine.In("id", []int{}).Find(&users)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	// IN (1)
	users = make([]*User, 0)
	err = engine.In("id", []int{1}).Find(&users)
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	_ = users
}

输出:

[xorm] [info] 2017/02/22 17:08:24.160411 [sql] SELECT id, name, salt, age, passwd, created, updated FROM user
[xorm] [info] 2017/02/22 17:08:24.161025 [sql] SELECT id, name, salt, age, passwd, created, updated FROM user WHERE id IN (?) [args] [1]

期望输出为:

SELECT id, name, salt, age, passwd, created, updated FROM user WHERE id IN ()

测试代码: ```golang package main import ( "fmt" "time" "github.com/go-xorm/core" "github.com/go-xorm/xorm" _ "github.com/mattn/go-sqlite3" ) type User struct { Id int Name string Salt string Age int Passwd string `xorm:"varchar(200)"` Created time.Time `xorm:"created"` Updated time.Time `xorm:"updated"` } func main() { engine, err := xorm.NewEngine("sqlite3", "test.db") if err != nil { fmt.Println(err.Error()) return } // 建表 err = engine.Sync2(new(User)) if err != nil { fmt.Println(err.Error()) return } // 插入一条测试数据 user := new(User) user.Id = 1 user.Name = "hi" engine.Insert(user) engine.ShowSQL(true) engine.Logger().SetLevel(core.LOG_DEBUG) // IN () users := make([]*User, 0) err = engine.In("id", []int{}).Find(&users) if err != nil { fmt.Println(err.Error()) return } // IN (1) users = make([]*User, 0) err = engine.In("id", []int{1}).Find(&users) if err != nil { fmt.Println(err.Error()) return } _ = users } ``` 输出: > [xorm] [info] 2017/02/22 17:08:24.160411 [sql] SELECT `id`, `name`, `salt`, `age`, `passwd`, `created`, `updated` FROM `user` > [xorm] [info] 2017/02/22 17:08:24.161025 [sql] SELECT `id`, `name`, `salt`, `age`, `passwd`, `created`, `updated` FROM `user` WHERE id IN (?) [args] [1] 期望输出为: > SELECT `id`, `name`, `salt`, `age`, `passwd`, `created`, `updated` FROM `user` WHERE id IN ()
lunny referenced this issue from a commit 2020-01-19 09:34:09 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: xorm/xorm#536
No description provided.