squirrel icon indicating copy to clipboard operation
squirrel copied to clipboard

Incorrect SQL query when nil Or clause

Open MartyHub opened this issue 1 year ago • 1 comments

Hello,

not sure if this is expected?

https://go.dev/play/p/yMEuRKDSOSI

package main

import (
	"fmt"

	sq "github.com/Masterminds/squirrel"
)

func getFilter() sq.Or {
	return nil
}

func main() {
	users := sq.Select("*").From("users").Where(getFilter())

	sql, _, err := users.ToSql()
	if err != nil {
		panic(err)
	}

	fmt.Println(sql)
}

=> SELECT * FROM users WHERE (1=0)

IMHO this is really tricky and error-prone

MartyHub avatar Oct 07 '24 17:10 MartyHub

Workaround: return sq.Sqlizer instead of sq.Or https://go.dev/play/p/l0fZoUdUxXA

func getFilter() sq.Sqlizer {
	return nil
}

=> SELECT * FROM users

MartyHub avatar Oct 07 '24 18:10 MartyHub