Source: duckdb:demo.duckdb · Target: local:iceberg · Finding dated 2026-10-19 11:33, on the scope run · Canot 0.3.0
Exit feasible on this scope. 2 points to address before leaving.
These measurements describe this exercise, on this scope. They do not compare two platforms.
Destination: local:iceberg · location: …/iceberg/warehouse · catalog: SQLite (catalog.db in the output folder).
The copy is in Apache Iceberg format: you can reread it without Canot. The reread.sql file next to this report holds the DuckDB commands to do so.
| Table | Source rows | Target rows | Result | Details |
|---|---|---|---|---|
| tpch.customer | 150000 | 150000 | identical | |
| tpch.lineitem | 6001215 | 6001215 | precision | l_loaded_at.min: Timestamp('1992-01-31 00:00:00.287971001') / datetime.datetime(1992, 1, 31, 0, 0, 0, 287971); l_loaded_at.max: Timestamp('1998-10-31 00:00:05.354144001') / datetime.datetime(1998, 10, 31, 0, 0, 5, 354144) |
| tpch.nation | 25 | 25 | identical | |
| tpch.orders | 1500000 | 1500000 | identical | |
| tpch.part | 200000 | 200000 | identical | |
| tpch.partsupp | 800000 | 800000 | identical | |
| tpch.region | 5 | 5 | identical | |
| tpch.supplier | 10000 | 10000 | identical |
| Query | Result | Details |
|---|---|---|
select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price,
sum(l_extendedprice * (1 - l_d | match | |
select l_orderkey, sum(l_extendedprice * (1 - l_discount)) as revenue, o_orderdate
from tpch.customer, tpch.orders, tpch.lineitem
where c_mk | match | |
select sum(l_extendedprice * l_discount) as revenue from tpch.lineitem
where l_shipdate >= date '1994-01-01' and l_shipdate < date '1995-01- | match | |
select * from tpch.lineitem order by l_orderkey, l_linenumber limit 50 | mismatch | sorted row 0, column 16: Timestamp('1996-02-12 00:00:00.000001001') / datetime.datetime(1996, 2, 12, 0, 0, 0, 1) |
| tpch.lineitem.l_loaded_at | TIMESTAMP_NS → timestamp[us] | ns -> us (Iceberg v2 does not keep nanoseconds) (possible loss) |
Columns with a platform-specific type: 0. Objects to rebuild (views, procedures, tasks…):
| Type | Count | Examples |
|---|---|---|
| none detected | ||
{"float_rel": 1e-09, "decimal_abs": 0.0, "columns": {}}
Chained log: 23 entries, last hash 21c420989f4c97d14fc6c63525990aab7ed9c79496aca5f4739785adcf1a0c3e.
Any change to the log shows. Verification: canot verify-evidence evidence
Fingerprint of the public signing key: 47371597 1591e860 04c9cf93 0acc0d7d.
The signature attests the integrity of the log. It establishes neither the identity of the author nor the date: for that, keep the report in your own timestamped archive.
This report is a record of measurements for your own assessment. It is not a certification and it does not say whether your contracts or your organization meet any regulation.