Skip to content

Commit 5882538

Browse files
authored
Merge branch 'antalya-26.1' into frontport/antalya-26.1/hybrid_table
2 parents 56ffc1f + 1fb76a0 commit 5882538

32 files changed

+390
-65
lines changed

.github/workflows/master.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5106,28 +5106,28 @@ jobs:
51065106

51075107
RegressionTestsRelease:
51085108
needs: [config_workflow, build_amd_binary]
5109-
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression')}}
5109+
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression')}}
51105110
uses: ./.github/workflows/regression.yml
51115111
secrets: inherit
51125112
with:
51135113
runner_type: altinity-regression-tester
5114-
commit: c5cae9b244e0839fb307a9fb67a40fe80d93810b
5114+
commit: a54216bbc29eb458e25011a68bacc77f4ae73c19
51155115
arch: release
51165116
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
51175117
timeout_minutes: 210
5118-
workflow_config: ${{ needs.config_workflow.outputs.data.workflow_config }}
5118+
workflow_config: ${{ needs.config_workflow.outputs.data }}
51195119
RegressionTestsAarch64:
51205120
needs: [config_workflow, build_arm_binary]
5121-
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}}
5121+
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}}
51225122
uses: ./.github/workflows/regression.yml
51235123
secrets: inherit
51245124
with:
51255125
runner_type: altinity-regression-tester-aarch64
5126-
commit: c5cae9b244e0839fb307a9fb67a40fe80d93810b
5126+
commit: a54216bbc29eb458e25011a68bacc77f4ae73c19
51275127
arch: aarch64
51285128
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
51295129
timeout_minutes: 210
5130-
workflow_config: ${{ needs.config_workflow.outputs.data.workflow_config }}
5130+
workflow_config: ${{ needs.config_workflow.outputs.data }}
51315131

51325132
SignRelease:
51335133
needs: [config_workflow, build_amd_release]

.github/workflows/pull_request.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ jobs:
4141
config_workflow:
4242
runs-on: [self-hosted, altinity-on-demand, altinity-style-checker-aarch64]
4343
needs: []
44+
if: ${{ github.repository == github.event.pull_request.head.repo.full_name }}
4445
name: "Config Workflow"
4546
outputs:
4647
data: ${{ steps.run.outputs.DATA }}
@@ -4591,28 +4592,28 @@ jobs:
45914592

45924593
RegressionTestsRelease:
45934594
needs: [config_workflow, build_amd_binary]
4594-
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression')}}
4595+
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression')}}
45954596
uses: ./.github/workflows/regression.yml
45964597
secrets: inherit
45974598
with:
45984599
runner_type: altinity-regression-tester
4599-
commit: c5cae9b244e0839fb307a9fb67a40fe80d93810b
4600+
commit: a54216bbc29eb458e25011a68bacc77f4ae73c19
46004601
arch: release
46014602
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
46024603
timeout_minutes: 210
4603-
workflow_config: ${{ needs.config_workflow.outputs.data.workflow_config }}
4604+
workflow_config: ${{ needs.config_workflow.outputs.data }}
46044605
RegressionTestsAarch64:
46054606
needs: [config_workflow, build_arm_binary]
4606-
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}}
4607+
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}}
46074608
uses: ./.github/workflows/regression.yml
46084609
secrets: inherit
46094610
with:
46104611
runner_type: altinity-regression-tester-aarch64
4611-
commit: c5cae9b244e0839fb307a9fb67a40fe80d93810b
4612+
commit: a54216bbc29eb458e25011a68bacc77f4ae73c19
46124613
arch: aarch64
46134614
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
46144615
timeout_minutes: 210
4615-
workflow_config: ${{ needs.config_workflow.outputs.data.workflow_config }}
4616+
workflow_config: ${{ needs.config_workflow.outputs.data }}
46164617

46174618
FinishCIReport:
46184619
if: ${{ !cancelled() }}

