| 2819 | |
| 2820 | #[sqlfunc(is_infix_op = true, sqlname = "@>")] |
| 2821 | fn array_contains_array<'a>(a: Array<'a>, b: Array<'a>) -> bool { |
| 2822 | let a = a.elements(); |
| 2823 | let b = b.elements(); |
| 2824 | |
| 2825 | // NULL is never equal to NULL. If NULL is an element of b, b cannot be contained in a, even if a contains NULL. |
| 2826 | if b.iter().contains(&Datum::Null) { |
| 2827 | false |
| 2828 | } else { |
| 2829 | b.iter() |
| 2830 | .all(|item_b| a.iter().any(|item_a| item_a == item_b)) |
| 2831 | } |
| 2832 | } |
| 2833 | |
| 2834 | #[sqlfunc(is_infix_op = true, sqlname = "<@")] |
| 2835 | fn array_contains_array_rev<'a>(a: Array<'a>, b: Array<'a>) -> bool { |