Releases: ibis-project/ibis
10.3.1
10.3.0
10.3.0 (2025-03-11)
Features
- duckdb: add
read_xlsx
implementation (705aa16) - duckdb: add
to_xlsx
implementation (1800abd) - python: support python 3.9 again (#10949) (786d8f0)
Bug Fixes
- bigquery: adjust codegen for newer version of sqlglot (8105a09)
- memtable: ensure that constructing an empty memtable from a dataframe works (#10945) (29c796a), closes #10940
- mysql: add regular blob to type mapping (365c157)
- mysql: ensure that unsigned integers are mapped to the ibis type system (#10947) (3eb76f8), closes #10946
- postgres: create server-side cursors in the iterator to ensure cursor is not cleaned up before it is used (f5f798e)
- postgres: ensure that cursor lifetime is at least as long as the generator (f42ab45)
Documentation
- mention theseus in the readme and docs landing page diagram (360c25b)
- setup: add
just
recipe and setup entry foruv
(#10959) (dd33f47) - tutorials: reorganize the "Getting started" tab (f78a8fb)
Refactors
- oracle: remove unused
owner
column fromselect
metadata query (#10935) (56dcc42) - postgres: split out
hstore
extension registration into separate method (0bdb5a0)
Performance
10.2.0
10.2.0 (2025-03-03)
Features
Bug Fixes
- bigquery: ensure that count distinct can be used in window functions without a specified window (#10911) (c9120e1)
- build: ensure that legacy tools can recognize the validity of the Ibis license (#10905) (c29d83a)
- datatypes: document "!" as meaning non-nullable, enable
nullable
arg for type hints (#10893) (601aabe) - examples: ensure that examples work on mssql and avoid using overwrite (#10909) (8336483)
- pyarrow-conversion: ensure that non-nullability is preserved (#10897) (b2c5a0c)
- snowflake: use schema when constructing pyarrow table (#10903) (8b9b143)
Documentation
- add an example with
literal
in "Getting started" (#10918) (b69061b) - build: disable misbehaving duckdb spatial optimizer (#10898) (c37116f)
- selectors: render the module instead of hand-picking the documented components (#10892) (d841481)
Refactors
Performance
10.1.0
10.1.0 (2025-02-22)
Features
- pyspark: add partitionBy argument to create_table (c99cc23), closes #8900
- python: allow python 3.9 installations (#10859) (fbe8c8b)
Bug Fixes
- bigquery: allow sane use of
params
withraw_sql
(#10874) (0a684c3) - deps: update dependency datafusion to v44 (979cf59)
- deps: update dependency sqlglot to >=23.4,<26.5 (#10807) (f09e8e2)
- deps: update dependency sqlglot to >=23.4,<26.7 (15111f8)
- dev-tools: ensure that bump is minimal so that later release sort properly (#10878) (39729c7)
- duckdb: use the
delta
extension for reading deltalake data (#10833) (beeaa29), closes #10829 - join: error in more places on colliding column names (#10778) (ec06e1e)
- mssql: ensure that dots in
database
parameter tolist_tables
are used as path delineators (#10863) (cdbbcb9) - mssql: ensure that we only escape passwords if the password is not
None
(e589344) - mysql: explicitly handle the zero integer -> timestamp case (f5e8c4f)
- pyspark: avoid potentially different field names produced by SQL by using python-native APIs (#10877) (9538d51)
- snowflake: use
get
instead ofget_path
;get_path
does not support columns with spaces (#10836) (50c978b), closes #10835 - sqlglot: ensure that
sge.Median
is only accessed when it exists (dc6b7e0) - sqlite: avoid generating double-quoted string literals (#10873) (76b0114)
Documentation
- add blogpost for Athena backend (#10796) (f2f09eb)
- add information about reading from cloud buckets (32e82c7)
- add udf rewriting blog post (c6ecf6b)
- blog: add post on SQL understanding and Ibis (#10762) (94425ec)
- blog: convert case to cases in blog posts (#10560) (bbf98de)
- blog: use more reliable URL for geospatial data (72b7673)
- fix reference to incorrect value (1945237)
- move
__getitem__
docs so that quarto publishes them (#10870) (269cdfe) - release-notes: fixup release notes (fb0798e)
- remove incorrect parameters (#10876) (a707778)
- update post date (ea0cc95)
Refactors
- duckdb: remove the pyarrow
read_parquet
fallback (5fa0103)
10.0.0
10.0.0 (2025-02-06)
β BREAKING CHANGES
- api: change
as_interval
unit
argument to be positional-only - api: change
as_timestamp
unit
argument to be positional-only - api: standardize unnest and pivot_longer signatures
- api: remove deprecated
Table.relabel
method - api: standardize
StringValue
method signatures - api: standardize
NumericValue
methods - api: make
GeoSpatialValue.contains
positional-only - api: make
Table.describe
quantile
argument keyword-only - api: remove deprecated
Table.relabel
method - api: make
Table.drop_null
/Table.fill_null
/Table.window_by
/Table.alias
argument positional-only - api: make
Table.sample
fraction
argument positional-only - api: make
Table.aggregate
metrics
argument positional-only - api: make
Table
set operation methods positional-only - api: make
Table.cast
andTable.try_cast
methods positional-only - api: make
nth
positional-only - api: make
isin
/notin
/cases
/identical_to
positional-only - api: make null-related methods and
null
function positional-only - api: make
Value.cast
andValue.try_cast
positional-only - internals: make
Value.name
positional-only - internals: make
Expr.pipe
positional-only - internals: make
Expr.equals
positional-only - api: align signatures of
to_json
methods - api: align signatures of
to_delta
methods - api: align signatures of
to_csv
/to_csv_dir
methods - api: align signatures of
to_parquet
/to_parquet_dir
methods - api: align
.sql
method signatures across polars and sql as well as theTable
method - api: top-level
connect
method now takes its first argument as positional-only - duckdb: align signatures of
read_sqlite
/read_mysql
/read_postgres
methods in the duckdb backend - api: align signatures of
read_delta
method; sources are positional-only, everything else is required-keyword - api: canonicalize
has_operation
backend method; single argument is positional-only - api: canonicalize
read_kafka
andto_kafka
methods of the PySpark backend - api: canonicalize
drop_table_or_view
method of the impala backend - api: canonicalize
to_geo
signature of the the DuckDB backend - api: canonicalize
read_geo
signature of the the DuckDB backend - api: align signatures of
list_catalogs;
like` argument is now keyword-only - bigquery: canonicalize
set_database
signature - api: make
list_databases
arguments all required-keyword - risingwave: canonicalize signatures of risingwave-specific
create_*
methods - polars: canonicalize signature of
read_pandas
method - api: align signatures of
drop_table
method;name
is positional-only; the rest are keyword-only - api: align signatures of
create_catalog
anddrop_catalog
methods;name
is positional-only; the rest are keyword-only - api:
compile
method is now the same across backends - api: align signatures of
create_table
method;name
is positional-only;obj
is positional-or-keyword; the rest are keyword-only - api: align signatures of
create_view
method;name
is positional-only;obj
is positional-or-keyword; the rest are keyword-only - api: align signatures of
drop_view
method;name
is positional-only; the rest are keyword-only - api: align signatures of
truncate_table
method;name
is positional-only; the rest are keyword-only - api: align signatures of
insert
method;name
is positional-only;obj
is positional-or-keyword; the rest are keyword-only - api: align signatures of
read_json
method; sources are positional-only, everything else is required-keyword - api: align signatures of
read_csv
method; sources are positional-only, everything else is required-keyword - api: align signatures of
read_parquet
method; sources are positional-only, everything else is required-keyword - api: align signatures of
to_torch
method - api: align signatures of
to_polars
method - api: align signatures of
Backend.list_tables
method; all arguments are now keyword-only - api: align signatures of
Backend.table
method;name
is positional-only; everything else is required-keyword - api: align signatures of
create_database
anddrop_database
;name
is positional-only; everything else is required-keyword - api: standardize
MapValue
method signatures - api: standardize
ArrayValue
method signatures - api:
type
argument ofstruct
function is now required-keyword - api: standardize
TemporalValue
APIs - api:
where
argument of aggregate functions is now required-keyword - api:
hashbytes
andhexdigest
are now positional-only - api: standardize
how
argument tojoin
methods as keyword-only and standardize remaining arguments - api:
ibis.coalesce
/ibis.greatest
/ibis.least
are now positional-only - api:
Expr.ifelse
is now positional-only - api: top-level set operation functions are now positional-only
- api:
set_backend
andget_backend
functions are now positional-only - api:
ntile
function and method is now positional-only - api: ibis.preceding
/
ibis.following` are now positional-only - api:
expr
argument ofibis.asc
/ibis.desc
is now positional-only;nulls_first
is keyword-only - api:
data
argument ofibis.memtable
is now positional-only; the rest are keyword-only - api:
pairs
argument ofibis.schema
is now positional-only; the rest are keyword-only - api:
ibis.param
is now positional-only - api:
n
argument inTable.limit
andTable.head
is now required-positional - api:
offset
argument inTable.limit
is now required-keyword - api: temporal window expression APIs now require all arguments as keywords
- api:
to_pyarrow
andto_pyarrow_batches
requiresexpr
as positional-only and keyword for everything else - api:
to_pandas_batches
requiresexpr
as positional-only - api:
execute
andto_pandas
methods now requireexpr
as positional-only - api:
distance
is now a required keyword argument for thed_within
api - duckdb: The duckdb backend's
read_csv
method accepts only DuckDB types for the values components of thecolumns
andtypes
arguments. You may need need to adjust existing code. For example, the string"float64"
should be replaced with the string"double"
. - duckdb: The
read_in_memory
method is removed from the duckdb backend. Useibis.memtable
instead. - api: The
how
parameter of theValue.arbitrary
method is removed. callValue.first
orValue.last
explicitly - api: The
StringValue.initcap
method is removed. UseStringValue.capitalize
instead. - api:
IntegerValue.label
is redundant with theIntegerValue.cases
method, use that instead. Replaceexpr.label(labels)
withexpr.cases(*enumerate(labels))
- register: The deprecated
register
method has been removed. Please use the file-specificread_*
methods instead. For in-memory objects, pass them toibis.memtable
orcreate_table
. - duckdb: Special handling of the
temp_directory
argument passed to Ibis is removed in favor of passing the argument through directly toduckdb.connect
. Interior nodes of directory trees must be created, e.g., usingPath.mkdir(exists_ok=True, parents=True)
,mkdir -p
, etc. - config:
option_context
is removed. Usecontextlib.contextmanager
to create your own version of this functionality if necessary. - duckdb: The DuckDB lower bound has been bumped to a version that has storage backwards compatibility. You may need to migrate your DuckDB database files.
- api:
has_name
has always returnedTrue
since 9.0. It is safe to remove any calls tohas_name
. - backends:
execute
now returns non-numpy objects for scalar values. - api:
ibis.negate
is removed. Use thenegate
method on a
specific column, instead. - api: All
ibis.geo_*
functions are removed. Equivalent
methods are available on all geo columns. - api:
where
is removed. Useibis.ifelse
instead. - value:
Value.greatest
andValue.least
are removed. Use
ibis.greatest
andibis.least
, instead. - joins: Passing a
pyarrow.Table
or apandas.DataFrame
as
the right-hand-side of a join is no longer supported.
To join against in-memory data, you can pass the in-memory object to
ibis.memtable
or con.create_table
and use the resulting table object
instead.
Issues closed
-
api: Removed hierarchical usage of schema.
Ibis uses the following naming conventions:- schema: a mapping of column names to datatypes
- database: a collection of tables
- catalog: a collection of databases
-
mysql: Ibis now uses the
MySQLdb
driver. You may need to install MySQL client libraries to build the extension. -
padding: String padding operations now follow Python semantics and leave strings greater than the padding length untouched.
-
pandas: The
pandas
backend is removed. Note that pandas DataFrames are STILL VALID INPUTS AND OUTPUTS and will remain so for the foreseeable future. Please use one of the other local backends like DuckDB, Polars, or DataFusion to perform operations directly on pandas DataFrames. -
dask: The
dask
backend is removed. Please use one of the
other backends that Ibis supports. -
api: remove deprecated
where
methodism (886b2d1) -
api: remove top-level
negate
function (c8c37dd) -
api: remove top-level geo functions ([6b18...
9.5.0
9.5.0 (2024-09-11)
Features
- api: add
name
argument totopk
(1652076) - api: add
name
argument tovalue_counts
(24be184) - api: add
to_sqlglot
method toSchema
objects (#10063) (9488115) - mssql: add lpad and rpad ops (#10060) (77af14b)
- mssql: add startswith and endswith ops (17a628c)
Bug Fixes
- backends: pass kwargs to _from_url() in every case (#10003) (9ca92f0)
- bigquery: handle column name mismatches and
_TABLE_SUFFIX
everywhere (5ade49e) - clickhouse: fix lstrip, rstrip, and strip (d2539c4)
- datafusion: raise when attempting to create temp table (#10072) (1cf5439)
- deps: update dependency fsspec to <2024.9.1 (#10036) (ea71719)
- deps: update dependency sqlglot to >=23.4,<25.20 (#10010) (ba07da7)
- deps: update dependency sqlglot to >=23.4,<25.21 (#10050) (422d361)
- docs: update invalid read_parquet link (2ae9ef4)
- duckdb: allow setting
auto_detect
toFalse
by fixing translation of columns argument (#10065) (883d2d3) - duckdb: free memtables based on operation lifetime (#10042) (a121ab3)
- duckdb: support version 1.1.0 (#10037) (3a37626)
- flink: fix strip (01117a5)
- impala: allow specifying
temp=False
increate_table
(e29712c) - impala: fix lstrip, rstrip, strip (413df3b)
- mssql: ensure that dot-sql can be executed when column names are not provided (#10028) (1936437), closes #10025
- mssql: fix strip, lstrip, rstrip (f53feab)
- oracle: fix lstrip, rstrip, and strip (3f5a304)
- pandas: don't silently ignore result column name mismatches (48be246)
- polars: support polars
Enum
type (#10017) (869829f) - sqlite: list temporary tables by default (#10058) (dfa55b6)
- sql: properly parenthesize binary ops containing named expressions (5c2eadc)
Documentation
- accursed: add cursed knowledge page (#10031) (85e1dcc)
- duckdb: fix broken link to parquet writing (#10026) (d22f8eb)
- jupyterlite: disable insecure extensions (#10052) (3d8280b)
Refactors
- backends: clean up resources produced by
memtable
(#10055) (019cae5) - backends: split memtable existence check out (#10053) (77448bf)
- datafusion: avoid reinitializing memtables on every execute call (#10057) (43e5f12)
- dependencies: make
fsspec
a test-only dependency (37e4439) - formats: plumb through
data_mapper
andschema
in both pandas and pyarrow formats (cbeb967) - mssql: simplify lpad and rpad ops (#10085) (ef5d58d), closes /github.com/ibis-project/ibis/pull/10060#discussion_r1752665235
- polars: handle memtables like every other backend (#10056) (2b0dbb9)
Performance
- backends: speed up most memtable existence checks (#10067) (a205ab7)
- ir: don't recreate nodes in
replace
if their children haven't changed (ac79604) - sql: avoid parenthesizing chains of commutative operators (f86515c)
Deprecations
9.4.0
9.4.0 (2024-09-03)
Features
- api: add
approx_quantiles
for computing approximate quantiles (dcdb7a7) - api: add
DateValue.epoch
api for computing days since epoch (#9856) (8b0fb66) - api: make the
null
function deferrable (0613ef1) - api: support
SchemaLike
inBackend.create_table()
(#9885) (949fbea) - api: support deferred objects in
literal
(#9904) (0a07906) - clickhouse: partition kwargs for compile and execution in
to_pyarrow
andto_pandas
(2dd2c3f) - clickhouse: support ms/us/ns truncate units (9881edb)
- decompile: make the decompiler run on TPCH query 1 (#9779) (0268044)
- exasol: implement
approx_nunique
,std
,var
(d9c3daa) - exasol: implement
approx_nunique
,std
,var
(63c20c0) - exasol: implement
cov
/corr
(24f41b2) - exasol: implement
median
andapprox_median
(3cfc344) - exasol: implement
quantile
(ecbef94) - exasol: implement
Table.nunique
(a24200c) - exasol: implement
Table.nunique
(7ead7c7) - flink: array sort (ca85ae2)
- flink: support
ArrayValue.collect
(eb857e6) - impala: add
tbl_properties
tocreate_table
(#9839) (e3d02bd) - mssql: support connecting with a url (#9894) (8bb12e1), closes #9856
- oracle: implement
mode
aggregation (#9914) (9ee910d) - output-formats: add support for to_parquet_dir (#9781) (80dfbe2)
- polars: array sort (9a2563b)
- polars: implement approx_nunique (3f3738d)
- pyspark: support
quantile
(26d8516) - selectors: support naming deferreds in across (de1595c)
- snowflake: implement interval arithmetic (#9794) (41e10ca), closes #9783
- sql: enable cross-database joins (#9849) (c3ff6ae)
- sql: fuse
distinct
with other select nodes when possible (c31412b) - sqlite: support most date/timestamp interval arithmetic (75f594d)
- sql: load parsed but unsupported types as unknown (#9868) (a76acfc)
- sql: support inserts with default constraints (#9844) (86a3c06)
- timestamps: add support for timestamp/date +/- intervals for additional backends (#9799) (79cef68)
- trino: support years and months in datetime arithmetic (1133973)
- trino: wrap
auth
strings withBasicAuthentication
(#9960) (e0f54c9)
Bug Fixes
- bigquery: disallow column names longer than 300 characters (#9916) (ea97794), closes #8931
- clickhouse: workaround
EXCEPT
andINTERSECT
generation in sqlglot; add tpcds query 87 (#9959) (910b8f5) - datafusion: fix creation of SessionContext in datafusion 40.1.0 (eec5328)
- datafusion: handle
NULL
s in arrayflatten
(ecc199f) - deps: update dependency datafusion to v40 (4aa402a)
- deps: update dependency sqlglot to >=23.4,<25.11 (#9805) (84bfeb5)
- deps: update dependency sqlglot to >=23.4,<25.12 (#9834) (69a10d9)
- deps: update dependency sqlglot to >=23.4,<25.13 (#9851) (6780a6b)
- deps: update dependency sqlglot to >=23.4,<25.15 (#9864) (d182e9e)
- deps: update dependency sqlglot to >=23.4,<25.16 (#9875) (0a6765b)
- deps: update dependency sqlglot to >=23.4,<25.17 (#9907) (9e52edb)
- deps: update dependency sqlglot to >=23.4,<25.18 (#9935) (ee5116d)
- deps: update dependency sqlglot to >=23.4,<25.19 (#9962) (4c136d8)
- dot-sql: ensure that CTEs can be used in
.sql
(b63e0fd) - duckdb: fix create_table() in databases with spaces in the name (#9817) (9da3c9f)
- exasol: properly handle returning BIGINT values (e20bdad)
- ir: convert analytic functions to window functions in filters (31295dd)
- mssql: remove sort key to keep order (#9848) (3780a13)
- mssql: support
.cache()
for caching tables (1de2f45) - oracle: avoid double cursor closing by removing unnecessary
close
...
9.3.0
9.3.0 (2024-08-07)
Features
- api: support
ignore_null
incollect
(71271dd) - api: support
ignore_null
infirst
/last
(8d4f97f) - api: support
order_by
in order-sensitive aggregates (collect
/group_concat
/first
/last
) (#9729) (a18cb5d) - api: support quarterly truncation (#9715) (75b31c2), closes #9714
- array: implement min, max, any, all, sum, mean (#9704) (793efbc)
- bigquery: support timestamp bucket (fd61f2c)
- datafusion:
pivot_longer
(2330b0c) - datafusion: enable array flatten, group concat, and timestamp now (4d110a0)
- datafusion: struct literals (a63cee9)
- datafusion: unnest (a706f54)
- duckdb: add support for passing a subset of column types to
read_csv
(#9776) (c1dcf67) - duckdb: support arbitrary url prefixes (#9691) (11af489)
- mssql: support case-sensitive collations (#9700) (9382a0e)
- oracle: support group_concat operator (47d97ea)
- pyspark: add support for pyarrow and python UDFs (#9753) (02a1d48)
- snowflake: add
userinfo
URL parsing (524a2fa) - ux: allow window functions in predicates and compile to
QUALIFY
where possible (#9787) (0370bcb)
Bug Fixes
- algolia: add parent class docstring to algolia index (#9739) (3bc9799)
- bigquery: repr geospatial values in interactive mode (#9712) (bd8c93f)
- case: fix dshape, error on noncomparable and empty cases (#9559) (ff2d019)
- compiler-internals: define unsupported operations after simple operations (#9755) (d9b6264)
- deps: update dependency atpublic to v5 (#9697) (a4f3940)
- deps: update dependency sqlglot to >=23.4,<25.10 (#9774) (7144257)
- deps: update dependency sqlglot to >=23.4,<25.8 (#9696) (d4a2ea2)
- deps: update dependency sqlglot to >=23.4,<25.9 (#9719) (b1d8b2e)
- drop: ignore order for
DropColumns
equality (#9677) (ae1e112) - druid: get basic timestamp functionality working (#9692) (6cd3eee)
- duckdb: avoid literals casts that might defeat optimization (e4ff1bd)
- duckdb: ensure that array remove doesn't remove
NULL
s (f0c3be4) - duckdb: use
register
directly instead of callingread_in_memory
(597817f) - internals: ensure that CTEs are emitted in topological order (#9726) (acd7d82)
- polars: fix polars
std
/var
to properly handlesample
/population
(f83d84f) - polars: remove bogus minus-one-week truncation (ac519b2)
- postgres: handle enums by delegating to the parent class (#9769) (3f01075), closes #9295
- snowflake: bring back
where
filter support ingroup_concat
; fixarray_agg
ordering (#9758) (6e7e4de) - sql: only return tables in
current_database
(#9748) (c7f5717) - types: fix histogram bin allocation (#9711) (6634864), closes #9687
Documentation
- algolia: add custom attributes to backend and core methods (#9730) (d9473cf)
- browser-repl: fix jupyterlite build (#9762) (f403aa1)
- fix spelling in pivot_longer explanation (#9780) (3201d8b)
- fix typo in
drop
method docstring (#9727) (4cf0014) - presentations: update overview slides (#9685) (d3a2c0c)
- replace all double graves with single graves (#9679) (dd26d60)
Refactors
- dependencies: pandas and numpy are now optional for non-backend installs (#9564) (cff210a)
- duckdb: use replace to generate less sql (#9713) (f89aa32)
- internals: remove unnecessary dynamism in
drop
method (#9682) (5ac84c5) - pandas: remove unreachable code in pandas backend (#9786) (dc6bfe2)
- polars: delete some dead versioning code (b23c5a3)
- polars: remove casting where possible; handle conversion on output (#9673) (8717629)
- polars: remove extra backwards co...
9.2.0
9.2.0 (2024-07-22)
Features
- api: accept more input types in
ibis.range
(#9659) (310ad30) - api: add
nulls_first=False
argument toorder_by
(#9385) (ce9011e) - api: add
TableUnnest
operation to support cross-join unnest semantics as well asoffset
(#9423) (3352a84) - api: add positional joins (#9533) (85ea9da)
- api: allow grouping by scalar values (#9451) (14f1821)
- api: support deferred or string column names in
cov
/corr
methods (#9657) (4d135b3) - api: support selectors in window function
order_by
andgroup_by
(#9649) (0ad47de) - backends: support creation from a DB-API con (#9603) (fc4d1e3)
- bigquery: implement CountDistinctStar (#9470) (273e4bc)
- caching: tie lifetime of cached tables to python refs (#9477) (f51546e)
- datafusion: datafusion enhancements (#9544) (f11ca43)
- dtypes: fall back to
dt.unknown
for unknown types (#9567) (6e0b5f5) - dtypes: fall back to
dt.unknown
for unknown types (#9576) (56a10d2) - duckdb: use
delta_scan
instead of reading pyarrow datasets (#9566) (0ff595e) - flink: create views from more mem data types (#9622) (b83fc2b)
- geospatial: use geoarrow extension types when returning geometry columns as pyarrow (#9549) (cba7367)
- polars: add more accurate type mapping for timestamps (#8954) (3eafac4)
- polars: support version 1.0 and later (#9516) (62a1864)
- postgres: support basic jsonb type and existing operations (#9630) (7179cc6)
- pyarrow: support
__arrow_c_schema__
onibis.Schema
objects (#9665) (00a776e) - pyspark: implement new experimental read/write directory methods (#9272) (adade5e)
Bug Fixes
- api: add support for using deferreds in the
argmin
/argmax
key
argument (#9652) (3f05cbc) - bigquery: escape table names with spaces for bigquery backend (#9589) (ca21dbb)
- bigquery: support microseconds in time literals (#9610) (c876abc), closes #9609
- clickhouse: generate redundant aliases to workaround clickhouse naming behavior (#9525) (b44dac2), closes #9508
- clickhouse: support
Date32
database type (#9509) (efa6fb7) - datatypes: proper handling of srid in geospatial datatypes (#9519) (a3ceb59)
- deps: update dependency datafusion to v39 (#9506) (21ef0a6)
- deps: update dependency fsspec to <2024.6.2 (#9463) (8e225ec)
- deps: update dependency geopandas to v1 (#9437) (fa1037b)
- deps: update dependency numpy to v2 (#9395) (3cb39a5)
- deps: update dependency pyarrow to v17 (#9614) (16998df)
- deps: update dependency sqlglot to >=23.4,<25.3 (#9401) (bdc1b3f)
- deps: update dependency sqlglot to >=23.4,<25.4 (#9427) (8e015b6)
- deps: update dependency sqlglot to >=23.4,<25.5 (#9472) (f6f80da)
- deps: update dependency sqlglot to >=23.4,<25.6 (#9523) (6a748c4)
- deps: update dependency sqlglot to >=23.4,<25.7 (#9628) (f5207ff)
- druid: handle typed nulls where possible (#9452) (33ec754)
- fix and improve shape inference in many ops (7a0b21e)
- ir: avoid deduplicating filters based solely on their name (#9476) (b35582e), closes #9474
- ir: repr iterables when constructing name of operations (#9480) (f5a541c)
- join: skip substitution of non-field references in join chains (#9595) (61ef0ed)
- mssql: always pass port to
pyodbc
in host string (#9656) (2e3fd9a) - mssql: avoid calling
.commit()
unless a DDL operation is being performed (#9658) (69c5bf0), closes #9654 - mssql: fix temporary table creation and implement
cache
(#9434) ([196d8a...
9.1.0
9.1.0 (2024-06-13)
Features
- all: enable passing in-memory data to create_table (#9251) (fa15c7d), closes #6593 #8863
- api: add
Table.value_counts
for easy group by count on multiple fields (aba913d) - api: isoyear method (#9034) (4707c44)
- api: support
type
arg to ibis.null() (8db686e) - api: support wider range of types in
where
arg to column reductions (582165f) - api: support wider range of types in
where
arg to table reductions (7aba385) - bigquery: implement a few URL ops (#9210) (3d0f9bc)
- bigquery: support filtering by
_TABLE_SUFFIX
when using a wildcard table name (#9375) (62a25c4), closes #9371 - datafusion: use pyarrow for type conversion (#9299) (5bef96a)
- drop Python 3.9 and test on Python 3.10/3.12 (#9213) (c06285e)
- duckdb: add catalog support to create_table (#9147) (07331b5)
- duckdb: allow to use named in-memory db (#9241) (67460aa), closes #9240
- duckdb: support and test 1.0 (#9297) (395c8b5)
- pandas,dask: implement ops.StructColumn (#9302) (ea81d85)
- polars: accept list of CSVs to read_csv (#9232) (7a272e3), closes #9230
- polars: implement
create_view
/drop_view
/drop_table
(#9263) (c4324f5) - postgres: provide translation for
hash
ops (#9348) (57e2348) - pyarrow: support Arrow PyCapsule interface on
ibis.Table
objects (1a262b9) - pyspark: builtin udf support (#9191) (142c105)
- pyspark: provide a mode option to manage both batch and streaming connections (e425ad5)
- pyspark: support reading from and writing to Kafka (#9266) (1c7c6e3)
- selectors: parse Python types in
s.of_type
(#9356) (c0ebdc8) - snowflake: implement array map and array filter (#9178) (9b42751)
- snowflake: implement support for
asof_join
API (#9180) (49c6ce3) - snowflake: implement Table.sample (#9071) (307334b)
- ux: improve error message on unequal schemas during set ops (#9115) (5488896)
Bug Fixes
- api: treat
col == None
orcol == ibis.NA
ascol.isnull()
(#9114) (711bf9f) - bigquery: only register memtable if obj is not None (#9268) (f175d0a)
- bigquery: quote all parts of table names (#9141) (e1338d5)
- bigquery: quote qualified memtable names (#9149) (878d0d5)
- bigquery: strip whitespace from bigquery field names (#9160) (8e5cc3b), closes #9112
- clickhouse: more explicitly disallow null structs (#9305) (fc1d00f)
- convert the uint64's from some backends' hash() to the desired int64 (900ecca)
- datatypes: manually cast the type of
pos
toint16
fortable.info()
(#9139) (9eb1ed1) - datatypes: manually cast the type of pos to int16 for
table.describe()
(#9314) (c7fcddf) - ddl: use column names, not position, for insertion order (#9264) (3506f40)
- deps: remove pydruid sqlalchemy dependency (#9092) (a0df103)
- deps: update dependency datafusion to v37 (#9189) (49ecf8d)
- deps: update dependency datafusion to v38 (#9278) (77aaecd)
- deps: update dependency fsspec to <2024.5.1 (#9201) (15a5257)
- deps: update dependency fsspec to <2024.6.1 (#9304) (d600a0d)
- deps: update dependency sqlglot to >=23.4,<23.14 (#9118) (d8119fb)
- deps: update dependency sqlglot to >=23.4,<23.15 (#9151) (ac2201d)
- deps: update dependency sqlglot to >=23.4,<23.17 (#9209) (82a5f93)
- deps: update dependency sqlglot to >=23.4,<23.18 (#9212) (b92dd7b)
- deps: update dependency sqlglot to >=23.4,<24.2 (#9277) (98cb460)
- deps: update dependency sqlglot to >=23.4,<25.2 ([#9368](htt...