Releases
12.0.0
Compare
Sorry, something went wrong.
No results found
12.0.0 (2026-02-07)
⚠ BREAKING CHANGES
pyspark: PySpark <3.5 is no longer supported
officially drop support for 3.9, bump all dependencies
datatypes: infer decimal precision and scale
Features
api: implement upsert() using MERGE INTO (#11624 ) (9126733 ), closes #5391
api: support Table.cast(my_col=int) (9e209f3 )
databricks: support json literals (f46a58f )
datafusion: add compilation rule for Strftime (6fa8411 )
deps: enable compatibility with pandas 3.0.0 (#11873 ) (34a36be )
materialize: add new backend for Materialize streaming database (#11893 ) (35fcce0 )
officially drop support for 3.9, bump all dependencies (aa16d08 )
pyspark: support pyspark 4.0 (e9c35e6 )
singlestoredb: add SingleStoreDB backend (#11595 ) (a83cfef )
support JSON literal values (#11728 ) (38b19c7 ), closes #11727
typing: improve typing of ibis.common.collections (e3aba92 )
typing: make dtype() and schema() more typesafe (#11856 ) (116886f )
typing: make more arguments positional-only (610c450 )
typing: make types more precise for many common Values (#11771 ) (2eb772a )
Bug Fixes
add order_by to first and last (7ead787 ), closes #11656
add upper _method_overrides in decompile (e7956f4 ), closes #11717
bigquery: relax decimal upper bounds (d05751b )
biquery: use qualified table name for upserts (120b2d8 )
citation: fix CITATION.cff [skip ci] (305526a )
datatypes: infer decimal precision and scale (ed346e6 )
datatypes: make decimal casts more permissive (ba087d2 )
deps: pin dep on sqlglot to <28 (3e9156e )
deps: sqlglot 28.0 incompatibilities (#11839 ) (ab21efd )
docs: typo in Ibis description in why.qmd (#11816 ) (402c37d )
duckdb: create a single table from Python data object (7f82e5e ), closes #11709
exasol: update Exasol Docker image tag to 2025.1.8 (#11806 ) (2414952 ), closes #11703
flink: don't pass unsupported "position" flag to regexp_replace (34f39cc )
mssql: use sge.National to support unicode in information_schema (#11877 ) (a254ccb )
mysql: use getuser() and empty password string by default (#11904 ) (ba0218f )
polars: handle cross joins without passing join keys (d3c3bad ), closes #11764
polars: support asof_join with no predicates (3fc9b64 )
postgres: fix postgres asof joins to consider predicates correctly (064bd2d )
remove bogus leading ' from Struct repr (d7083c2 )
return a tuple, not generator, from Table.bind() (cfc8b08 )
sqlite: create a single table from Python object (4e6ddcf )
sqlite: precision loss in divide (c77e1bd )
support Backend == "some non backend object" (a5e7c22 )
trino: add explicit type when compiling sge.Struct fields (fc49498 )
type Value.name() as returning Self, not Value (d28b18d )
typing: add bool as accepted type for Table.filter (2853a4c )
typing: adjust a few small type errors (b2e3100 )
typing: adjust typing of ibis.and_, or_, asc, and desc (#11845 ) (1f1c48b )
typing: improve a few internal types (426acc4 )
window: support scalar values in WindowFunction.group_by (5028d8e )
Documentation
bigquery: add note on schema to insert() (a528450 )
improve docstrings for as_scalar() and as_table() (e4f8762 )
update the total count of available backends (#11895 ) (b2cc31e )
Refactors
move _binop() util function to be near ir.Value, not ir.Expr (484776f )
rename child to parent in SQLStringView (35a1cfa )
rename SortKey.expr to SortKey.arg and View.child to View.parent (03bf112 )
rename View to AliasedRelation (375678b )
set order_by at creation time (9406b49 )
swap ad-hoc TYPE_MAPPERS[key] to get_type_mapper(key) (926f589 )
tpc: clean up some queries (9431fa9 )
use Orderable abc for reductions with an order_by (#11868 ) (58e87cb )
You can’t perform that action at this time.