featurebase/sql3/test/defs/defs_like.go
pokeeffe-molecula c304991e9f implemented extract ddl; tightened up type related stuff (#2329)
* implemented extract ddl; tightened up type related stuff

* added some test coverage

* review feedback

(cherry picked from commit f62313762c)
2022-12-12 09:01:20 -08:00

167 lines
3.9 KiB
Go

package defs
// LIKE tests
var likeTests = TableTest{
Table: tbl(
"like_all_types",
srcHdrs(
srcHdr("_id", fldTypeID),
srcHdr("i1", fldTypeInt, "min 0", "max 1000"),
srcHdr("b1", fldTypeBool),
srcHdr("d1", fldTypeDecimal2),
srcHdr("id1", fldTypeID),
srcHdr("ids1", fldTypeIDSet),
srcHdr("s1", fldTypeString),
srcHdr("ss1", fldTypeStringSet),
srcHdr("t1", fldTypeTimestamp),
),
srcRows(
srcRow(int64(1), int64(1000), bool(true), float64(12.34), int64(20), []int64{101, 102}, string("foo"), []string{"101", "102"}, knownTimestamp()),
),
),
SQLTests: []SQLTest{
{
SQLs: sqls(
"select _id like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'id'",
},
{
SQLs: sqls(
"select i1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'int'",
},
{
SQLs: sqls(
"select b1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'bool'",
},
{
SQLs: sqls(
"select d1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'decimal(2)'",
},
{
SQLs: sqls(
"select id1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'id'",
},
{
SQLs: sqls(
"select ids1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'idset'",
},
{
SQLs: sqls(
"select s1 like '%f_' from like_all_types",
),
ExpHdrs: hdrs(
hdr("", fldTypeBool),
),
ExpRows: rows(
row(bool(true)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select ss1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'stringset'",
},
{
SQLs: sqls(
"select t1 like '%f_' from like_all_types",
),
ExpErr: "operator 'LIKE' incompatible with type 'timestamp'",
},
},
}
// NOT LIKE tests
var notLikeTests = TableTest{
Table: tbl(
"not_like_all_types",
srcHdrs(
srcHdr("_id", fldTypeID),
srcHdr("i1", fldTypeInt, "min 0", "max 1000"),
srcHdr("b1", fldTypeBool),
srcHdr("d1", fldTypeDecimal2),
srcHdr("id1", fldTypeID),
srcHdr("ids1", fldTypeIDSet),
srcHdr("s1", fldTypeString),
srcHdr("ss1", fldTypeStringSet),
srcHdr("t1", fldTypeTimestamp),
),
srcRows(
srcRow(int64(1), int64(1000), bool(true), float64(12.34), int64(20), []int64{101, 102}, string("foo"), []string{"101", "102"}, knownTimestamp()),
),
),
SQLTests: []SQLTest{
{
SQLs: sqls(
"select _id not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'id'",
},
{
SQLs: sqls(
"select i1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'int'",
},
{
SQLs: sqls(
"select b1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'bool'",
},
{
SQLs: sqls(
"select d1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'decimal(2)'",
},
{
SQLs: sqls(
"select id1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'id'",
},
{
SQLs: sqls(
"select ids1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'idset'",
},
{
SQLs: sqls(
"select s1 not like '%f_' from not_like_all_types",
),
ExpHdrs: hdrs(
hdr("", fldTypeBool),
),
ExpRows: rows(
row(bool(false)),
),
Compare: CompareExactUnordered,
},
{
SQLs: sqls(
"select ss1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'stringset'",
},
{
SQLs: sqls(
"select t1 not like '%f_' from not_like_all_types",
),
ExpErr: "operator 'NOTLIKE' incompatible with type 'timestamp'",
},
},
}