diff --git a/engine_test.go b/engine_test.go index 0299ad20e..7864ed426 100644 --- a/engine_test.go +++ b/engine_test.go @@ -1226,6 +1226,10 @@ var queries = []struct { `SELECT CASE i WHEN 1 THEN i ELSE NULL END FROM mytable`, []sql.Row{{int64(1)}, {nil}, {nil}}, }, + { + `SELECT (NULL+1)`, + []sql.Row{{nil}}, + }, } func TestQueries(t *testing.T) { diff --git a/sql/expression/arithmetic.go b/sql/expression/arithmetic.go index a1b69b5cd..ecdf26961 100644 --- a/sql/expression/arithmetic.go +++ b/sql/expression/arithmetic.go @@ -159,6 +159,10 @@ func (a *Arithmetic) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) { return nil, err } + if lval == nil || rval == nil { + return nil, nil + } + lval, rval, err = a.convertLeftRight(lval, rval) if err != nil { return nil, err