feat(api): add ArrayIntersect operation and corresponding `ArrayVal…
…ue.intersect` API
fix(duckdb): make sure that array1.union(array2) null handling matc…
…hes across backends
fix(clickhouse): make sure that array1.union(array2) null handling …
…matches across backends
refactor(ir): glue patterns and rules together
Replace the previous rules-based validation system with the new pattern matching system. This enables to use type annotations for operation definitions as well as better error handling. Also lays the groundwork to enable static type checking in the future. BREAKING CHANGE: the `ibis.common.validators` module has been removed and all validation rules from `ibis.expr.rules`, either use typehints or patterns from `ibis.common.patterns`
refactor(api): remove deprecated tuple syntax for order_by()
BREAKING CHANGE: passing a tuple or a sequence of tuples to table.order_by() calls is not allowed anymore; use ibis.asc(key) or ibis.desc(key) instead
refactor(ir): remove deprecated ibis.expr.selectors module
BREAKING CHANGE: ibis.expr.selectors module is removed, use ibis.selectors instead
refactor(analysis): remove ScalarAggregate, reduction_to_aggregation …
…and has_multiple_bases
refactor(ir): rename .output_dtype and .output_shape to .dtype …
…and `.shape` respectively prefer shorter names for these attributes, aliases are provided for backwards compatibility but they are deprecated
refactor(ir): construct ArrayContains instead of Contains for `va…
…lue.isin(array_value)`
refactor(common): remove ibis.collections.DotDict
The hybrid getitem/getattr access to the validation context is not necessary since the move from the previous rule-based validation to the current pattern matching system.
refactor(ir): use @Annotated decorator to coerce Selection.order_by a…
…nd Aggregation.order_by arguments
refactor(common): remove Validator mixin for better clarity
Also removes a redundant function call by directly calling the pattern match API from the annotation classes.
refactor(common): ibis.common.patterns.match() should return with the…
… matched value rather than the context
refactor(common): factor out base classes to ibis.common.bases from…
… `ibis.common.grounds` this enables us to use the base classes like `Slotted`, `Immutable` and `Singleton` in `ibis.common.patterns`
refactor(analysis): remove find_phyisical_tables() function in favo…
…r of `node.find()`