diff --git a/daft-parquet-partitioned/__pycache__/server.cpython-314.pyc b/daft-parquet-partitioned/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000..55350b2768 Binary files /dev/null and b/daft-parquet-partitioned/__pycache__/server.cpython-314.pyc differ diff --git a/daft-parquet-partitioned/results/20260824/c6a.2xlarge.json b/daft-parquet-partitioned/results/20260824/c6a.2xlarge.json new file mode 100644 index 0000000000..f93ae7d332 --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 9, + "data_size": 14737666736, + "concurrent_qps": 0.213, + "concurrent_error_ratio": 0, + "result": [ + [0.39, 0.064, 0.062], + [0.478, 0.125, 0.134], + [0.568, 0.14, 0.135], + [0.991, 0.13, 0.122], + [1.513, 1.109, 1.094], + [2.135, 1.582, 1.574], + [0.383, 0.052, 0.05], + [0.497, 0.131, 0.136], + [4.005, 3.638, 3.714], + [2.844, 2.434, 2.468], + [1.594, 0.761, 0.765], + [1.192, 0.808, 0.814], + [2.238, 1.852, 1.864], + [6.445, 6.08, 6.055], + [2.457, 2.083, 2.098], + [1.977, 1.431, 1.456], + [4.999, 4.132, 4.05], + [4.161, 3.732, 3.719], + [7.067, 6.104, 5.897], + [0.504, 0.095, 0.095], + [9.822, 2.649, 2.675], + [11.448, 2.937, 2.955], + [22.102, 7.54, 7.502], + [55.707, 44.157, 43.7], + [2.805, 0.887, 0.866], + [1.226, 0.904, 0.902], + [2.897, 1.021, 1.006], + [9.815, 3.874, 3.876], + [26.009, 25.554, 25.608], + [1.757, 1.378, 1.375], + [2.754, 1.404, 1.431], + [6.434, 1.697, 1.718], + [113.717, 104.459, 110.037], + [14.129, 12.5, 11.173], + [14.831, 13.829, 13.445], + [2.844, 2.473, 2.46], + [0.631, 0.158, 0.166], + [0.509, 0.093, 0.082], + [0.523, 0.071, 0.07], + [0.784, 0.277, 0.273], + [0.474, 0.046, 0.043], + [0.471, 0.043, 0.046], + [0.467, 0.041, 0.038] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c6a.4xlarge.json b/daft-parquet-partitioned/results/20260824/c6a.4xlarge.json new file mode 100644 index 0000000000..117baaea50 --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 20, + "data_size": 14737666736, + "concurrent_qps": 0.445, + "concurrent_error_ratio": 0, + "result": [ + [0.381, 0.044, 0.044], + [0.456, 0.093, 0.095], + [0.456, 0.099, 0.099], + [0.746, 0.115, 0.114], + [1.059, 0.719, 0.727], + [1.488, 0.936, 0.95], + [0.375, 0.039, 0.039], + [0.484, 0.098, 0.098], + [2.886, 2.453, 2.466], + [2.252, 1.653, 1.657], + [1.139, 0.547, 0.568], + [1.09, 0.558, 0.559], + [1.681, 1.024, 1.033], + [4.028, 3.253, 3.278], + [2.965, 1.207, 1.2], + [1.343, 0.884, 0.902], + [3.902, 2.473, 2.528], + [3.778, 2.27, 2.263], + [6.456, 4.039, 4.056], + [0.58, 0.085, 0.087], + [9.864, 2.386, 2.376], + [11.484, 2.62, 2.599], + [22.096, 5.614, 5.609], + [55.761, 10.165, 10.178], + [2.846, 0.55, 0.542], + [1.001, 0.533, 0.536], + [2.852, 0.607, 0.595], + [9.829, 3.252, 3.189], + [16.567, 16.244, 16.38], + [2.015, 1.681, 1.644], + [2.628, 0.95, 0.968], + [6.29, 1.303, 1.315], + [8.071, 5.613, 5.706], + [12.246, 6.637, 6.548], + [12.61, 7.404, 7.414], + [1.956, 1.578, 1.582], + [0.548, 0.152, 0.145], + [0.446, 0.086, 0.088], + [0.595, 0.068, 0.068], + [0.675, 0.254, 0.254], + [0.483, 0.04, 0.042], + [0.479, 0.041, 0.04], + [0.481, 0.036, 0.037] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c6a.large.json b/daft-parquet-partitioned/results/20260824/c6a.large.json new file mode 100644 index 0000000000..8ff32c4a5d --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 2, + "data_size": 14737666736, + "concurrent_qps": 0.043, + "concurrent_error_ratio": 0, + "result": [ + [0.519, 0.178, 0.176], + [0.743, 0.348, 0.343], + [0.884, 0.464, 0.474], + [0.833, 0.323, 0.328], + [4.314, 3.912, 4.004], + [6.345, 5.998, 6.021], + [0.464, 0.131, 0.133], + [0.707, 0.339, 0.346], + [10.484, 10.184, 10.18], + [7.62, 7.203, 7.327], + [2.34, 1.901, 1.879], + [2.542, 2.037, 2.067], + [6.959, 6.607, 6.61], + [23.753, 23.274, 23.35], + [8.003, 7.732, 7.693], + [5.093, 4.9, 4.911], + [26.64, 40.713, 31.311], + [15.407, 21.68, 23.964], + [322.68, 302.997, 323.356], + [0.682, 0.27, 0.257], + [10.054, 8.239, 8.309], + [11.587, 9.762, 9.842], + [28.679, 28.674, 28.601], + [382.539, 389.166, 390.25], + [3.748, 3.277, 3.206], + [3.624, 3.281, 3.277], + [4.241, 3.704, 3.747], + [14.221, 13.474, 14.004], + [97.189, 97.246, 97.038], + [6.996, 6.666, 6.472], + [5.812, 5.345, 5.435], + [8.175, 8.184, 7.452], + [null, null, null], + [869.451, 901.115, 1560.917], + [2001.029, 1350.555, 1807.291], + [9.086, 8.795, 8.841], + [0.795, 0.326, 0.341], + [0.596, 0.165, 0.169], + [0.55, 0.111, 0.112], + [1.19, 0.673, 0.671], + [0.496, 0.084, 0.08], + [0.5, 0.089, 0.087], + [0.5, 0.079, 0.077] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c6a.metal.json b/daft-parquet-partitioned/results/20260824/c6a.metal.json new file mode 100644 index 0000000000..ed57460b46 --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 64, + "data_size": 14737666736, + "concurrent_qps": 1.06, + "concurrent_error_ratio": 0, + "result": [ + [0.43, 0.035, 0.034], + [0.506, 0.069, 0.067], + [0.488, 0.06, 0.054], + [0.697, 0.078, 0.078], + [0.755, 0.189, 0.194], + [1.282, 0.322, 0.268], + [0.429, 0.043, 0.041], + [0.531, 0.089, 0.082], + [2.179, 1.265, 1.212], + [2.12, 0.851, 0.831], + [0.921, 0.436, 0.448], + [0.989, 0.464, 0.465], + [1.13, 0.316, 0.307], + [2.444, 0.547, 0.526], + [1.203, 0.329, 0.333], + [0.708, 0.198, 0.211], + [2.432, 0.535, 0.536], + [2.379, 0.451, 0.469], + [4.3, 0.866, 0.722], + [0.506, 0.063, 0.055], + [9.712, 0.945, 0.908], + [11.304, 1.505, 0.988], + [21.746, 2.527, 2.021], + [55.819, 3.024, 2.766], + [2.707, 0.229, 0.214], + [0.955, 0.216, 0.205], + [2.692, 0.229, 0.214], + [9.802, 1.37, 1.399], + [12.829, 12.341, 12.236], + [0.677, 0.294, 0.291], + [2.321, 0.375, 0.32], + [5.781, 0.394, 0.443], + [4.995, 1.207, 1.364], + [10.284, 1.58, 1.528], + [10.407, 1.614, 1.622], + [0.762, 0.362, 0.33], + [0.592, 0.164, 0.157], + [0.491, 0.093, 0.087], + [0.513, 0.076, 0.072], + [0.74, 0.271, 0.249], + [0.459, 0.046, 0.046], + [0.454, 0.049, 0.049], + [0.446, 0.044, 0.043] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c6a.xlarge.json b/daft-parquet-partitioned/results/20260824/c6a.xlarge.json new file mode 100644 index 0000000000..551bfa45cf --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 4, + "data_size": 14737666736, + "concurrent_qps": 0.072, + "concurrent_error_ratio": 0.946, + "result": [ + [0.478, 0.109, 0.101], + [0.613, 0.189, 0.187], + [0.633, 0.245, 0.241], + [0.792, 0.188, 0.182], + [2.219, 1.938, 1.95], + [3.351, 2.932, 2.994], + [0.476, 0.078, 0.077], + [0.624, 0.191, 0.197], + [5.949, 5.618, 5.593], + [4.347, 3.969, 3.954], + [1.537, 1.125, 1.117], + [1.606, 1.196, 1.225], + [3.68, 3.282, 3.299], + [12.303, 12.019, 11.979], + [4.192, 3.82, 3.833], + [2.805, 2.431, 2.452], + [6.983, 6.714, 6.652], + [6.481, 6.181, 6.218], + [48.831, 52.439, 43.744], + [0.501, 0.146, 0.14], + [9.756, 4.049, 4.024], + [11.435, 4.695, 4.685], + [22.312, 15.495, 13.565], + [56.167, 55.855, 55.168], + [2.823, 1.645, 1.631], + [2.004, 1.68, 1.667], + [2.919, 1.893, 1.903], + [9.888, 6.692, 6.729], + [50.405, 49.985, 49.95], + [2.932, 2.561, 2.565], + [3.112, 2.7, 2.692], + [6.832, 3.023, 3.064], + [null, null, null], + [76.596, 82.612, 73.229], + [133.361, 87.591, 92.677], + [4.875, 4.466, 4.478], + [0.689, 0.204, 0.21], + [0.529, 0.102, 0.096], + [0.535, 0.083, 0.082], + [0.893, 0.395, 0.38], + [0.479, 0.054, 0.054], + [0.478, 0.058, 0.057], + [0.483, 0.05, 0.049] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c7a.metal-48xl.json b/daft-parquet-partitioned/results/20260824/c7a.metal-48xl.json new file mode 100644 index 0000000000..35b7a39c2a --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 65, + "data_size": 14737666736, + "concurrent_qps": 0.99, + "concurrent_error_ratio": 0, + "result": [ + [0.42, 0.032, 0.028], + [0.501, 0.066, 0.063], + [0.48, 0.046, 0.045], + [0.743, 0.07, 0.069], + [1.101, 0.109, 0.099], + [1.519, 0.229, 0.21], + [0.426, 0.035, 0.033], + [0.53, 0.08, 0.075], + [1.825, 1.124, 1.137], + [1.673, 0.701, 0.699], + [0.884, 0.398, 0.401], + [0.885, 0.38, 0.365], + [1.089, 0.281, 0.266], + [2.402, 0.505, 0.467], + [1.178, 0.288, 0.275], + [0.689, 0.139, 0.12], + [2.325, 0.339, 0.299], + [2.325, 0.318, 0.291], + [4.182, 0.413, 0.364], + [0.516, 0.054, 0.05], + [9.709, 0.776, 0.709], + [11.316, 0.893, 0.819], + [21.721, 1.263, 1.145], + [55.772, 2.456, 2.545], + [2.573, 0.215, 0.202], + [0.952, 0.211, 0.196], + [2.689, 0.218, 0.194], + [9.727, 0.884, 0.862], + [15.656, 15.249, 14.686], + [0.536, 0.143, 0.136], + [2.31, 0.269, 0.257], + [5.726, 0.299, 0.279], + [4.932, 0.646, 0.621], + [10.093, 1.426, 1.433], + [10.252, 1.394, 1.36], + [0.666, 0.178, 0.167], + [0.611, 0.146, 0.145], + [0.5, 0.091, 0.08], + [0.521, 0.074, 0.069], + [0.754, 0.236, 0.237], + [0.459, 0.048, 0.043], + [0.46, 0.046, 0.038], + [0.446, 0.04, 0.038] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c8g.4xlarge.json b/daft-parquet-partitioned/results/20260824/c8g.4xlarge.json new file mode 100644 index 0000000000..f4414508df --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 21, + "data_size": 14737666736, + "concurrent_qps": 0.503, + "concurrent_error_ratio": 0, + "result": [ + [0.359, 0.03, 0.029], + [0.465, 0.05, 0.049], + [0.497, 0.062, 0.063], + [0.795, 0.051, 0.05], + [0.91, 0.291, 0.293], + [1.316, 0.42, 0.42], + [0.355, 0.028, 0.027], + [0.431, 0.054, 0.051], + [2.242, 1.752, 1.768], + [1.68, 1.069, 1.055], + [0.94, 0.427, 0.431], + [0.901, 0.411, 0.411], + [1.224, 0.538, 0.541], + [3.162, 2.508, 2.535], + [1.326, 0.608, 0.614], + [0.809, 0.351, 0.337], + [2.777, 1.012, 1.008], + [2.732, 0.944, 0.964], + [4.738, 1.388, 1.373], + [0.469, 0.039, 0.038], + [9.783, 0.777, 0.765], + [11.461, 0.874, 0.869], + [21.969, 2.164, 2.175], + [55.663, 3.633, 3.591], + [2.798, 0.295, 0.285], + [0.966, 0.321, 0.304], + [2.83, 0.327, 0.321], + [9.831, 1.179, 1.164], + [18.555, 18.235, 18.272], + [0.875, 0.586, 0.59], + [2.367, 0.413, 0.412], + [5.969, 0.457, 0.44], + [5.471, 1.747, 1.782], + [11.287, 3.492, 3.524], + [11.483, 3.853, 3.822], + [0.944, 0.593, 0.599], + [0.476, 0.113, 0.115], + [0.385, 0.063, 0.061], + [0.4, 0.055, 0.053], + [0.569, 0.17, 0.163], + [0.347, 0.029, 0.029], + [0.348, 0.029, 0.027], + [0.339, 0.027, 0.026] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/results/20260824/c8g.metal-48xl.json b/daft-parquet-partitioned/results/20260824/c8g.metal-48xl.json new file mode 100644 index 0000000000..4ff732d01d --- /dev/null +++ b/daft-parquet-partitioned/results/20260824/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, partitioned)", + "date": "2026-08-24", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 65, + "data_size": 14737666736, + "concurrent_qps": 1.168, + "concurrent_error_ratio": 0, + "result": [ + [0.397, 0.022, 0.021], + [0.5, 0.049, 0.048], + [0.454, 0.034, 0.033], + [0.73, 0.039, 0.035], + [0.712, 0.089, 0.087], + [1.284, 0.195, 0.186], + [0.384, 0.019, 0.018], + [0.484, 0.058, 0.056], + [1.863, 0.927, 0.902], + [1.539, 0.554, 0.56], + [0.802, 0.298, 0.284], + [1.024, 0.271, 0.281], + [1.071, 0.22, 0.209], + [2.449, 0.478, 0.469], + [1.177, 0.23, 0.233], + [0.642, 0.11, 0.102], + [2.333, 0.316, 0.299], + [2.313, 0.307, 0.282], + [4.183, 0.484, 0.47], + [0.495, 0.035, 0.034], + [9.688, 0.656, 0.621], + [11.294, 0.688, 0.751], + [21.668, 1.065, 1.007], + [55.742, 1.875, 1.85], + [2.681, 0.162, 0.15], + [0.943, 0.152, 0.146], + [2.667, 0.164, 0.156], + [9.765, 0.717, 0.798], + [30.023, 29.456, 29.052], + [0.59, 0.229, 0.21], + [2.276, 0.212, 0.208], + [5.926, 0.242, 0.242], + [4.889, 0.479, 0.413], + [10.173, 1.168, 1.283], + [10.196, 1.137, 1.183], + [0.612, 0.18, 0.182], + [0.54, 0.119, 0.119], + [0.444, 0.067, 0.064], + [0.478, 0.056, 0.057], + [0.647, 0.19, 0.186], + [0.404, 0.033, 0.033], + [0.409, 0.031, 0.031], + [0.391, 0.029, 0.028] +] + } + \ No newline at end of file diff --git a/daft-parquet-partitioned/server.py b/daft-parquet-partitioned/server.py index 0e08181688..f660998e4b 100644 --- a/daft-parquet-partitioned/server.py +++ b/daft-parquet-partitioned/server.py @@ -89,9 +89,16 @@ async def query(request: Request): if not sql: raise HTTPException(status_code=400, detail="empty query") start = timeit.default_timer() - result = daft.sql(sql).collect() + # ClickBench timings must include returning the full result to the + # client (README, "Output Suppression"; issue #1397): collect() with + # num_preview_rows=None makes __str__ render every row, and to_pydict() + # pulls the complete, untruncated result into plain Python objects (the + # fetchall() equivalent) — all inside the timed run. + result = daft.sql(sql).collect(num_preview_rows=None) + result.to_pydict() + text = str(result) elapsed = round(timeit.default_timer() - start, 3) - return {"elapsed": elapsed, "result": str(result)} + return {"elapsed": elapsed, "result": text} @app.get("/data-size") diff --git a/daft-parquet/__pycache__/server.cpython-314.pyc b/daft-parquet/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000..65c852ac33 Binary files /dev/null and b/daft-parquet/__pycache__/server.cpython-314.pyc differ diff --git a/daft-parquet/results/20260824/c6a.2xlarge.json b/daft-parquet/results/20260824/c6a.2xlarge.json new file mode 100644 index 0000000000..745bcabba1 --- /dev/null +++ b/daft-parquet/results/20260824/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 5, + "data_size": 14779976446, + "concurrent_qps": 0.022, + "concurrent_error_ratio": 0.435, + "result": [ + [0.441, 0.085, 0.07], + [0.876, 0.321, 0.33], + [0.587, 0.17, 0.163], + [0.704, 0.165, 0.159], + [1.668, 1.158, 1.206], + [2.148, 1.444, 1.463], + [0.444, 0.062, 0.06], + [0.92, 0.321, 0.323], + [4.518, 3.785, 3.805], + [3.658, 2.735, 2.734], + [2.289, 1.636, 1.646], + [2.395, 1.678, 1.672], + [5.98, 4.352, 4.418], + [10.389, 8.547, 8.636], + [6.484, 4.864, 4.863], + [1.996, 1.443, 1.425], + [5.859, 3.875, 3.896], + [5.708, 3.611, 3.598], + [8.846, 5.718, 5.801], + [0.715, 0.117, 0.115], + [10.204, 2.944, 3.122], + [14.037, 4.245, 4.147], + [24.592, 5.928, 5.815], + [null, null, null], + [5.496, 3.254, 3.17], + [1.577, 0.92, 0.933], + [5.669, 3.535, 3.349], + [23.37, 15.837, 15.518], + [42.652, 35.215, 35.469], + [1.837, 1.43, 1.424], + [6.048, 4.335, 4.296], + [9.04, 4.525, 4.521], + [104.494, 100.615, 119.168], + [17.791, 13.558, 12.715], + [19.576, 17.564, 18.019], + [3.008, 2.525, 2.56], + [1.005, 0.379, 0.443], + [0.672, 0.203, 0.126], + [0.538, 0.08, 0.081], + [0.811, 0.275, 0.298], + [0.522, 0.062, 0.056], + [0.51, 0.054, 0.057], + [0.485, 0.044, 0.05] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260824/c6a.4xlarge.json b/daft-parquet/results/20260824/c6a.4xlarge.json new file mode 100644 index 0000000000..4692bb77cb --- /dev/null +++ b/daft-parquet/results/20260824/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 1, + "data_size": 14779976446, + "concurrent_qps": 0.027, + "concurrent_error_ratio": 0.385, + "result": [ + [0.388, 0.061, 0.061], + [0.783, 0.306, 0.288], + [0.529, 0.11, 0.101], + [0.687, 0.151, 0.151], + [1.152, 0.731, 0.728], + [1.585, 0.892, 0.9], + [0.392, 0.049, 0.047], + [0.807, 0.292, 0.311], + [3.186, 2.52, 2.471], + [2.558, 1.679, 1.674], + [2.106, 1.491, 1.525], + [2.154, 1.447, 1.502], + [5.251, 3.695, 3.72], + [7.723, 5.884, 5.901], + [5.387, 3.897, 3.845], + [1.525, 0.908, 0.912], + [4.184, 2.42, 2.415], + [4.08, 2.201, 2.217], + [7.173, 3.958, 3.949], + [0.634, 0.109, 0.108], + [10.055, 2.305, 2.324], + [13.89, 3.756, 3.7], + [24.436, 4.748, 4.643], + [null, null, null], + [5.164, 3.019, 3.028], + [1.257, 0.653, 0.651], + [5.253, 3.114, 3.079], + [22.817, 13.932, 14.316], + [34.794, 26.89, 26.807], + [2.235, 1.849, 1.903], + [5.569, 3.674, 3.752], + [8.6, 3.907, 3.851], + [9.121, 5.686, 5.568], + [14.056, 6.515, 6.57], + [15.015, 7.372, 7.291], + [2.008, 1.565, 1.6], + [0.928, 0.381, 0.376], + [0.627, 0.208, 0.186], + [0.607, 0.086, 0.087], + [0.846, 0.256, 0.231], + [0.565, 0.059, 0.057], + [0.551, 0.051, 0.055], + [0.53, 0.045, 0.047] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260824/c6a.metal.json b/daft-parquet/results/20260824/c6a.metal.json new file mode 100644 index 0000000000..adce22902a --- /dev/null +++ b/daft-parquet/results/20260824/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 9, + "data_size": 14779976446, + "concurrent_qps": 0.385, + "concurrent_error_ratio": 0, + "result": [ + [0.398, 0.052, 0.049], + [0.838, 0.327, 0.339], + [0.518, 0.079, 0.074], + [0.811, 0.114, 0.105], + [0.78, 0.19, 0.17], + [1.046, 0.289, 0.27], + [0.403, 0.054, 0.053], + [0.809, 0.354, 0.297], + [1.96, 1.309, 1.314], + [1.822, 0.91, 0.848], + [3.31, 2.336, 2.622], + [2.423, 2.685, 2.699], + [5.953, 4.061, 4.605], + [6.357, 5.421, 3.902], + [6.171, 3.952, 4.438], + [1.049, 0.212, 0.198], + [2.409, 0.479, 0.471], + [2.333, 0.457, 0.426], + [4.56, 0.887, 0.798], + [0.576, 0.062, 0.053], + [9.995, 0.857, 0.857], + [14.884, 3.93, 3.92], + [25.902, 4.732, 4.72], + [56.426, 3.206, 3.302], + [5.97, 4.13, 4.312], + [1.096, 0.502, 0.499], + [5.429, 4.763, 4.672], + [25.586, 14.818, 14.629], + [41.11, 32.56, 32.376], + [0.746, 0.299, 0.248], + [5.444, 4.675, 3.979], + [9.276, 3.758, 3.637], + [5.249, 1.366, 1.29], + [10.639, 1.479, 1.312], + [10.918, 1.436, 1.379], + [0.859, 0.332, 0.335], + [0.983, 0.435, 0.43], + [0.679, 0.207, 0.223], + [0.582, 0.092, 0.086], + [0.905, 0.255, 0.271], + [0.58, 0.07, 0.066], + [0.556, 0.064, 0.062], + [0.515, 0.052, 0.054] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260824/c6a.xlarge.json b/daft-parquet/results/20260824/c6a.xlarge.json new file mode 100644 index 0000000000..af0823c3b1 --- /dev/null +++ b/daft-parquet/results/20260824/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 1, + "data_size": 14779976446, + "concurrent_qps": 0.023, + "concurrent_error_ratio": 0.417, + "result": [ + [0.498, 0.109, 0.102], + [0.875, 0.321, 0.305], + [0.715, 0.259, 0.259], + [0.721, 0.224, 0.207], + [2.565, 2.051, 2.096], + [3.454, 2.725, 2.75], + [0.434, 0.082, 0.081], + [0.8, 0.323, 0.32], + [6.546, 6.226, 6.44], + [5.28, 4.355, 4.244], + [2.34, 1.695, 1.709], + [2.346, 1.762, 1.755], + [6.672, 5.364, 5.334], + [15.17, 13.25, 13.22], + [7.409, 6.05, 6.036], + [3.078, 2.509, 2.484], + [8.782, 6.337, 6.318], + [7.919, 5.842, 5.922], + [60.224, 27.3, 62.577], + [0.665, 0.155, 0.149], + [94.593, 149.91, 121.566], + [13.911, 5.489, 5.693], + [25.078, 17.673, 16.941], + [null, null, null], + [5.444, 3.506, 3.454], + [2.12, 1.509, 1.496], + [5.693, 3.758, 3.767], + [79.246, 69.457, 67.06], + [69.329, 68.982, 68.952], + [3.027, 2.619, 2.62], + [7.296, 5.307, 5.485], + [9.537, 5.563, 5.639], + [null, null, null], + [166.354, 155.58, 187.444], + [250.829, 318.942, 185.933], + [4.797, 4.43, 4.451], + [0.983, 0.401, 0.395], + [0.649, 0.233, 0.159], + [0.509, 0.082, 0.082], + [0.959, 0.375, 0.374], + [0.542, 0.062, 0.052], + [0.537, 0.057, 0.054], + [0.503, 0.051, 0.047] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260824/c7a.metal-48xl.json b/daft-parquet/results/20260824/c7a.metal-48xl.json new file mode 100644 index 0000000000..87c75e8b30 --- /dev/null +++ b/daft-parquet/results/20260824/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 3, + "data_size": 14779976446, + "concurrent_qps": 0.367, + "concurrent_error_ratio": 0, + "result": [ + [0.396, 0.047, 0.044], + [0.782, 0.331, 0.327], + [0.49, 0.073, 0.066], + [0.625, 0.113, 0.11], + [0.734, 0.151, 0.126], + [1.028, 0.28, 0.245], + [0.39, 0.053, 0.051], + [0.815, 0.382, 0.379], + [1.835, 1.174, 1.186], + [1.689, 0.782, 0.72], + [3.045, 2.28, 1.184], + [3.482, 2.339, 2.619], + [6.305, 4.371, 4.462], + [6.912, 4.302, 4.447], + [6.411, 4.526, 4.612], + [1.103, 0.167, 0.146], + [2.355, 0.36, 0.335], + [2.29, 0.364, 0.349], + [4.261, 0.463, 0.47], + [0.529, 0.051, 0.042], + [10.02, 0.829, 0.851], + [14.91, 4.129, 5.167], + [26.307, 4.489, 5.467], + [56.968, 2.679, 2.265], + [6.304, 5.099, 3.826], + [1.57, 1.05, 1.007], + [7.423, 3.915, 4.57], + [24.078, 13.994, 15.901], + [38.492, 32.197, 31.37], + [0.594, 0.15, 0.139], + [6.536, 4.082, 5.021], + [9.888, 4.657, 3.899], + [4.795, 0.631, 0.6], + [10.565, 1.344, 1.223], + [10.509, 1.309, 1.276], + [0.732, 0.206, 0.194], + [0.987, 0.408, 0.403], + [0.656, 0.209, 0.181], + [0.585, 0.09, 0.081], + [0.822, 0.243, 0.238], + [0.572, 0.071, 0.066], + [0.546, 0.063, 0.059], + [0.516, 0.056, 0.052] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260824/c8g.4xlarge.json b/daft-parquet/results/20260824/c8g.4xlarge.json new file mode 100644 index 0000000000..f41b7e92d0 --- /dev/null +++ b/daft-parquet/results/20260824/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 1, + "data_size": 14779976446, + "concurrent_qps": 0.018, + "concurrent_error_ratio": 0.476, + "result": [ + [0.301, 0.046, 0.044], + [0.625, 0.218, 0.216], + [0.348, 0.072, 0.071], + [0.485, 0.07, 0.064], + [0.651, 0.312, 0.314], + [1.17, 0.43, 0.43], + [0.205, 0.031, 0.032], + [0.643, 0.227, 0.218], + [2.318, 1.666, 1.663], + [1.756, 1.042, 1.036], + [1.592, 1.191, 1.19], + [1.581, 1.15, 1.154], + [4.084, 2.778, 2.816], + [6.446, 4.756, 4.741], + [4.19, 2.9, 2.8], + [0.793, 0.353, 0.347], + [2.784, 0.99, 0.99], + [2.736, 0.93, 0.929], + [4.809, 1.347, 1.392], + [0.255, 0.045, 0.04], + [9.71, 0.963, 0.925], + [13.082, 2.785, 2.758], + [23.633, 3.35, 3.384], + [null, null, null], + [4.516, 2.39, 2.391], + [1.057, 0.45, 0.439], + [4.439, 2.563, 2.451], + [17.23, 9.678, 9.579], + [39.548, 32.873, 32.692], + [0.844, 0.593, 0.589], + [4.356, 2.719, 2.612], + [7.426, 2.779, 2.639], + [5.438, 1.798, 1.643], + [11.927, 3.401, 3.403], + [12.232, 3.732, 3.749], + [0.864, 0.594, 0.594], + [0.548, 0.235, 0.269], + [0.503, 0.139, 0.152], + [0.429, 0.073, 0.071], + [0.591, 0.183, 0.188], + [0.376, 0.049, 0.049], + [0.369, 0.047, 0.043], + [0.341, 0.039, 0.04] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260824/c8g.metal-48xl.json b/daft-parquet/results/20260824/c8g.metal-48xl.json new file mode 100644 index 0000000000..f6c687963e --- /dev/null +++ b/daft-parquet/results/20260824/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-24", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 6, + "data_size": 14779976446, + "concurrent_qps": 0.475, + "concurrent_error_ratio": 0, + "result": [ + [0.357, 0.04, 0.036], + [0.727, 0.243, 0.241], + [0.417, 0.052, 0.05], + [0.57, 0.07, 0.061], + [0.7, 0.119, 0.103], + [1.069, 0.205, 0.2], + [0.352, 0.03, 0.029], + [0.734, 0.252, 0.253], + [1.711, 1.041, 1.01], + [1.528, 0.608, 0.582], + [1.922, 1.251, 1.244], + [1.955, 1.238, 1.233], + [4.681, 2.671, 2.758], + [5.39, 3.155, 3.241], + [4.697, 2.817, 2.773], + [0.779, 0.127, 0.115], + [2.237, 0.336, 0.326], + [2.236, 0.337, 0.313], + [4.096, 0.433, 0.404], + [0.947, 0.041, 0.033], + [9.823, 0.772, 0.682], + [13.918, 2.976, 2.949], + [24.358, 3.165, 3.108], + [56.247, 3.069, 2.787], + [5.137, 2.698, 2.548], + [1.173, 0.409, 0.391], + [5.125, 2.667, 2.603], + [20.287, 10.397, 11.292], + [45.973, 43.927, 37.474], + [0.634, 0.248, 0.228], + [4.877, 2.652, 2.635], + [8.047, 2.914, 2.988], + [4.789, 0.529, 0.517], + [10.391, 1.293, 1.154], + [10.399, 1.24, 1.117], + [0.595, 0.154, 0.154], + [0.832, 0.323, 0.315], + [0.565, 0.168, 0.155], + [0.511, 0.077, 0.075], + [0.717, 0.204, 0.205], + [0.449, 0.056, 0.052], + [0.463, 0.052, 0.051], + [0.425, 0.045, 0.044] +] + } + \ No newline at end of file diff --git a/daft-parquet/results/20260825/c6a.large.json b/daft-parquet/results/20260825/c6a.large.json new file mode 100644 index 0000000000..8eda602d0a --- /dev/null +++ b/daft-parquet/results/20260825/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "Daft (Parquet, single)", + "date": "2026-08-25", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Rust","stateless","embedded","in-memory"], + "load_time": 0, + "data_size": 14779976446, + "concurrent_qps": 0.017, + "concurrent_error_ratio": 0.5, + "result": [ + [0.56, 0.171, 0.158], + [0.877, 0.354, 0.356], + [1.031, 0.488, 0.483], + [1.064, 0.363, 0.364], + [4.79, 4.35, 4.395], + [6.38, 5.55, 5.647], + [0.513, 0.12, 0.118], + [0.852, 0.356, 0.348], + [11.229, 10.777, 10.918], + [8.97, 8.108, 8.158], + [2.629, 2.066, 2.056], + [2.867, 2.251, 2.233], + [9.52, 7.882, 7.891], + [25.851, 24.699, 24.969], + [10.773, 9.107, 9.185], + [5.541, 5.085, 4.957], + [36.228, 37.563, 37.566], + [35.027, 27.091, 25.356], + [339.381, 354.21, 332.31], + [0.8, 0.327, 0.379], + [334.14, 398.376, 267.773], + [14.764, 14.07, 96.976], + [616.49, 653.841, 921.3], + [null, null, null], + [5.974, 4.185, 4.176], + [3.742, 3.155, 3.177], + [6.685, 4.947, 4.846], + [156.498, 202.505, 205.088], + [186.388, 189.063, 186.176], + [6.933, 6.535, 6.533], + [9.386, 7.603, 7.725], + [11.682, 11.156, 10.929], + [null, null, null], + [2020.563, 1910.738, 2174.363], + [2309.183, 2037.359, 1983.43], + [9.558, 9.226, 9.228], + [1.059, 0.505, 0.43], + [0.693, 0.239, 0.162], + [0.539, 0.092, 0.092], + [1.256, 0.68, 0.686], + [0.495, 0.067, 0.059], + [0.533, 0.067, 0.061], + [0.508, 0.059, 0.064] +] + } + \ No newline at end of file diff --git a/daft-parquet/server.py b/daft-parquet/server.py index aace080f70..9e36b608dc 100644 --- a/daft-parquet/server.py +++ b/daft-parquet/server.py @@ -74,9 +74,16 @@ async def query(request: Request): if not sql: raise HTTPException(status_code=400, detail="empty query") start = timeit.default_timer() - result = daft.sql(sql).collect() + # ClickBench timings must include returning the full result to the + # client (README, "Output Suppression"; issue #1397): collect() with + # num_preview_rows=None makes __str__ render every row, and to_pydict() + # pulls the complete, untruncated result into plain Python objects (the + # fetchall() equivalent) — all inside the timed run. + result = daft.sql(sql).collect(num_preview_rows=None) + result.to_pydict() + text = str(result) elapsed = round(timeit.default_timer() - start, 3) - return {"elapsed": elapsed, "result": str(result)} + return {"elapsed": elapsed, "result": text} @app.get("/data-size") diff --git a/dask/__pycache__/server.cpython-314.pyc b/dask/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000..1a362a7da7 Binary files /dev/null and b/dask/__pycache__/server.cpython-314.pyc differ diff --git a/dask/results/20260824/c6a.metal.json b/dask/results/20260824/c6a.metal.json new file mode 100644 index 0000000000..4c22bad511 --- /dev/null +++ b/dask/results/20260824/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Dask (DataFrame)", + "date": "2026-08-24", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Python","dataframe","in-memory","column-oriented","lukewarm-cold-run"], + "load_time": 71, + "data_size": 174168110180, + "concurrent_qps": 0.08, + "concurrent_error_ratio": 0.172, + "result": [ + [65.347, 7.047, 7.692], + [58.187, 0.657, 0.706], + [57.744, 0.351, 0.295], + [57.405, 0.257, 0.283], + [58.645, 1.304, 1.358], + [59.611, 1.961, 2.083], + [57.507, 0.291, 0.337], + [57.893, 0.675, 0.686], + [59.636, 2.398, 2.323], + [null, null, null], + [67.453, 11.312, 9.955], + [68.802, 11.73, 11.665], + [61.592, 4.445, 4.232], + [67.887, 10.609, 10.562], + [110.77, 54.29, 61.662], + [59.152, 1.499, 1.712], + [145.502, 87.041, 89.316], + [64.328, 7.2, 6.756], + [140.65, 83.23, 84.792], + [57.934, 0.643, 0.524], + [null, null, null], + [null, null, null], + [null, null, null], + [null, null, null], + [58.332, 0.963, 0.969], + [null, null, null], + [63.346, 6.718, 7.282], + [60.709, 3.132, 3.304], + [null, null, null], + [61.101, 4.354, 4.429], + [70.895, 13.802, 14.325], + [209.946, 153.319, 153.6], + [212.346, 152.979, 152.387], + [69.718, 12.67, 12.062], + [69.577, 12.662, 12.569], + [77.72, 20.227, 19.399], + [59.444, 1.707, 1.796], + [58.907, 1.355, 1.479], + [58.703, 0.872, 0.934], + [61.21, 3.496, 3.901], + [58.856, 1.038, 1.002], + [58.382, 0.97, 0.954], + [58.508, 1.101, 0.954] +] + } + \ No newline at end of file diff --git a/dask/results/20260824/c7a.metal-48xl.json b/dask/results/20260824/c7a.metal-48xl.json new file mode 100644 index 0000000000..70294b5ca5 --- /dev/null +++ b/dask/results/20260824/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Dask (DataFrame)", + "date": "2026-08-24", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Python","dataframe","in-memory","column-oriented","lukewarm-cold-run"], + "load_time": 69, + "data_size": 174168110180, + "concurrent_qps": 0.082, + "concurrent_error_ratio": 0.14, + "result": [ + [64.007, 6.042, 6.471], + [59.368, 0.625, 0.612], + [58.441, 0.391, 0.176], + [58.56, 0.21, 0.224], + [58.518, 0.985, 1.108], + [59.009, 1.877, 1.626], + [59.08, 0.192, 0.226], + [57.969, 0.592, 0.548], + [59.464, 2.041, 1.906], + [null, null, null], + [66.306, 10.306, 9.521], + [67.919, 10.86, 10.335], + [61.017, 3.815, 3.721], + [66.768, 9.376, 9.356], + [101.089, 54.691, 52.385], + [58.643, 1.337, 1.277], + [147.647, 81.192, 85.342], + [63.795, 6.501, 6.564], + [134.166, 78.529, 84.855], + [57.435, 0.478, 0.395], + [null, null, null], + [null, null, null], + [null, null, null], + [null, null, null], + [57.619, 0.776, 0.748], + [null, null, null], + [62.117, 5.453, 5.313], + [60.217, 2.582, 2.568], + [null, null, null], + [60.59, 3.485, 3.668], + [72.286, 14.59, 14.91], + [237.959, 177.648, 185.498], + [233.828, 174.383, 175.398], + [68.315, 10.942, 10.748], + [68.222, 10.965, 10.927], + [77.525, 20.196, 20.256], + [59.109, 1.391, 1.357], + [58.883, 1.175, 0.991], + [58.363, 0.703, 0.749], + [61.08, 3.17, 3.978], + [58.456, 0.817, 0.788], + [58.526, 0.794, 0.758], + [58.419, 0.808, 0.777] +] + } + \ No newline at end of file diff --git a/dask/results/20260824/c8g.metal-48xl.json b/dask/results/20260824/c8g.metal-48xl.json new file mode 100644 index 0000000000..546d786e30 --- /dev/null +++ b/dask/results/20260824/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Dask (DataFrame)", + "date": "2026-08-24", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Python","dataframe","in-memory","column-oriented","lukewarm-cold-run"], + "load_time": 70, + "data_size": 174168110180, + "concurrent_qps": 0.103, + "concurrent_error_ratio": 0.173, + "result": [ + [62.177, 4.606, 4.596], + [57.353, 0.507, 0.502], + [56.957, 0.218, 0.172], + [56.961, 0.141, 0.138], + [57.865, 0.801, 0.904], + [58.122, 1.271, 1.242], + [56.935, 0.14, 0.135], + [57.316, 0.401, 0.416], + [58.656, 1.772, 1.676], + [null, null, null], + [63.806, 6.949, 6.831], + [64.727, 7.858, 7.796], + [60.051, 3.101, 3.062], + [63.917, 6.936, 6.759], + [102.785, 38.333, 38.817], + [58.183, 1.145, 1.191], + [119.676, 83.89, 63.305], + [61.934, 5.172, 5.203], + [120.904, 60.577, 61.783], + [57.287, 0.404, 0.357], + [null, null, null], + [null, null, null], + [null, null, null], + [null, null, null], + [57.577, 0.565, 0.613], + [null, null, null], + [61.44, 4.538, 4.92], + [59.047, 2.022, 2.106], + [null, null, null], + [59.371, 2.722, 2.869], + [66.904, 10.028, 10.01], + [172.782, 107.907, 108.236], + [164.319, 106.911, 107.158], + [66.977, 10.168, 9.44], + [66.694, 9.373, 9.892], + [70.944, 13.882, 13.952], + [58.052, 1.136, 1.135], + [57.789, 0.879, 0.789], + [57.543, 0.627, 0.575], + [59.673, 2.512, 2.574], + [57.634, 0.666, 0.658], + [57.564, 0.623, 0.56], + [57.54, 0.651, 0.619] +] + } + \ No newline at end of file diff --git a/dask/server.py b/dask/server.py index 2497cc3019..f5bd277618 100755 --- a/dask/server.py +++ b/dask/server.py @@ -37,6 +37,15 @@ from dask.distributed import Client, LocalCluster, wait from fastapi import FastAPI, HTTPException, Request +# ClickBench timings must include serializing the full query result back +# to the client (README, "Output Suppression"), so render frames (computed +# results are pandas objects) without any row/column/cell truncation — +# nothing may be suppressed. +pd.set_option("display.max_rows", None) +pd.set_option("display.max_columns", None) +pd.set_option("display.width", None) +pd.set_option("display.max_colwidth", None) + # Dask's built-in groupby.agg() doesn't offer nunique, so COUNT(DISTINCT) # combined with other aggregates in one pass (queries 10 and 23) needs the # documented custom aggregation. Exposed in the query scope as `nunique`. @@ -120,11 +129,13 @@ async def query(request: Request): # dask.compute() recurses into tuples/lists, so queries that return a # tuple of scalars (3, 7) or a list of sums (30) compute in one pass. result = dask.compute(eval(compiled, scope))[0] + # Rendering the result is part of the timed run: ClickBench measures + # back-to-back runtimes including returning the result to the client + # (issue #1397). The playground UI shows the string; the agent + # truncates it to OUTPUT_LIMIT before it reaches the browser. + text = str(result) elapsed = round(timeit.default_timer() - start, 3) - # Render the result as a string so the playground UI sees the actual - # query output instead of just the timing. Truncated by the agent - # to OUTPUT_LIMIT before it reaches the browser. - return {"elapsed": elapsed, "result": str(result)} + return {"elapsed": elapsed, "result": text} @app.get("/data-size") diff --git a/pandas/__pycache__/server.cpython-314.pyc b/pandas/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000..b9da6059b6 Binary files /dev/null and b/pandas/__pycache__/server.cpython-314.pyc differ diff --git a/pandas/results/20260824/c6a.metal.json b/pandas/results/20260824/c6a.metal.json new file mode 100644 index 0000000000..549ff6e781 --- /dev/null +++ b/pandas/results/20260824/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "pandas", + "date": "2026-08-24", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Python","dataframe","in-memory","row-oriented","lukewarm-cold-run"], + "load_time": 21, + "data_size": 81770409884, + "concurrent_qps": 0.028, + "concurrent_error_ratio": 0, + "result": [ + [75.665, 4.478, 4.444], + [77.959, 7.785, 6.582], + [71.587, 0.067, 0.074], + [71.182, 0.085, 0.067], + [74.876, 3.887, 3.896], + [73.702, 2.376, 2.17], + [71.693, 0.314, 0.261], + [78.001, 7.628, 6.49], + [80.962, 9.391, 9.261], + [81.776, 10.605, 10.517], + [82.397, 14.07, 11.144], + [82.881, 11.794, 11.158], + [91.205, 22.352, 21.002], + [94.235, 23.526, 26.86], + [93.113, 25.004, 23.487], + [78.854, 7.283, 7.294], + [94.046, 22.487, 22.686], + [94.069, 22.869, 22.629], + [277.37, 199.571, 194.764], + [78.499, 6.915, 5.977], + [83.983, 13.565, 13.019], + [84.818, 13.961, 13.319], + [103.168, 36.095, 31.841], + [84.322, 13.577, 13.044], + [97.331, 26.702, 39.598], + [111.504, 43.537, 73.54], + [107.819, 40.62, 54.303], + [247.489, 536.204, 754.751], + [767.036, 1407.667, 1005.355], + [108.401, 37.207, 37.582], + [88.33, 17.979, 17.92], + [95.491, 25.761, 26.099], + [162.632, 97.464, 100.907], + [97.789, 27.171, 30.077], + [97.276, 27.346, 26.265], + [108.392, 36.978, 37.51], + [78.512, 7.505, 7.018], + [78.402, 7.476, 6.968], + [78.131, 7.606, 6.508], + [78.45, 8.252, 8.189], + [78.792, 7.326, 7.417], + [78.074, 7.641, 6.586], + [78.966, 8.225, 8.104] +] + } + \ No newline at end of file diff --git a/pandas/results/20260824/c7a.metal-48xl.json b/pandas/results/20260824/c7a.metal-48xl.json new file mode 100644 index 0000000000..1a15bb11a8 --- /dev/null +++ b/pandas/results/20260824/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "pandas", + "date": "2026-08-24", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Python","dataframe","in-memory","row-oriented","lukewarm-cold-run"], + "load_time": 15, + "data_size": 81770409884, + "concurrent_qps": 0.032, + "concurrent_error_ratio": 0, + "result": [ + [73.151, 4.428, 4.411], + [74.438, 6.027, 5.035], + [68.893, 0.062, 0.061], + [69.18, 0.058, 0.074], + [72.797, 3.923, 3.98], + [71.323, 2.298, 2.253], + [68.666, 0.215, 0.174], + [74.016, 6.031, 4.955], + [78.43, 9.399, 9.488], + [79.074, 10.366, 10.197], + [78.366, 11.129, 9.103], + [78.251, 9.485, 9.406], + [86.187, 17.997, 17.793], + [89.248, 21.873, 20.677], + [88.969, 21.752, 20.525], + [77.788, 9.219, 9.239], + [94.149, 25.108, 24.712], + [94.541, 25.108, 24.693], + [257.933, 188.351, 189.683], + [73.841, 5.338, 4.366], + [80.046, 10.874, 10.78], + [80.589, 11.156, 11.108], + [97.025, 28.628, 30.251], + [79.858, 10.956, 10.634], + [91.809, 24.484, 23.767], + [103.533, 36.693, 38.993], + [101.908, 35.606, 33.542], + [303.062, 797.672, 586.133], + [643.334, 602.58, 599.407], + [92.863, 24.207, 24.031], + [85.625, 16.188, 16.059], + [93.978, 25.544, 25.146], + [189.272, 122.85, 115.416], + [94.579, 25.807, 25.277], + [95.985, 25.901, 25.598], + [111.586, 42.567, 43.376], + [74.575, 5.793, 5.874], + [74.332, 5.649, 5.829], + [73.94, 5.944, 4.81], + [74.673, 5.707, 5.616], + [74.621, 5.152, 5.128], + [73.915, 5.89, 5.829], + [75.155, 6.31, 6.394] +] + } + \ No newline at end of file diff --git a/pandas/results/20260824/c8g.metal-48xl.json b/pandas/results/20260824/c8g.metal-48xl.json new file mode 100644 index 0000000000..6eb0035b7a --- /dev/null +++ b/pandas/results/20260824/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "pandas", + "date": "2026-08-24", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["Python","dataframe","in-memory","row-oriented","lukewarm-cold-run"], + "load_time": 15, + "data_size": 81770409884, + "concurrent_qps": 0.028, + "concurrent_error_ratio": 0, + "result": [ + [81.501, 7.874, 7.885], + [71.859, 5.398, 5.259], + [66.201, 0.124, 0.123], + [65.882, 0.087, 0.087], + [68.166, 2.58, 2.59], + [68.674, 2.129, 2.128], + [65.972, 0.28, 0.279], + [70.227, 4.186, 4.201], + [72.068, 6.351, 6.363], + [73.006, 7.28, 7.272], + [73.749, 7.838, 7.911], + [73.918, 7.657, 7.667], + [82.963, 16.742, 16.903], + [84.639, 18.341, 18.7], + [84.758, 18.534, 19.01], + [72.05, 6.533, 6.515], + [85.843, 19.471, 19.452], + [85.337, 19.592, 19.636], + [231.479, 165.118, 166.848], + [70.997, 3.772, 3.831], + [77.88, 11.994, 12.152], + [78.636, 12.225, 12.297], + [99.512, 34.119, 33.393], + [78.127, 11.869, 11.854], + [89.696, 23.504, 23.9], + [100.538, 34.506, 34.272], + [98.234, 32.817, 32.61], + [250.315, 171.113, 326.669], + [595.995, 534.277, 517.219], + [89.084, 23.189, 23.29], + [80.392, 13.97, 14.076], + [86.459, 20.273, 20.365], + [142.083, 83.636, 80.211], + [91.419, 25.059, 25.124], + [91.284, 25.318, 25.407], + [96.168, 30.27, 30.642], + [70.639, 4.745, 4.75], + [71.291, 4.673, 4.696], + [70.717, 4.115, 4.129], + [71.184, 4.712, 4.711], + [70.324, 4.407, 4.416], + [70.025, 4.163, 4.179], + [71.919, 5.246, 5.253] +] + } + \ No newline at end of file diff --git a/pandas/server.py b/pandas/server.py index 97b81c0dd5..8ce1c81f71 100755 --- a/pandas/server.py +++ b/pandas/server.py @@ -25,6 +25,14 @@ import uvicorn from fastapi import FastAPI, HTTPException, Request +# ClickBench timings must include serializing the full query result back +# to the client (README, "Output Suppression"), so render frames without +# any row/column/cell truncation — nothing may be suppressed. +pd.set_option("display.max_rows", None) +pd.set_option("display.max_columns", None) +pd.set_option("display.width", None) +pd.set_option("display.max_colwidth", None) + app = FastAPI() hits: pd.DataFrame | None = None @@ -61,12 +69,14 @@ async def query(request: Request): except SyntaxError as e: raise HTTPException(status_code=400, detail=f"syntax error: {e}") start = timeit.default_timer() - result = eval(compiled, {"hits": hits, "pd": pd}) + value = eval(compiled, {"hits": hits, "pd": pd}) + # Rendering the result is part of the timed run: ClickBench measures + # back-to-back runtimes including returning the result to the client + # (issue #1397). The playground UI shows the string; the agent + # truncates it to OUTPUT_LIMIT before it reaches the browser. + result = str(value) elapsed = round(timeit.default_timer() - start, 3) - # Render the result as a string so the playground UI sees the actual - # query output instead of just the timing. Truncated by the agent - # to OUTPUT_LIMIT before it reaches the browser. - return {"elapsed": elapsed, "result": str(result)} + return {"elapsed": elapsed, "result": result} @app.get("/data-size") diff --git a/polars-dataframe/__pycache__/server.cpython-314.pyc b/polars-dataframe/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000..bb5b203d54 Binary files /dev/null and b/polars-dataframe/__pycache__/server.cpython-314.pyc differ diff --git a/polars-dataframe/results/20260824/c6a.metal.json b/polars-dataframe/results/20260824/c6a.metal.json new file mode 100644 index 0000000000..dddbfc6c11 --- /dev/null +++ b/polars-dataframe/results/20260824/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (DataFrame)", + "date": "2026-08-24", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","dataframe","in-memory"], + "load_time": 7, + "data_size": 58970980436, + "concurrent_qps": 4.807, + "concurrent_error_ratio": 0, + "result": [ + [58.236, 0.003, 0.003], + [58.078, 0.007, 0.009], + [58.056, 0.008, 0.008], + [58.114, 0.015, 0.02], + [58.474, 0.156, 0.156], + [58.497, 0.168, 0.169], + [58.039, 0.009, 0.009], + [58.225, 0.025, 0.024], + [58.752, 0.508, 0.512], + [58.698, 0.547, 0.575], + [58.327, 0.103, 0.103], + [58.211, 0.106, 0.102], + [58.132, 0.176, 0.183], + [58.695, 0.48, 0.481], + [58.538, 0.319, 0.315], + [58.304, 0.226, 0.218], + [59.437, 0.735, 0.72], + [59.045, 0.73, 0.728], + [59.645, 1.27, 1.252], + [58.329, 0.017, 0.019], + [58.394, 0.137, 0.129], + [58.533, 0.164, 0.171], + [58.803, 0.343, 0.327], + [58.524, 0.288, 0.281], + [58.302, 0.039, 0.043], + [58.204, 0.047, 0.047], + [58.26, 0.113, 0.115], + [58.529, 0.232, 0.242], + [59.243, 0.988, 0.954], + [58.306, 0.039, 0.037], + [58.384, 0.243, 0.227], + [58.644, 0.276, 0.269], + [59.573, 1.128, 1.039], + [59.251, 1.066, 1.004], + [59.258, 0.901, 0.879], + [58.524, 0.177, 0.183], + [58.503, 0.091, 0.083], + [58.791, 0.075, 0.069], + [58.425, 0.045, 0.042], + [58.385, 0.087, 0.082], + [58.272, 0.08, 0.074], + [58.442, 0.054, 0.053], + [58.282, 0.042, 0.041] +] + } + \ No newline at end of file diff --git a/polars-dataframe/results/20260824/c7a.metal-48xl.json b/polars-dataframe/results/20260824/c7a.metal-48xl.json new file mode 100644 index 0000000000..9f116af325 --- /dev/null +++ b/polars-dataframe/results/20260824/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (DataFrame)", + "date": "2026-08-24", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","dataframe","in-memory"], + "load_time": 8, + "data_size": 58970980436, + "concurrent_qps": 8.218, + "concurrent_error_ratio": 0, + "result": [ + [59.568, 0.003, 0.003], + [59.632, 0.006, 0.005], + [59.223, 0.005, 0.006], + [59.588, 0.008, 0.007], + [59.63, 0.075, 0.087], + [59.606, 0.091, 0.089], + [59.364, 0.005, 0.005], + [59.528, 0.024, 0.027], + [59.376, 0.179, 0.187], + [59.794, 0.239, 0.234], + [59.354, 0.079, 0.07], + [59.7, 0.083, 0.076], + [59.731, 0.086, 0.087], + [59.736, 0.177, 0.172], + [59.57, 0.113, 0.113], + [59.376, 0.109, 0.108], + [59.805, 0.249, 0.234], + [59.87, 0.233, 0.216], + [59.895, 0.426, 0.413], + [59.986, 0.006, 0.006], + [59.557, 0.038, 0.036], + [59.847, 0.101, 0.087], + [60.159, 0.284, 0.26], + [59.871, 0.191, 0.188], + [59.245, 0.028, 0.028], + [59.39, 0.024, 0.025], + [59.667, 0.032, 0.034], + [59.781, 0.148, 0.086], + [60.643, 0.691, 0.674], + [59.329, 0.025, 0.026], + [59.611, 0.108, 0.107], + [59.422, 0.099, 0.097], + [59.777, 0.456, 0.416], + [59.518, 0.31, 0.317], + [59.882, 0.354, 0.329], + [59.685, 0.118, 0.111], + [61.746, 0.055, 0.053], + [59.589, 0.05, 0.044], + [59.539, 0.035, 0.033], + [59.604, 0.069, 0.069], + [59.508, 0.062, 0.061], + [59.479, 0.037, 0.034], + [59.611, 0.03, 0.031] +] + } + \ No newline at end of file diff --git a/polars-dataframe/results/20260824/c8g.metal-48xl.json b/polars-dataframe/results/20260824/c8g.metal-48xl.json new file mode 100644 index 0000000000..3e638ac348 --- /dev/null +++ b/polars-dataframe/results/20260824/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (DataFrame)", + "date": "2026-08-24", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","dataframe","in-memory"], + "load_time": 10, + "data_size": 58970980436, + "concurrent_qps": 8.93, + "concurrent_error_ratio": 0, + "result": [ + [57.459, 0.001, 0.001], + [58.249, 0.002, 0.002], + [58.228, 0.003, 0.003], + [57.991, 0.004, 0.004], + [58.165, 0.062, 0.064], + [58.237, 0.073, 0.068], + [58.195, 0.003, 0.003], + [58.221, 0.013, 0.013], + [58.364, 0.177, 0.18], + [58.749, 0.22, 0.204], + [58.381, 0.051, 0.051], + [58.279, 0.071, 0.069], + [57.911, 0.082, 0.078], + [58.502, 0.157, 0.151], + [58.39, 0.099, 0.099], + [58.351, 0.091, 0.089], + [57.819, 0.255, 0.249], + [57.776, 0.221, 0.215], + [57.994, 0.444, 0.428], + [57.946, 0.004, 0.003], + [57.653, 0.034, 0.035], + [58.314, 0.064, 0.063], + [58.718, 0.364, 0.338], + [57.674, 0.107, 0.115], + [58.316, 0.018, 0.018], + [57.525, 0.021, 0.021], + [58.19, 0.031, 0.03], + [57.696, 0.068, 0.067], + [58.597, 0.716, 0.66], + [58.096, 0.026, 0.027], + [58.552, 0.094, 0.099], + [57.724, 0.087, 0.082], + [58.789, 0.462, 0.481], + [58.317, 0.34, 0.356], + [58.708, 0.339, 0.351], + [57.593, 0.087, 0.085], + [58.505, 0.036, 0.038], + [58.562, 0.055, 0.051], + [58.508, 0.019, 0.019], + [58.351, 0.045, 0.041], + [58.327, 0.043, 0.039], + [58.403, 0.023, 0.029], + [58.475, 0.016, 0.019] +] + } + \ No newline at end of file diff --git a/polars-dataframe/server.py b/polars-dataframe/server.py index 82f9c69a3a..dd4a230f3f 100644 --- a/polars-dataframe/server.py +++ b/polars-dataframe/server.py @@ -29,6 +29,14 @@ # Streaming engine will be the default soon. pl.Config.set_engine_affinity("streaming") +# ClickBench timings must include serializing the full query result back +# to the client (README, "Output Suppression"), so render tables without +# any row/column/cell truncation — nothing may be suppressed. +pl.Config.set_tbl_rows(-1) +pl.Config.set_tbl_cols(-1) +pl.Config.set_tbl_width_chars(-1) +pl.Config.set_fmt_str_lengths(65535) + app = FastAPI() hits_df: pl.DataFrame | None = None hits: pl.LazyFrame | None = None @@ -67,9 +75,13 @@ async def query(request: Request): except SyntaxError as e: raise HTTPException(status_code=400, detail=f"syntax error: {e}") start = timeit.default_timer() - result = eval(compiled, {"hits": hits, "pl": pl, "date": date}) + value = eval(compiled, {"hits": hits, "pl": pl, "date": date}) + # Rendering the result is part of the timed run: ClickBench measures + # back-to-back runtimes including returning the result to the client + # (issue #1397). + result = str(value) elapsed = round(timeit.default_timer() - start, 3) - return {"elapsed": elapsed, "result": str(result)} + return {"elapsed": elapsed, "result": result} @app.get("/data-size") diff --git a/polars/__pycache__/server.cpython-314.pyc b/polars/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000000..47ec7a30b3 Binary files /dev/null and b/polars/__pycache__/server.cpython-314.pyc differ diff --git a/polars/results/20260824/c6a.2xlarge.json b/polars/results/20260824/c6a.2xlarge.json new file mode 100644 index 0000000000..02736e5402 --- /dev/null +++ b/polars/results/20260824/c6a.2xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 4, + "data_size": 14779976446, + "concurrent_qps": 0.323, + "concurrent_error_ratio": 0, + "result": [ + [0.224, 0.001, 0.001], + [0.289, 0.011, 0.011], + [0.333, 0.055, 0.052], + [0.611, 0.074, 0.074], + [1.386, 0.917, 0.922], + [1.538, 0.996, 1.005], + [0.286, 0.04, 0.042], + [0.289, 0.015, 0.014], + [2.206, 1.722, 1.706], + [2.586, 2.049, 2.063], + [0.708, 0.161, 0.151], + [0.732, 0.191, 0.179], + [1.506, 0.854, 0.851], + [2.842, 1.548, 1.491], + [1.564, 0.925, 0.974], + [1.584, 1.101, 1.117], + [3.48, 2.893, 2.791], + [3.486, 2.814, 2.89], + [6.486, 5.044, 5.104], + [0.547, 0.029, 0.028], + [9.528, 1.269, 1.227], + [11.03, 1.427, 1.425], + [21.523, 5.76, 5.754], + [45.485, 3.259, 3.267], + [2.408, 0.456, 0.432], + [1.046, 0.396, 0.406], + [2.423, 0.489, 0.492], + [9.518, 1.848, 1.811], + [16.664, 15.74, 15.816], + [0.584, 0.275, 0.274], + [2.344, 0.917, 0.956], + [5.71, 0.978, 0.987], + [7.55, 4.885, 4.835], + [12.124, 7.962, 7.95], + [12.094, 8.31, 7.721], + [1.385, 0.916, 0.922], + [0.469, 0.095, 0.081], + [0.383, 0.054, 0.06], + [0.385, 0.036, 0.035], + [0.569, 0.132, 0.128], + [0.388, 0.013, 0.013], + [0.359, 0.011, 0.01], + [0.358, 0.011, 0.012] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c6a.4xlarge.json b/polars/results/20260824/c6a.4xlarge.json new file mode 100644 index 0000000000..28994224a8 --- /dev/null +++ b/polars/results/20260824/c6a.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 10, + "data_size": 14779976446, + "concurrent_qps": 0.88, + "concurrent_error_ratio": 0, + "result": [ + [0.239, 0.001, 0.001], + [0.256, 0.009, 0.008], + [0.317, 0.035, 0.033], + [0.538, 0.086, 0.087], + [0.92, 0.593, 0.564], + [1.126, 0.675, 0.679], + [0.254, 0.023, 0.023], + [0.291, 0.012, 0.011], + [1.629, 1.244, 1.253], + [1.844, 1.377, 1.377], + [0.569, 0.105, 0.106], + [0.593, 0.118, 0.112], + [1.055, 0.602, 0.591], + [2.583, 1.127, 1.121], + [1.17, 0.67, 0.72], + [1.062, 0.702, 0.693], + [2.931, 2.022, 2.058], + [2.902, 2.056, 2.048], + [5.585, 3.431, 3.438], + [0.473, 0.025, 0.024], + [9.531, 0.749, 0.746], + [11.031, 0.834, 0.822], + [21.486, 3.364, 3.32], + [45.486, 1.726, 1.707], + [2.429, 0.312, 0.288], + [0.775, 0.27, 0.251], + [2.426, 0.392, 0.403], + [9.539, 1.502, 1.475], + [8.943, 8.133, 8.213], + [0.453, 0.149, 0.145], + [2.178, 0.621, 0.616], + [5.569, 0.715, 0.736], + [6.47, 3.762, 3.85], + [11.142, 3.62, 3.665], + [11.229, 3.604, 3.766], + [1.27, 0.552, 0.558], + [0.488, 0.098, 0.094], + [0.401, 0.064, 0.058], + [0.394, 0.038, 0.037], + [0.55, 0.133, 0.131], + [0.405, 0.015, 0.015], + [0.379, 0.014, 0.013], + [0.385, 0.012, 0.012] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c6a.large.json b/polars/results/20260824/c6a.large.json new file mode 100644 index 0000000000..a92cce05e7 --- /dev/null +++ b/polars/results/20260824/c6a.large.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 0, + "data_size": 14779976446, + "concurrent_qps": 0.042, + "concurrent_error_ratio": 0, + "result": [ + [0.237, 0.002, 0.002], + [0.324, 0.031, 0.03], + [0.621, 0.177, 0.179], + [1.018, 0.189, 0.193], + [4.554, 3.774, 3.776], + [4.428, 3.999, 4.02], + [0.419, 0.143, 0.143], + [0.351, 0.035, 0.034], + [7.076, 6.617, 6.55], + [8.371, 7.694, 7.715], + [1.391, 0.507, 0.514], + [1.473, 0.631, 0.645], + [3.962, 3.144, 3.27], + [6.93, 5.466, 5.341], + [4.047, 3.422, 3.459], + [5.194, 4.381, 4.231], + [18.067, 23.946, 56.492], + [28.179, 86.209, 18.058], + [618.612, 552.284, 586.537], + [0.849, 0.06, 0.06], + [10.848, 4.414, 4.162], + [12.709, 5.271, 5.299], + [38.599, 39.699, 43.637], + [52.4, 52.772, 53.186], + [3.731, 1.521, 1.521], + [2.172, 1.262, 1.229], + [3.739, 1.794, 1.786], + [12.82, 8.257, 8.158], + [346.562, 340.083, 346.737], + [1.461, 1.159, 1.164], + [5.004, 3.418, 3.435], + [8.048, 3.795, 3.633], + [803.224, 791.896, 1654.053], + [1646.325, 1653.307, 1677.224], + [1599.66, 1656.523, 1612.319], + [4.454, 3.822, 3.87], + [0.636, 0.135, 0.13], + [0.463, 0.076, 0.066], + [0.47, 0.043, 0.041], + [0.796, 0.221, 0.229], + [0.44, 0.018, 0.018], + [0.407, 0.014, 0.014], + [0.391, 0.016, 0.015] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c6a.metal.json b/polars/results/20260824/c6a.metal.json new file mode 100644 index 0000000000..59a1688545 --- /dev/null +++ b/polars/results/20260824/c6a.metal.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 5, + "data_size": 14779976446, + "concurrent_qps": 3.593, + "concurrent_error_ratio": 0, + "result": [ + [0.26, 0.003, 0.003], + [0.303, 0.007, 0.008], + [0.293, 0.024, 0.022], + [0.371, 0.041, 0.037], + [0.483, 0.149, 0.141], + [0.894, 0.227, 0.224], + [0.23, 0.018, 0.015], + [0.307, 0.025, 0.024], + [1.079, 0.472, 0.439], + [1.355, 0.457, 0.394], + [0.483, 0.084, 0.082], + [0.525, 0.1, 0.092], + [0.924, 0.203, 0.197], + [2.243, 0.357, 0.358], + [1.062, 0.247, 0.254], + [0.523, 0.202, 0.181], + [2.467, 0.627, 0.604], + [2.369, 0.592, 0.566], + [4.524, 0.939, 0.852], + [0.326, 0.014, 0.012], + [9.537, 0.189, 0.18], + [11.04, 0.227, 0.209], + [21.556, 0.865, 0.862], + [45.693, 0.38, 0.378], + [2.435, 0.08, 0.076], + [0.77, 0.067, 0.071], + [2.476, 0.146, 0.151], + [9.59, 0.484, 0.44], + [8.271, 1.2, 1.203], + [0.308, 0.06, 0.057], + [2.135, 0.23, 0.235], + [5.472, 0.236, 0.21], + [4.805, 0.915, 0.874], + [10.071, 0.946, 0.859], + [10.098, 0.941, 0.872], + [0.539, 0.207, 0.194], + [0.472, 0.128, 0.139], + [0.397, 0.092, 0.093], + [0.482, 0.06, 0.062], + [0.606, 0.144, 0.144], + [0.432, 0.043, 0.039], + [0.404, 0.037, 0.036], + [0.406, 0.038, 0.038] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c6a.xlarge.json b/polars/results/20260824/c6a.xlarge.json new file mode 100644 index 0000000000..1ac3a4198d --- /dev/null +++ b/polars/results/20260824/c6a.xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 1, + "data_size": 14779976446, + "concurrent_qps": 0.078, + "concurrent_error_ratio": 0, + "result": [ + [0.205, 0.001, 0.002], + [0.266, 0.02, 0.018], + [0.389, 0.091, 0.092], + [0.833, 0.111, 0.105], + [2.45, 1.859, 1.902], + [2.515, 2.047, 2.042], + [0.298, 0.077, 0.073], + [0.332, 0.021, 0.021], + [3.983, 3.464, 3.47], + [4.526, 4.061, 4.074], + [1, 0.278, 0.287], + [1.009, 0.32, 0.323], + [2.39, 1.601, 1.605], + [3.944, 2.713, 2.785], + [2.457, 1.808, 1.802], + [2.907, 2.208, 2.247], + [6.066, 5.387, 5.455], + [6.057, 5.304, 5.361], + [10.731, 10.455, 10.479], + [0.665, 0.04, 0.042], + [10.735, 2.188, 2.164], + [12.455, 2.657, 2.656], + [24.536, 16.91, 13.548], + [48.109, 48.03, 40.887], + [2.437, 0.786, 0.794], + [1.417, 0.702, 0.721], + [2.431, 0.898, 0.928], + [9.556, 3.489, 3.431], + [140.696, 127.245, 198.628], + [0.808, 0.541, 0.548], + [2.789, 1.862, 1.848], + [6.126, 1.828, 1.871], + [265.12, 247.358, 286.667], + [402.524, 410.427, 430.351], + [406.906, 414.28, 413.66], + [2.459, 1.941, 1.936], + [0.51, 0.113, 0.094], + [0.376, 0.067, 0.05], + [0.447, 0.035, 0.035], + [0.665, 0.154, 0.163], + [0.397, 0.013, 0.017], + [0.37, 0.011, 0.011], + [0.372, 0.012, 0.013] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c7a.metal-48xl.json b/polars/results/20260824/c7a.metal-48xl.json new file mode 100644 index 0000000000..e3e3879152 --- /dev/null +++ b/polars/results/20260824/c7a.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 3, + "data_size": 14779976446, + "concurrent_qps": 5.353, + "concurrent_error_ratio": 0, + "result": [ + [0.261, 0.003, 0.002], + [0.308, 0.008, 0.007], + [0.337, 0.022, 0.021], + [0.492, 0.026, 0.021], + [0.569, 0.1, 0.091], + [1.167, 0.119, 0.118], + [0.28, 0.018, 0.017], + [0.351, 0.026, 0.026], + [0.925, 0.196, 0.183], + [1.219, 0.243, 0.227], + [0.74, 0.078, 0.079], + [0.923, 0.087, 0.083], + [1.377, 0.138, 0.14], + [4.041, 0.226, 0.216], + [1.064, 0.162, 0.158], + [0.785, 0.123, 0.113], + [2.24, 0.301, 0.275], + [2.198, 0.272, 0.242], + [4.059, 0.458, 0.423], + [0.862, 0.012, 0.008], + [9.592, 0.133, 0.146], + [11.127, 0.194, 0.182], + [21.634, 0.75, 0.685], + [45.697, 0.349, 0.32], + [2.472, 0.069, 0.064], + [0.825, 0.062, 0.057], + [2.516, 0.087, 0.088], + [9.631, 0.292, 0.283], + [8.284, 0.919, 0.827], + [0.337, 0.03, 0.031], + [2.123, 0.167, 0.173], + [5.44, 0.132, 0.137], + [4.295, 0.411, 0.402], + [9.891, 0.571, 0.5], + [9.843, 0.524, 0.506], + [0.569, 0.155, 0.134], + [0.553, 0.117, 0.121], + [0.467, 0.085, 0.091], + [0.506, 0.062, 0.057], + [0.565, 0.128, 0.123], + [0.406, 0.039, 0.036], + [0.393, 0.036, 0.034], + [0.406, 0.034, 0.033] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c8g.4xlarge.json b/polars/results/20260824/c8g.4xlarge.json new file mode 100644 index 0000000000..1a78729062 --- /dev/null +++ b/polars/results/20260824/c8g.4xlarge.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 1, + "data_size": 14779976446, + "concurrent_qps": 1.64, + "concurrent_error_ratio": 0, + "result": [ + [0.186, 0.001, 0.001], + [0.238, 0.007, 0.007], + [0.273, 0.025, 0.023], + [0.446, 0.027, 0.028], + [0.664, 0.228, 0.242], + [0.837, 0.325, 0.315], + [0.22, 0.015, 0.013], + [0.247, 0.008, 0.008], + [0.897, 0.471, 0.486], + [1.128, 0.562, 0.564], + [0.477, 0.062, 0.057], + [0.508, 0.063, 0.064], + [0.869, 0.298, 0.317], + [2.138, 0.491, 0.515], + [0.96, 0.318, 0.326], + [0.709, 0.273, 0.286], + [2.306, 0.778, 0.794], + [2.275, 0.794, 0.771], + [4.326, 1.443, 1.381], + [0.393, 0.013, 0.013], + [9.51, 0.568, 0.555], + [11.002, 0.579, 0.584], + [21.488, 2.91, 2.901], + [45.484, 1.152, 1.131], + [2.385, 0.217, 0.209], + [0.825, 0.196, 0.2], + [2.383, 0.22, 0.219], + [9.517, 0.741, 0.718], + [8.458, 5.523, 5.52], + [0.344, 0.117, 0.116], + [1.966, 0.351, 0.318], + [5.309, 0.314, 0.332], + [4.597, 1.176, 1.281], + [10.213, 1.626, 1.695], + [10.191, 1.664, 1.667], + [0.58, 0.229, 0.236], + [0.437, 0.071, 0.057], + [0.352, 0.048, 0.047], + [0.38, 0.033, 0.034], + [0.462, 0.078, 0.072], + [0.314, 0.012, 0.012], + [0.286, 0.01, 0.01], + [0.297, 0.009, 0.009] +] + } + \ No newline at end of file diff --git a/polars/results/20260824/c8g.metal-48xl.json b/polars/results/20260824/c8g.metal-48xl.json new file mode 100644 index 0000000000..4900cb6f63 --- /dev/null +++ b/polars/results/20260824/c8g.metal-48xl.json @@ -0,0 +1,60 @@ +{ + "system": "Polars (Parquet)", + "date": "2026-08-24", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "no", + "hardware": "cpu", + "tuned": "no", + "tags": ["column-oriented","stateless"], + "load_time": 1, + "data_size": 14779976446, + "concurrent_qps": 5.803, + "concurrent_error_ratio": 0, + "result": [ + [0.177, 0.002, 0.001], + [0.213, 0.004, 0.004], + [0.217, 0.011, 0.011], + [0.359, 0.018, 0.015], + [0.694, 0.075, 0.071], + [0.789, 0.121, 0.109], + [0.2, 0.01, 0.008], + [0.237, 0.014, 0.013], + [0.734, 0.214, 0.18], + [1.043, 0.234, 0.223], + [0.433, 0.055, 0.049], + [0.455, 0.064, 0.058], + [0.81, 0.106, 0.111], + [2.044, 0.198, 0.196], + [1.025, 0.145, 0.138], + [0.432, 0.099, 0.094], + [2.098, 0.279, 0.255], + [2.064, 0.238, 0.237], + [3.891, 0.45, 0.41], + [0.34, 0.009, 0.008], + [9.578, 0.13, 0.129], + [11.045, 0.17, 0.157], + [21.549, 0.775, 0.81], + [45.564, 0.304, 0.324], + [2.376, 0.057, 0.057], + [0.733, 0.057, 0.057], + [2.419, 0.079, 0.079], + [9.514, 0.262, 0.284], + [8.185, 0.88, 0.865], + [0.251, 0.032, 0.028], + [1.985, 0.141, 0.132], + [5.326, 0.135, 0.122], + [4.07, 0.401, 0.371], + [9.737, 0.562, 0.48], + [9.744, 0.542, 0.54], + [0.431, 0.1, 0.094], + [0.401, 0.095, 0.092], + [0.341, 0.07, 0.067], + [0.331, 0.049, 0.045], + [0.43, 0.094, 0.092], + [0.302, 0.026, 0.025], + [0.275, 0.024, 0.023], + [0.302, 0.022, 0.021] +] + } + \ No newline at end of file diff --git a/polars/server.py b/polars/server.py index 8f01385202..2570422b2e 100755 --- a/polars/server.py +++ b/polars/server.py @@ -29,6 +29,14 @@ # Streaming engine will be the default soon. pl.Config.set_engine_affinity("streaming") +# ClickBench timings must include serializing the full query result back +# to the client (README, "Output Suppression"), so render tables without +# any row/column/cell truncation — nothing may be suppressed. +pl.Config.set_tbl_rows(-1) +pl.Config.set_tbl_cols(-1) +pl.Config.set_tbl_width_chars(-1) +pl.Config.set_fmt_str_lengths(65535) + app = FastAPI() hits: pl.LazyFrame | None = None parquet_path: str = "hits.parquet" @@ -65,15 +73,16 @@ async def query(request: Request): raise HTTPException(status_code=400, detail=f"syntax error: {e}") start = timeit.default_timer() value = eval(compiled, {"hits": hits, "pl": pl, "date": date}) - elapsed = round(timeit.default_timer() - start, 3) - # Render the eval result so the playground UI shows something - # instead of just a timing line. polars DataFrames / Series / - # LazyFrames have a useful __str__; everything else (scalar, - # tuple, dict, ...) falls through repr. + # Rendering the result is part of the timed run: ClickBench measures + # back-to-back runtimes including returning the result to the client + # (issue #1397). polars DataFrames / Series / LazyFrames have a useful + # __str__; everything else (scalar, tuple, dict, ...) falls through + # repr. if isinstance(value, (pl.DataFrame, pl.Series, pl.LazyFrame)): result = str(value) else: result = repr(value) + elapsed = round(timeit.default_timer() - start, 3) return {"elapsed": elapsed, "result": result}