Skip to content

Commit 4478cce

Browse files
committed
fix: Lance broadcast totalRows, Iceberg bench discovery, add conformance tests
- Master DO now includes totalRows and r2Prefix in broadcast payload - Query DO uses broadcast totalRows for Lance (was computing 0 from columns) - Query DO lazy-loads full dataset when r2Prefix present in broadcast - Bench script triggers Iceberg lazy-load via query before benchmarking - Add 66 conformance tests: Parquet/Lance parsing, column decoding, page skipping, filter correctness, cross-format consistency
1 parent 964ad6b commit 4478cce

File tree

4 files changed

+914
-6
lines changed

4 files changed

+914
-6
lines changed

scripts/bench.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ async function main(): Promise<void> {
167167
"simple.parquet", "simple_plain.parquet", "simple_snappy.parquet",
168168
"benchmark_100k.parquet", "benchmark_100k_uncompressed.parquet",
169169
"bench_100k_3col.parquet", "bench_100k_numeric.parquet", "bench_1m_numeric.parquet",
170+
"bench_iceberg_100k",
170171
];
171172

172173
console.log("Refreshing tables...");
@@ -189,6 +190,27 @@ async function main(): Promise<void> {
189190
}
190191
await new Promise(r => setTimeout(r, 500));
191192

193+
// Pre-register Iceberg tables by triggering lazy-load via a query
194+
const icebergTables = ["bench_iceberg_100k"];
195+
for (const tbl of icebergTables) {
196+
try {
197+
const resp = await fetch(`${BASE_URL}/query`, {
198+
method: "POST",
199+
headers: { "content-type": "application/json" },
200+
body: JSON.stringify({ table: tbl, filters: [], projections: ["id"], limit: 1 }),
201+
});
202+
if (resp.ok) {
203+
console.log(` Iceberg OK: ${tbl}`);
204+
} else {
205+
const text = await resp.text();
206+
console.log(` Iceberg Skip: ${tbl} (${resp.status}: ${text.slice(0, 100)})`);
207+
}
208+
} catch {
209+
console.log(` Iceberg Skip: ${tbl}`);
210+
}
211+
}
212+
await new Promise(r => setTimeout(r, 500));
213+
192214
const tablesResp = await fetch(`${BASE_URL}/tables`);
193215
const { tables } = await tablesResp.json() as { tables: { name: string; totalRows: number }[] };
194216
console.log("\nAvailable tables:", tables.map(t => `${t.name}(${t.totalRows})`).join(", "));

0 commit comments

Comments
 (0)