.github/workflows/regression-reusable-suite.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999
--local
100100
--collect-service-logs
101101
--output ${{ inputs.output_format }}
102-
--attr project="${GITHUB_REPOSITORY}" project.id="${GITHUB_REPOSITORY_ID}" user.name="${GITHUB_ACTOR}" version="${{ fromJson(inputs.workflow_config).custom_data.version.string }}" package="$clickhouse_path" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.name="$REPORT_JOB_NAME" job.retry=$GITHUB_RUN_ATTEMPT job.url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" arch="$(uname -i)"
102+
--attr project="${GITHUB_REPOSITORY}" project.id="${GITHUB_REPOSITORY_ID}" user.name="${GITHUB_ACTOR}" version="${{ fromJson(inputs.workflow_config).JOB_KV_DATA.version.string }}" package="$clickhouse_path" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.name="$REPORT_JOB_NAME" job.retry=$GITHUB_RUN_ATTEMPT job.url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" arch="$(uname -i)"
103103
--cicd
104104
--log raw.log
105105
${{ inputs.flags != 'none' && inputs.flags || ''}}
@@ -135,7 +135,7 @@ jobs:
135135
REPORTS_PATH=${{ runner.temp }}/reports_dir
136136
mkdir -p $REPORTS_PATH
137137
cat > $REPORTS_PATH/workflow_config.json << 'EOF'
138-
${{ inputs.workflow_config }}
138+
${{ toJson(fromJson(inputs.workflow_config).WORKFLOW_CONFIG) }}
139139
EOF
140140
141141
python3 .github/get-deb-url.py --github-env $GITHUB_ENV --workflow-config $REPORTS_PATH/workflow_config.json --s3-base-url $S3_BASE_URL --pr-number $PR_NUMBER --branch-name ${{ github.ref_name }} --commit-hash ${{ inputs.build_sha || github.sha }} --binary

.github/workflows/regression.yml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ env:
121121
jobs:
122122
Common:
123123
if: |
124-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
125-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'common')
124+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
125+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'common')
126126
strategy:
127127
fail-fast: false
128128
matrix:
@@ -145,8 +145,8 @@ jobs:
145145

146146
AggregateFunctions:
147147
if: |
148-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
149-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'aggregate_functions')
148+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
149+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'aggregate_functions')
150150
strategy:
151151
fail-fast: false
152152
matrix:
@@ -170,8 +170,8 @@ jobs:
170170
secrets: inherit
171171
Alter:
172172
if: |
173-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
174-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'alter')
173+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
174+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'alter')
175175
strategy:
176176
fail-fast: false
177177
matrix:
@@ -202,8 +202,8 @@ jobs:
202202

203203
Benchmark:
204204
if: |
205-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
206-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'benchmark')
205+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
206+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'benchmark')
207207
strategy:
208208
fail-fast: false
209209
matrix:
@@ -228,8 +228,8 @@ jobs:
228228

229229
ClickHouseKeeper:
230230
if: |
231-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
232-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'clickhouse_keeper')
231+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
232+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'clickhouse_keeper')
233233
strategy:
234234
fail-fast: false
235235
matrix:
@@ -256,8 +256,8 @@ jobs:
256256

257257
Iceberg:
258258
if: |
259-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
260-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'iceberg')
259+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
260+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'iceberg')
261261
strategy:
262262
fail-fast: false
263263
matrix:
@@ -281,8 +281,8 @@ jobs:
281281
secrets: inherit
282282
LDAP:
283283
if: |
284-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
285-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'ldap')
284+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
285+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'ldap')
286286
strategy:
287287
fail-fast: false
288288
matrix:
@@ -305,8 +305,8 @@ jobs:
305305

306306
Parquet:
307307
if: |
308-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
309-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'parquet')
308+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
309+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'parquet')
310310
uses: ./.github/workflows/regression-reusable-suite.yml
311311
with:
312312
ref: ${{ inputs.commit }}
@@ -325,8 +325,8 @@ jobs:
325325

