Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## in progress

- Connector: Verified support for DuckDB 2.x

## 2026/10/21 v0.20.0

- Keep datetime normalization compatible with dlt 1.31 while retaining support for
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ dependencies = [
"dlt[deltalake]>=1.22,<1.32",
"dlt-cratedb<0.2",
"dlt-filesystem",
"duckdb<1.6",
"duckdb<2.1",
"duckdb-engine<0.18",
"elasticsearch<10",
"facebook-business<27",
Expand Down
4 changes: 3 additions & 1 deletion tests/saas/test_hostaway.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ def test_hostaway_source_full_refresh(hostaway_table, tmp_path):
assert result.exit_code == 0

conn = duckdb.connect(abs_db_path)
result = conn.sql(f"select count(*) from raw.{hostaway_table}").fetchone()
result = (
conn.sql(f"select count(*) from raw.{hostaway_table}").limit(1).fetchall()[0]
)
assert result is not None, "Database result is empty"
assert result[0] > 0, f"No rows ingested for table {hostaway_table}"
conn.close()
6 changes: 5 additions & 1 deletion tests/saas/test_linkedin.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@ def test_linkedin_ads_source_full_refresh(linkedin_ads_table, tmp_path):
assert result.exit_code == 0

conn = duckdb.connect(abs_db_path)
result = conn.sql(f"select count(*) from raw.{linkedin_ads_table}").fetchone()
result = (
conn.sql(f"select count(*) from raw.{linkedin_ads_table}")
.limit(1)
.fetchall()[0]
)
assert result is not None, "Database result is empty"
assert result[0] > 0, f"No records found in table raw.{linkedin_ads_table}"
conn.close()
4 changes: 2 additions & 2 deletions tests/saas/test_stripe.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def test_stripe_source_full_refresh(stripe_table, tmp_path):

# Verify data was loaded
conn = duckdb.connect(abs_db_path)
res = conn.sql(f"select count(*) from raw.{stripe_table}s").fetchone()
res = conn.sql(f"select count(*) from raw.{stripe_table}s").limit(1).fetchall()[0]
conn.close()
assert res, "Database result is empty"
assert res[0] > 0, f"No {stripe_table} records found"
Expand Down Expand Up @@ -82,7 +82,7 @@ def test_stripe_source_incremental(stripe_table, tmp_path):

# Verify data was loaded
conn = duckdb.connect(abs_db_path)
res = conn.sql(f"select count(*) from raw.{stripe_table}s").fetchone()
res = conn.sql(f"select count(*) from raw.{stripe_table}s").limit(1).fetchall()[0]
conn.close()
assert res, "Database result is empty"
if res[0] == 0:
Expand Down
4 changes: 3 additions & 1 deletion tests/stream/test_mqbridge_brokerless.py
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,9 @@ def test_memory_transport_end_to_end(tmp_path):
rows = con.sql(
"select order_id, amount from out.orders order by order_id"
).fetchall()
distinct_row = con.sql("select count(distinct _mqb_id) from out.orders").fetchone()
distinct_row = (
con.sql("select count(distinct _mqb_id) from out.orders").limit(1).fetchall()[0]
)
assert distinct_row is not None
distinct_ids = distinct_row[0]
con.close()
Expand Down
Loading