@@ -4,6 +4,7 @@ use std::fmt;
4
4
use dyn_clone:: DynClone ;
5
5
6
6
use crate :: expression:: Expr ;
7
+ use crate :: operator:: GroupComparisonOperator ;
7
8
8
9
use super :: any:: AnyType ;
9
10
use super :: array:: ArrayType ;
@@ -288,6 +289,18 @@ pub trait DataType: DynClone {
288
289
vec ! [ ]
289
290
}
290
291
292
+ /// Return a list of types that it's possible to perform `= [ALL|ANY|SOME]' operator with
293
+ /// between current DataType and any one of them
294
+ ///
295
+ /// No need to define the result type, it always BoolType
296
+ #[ allow( unused_variables) ]
297
+ fn can_perform_group_eq_op_with (
298
+ & self ,
299
+ group_op : & GroupComparisonOperator ,
300
+ ) -> Vec < Box < dyn DataType > > {
301
+ vec ! [ ]
302
+ }
303
+
291
304
/// Return a list of types that it's possible to perform `!=' or `<>` operator with
292
305
/// between current DataType and any one of them
293
306
///
@@ -296,14 +309,38 @@ pub trait DataType: DynClone {
296
309
vec ! [ ]
297
310
}
298
311
299
- /// Return a list of types that it's possible to perform `<=> ' operator with
312
+ /// Return a list of types that it's possible to perform `!= [ALL|ANY|SOME] ' operator with
300
313
/// between current DataType and any one of them
301
314
///
302
315
/// No need to define the result type, it always BoolType
316
+ #[ allow( unused_variables) ]
317
+ fn can_perform_group_bang_eq_op_with (
318
+ & self ,
319
+ group_op : & GroupComparisonOperator ,
320
+ ) -> Vec < Box < dyn DataType > > {
321
+ vec ! [ ]
322
+ }
323
+
324
+ /// Return a list of types that it's possible to perform `<=>' operator with
325
+ /// between current DataType and any one of them
326
+ ///
327
+ /// No need to define the result type, it always IntType
303
328
fn can_perform_null_safe_eq_op_with ( & self ) -> Vec < Box < dyn DataType > > {
304
329
vec ! [ ]
305
330
}
306
331
332
+ /// Return a list of types that it's possible to perform `<=> [ALL|ANY|SOME]' operator with
333
+ /// between current DataType and any one of them
334
+ ///
335
+ /// No need to define the result type, it always IntType
336
+ #[ allow( unused_variables) ]
337
+ fn can_perform_group_null_safe_eq_op_with (
338
+ & self ,
339
+ group_op : & GroupComparisonOperator ,
340
+ ) -> Vec < Box < dyn DataType > > {
341
+ vec ! [ ]
342
+ }
343
+
307
344
/// Return a list of types that it's possible to perform `>' operator with
308
345
/// between current DataType and any one of them
309
346
///
@@ -312,6 +349,18 @@ pub trait DataType: DynClone {
312
349
vec ! [ ]
313
350
}
314
351
352
+ /// Return a list of types that it's possible to perform `> [ALL|ANY|SOME]' operator with
353
+ /// between current DataType and any one of them
354
+ ///
355
+ /// No need to define the result type, it always BoolType
356
+ #[ allow( unused_variables) ]
357
+ fn can_perform_group_gt_op_with (
358
+ & self ,
359
+ group_op : & GroupComparisonOperator ,
360
+ ) -> Vec < Box < dyn DataType > > {
361
+ vec ! [ ]
362
+ }
363
+
315
364
/// Return a list of types that it's possible to perform `>=' operator with
316
365
/// between current DataType and any one of them
317
366
///
@@ -320,6 +369,18 @@ pub trait DataType: DynClone {
320
369
vec ! [ ]
321
370
}
322
371
372
+ /// Return a list of types that it's possible to perform `>= [ALL|ANY|SOME]' operator with
373
+ /// between current DataType and any one of them
374
+ ///
375
+ /// No need to define the result type, it always BoolType
376
+ #[ allow( unused_variables) ]
377
+ fn can_perform_group_gte_op_with (
378
+ & self ,
379
+ group_op : & GroupComparisonOperator ,
380
+ ) -> Vec < Box < dyn DataType > > {
381
+ vec ! [ ]
382
+ }
383
+
323
384
/// Return a list of types that it's possible to perform `<' operator with
324
385
/// between current DataType and any one of them
325
386
///
@@ -328,6 +389,18 @@ pub trait DataType: DynClone {
328
389
vec ! [ ]
329
390
}
330
391
392
+ /// Return a list of types that it's possible to perform `< [ALL|ANY|SOME]' operator with
393
+ /// between current DataType and any one of them
394
+ ///
395
+ /// No need to define the result type, it always BoolType
396
+ #[ allow( unused_variables) ]
397
+ fn can_perform_group_lt_op_with (
398
+ & self ,
399
+ group_op : & GroupComparisonOperator ,
400
+ ) -> Vec < Box < dyn DataType > > {
401
+ vec ! [ ]
402
+ }
403
+
331
404
/// Return a list of types that it's possible to perform `=<' operator with
332
405
/// between current DataType and any one of them
333
406
///
@@ -336,6 +409,18 @@ pub trait DataType: DynClone {
336
409
vec ! [ ]
337
410
}
338
411
412
+ /// Return a list of types that it's possible to perform `<= [ALL|ANY|SOME]' operator with
413
+ /// between current DataType and any one of them
414
+ ///
415
+ /// No need to define the result type, it always BoolType
416
+ #[ allow( unused_variables) ]
417
+ fn can_perform_group_lte_op_with (
418
+ & self ,
419
+ group_op : & GroupComparisonOperator ,
420
+ ) -> Vec < Box < dyn DataType > > {
421
+ vec ! [ ]
422
+ }
423
+
339
424
/// Return a list of types that it's possible to perform unary `NOT' operator with
340
425
/// between current DataType and any one of them
341
426
fn can_perform_not_op ( & self ) -> bool {
0 commit comments