326326
ParquetS3:
327327
if: |
328-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
329-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'parquet')
328+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
329+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'parquet')
330330
strategy:
331331
fail-fast: false
332332
matrix:
@@ -346,13 +346,13 @@ jobs:
346346
build_sha: ${{ inputs.build_sha }}
347347
set_commit_status: true
348348
job_name: parquet_${{ matrix.STORAGE }}
349-
regression_args: --storage ${{ matrix.STORAGE }} --aws-s3-bucket {{AWS_BUCKET}} --aws-s3-region {{AWS_REGION}} --aws-s3-key-id {{AWS_KEY_ID}} --aws-s3-access-key {{AWS_ACCESS_KEY}}
349+
regression_args: --storage ${{ matrix.STORAGE }} --aws-s3-bucket {{AWS_BUCKET}} --aws-s3-region {{AWS_REGION}} --aws-s3-key-id {{AWS_KEY_ID}} --aws-s3-access-key {{AWS_ACCESS_KEY}} --only "/parquet/${{ matrix.STORAGE }}/*"
350350
secrets: inherit
351351

352352
RBAC:
353353
if: |
354-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
355-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'rbac')
354+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
355+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'rbac')
356356
strategy:
357357
fail-fast: false
358358
matrix:
@@ -376,8 +376,8 @@ jobs:
376376
secrets: inherit
377377
SSLServer:
378378
if: |
379-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
380-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'ssl_server')
379+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
380+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'ssl_server')
381381
strategy:
382382
fail-fast: false
383383
matrix:
@@ -402,8 +402,8 @@ jobs:
402402

403403
S3:
404404
if: |
405-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
406-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 's3')
405+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
406+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 's3')
407407
strategy:
408408
fail-fast: false
409409
matrix:
@@ -434,8 +434,8 @@ jobs:
434434

435435
S3Export:
436436
if: |
437-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
438-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 's3')
437+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
438+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 's3')
439439
strategy:
440440
fail-fast: false
441441
matrix:
@@ -462,8 +462,8 @@ jobs:
462462

463463
TieredStorage:
464464
if: |
465-
fromJson(inputs.workflow_config).custom_data.ci_regression_jobs[0] == null ||
466-
contains(fromJson(inputs.workflow_config).custom_data.ci_regression_jobs, 'tiered_storage')
465+
fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null ||
466+
contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'tiered_storage')
467467
strategy:
468468
fail-fast: false
469469
matrix:

ci/jobs/scripts/find_tests.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,12 @@ class Targeting:
5454
def __init__(self, info: Info, branch: str = ""):
5555
self.info = info
5656
self.branch = branch or getattr(info, 'base_branch', '')
57-
self.cidb = CIDBCluster()
57+
# NOTE (strtgbb): Read credentials from env directly to avoid
58+
# a mutation bug in CIDBCluster's secret resolution path.
59+
url = os.environ.get(Settings.SECRET_CI_DB_URL, "")
60+
user = os.environ.get(Settings.SECRET_CI_DB_USER, "")
61+
pwd = os.environ.get(Settings.SECRET_CI_DB_PASSWORD, "")
62+
self.cidb = CIDBCluster(url=url, user=user, pwd=pwd)
5863
if "stateless" in info.job_name.lower():
5964
self.job_type = self.STATELESS_JOB_TYPE
6065
elif "integration" in info.job_name.lower():

ci/jobs/scripts/functional_tests/export_coverage.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,12 @@ def do(self):
6262

