Skip to content

Merge with v1.5-andium#351

Draft
evertlammerts wants to merge 194 commits intoduckdb:mainfrom
evertlammerts:main
Draft

Merge with v1.5-andium#351
evertlammerts wants to merge 194 commits intoduckdb:mainfrom
evertlammerts:main

Conversation

@evertlammerts
Copy link
Collaborator

No description provided.

duckdblabs-bot and others added 30 commits December 16, 2025 04:22
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-16 04:22:21
- DuckDB SHA: 5b03faf8a62ecb64a777753df7e83d5d75c3c9b2
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20255977636
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-17 07:19:57
- DuckDB SHA: 91d691a90831e79381c2b5c457cc6dd70a0d5ea2
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20294357979
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-18 06:11:31
- DuckDB SHA: 7f217607e498301fd6aac0a623e893419fb14ae5
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20327398615
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-19 05:49:41
- DuckDB SHA: 1c87e80fdc53ba213ab19d7e21bfff7087d8306c
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20360777362
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-21 05:51:06
- DuckDB SHA: 5a334c23dadba0f24322ce609dc0f15bc52c41a8
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20405272017
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-23 06:25:00
- DuckDB SHA: 4713d0549e055683305a3083791b3b53061c0b01
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20452804225
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2025-12-25 05:47:57
- DuckDB SHA: 0761d5cc7a033d041ad5514a18642a60cb0cb392
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20499606323
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2026-01-01 06:26:22
- DuckDB SHA: de5283b5b985cc239904f5404925521bf09aba1d
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20633600560
When allowMissingColumns=True, the method now correctly handles missing
columns from both the left and right DataFrames by:
- Adding missing columns from the right DataFrame to the left as NULL
- Ensuring all columns from the left DataFrame are present in the right
- Properly aligning column order to match Spark's behavior

This ensures the union result contains all columns from both DataFrames,
with NULL values where columns are missing, matching PySpark behavior.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2026-01-05 06:03:40
- DuckDB SHA: a5c128a833f0842f276751130c5743be43f3a345
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20706240602
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2026-01-06 08:01:39
- DuckDB SHA: 686f25a362e562bb6acc51c59f91a951cdd2668b
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20741534318
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2026-01-07 06:45:56
- DuckDB SHA: acc36fbe6e1417df3968c00ec35aaf01821467e2
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20772622060
Bump duckdb submodule:
- Target branch: v1.4-andium
- Date: 2026-01-08 07:16:56
- DuckDB SHA: 908d3eb2815c8d96a5a6e7d8f8b7aafcb52a76ad
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/20808339694
evertlammerts and others added 30 commits February 19, 2026 15:40
Bump duckdb submodule:
- Target branch: v1.5-variegata
- Date: 2026-02-19 07:26:40
- DuckDB SHA: ef7a5a8c3090204407d4227584ae32019ae43066
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/22171919332
oneliner to get rid of global state
This translates DuckDB filters into Polars expressions and pushes them
into the lazy plan before collection, so only matching rows are
materialized. Column projections are applied via table.select() on the
resulting Arrow table.
…pure.Expression.isin method (duckdb#335)

Continued from duckdb#73 

Null handling seems to work fine, afaics. We are using
[`Expression.isin()`](https://arrow.apache.org/docs/python/generated/pyarrow.dataset.Expression.html#pyarrow.dataset.Expression.isin),
which does not have a `skipp_nulls` kwarg. It uses the same default
semantics as
[`pyarrow.compute.is_in`](https://arrow.apache.org/docs/python/generated/pyarrow.compute.is_in.html#pyarrow.compute.is_in),
which is `skip_nulls = False`. This is not exactly the same as duckdb's
semantics, because DuckDB will not return NULL values even if NULL is in
the IN list:

```
D select * from VALUES(1), (2), (3), (NULL) as t(myint) where myint in (2, NULL);
┌───────┐
│ myint │
│ int32 │
├───────┤
│   2   │
└───────┘
```

But this is no big deal. We might let more rows through than is needed,
but duckdb will filter them out anyway. Also see the test.
Bump duckdb submodule:
- Target branch: v1.5-variegata
- Date: 2026-02-20 08:48:35
- DuckDB SHA: 8b06a9a8545c346806e66fa9a9f11902114eaa01
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/22216832481
Bump duckdb submodule:
- Target branch: v1.5-variegata
- Date: 2026-02-24 05:19:23
- DuckDB SHA: d66b932e8e5e784d954f08624eb3a867c9df6407
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/22337228637
Bump duckdb submodule:
- Target branch: v1.5-variegata
- Date: 2026-02-25 07:25:25
- DuckDB SHA: 4213f2bae35fd8790c0d0551c4d24246a039a0c8
- Trigger:
https://github.com/duckdb/duckdb-python/actions/runs/22385989865
…b#342)

Fixes duckdb#137 

This uses `PhysicalArrowCollector` to support __arrow_c_stream__ on
relations without having to materialize into duckdb native format first.
Note that we can't use `ResultArrowArrayStreamWrapper` because it calls
`TryFetchChunk`, which isn't implemented on `ArrowQueryResult`, so we
have our own lightweight wrapper here.
- added Literal for DuckDBPyRelation.join "how" argument possible choices
… syntax (duckdb#345)

This small PR focus on:

1) new Literal type for DuckDBPyRelation.join "how" argument, according
to the following documentation:
https://duckdb.org/docs/stable/clients/python/relational_api#join
This will provide autocomplete and an immediate overview of the
supported options.

2) Replacement of all deprecated 3.9 typing.Union and typing.List usages
by their modern counterparts, standardizing this across the file
(sometimes it was the old syntax, sometimes the modern one).

I wanted to keep this separated from my next PR who will focus on the
Expressions inputs typing, to keep them focused and make review easier
(since this one modify lines scattered across the file.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants