@@ -1142,8 +1142,10 @@ func TestFullTextFields(t *testing.T) {
11421142func Test_applyMatchOperator (t * testing.T ) {
11431143 schemaTable := schema.Table {
11441144 Columns : map [string ]schema.Column {
1145- "message" : {Name : "message" , Type : "String" },
1146- "count" : {Name : "count" , Type : "Int64" },
1145+ "message" : {Name : "message" , Type : "String" },
1146+ "map_str_str" : {Name : "map_str_str" , Type : "Map(String, String)" },
1147+ "map_str_int" : {Name : "map_str_int" , Type : "Map(String, Int)" },
1148+ "count" : {Name : "count" , Type : "Int64" },
11471149 },
11481150 }
11491151
@@ -1206,6 +1208,114 @@ func Test_applyMatchOperator(t *testing.T) {
12061208 },
12071209 },
12081210 },
1211+ {
1212+ name : "match operator transformation for map(string, string) (ILIKE)" ,
1213+ query : & model.Query {
1214+ TableName : "test" ,
1215+ SelectCommand : model.SelectCommand {
1216+ FromClause : model .NewTableRef ("test" ),
1217+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1218+ WhereClause : model .NewInfixExpr (
1219+ model .NewArrayAccess (model .NewColumnRef ("map_str_str" ), model .NewLiteral ("'warsaw'" )),
1220+ model .MatchOperator ,
1221+ model .NewLiteralWithEscapeType ("'needle'" , model .NotEscapedLikeFull ),
1222+ ),
1223+ },
1224+ },
1225+ expected : & model.Query {
1226+ TableName : "test" ,
1227+ SelectCommand : model.SelectCommand {
1228+ FromClause : model .NewTableRef ("test" ),
1229+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1230+ WhereClause : model .NewInfixExpr (
1231+ model .NewArrayAccess (model .NewColumnRef ("map_str_str" ), model .NewLiteral ("'warsaw'" )),
1232+ "ILIKE" ,
1233+ model .NewLiteralWithEscapeType ("needle" , model .NotEscapedLikeFull ),
1234+ ),
1235+ },
1236+ },
1237+ },
1238+ {
1239+ name : "match operator transformation for map(string, int) (=)" ,
1240+ query : & model.Query {
1241+ TableName : "test" ,
1242+ SelectCommand : model.SelectCommand {
1243+ FromClause : model .NewTableRef ("test" ),
1244+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1245+ WhereClause : model .NewInfixExpr (
1246+ model .NewArrayAccess (model .NewColumnRef ("map_str_int" ), model .NewLiteral ("'warsaw'" )),
1247+ model .MatchOperator ,
1248+ model .NewLiteral (50 ),
1249+ ),
1250+ },
1251+ },
1252+ expected : & model.Query {
1253+ TableName : "test" ,
1254+ SelectCommand : model.SelectCommand {
1255+ FromClause : model .NewTableRef ("test" ),
1256+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1257+ WhereClause : model .NewInfixExpr (
1258+ model .NewArrayAccess (model .NewColumnRef ("map_str_int" ), model .NewLiteral ("'warsaw'" )),
1259+ "=" ,
1260+ model .NewLiteral (50 ),
1261+ ),
1262+ },
1263+ },
1264+ },
1265+ {
1266+ name : "match operator transformation for Attributes map (1/2)" ,
1267+ query : & model.Query {
1268+ TableName : "test" ,
1269+ SelectCommand : model.SelectCommand {
1270+ FromClause : model .NewTableRef ("test" ),
1271+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1272+ WhereClause : model .NewInfixExpr (
1273+ model .NewArrayAccess (model .NewColumnRef (clickhouse .AttributesValuesColumn ), model .NewLiteral ("'warsaw'" )),
1274+ model .MatchOperator ,
1275+ model .NewLiteralWithEscapeType ("needle" , model .NotEscapedLikeFull ),
1276+ ),
1277+ },
1278+ },
1279+ expected : & model.Query {
1280+ TableName : "test" ,
1281+ SelectCommand : model.SelectCommand {
1282+ FromClause : model .NewTableRef ("test" ),
1283+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1284+ WhereClause : model .NewInfixExpr (
1285+ model .NewArrayAccess (model .NewColumnRef (clickhouse .AttributesValuesColumn ), model .NewLiteral ("'warsaw'" )),
1286+ "ILIKE" ,
1287+ model .NewLiteralWithEscapeType ("needle" , model .NotEscapedLikeFull ),
1288+ ),
1289+ },
1290+ },
1291+ },
1292+ {
1293+ name : "match operator transformation for Attributes map (2/2)" ,
1294+ query : & model.Query {
1295+ TableName : "test" ,
1296+ SelectCommand : model.SelectCommand {
1297+ FromClause : model .NewTableRef ("test" ),
1298+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1299+ WhereClause : model .NewInfixExpr (
1300+ model .NewArrayAccess (model .NewColumnRef (clickhouse .AttributesMetadataColumn ), model .NewLiteral ("'warsaw'" )),
1301+ model .MatchOperator ,
1302+ model .NewLiteralWithEscapeType ("needle" , model .NotEscapedLikeFull ),
1303+ ),
1304+ },
1305+ },
1306+ expected : & model.Query {
1307+ TableName : "test" ,
1308+ SelectCommand : model.SelectCommand {
1309+ FromClause : model .NewTableRef ("test" ),
1310+ Columns : []model.Expr {model .NewColumnRef ("message" )},
1311+ WhereClause : model .NewInfixExpr (
1312+ model .NewArrayAccess (model .NewColumnRef (clickhouse .AttributesMetadataColumn ), model .NewLiteral ("'warsaw'" )),
1313+ "ILIKE" ,
1314+ model .NewLiteralWithEscapeType ("needle" , model .NotEscapedLikeFull ),
1315+ ),
1316+ },
1317+ },
1318+ },
12091319 }
12101320
12111321 for _ , tt := range tests {
0 commit comments