From 9b70174d7e888992b34abb3b638af07c17e74f0d Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sat, 24 Jan 2026 17:51:53 +0100 Subject: [PATCH 1/6] Add Firebolt Parquet benchmark entries Add two new benchmarks for testing Firebolt's performance when querying Parquet files directly without data ingestion: - firebolt-parquet: single Parquet file (hits.parquet) - firebolt-parquet-partitioned: 100 partitioned Parquet files Co-Authored-By: Claude Opus 4.5 --- firebolt-parquet-partitioned/benchmark.sh | 45 ++++++++ firebolt-parquet-partitioned/create.sql | 113 +++++++++++++++++++++ firebolt-parquet-partitioned/queries.sql | 43 ++++++++ firebolt-parquet-partitioned/run.sh | 18 ++++ firebolt-parquet-partitioned/template.json | 13 +++ firebolt-parquet/benchmark.sh | 42 ++++++++ firebolt-parquet/create.sql | 113 +++++++++++++++++++++ firebolt-parquet/queries.sql | 43 ++++++++ firebolt-parquet/run.sh | 18 ++++ firebolt-parquet/template.json | 13 +++ 10 files changed, 461 insertions(+) create mode 100755 firebolt-parquet-partitioned/benchmark.sh create mode 100644 firebolt-parquet-partitioned/create.sql create mode 100644 firebolt-parquet-partitioned/queries.sql create mode 100755 firebolt-parquet-partitioned/run.sh create mode 100644 firebolt-parquet-partitioned/template.json create mode 100755 firebolt-parquet/benchmark.sh create mode 100644 firebolt-parquet/create.sql create mode 100644 firebolt-parquet/queries.sql create mode 100755 firebolt-parquet/run.sh create mode 100644 firebolt-parquet/template.json diff --git a/firebolt-parquet-partitioned/benchmark.sh b/firebolt-parquet-partitioned/benchmark.sh new file mode 100755 index 000000000..54bcec699 --- /dev/null +++ b/firebolt-parquet-partitioned/benchmark.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Download the partitioned hits parquet files +echo "Downloading dataset..." +rm -rf data +mkdir -p data +seq 0 99 | xargs -P100 -I{} bash -c 'wget -P data --continue --progress=dot:giga https://datasets.clickhouse.com/hits_compatible/athena_partitioned/hits_{}.parquet' + +# Start the container +sudo apt-get install -y docker.io jq +sudo docker run -dit --name firebolt-core --rm \ + --ulimit memlock=8589934592:8589934592 \ + --security-opt seccomp=unconfined \ + -p 127.0.0.1:3473:3473 \ + -v /firebolt-core/volume \ + -v ./data/:/firebolt-core/clickbench \ + ghcr.io/firebolt-db/firebolt-core:preview-rc + +# Wait until Firebolt is ready +for _ in {1..600} +do + curl -s "http://localhost:3473/" --data-binary "SELECT 'Firebolt is ready';" > /dev/null && break + sleep 1 +done + +# Create the database and external table +echo "Creating external table..." +curl -s "http://localhost:3473/?enable_multi_query_requests=true" --data-binary "DROP DATABASE IF EXISTS clickbench;CREATE DATABASE clickbench;" +curl -s "http://localhost:3473/?database=clickbench&enable_multi_query_requests=true" --data-binary @create.sql + +# Print statistics +DATA_SIZE=$(du -bcs data/hits_*.parquet 2>/dev/null | grep total | awk '{print $1}') +if [ -z "$DATA_SIZE" ]; then + DATA_SIZE=$(du -cs data/hits_*.parquet | grep total | awk '{print $1}') +fi +echo "Load time: 0" +echo "Data size: $DATA_SIZE" + +# Run the benchmark +echo "Running the benchmark..." +./run.sh + +# Stop the container and remove the data +sudo docker container stop firebolt-core +rm -rf data diff --git a/firebolt-parquet-partitioned/create.sql b/firebolt-parquet-partitioned/create.sql new file mode 100644 index 000000000..dbc160107 --- /dev/null +++ b/firebolt-parquet-partitioned/create.sql @@ -0,0 +1,113 @@ +-- External table reading directly from partitioned Parquet files +-- No data ingestion, queries run directly on Parquet +CREATE EXTERNAL TABLE hits +( + "WatchID" BIGINT NOT NULL, + "JavaEnable" INTEGER NOT NULL, + "Title" TEXT NOT NULL, + "GoodEvent" INTEGER NOT NULL, + "EventTime" BIGINT NOT NULL, + "EventDate" INTEGER NOT NULL, + "CounterID" INTEGER NOT NULL, + "ClientIP" INTEGER NOT NULL, + "RegionID" INTEGER NOT NULL, + "UserID" BIGINT NOT NULL, + "CounterClass" INTEGER NOT NULL, + "OS" INTEGER NOT NULL, + "UserAgent" INTEGER NOT NULL, + "URL" TEXT NOT NULL, + "Referer" TEXT NOT NULL, + "IsRefresh" INTEGER NOT NULL, + "RefererCategoryID" INTEGER NOT NULL, + "RefererRegionID" INTEGER NOT NULL, + "URLCategoryID" INTEGER NOT NULL, + "URLRegionID" INTEGER NOT NULL, + "ResolutionWidth" INTEGER NOT NULL, + "ResolutionHeight" INTEGER NOT NULL, + "ResolutionDepth" INTEGER NOT NULL, + "FlashMajor" INTEGER NOT NULL, + "FlashMinor" INTEGER NOT NULL, + "FlashMinor2" TEXT NOT NULL, + "NetMajor" INTEGER NOT NULL, + "NetMinor" INTEGER NOT NULL, + "UserAgentMajor" INTEGER NOT NULL, + "UserAgentMinor" VARCHAR(255) NOT NULL, + "CookieEnable" INTEGER NOT NULL, + "JavascriptEnable" INTEGER NOT NULL, + "IsMobile" INTEGER NOT NULL, + "MobilePhone" INTEGER NOT NULL, + "MobilePhoneModel" TEXT NOT NULL, + "Params" TEXT NOT NULL, + "IPNetworkID" INTEGER NOT NULL, + "TraficSourceID" INTEGER NOT NULL, + "SearchEngineID" INTEGER NOT NULL, + "SearchPhrase" TEXT NOT NULL, + "AdvEngineID" INTEGER NOT NULL, + "IsArtifical" INTEGER NOT NULL, + "WindowClientWidth" INTEGER NOT NULL, + "WindowClientHeight" INTEGER NOT NULL, + "ClientTimeZone" INTEGER NOT NULL, + "ClientEventTime" BIGINT NOT NULL, + "SilverlightVersion1" INTEGER NOT NULL, + "SilverlightVersion2" INTEGER NOT NULL, + "SilverlightVersion3" INTEGER NOT NULL, + "SilverlightVersion4" INTEGER NOT NULL, + "PageCharset" TEXT NOT NULL, + "CodeVersion" INTEGER NOT NULL, + "IsLink" INTEGER NOT NULL, + "IsDownload" INTEGER NOT NULL, + "IsNotBounce" INTEGER NOT NULL, + "FUniqID" BIGINT NOT NULL, + "OriginalURL" TEXT NOT NULL, + "HID" INTEGER NOT NULL, + "IsOldCounter" INTEGER NOT NULL, + "IsEvent" INTEGER NOT NULL, + "IsParameter" INTEGER NOT NULL, + "DontCountHits" INTEGER NOT NULL, + "WithHash" INTEGER NOT NULL, + "HitColor" CHAR NOT NULL, + "LocalEventTime" BIGINT NOT NULL, + "Age" INTEGER NOT NULL, + "Sex" INTEGER NOT NULL, + "Income" INTEGER NOT NULL, + "Interests" INTEGER NOT NULL, + "Robotness" INTEGER NOT NULL, + "RemoteIP" INTEGER NOT NULL, + "WindowName" INTEGER NOT NULL, + "OpenerName" INTEGER NOT NULL, + "HistoryLength" INTEGER NOT NULL, + "BrowserLanguage" TEXT NOT NULL, + "BrowserCountry" TEXT NOT NULL, + "SocialNetwork" TEXT NOT NULL, + "SocialAction" TEXT NOT NULL, + "HTTPError" INTEGER NOT NULL, + "SendTiming" INTEGER NOT NULL, + "DNSTiming" INTEGER NOT NULL, + "ConnectTiming" INTEGER NOT NULL, + "ResponseStartTiming" INTEGER NOT NULL, + "ResponseEndTiming" INTEGER NOT NULL, + "FetchTiming" INTEGER NOT NULL, + "SocialSourceNetworkID" INTEGER NOT NULL, + "SocialSourcePage" TEXT NOT NULL, + "ParamPrice" BIGINT NOT NULL, + "ParamOrderID" TEXT NOT NULL, + "ParamCurrency" TEXT NOT NULL, + "ParamCurrencyID" INTEGER NOT NULL, + "OpenstatServiceName" TEXT NOT NULL, + "OpenstatCampaignID" TEXT NOT NULL, + "OpenstatAdID" TEXT NOT NULL, + "OpenstatSourceID" TEXT NOT NULL, + "UTMSource" TEXT NOT NULL, + "UTMMedium" TEXT NOT NULL, + "UTMCampaign" TEXT NOT NULL, + "UTMContent" TEXT NOT NULL, + "UTMTerm" TEXT NOT NULL, + "FromTag" TEXT NOT NULL, + "HasGCLID" INTEGER NOT NULL, + "RefererHash" BIGINT NOT NULL, + "URLHash" BIGINT NOT NULL, + "CLID" INTEGER NOT NULL +) +URL = 'file:///firebolt-core/clickbench' +OBJECT_PATTERN = 'hits_*.parquet' +TYPE = PARQUET; diff --git a/firebolt-parquet-partitioned/queries.sql b/firebolt-parquet-partitioned/queries.sql new file mode 100644 index 000000000..136ea6b32 --- /dev/null +++ b/firebolt-parquet-partitioned/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM hits; +SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits; +SELECT AVG(UserID) FROM hits; +SELECT COUNT(DISTINCT UserID) FROM hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM hits; +SELECT MIN(DATE '1970-01-01' + EventDate), MAX(DATE '1970-01-01' + EventDate) FROM hits; +SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM to_timestamp(EventTime) AT TIME ZONE 'UTC') AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, DATE '1970-01-01' + EventDate AS d, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, d ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16630 AND EventDate <= 16631 AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') ORDER BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') LIMIT 10 OFFSET 1000; diff --git a/firebolt-parquet-partitioned/run.sh b/firebolt-parquet-partitioned/run.sh new file mode 100755 index 000000000..de27ee2c7 --- /dev/null +++ b/firebolt-parquet-partitioned/run.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Disable the result and subresult caches. +QUERY_PARAMS="enable_result_cache=false&enable_subresult_cache=false&output_format=JSON_Compact" + +cat queries.sql | while read -r query; do + # Firebolt is a database with local on-disk storage: drop the page cache before the first run of each query. + sync + echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null + # Run the query three times. + # Extract the elapsed time from the response's statistics. + ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + echo -n "[${ELAPSED}" + ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + echo -n ",${ELAPSED}" + ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + echo ",${ELAPSED}]," +done diff --git a/firebolt-parquet-partitioned/template.json b/firebolt-parquet-partitioned/template.json new file mode 100644 index 000000000..beefe5faf --- /dev/null +++ b/firebolt-parquet-partitioned/template.json @@ -0,0 +1,13 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": [ + "C++", + "column-oriented", + "PostgreSQL compatible", + "ClickHouse derivative", + "stateless" + ] +} diff --git a/firebolt-parquet/benchmark.sh b/firebolt-parquet/benchmark.sh new file mode 100755 index 000000000..792931cb4 --- /dev/null +++ b/firebolt-parquet/benchmark.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Download the hits.parquet file +echo "Downloading dataset..." +rm -rf data +mkdir -p data +wget -P data --continue --progress=dot:giga "https://datasets.clickhouse.com/hits_compatible/hits.parquet" + +# Start the container +sudo apt-get install -y docker.io jq +sudo docker run -dit --name firebolt-core --rm \ + --ulimit memlock=8589934592:8589934592 \ + --security-opt seccomp=unconfined \ + -p 127.0.0.1:3473:3473 \ + -v /firebolt-core/volume \ + -v ./data/:/firebolt-core/clickbench \ + ghcr.io/firebolt-db/firebolt-core:preview-rc + +# Wait until Firebolt is ready +for _ in {1..600} +do + curl -s "http://localhost:3473/" --data-binary "SELECT 'Firebolt is ready';" > /dev/null && break + sleep 1 +done + +# Create the database and external table +echo "Creating external table..." +curl -s "http://localhost:3473/?enable_multi_query_requests=true" --data-binary "DROP DATABASE IF EXISTS clickbench;CREATE DATABASE clickbench;" +curl -s "http://localhost:3473/?database=clickbench&enable_multi_query_requests=true" --data-binary @create.sql + +# Print statistics +DATA_SIZE=$(stat -c%s data/hits.parquet 2>/dev/null || stat -f%z data/hits.parquet) +echo "Load time: 0" +echo "Data size: $DATA_SIZE" + +# Run the benchmark +echo "Running the benchmark..." +./run.sh + +# Stop the container and remove the data +sudo docker container stop firebolt-core +rm -rf data diff --git a/firebolt-parquet/create.sql b/firebolt-parquet/create.sql new file mode 100644 index 000000000..26e9ed3c3 --- /dev/null +++ b/firebolt-parquet/create.sql @@ -0,0 +1,113 @@ +-- External table reading directly from Parquet file +-- No data ingestion, queries run directly on Parquet +CREATE EXTERNAL TABLE hits +( + "WatchID" BIGINT NOT NULL, + "JavaEnable" INTEGER NOT NULL, + "Title" TEXT NOT NULL, + "GoodEvent" INTEGER NOT NULL, + "EventTime" BIGINT NOT NULL, + "EventDate" INTEGER NOT NULL, + "CounterID" INTEGER NOT NULL, + "ClientIP" INTEGER NOT NULL, + "RegionID" INTEGER NOT NULL, + "UserID" BIGINT NOT NULL, + "CounterClass" INTEGER NOT NULL, + "OS" INTEGER NOT NULL, + "UserAgent" INTEGER NOT NULL, + "URL" TEXT NOT NULL, + "Referer" TEXT NOT NULL, + "IsRefresh" INTEGER NOT NULL, + "RefererCategoryID" INTEGER NOT NULL, + "RefererRegionID" INTEGER NOT NULL, + "URLCategoryID" INTEGER NOT NULL, + "URLRegionID" INTEGER NOT NULL, + "ResolutionWidth" INTEGER NOT NULL, + "ResolutionHeight" INTEGER NOT NULL, + "ResolutionDepth" INTEGER NOT NULL, + "FlashMajor" INTEGER NOT NULL, + "FlashMinor" INTEGER NOT NULL, + "FlashMinor2" TEXT NOT NULL, + "NetMajor" INTEGER NOT NULL, + "NetMinor" INTEGER NOT NULL, + "UserAgentMajor" INTEGER NOT NULL, + "UserAgentMinor" VARCHAR(255) NOT NULL, + "CookieEnable" INTEGER NOT NULL, + "JavascriptEnable" INTEGER NOT NULL, + "IsMobile" INTEGER NOT NULL, + "MobilePhone" INTEGER NOT NULL, + "MobilePhoneModel" TEXT NOT NULL, + "Params" TEXT NOT NULL, + "IPNetworkID" INTEGER NOT NULL, + "TraficSourceID" INTEGER NOT NULL, + "SearchEngineID" INTEGER NOT NULL, + "SearchPhrase" TEXT NOT NULL, + "AdvEngineID" INTEGER NOT NULL, + "IsArtifical" INTEGER NOT NULL, + "WindowClientWidth" INTEGER NOT NULL, + "WindowClientHeight" INTEGER NOT NULL, + "ClientTimeZone" INTEGER NOT NULL, + "ClientEventTime" BIGINT NOT NULL, + "SilverlightVersion1" INTEGER NOT NULL, + "SilverlightVersion2" INTEGER NOT NULL, + "SilverlightVersion3" INTEGER NOT NULL, + "SilverlightVersion4" INTEGER NOT NULL, + "PageCharset" TEXT NOT NULL, + "CodeVersion" INTEGER NOT NULL, + "IsLink" INTEGER NOT NULL, + "IsDownload" INTEGER NOT NULL, + "IsNotBounce" INTEGER NOT NULL, + "FUniqID" BIGINT NOT NULL, + "OriginalURL" TEXT NOT NULL, + "HID" INTEGER NOT NULL, + "IsOldCounter" INTEGER NOT NULL, + "IsEvent" INTEGER NOT NULL, + "IsParameter" INTEGER NOT NULL, + "DontCountHits" INTEGER NOT NULL, + "WithHash" INTEGER NOT NULL, + "HitColor" CHAR NOT NULL, + "LocalEventTime" BIGINT NOT NULL, + "Age" INTEGER NOT NULL, + "Sex" INTEGER NOT NULL, + "Income" INTEGER NOT NULL, + "Interests" INTEGER NOT NULL, + "Robotness" INTEGER NOT NULL, + "RemoteIP" INTEGER NOT NULL, + "WindowName" INTEGER NOT NULL, + "OpenerName" INTEGER NOT NULL, + "HistoryLength" INTEGER NOT NULL, + "BrowserLanguage" TEXT NOT NULL, + "BrowserCountry" TEXT NOT NULL, + "SocialNetwork" TEXT NOT NULL, + "SocialAction" TEXT NOT NULL, + "HTTPError" INTEGER NOT NULL, + "SendTiming" INTEGER NOT NULL, + "DNSTiming" INTEGER NOT NULL, + "ConnectTiming" INTEGER NOT NULL, + "ResponseStartTiming" INTEGER NOT NULL, + "ResponseEndTiming" INTEGER NOT NULL, + "FetchTiming" INTEGER NOT NULL, + "SocialSourceNetworkID" INTEGER NOT NULL, + "SocialSourcePage" TEXT NOT NULL, + "ParamPrice" BIGINT NOT NULL, + "ParamOrderID" TEXT NOT NULL, + "ParamCurrency" TEXT NOT NULL, + "ParamCurrencyID" INTEGER NOT NULL, + "OpenstatServiceName" TEXT NOT NULL, + "OpenstatCampaignID" TEXT NOT NULL, + "OpenstatAdID" TEXT NOT NULL, + "OpenstatSourceID" TEXT NOT NULL, + "UTMSource" TEXT NOT NULL, + "UTMMedium" TEXT NOT NULL, + "UTMCampaign" TEXT NOT NULL, + "UTMContent" TEXT NOT NULL, + "UTMTerm" TEXT NOT NULL, + "FromTag" TEXT NOT NULL, + "HasGCLID" INTEGER NOT NULL, + "RefererHash" BIGINT NOT NULL, + "URLHash" BIGINT NOT NULL, + "CLID" INTEGER NOT NULL +) +URL = 'file:///firebolt-core/clickbench' +OBJECT_PATTERN = 'hits.parquet' +TYPE = PARQUET; diff --git a/firebolt-parquet/queries.sql b/firebolt-parquet/queries.sql new file mode 100644 index 000000000..136ea6b32 --- /dev/null +++ b/firebolt-parquet/queries.sql @@ -0,0 +1,43 @@ +SELECT COUNT(*) FROM hits; +SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0; +SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits; +SELECT AVG(UserID) FROM hits; +SELECT COUNT(DISTINCT UserID) FROM hits; +SELECT COUNT(DISTINCT SearchPhrase) FROM hits; +SELECT MIN(DATE '1970-01-01' + EventDate), MAX(DATE '1970-01-01' + EventDate) FROM hits; +SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; +SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; +SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; +SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; +SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; +SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10; +SELECT UserID, extract(minute FROM to_timestamp(EventTime) AT TIME ZONE 'UTC') AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; +SELECT UserID FROM hits WHERE UserID = 435090932899640449; +SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'; +SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; +SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; +SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; +SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits; +SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10; +SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; +SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; +SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; +SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT URLHash, DATE '1970-01-01' + EventDate AS d, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, d ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16630 AND EventDate <= 16631 AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') ORDER BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') LIMIT 10 OFFSET 1000; diff --git a/firebolt-parquet/run.sh b/firebolt-parquet/run.sh new file mode 100755 index 000000000..de27ee2c7 --- /dev/null +++ b/firebolt-parquet/run.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Disable the result and subresult caches. +QUERY_PARAMS="enable_result_cache=false&enable_subresult_cache=false&output_format=JSON_Compact" + +cat queries.sql | while read -r query; do + # Firebolt is a database with local on-disk storage: drop the page cache before the first run of each query. + sync + echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null + # Run the query three times. + # Extract the elapsed time from the response's statistics. + ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + echo -n "[${ELAPSED}" + ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + echo -n ",${ELAPSED}" + ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + echo ",${ELAPSED}]," +done diff --git a/firebolt-parquet/template.json b/firebolt-parquet/template.json new file mode 100644 index 000000000..6ba256363 --- /dev/null +++ b/firebolt-parquet/template.json @@ -0,0 +1,13 @@ +{ + "system": "Firebolt (Parquet)", + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": [ + "C++", + "column-oriented", + "PostgreSQL compatible", + "ClickHouse derivative", + "stateless" + ] +} From c189753034b1622e8e54c3a468041986d2416def Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sat, 24 Jan 2026 19:41:55 +0100 Subject: [PATCH 2/6] Use curl -sS instead of curl -s to show errors Co-Authored-By: Claude Opus 4.5 --- firebolt-parquet-partitioned/benchmark.sh | 6 +++--- firebolt-parquet-partitioned/run.sh | 6 +++--- firebolt-parquet/benchmark.sh | 6 +++--- firebolt-parquet/run.sh | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/firebolt-parquet-partitioned/benchmark.sh b/firebolt-parquet-partitioned/benchmark.sh index 54bcec699..6611b3cc1 100755 --- a/firebolt-parquet-partitioned/benchmark.sh +++ b/firebolt-parquet-partitioned/benchmark.sh @@ -19,14 +19,14 @@ sudo docker run -dit --name firebolt-core --rm \ # Wait until Firebolt is ready for _ in {1..600} do - curl -s "http://localhost:3473/" --data-binary "SELECT 'Firebolt is ready';" > /dev/null && break + curl -sS "http://localhost:3473/" --data-binary "SELECT 'Firebolt is ready';" > /dev/null && break sleep 1 done # Create the database and external table echo "Creating external table..." -curl -s "http://localhost:3473/?enable_multi_query_requests=true" --data-binary "DROP DATABASE IF EXISTS clickbench;CREATE DATABASE clickbench;" -curl -s "http://localhost:3473/?database=clickbench&enable_multi_query_requests=true" --data-binary @create.sql +curl -sS "http://localhost:3473/?enable_multi_query_requests=true" --data-binary "DROP DATABASE IF EXISTS clickbench;CREATE DATABASE clickbench;" +curl -sS "http://localhost:3473/?database=clickbench&enable_multi_query_requests=true" --data-binary @create.sql # Print statistics DATA_SIZE=$(du -bcs data/hits_*.parquet 2>/dev/null | grep total | awk '{print $1}') diff --git a/firebolt-parquet-partitioned/run.sh b/firebolt-parquet-partitioned/run.sh index de27ee2c7..9b810c99e 100755 --- a/firebolt-parquet-partitioned/run.sh +++ b/firebolt-parquet-partitioned/run.sh @@ -9,10 +9,10 @@ cat queries.sql | while read -r query; do echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null # Run the query three times. # Extract the elapsed time from the response's statistics. - ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + ELAPSED=$(curl -sS "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') echo -n "[${ELAPSED}" - ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + ELAPSED=$(curl -sS "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') echo -n ",${ELAPSED}" - ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + ELAPSED=$(curl -sS "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') echo ",${ELAPSED}]," done diff --git a/firebolt-parquet/benchmark.sh b/firebolt-parquet/benchmark.sh index 792931cb4..0fe4cf76e 100755 --- a/firebolt-parquet/benchmark.sh +++ b/firebolt-parquet/benchmark.sh @@ -19,14 +19,14 @@ sudo docker run -dit --name firebolt-core --rm \ # Wait until Firebolt is ready for _ in {1..600} do - curl -s "http://localhost:3473/" --data-binary "SELECT 'Firebolt is ready';" > /dev/null && break + curl -sS "http://localhost:3473/" --data-binary "SELECT 'Firebolt is ready';" > /dev/null && break sleep 1 done # Create the database and external table echo "Creating external table..." -curl -s "http://localhost:3473/?enable_multi_query_requests=true" --data-binary "DROP DATABASE IF EXISTS clickbench;CREATE DATABASE clickbench;" -curl -s "http://localhost:3473/?database=clickbench&enable_multi_query_requests=true" --data-binary @create.sql +curl -sS "http://localhost:3473/?enable_multi_query_requests=true" --data-binary "DROP DATABASE IF EXISTS clickbench;CREATE DATABASE clickbench;" +curl -sS "http://localhost:3473/?database=clickbench&enable_multi_query_requests=true" --data-binary @create.sql # Print statistics DATA_SIZE=$(stat -c%s data/hits.parquet 2>/dev/null || stat -f%z data/hits.parquet) diff --git a/firebolt-parquet/run.sh b/firebolt-parquet/run.sh index de27ee2c7..9b810c99e 100755 --- a/firebolt-parquet/run.sh +++ b/firebolt-parquet/run.sh @@ -9,10 +9,10 @@ cat queries.sql | while read -r query; do echo 3 | sudo tee /proc/sys/vm/drop_caches > /dev/null # Run the query three times. # Extract the elapsed time from the response's statistics. - ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + ELAPSED=$(curl -sS "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') echo -n "[${ELAPSED}" - ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + ELAPSED=$(curl -sS "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') echo -n ",${ELAPSED}" - ELAPSED=$(curl -s "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') + ELAPSED=$(curl -sS "http://localhost:3473/?database=clickbench&${QUERY_PARAMS}" --data-binary "$query" | jq '.statistics.elapsed') echo ",${ELAPSED}]," done From 343edddda1d500505cc8e375b14c299546869a9d Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sat, 21 Feb 2026 01:58:29 +0000 Subject: [PATCH 3/6] Quote column names in Firebolt Parquet queries and add benchmark results Firebolt requires double-quoted identifiers for case-sensitive column names defined with quotes in CREATE EXTERNAL TABLE. Without quotes, column names were lowercased causing "Column does not exist" errors. Co-Authored-By: Claude Opus 4.6 --- firebolt-parquet-partitioned/queries.sql | 84 +++++++++---------- .../results/result.csv | 43 ++++++++++ firebolt-parquet/queries.sql | 84 +++++++++---------- firebolt-parquet/results/result.csv | 43 ++++++++++ 4 files changed, 170 insertions(+), 84 deletions(-) create mode 100644 firebolt-parquet-partitioned/results/result.csv create mode 100644 firebolt-parquet/results/result.csv diff --git a/firebolt-parquet-partitioned/queries.sql b/firebolt-parquet-partitioned/queries.sql index 136ea6b32..04953f039 100644 --- a/firebolt-parquet-partitioned/queries.sql +++ b/firebolt-parquet-partitioned/queries.sql @@ -1,43 +1,43 @@ SELECT COUNT(*) FROM hits; -SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0; -SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits; -SELECT AVG(UserID) FROM hits; -SELECT COUNT(DISTINCT UserID) FROM hits; -SELECT COUNT(DISTINCT SearchPhrase) FROM hits; -SELECT MIN(DATE '1970-01-01' + EventDate), MAX(DATE '1970-01-01' + EventDate) FROM hits; -SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; -SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; -SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; -SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; -SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; -SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; -SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; -SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; -SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10; -SELECT UserID, extract(minute FROM to_timestamp(EventTime) AT TIME ZONE 'UTC') AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; -SELECT UserID FROM hits WHERE UserID = 435090932899640449; -SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'; -SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; -SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; -SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; -SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; -SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; -SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; -SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits; -SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; -SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; -SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; -SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10; -SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; -SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; -SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; -SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; -SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; -SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; -SELECT URLHash, DATE '1970-01-01' + EventDate AS d, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, d ORDER BY PageViews DESC LIMIT 10 OFFSET 100; -SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; -SELECT DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16630 AND EventDate <= 16631 AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') ORDER BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') LIMIT 10 OFFSET 1000; +SELECT COUNT(*) FROM hits WHERE "AdvEngineID" <> 0; +SELECT SUM("AdvEngineID"), COUNT(*), AVG("ResolutionWidth") FROM hits; +SELECT AVG("UserID") FROM hits; +SELECT COUNT(DISTINCT "UserID") FROM hits; +SELECT COUNT(DISTINCT "SearchPhrase") FROM hits; +SELECT MIN(DATE '1970-01-01' + "EventDate"), MAX(DATE '1970-01-01' + "EventDate") FROM hits; +SELECT "AdvEngineID", COUNT(*) FROM hits WHERE "AdvEngineID" <> 0 GROUP BY "AdvEngineID" ORDER BY COUNT(*) DESC; +SELECT "RegionID", COUNT(DISTINCT "UserID") AS u FROM hits GROUP BY "RegionID" ORDER BY u DESC LIMIT 10; +SELECT "RegionID", SUM("AdvEngineID"), COUNT(*) AS c, AVG("ResolutionWidth"), COUNT(DISTINCT "UserID") FROM hits GROUP BY "RegionID" ORDER BY c DESC LIMIT 10; +SELECT "MobilePhoneModel", COUNT(DISTINCT "UserID") AS u FROM hits WHERE "MobilePhoneModel" <> '' GROUP BY "MobilePhoneModel" ORDER BY u DESC LIMIT 10; +SELECT "MobilePhone", "MobilePhoneModel", COUNT(DISTINCT "UserID") AS u FROM hits WHERE "MobilePhoneModel" <> '' GROUP BY "MobilePhone", "MobilePhoneModel" ORDER BY u DESC LIMIT 10; +SELECT "SearchPhrase", COUNT(*) AS c FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT "SearchPhrase", COUNT(DISTINCT "UserID") AS u FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY u DESC LIMIT 10; +SELECT "SearchEngineID", "SearchPhrase", COUNT(*) AS c FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchEngineID", "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT "UserID", COUNT(*) FROM hits GROUP BY "UserID" ORDER BY COUNT(*) DESC LIMIT 10; +SELECT "UserID", "SearchPhrase", COUNT(*) FROM hits GROUP BY "UserID", "SearchPhrase" ORDER BY COUNT(*) DESC LIMIT 10; +SELECT "UserID", "SearchPhrase", COUNT(*) FROM hits GROUP BY "UserID", "SearchPhrase" LIMIT 10; +SELECT "UserID", extract(minute FROM to_timestamp("EventTime") AT TIME ZONE 'UTC') AS m, "SearchPhrase", COUNT(*) FROM hits GROUP BY "UserID", m, "SearchPhrase" ORDER BY COUNT(*) DESC LIMIT 10; +SELECT "UserID" FROM hits WHERE "UserID" = 435090932899640449; +SELECT COUNT(*) FROM hits WHERE "URL" LIKE '%google%'; +SELECT "SearchPhrase", MIN("URL"), COUNT(*) AS c FROM hits WHERE "URL" LIKE '%google%' AND "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT "SearchPhrase", MIN("URL"), MIN("Title"), COUNT(*) AS c, COUNT(DISTINCT "UserID") FROM hits WHERE "Title" LIKE '%Google%' AND "URL" NOT LIKE '%.google.%' AND "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT * FROM hits WHERE "URL" LIKE '%google%' ORDER BY "EventTime" LIMIT 10; +SELECT "SearchPhrase" FROM hits WHERE "SearchPhrase" <> '' ORDER BY "EventTime" LIMIT 10; +SELECT "SearchPhrase" FROM hits WHERE "SearchPhrase" <> '' ORDER BY "SearchPhrase" LIMIT 10; +SELECT "SearchPhrase" FROM hits WHERE "SearchPhrase" <> '' ORDER BY "EventTime", "SearchPhrase" LIMIT 10; +SELECT "CounterID", AVG(length("URL")) AS l, COUNT(*) AS c FROM hits WHERE "URL" <> '' GROUP BY "CounterID" HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE("Referer", '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length("Referer")) AS l, COUNT(*) AS c, MIN("Referer") FROM hits WHERE "Referer" <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM("ResolutionWidth"), SUM("ResolutionWidth" + 1), SUM("ResolutionWidth" + 2), SUM("ResolutionWidth" + 3), SUM("ResolutionWidth" + 4), SUM("ResolutionWidth" + 5), SUM("ResolutionWidth" + 6), SUM("ResolutionWidth" + 7), SUM("ResolutionWidth" + 8), SUM("ResolutionWidth" + 9), SUM("ResolutionWidth" + 10), SUM("ResolutionWidth" + 11), SUM("ResolutionWidth" + 12), SUM("ResolutionWidth" + 13), SUM("ResolutionWidth" + 14), SUM("ResolutionWidth" + 15), SUM("ResolutionWidth" + 16), SUM("ResolutionWidth" + 17), SUM("ResolutionWidth" + 18), SUM("ResolutionWidth" + 19), SUM("ResolutionWidth" + 20), SUM("ResolutionWidth" + 21), SUM("ResolutionWidth" + 22), SUM("ResolutionWidth" + 23), SUM("ResolutionWidth" + 24), SUM("ResolutionWidth" + 25), SUM("ResolutionWidth" + 26), SUM("ResolutionWidth" + 27), SUM("ResolutionWidth" + 28), SUM("ResolutionWidth" + 29), SUM("ResolutionWidth" + 30), SUM("ResolutionWidth" + 31), SUM("ResolutionWidth" + 32), SUM("ResolutionWidth" + 33), SUM("ResolutionWidth" + 34), SUM("ResolutionWidth" + 35), SUM("ResolutionWidth" + 36), SUM("ResolutionWidth" + 37), SUM("ResolutionWidth" + 38), SUM("ResolutionWidth" + 39), SUM("ResolutionWidth" + 40), SUM("ResolutionWidth" + 41), SUM("ResolutionWidth" + 42), SUM("ResolutionWidth" + 43), SUM("ResolutionWidth" + 44), SUM("ResolutionWidth" + 45), SUM("ResolutionWidth" + 46), SUM("ResolutionWidth" + 47), SUM("ResolutionWidth" + 48), SUM("ResolutionWidth" + 49), SUM("ResolutionWidth" + 50), SUM("ResolutionWidth" + 51), SUM("ResolutionWidth" + 52), SUM("ResolutionWidth" + 53), SUM("ResolutionWidth" + 54), SUM("ResolutionWidth" + 55), SUM("ResolutionWidth" + 56), SUM("ResolutionWidth" + 57), SUM("ResolutionWidth" + 58), SUM("ResolutionWidth" + 59), SUM("ResolutionWidth" + 60), SUM("ResolutionWidth" + 61), SUM("ResolutionWidth" + 62), SUM("ResolutionWidth" + 63), SUM("ResolutionWidth" + 64), SUM("ResolutionWidth" + 65), SUM("ResolutionWidth" + 66), SUM("ResolutionWidth" + 67), SUM("ResolutionWidth" + 68), SUM("ResolutionWidth" + 69), SUM("ResolutionWidth" + 70), SUM("ResolutionWidth" + 71), SUM("ResolutionWidth" + 72), SUM("ResolutionWidth" + 73), SUM("ResolutionWidth" + 74), SUM("ResolutionWidth" + 75), SUM("ResolutionWidth" + 76), SUM("ResolutionWidth" + 77), SUM("ResolutionWidth" + 78), SUM("ResolutionWidth" + 79), SUM("ResolutionWidth" + 80), SUM("ResolutionWidth" + 81), SUM("ResolutionWidth" + 82), SUM("ResolutionWidth" + 83), SUM("ResolutionWidth" + 84), SUM("ResolutionWidth" + 85), SUM("ResolutionWidth" + 86), SUM("ResolutionWidth" + 87), SUM("ResolutionWidth" + 88), SUM("ResolutionWidth" + 89) FROM hits; +SELECT "SearchEngineID", "ClientIP", COUNT(*) AS c, SUM("IsRefresh"), AVG("ResolutionWidth") FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchEngineID", "ClientIP" ORDER BY c DESC LIMIT 10; +SELECT "WatchID", "ClientIP", COUNT(*) AS c, SUM("IsRefresh"), AVG("ResolutionWidth") FROM hits WHERE "SearchPhrase" <> '' GROUP BY "WatchID", "ClientIP" ORDER BY c DESC LIMIT 10; +SELECT "WatchID", "ClientIP", COUNT(*) AS c, SUM("IsRefresh"), AVG("ResolutionWidth") FROM hits GROUP BY "WatchID", "ClientIP" ORDER BY c DESC LIMIT 10; +SELECT "URL", COUNT(*) AS c FROM hits GROUP BY "URL" ORDER BY c DESC LIMIT 10; +SELECT 1, "URL", COUNT(*) AS c FROM hits GROUP BY 1, "URL" ORDER BY c DESC LIMIT 10; +SELECT "ClientIP", "ClientIP" - 1, "ClientIP" - 2, "ClientIP" - 3, COUNT(*) AS c FROM hits GROUP BY "ClientIP", "ClientIP" - 1, "ClientIP" - 2, "ClientIP" - 3 ORDER BY c DESC LIMIT 10; +SELECT "URL", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "DontCountHits" = 0 AND "IsRefresh" = 0 AND "URL" <> '' GROUP BY "URL" ORDER BY PageViews DESC LIMIT 10; +SELECT "Title", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "DontCountHits" = 0 AND "IsRefresh" = 0 AND "Title" <> '' GROUP BY "Title" ORDER BY PageViews DESC LIMIT 10; +SELECT "URL", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 AND "IsLink" <> 0 AND "IsDownload" = 0 GROUP BY "URL" ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT "TraficSourceID", "SearchEngineID", "AdvEngineID", CASE WHEN ("SearchEngineID" = 0 AND "AdvEngineID" = 0) THEN "Referer" ELSE '' END AS Src, "URL" AS Dst, COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 GROUP BY "TraficSourceID", "SearchEngineID", "AdvEngineID", Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT "URLHash", DATE '1970-01-01' + "EventDate" AS d, COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 AND "TraficSourceID" IN (-1, 6) AND "RefererHash" = 3594120000172545465 GROUP BY "URLHash", d ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT "WindowClientWidth", "WindowClientHeight", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 AND "DontCountHits" = 0 AND "URLHash" = 2868770270353813622 GROUP BY "WindowClientWidth", "WindowClientHeight" ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', to_timestamp("EventTime") AT TIME ZONE 'UTC') AS M, COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16630 AND "EventDate" <= 16631 AND "IsRefresh" = 0 AND "DontCountHits" = 0 GROUP BY DATE_TRUNC('minute', to_timestamp("EventTime") AT TIME ZONE 'UTC') ORDER BY DATE_TRUNC('minute', to_timestamp("EventTime") AT TIME ZONE 'UTC') LIMIT 10 OFFSET 1000; diff --git a/firebolt-parquet-partitioned/results/result.csv b/firebolt-parquet-partitioned/results/result.csv new file mode 100644 index 000000000..f1f07ee95 --- /dev/null +++ b/firebolt-parquet-partitioned/results/result.csv @@ -0,0 +1,43 @@ +[0.089283,0.085227,0.056908], +[6.462622,0.119138,0.038947], +[10.367681,0.121577,0.068723], +[8.336257,0.145469,0.197462], +[8.349521,0.132076,0.091391], +[9.178133,0.171213,0.134665], +[6.187076,0.110292,0.058369], +[6.454823,0.066141,0.092703], +[9.057229,0.15579,0.110341], +[18.117743,0.202172,0.149111], +[13.532241,0.171737,0.099214], +[13.770584,0.228361,0.088879], +[9.068185,0.151889,0.149824], +[16.675524,0.237302,0.198608], +[9.064278,0.194775,0.134064], +[8.29152,0.164027,0.163135], +[16.60348,0.256961,0.208454], +[16.315262,0.300289,0.202808], +[21.854225,0.378082,0.330043], +[6.288758,0.160972,0.099336], +[26.567622,0.500553,0.417805], +[34.127698,0.542914,0.497363], +[58.899529,0.911295,0.795608], +[112.493884,2.898339,2.4515], +[17.554711,0.360378,0.217671], +[8.794605,0.1668,0.104769], +[18.080815,0.205598,0.131358], +[29.565947,0.644293,0.534157], +[23.126676,0.588055,0.621218], +[6.082632,0.280672,0.17878], +[19.550942,0.228663,0.151307], +[30.333442,0.294862,0.175669], +[25.039375,0.411381,0.32421], +[26.381503,0.603127,0.547455], +[26.382774,0.714164,0.581087], +[7.358347,0.37295,0.116444], +[0.094299,0.090255,0.072739], +[0.062318,0.050861,0.082478], +[0.484961,0.033505,0.065616], +[0.070775,0.051666,0.059196], +[0.578127,0.065646,0.09461], +[0.750614,0.065703,0.089976], +[0.110351,0.053694,0.05331], diff --git a/firebolt-parquet/queries.sql b/firebolt-parquet/queries.sql index 136ea6b32..04953f039 100644 --- a/firebolt-parquet/queries.sql +++ b/firebolt-parquet/queries.sql @@ -1,43 +1,43 @@ SELECT COUNT(*) FROM hits; -SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0; -SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits; -SELECT AVG(UserID) FROM hits; -SELECT COUNT(DISTINCT UserID) FROM hits; -SELECT COUNT(DISTINCT SearchPhrase) FROM hits; -SELECT MIN(DATE '1970-01-01' + EventDate), MAX(DATE '1970-01-01' + EventDate) FROM hits; -SELECT AdvEngineID, COUNT(*) FROM hits WHERE AdvEngineID <> 0 GROUP BY AdvEngineID ORDER BY COUNT(*) DESC; -SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10; -SELECT RegionID, SUM(AdvEngineID), COUNT(*) AS c, AVG(ResolutionWidth), COUNT(DISTINCT UserID) FROM hits GROUP BY RegionID ORDER BY c DESC LIMIT 10; -SELECT MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhoneModel ORDER BY u DESC LIMIT 10; -SELECT MobilePhone, MobilePhoneModel, COUNT(DISTINCT UserID) AS u FROM hits WHERE MobilePhoneModel <> '' GROUP BY MobilePhone, MobilePhoneModel ORDER BY u DESC LIMIT 10; -SELECT SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT SearchPhrase, COUNT(DISTINCT UserID) AS u FROM hits WHERE SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY u DESC LIMIT 10; -SELECT SearchEngineID, SearchPhrase, COUNT(*) AS c FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT UserID, COUNT(*) FROM hits GROUP BY UserID ORDER BY COUNT(*) DESC LIMIT 10; -SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; -SELECT UserID, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, SearchPhrase LIMIT 10; -SELECT UserID, extract(minute FROM to_timestamp(EventTime) AT TIME ZONE 'UTC') AS m, SearchPhrase, COUNT(*) FROM hits GROUP BY UserID, m, SearchPhrase ORDER BY COUNT(*) DESC LIMIT 10; -SELECT UserID FROM hits WHERE UserID = 435090932899640449; -SELECT COUNT(*) FROM hits WHERE URL LIKE '%google%'; -SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT SearchPhrase, MIN(URL), MIN(Title), COUNT(*) AS c, COUNT(DISTINCT UserID) FROM hits WHERE Title LIKE '%Google%' AND URL NOT LIKE '%.google.%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10; -SELECT * FROM hits WHERE URL LIKE '%google%' ORDER BY EventTime LIMIT 10; -SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime LIMIT 10; -SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY SearchPhrase LIMIT 10; -SELECT SearchPhrase FROM hits WHERE SearchPhrase <> '' ORDER BY EventTime, SearchPhrase LIMIT 10; -SELECT CounterID, AVG(length(URL)) AS l, COUNT(*) AS c FROM hits WHERE URL <> '' GROUP BY CounterID HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; -SELECT REGEXP_REPLACE(Referer, '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length(Referer)) AS l, COUNT(*) AS c, MIN(Referer) FROM hits WHERE Referer <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; -SELECT SUM(ResolutionWidth), SUM(ResolutionWidth + 1), SUM(ResolutionWidth + 2), SUM(ResolutionWidth + 3), SUM(ResolutionWidth + 4), SUM(ResolutionWidth + 5), SUM(ResolutionWidth + 6), SUM(ResolutionWidth + 7), SUM(ResolutionWidth + 8), SUM(ResolutionWidth + 9), SUM(ResolutionWidth + 10), SUM(ResolutionWidth + 11), SUM(ResolutionWidth + 12), SUM(ResolutionWidth + 13), SUM(ResolutionWidth + 14), SUM(ResolutionWidth + 15), SUM(ResolutionWidth + 16), SUM(ResolutionWidth + 17), SUM(ResolutionWidth + 18), SUM(ResolutionWidth + 19), SUM(ResolutionWidth + 20), SUM(ResolutionWidth + 21), SUM(ResolutionWidth + 22), SUM(ResolutionWidth + 23), SUM(ResolutionWidth + 24), SUM(ResolutionWidth + 25), SUM(ResolutionWidth + 26), SUM(ResolutionWidth + 27), SUM(ResolutionWidth + 28), SUM(ResolutionWidth + 29), SUM(ResolutionWidth + 30), SUM(ResolutionWidth + 31), SUM(ResolutionWidth + 32), SUM(ResolutionWidth + 33), SUM(ResolutionWidth + 34), SUM(ResolutionWidth + 35), SUM(ResolutionWidth + 36), SUM(ResolutionWidth + 37), SUM(ResolutionWidth + 38), SUM(ResolutionWidth + 39), SUM(ResolutionWidth + 40), SUM(ResolutionWidth + 41), SUM(ResolutionWidth + 42), SUM(ResolutionWidth + 43), SUM(ResolutionWidth + 44), SUM(ResolutionWidth + 45), SUM(ResolutionWidth + 46), SUM(ResolutionWidth + 47), SUM(ResolutionWidth + 48), SUM(ResolutionWidth + 49), SUM(ResolutionWidth + 50), SUM(ResolutionWidth + 51), SUM(ResolutionWidth + 52), SUM(ResolutionWidth + 53), SUM(ResolutionWidth + 54), SUM(ResolutionWidth + 55), SUM(ResolutionWidth + 56), SUM(ResolutionWidth + 57), SUM(ResolutionWidth + 58), SUM(ResolutionWidth + 59), SUM(ResolutionWidth + 60), SUM(ResolutionWidth + 61), SUM(ResolutionWidth + 62), SUM(ResolutionWidth + 63), SUM(ResolutionWidth + 64), SUM(ResolutionWidth + 65), SUM(ResolutionWidth + 66), SUM(ResolutionWidth + 67), SUM(ResolutionWidth + 68), SUM(ResolutionWidth + 69), SUM(ResolutionWidth + 70), SUM(ResolutionWidth + 71), SUM(ResolutionWidth + 72), SUM(ResolutionWidth + 73), SUM(ResolutionWidth + 74), SUM(ResolutionWidth + 75), SUM(ResolutionWidth + 76), SUM(ResolutionWidth + 77), SUM(ResolutionWidth + 78), SUM(ResolutionWidth + 79), SUM(ResolutionWidth + 80), SUM(ResolutionWidth + 81), SUM(ResolutionWidth + 82), SUM(ResolutionWidth + 83), SUM(ResolutionWidth + 84), SUM(ResolutionWidth + 85), SUM(ResolutionWidth + 86), SUM(ResolutionWidth + 87), SUM(ResolutionWidth + 88), SUM(ResolutionWidth + 89) FROM hits; -SELECT SearchEngineID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY SearchEngineID, ClientIP ORDER BY c DESC LIMIT 10; -SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits WHERE SearchPhrase <> '' GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; -SELECT WatchID, ClientIP, COUNT(*) AS c, SUM(IsRefresh), AVG(ResolutionWidth) FROM hits GROUP BY WatchID, ClientIP ORDER BY c DESC LIMIT 10; -SELECT URL, COUNT(*) AS c FROM hits GROUP BY URL ORDER BY c DESC LIMIT 10; -SELECT 1, URL, COUNT(*) AS c FROM hits GROUP BY 1, URL ORDER BY c DESC LIMIT 10; -SELECT ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3, COUNT(*) AS c FROM hits GROUP BY ClientIP, ClientIP - 1, ClientIP - 2, ClientIP - 3 ORDER BY c DESC LIMIT 10; -SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND URL <> '' GROUP BY URL ORDER BY PageViews DESC LIMIT 10; -SELECT Title, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND DontCountHits = 0 AND IsRefresh = 0 AND Title <> '' GROUP BY Title ORDER BY PageViews DESC LIMIT 10; -SELECT URL, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND IsLink <> 0 AND IsDownload = 0 GROUP BY URL ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; -SELECT TraficSourceID, SearchEngineID, AdvEngineID, CASE WHEN (SearchEngineID = 0 AND AdvEngineID = 0) THEN Referer ELSE '' END AS Src, URL AS Dst, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 GROUP BY TraficSourceID, SearchEngineID, AdvEngineID, Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; -SELECT URLHash, DATE '1970-01-01' + EventDate AS d, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND TraficSourceID IN (-1, 6) AND RefererHash = 3594120000172545465 GROUP BY URLHash, d ORDER BY PageViews DESC LIMIT 10 OFFSET 100; -SELECT WindowClientWidth, WindowClientHeight, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16617 AND EventDate <= 16647 AND IsRefresh = 0 AND DontCountHits = 0 AND URLHash = 2868770270353813622 GROUP BY WindowClientWidth, WindowClientHeight ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; -SELECT DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') AS M, COUNT(*) AS PageViews FROM hits WHERE CounterID = 62 AND EventDate >= 16630 AND EventDate <= 16631 AND IsRefresh = 0 AND DontCountHits = 0 GROUP BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') ORDER BY DATE_TRUNC('minute', to_timestamp(EventTime) AT TIME ZONE 'UTC') LIMIT 10 OFFSET 1000; +SELECT COUNT(*) FROM hits WHERE "AdvEngineID" <> 0; +SELECT SUM("AdvEngineID"), COUNT(*), AVG("ResolutionWidth") FROM hits; +SELECT AVG("UserID") FROM hits; +SELECT COUNT(DISTINCT "UserID") FROM hits; +SELECT COUNT(DISTINCT "SearchPhrase") FROM hits; +SELECT MIN(DATE '1970-01-01' + "EventDate"), MAX(DATE '1970-01-01' + "EventDate") FROM hits; +SELECT "AdvEngineID", COUNT(*) FROM hits WHERE "AdvEngineID" <> 0 GROUP BY "AdvEngineID" ORDER BY COUNT(*) DESC; +SELECT "RegionID", COUNT(DISTINCT "UserID") AS u FROM hits GROUP BY "RegionID" ORDER BY u DESC LIMIT 10; +SELECT "RegionID", SUM("AdvEngineID"), COUNT(*) AS c, AVG("ResolutionWidth"), COUNT(DISTINCT "UserID") FROM hits GROUP BY "RegionID" ORDER BY c DESC LIMIT 10; +SELECT "MobilePhoneModel", COUNT(DISTINCT "UserID") AS u FROM hits WHERE "MobilePhoneModel" <> '' GROUP BY "MobilePhoneModel" ORDER BY u DESC LIMIT 10; +SELECT "MobilePhone", "MobilePhoneModel", COUNT(DISTINCT "UserID") AS u FROM hits WHERE "MobilePhoneModel" <> '' GROUP BY "MobilePhone", "MobilePhoneModel" ORDER BY u DESC LIMIT 10; +SELECT "SearchPhrase", COUNT(*) AS c FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT "SearchPhrase", COUNT(DISTINCT "UserID") AS u FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY u DESC LIMIT 10; +SELECT "SearchEngineID", "SearchPhrase", COUNT(*) AS c FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchEngineID", "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT "UserID", COUNT(*) FROM hits GROUP BY "UserID" ORDER BY COUNT(*) DESC LIMIT 10; +SELECT "UserID", "SearchPhrase", COUNT(*) FROM hits GROUP BY "UserID", "SearchPhrase" ORDER BY COUNT(*) DESC LIMIT 10; +SELECT "UserID", "SearchPhrase", COUNT(*) FROM hits GROUP BY "UserID", "SearchPhrase" LIMIT 10; +SELECT "UserID", extract(minute FROM to_timestamp("EventTime") AT TIME ZONE 'UTC') AS m, "SearchPhrase", COUNT(*) FROM hits GROUP BY "UserID", m, "SearchPhrase" ORDER BY COUNT(*) DESC LIMIT 10; +SELECT "UserID" FROM hits WHERE "UserID" = 435090932899640449; +SELECT COUNT(*) FROM hits WHERE "URL" LIKE '%google%'; +SELECT "SearchPhrase", MIN("URL"), COUNT(*) AS c FROM hits WHERE "URL" LIKE '%google%' AND "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT "SearchPhrase", MIN("URL"), MIN("Title"), COUNT(*) AS c, COUNT(DISTINCT "UserID") FROM hits WHERE "Title" LIKE '%Google%' AND "URL" NOT LIKE '%.google.%' AND "SearchPhrase" <> '' GROUP BY "SearchPhrase" ORDER BY c DESC LIMIT 10; +SELECT * FROM hits WHERE "URL" LIKE '%google%' ORDER BY "EventTime" LIMIT 10; +SELECT "SearchPhrase" FROM hits WHERE "SearchPhrase" <> '' ORDER BY "EventTime" LIMIT 10; +SELECT "SearchPhrase" FROM hits WHERE "SearchPhrase" <> '' ORDER BY "SearchPhrase" LIMIT 10; +SELECT "SearchPhrase" FROM hits WHERE "SearchPhrase" <> '' ORDER BY "EventTime", "SearchPhrase" LIMIT 10; +SELECT "CounterID", AVG(length("URL")) AS l, COUNT(*) AS c FROM hits WHERE "URL" <> '' GROUP BY "CounterID" HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT REGEXP_REPLACE("Referer", '^https?://(?:www\.)?([^/]+)/.*$', '\1') AS k, AVG(length("Referer")) AS l, COUNT(*) AS c, MIN("Referer") FROM hits WHERE "Referer" <> '' GROUP BY k HAVING COUNT(*) > 100000 ORDER BY l DESC LIMIT 25; +SELECT SUM("ResolutionWidth"), SUM("ResolutionWidth" + 1), SUM("ResolutionWidth" + 2), SUM("ResolutionWidth" + 3), SUM("ResolutionWidth" + 4), SUM("ResolutionWidth" + 5), SUM("ResolutionWidth" + 6), SUM("ResolutionWidth" + 7), SUM("ResolutionWidth" + 8), SUM("ResolutionWidth" + 9), SUM("ResolutionWidth" + 10), SUM("ResolutionWidth" + 11), SUM("ResolutionWidth" + 12), SUM("ResolutionWidth" + 13), SUM("ResolutionWidth" + 14), SUM("ResolutionWidth" + 15), SUM("ResolutionWidth" + 16), SUM("ResolutionWidth" + 17), SUM("ResolutionWidth" + 18), SUM("ResolutionWidth" + 19), SUM("ResolutionWidth" + 20), SUM("ResolutionWidth" + 21), SUM("ResolutionWidth" + 22), SUM("ResolutionWidth" + 23), SUM("ResolutionWidth" + 24), SUM("ResolutionWidth" + 25), SUM("ResolutionWidth" + 26), SUM("ResolutionWidth" + 27), SUM("ResolutionWidth" + 28), SUM("ResolutionWidth" + 29), SUM("ResolutionWidth" + 30), SUM("ResolutionWidth" + 31), SUM("ResolutionWidth" + 32), SUM("ResolutionWidth" + 33), SUM("ResolutionWidth" + 34), SUM("ResolutionWidth" + 35), SUM("ResolutionWidth" + 36), SUM("ResolutionWidth" + 37), SUM("ResolutionWidth" + 38), SUM("ResolutionWidth" + 39), SUM("ResolutionWidth" + 40), SUM("ResolutionWidth" + 41), SUM("ResolutionWidth" + 42), SUM("ResolutionWidth" + 43), SUM("ResolutionWidth" + 44), SUM("ResolutionWidth" + 45), SUM("ResolutionWidth" + 46), SUM("ResolutionWidth" + 47), SUM("ResolutionWidth" + 48), SUM("ResolutionWidth" + 49), SUM("ResolutionWidth" + 50), SUM("ResolutionWidth" + 51), SUM("ResolutionWidth" + 52), SUM("ResolutionWidth" + 53), SUM("ResolutionWidth" + 54), SUM("ResolutionWidth" + 55), SUM("ResolutionWidth" + 56), SUM("ResolutionWidth" + 57), SUM("ResolutionWidth" + 58), SUM("ResolutionWidth" + 59), SUM("ResolutionWidth" + 60), SUM("ResolutionWidth" + 61), SUM("ResolutionWidth" + 62), SUM("ResolutionWidth" + 63), SUM("ResolutionWidth" + 64), SUM("ResolutionWidth" + 65), SUM("ResolutionWidth" + 66), SUM("ResolutionWidth" + 67), SUM("ResolutionWidth" + 68), SUM("ResolutionWidth" + 69), SUM("ResolutionWidth" + 70), SUM("ResolutionWidth" + 71), SUM("ResolutionWidth" + 72), SUM("ResolutionWidth" + 73), SUM("ResolutionWidth" + 74), SUM("ResolutionWidth" + 75), SUM("ResolutionWidth" + 76), SUM("ResolutionWidth" + 77), SUM("ResolutionWidth" + 78), SUM("ResolutionWidth" + 79), SUM("ResolutionWidth" + 80), SUM("ResolutionWidth" + 81), SUM("ResolutionWidth" + 82), SUM("ResolutionWidth" + 83), SUM("ResolutionWidth" + 84), SUM("ResolutionWidth" + 85), SUM("ResolutionWidth" + 86), SUM("ResolutionWidth" + 87), SUM("ResolutionWidth" + 88), SUM("ResolutionWidth" + 89) FROM hits; +SELECT "SearchEngineID", "ClientIP", COUNT(*) AS c, SUM("IsRefresh"), AVG("ResolutionWidth") FROM hits WHERE "SearchPhrase" <> '' GROUP BY "SearchEngineID", "ClientIP" ORDER BY c DESC LIMIT 10; +SELECT "WatchID", "ClientIP", COUNT(*) AS c, SUM("IsRefresh"), AVG("ResolutionWidth") FROM hits WHERE "SearchPhrase" <> '' GROUP BY "WatchID", "ClientIP" ORDER BY c DESC LIMIT 10; +SELECT "WatchID", "ClientIP", COUNT(*) AS c, SUM("IsRefresh"), AVG("ResolutionWidth") FROM hits GROUP BY "WatchID", "ClientIP" ORDER BY c DESC LIMIT 10; +SELECT "URL", COUNT(*) AS c FROM hits GROUP BY "URL" ORDER BY c DESC LIMIT 10; +SELECT 1, "URL", COUNT(*) AS c FROM hits GROUP BY 1, "URL" ORDER BY c DESC LIMIT 10; +SELECT "ClientIP", "ClientIP" - 1, "ClientIP" - 2, "ClientIP" - 3, COUNT(*) AS c FROM hits GROUP BY "ClientIP", "ClientIP" - 1, "ClientIP" - 2, "ClientIP" - 3 ORDER BY c DESC LIMIT 10; +SELECT "URL", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "DontCountHits" = 0 AND "IsRefresh" = 0 AND "URL" <> '' GROUP BY "URL" ORDER BY PageViews DESC LIMIT 10; +SELECT "Title", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "DontCountHits" = 0 AND "IsRefresh" = 0 AND "Title" <> '' GROUP BY "Title" ORDER BY PageViews DESC LIMIT 10; +SELECT "URL", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 AND "IsLink" <> 0 AND "IsDownload" = 0 GROUP BY "URL" ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT "TraficSourceID", "SearchEngineID", "AdvEngineID", CASE WHEN ("SearchEngineID" = 0 AND "AdvEngineID" = 0) THEN "Referer" ELSE '' END AS Src, "URL" AS Dst, COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 GROUP BY "TraficSourceID", "SearchEngineID", "AdvEngineID", Src, Dst ORDER BY PageViews DESC LIMIT 10 OFFSET 1000; +SELECT "URLHash", DATE '1970-01-01' + "EventDate" AS d, COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 AND "TraficSourceID" IN (-1, 6) AND "RefererHash" = 3594120000172545465 GROUP BY "URLHash", d ORDER BY PageViews DESC LIMIT 10 OFFSET 100; +SELECT "WindowClientWidth", "WindowClientHeight", COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16617 AND "EventDate" <= 16647 AND "IsRefresh" = 0 AND "DontCountHits" = 0 AND "URLHash" = 2868770270353813622 GROUP BY "WindowClientWidth", "WindowClientHeight" ORDER BY PageViews DESC LIMIT 10 OFFSET 10000; +SELECT DATE_TRUNC('minute', to_timestamp("EventTime") AT TIME ZONE 'UTC') AS M, COUNT(*) AS PageViews FROM hits WHERE "CounterID" = 62 AND "EventDate" >= 16630 AND "EventDate" <= 16631 AND "IsRefresh" = 0 AND "DontCountHits" = 0 GROUP BY DATE_TRUNC('minute', to_timestamp("EventTime") AT TIME ZONE 'UTC') ORDER BY DATE_TRUNC('minute', to_timestamp("EventTime") AT TIME ZONE 'UTC') LIMIT 10 OFFSET 1000; diff --git a/firebolt-parquet/results/result.csv b/firebolt-parquet/results/result.csv new file mode 100644 index 000000000..abb3cd7d3 --- /dev/null +++ b/firebolt-parquet/results/result.csv @@ -0,0 +1,43 @@ +[0.059843,0.162664,0.140374], +[3.148727,0.563231,0.470388], +[6.732605,0.404802,1.004818], +[5.034925,0.656611,0.669673], +[5.272328,2.239552,2.252362], +[6.473511,3.931263,3.808644], +[3.128724,0.633189,0.685733], +[3.152018,0.482778,0.433736], +[5.897501,2.672888,2.70512], +[13.594944,4.063634,3.897423], +[9.21254,1.547822,1.566892], +[9.347565,1.829211,1.852122], +[6.33956,2.910324,2.957453], +[12.359564,3.607029,3.481648], +[6.657161,3.544702,3.470191], +[5.356698,2.422867,2.406365], +[12.846069,6.451807,6.536292], +[12.648833,6.332159,2.21432], +[18.397965,11.181063,11.30718], +[4.3146,0.415743,0.383533], +[24.031448,6.736471,6.76135], +[30.848713,8.906115,0.856585], +[56.120186,17.049336,17.077808], +[116.003436,84.626922,84.384854], +[13.186752,2.874756,2.845174], +[6.044078,2.239127,2.264012], +[13.186912,2.884457,2.883567], +[26.926486,7.156224,7.183304], +[22.964421,15.978144,16.102947], +[3.432935,0.612371,0.611429], +[15.294111,4.259675,4.36426], +[25.686938,4.439314,0.657251], +[21.549406,10.36087,10.11945], +[25.061596,10.84247,10.697158], +[25.150158,11.029951,10.764596], +[5.061588,2.713641,2.750384], +[0.051314,0.030315,0.024209], +[0.023383,0.021939,0.01692], +[0.035486,0.02946,0.017068], +[0.021938,0.036345,0.082503], +[0.056541,0.081315,0.095248], +[0.056486,0.055195,0.139469], +[0.039902,0.063839,0.042551], From 8a51d907335eebab15957b78994680bde201d77e Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sat, 21 Feb 2026 02:44:16 +0000 Subject: [PATCH 4/6] Add results --- .../results/c6a.2xlarge.json | 58 +++++++++++++++++++ .../results/c6a.4xlarge.json | 58 +++++++++++++++++++ .../results/c6a.large.json | 58 +++++++++++++++++++ .../results/c6a.metal.json | 58 +++++++++++++++++++ .../results/c6a.xlarge.json | 58 +++++++++++++++++++ .../results/c7a.metal-48xl.json | 58 +++++++++++++++++++ .../results/c8g.4xlarge.json | 58 +++++++++++++++++++ .../results/c8g.metal-48xl.json | 58 +++++++++++++++++++ .../results/t3a.small.json | 58 +++++++++++++++++++ firebolt-parquet/results/c6a.2xlarge.json | 58 +++++++++++++++++++ firebolt-parquet/results/c6a.4xlarge.json | 58 +++++++++++++++++++ firebolt-parquet/results/c6a.large.json | 58 +++++++++++++++++++ firebolt-parquet/results/c6a.metal.json | 58 +++++++++++++++++++ firebolt-parquet/results/c6a.xlarge.json | 58 +++++++++++++++++++ firebolt-parquet/results/c7a.metal-48xl.json | 58 +++++++++++++++++++ firebolt-parquet/results/c8g.4xlarge.json | 58 +++++++++++++++++++ firebolt-parquet/results/c8g.metal-48xl.json | 58 +++++++++++++++++++ firebolt-parquet/results/t3a.small.json | 58 +++++++++++++++++++ 18 files changed, 1044 insertions(+) create mode 100644 firebolt-parquet-partitioned/results/c6a.2xlarge.json create mode 100644 firebolt-parquet-partitioned/results/c6a.4xlarge.json create mode 100644 firebolt-parquet-partitioned/results/c6a.large.json create mode 100644 firebolt-parquet-partitioned/results/c6a.metal.json create mode 100644 firebolt-parquet-partitioned/results/c6a.xlarge.json create mode 100644 firebolt-parquet-partitioned/results/c7a.metal-48xl.json create mode 100644 firebolt-parquet-partitioned/results/c8g.4xlarge.json create mode 100644 firebolt-parquet-partitioned/results/c8g.metal-48xl.json create mode 100644 firebolt-parquet-partitioned/results/t3a.small.json create mode 100644 firebolt-parquet/results/c6a.2xlarge.json create mode 100644 firebolt-parquet/results/c6a.4xlarge.json create mode 100644 firebolt-parquet/results/c6a.large.json create mode 100644 firebolt-parquet/results/c6a.metal.json create mode 100644 firebolt-parquet/results/c6a.xlarge.json create mode 100644 firebolt-parquet/results/c7a.metal-48xl.json create mode 100644 firebolt-parquet/results/c8g.4xlarge.json create mode 100644 firebolt-parquet/results/c8g.metal-48xl.json create mode 100644 firebolt-parquet/results/t3a.small.json diff --git a/firebolt-parquet-partitioned/results/c6a.2xlarge.json b/firebolt-parquet-partitioned/results/c6a.2xlarge.json new file mode 100644 index 000000000..6da5daf44 --- /dev/null +++ b/firebolt-parquet-partitioned/results/c6a.2xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.126, 0.035, 0.032], + [2.767, 0.21, 0.17], + [5, 0.385, 0.407], + [3.795, 0.322, 0.344], + [4.019, 0.823, 0.832], + [4.035, 1.284, 1.22], + [2.375, 0.248, 0.242], + [2.978, 0.204, 0.203], + [4.58, 1.058, 1.057], + [8.548, 1.571, 1.533], + [6.067, 0.708, 0.726], + [6.15, 0.843, 0.815], + [3.889, 1.148, 1.112], + [8.002, 1.83, 1.831], + [4.045, 1.331, 1.339], + [3.55, 0.88, 0.85], + [7.865, 2.318, 2.339], + [7.68, 2.062, 2.061], + [11.135, 5.985, 5.868], + [2.638, 0.239, 0.244], + [13.354, 3.622, 3.514], + [16.79, 4.136, 4.246], + [29.131, 7.152, 7.384], + [56.78, 26.975, 28.113], + [8.12, 1.139, 1.122], + [3.756, 0.876, 0.853], + [8.105, 1.162, 1.188], + [14.327, 4.552, 4.393], + [11.282, 5.92, 6.268], + [2.473, 0.281, 0.268], + [9.257, 1.604, 1.603], + [14.437, 1.898, 1.874], + [12.969, 3.877, 3.947], + [13.089, 4.926, 6.605], + [12.991, 5.209, 5.07], + [3.279, 1.16, 1.13], + [0.081, 0.007, 0.007], + [0.01, 0.007, 0.013], + [0.076, 0.007, 0.009], + [0.01, 0.009, 0.008], + [0.091, 0.01, 0.009], + [0.112, 0.008, 0.007], + [0.014, 0.006, 0.008] +] +} + diff --git a/firebolt-parquet-partitioned/results/c6a.4xlarge.json b/firebolt-parquet-partitioned/results/c6a.4xlarge.json new file mode 100644 index 000000000..c8e34cfc0 --- /dev/null +++ b/firebolt-parquet-partitioned/results/c6a.4xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.095, 0.021, 0.022], + [2.625, 0.141, 0.13], + [4.897, 0.263, 0.256], + [3.678, 0.257, 0.254], + [3.794, 0.534, 0.533], + [3.926, 0.88, 0.871], + [2.347, 0.168, 0.161], + [2.881, 0.144, 0.135], + [4.332, 0.677, 0.633], + [8.407, 0.952, 0.938], + [6.081, 0.495, 0.467], + [6.101, 0.537, 0.535], + [3.858, 0.747, 0.757], + [7.817, 1.188, 1.174], + [3.987, 0.851, 0.891], + [3.444, 0.674, 0.528], + [7.756, 1.439, 1.348], + [7.592, 1.241, 1.297], + [10.67, 3.12, 3.109], + [2.62, 0.212, 0.21], + [13.042, 3.176, 3.148], + [16.628, 3.496, 3.48], + [28.996, 6.472, 6.497], + [56.151, 16.802, 17.43], + [8.208, 0.83, 0.825], + [3.793, 0.584, 0.601], + [8.202, 0.841, 0.842], + [14.347, 3.874, 3.881], + [11.219, 4.394, 4.39], + [2.508, 0.195, 0.179], + [9.475, 1.07, 1.011], + [14.535, 1.293, 1.288], + [12.514, 2.331, 2.219], + [12.937, 4.11, 4.093], + [12.914, 4.086, 3.975], + [3.249, 0.691, 0.699], + [0.093, 0.009, 0.008], + [0.013, 0.009, 0.006], + [0.066, 0.007, 0.007], + [0.012, 0.008, 0.007], + [0.103, 0.009, 0.01], + [0.154, 0.007, 0.007], + [0.009, 0.006, 0.007] +] +} + diff --git a/firebolt-parquet-partitioned/results/c6a.large.json b/firebolt-parquet-partitioned/results/c6a.large.json new file mode 100644 index 000000000..bf22ed4f6 --- /dev/null +++ b/firebolt-parquet-partitioned/results/c6a.large.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.188, 0.119, 0.117], + [2.757, 0.636, 0.651], + [4.744, 1.288, 1.175], + [3.614, 1.03, 1.06], + [4.829, 4.127, 3.446], + [6.139, 4.659, 4.618], + [2.764, 0.933, 0.984], + [2.557, 0.868, 0.712], + [6.128, 4.83, 5.133], + [14.435, 13.821, 14.073], + [7.356, 2.526, 2.253], + [6.587, 2.972, 2.841], + [6.032, 4.142, 4.016], + [14.871, 13.488, 14.391], + [6.201, 5.777, 5.391], + [4.484, 3.943, 3.798], + [15.492, 12.855, 14.973], + [12.501, 12.097, 12.091], + [31.548, 31.264, 31.055], + [2.591, 0.696, 0.671], + [13.663, 15.33, 17.546], + [20.59, 20.592, 19.15], + [32.476, 28.058, 28.966], + [100.714, 100.629, 100.349], + [8.182, 5.176, 4.401], + [3.799, 3.476, 3.521], + [8.22, 4.051, 4.216], + [22.756, 22.879, 18.617], + [31.159, 26.677, 19.493], + [2.478, 0.788, 0.802], + [9.91, 7.034, 6.25], + [18.295, 18.419, 18.142], + [50.51, 49.577, 48.871], + [46.359, 5.844, 8.007], + [46.659, 5.828, 45.294], + [4.419, 3.538, 3.516], + [0.152, 0.01, 0.01], + [0.014, 0.01, 0.009], + [0.144, 0.011, 0.01], + [0.014, 0.009, 0.009], + [0.148, 0.013, 0.012], + [0.14, 0.011, 0.012], + [0.018, 0.01, 0.01] +] +} + diff --git a/firebolt-parquet-partitioned/results/c6a.metal.json b/firebolt-parquet-partitioned/results/c6a.metal.json new file mode 100644 index 000000000..534ed4dfa --- /dev/null +++ b/firebolt-parquet-partitioned/results/c6a.metal.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.134, 0.03, 0.028], + [2.578, 0.056, 0.051], + [4.914, 0.081, 0.077], + [3.987, 0.078, 0.071], + [4.057, 0.141, 0.148], + [4.353, 0.218, 0.207], + [2.787, 0.088, 0.065], + [2.974, 0.058, 0.059], + [4.33, 0.16, 0.156], + [8.543, 0.294, 0.274], + [6.116, 0.138, 0.125], + [6.481, 0.134, 0.125], + [4.389, 0.253, 0.279], + [7.765, 0.3, 0.303], + [4.251, 0.23, 0.221], + [3.853, 0.154, 0.134], + [7.949, 0.372, 0.321], + [7.676, 0.312, 0.326], + [10.565, 0.66, 0.564], + [2.535, 0.087, 0.065], + [13.31, 0.682, 0.659], + [16.412, 0.767, 0.685], + [28.916, 1.221, 1.281], + [56.658, 3.149, 3.061], + [7.926, 0.214, 0.194], + [4.231, 0.151, 0.145], + [8.592, 0.189, 0.176], + [14.685, 0.809, 0.882], + [11.03, 0.83, 0.838], + [2.407, 0.108, 0.115], + [9.52, 0.235, 0.224], + [14.495, 0.335, 0.286], + [11.863, 0.628, 0.507], + [12.803, 0.879, 0.872], + [12.798, 1.022, 0.894], + [2.967, 0.215, 0.159], + [0.182, 0.026, 0.025], + [0.025, 0.02, 0.023], + [0.335, 0.033, 0.022], + [0.035, 0.032, 0.034], + [0.322, 0.023, 0.023], + [0.423, 0.021, 0.021], + [0.028, 0.019, 0.023] +] +} + diff --git a/firebolt-parquet-partitioned/results/c6a.xlarge.json b/firebolt-parquet-partitioned/results/c6a.xlarge.json new file mode 100644 index 000000000..ad9223a3c --- /dev/null +++ b/firebolt-parquet-partitioned/results/c6a.xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.165, 0.054, 0.053], + [2.619, 0.37, 0.304], + [4.71, 0.717, 0.742], + [3.403, 0.597, 0.569], + [3.764, 1.545, 1.563], + [4.252, 2.408, 2.445], + [2.382, 0.481, 0.465], + [2.517, 0.381, 0.369], + [4.401, 2.003, 2.013], + [8.885, 2.942, 2.935], + [6.229, 1.299, 1.328], + [6.252, 1.53, 1.503], + [4.245, 2.205, 2.217], + [8.622, 3.496, 3.362], + [4.362, 2.55, 2.578], + [3.702, 1.708, 1.621], + [8.463, 4.609, 4.572], + [7.836, 3.942, 3.98], + [13.449, 12.028, 11.959], + [2.663, 0.455, 0.464], + [13.123, 6.636, 6.372], + [17.28, 7.701, 7.194], + [30.057, 18.968, 16.931], + [59.79, 52.966, 53.381], + [8.203, 2.144, 2.121], + [3.778, 1.587, 1.604], + [8.15, 2.166, 2.158], + [14.202, 8.171, 8.038], + [13.213, 12.539, 12.152], + [2.497, 0.486, 0.469], + [9.126, 3.031, 3.032], + [14.655, 3.516, 3.551], + [21.712, 18.447, 15.884], + [20.387, 17.624, 10.419], + [19.849, 18.212, 18.435], + [4.097, 2.124, 2.034], + [0.184, 0.009, 0.011], + [0.011, 0.009, 0.01], + [0.102, 0.008, 0.008], + [0.015, 0.008, 0.009], + [0.116, 0.01, 0.01], + [0.077, 0.009, 0.009], + [0.016, 0.008, 0.008] +] +} + diff --git a/firebolt-parquet-partitioned/results/c7a.metal-48xl.json b/firebolt-parquet-partitioned/results/c7a.metal-48xl.json new file mode 100644 index 000000000..115cfe79c --- /dev/null +++ b/firebolt-parquet-partitioned/results/c7a.metal-48xl.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.171, 0.08, 0.077], + [2.539, 0.187, 0.095], + [4.882, 0.219, 0.153], + [3.864, 0.18, 0.17], + [3.9, 0.413, 0.332], + [4.139, 0.294, 0.169], + [2.756, 0.222, 0.202], + [2.88, 0.155, 0.229], + [4.22, 0.425, 0.259], + [8.422, 0.346, 0.256], + [6.089, 0.184, 0.228], + [6.341, 0.212, 0.148], + [4.314, 0.186, 0.189], + [7.848, 0.292, 0.274], + [4.312, 0.289, 0.229], + [3.768, 0.183, 0.148], + [7.985, 0.353, 0.295], + [7.731, 0.351, 0.299], + [10.601, 0.5, 0.45], + [2.671, 0.157, 0.182], + [13.307, 0.596, 0.42], + [16.526, 0.568, 0.452], + [29.059, 0.933, 0.71], + [56.753, 2.974, 2.781], + [8.014, 0.28, 0.244], + [4.142, 0.167, 0.159], + [8.53, 0.234, 0.174], + [14.603, 0.59, 0.484], + [11.207, 0.572, 0.458], + [2.465, 0.284, 0.179], + [9.294, 0.297, 0.262], + [14.559, 0.271, 0.198], + [12.041, 0.472, 0.432], + [13.087, 0.762, 0.583], + [12.81, 0.66, 0.648], + [2.945, 0.767, 0.209], + [0.09, 0.069, 0.187], + [0.087, 0.077, 0.072], + [0.074, 0.075, 0.101], + [0.175, 0.098, 0.085], + [0.123, 0.161, 0.068], + [0.14, 0.125, 0.076], + [0.108, 0.096, 0.154] +] +} + diff --git a/firebolt-parquet-partitioned/results/c8g.4xlarge.json b/firebolt-parquet-partitioned/results/c8g.4xlarge.json new file mode 100644 index 000000000..786b046a3 --- /dev/null +++ b/firebolt-parquet-partitioned/results/c8g.4xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.084, 0.014, 0.012], + [2.79, 0.06, 0.057], + [5.236, 0.107, 0.105], + [4.171, 0.084, 0.079], + [4.253, 0.232, 0.223], + [4.621, 0.353, 0.344], + [2.84, 0.071, 0.07], + [3.214, 0.062, 0.058], + [4.599, 0.293, 0.28], + [8.852, 0.426, 0.41], + [6.544, 0.184, 0.169], + [6.799, 0.22, 0.206], + [4.54, 0.314, 0.292], + [8.247, 0.443, 0.45], + [4.315, 0.35, 0.354], + [4.053, 0.273, 0.264], + [8.259, 0.612, 0.608], + [7.737, 0.546, 0.521], + [10.682, 1.026, 0.998], + [2.637, 0.067, 0.056], + [13.404, 0.772, 0.888], + [16.547, 0.943, 0.912], + [28.963, 1.855, 1.849], + [56.16, 8.303, 7.82], + [8.213, 0.32, 0.282], + [4.414, 0.243, 0.232], + [8.908, 0.289, 0.291], + [14.837, 1.012, 1.022], + [11.076, 1.669, 1.752], + [2.54, 0.095, 0.09], + [9.861, 0.457, 0.426], + [14.93, 0.498, 0.483], + [12.506, 1.034, 1.014], + [12.784, 1.281, 1.242], + [12.762, 1.333, 1.234], + [3.146, 0.304, 0.311], + [0.103, 0.01, 0.007], + [0.009, 0.01, 0.007], + [0.457, 0.007, 0.007], + [0.01, 0.01, 0.008], + [0.433, 0.008, 0.008], + [0.482, 0.007, 0.011], + [0.012, 0.008, 0.008] +] +} + diff --git a/firebolt-parquet-partitioned/results/c8g.metal-48xl.json b/firebolt-parquet-partitioned/results/c8g.metal-48xl.json new file mode 100644 index 000000000..8c12654f7 --- /dev/null +++ b/firebolt-parquet-partitioned/results/c8g.metal-48xl.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.145, 0.88, 0.191], + [2.246, 0.442, 0.974], + [4.382, 0.574, 0.693], + [3.535, 0.526, 0.44], + [3.778, 0.76, 0.449], + [4.063, 0.478, 0.495], + [2.645, 0.388, 0.256], + [2.849, 0.42, 0.278], + [4.184, 0.782, 0.612], + [8.174, 0.457, 0.6], + [6.044, 0.334, 0.318], + [6.326, 0.282, 0.261], + [4.329, 0.437, 0.239], + [7.792, 0.317, 0.353], + [4.371, 0.475, 0.298], + [3.704, 0.628, 0.463], + [7.782, 0.489, 0.576], + [7.575, 0.541, 0.336], + [10.386, 0.351, 0.302], + [2.998, 0.232, 0.292], + [13.151, 0.485, 0.335], + [16.81, 0.508, 0.494], + [29.178, 0.915, 1.169], + [56.705, 3.092, 3.019], + [7.964, 0.265, 0.309], + [4.239, 0.537, 0.322], + [8.379, 0.355, 0.216], + [14.615, 0.45, 0.504], + [11.325, 0.544, 0.426], + [2.675, 0.473, 0.452], + [9.173, 0.4, 0.601], + [14.348, 0.511, 0.414], + [11.808, 0.345, 0.474], + [13.086, 0.582, 0.53], + [12.995, 0.654, 0.47], + [2.976, 1.022, 0.588], + [0.143, 0.524, 0.235], + [0.285, 0.206, 0.261], + [0.26, 0.489, 0.191], + [0.305, 0.278, 0.492], + [0.195, 0.355, 0.29], + [0.098, 0.328, 0.164], + [0.62, 0.68, 0.144] +] +} + diff --git a/firebolt-parquet-partitioned/results/t3a.small.json b/firebolt-parquet-partitioned/results/t3a.small.json new file mode 100644 index 000000000..847dc7ddf --- /dev/null +++ b/firebolt-parquet-partitioned/results/t3a.small.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet, partitioned)", + "date": "2026-02-21", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14737666736, + "result": [ + [0.385, 0.273, 0.166], + [0.157, 0.048, 0.029], + [0.072, 0.043, 0.059], + [0.047, 0.045, 0.04], + [0.058, 0.059, 0.037], + [0.113, 0.091, 0.07], + [0.097, 0.07, 0.034], + [0.136, 0.045, 0.028], + [0.065, 0.048, 0.028], + [0.08, 0.053, 0.034], + [0.108, 0.056, 0.05], + [0.163, 0.037, 0.019], + [0.099, 0.071, 0.121], + [0.099, 0.038, 0.014], + [0.057, 0.054, 0.023], + [0.086, 0.04, 0.027], + [0.072, 0.047, 0.025], + [0.097, 0.039, 0.013], + [0.112, 0.053, 0.035], + [0.09, 0.043, 0.015], + [0.08, 0.05, 0.024], + [0.081, 0.047, 0.04], + [0.084, 0.051, 0.028], + [0.065, 0.049, 0.02], + [0.061, 0.049, 0.013], + [0.14, 0.075, 0.052], + [0.176, 0.165, 0.043], + [0.058, 0.043, 0.022], + [0.292, 0.216, 0.026], + [0.117, 0.088, 0.06], + [0.248, 0.138, 0.03], + [0.269, 0.052, 0.045], + [0.289, 0.399, 0.065], + [0.27, 0.149, 0.025], + [0.227, 0.365, 0.086], + [0.128, 0.386, 0.032], + [0.492, 0.017, 0.019], + [0.021, 0.018, 0.017], + [0.254, 0.018, 0.018], + [0.023, 0.017, 0.017], + [0.28, 0.022, 0.021], + [0.405, 0.016, 0.016], + [0.027, 0.018, 0.027] +] +} + diff --git a/firebolt-parquet/results/c6a.2xlarge.json b/firebolt-parquet/results/c6a.2xlarge.json new file mode 100644 index 000000000..10d0006e7 --- /dev/null +++ b/firebolt-parquet/results/c6a.2xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c6a.2xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.086, 0.041, 0.04], + [1.133, 0.167, 0.19], + [3.335, 0.356, 0.363], + [2.292, 0.306, 0.289], + [2.682, 0.776, 0.767], + [2.629, 1.273, 1.286], + [1.02, 0.226, 0.224], + [1.596, 0.18, 0.172], + [3.055, 1.04, 1.006], + [6.171, 1.534, 1.475], + [3.962, 0.711, 0.689], + [4.003, 0.84, 0.765], + [2.567, 1.144, 1.206], + [5.854, 1.867, 1.728], + [2.637, 1.305, 1.362], + [2.117, 0.835, 0.807], + [5.748, 2.364, 2.365], + [5.448, 2.153, 2.121], + [8.985, 5.859, 5.954], + [1.607, 0.25, 0.212], + [11.608, 3.375, 3.424], + [14.527, 4.076, 3.985], + [26.924, 7.254, 7.031], + [56.167, 49.937, 47.882], + [5.827, 1.252, 1.176], + [2.4, 0.827, 0.871], + [5.851, 1.223, 1.191], + [12.683, 4.299, 4.338], + [14.653, 5.82, 6.216], + [1.142, 0.237, 0.226], + [7.215, 1.605, 1.648], + [12.022, 1.873, 1.865], + [10.753, 3.948, 3.785], + [11.863, 4.983, 5.199], + [11.731, 5.054, 5.351], + [1.972, 1.1, 1.071], + [0.072, 0.004, 0.005], + [0.005, 0.003, 0.004], + [0.047, 0.004, 0.003], + [0.009, 0.004, 0.003], + [0.09, 0.005, 0.015], + [0.041, 0.004, 0.004], + [0.006, 0.004, 0.008] +] +} + diff --git a/firebolt-parquet/results/c6a.4xlarge.json b/firebolt-parquet/results/c6a.4xlarge.json new file mode 100644 index 000000000..4d5a6a050 --- /dev/null +++ b/firebolt-parquet/results/c6a.4xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c6a.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.088, 0.039, 0.04], + [1.098, 0.128, 0.118], + [3.534, 0.254, 0.241], + [2.562, 0.244, 0.236], + [2.71, 0.466, 0.502], + [3.39, 0.785, 0.797], + [1.025, 0.157, 0.156], + [1.752, 0.13, 0.128], + [3.079, 0.671, 0.643], + [6.128, 0.864, 0.853], + [3.895, 0.453, 0.43], + [3.938, 0.502, 0.488], + [2.433, 0.729, 0.712], + [5.553, 1.189, 1.124], + [2.533, 0.823, 0.824], + [2.015, 0.634, 0.628], + [5.498, 1.354, 1.302], + [5.344, 1.211, 1.125], + [8.312, 3.157, 3.076], + [1.585, 0.229, 0.224], + [11.638, 3.168, 3.168], + [14.548, 3.538, 3.497], + [26.856, 6.476, 6.464], + [56.268, 15.457, 15.783], + [5.869, 0.84, 0.836], + [2.385, 0.578, 0.583], + [5.838, 0.831, 0.792], + [12.626, 3.915, 3.886], + [10.015, 4.487, 4.429], + [1.139, 0.154, 0.163], + [7.314, 0.989, 0.965], + [11.976, 1.232, 1.209], + [10.051, 2.191, 2.082], + [11.565, 4.037, 4.009], + [11.516, 4.078, 4.011], + [1.823, 0.735, 0.645], + [0.053, 0.004, 0.004], + [0.005, 0.005, 0.003], + [0.038, 0.004, 0.003], + [0.004, 0.004, 0.004], + [0.074, 0.023, 0.004], + [0.045, 0.004, 0.018], + [0.022, 0.004, 0.003] +] +} + diff --git a/firebolt-parquet/results/c6a.large.json b/firebolt-parquet/results/c6a.large.json new file mode 100644 index 000000000..fc37d9a2d --- /dev/null +++ b/firebolt-parquet/results/c6a.large.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c6a.large", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.11, 0.034, 0.036], + [1.16, 0.5, 0.648], + [3.014, 1.447, 1.349], + [2.12, 1.206, 1.676], + [3.465, 3.586, 3.344], + [5.711, 6.127, 5.676], + [1.049, 0.787, 0.788], + [0.997, 0.624, 0.453], + [4.499, 4.848, 4.653], + [10.333, 6.804, 7.266], + [4.787, 2.176, 2.047], + [4.142, 3.034, 2.433], + [4.86, 3.98, 4.556], + [11.862, 10.635, 10.202], + [5.877, 6.4, 6.639], + [3.564, 3.037, 2.937], + [13.107, 10.82, 11.391], + [10.296, 8.86, 9.808], + [32.211, 30.985, 31.826], + [1.629, 0.863, 0.598], + [16.185, 24.981, 9.89], + [15.837, 15.863, 17.623], + [28.867, 27.12, 30.05], + [94.517, 93.042, 93.568], + [5.973, 4.021, 3.349], + [3.097, 2.774, 2.625], + [6.018, 3.864, 3.617], + [27.149, 18.263, 14.895], + [29.614, 26.419, 17.373], + [1.165, 0.799, 0.772], + [7.568, 6.725, 5.78], + [14.998, 16.047, 16.111], + [49.706, 47.856, 46.967], + [44.225, 44.302, 44.226], + [44.866, 44.795, 44.01], + [3.67, 3.76, 3.81], + [0.054, 0.004, 0.003], + [0.006, 0.004, 0.004], + [0.041, 0.007, 0.003], + [0.009, 0.004, 0.004], + [0.058, 0.005, 0.005], + [0.045, 0.004, 0.004], + [0.011, 0.004, 0.004] +] +} + diff --git a/firebolt-parquet/results/c6a.metal.json b/firebolt-parquet/results/c6a.metal.json new file mode 100644 index 000000000..edc40db88 --- /dev/null +++ b/firebolt-parquet/results/c6a.metal.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c6a.metal", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.107, 0.05, 0.055], + [0.924, 0.693, 0.816], + [2.82, 0.946, 1.735], + [1.879, 0.794, 0.755], + [2.866, 2.513, 2.043], + [7.181, 4.351, 4.325], + [0.988, 0.705, 0.485], + [1.012, 0.823, 0.768], + [3.203, 3.08, 3.096], + [6.156, 5.207, 4.99], + [3.892, 1.237, 2.382], + [4.016, 2.272, 0.224], + [3.47, 3.889, 3.864], + [5.648, 4.062, 4.114], + [4.069, 4.238, 4.551], + [2.761, 3.067, 2.658], + [6.791, 8.098, 8.084], + [7.632, 7.962, 7.017], + [18.969, 19.68, 19.221], + [1.512, 0.485, 0.488], + [11.568, 8.979, 10.475], + [14.663, 10.602, 10.673], + [26.803, 20.197, 24.471], + [80.274, 79.878, 78.813], + [5.902, 3.423, 2.013], + [3.126, 3.361, 3.433], + [6.022, 3.997, 1.83], + [12.965, 8.819, 8.783], + [12.973, 12.499, 13.141], + [1.337, 0.796, 0.493], + [7.042, 5.438, 4.87], + [11.696, 5.748, 4.711], + [10.689, 10.175, 11.294], + [12.14, 12.733, 13.107], + [12.565, 12.949, 14.854], + [3.351, 4.465, 3.003], + [0.172, 0.014, 0.015], + [0.025, 0.022, 0.017], + [0.056, 0.016, 0.017], + [0.014, 0.016, 0.021], + [0.076, 0.02, 0.021], + [0.059, 0.016, 0.02], + [0.018, 0.018, 0.015] +] +} + diff --git a/firebolt-parquet/results/c6a.xlarge.json b/firebolt-parquet/results/c6a.xlarge.json new file mode 100644 index 000000000..a1eaef617 --- /dev/null +++ b/firebolt-parquet/results/c6a.xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c6a.xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.101, 0.037, 0.036], + [1.017, 0.317, 0.373], + [2.915, 0.682, 0.685], + [1.922, 0.552, 0.532], + [2.255, 1.419, 1.443], + [2.759, 2.383, 2.324], + [1.007, 0.398, 0.394], + [1.045, 0.256, 0.28], + [2.984, 1.909, 1.894], + [6.422, 2.749, 2.713], + [4.015, 1.254, 1.764], + [4.028, 1.394, 1.378], + [2.724, 2.162, 2.109], + [6.353, 3.41, 3.349], + [2.859, 2.504, 2.496], + [2.333, 1.616, 1.571], + [6.225, 4.508, 4.411], + [5.67, 3.874, 3.871], + [11.869, 11.584, 11.633], + [1.578, 0.341, 0.358], + [11.482, 6.234, 6.169], + [14.742, 7.321, 7.698], + [27.031, 18.755, 18.486], + [56.677, 52.13, 52.42], + [5.967, 2.174, 2.053], + [2.496, 1.654, 1.508], + [5.985, 2.128, 2.068], + [12.862, 7.478, 7.888], + [12.995, 11.779, 11.907], + [1.155, 0.385, 0.374], + [7.12, 2.886, 2.856], + [12.375, 3.289, 3.277], + [19.015, 18.831, 17.012], + [18.201, 16.696, 17.103], + [19.015, 17.301, 17.497], + [2.881, 1.906, 1.795], + [0.043, 0.004, 0.003], + [0.005, 0.003, 0.003], + [0.038, 0.004, 0.005], + [0.007, 0.004, 0.004], + [0.064, 0.005, 0.005], + [0.035, 0.004, 0.003], + [0.007, 0.003, 0.003] +] +} + diff --git a/firebolt-parquet/results/c7a.metal-48xl.json b/firebolt-parquet/results/c7a.metal-48xl.json new file mode 100644 index 000000000..faaf99143 --- /dev/null +++ b/firebolt-parquet/results/c7a.metal-48xl.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c7a.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.153, 0.066, 0.072], + [1.629, 1.102, 1.021], + [3.074, 1.613, 1.811], + [1.978, 1.041, 0.98], + [2.297, 2.747, 2.738], + [7.416, 4.544, 0.42], + [1.179, 0.788, 0.574], + [0.948, 0.31, 1.085], + [3.82, 3.36, 4.295], + [5.706, 4.864, 5.956], + [4.293, 2.915, 2.364], + [4.154, 3.904, 3.603], + [4.806, 4.605, 4.755], + [5.888, 4.441, 5.038], + [4.739, 4.522, 5.093], + [3.177, 1.608, 3.419], + [7.326, 7.509, 8.5], + [8.274, 7.365, 7.263], + [17.847, 18.363, 18.726], + [1.621, 0.913, 0.664], + [15.415, 10.77, 14.845], + [17.291, 17.07, 18.977], + [27.533, 34.393, 25.905], + [78.818, 78.264, 91.383], + [5.854, 4.807, 4.806], + [4.143, 3.181, 3.44], + [6.004, 4.312, 3.738], + [16.873, 11.19, 14.818], + [14.217, 12.465, 13.609], + [1.144, 1.495, 0.979], + [7.036, 6.366, 5.969], + [11.689, 0.44, 6.778], + [11.972, 12.468, 11.703], + [15.795, 15.858, 15.568], + [16.211, 13.345, 15.746], + [3.985, 3.016, 4.176], + [0.087, 0.045, 0.055], + [0.083, 0.074, 0.063], + [0.105, 0.05, 0.097], + [0.073, 0.056, 0.197], + [0.104, 0.075, 0.073], + [0.109, 0.064, 0.115], + [0.069, 0.108, 0.229] +] +} + diff --git a/firebolt-parquet/results/c8g.4xlarge.json b/firebolt-parquet/results/c8g.4xlarge.json new file mode 100644 index 000000000..13c562c10 --- /dev/null +++ b/firebolt-parquet/results/c8g.4xlarge.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c8g.4xlarge", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.085, 0.034, 0.033], + [1.048, 0.072, 0.357], + [3.42, 0.121, 0.114], + [2.701, 0.646, 0.103], + [2.412, 0.247, 0.236], + [2.999, 3.669, 3.678], + [1.028, 0.081, 0.078], + [1.848, 0.36, 0.081], + [2.923, 0.313, 0.285], + [6.442, 0.428, 0.456], + [4.141, 1.484, 1.479], + [3.996, 0.237, 0.215], + [3.031, 0.293, 0.312], + [6.169, 0.46, 0.465], + [2.569, 0.365, 0.347], + [2.425, 0.365, 0.297], + [5.91, 6.1, 0.59], + [5.321, 0.526, 0.587], + [7.94, 1.035, 10.462], + [1.582, 0.313, 0.08], + [11.691, 0.775, 0.764], + [14.538, 0.97, 0.908], + [26.987, 1.743, 1.736], + [55.907, 6.953, 6.875], + [5.863, 0.306, 0.293], + [2.597, 0.236, 0.244], + [6.416, 0.311, 2.799], + [12.645, 7.101, 1], + [9.82, 15.878, 1.706], + [1.146, 0.101, 0.138], + [7.451, 0.431, 0.416], + [11.962, 0.51, 0.479], + [9.722, 1.009, 0.97], + [11.435, 1.181, 1.137], + [11.403, 9.936, 1.181], + [1.77, 2.577, 0.453], + [0.045, 0.005, 0.004], + [0.005, 0.01, 0.004], + [0.034, 0.01, 0.004], + [0.01, 0.005, 0.005], + [0.054, 0.006, 0.039], + [0.037, 0.004, 0.004], + [0.006, 0.005, 0.004] +] +} + diff --git a/firebolt-parquet/results/c8g.metal-48xl.json b/firebolt-parquet/results/c8g.metal-48xl.json new file mode 100644 index 000000000..2c7f82654 --- /dev/null +++ b/firebolt-parquet/results/c8g.metal-48xl.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "c8g.metal-48xl", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.125, 0.4, 0.374], + [0.998, 0.883, 1.076], + [2.622, 1.219, 1.28], + [1.903, 0.552, 1.044], + [1.91, 2.792, 2.778], + [2.401, 4.379, 4.627], + [1.045, 1.031, 0.98], + [1.026, 0.635, 0.392], + [2.487, 3.438, 0.471], + [5.761, 4.48, 4.195], + [3.856, 1.912, 1.822], + [3.82, 2.259, 2.373], + [3.034, 3.215, 3.192], + [5.218, 3.664, 4.141], + [3.729, 3.759, 3.959], + [2.849, 3.08, 2.85], + [7.1, 0.857, 7.939], + [5.118, 0.66, 0.36], + [11.409, 11.867, 0.946], + [1.571, 0.544, 0.715], + [11.186, 8.476, 8.921], + [14.701, 9.632, 9.583], + [27, 1.451, 0.971], + [94.286, 93.858, 4.241], + [5.917, 3.12, 3.099], + [2.676, 2.439, 0.906], + [5.943, 0.488, 3.224], + [12.491, 0.714, 8.989], + [10.066, 16.97, 0.829], + [1.136, 0.788, 0.624], + [6.883, 4.485, 4.642], + [11.868, 4.946, 4.768], + [10.489, 10.855, 11.922], + [11.453, 11.756, 13.652], + [12.619, 13.09, 13.327], + [1.973, 0.454, 3.323], + [0.117, 0.509, 0.791], + [0.214, 0.549, 0.333], + [0.303, 0.293, 0.512], + [0.131, 0.414, 0.34], + [0.21, 0.47, 0.439], + [0.135, 0.42, 0.4], + [0.106, 0.307, 0.636] +] +} + diff --git a/firebolt-parquet/results/t3a.small.json b/firebolt-parquet/results/t3a.small.json new file mode 100644 index 000000000..90c63fd7e --- /dev/null +++ b/firebolt-parquet/results/t3a.small.json @@ -0,0 +1,58 @@ +{ + "system": "Firebolt (Parquet)", + "date": "2026-02-21", + "machine": "t3a.small", + "cluster_size": 1, + "proprietary": "yes", + "hardware": "cpu", + "tuned": "no", + "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], + "load_time": 0, + "data_size": 14779976446, + "result": [ + [0.14, 0.083, 0.068], + [0.156, 0.088, 0.07], + [0.109, 0.08, 0.085], + [0.102, 0.079, 0.066], + [0.094, 0.077, 0.071], + [0.096, 0.105, 0.074], + [0.096, 0.068, 0.07], + [0.105, 0.076, 0.069], + [0.092, 0.082, 0.076], + [0.108, 0.079, 0.079], + [0.099, 0.077, 0.077], + [0.097, 0.081, 0.079], + [0.1, 0.075, 0.084], + [0.102, 0.086, 0.079], + [0.111, 0.086, 0.088], + [0.105, 0.075, 0.074], + [0.122, 0.074, 0.076], + [0.103, 0.082, 0.086], + [0.104, 0.083, 0.091], + [0.122, 0.075, 0.08], + [0.111, 0.076, 0.086], + [0.108, 0.079, 0.079], + [0.106, 0.085, 0.081], + [0.162, 0.137, 0.137], + [0.106, 0.093, 0.089], + [0.1, 0.084, 0.081], + [0.095, 0.079, 0.081], + [0.113, 0.097, 0.085], + [0.114, 0.077, 0.077], + [0.131, 0.105, 0.106], + [0.104, 0.093, 0.094], + [0.116, 0.09, 0.095], + [0.101, 0.089, 0.081], + [0.107, 0.085, 0.085], + [0.118, 0.083, 0.094], + [0.126, 0.073, 0.078], + [0.087, 0.007, 0.008], + [0.01, 0.008, 0.008], + [0.063, 0.008, 0.008], + [0.01, 0.013, 0.008], + [0.079, 0.01, 0.01], + [0.069, 0.008, 0.007], + [0.012, 0.008, 0.008] +] +} + From 785e2d8112ae289b04032be274037af66df64669 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sat, 21 Feb 2026 02:46:11 +0000 Subject: [PATCH 5/6] Add results --- .../results/result.csv | 43 ------------------- firebolt-parquet/results/result.csv | 43 ------------------- 2 files changed, 86 deletions(-) delete mode 100644 firebolt-parquet-partitioned/results/result.csv delete mode 100644 firebolt-parquet/results/result.csv diff --git a/firebolt-parquet-partitioned/results/result.csv b/firebolt-parquet-partitioned/results/result.csv deleted file mode 100644 index f1f07ee95..000000000 --- a/firebolt-parquet-partitioned/results/result.csv +++ /dev/null @@ -1,43 +0,0 @@ -[0.089283,0.085227,0.056908], -[6.462622,0.119138,0.038947], -[10.367681,0.121577,0.068723], -[8.336257,0.145469,0.197462], -[8.349521,0.132076,0.091391], -[9.178133,0.171213,0.134665], -[6.187076,0.110292,0.058369], -[6.454823,0.066141,0.092703], -[9.057229,0.15579,0.110341], -[18.117743,0.202172,0.149111], -[13.532241,0.171737,0.099214], -[13.770584,0.228361,0.088879], -[9.068185,0.151889,0.149824], -[16.675524,0.237302,0.198608], -[9.064278,0.194775,0.134064], -[8.29152,0.164027,0.163135], -[16.60348,0.256961,0.208454], -[16.315262,0.300289,0.202808], -[21.854225,0.378082,0.330043], -[6.288758,0.160972,0.099336], -[26.567622,0.500553,0.417805], -[34.127698,0.542914,0.497363], -[58.899529,0.911295,0.795608], -[112.493884,2.898339,2.4515], -[17.554711,0.360378,0.217671], -[8.794605,0.1668,0.104769], -[18.080815,0.205598,0.131358], -[29.565947,0.644293,0.534157], -[23.126676,0.588055,0.621218], -[6.082632,0.280672,0.17878], -[19.550942,0.228663,0.151307], -[30.333442,0.294862,0.175669], -[25.039375,0.411381,0.32421], -[26.381503,0.603127,0.547455], -[26.382774,0.714164,0.581087], -[7.358347,0.37295,0.116444], -[0.094299,0.090255,0.072739], -[0.062318,0.050861,0.082478], -[0.484961,0.033505,0.065616], -[0.070775,0.051666,0.059196], -[0.578127,0.065646,0.09461], -[0.750614,0.065703,0.089976], -[0.110351,0.053694,0.05331], diff --git a/firebolt-parquet/results/result.csv b/firebolt-parquet/results/result.csv deleted file mode 100644 index abb3cd7d3..000000000 --- a/firebolt-parquet/results/result.csv +++ /dev/null @@ -1,43 +0,0 @@ -[0.059843,0.162664,0.140374], -[3.148727,0.563231,0.470388], -[6.732605,0.404802,1.004818], -[5.034925,0.656611,0.669673], -[5.272328,2.239552,2.252362], -[6.473511,3.931263,3.808644], -[3.128724,0.633189,0.685733], -[3.152018,0.482778,0.433736], -[5.897501,2.672888,2.70512], -[13.594944,4.063634,3.897423], -[9.21254,1.547822,1.566892], -[9.347565,1.829211,1.852122], -[6.33956,2.910324,2.957453], -[12.359564,3.607029,3.481648], -[6.657161,3.544702,3.470191], -[5.356698,2.422867,2.406365], -[12.846069,6.451807,6.536292], -[12.648833,6.332159,2.21432], -[18.397965,11.181063,11.30718], -[4.3146,0.415743,0.383533], -[24.031448,6.736471,6.76135], -[30.848713,8.906115,0.856585], -[56.120186,17.049336,17.077808], -[116.003436,84.626922,84.384854], -[13.186752,2.874756,2.845174], -[6.044078,2.239127,2.264012], -[13.186912,2.884457,2.883567], -[26.926486,7.156224,7.183304], -[22.964421,15.978144,16.102947], -[3.432935,0.612371,0.611429], -[15.294111,4.259675,4.36426], -[25.686938,4.439314,0.657251], -[21.549406,10.36087,10.11945], -[25.061596,10.84247,10.697158], -[25.150158,11.029951,10.764596], -[5.061588,2.713641,2.750384], -[0.051314,0.030315,0.024209], -[0.023383,0.021939,0.01692], -[0.035486,0.02946,0.017068], -[0.021938,0.036345,0.082503], -[0.056541,0.081315,0.095248], -[0.056486,0.055195,0.139469], -[0.039902,0.063839,0.042551], From 47478a9294ecca678ad0ff7522cc8cc3ac618c35 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sat, 21 Feb 2026 02:51:15 +0000 Subject: [PATCH 6/6] Add results --- .../results/t3a.small.json | 58 ------------------- firebolt-parquet/results/t3a.small.json | 58 ------------------- 2 files changed, 116 deletions(-) delete mode 100644 firebolt-parquet-partitioned/results/t3a.small.json delete mode 100644 firebolt-parquet/results/t3a.small.json diff --git a/firebolt-parquet-partitioned/results/t3a.small.json b/firebolt-parquet-partitioned/results/t3a.small.json deleted file mode 100644 index 847dc7ddf..000000000 --- a/firebolt-parquet-partitioned/results/t3a.small.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "system": "Firebolt (Parquet, partitioned)", - "date": "2026-02-21", - "machine": "t3a.small", - "cluster_size": 1, - "proprietary": "yes", - "hardware": "cpu", - "tuned": "no", - "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], - "load_time": 0, - "data_size": 14737666736, - "result": [ - [0.385, 0.273, 0.166], - [0.157, 0.048, 0.029], - [0.072, 0.043, 0.059], - [0.047, 0.045, 0.04], - [0.058, 0.059, 0.037], - [0.113, 0.091, 0.07], - [0.097, 0.07, 0.034], - [0.136, 0.045, 0.028], - [0.065, 0.048, 0.028], - [0.08, 0.053, 0.034], - [0.108, 0.056, 0.05], - [0.163, 0.037, 0.019], - [0.099, 0.071, 0.121], - [0.099, 0.038, 0.014], - [0.057, 0.054, 0.023], - [0.086, 0.04, 0.027], - [0.072, 0.047, 0.025], - [0.097, 0.039, 0.013], - [0.112, 0.053, 0.035], - [0.09, 0.043, 0.015], - [0.08, 0.05, 0.024], - [0.081, 0.047, 0.04], - [0.084, 0.051, 0.028], - [0.065, 0.049, 0.02], - [0.061, 0.049, 0.013], - [0.14, 0.075, 0.052], - [0.176, 0.165, 0.043], - [0.058, 0.043, 0.022], - [0.292, 0.216, 0.026], - [0.117, 0.088, 0.06], - [0.248, 0.138, 0.03], - [0.269, 0.052, 0.045], - [0.289, 0.399, 0.065], - [0.27, 0.149, 0.025], - [0.227, 0.365, 0.086], - [0.128, 0.386, 0.032], - [0.492, 0.017, 0.019], - [0.021, 0.018, 0.017], - [0.254, 0.018, 0.018], - [0.023, 0.017, 0.017], - [0.28, 0.022, 0.021], - [0.405, 0.016, 0.016], - [0.027, 0.018, 0.027] -] -} - diff --git a/firebolt-parquet/results/t3a.small.json b/firebolt-parquet/results/t3a.small.json deleted file mode 100644 index 90c63fd7e..000000000 --- a/firebolt-parquet/results/t3a.small.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "system": "Firebolt (Parquet)", - "date": "2026-02-21", - "machine": "t3a.small", - "cluster_size": 1, - "proprietary": "yes", - "hardware": "cpu", - "tuned": "no", - "tags": ["C++","column-oriented","PostgreSQL compatible","ClickHouse derivative","stateless"], - "load_time": 0, - "data_size": 14779976446, - "result": [ - [0.14, 0.083, 0.068], - [0.156, 0.088, 0.07], - [0.109, 0.08, 0.085], - [0.102, 0.079, 0.066], - [0.094, 0.077, 0.071], - [0.096, 0.105, 0.074], - [0.096, 0.068, 0.07], - [0.105, 0.076, 0.069], - [0.092, 0.082, 0.076], - [0.108, 0.079, 0.079], - [0.099, 0.077, 0.077], - [0.097, 0.081, 0.079], - [0.1, 0.075, 0.084], - [0.102, 0.086, 0.079], - [0.111, 0.086, 0.088], - [0.105, 0.075, 0.074], - [0.122, 0.074, 0.076], - [0.103, 0.082, 0.086], - [0.104, 0.083, 0.091], - [0.122, 0.075, 0.08], - [0.111, 0.076, 0.086], - [0.108, 0.079, 0.079], - [0.106, 0.085, 0.081], - [0.162, 0.137, 0.137], - [0.106, 0.093, 0.089], - [0.1, 0.084, 0.081], - [0.095, 0.079, 0.081], - [0.113, 0.097, 0.085], - [0.114, 0.077, 0.077], - [0.131, 0.105, 0.106], - [0.104, 0.093, 0.094], - [0.116, 0.09, 0.095], - [0.101, 0.089, 0.081], - [0.107, 0.085, 0.085], - [0.118, 0.083, 0.094], - [0.126, 0.073, 0.078], - [0.087, 0.007, 0.008], - [0.01, 0.008, 0.008], - [0.063, 0.008, 0.008], - [0.01, 0.013, 0.008], - [0.079, 0.01, 0.01], - [0.069, 0.008, 0.007], - [0.012, 0.008, 0.008] -] -} -