@@ -81,6 +81,7 @@ private static GenericRow getRecord() {
8181 record .putValue ("svStringWithLengthLimit" , "123" );
8282 record .putValue ("mvString1" , new Object []{"123" , 123 , 123L , 123f , 123.0 });
8383 record .putValue ("mvString2" , new Object []{123 , 123L , 123f , 123.0 , "123" });
84+ record .putValue ("svNullString" , null );
8485 return record ;
8586 }
8687
@@ -178,6 +179,150 @@ record = transformer.transform(record);
178179 }
179180 }
180181
182+ @ Test
183+ public void testScalarOps () {
184+ TableConfig tableConfig = new TableConfigBuilder (TableType .OFFLINE ).setTableName ("testTable" ).build ();
185+
186+ // expression true, filtered
187+ GenericRow genericRow = getRecord ();
188+ tableConfig .setIngestionConfig (
189+ new IngestionConfig (null , null ,
190+ new FilterConfig ("svInt = 123" ), null , null ));
191+ RecordTransformer transformer = new FilterTransformer (tableConfig );
192+ transformer .transform (genericRow );
193+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
194+
195+ // expression true, filtered
196+ genericRow = getRecord ();
197+ tableConfig .setIngestionConfig (
198+ new IngestionConfig (null , null ,
199+ new FilterConfig ("svDouble > 120" ), null , null ));
200+ transformer = new FilterTransformer (tableConfig );
201+ transformer .transform (genericRow );
202+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
203+
204+ // expression true, filtered
205+ genericRow = getRecord ();
206+ tableConfig .setIngestionConfig (
207+ new IngestionConfig (null , null ,
208+ new FilterConfig ("svDouble >= 123" ), null , null ));
209+ transformer = new FilterTransformer (tableConfig );
210+ transformer .transform (genericRow );
211+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
212+
213+ // expression true, filtered
214+ genericRow = getRecord ();
215+ tableConfig .setIngestionConfig (
216+ new IngestionConfig (null , null ,
217+ new FilterConfig ("svDouble < 200" ), null , null ));
218+ transformer = new FilterTransformer (tableConfig );
219+ transformer .transform (genericRow );
220+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
221+
222+ // expression true, filtered
223+ genericRow = getRecord ();
224+ tableConfig .setIngestionConfig (
225+ new IngestionConfig (null , null ,
226+ new FilterConfig ("svDouble <= 123" ), null , null ));
227+ transformer = new FilterTransformer (tableConfig );
228+ transformer .transform (genericRow );
229+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
230+
231+ // expression true, filtered
232+ genericRow = getRecord ();
233+ tableConfig .setIngestionConfig (
234+ new IngestionConfig (null , null ,
235+ new FilterConfig ("svLong != 125" ), null , null ));
236+ transformer = new FilterTransformer (tableConfig );
237+ transformer .transform (genericRow );
238+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
239+
240+ // expression true, filtered
241+ genericRow = getRecord ();
242+ tableConfig .setIngestionConfig (
243+ new IngestionConfig (null , null ,
244+ new FilterConfig ("svLong = 123" ), null , null ));
245+ transformer = new FilterTransformer (tableConfig );
246+ transformer .transform (genericRow );
247+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
248+
249+ // expression true, filtered
250+ genericRow = getRecord ();
251+ tableConfig .setIngestionConfig (
252+ new IngestionConfig (null , null , new FilterConfig ("between(svLong, 100, 125)" ), null , null ));
253+ transformer = new FilterTransformer (tableConfig );
254+ transformer .transform (genericRow );
255+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
256+ }
257+
258+ private GenericRow getNullColumnsRecord () {
259+ GenericRow record = new GenericRow ();
260+ record .putValue ("svNullString" , null );
261+ record .putValue ("svInt" , (byte ) 123 );
262+
263+ record .putValue ("mvLong" , Collections .singletonList (123f ));
264+ record .putValue ("mvNullFloat" , null );
265+ return record ;
266+ }
267+
268+ @ Test
269+ public void testObjectOps () {
270+ TableConfig tableConfig = new TableConfigBuilder (TableType .OFFLINE ).setTableName ("testTable" ).build ();
271+
272+ // expression true, filtered
273+ GenericRow genericRow = getNullColumnsRecord ();
274+ tableConfig .setIngestionConfig (
275+ new IngestionConfig (null , null , new FilterConfig ("svNullString is null" ), null , null ));
276+ RecordTransformer transformer = new FilterTransformer (tableConfig );
277+ transformer .transform (genericRow );
278+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
279+
280+ // expression true, filtered
281+ genericRow = getNullColumnsRecord ();
282+ tableConfig .setIngestionConfig (new IngestionConfig (null , null , new FilterConfig ("svInt is not null" ), null , null ));
283+ transformer = new FilterTransformer (tableConfig );
284+ transformer .transform (genericRow );
285+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
286+
287+ // expression true, filtered
288+ genericRow = getNullColumnsRecord ();
289+ tableConfig .setIngestionConfig (new IngestionConfig (null , null , new FilterConfig ("mvLong is not null" ), null , null ));
290+ transformer = new FilterTransformer (tableConfig );
291+ transformer .transform (genericRow );
292+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
293+
294+ // expression true, filtered
295+ genericRow = getNullColumnsRecord ();
296+ tableConfig .setIngestionConfig (
297+ new IngestionConfig (null , null , new FilterConfig ("mvNullFloat is null" ), null , null ));
298+ transformer = new FilterTransformer (tableConfig );
299+ transformer .transform (genericRow );
300+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
301+ }
302+
303+ @ Test
304+ public void testLogicalScalarOps () {
305+ TableConfig tableConfig = new TableConfigBuilder (TableType .OFFLINE ).setTableName ("testTable" ).build ();
306+
307+ // expression true, filtered
308+ GenericRow genericRow = getRecord ();
309+ tableConfig .setIngestionConfig (
310+ new IngestionConfig (null , null ,
311+ new FilterConfig ("svInt = 123 AND svDouble <= 200" ), null , null ));
312+ RecordTransformer transformer = new FilterTransformer (tableConfig );
313+ transformer .transform (genericRow );
314+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
315+
316+ // expression true, filtered
317+ genericRow = getRecord ();
318+ tableConfig .setIngestionConfig (
319+ new IngestionConfig (null , null ,
320+ new FilterConfig ("svInt = 125 OR svLong <= 200" ), null , null ));
321+ transformer = new FilterTransformer (tableConfig );
322+ transformer .transform (genericRow );
323+ Assert .assertTrue (genericRow .getFieldToValueMap ().containsKey (GenericRow .SKIP_RECORD_KEY ));
324+ }
325+
181326 @ Test
182327 public void testNullValueTransformer () {
183328 RecordTransformer transformer = new NullValueTransformer (TABLE_CONFIG , SCHEMA );
0 commit comments