Skip to content
This repository was archived by the owner on Jan 28, 2021. It is now read-only.

Commit de21348

Browse files
authored
Merge pull request #607 from kuba--/fix-606/regexp
Check if regexp matcher is nil.
2 parents e6d07a7 + 369cb61 commit de21348

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

engine_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,6 +1582,18 @@ func TestStarPanic197(t *testing.T) {
15821582
require.Len(rows, 3)
15831583
}
15841584

1585+
func TestInvalidRegexp(t *testing.T) {
1586+
require := require.New(t)
1587+
e := newEngine(t)
1588+
1589+
ctx := newCtx()
1590+
_, iter, err := e.Query(ctx, `SELECT * FROM mytable WHERE s REGEXP("*main.go")`)
1591+
require.NoError(err)
1592+
1593+
_, err = sql.RowIterToRows(iter)
1594+
require.Error(err)
1595+
}
1596+
15851597
func TestIndexes(t *testing.T) {
15861598
e := newEngine(t)
15871599

sql/expression/comparison.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,9 @@ func (re *Regexp) compareRegexp(ctx *sql.Context, row sql.Row) (interface{}, err
259259
},
260260
}
261261
}
262-
matcher = re.pool.Get().(regex.Matcher)
262+
if obj := re.pool.Get(); obj != nil {
263+
matcher = obj.(regex.Matcher)
264+
}
263265
}
264266
if matcher == nil {
265267
return nil, err

sql/expression/comparison_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,19 @@ func testRegexpCases(t *testing.T) {
210210
}
211211
}
212212

213+
func TestInvalidRegexp(t *testing.T) {
214+
t.Helper()
215+
require := require.New(t)
216+
217+
col1 := NewGetField(0, sql.Text, "col1", true)
218+
invalid := NewLiteral("*col1", sql.Text)
219+
r := NewRegexp(col1, invalid)
220+
row := sql.NewRow("col1")
221+
222+
_, err := r.Eval(sql.NewEmptyContext(), row)
223+
require.Error(err)
224+
}
225+
213226
func TestIn(t *testing.T) {
214227
testCases := []struct {
215228
name string

0 commit comments

Comments
 (0)