From c75ac72e6e6ffde07e812bfdbf61f1a451b4ae86 Mon Sep 17 00:00:00 2001 From: Phil Rzewski Date: Mon, 2 Dec 2024 14:25:56 -0800 Subject: [PATCH] Run super cmd perf queries with ClickHouse JSON type --- docs/commands/super.md | 463 +++++++++++------ scripts/super-cmd-perf/README.md | 7 +- scripts/super-cmd-perf/benchmark.sh | 23 +- scripts/super-cmd-perf/clickhouse-storage.xml | 5 + .../clickhouse-table-create.sql | 3 + scripts/super-cmd-perf/prep-data.sh | 14 + .../queries/agg-clickhouse-db.sql | 5 + .../queries/count-clickhouse-db.sql | 3 + .../queries/search+-clickhouse-db.sql | 489 ++++++++++++++++++ .../queries/search-clickhouse-db.sql | 3 + .../queries/union-clickhouse-db.sql | 13 + scripts/super-cmd-perf/run-queries.sh | 26 +- 12 files changed, 890 insertions(+), 164 deletions(-) create mode 100644 scripts/super-cmd-perf/clickhouse-storage.xml create mode 100644 scripts/super-cmd-perf/clickhouse-table-create.sql create mode 100644 scripts/super-cmd-perf/queries/agg-clickhouse-db.sql create mode 100644 scripts/super-cmd-perf/queries/count-clickhouse-db.sql create mode 100644 scripts/super-cmd-perf/queries/search+-clickhouse-db.sql create mode 100644 scripts/super-cmd-perf/queries/search-clickhouse-db.sql create mode 100644 scripts/super-cmd-perf/queries/union-clickhouse-db.sql diff --git a/docs/commands/super.md b/docs/commands/super.md index e7c72df485..1dd9380f7c 100644 --- a/docs/commands/super.md +++ b/docs/commands/super.md @@ -669,28 +669,24 @@ measurements among SuperDB, [DataFusion](https://datafusion.apache.org/). We'll use the Parquet format to compare apples to apples -and also report results for the custom columnar database format of DuckDB +and also report results for the custom columnar database format of DuckDB, +the [new beta JSON type](https://clickhouse.com/blog/a-new-powerful-json-data-type-for-clickhouse) of ClickHouse, and the [Super Binary](../formats/bsup.md) format used by `super`. -We also experimented with loading our test data into a ClickHouse table using its -[new beta JSON type](https://clickhouse.com/blog/a-new-powerful-json-data-type-for-clickhouse). -Preliminary results showed a mix of good performance and failed queries. -We'll provide more detail on these tests soon. - The detailed steps shown [below](#appendix-2-running-the-tests) can be reproduced via [automated scripts](https://github.com/brimdata/super/blob/main/scripts/super-cmd-perf). -As of this writing in November 2024, [results](#the-test-results) were gathered on an AWS +As of this writing in December 2024, [results](#the-test-results) were gathered on an AWS [`m6idn.2xlarge`](https://aws.amazon.com/ec2/instance-types/m6i/) instance with the following software versions: |**Software**|**Version**| |-|-| -|`super`|Commit `31760cd`| +|`super`|Commit `cc6949f`| |`duckdb`|`v1.1.3` 19864453f7| |`datafusion-cli`|datafusion-cli `43.0.0`| -|`clickhouse`|ClickHouse local version `24.10.3.21` (official build)| +|`clickhouse`|ClickHouse local version `24.11.1.2557` (official build)| -The complete run logs are [archived here](https://super-cmd-perf.s3.us-east-2.amazonaws.com/2024-11-26_03-17-25.tgz). +The complete run logs are [archived here](https://super-cmd-perf.s3.us-east-2.amazonaws.com/2024-12-03_00-43-29.tgz). ### The Test Data @@ -721,6 +717,15 @@ We then created a Parquet file called `gha.parquet` with this command: ``` duckdb gha.db -c "COPY (from gha) TO 'gha.parquet'" ``` +To create a ClickHouse table using their beta JSON type, after starting +a ClickHouse server we defined the single-column schema before loading the +data using this command: +``` +clickhouse-client --query " + SET enable_json_type = 1; + CREATE TABLE gha (v JSON) ENGINE MergeTree() ORDER BY tuple(); + INSERT INTO gha SELECT * FROM file('gharchive_gz/*.json.gz', JSONAsObject);" +``` To create a super-structed file for the `super` command, there is no need to [`fuse`](../language/operators/fuse.md) the data into a single schema (though `super` can still work with the fused schema in the Parquet file), and we simply ran this command to create a Super Binary @@ -730,15 +735,17 @@ super gharchive_gz/*.json.gz > gha.bsup ``` This code path in `super` is not multi-threaded so not particularly performant but, on our test machine, this runs more than 2x faster than the `duckdb` method of -creating a schema-fused table. +creating a schema-fused table and just a bit faster than `clickhouse` could +load the data to its beta JSON type. Here are the resulting file sizes: ``` -% du -h gha.db gha.parquet gha.bsup gharchive_gz -9.3G gha.db -4.6G gha.parquet -2.8G gha.bsup -2.2G gharchive_gz +% du -h gha.db gha.parquet gha.bsup gharchive_gz clickhouse/store +9.3G gha.db +4.6G gha.parquet +2.8G gha.bsup +2.2G gharchive_gz + 15G clickhouse/store ``` ### The Test Queries @@ -759,7 +766,7 @@ For the _search_ test, we'll search for the string pattern ``` in the field `payload.pull_request.body` and we'll just count the number of matches found. -The number of matches is small (3) so the query performance is dominated +The number of matches is small (2) so the query performance is dominated by the search. The SQL for this query is @@ -768,7 +775,14 @@ SELECT count() FROM 'gha.parquet' -- or gha WHERE payload.pull_request.body LIKE '%in case you have any feedback 😊%' ``` -SuperSQL supports `LIKE` and could run this plain SQL query, but it also has a +To query the data stored with the ClickHouse JSON type, field +references needed to be rewritten relative to the named column `v`. +```sql +SELECT count() +FROM 'gha' +WHERE v.payload.pull_request.body LIKE '%in case you have any feedback 😊%' +``` +SuperSQL supports `LIKE` and could run the plain SQL query, but it also has a similar function called [`grep`](../language/functions/grep.md) that can operate over specified fields or default to all the string fields in any value. The SuperSQL query that uses `grep` is @@ -793,7 +807,18 @@ WHERE id LIKE '%in case you have any feedback 😊%' OR payload.member.type LIKE '%in case you have any feedback 😊%' ``` There are 486 such fields. You can review the entire query in -[`search+.sql`](https://github.com/brimdata/super/blob/main/scripts/super-cmd-perf/search%2B.sql). +[`search+.sql`](https://github.com/brimdata/super/blob/main/scripts/super-cmd-perf/queries/search%2B.sql). + +To query the data stored with the ClickHouse JSON type, field +references needed to be rewritten relative to the named column `v`. +```sql +SELECT count() +FROM 'gha' +WHERE + v.id LIKE '%in case you have any feedback 😊%' + OR v.type LIKE '%in case you have any feedback 😊%' +... +``` In SuperSQL, `grep` allows for a much shorter query. ```sql @@ -813,6 +838,14 @@ FROM 'gha.parquet' -- or gha or 'gha.bsup' WHERE actor.login='johnbieren'" ``` +To query the data stored with the ClickHouse JSON type, field +references needed to be rewritten relative to the named column `v`. +```sql +SELECT count() +FROM 'gha' +WHERE v.actor.login='johnbieren' +``` + #### Agg In the _agg_ test, we filter the input and count the results grouped by the field `type` @@ -825,6 +858,28 @@ WHERE repo.name='duckdb/duckdb' GROUP BY type ``` +To query the data stored with the ClickHouse JSON type, field +references needed to be rewritten relative to the named column `v`. +```sql +SET allow_suspicious_types_in_group_by = 1; +SELECT count(),v.type +FROM 'gha' +WHERE v.repo.name='duckdb/duckdb' +GROUP BY v.type +``` + +Also, we had to enable the `allow_suspicious_types_in_group_by` setting as +shown above because an initial attempt to query with default settings +triggered the error: +``` +Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Data +types Variant/Dynamic are not allowed in GROUP BY keys, because it can lead +to unexpected results. Consider using a subcolumn with a specific data type +instead (for example 'column.Int64' or 'json.some.path.:Int64' if its a JSON +path subcolumn) or casting this column to a specific data type. Set setting +allow_suspicious_types_in_group_by = 1 in order to allow it. (ILLEGAL_COLUMN) +``` + #### Union The _union_ test is straight out of the DuckDB blog at the end of @@ -866,6 +921,34 @@ SELECT object.login as assignee FROM ( ``` and for ClickHouse, we had to use `arrayJoin` instead of `unnest`. +Even with this change ClickHouse could only run the query successfully against +the Parquet data, as after rewriting the field references to attempt to +query the data stored with the ClickHouse JSON type it would not run. We +suspect this is likely due to some remaining work in ClickHouse for `arrayJoin` +to work with the new JSON type. +``` +$ clickhouse-client --query " + WITH assignees AS ( + SELECT v.payload.pull_request.assignee.login assignee + FROM 'gha' + UNION ALL + SELECT arrayJoin(v.payload.pull_request.assignees).login assignee + FROM 'gha' + ) + SELECT assignee, count(*) count + FROM assignees + WHERE assignee IS NOT NULL + GROUP BY assignee + ORDER BY count DESC + LIMIT 5" + +Received exception from server (version 24.11.1): +Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: First +argument for function tupleElement must be tuple or array of tuple. Actual +Dynamic: In scope SELECT tupleElement(arrayJoin(v.payload.pull_request.assignees), +'login') AS assignee FROM gha. (ILLEGAL_TYPE_OF_ARGUMENT) +``` + SuperSQL's data model does not require these kinds of gymnastics as everything does not have to be jammed into a table. Instead, we can use the `UNNEST` pipe operator combined with the [spread operator](../language/expressions.md#array-expressions) applied to the array of @@ -883,28 +966,32 @@ FROM 'gha.bsup' ### The Test Results The following table summarizes the query performance for each tool as recorded in the -[most recent archived run](https://super-cmd-perf.s3.us-east-2.amazonaws.com/2024-11-26_03-17-25.tgz). +[most recent archived run](https://super-cmd-perf.s3.us-east-2.amazonaws.com/2024-12-03_00-43-29.tgz). The run time for each query in seconds is shown along with the speed-up factor in parentheses: |**Tool**|**Format**|**search**|**search+**|**count**|**agg**|**union**| |-|-|-|-|-|-|-| -|`super`|`bsup`|6.3
(1.9x)|14.3
(1.4x)|5.7
(0.03x)|5.6
(0.03x)|8.2
(63x)| +|`super`|`bsup`|6.4
(2.0x)|14.3
(1.4x)|5.8
(0.03x)|5.7
(0.03x)|8.2
(64x)| |`super`|`parquet`|note 1|note 1|0.3
(0.6x)|0.5
(0.3x)|note 2| -|`duckdb`|`db`|12.1|19.8|0.2|0.14|519| -|`duckdb`|`parquet`|12.9
(0.9x)|21.2
(0.9x)|0.4
(0.4x)|0.3
(0.5x)|499
(1x)| -|`datafusion`|`parquet`|11.1
(1.1x)|21.1
(0.9x)|0.4
(0.5x)|0.4
(0.4x)|24.3
(21x)| -|`clickhouse`|`parquet`|68
(0.2x)|845
(0.02x)|1
(0.2x)|0.9
(0.2x)|70
(7x)| +|`duckdb`|`db`|13.0
(1x)|20.0
(1x)|0.2
(1x)|0.1
(1x)|521
(1x)| +|`duckdb`|`parquet`|13.4
(1.0x)|21.4
(0.9x)|0.4
(0.4x)|0.3
(0.4x)|504
(1.0x)| +|`datafusion`|`parquet`|11.0
(1.2x)|21.7
(0.9x)|0.4
(0.5x)|0.4
(0.4x)|24.6
(21x)| +|`clickhouse`|`parquet`|71
(0.2x)|870
(0.02x)|1.0
(0.2x)|0.9
(0.2x)|72
(7x)| +|`clickhouse`|`db`|0.9
(14x)|13.2
(1.5x)|0.1
(2.2x)|0.1
(1.1x)|note 3| _Note 1: the `super` vectorized runtime does not yet support `grep`_ _Note 2: the `super` vectorized runtime does not yet support array expressions_ -Since DuckDB with its native format is overall the best performing, -we used it as the baseline for all of the speed-up factors. +_Note 3: we were not able to successfully run the [union query](#union) with +ClickHouse's beta JSON type_ + +Since DuckDB with its native format could successfully run all queries with +decent performance, we used it as the baseline for all of the speed-up factors. To summarize, -`super` with Super Binary is substantially faster than the relational systems for +`super` with Super Binary is substantially faster than multiple relational systems for the search use cases and performs on par with the others for traditional OLAP queries, except for the _union_ query, where the super-structured data model trounces the relational model (by over 60x!) for stitching together disparate data types for analysis in an aggregation. @@ -986,7 +1073,7 @@ super gharchive_gz/*.json.gz > gha.bsup ## Appendix 2: Running the Tests -This appendix provides the raw tests and output from the [most recent archived run](https://super-cmd-perf.s3.us-east-2.amazonaws.com/2024-11-26_03-17-25.tgz) +This appendix provides the raw tests and output from the [most recent archived run](https://super-cmd-perf.s3.us-east-2.amazonaws.com/2024-12-03_00-43-29.tgz) of the tests via [automated scripts](https://github.com/brimdata/super/blob/main/scripts/super-cmd-perf) on an AWS [`m6idn.2xlarge`](https://aws.amazon.com/ec2/instance-types/m6i/) instance. @@ -995,7 +1082,22 @@ on an AWS [`m6idn.2xlarge`](https://aws.amazon.com/ec2/instance-types/m6i/) inst ``` About to execute ================ -clickhouse --queries-file /mnt/tmpdir/tmp.0REdlePG3O +clickhouse-client --queries-file /mnt/tmpdir/tmp.oymd2K7311 + +With query +========== +SELECT count() +FROM 'gha' +WHERE v.payload.pull_request.body LIKE '%in case you have any feedback 😊%' + ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse-client --queries-file /mnt/tmpdir/tmp.oymd2K7311' +Benchmark 1: clickhouse-client --queries-file /mnt/tmpdir/tmp.oymd2K7311 +2 + Time (abs ≡): 0.904 s [User: 0.038 s, System: 0.030 s] + +About to execute +================ +clickhouse --queries-file /mnt/tmpdir/tmp.K3EjBntwdo With query ========== @@ -1003,14 +1105,14 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE payload.pull_request.body LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.0REdlePG3O' -Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.0REdlePG3O ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.K3EjBntwdo' +Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.K3EjBntwdo 2 - Time (abs ≡): 68.250 s [User: 67.960 s, System: 3.333 s] + Time (abs ≡): 70.647 s [User: 70.320 s, System: 3.447 s] About to execute ================ -datafusion-cli --file /mnt/tmpdir/tmp.TO5M8YolwM +datafusion-cli --file /mnt/tmpdir/tmp.zSkYYYeSG6 With query ========== @@ -1018,8 +1120,8 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE payload.pull_request.body LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.TO5M8YolwM' -Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.TO5M8YolwM ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.zSkYYYeSG6' +Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.zSkYYYeSG6 DataFusion CLI v43.0.0 +---------+ | count() | @@ -1027,13 +1129,13 @@ DataFusion CLI v43.0.0 | 2 | +---------+ 1 row(s) fetched. -Elapsed 10.942 seconds. +Elapsed 10.764 seconds. - Time (abs ≡): 11.130 s [User: 65.904 s, System: 11.389 s] + Time (abs ≡): 10.990 s [User: 66.344 s, System: 10.974 s] About to execute ================ -duckdb /mnt/gha.db < /mnt/tmpdir/tmp.GxPkGbQK8Y +duckdb /mnt/gha.db < /mnt/tmpdir/tmp.31z1ThfK6B With query ========== @@ -1041,19 +1143,19 @@ SELECT count() FROM 'gha' WHERE payload.pull_request.body LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.GxPkGbQK8Y' -Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.GxPkGbQK8Y ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.31z1ThfK6B' +Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.31z1ThfK6B ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 2 │ └──────────────┘ - Time (abs ≡): 12.142 s [User: 81.132 s, System: 8.426 s] + Time (abs ≡): 12.985 s [User: 78.328 s, System: 9.270 s] About to execute ================ -duckdb < /mnt/tmpdir/tmp.EtIuukLt2w +duckdb < /mnt/tmpdir/tmp.x2HfLY0RBU With query ========== @@ -1061,19 +1163,19 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE payload.pull_request.body LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.EtIuukLt2w' -Benchmark 1: duckdb < /mnt/tmpdir/tmp.EtIuukLt2w ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.x2HfLY0RBU' +Benchmark 1: duckdb < /mnt/tmpdir/tmp.x2HfLY0RBU ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 2 │ └──────────────┘ - Time (abs ≡): 12.890 s [User: 86.998 s, System: 6.305 s] + Time (abs ≡): 13.356 s [User: 89.551 s, System: 6.785 s] About to execute ================ -super -z -I /mnt/tmpdir/tmp.JfLwNNwBeG +super -z -I /mnt/tmpdir/tmp.KmM8c3l1gb With query ========== @@ -1081,17 +1183,37 @@ SELECT count() FROM '/mnt/gha.bsup' WHERE grep('in case you have any feedback 😊', payload.pull_request.body) -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.JfLwNNwBeG' -Benchmark 1: super -z -I /mnt/tmpdir/tmp.JfLwNNwBeG ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.KmM8c3l1gb' +Benchmark 1: super -z -I /mnt/tmpdir/tmp.KmM8c3l1gb {count:2(uint64)} - Time (abs ≡): 6.325 s [User: 23.018 s, System: 1.652 s] + Time (abs ≡): 6.442 s [User: 23.375 s, System: 1.777 s] + ``` ### Search+ Test ``` About to execute ================ -clickhouse --queries-file /mnt/tmpdir/tmp.QRmnp0x8FT +clickhouse-client --queries-file /mnt/tmpdir/tmp.tgIZkIc6XA + +With query +========== +SELECT count() +FROM 'gha' +WHERE + v.id LIKE '%in case you have any feedback 😊%' + OR v.type LIKE '%in case you have any feedback 😊%' + ... + OR v.payload.member.type LIKE '%in case you have any feedback 😊%' + ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse-client --queries-file /mnt/tmpdir/tmp.tgIZkIc6XA' +Benchmark 1: clickhouse-client --queries-file /mnt/tmpdir/tmp.tgIZkIc6XA +3 + Time (abs ≡): 13.244 s [User: 0.058 s, System: 0.022 s] + +About to execute +================ +clickhouse --queries-file /mnt/tmpdir/tmp.0ENj1f6lI8 With query ========== @@ -1100,17 +1222,17 @@ FROM '/mnt/gha.parquet' WHERE id LIKE '%in case you have any feedback 😊%' OR type LIKE '%in case you have any feedback 😊%' -... + ... OR payload.member.type LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.QRmnp0x8FT' -Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.QRmnp0x8FT ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.0ENj1f6lI8' +Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.0ENj1f6lI8 3 - Time (abs ≡): 844.648 s [User: 923.669 s, System: 19.038 s] + Time (abs ≡): 870.218 s [User: 950.089 s, System: 18.760 s] About to execute ================ -datafusion-cli --file /mnt/tmpdir/tmp.NZ6GD2NGSD +datafusion-cli --file /mnt/tmpdir/tmp.veTUjcdQto With query ========== @@ -1122,8 +1244,8 @@ WHERE ... OR payload.member.type LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.NZ6GD2NGSD' -Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.NZ6GD2NGSD ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.veTUjcdQto' +Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.veTUjcdQto DataFusion CLI v43.0.0 +---------+ | count() | @@ -1131,13 +1253,13 @@ DataFusion CLI v43.0.0 | 3 | +---------+ 1 row(s) fetched. -Elapsed 20.913 seconds. +Elapsed 21.422 seconds. - Time (abs ≡): 21.127 s [User: 126.933 s, System: 19.620 s] + Time (abs ≡): 21.661 s [User: 129.457 s, System: 19.646 s] About to execute ================ -duckdb /mnt/gha.db < /mnt/tmpdir/tmp.fmZ4sHQJOv +duckdb /mnt/gha.db < /mnt/tmpdir/tmp.CcmsLBMCmv With query ========== @@ -1149,19 +1271,19 @@ WHERE ... OR payload.member.type LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.fmZ4sHQJOv' -Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.fmZ4sHQJOv ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.CcmsLBMCmv' +Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.CcmsLBMCmv ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 3 │ └──────────────┘ - Time (abs ≡): 19.796 s [User: 140.238 s, System: 9.686 s] + Time (abs ≡): 20.043 s [User: 137.850 s, System: 10.587 s] About to execute ================ -duckdb < /mnt/tmpdir/tmp.hE8ZzAlSRQ +duckdb < /mnt/tmpdir/tmp.BI1AC3TnV2 With query ========== @@ -1173,19 +1295,19 @@ WHERE ... OR payload.member.type LIKE '%in case you have any feedback 😊%' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.hE8ZzAlSRQ' -Benchmark 1: duckdb < /mnt/tmpdir/tmp.hE8ZzAlSRQ ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.BI1AC3TnV2' +Benchmark 1: duckdb < /mnt/tmpdir/tmp.BI1AC3TnV2 ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 3 │ └──────────────┘ - Time (abs ≡): 21.210 s [User: 143.903 s, System: 9.179 s] + Time (abs ≡): 21.352 s [User: 144.078 s, System: 9.044 s] About to execute ================ -super -z -I /mnt/tmpdir/tmp.ncLqBOUkXD +super -z -I /mnt/tmpdir/tmp.v0WfEuBi8J With query ========== @@ -1193,10 +1315,10 @@ SELECT count() FROM '/mnt/gha.bsup' WHERE grep('in case you have any feedback 😊') -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.ncLqBOUkXD' -Benchmark 1: super -z -I /mnt/tmpdir/tmp.ncLqBOUkXD ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.v0WfEuBi8J' +Benchmark 1: super -z -I /mnt/tmpdir/tmp.v0WfEuBi8J {count:3(uint64)} - Time (abs ≡): 14.267 s [User: 105.204 s, System: 1.698 s] + Time (abs ≡): 14.311 s [User: 104.946 s, System: 1.880 s] ``` ### Count Test @@ -1204,7 +1326,22 @@ Benchmark 1: super -z -I /mnt/tmpdir/tmp.ncLqBOUkXD ``` About to execute ================ -clickhouse --queries-file /mnt/tmpdir/tmp.xpShnx3ftw +clickhouse-client --queries-file /mnt/tmpdir/tmp.CFT0wwiAbD + +With query +========== +SELECT count() +FROM 'gha' +WHERE v.actor.login='johnbieren' + ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse-client --queries-file /mnt/tmpdir/tmp.CFT0wwiAbD' +Benchmark 1: clickhouse-client --queries-file /mnt/tmpdir/tmp.CFT0wwiAbD +879 + Time (abs ≡): 0.080 s [User: 0.025 s, System: 0.018 s] + +About to execute +================ +clickhouse --queries-file /mnt/tmpdir/tmp.XFTW0X911r With query ========== @@ -1212,14 +1349,14 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE actor.login='johnbieren' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.xpShnx3ftw' -Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.xpShnx3ftw ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.XFTW0X911r' +Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.XFTW0X911r 879 - Time (abs ≡): 1.034 s [User: 0.822 s, System: 0.233 s] + Time (abs ≡): 0.954 s [User: 0.809 s, System: 0.164 s] About to execute ================ -datafusion-cli --file /mnt/tmpdir/tmp.eO6Lt0jBbs +datafusion-cli --file /mnt/tmpdir/tmp.QLU5fBDx7L With query ========== @@ -1227,8 +1364,8 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE actor.login='johnbieren' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.eO6Lt0jBbs' -Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.eO6Lt0jBbs ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.QLU5fBDx7L' +Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.QLU5fBDx7L DataFusion CLI v43.0.0 +---------+ | count() | @@ -1238,11 +1375,11 @@ DataFusion CLI v43.0.0 1 row(s) fetched. Elapsed 0.340 seconds. - Time (abs ≡): 0.381 s [User: 1.578 s, System: 0.411 s] + Time (abs ≡): 0.388 s [User: 1.601 s, System: 0.417 s] About to execute ================ -duckdb /mnt/gha.db < /mnt/tmpdir/tmp.dEgCWl2Iem +duckdb /mnt/gha.db < /mnt/tmpdir/tmp.WVteXNRqfp With query ========== @@ -1250,19 +1387,19 @@ SELECT count() FROM 'gha' WHERE actor.login='johnbieren' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.dEgCWl2Iem' -Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.dEgCWl2Iem ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.WVteXNRqfp' +Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.WVteXNRqfp ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 879 │ └──────────────┘ - Time (abs ≡): 0.175 s [User: 1.042 s, System: 0.106 s] + Time (abs ≡): 0.177 s [User: 1.011 s, System: 0.137 s] About to execute ================ -duckdb < /mnt/tmpdir/tmp.GNGEkrs6IU +duckdb < /mnt/tmpdir/tmp.b5T64pDmwq With query ========== @@ -1270,19 +1407,19 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE actor.login='johnbieren' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.GNGEkrs6IU' -Benchmark 1: duckdb < /mnt/tmpdir/tmp.GNGEkrs6IU ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.b5T64pDmwq' +Benchmark 1: duckdb < /mnt/tmpdir/tmp.b5T64pDmwq ┌──────────────┐ │ count_star() │ │ int64 │ ├──────────────┤ │ 879 │ └──────────────┘ - Time (abs ≡): 0.423 s [User: 2.256 s, System: 0.181 s] + Time (abs ≡): 0.416 s [User: 2.235 s, System: 0.187 s] About to execute ================ -super -z -I /mnt/tmpdir/tmp.dyu0120H2m +super -z -I /mnt/tmpdir/tmp.s5e3Ueg2zU With query ========== @@ -1290,14 +1427,14 @@ SELECT count() FROM '/mnt/gha.bsup' WHERE actor.login='johnbieren' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.dyu0120H2m' -Benchmark 1: super -z -I /mnt/tmpdir/tmp.dyu0120H2m ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.s5e3Ueg2zU' +Benchmark 1: super -z -I /mnt/tmpdir/tmp.s5e3Ueg2zU {count:879(uint64)} - Time (abs ≡): 5.745 s [User: 17.240 s, System: 1.509 s] + Time (abs ≡): 5.830 s [User: 17.284 s, System: 1.737 s] About to execute ================ -SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.yogAuyCHWe +SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.2f1t2J9pWR With query ========== @@ -1305,10 +1442,10 @@ SELECT count() FROM '/mnt/gha.parquet' WHERE actor.login='johnbieren' -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.yogAuyCHWe' -Benchmark 1: SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.yogAuyCHWe ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.2f1t2J9pWR' +Benchmark 1: SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.2f1t2J9pWR {count:879(uint64)} - Time (abs ≡): 0.298 s [User: 0.769 s, System: 0.248 s] + Time (abs ≡): 0.301 s [User: 0.740 s, System: 0.257 s] ``` ### Agg Test @@ -1316,7 +1453,31 @@ Benchmark 1: SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.yogAuyCHWe ``` About to execute ================ -clickhouse --queries-file /mnt/tmpdir/tmp.FNKcK1lhGU +clickhouse-client --queries-file /mnt/tmpdir/tmp.hFAMHegng8 + +With query +========== +SET allow_suspicious_types_in_group_by = 1; +SELECT count(),v.type +FROM 'gha' +WHERE v.repo.name='duckdb/duckdb' +GROUP BY v.type + ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse-client --queries-file /mnt/tmpdir/tmp.hFAMHegng8' +Benchmark 1: clickhouse-client --queries-file /mnt/tmpdir/tmp.hFAMHegng8 +14 PullRequestReviewEvent +15 PushEvent +9 IssuesEvent +3 ForkEvent +7 PullRequestReviewCommentEvent +29 WatchEvent +30 IssueCommentEvent +35 PullRequestEvent + Time (abs ≡): 0.132 s [User: 0.034 s, System: 0.018 s] + +About to execute +================ +clickhouse --queries-file /mnt/tmpdir/tmp.MiXEgFCu5o With query ========== @@ -1325,21 +1486,21 @@ FROM '/mnt/gha.parquet' WHERE repo.name='duckdb/duckdb' GROUP BY type -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.FNKcK1lhGU' -Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.FNKcK1lhGU ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.MiXEgFCu5o' +Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.MiXEgFCu5o 30 IssueCommentEvent 14 PullRequestReviewEvent 15 PushEvent 29 WatchEvent -9 IssuesEvent 7 PullRequestReviewCommentEvent +9 IssuesEvent 3 ForkEvent 35 PullRequestEvent - Time (abs ≡): 0.856 s [User: 0.741 s, System: 0.178 s] + Time (abs ≡): 0.864 s [User: 0.747 s, System: 0.180 s] About to execute ================ -datafusion-cli --file /mnt/tmpdir/tmp.cv7JPVFkc6 +datafusion-cli --file /mnt/tmpdir/tmp.uI0r2dLw8f With query ========== @@ -1348,29 +1509,29 @@ FROM '/mnt/gha.parquet' WHERE repo.name='duckdb/duckdb' GROUP BY type -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.cv7JPVFkc6' -Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.cv7JPVFkc6 ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.uI0r2dLw8f' +Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.uI0r2dLw8f DataFusion CLI v43.0.0 +---------+-------------------------------+ | count() | type | +---------+-------------------------------+ +| 3 | ForkEvent | +| 15 | PushEvent | | 35 | PullRequestEvent | | 14 | PullRequestReviewEvent | | 7 | PullRequestReviewCommentEvent | -| 3 | ForkEvent | -| 15 | PushEvent | | 30 | IssueCommentEvent | | 9 | IssuesEvent | | 29 | WatchEvent | +---------+-------------------------------+ 8 row(s) fetched. -Elapsed 0.324 seconds. +Elapsed 0.315 seconds. - Time (abs ≡): 0.354 s [User: 1.299 s, System: 0.413 s] + Time (abs ≡): 0.358 s [User: 1.385 s, System: 0.404 s] About to execute ================ -duckdb /mnt/gha.db < /mnt/tmpdir/tmp.qaqGNHoHPE +duckdb /mnt/gha.db < /mnt/tmpdir/tmp.Nqj23A926J With query ========== @@ -1379,8 +1540,8 @@ FROM 'gha' WHERE repo.name='duckdb/duckdb' GROUP BY type -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.qaqGNHoHPE' -Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.qaqGNHoHPE ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.Nqj23A926J' +Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.Nqj23A926J ┌──────────────┬───────────────────────────────┐ │ count_star() │ type │ │ int64 │ varchar │ @@ -1388,17 +1549,17 @@ Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.qaqGNHoHPE │ 3 │ ForkEvent │ │ 14 │ PullRequestReviewEvent │ │ 29 │ WatchEvent │ -│ 35 │ PullRequestEvent │ │ 30 │ IssueCommentEvent │ -│ 7 │ PullRequestReviewCommentEvent │ │ 15 │ PushEvent │ │ 9 │ IssuesEvent │ +│ 7 │ PullRequestReviewCommentEvent │ +│ 35 │ PullRequestEvent │ └──────────────┴───────────────────────────────┘ - Time (abs ≡): 0.144 s [User: 0.770 s, System: 0.143 s] + Time (abs ≡): 0.143 s [User: 0.722 s, System: 0.162 s] About to execute ================ -duckdb < /mnt/tmpdir/tmp.3BIyBWjqG0 +duckdb < /mnt/tmpdir/tmp.LepFhAA9Y3 With query ========== @@ -1407,8 +1568,8 @@ FROM '/mnt/gha.parquet' WHERE repo.name='duckdb/duckdb' GROUP BY type -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.3BIyBWjqG0' -Benchmark 1: duckdb < /mnt/tmpdir/tmp.3BIyBWjqG0 ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.LepFhAA9Y3' +Benchmark 1: duckdb < /mnt/tmpdir/tmp.LepFhAA9Y3 ┌──────────────┬───────────────────────────────┐ │ count_star() │ type │ │ int64 │ varchar │ @@ -1418,15 +1579,15 @@ Benchmark 1: duckdb < /mnt/tmpdir/tmp.3BIyBWjqG0 │ 9 │ IssuesEvent │ │ 7 │ PullRequestReviewCommentEvent │ │ 14 │ PullRequestReviewEvent │ -│ 29 │ WatchEvent │ -│ 30 │ IssueCommentEvent │ │ 35 │ PullRequestEvent │ +│ 30 │ IssueCommentEvent │ +│ 29 │ WatchEvent │ └──────────────┴───────────────────────────────┘ - Time (abs ≡): 0.316 s [User: 1.473 s, System: 0.174 s] + Time (abs ≡): 0.318 s [User: 1.547 s, System: 0.159 s] About to execute ================ -super -z -I /mnt/tmpdir/tmp.QieGBDCfVB +super -z -I /mnt/tmpdir/tmp.oWK2c4UwIp With query ========== @@ -1435,8 +1596,8 @@ FROM '/mnt/gha.bsup' WHERE repo.name='duckdb/duckdb' GROUP BY type -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.QieGBDCfVB' -Benchmark 1: super -z -I /mnt/tmpdir/tmp.QieGBDCfVB ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.oWK2c4UwIp' +Benchmark 1: super -z -I /mnt/tmpdir/tmp.oWK2c4UwIp {type:"IssuesEvent",count:9(uint64)} {type:"ForkEvent",count:3(uint64)} {type:"PullRequestReviewCommentEvent",count:7(uint64)} @@ -1445,11 +1606,11 @@ Benchmark 1: super -z -I /mnt/tmpdir/tmp.QieGBDCfVB {type:"WatchEvent",count:29(uint64)} {type:"PullRequestEvent",count:35(uint64)} {type:"PushEvent",count:15(uint64)} - Time (abs ≡): 5.627 s [User: 15.358 s, System: 1.606 s] + Time (abs ≡): 5.692 s [User: 15.531 s, System: 1.644 s] About to execute ================ -SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.XI76knYAGz +SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.S1AYE55Oyi With query ========== @@ -1458,17 +1619,17 @@ FROM '/mnt/gha.parquet' WHERE repo.name='duckdb/duckdb' GROUP BY type -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.XI76knYAGz' -Benchmark 1: SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.XI76knYAGz ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.S1AYE55Oyi' +Benchmark 1: SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.S1AYE55Oyi +{type:"WatchEvent",count:29(uint64)} {type:"PullRequestEvent",count:35(uint64)} -{type:"IssueCommentEvent",count:30(uint64)} {type:"PushEvent",count:15(uint64)} {type:"IssuesEvent",count:9(uint64)} +{type:"IssueCommentEvent",count:30(uint64)} {type:"ForkEvent",count:3(uint64)} {type:"PullRequestReviewCommentEvent",count:7(uint64)} {type:"PullRequestReviewEvent",count:14(uint64)} -{type:"WatchEvent",count:29(uint64)} - Time (abs ≡): 0.498 s [User: 2.133 s, System: 0.329 s] + Time (abs ≡): 0.492 s [User: 2.079 s, System: 0.354 s] ``` ### Union Test @@ -1476,7 +1637,7 @@ Benchmark 1: SUPER_VAM=1 super -z -I /mnt/tmpdir/tmp.XI76knYAGz ``` About to execute ================ -clickhouse --queries-file /mnt/tmpdir/tmp.rpGStdRtoN +clickhouse --queries-file /mnt/tmpdir/tmp.KgVFqIsPVq With query ========== @@ -1494,18 +1655,18 @@ GROUP BY assignee ORDER BY count DESC LIMIT 5 -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.rpGStdRtoN' -Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.rpGStdRtoN ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'clickhouse --queries-file /mnt/tmpdir/tmp.KgVFqIsPVq' +Benchmark 1: clickhouse --queries-file /mnt/tmpdir/tmp.KgVFqIsPVq poad 1966 vinayakkulkarni 508 tmtmtmtm 356 AMatutat 260 danwinship 208 - Time (abs ≡): 70.276 s [User: 139.539 s, System: 6.504 s] + Time (abs ≡): 72.059 s [User: 142.588 s, System: 6.638 s] About to execute ================ -datafusion-cli --file /mnt/tmpdir/tmp.V2yirMdQ2i +datafusion-cli --file /mnt/tmpdir/tmp.bWB9scRPum With query ========== @@ -1525,8 +1686,8 @@ GROUP BY assignee ORDER BY count DESC LIMIT 5 -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.V2yirMdQ2i' -Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.V2yirMdQ2i ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'datafusion-cli --file /mnt/tmpdir/tmp.bWB9scRPum' +Benchmark 1: datafusion-cli --file /mnt/tmpdir/tmp.bWB9scRPum DataFusion CLI v43.0.0 +-----------------+-------+ | assignee | count | @@ -1538,13 +1699,13 @@ DataFusion CLI v43.0.0 | danwinship | 208 | +-----------------+-------+ 5 row(s) fetched. -Elapsed 24.068 seconds. +Elapsed 24.234 seconds. - Time (abs ≡): 24.336 s [User: 161.911 s, System: 24.355 s] + Time (abs ≡): 24.575 s [User: 163.931 s, System: 24.758 s] About to execute ================ -duckdb /mnt/gha.db < /mnt/tmpdir/tmp.yz1E2h5G10 +duckdb /mnt/gha.db < /mnt/tmpdir/tmp.3724dO4AgT With query ========== @@ -1562,8 +1723,8 @@ GROUP BY assignee ORDER BY count DESC LIMIT 5 -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.yz1E2h5G10' -Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.yz1E2h5G10 ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb /mnt/gha.db < /mnt/tmpdir/tmp.3724dO4AgT' +Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.3724dO4AgT ┌─────────────────┬───────┐ │ assignee │ count │ │ varchar │ int64 │ @@ -1574,11 +1735,11 @@ Benchmark 1: duckdb /mnt/gha.db < /mnt/tmpdir/tmp.yz1E2h5G10 │ AMatutat │ 260 │ │ danwinship │ 208 │ └─────────────────┴───────┘ - Time (abs ≡): 519.227 s [User: 4075.550 s, System: 14.520 s] + Time (abs ≡): 520.980 s [User: 4062.107 s, System: 15.406 s] About to execute ================ -duckdb < /mnt/tmpdir/tmp.30X1TO2UbL +duckdb < /mnt/tmpdir/tmp.WcA1AOl9UB With query ========== @@ -1596,8 +1757,8 @@ GROUP BY assignee ORDER BY count DESC LIMIT 5 -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.30X1TO2UbL' -Benchmark 1: duckdb < /mnt/tmpdir/tmp.30X1TO2UbL ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'duckdb < /mnt/tmpdir/tmp.WcA1AOl9UB' +Benchmark 1: duckdb < /mnt/tmpdir/tmp.WcA1AOl9UB ┌─────────────────┬───────┐ │ assignee │ count │ │ varchar │ int64 │ @@ -1608,11 +1769,11 @@ Benchmark 1: duckdb < /mnt/tmpdir/tmp.30X1TO2UbL │ AMatutat │ 260 │ │ danwinship │ 208 │ └─────────────────┴───────┘ - Time (abs ≡): 499.909 s [User: 3718.128 s, System: 9.680 s] + Time (abs ≡): 503.567 s [User: 3747.792 s, System: 10.013 s] About to execute ================ -super -z -I /mnt/tmpdir/tmp.3qO9ALablA +super -z -I /mnt/tmpdir/tmp.iTtaFeoj74 With query ========== @@ -1623,12 +1784,12 @@ FROM '/mnt/gha.bsup' | ORDER BY count DESC | LIMIT 5 -+ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.3qO9ALablA' -Benchmark 1: super -z -I /mnt/tmpdir/tmp.3qO9ALablA ++ hyperfine --show-output --warmup 1 --runs 1 --time-unit second 'super -z -I /mnt/tmpdir/tmp.iTtaFeoj74' +Benchmark 1: super -z -I /mnt/tmpdir/tmp.iTtaFeoj74 {assignee:"poad",count:1966(uint64)} {assignee:"vinayakkulkarni",count:508(uint64)} {assignee:"tmtmtmtm",count:356(uint64)} {assignee:"AMatutat",count:260(uint64)} {assignee:"danwinship",count:208(uint64)} - Time (abs ≡): 8.180 s [User: 17.197 s, System: 1.909 s] + Time (abs ≡): 8.184 s [User: 17.319 s, System: 1.908 s] ``` diff --git a/scripts/super-cmd-perf/README.md b/scripts/super-cmd-perf/README.md index 4465c71574..bb262ad824 100644 --- a/scripts/super-cmd-perf/README.md +++ b/scripts/super-cmd-perf/README.md @@ -28,7 +28,7 @@ Assuming a freshly-created `m6idn.2xlarge` instance running Ubuntu 24.04, to start the run: ``` -curl -s https://github.com/brimdata/super/blob/main/scripts/super-cmd-perf/benchmark.sh | bash -xv 2>&1 | tee runlog.txt +curl -s https://raw.githubusercontent.com/brimdata/super/refs/heads/main/scripts/super-cmd-perf/benchmark.sh | bash -xv 2>&1 | tee runlog.txt ``` The run proceeds in three phases: @@ -37,6 +37,11 @@ The run proceeds in three phases: 2. Test data is downloaded and loaded into needed storage formats 3. Queries are executed on all data platforms +The scripts only run with ClickHouse's [beta JSON type](https://clickhouse.com/blog/a-new-powerful-json-data-type-for-clickhouse) +on AWS because when we attempted to load data to this type on our Macbooks +that have 16 GB of RAM it consistently failed with a "too many open files" +error. + As the benchmarks may take a long time to run, the use of [`screen`](https://www.gnu.org/software/screen/) or a similar "detachable" terminal tool is recommended in case your remote network connection drops during a run. diff --git a/scripts/super-cmd-perf/benchmark.sh b/scripts/super-cmd-perf/benchmark.sh index 35c9449388..ec46a74533 100755 --- a/scripts/super-cmd-perf/benchmark.sh +++ b/scripts/super-cmd-perf/benchmark.sh @@ -22,16 +22,6 @@ if command -v dmidecode && [ "$(sudo dmidecode --string system-uuid | cut -c1-3) echo 'export TMPDIR="/mnt/tmpdir"' >> "$HOME"/.profile mkdir /mnt/tmpdir - # Install ClickHouse - if ! command -v clickhouse-client > /dev/null 2>&1; then - sudo apt-get install -y apt-transport-https ca-certificates curl gnupg - curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg - echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \ - /etc/apt/sources.list.d/clickhouse.list - sudo apt-get update - sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clickhouse-client - fi - # Install DuckDB if ! command -v duckdb > /dev/null 2>&1; then curl -L -O https://github.com/duckdb/duckdb/releases/download/v1.1.3/duckdb_cli-linux-amd64.zip @@ -69,6 +59,19 @@ if command -v dmidecode && [ "$(sudo dmidecode --string system-uuid | cut -c1-3) cd scripts/super-cmd-perf + # Install ClickHouse + if ! command -v clickhouse-client > /dev/null 2>&1; then + sudo apt-get install -y apt-transport-https ca-certificates curl gnupg + curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg + echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \ + /etc/apt/sources.list.d/clickhouse.list + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clickhouse-server clickhouse-client + sudo cp clickhouse-storage.xml /etc/clickhouse-server/config.d + sudo systemctl stop clickhouse-server + sudo systemctl disable clickhouse-server.service + fi + fi rundir="$(date +%F_%T)" diff --git a/scripts/super-cmd-perf/clickhouse-storage.xml b/scripts/super-cmd-perf/clickhouse-storage.xml new file mode 100644 index 0000000000..4099ad3163 --- /dev/null +++ b/scripts/super-cmd-perf/clickhouse-storage.xml @@ -0,0 +1,5 @@ + + /mnt/clickhouse/caches/ + /mnt/clickhouse/ + /mnt/clickhouse/tmp/ + diff --git a/scripts/super-cmd-perf/clickhouse-table-create.sql b/scripts/super-cmd-perf/clickhouse-table-create.sql new file mode 100644 index 0000000000..2103f0f130 --- /dev/null +++ b/scripts/super-cmd-perf/clickhouse-table-create.sql @@ -0,0 +1,3 @@ +SET enable_json_type = 1; +CREATE TABLE gha (v JSON) ENGINE MergeTree() ORDER BY tuple(); +INSERT INTO gha SELECT * FROM file('gharchive_gz/*.json.gz', JSONAsObject); diff --git a/scripts/super-cmd-perf/prep-data.sh b/scripts/super-cmd-perf/prep-data.sh index a1035092bf..0c0a70a3ba 100755 --- a/scripts/super-cmd-perf/prep-data.sh +++ b/scripts/super-cmd-perf/prep-data.sh @@ -11,6 +11,7 @@ mkdir -p "$rundir" RUNNING_ON_AWS_EC2="${RUNNING_ON_AWS_EC2:-}" if [ -n "$RUNNING_ON_AWS_EC2" ]; then + cp clickhouse-table-create.sql /mnt cd /mnt fi @@ -55,4 +56,17 @@ run_cmd \ "$rundir/super-bsup-create.out" \ "super -o gha.bsup gharchive_gz/*.json.gz" +if [ -n "$RUNNING_ON_AWS_EC2" ]; then + sudo mkdir -p /var/lib/clickhouse/user_files + sudo chown clickhouse:clickhouse /var/lib/clickhouse/user_files + sudo ln -s /mnt/gharchive_gz /var/lib/clickhouse/user_files/gharchive_gz + sudo systemctl start clickhouse-server + sleep 5 + run_cmd \ + "$rundir/clickhouse-table-create.out" \ + "clickhouse-client < clickhouse-table-create.sql" + sudo systemctl stop clickhouse-server + du -h clickhouse/store +fi + du -h gha.db gha.parquet gha.bsup gharchive_gz diff --git a/scripts/super-cmd-perf/queries/agg-clickhouse-db.sql b/scripts/super-cmd-perf/queries/agg-clickhouse-db.sql new file mode 100644 index 0000000000..c0afa66371 --- /dev/null +++ b/scripts/super-cmd-perf/queries/agg-clickhouse-db.sql @@ -0,0 +1,5 @@ +SET allow_suspicious_types_in_group_by = 1; +SELECT count(),v.type +FROM '__SOURCE__' +WHERE v.repo.name='duckdb/duckdb' +GROUP BY v.type diff --git a/scripts/super-cmd-perf/queries/count-clickhouse-db.sql b/scripts/super-cmd-perf/queries/count-clickhouse-db.sql new file mode 100644 index 0000000000..87ae5e1a27 --- /dev/null +++ b/scripts/super-cmd-perf/queries/count-clickhouse-db.sql @@ -0,0 +1,3 @@ +SELECT count() +FROM '__SOURCE__' +WHERE v.actor.login='johnbieren' diff --git a/scripts/super-cmd-perf/queries/search+-clickhouse-db.sql b/scripts/super-cmd-perf/queries/search+-clickhouse-db.sql new file mode 100644 index 0000000000..0aaf3f7a4f --- /dev/null +++ b/scripts/super-cmd-perf/queries/search+-clickhouse-db.sql @@ -0,0 +1,489 @@ +SELECT count() +FROM '__SOURCE__' +WHERE + v.id LIKE '%in case you have any feedback 😊%' + OR v.type LIKE '%in case you have any feedback 😊%' + OR v.actor.login LIKE '%in case you have any feedback 😊%' + OR v.actor.display_login LIKE '%in case you have any feedback 😊%' + OR v.actor.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.actor.url LIKE '%in case you have any feedback 😊%' + OR v.actor.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.repo.name LIKE '%in case you have any feedback 😊%' + OR v.repo.url LIKE '%in case you have any feedback 😊%' + OR v.payload.ref LIKE '%in case you have any feedback 😊%' + OR v.payload.ref_type LIKE '%in case you have any feedback 😊%' + OR v.payload.pusher_type LIKE '%in case you have any feedback 😊%' + OR v.payload.head LIKE '%in case you have any feedback 😊%' + OR v.payload.before LIKE '%in case you have any feedback 😊%' + OR v.payload.master_branch LIKE '%in case you have any feedback 😊%' + OR v.payload.description LIKE '%in case you have any feedback 😊%' + OR v.payload.action LIKE '%in case you have any feedback 😊%' + OR v.org.login LIKE '%in case you have any feedback 😊%' + OR v.org.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.org.url LIKE '%in case you have any feedback 😊%' + OR v.org.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.login LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.user.type LIKE '%in case you have any feedback 😊%' + OR v.payload.review.body LIKE '%in case you have any feedback 😊%' + OR v.payload.review.commit_id LIKE '%in case you have any feedback 😊%' + OR v.payload.review.state LIKE '%in case you have any feedback 😊%' + OR v.payload.review.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.pull_request_url LIKE '%in case you have any feedback 😊%' + OR v.payload.review.author_association LIKE '%in case you have any feedback 😊%' + OR v.payload.review._links.html.href LIKE '%in case you have any feedback 😊%' + OR v.payload.review._links.pull_request.href LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.login LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.user.type LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.path LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.commit_id LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.author_association LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.body LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.reactions.url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.issue_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.diff_hunk LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.original_commit_id LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.pull_request_url LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.start_side LIKE '%in case you have any feedback 😊%' + OR v.payload.comment.side LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.repository_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.labels_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.comments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.title LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.login LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.user.type LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.state LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.login LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.assignee.type LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.labels_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.title LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.description LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.login LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.creator.type LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.milestone.state LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.author_association LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.active_lock_reason LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.body LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.reactions.url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.timeline_url LIKE '%in case you have any feedback 😊%' + OR v.payload.issue.state_reason LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.diff_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.patch_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.issue_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.state LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.title LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.login LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.user.type LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.body LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merge_commit_sha LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.review_comments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.review_comment_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.comments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.statuses_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.label LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.ref LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.sha LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.login LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.user.type LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.name LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.full_name LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.login LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.owner.type LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.description LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.forks_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.keys_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.collaborators_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.teams_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.hooks_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.issue_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.assignees_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.branches_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.tags_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.blobs_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.git_tags_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.git_refs_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.trees_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.statuses_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.languages_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.stargazers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.contributors_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.subscribers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.subscription_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.git_commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.comments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.issue_comment_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.contents_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.compare_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.merges_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.archive_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.downloads_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.issues_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.pulls_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.milestones_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.notifications_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.labels_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.releases_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.deployments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.git_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.ssh_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.clone_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.svn_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.homepage LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.language LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.mirror_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.visibility LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.head.repo.default_branch LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.label LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.ref LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.sha LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.login LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.user.type LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.name LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.full_name LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.login LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.owner.type LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.description LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.forks_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.keys_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.collaborators_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.teams_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.hooks_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.issue_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.assignees_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.branches_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.tags_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.blobs_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.git_tags_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.git_refs_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.trees_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.statuses_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.languages_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.stargazers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.contributors_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.subscribers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.subscription_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.git_commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.comments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.issue_comment_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.contents_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.compare_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.merges_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.archive_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.downloads_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.issues_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.pulls_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.milestones_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.notifications_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.labels_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.releases_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.deployments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.git_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.ssh_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.clone_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.svn_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.homepage LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.language LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.mirror_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.visibility LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.base.repo.default_branch LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.self.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.html.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.issue.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.comments.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.review_comments.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.review_comment.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.commits.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request._links.statuses.href LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.author_association LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.active_lock_reason LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.mergeable_state LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.login LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.pull_request.merged_by.type LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.name LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.full_name LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.login LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.owner.type LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.description LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.forks_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.keys_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.collaborators_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.teams_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.hooks_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.issue_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.assignees_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.branches_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.tags_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.blobs_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.git_tags_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.git_refs_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.trees_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.statuses_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.languages_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.stargazers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.contributors_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.subscribers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.subscription_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.git_commits_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.comments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.issue_comment_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.contents_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.compare_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.merges_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.archive_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.downloads_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.issues_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.pulls_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.milestones_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.notifications_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.labels_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.releases_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.deployments_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.git_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.ssh_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.clone_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.svn_url LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.homepage LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.visibility LIKE '%in case you have any feedback 😊%' + OR v.payload.forkee.default_branch LIKE '%in case you have any feedback 😊%' + OR v.payload.release.url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.assets_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.upload_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.login LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.author.type LIKE '%in case you have any feedback 😊%' + OR v.payload.release.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.release.tag_name LIKE '%in case you have any feedback 😊%' + OR v.payload.release.target_commitish LIKE '%in case you have any feedback 😊%' + OR v.payload.release.name LIKE '%in case you have any feedback 😊%' + OR v.payload.release.tarball_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.zipball_url LIKE '%in case you have any feedback 😊%' + OR v.payload.release.body LIKE '%in case you have any feedback 😊%' + OR v.payload.release.short_description_html LIKE '%in case you have any feedback 😊%' + OR v.payload.release.discussion_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.login LIKE '%in case you have any feedback 😊%' + OR v.payload.member.node_id LIKE '%in case you have any feedback 😊%' + OR v.payload.member.avatar_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.gravatar_id LIKE '%in case you have any feedback 😊%' + OR v.payload.member.url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.html_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.followers_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.following_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.gists_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.starred_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.subscriptions_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.organizations_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.repos_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.received_events_url LIKE '%in case you have any feedback 😊%' + OR v.payload.member.type LIKE '%in case you have any feedback 😊%' diff --git a/scripts/super-cmd-perf/queries/search-clickhouse-db.sql b/scripts/super-cmd-perf/queries/search-clickhouse-db.sql new file mode 100644 index 0000000000..ad4b94281c --- /dev/null +++ b/scripts/super-cmd-perf/queries/search-clickhouse-db.sql @@ -0,0 +1,3 @@ +SELECT count() +FROM '__SOURCE__' +WHERE v.payload.pull_request.body LIKE '%in case you have any feedback 😊%' diff --git a/scripts/super-cmd-perf/queries/union-clickhouse-db.sql b/scripts/super-cmd-perf/queries/union-clickhouse-db.sql new file mode 100644 index 0000000000..6f24f0815d --- /dev/null +++ b/scripts/super-cmd-perf/queries/union-clickhouse-db.sql @@ -0,0 +1,13 @@ +WITH assignees AS ( + SELECT v.payload.pull_request.assignee.login assignee + FROM '__SOURCE__' + UNION ALL + SELECT arrayJoin(v.payload.pull_request.assignees).login assignee + FROM '__SOURCE__' +) +SELECT assignee, count(*) count +FROM assignees +WHERE assignee IS NOT NULL +GROUP BY assignee +ORDER BY count DESC +LIMIT 5 diff --git a/scripts/super-cmd-perf/run-queries.sh b/scripts/super-cmd-perf/run-queries.sh index d715738b6d..aa0c4371ed 100755 --- a/scripts/super-cmd-perf/run-queries.sh +++ b/scripts/super-cmd-perf/run-queries.sh @@ -55,8 +55,8 @@ function run_query { cmd="$cmd < $final_query" elif [ "$cmd" == "datafusion" ]; then cmd="datafusion-cli --file $final_query" - elif [ "$cmd" == "clickhouse" ]; then - cmd="clickhouse --queries-file $final_query" + elif [[ "$cmd" == "clickhouse"* ]]; then + cmd="$cmd --queries-file $final_query" fi echo -e "About to execute\n================\n$cmd\n\nWith query\n==========" > "$outputfile" @@ -144,3 +144,25 @@ do done echo >> "$report" echo >> "$csv_report" + +if [ -n "$RUNNING_ON_AWS_EC2" ]; then + sudo systemctl start clickhouse-server + echo -n "|\`clickhouse\`|\`db\`|" >> "$report" + echo -n "clickhouse,db" >> "$csv_report" + for queryfile in search-clickhouse-db.sql search+-clickhouse-db.sql count-clickhouse-db.sql agg-clickhouse-db.sql union-clickhouse-db.sql + do + if [ "$queryfile" == "union-clickhouse-db.sql" ]; then + echo -n "N/A|" >> "$report" + echo -n ",N/A" >> "$csv_report" + continue + fi + run_query clickhouse-client $queryfile gha + result=$(grep Time < "$rundir/clickhouse-client-$queryfile-$source.out" | awk '{ print $4 }') + echo -n "$result" >> "$report" + echo -n "|" >> "$report" + echo -n ",$result" >> "$csv_report" + done + sudo systemctl stop clickhouse-server + echo >> "$report" + echo >> "$csv_report" +fi