6363
if not self.to_file:
6464
query = (
65-
f"INSERT INTO FUNCTION remoteSecure('{self.dest.url.removeprefix('https://')}', '{Settings.CI_DB_DB_NAME}.checks_coverage_inverted', '{self.dest.user}', '{self.dest.pwd}') "
65+
f"INSERT INTO FUNCTION remoteSecure('{self.dest.url.removeprefix('https://').split(':')[0]}', '{Settings.CI_DB_DB_NAME}.checks_coverage_inverted', '{self.dest.user}', '{self.dest.pwd}') "
66+
"(branch, symbol, check_start_time, check_name, test_name) "
6667
"SELECT DISTINCT "
68+
f"'{self.branch}' AS branch, "
6769
"arrayJoin(symbol) AS symbol, "
6870
f"'{self.check_start_time}' AS check_start_time, "
69-
f"'{self.branch}' AS branch, "
7071
f"'{self.job_name}' AS check_name, "
7172
"test_name "
7273
f"FROM system.{table}"

ci/praktika/yaml_additional_templates.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class AltinityWorkflowTemplates:
3535
echo "Workflow Run Report: [View Report]($REPORT_LINK)" >> $GITHUB_STEP_SUMMARY
3636
"""
3737
# Additional jobs
38-
REGRESSION_HASH = "c5cae9b244e0839fb307a9fb67a40fe80d93810b"
38+
REGRESSION_HASH = "a54216bbc29eb458e25011a68bacc77f4ae73c19"
3939
ALTINITY_JOBS = {
4040
"GrypeScan": r"""
4141
GrypeScanServer:
@@ -63,7 +63,7 @@ class AltinityWorkflowTemplates:
6363
"Regression": r"""
6464
RegressionTestsRelease:
6565
needs: [config_workflow, build_amd_binary]
66-
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression')}}
66+
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression')}}
6767
uses: ./.github/workflows/regression.yml
6868
secrets: inherit
6969
with:
@@ -72,10 +72,10 @@ class AltinityWorkflowTemplates:
7272
arch: release
7373
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
7474
timeout_minutes: 210
75-
workflow_config: ${{ needs.config_workflow.outputs.data.workflow_config }}
75+
workflow_config: ${{ needs.config_workflow.outputs.data }}
7676
RegressionTestsAarch64:
7777
needs: [config_workflow, build_arm_binary]
78-
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}}
78+
if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}}
7979
uses: ./.github/workflows/regression.yml
8080
secrets: inherit
8181
with:
@@ -84,7 +84,7 @@ class AltinityWorkflowTemplates:
8484
arch: aarch64
8585
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
8686
timeout_minutes: 210
87-
workflow_config: ${{ needs.config_workflow.outputs.data.workflow_config }}
87+
workflow_config: ${{ needs.config_workflow.outputs.data }}
8888
""",
8989
"SignRelease": r"""
9090
SignRelease:

ci/workflows/pull_request.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
name="PR",
3838
event=Workflow.Event.PULL_REQUEST,
3939
base_branches=[BASE_BRANCH, "releases/*", "antalya-*"],
40+
if_condition="github.repository == github.event.pull_request.head.repo.full_name",
4041
jobs=[
4142
# JobConfigs.style_check, # NOTE (strtgbb): we don't run style check
4243
# JobConfigs.docs_job, # NOTE (strtgbb): we don't build docs

programs/keeper/dashboard.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33

44
<head>
55
<meta charset="UTF-8">
6-
<link rel="icon"
7-
href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1NCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDkgOCI+PHN0eWxlPi5ve2ZpbGw6I2ZjMH0ucntmaWxsOnJlZH08L3N0eWxlPjxwYXRoIGQ9Ik0wLDcgaDEgdjEgaC0xIHoiIGNsYXNzPSJyIi8+PHBhdGggZD0iTTAsMCBoMSB2NyBoLTEgeiIgY2xhc3M9Im8iLz48cGF0aCBkPSJNMiwwIGgxIHY4IGgtMSB6IiBjbGFzcz0ibyIvPjxwYXRoIGQ9Ik00LDAgaDEgdjggaC0xIHoiIGNsYXNzPSJvIi8+PHBhdGggZD0iTTYsMCBoMSB2OCBoLTEgeiIgY2xhc3M9Im8iLz48cGF0aCBkPSJNOCwzLjI1IGgxIHYxLjUgaC0xIHoiIGNsYXNzPSJvIi8+PC9zdmc+">
6+
<link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTUwIDE1MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTkgNzIgODItNDhMNzUgOSAxOSA0MnptNSAzIDIzIDE0VjYyem00OSAzNEwxOSA3OHY2MnptMjgtNTIgMjktMTctMjQtMTMtMjggMTd6bTMgN3Y2MGwyOCAxNlY4MHptMi00IDI2IDE1VjQ1eiIgZmlsbD0iIzE5OURDRiIvPjwvc3ZnPg==">
87
<title>ClickHouse Keeper</title>
98

109
<!-- Code Style:

0 commit comments

Comments
 (0)