Skip to content

Failure to collect operations that join two lazily retrieved Polars lazyframes #583

Description

@ak-gupta

What happens?

I have downstream functions that expect multiple polars.LazyFrame objects. In my upstream code, I want to source my data from DuckDB to enable efficient pushdown. However, using DuckDBPyRelation.pl(lazy=True) raises a ComputeError when operating on multiple LazyFrame objects.

To Reproduce

import duckdb

with duckdb.connect() as con:
    con.sql("CREATE TABLE tbl (t1 INTEGER)")
    con.sql("CREATE TABLE tbl2 (t1 INTEGER)")

    # Retrieve the results
    rel = con.table("tbl").pl(lazy=True)
    rel2 = con.table("tbl2").pl(lazy=True)

    # Compute and raise the error
    df = rel.join(rel2, on="t1", how="inner").collect()

the block above raises

ComputeError: caught exception during execution of a Python source, exception: InvalidInputException: Invalid Input Error: Attempting to execute an unsuccessful or closed pending query result

OS:

Linux - aarch64

DuckDB Package Version:

1.5.5

Python Version:

3.12

Full Name:

Akshay Gupta

Affiliation:

Capital One

What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.

I have tested with a stable release

Did you include all relevant data sets for reproducing the issue?

Yes

Did you include all code required to reproduce the issue?

  • Yes, I have

Did you include all relevant configuration to reproduce the issue?

  • Yes, I have

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions