mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-29 19:12:03 +00:00
Merge branch 'master' into add_log_clear_detached_tables
This commit is contained in:
commit
a29777a2d2
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
6
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -6,6 +6,7 @@ tests/ci/cancel_and_rerun_workflow_lambda/app.py
|
|||||||
-->
|
-->
|
||||||
### Changelog category (leave one):
|
### Changelog category (leave one):
|
||||||
- New Feature
|
- New Feature
|
||||||
|
- Experimental Feature
|
||||||
- Improvement
|
- Improvement
|
||||||
- Performance Improvement
|
- Performance Improvement
|
||||||
- Backward Incompatible Change
|
- Backward Incompatible Change
|
||||||
@ -48,9 +49,7 @@ At a minimum, the following information should be added (but add more as needed)
|
|||||||
- [ ] <!---ci_include_stateful--> Allow: Stateful tests
|
- [ ] <!---ci_include_stateful--> Allow: Stateful tests
|
||||||
- [ ] <!---ci_include_integration--> Allow: Integration Tests
|
- [ ] <!---ci_include_integration--> Allow: Integration Tests
|
||||||
- [ ] <!---ci_include_performance--> Allow: Performance tests
|
- [ ] <!---ci_include_performance--> Allow: Performance tests
|
||||||
- [ ] <!---ci_set_normal_builds--> Allow: Normal Builds
|
- [ ] <!---ci_set_builds--> Allow: All Builds
|
||||||
- [ ] <!---ci_set_special_builds--> Allow: Special Builds
|
|
||||||
- [ ] <!---ci_set_non_required--> Allow: All NOT Required Checks
|
|
||||||
- [ ] <!---batch_0_1--> Allow: batch 1, 2 for multi-batch jobs
|
- [ ] <!---batch_0_1--> Allow: batch 1, 2 for multi-batch jobs
|
||||||
- [ ] <!---batch_2_3--> Allow: batch 3, 4, 5, 6 for multi-batch jobs
|
- [ ] <!---batch_2_3--> Allow: batch 3, 4, 5, 6 for multi-batch jobs
|
||||||
---
|
---
|
||||||
@ -61,6 +60,7 @@ At a minimum, the following information should be added (but add more as needed)
|
|||||||
- [ ] <!---ci_exclude_aarch64|release|debug--> Exclude: All with aarch64, release, debug
|
- [ ] <!---ci_exclude_aarch64|release|debug--> Exclude: All with aarch64, release, debug
|
||||||
---
|
---
|
||||||
- [ ] <!---do_not_test--> Do not test
|
- [ ] <!---do_not_test--> Do not test
|
||||||
|
- [ ] <!---woolen_wolfdog--> Woolen Wolfdog
|
||||||
- [ ] <!---upload_all--> Upload binaries for special builds
|
- [ ] <!---upload_all--> Upload binaries for special builds
|
||||||
- [ ] <!---no_merge_commit--> Disable merge-commit
|
- [ ] <!---no_merge_commit--> Disable merge-commit
|
||||||
- [ ] <!---no_ci_cache--> Disable CI cache
|
- [ ] <!---no_ci_cache--> Disable CI cache
|
||||||
|
51
.github/workflows/backport_branches.yml
vendored
51
.github/workflows/backport_branches.yml
vendored
@ -70,7 +70,7 @@ jobs:
|
|||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: Compatibility check (amd64)
|
test_name: Compatibility check (release)
|
||||||
runner_type: style-checker
|
runner_type: style-checker
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
CompatibilityCheckAarch64:
|
CompatibilityCheckAarch64:
|
||||||
@ -159,33 +159,18 @@ jobs:
|
|||||||
############################################################################################
|
############################################################################################
|
||||||
##################################### BUILD REPORTER #######################################
|
##################################### BUILD REPORTER #######################################
|
||||||
############################################################################################
|
############################################################################################
|
||||||
BuilderReport:
|
Builds_Report:
|
||||||
# run report check for failed builds to indicate the CI error
|
# run report check for failed builds to indicate the CI error
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() && needs.RunConfig.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'Builds') }}
|
||||||
needs:
|
needs: [RunConfig, BuilderDebAarch64, BuilderDebAsan, BuilderDebDebug, BuilderDebRelease, BuilderDebTsan, BuilderBinDarwin, BuilderBinDarwinAarch64]
|
||||||
- RunConfig
|
runs-on: [self-hosted, style-checker-aarch64]
|
||||||
- BuilderDebAarch64
|
steps:
|
||||||
- BuilderDebAsan
|
- name: Check out repository code
|
||||||
- BuilderDebDebug
|
uses: ClickHouse/checkout@v1
|
||||||
- BuilderDebRelease
|
- name: Builds report
|
||||||
- BuilderDebTsan
|
run: |
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
with:
|
python3 ./build_report_check.py --reports package_release package_aarch64 package_asan package_tsan package_debug binary_darwin binary_darwin_aarch64
|
||||||
test_name: ClickHouse build check
|
|
||||||
runner_type: style-checker-aarch64
|
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
|
||||||
BuilderSpecialReport:
|
|
||||||
# run report check for failed builds to indicate the CI error
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
needs:
|
|
||||||
- RunConfig
|
|
||||||
- BuilderBinDarwin
|
|
||||||
- BuilderBinDarwinAarch64
|
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
|
||||||
with:
|
|
||||||
test_name: ClickHouse special build check
|
|
||||||
runner_type: style-checker-aarch64
|
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
|
||||||
############################################################################################
|
############################################################################################
|
||||||
#################################### INSTALL PACKAGES ######################################
|
#################################### INSTALL PACKAGES ######################################
|
||||||
############################################################################################
|
############################################################################################
|
||||||
@ -194,7 +179,7 @@ jobs:
|
|||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: Install packages (amd64)
|
test_name: Install packages (release)
|
||||||
runner_type: style-checker
|
runner_type: style-checker
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
run_command: |
|
run_command: |
|
||||||
@ -204,7 +189,7 @@ jobs:
|
|||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: Install packages (arm64)
|
test_name: Install packages (aarch64)
|
||||||
runner_type: style-checker-aarch64
|
runner_type: style-checker-aarch64
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
run_command: |
|
run_command: |
|
||||||
@ -256,8 +241,7 @@ jobs:
|
|||||||
FinishCheck:
|
FinishCheck:
|
||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
needs:
|
needs:
|
||||||
- BuilderReport
|
- Builds_Report
|
||||||
- BuilderSpecialReport
|
|
||||||
- FunctionalStatelessTestAsan
|
- FunctionalStatelessTestAsan
|
||||||
- FunctionalStatefulTestDebug
|
- FunctionalStatefulTestDebug
|
||||||
- StressTestTsan
|
- StressTestTsan
|
||||||
@ -273,5 +257,8 @@ jobs:
|
|||||||
- name: Finish label
|
- name: Finish label
|
||||||
run: |
|
run: |
|
||||||
cd "$GITHUB_WORKSPACE/tests/ci"
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
python3 finish_check.py
|
# update mergeable check
|
||||||
|
python3 merge_pr.py --set-ci-status --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
|
# update overall ci report
|
||||||
|
python3 finish_check.py --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
python3 merge_pr.py
|
python3 merge_pr.py
|
||||||
|
26
.github/workflows/master.yml
vendored
26
.github/workflows/master.yml
vendored
@ -104,10 +104,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
stage: Tests_2
|
stage: Tests_2
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
# stage for jobs that do not prohibit merge
|
|
||||||
Tests_3:
|
Tests_3:
|
||||||
# Test_3 should not wait for Test_1/Test_2 and should not be blocked by them on master branch since all jobs need to run there.
|
# Test_3 should not wait for Test_1/Test_2 and should not be blocked by them on master branch since all jobs need to run there.
|
||||||
needs: [RunConfig, Builds_1, Builds_2]
|
needs: [RunConfig, Builds_1]
|
||||||
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).stages_data.stages_to_do, 'Tests_3') }}
|
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).stages_data.stages_to_do, 'Tests_3') }}
|
||||||
uses: ./.github/workflows/reusable_test_stage.yml
|
uses: ./.github/workflows/reusable_test_stage.yml
|
||||||
with:
|
with:
|
||||||
@ -115,23 +114,14 @@ jobs:
|
|||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
|
|
||||||
################################# Reports #################################
|
################################# Reports #################################
|
||||||
# Reports should be run even if Builds_1/2 failed - put them separately in wf (not in Tests_1/2)
|
# Reports should run even if Builds_1/2 fail - run them separately, not in Tests_1/2/3
|
||||||
Builds_1_Report:
|
Builds_Report:
|
||||||
# run report check for failed builds to indicate the CI error
|
# run report check for failed builds to indicate the CI error
|
||||||
if: ${{ !cancelled() && needs.RunConfig.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'ClickHouse build check') }}
|
if: ${{ !cancelled() && needs.RunConfig.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'Builds') }}
|
||||||
needs: [RunConfig, Builds_1]
|
needs: [RunConfig, Builds_1, Builds_2]
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: ClickHouse build check
|
test_name: Builds
|
||||||
runner_type: style-checker-aarch64
|
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
|
||||||
Builds_2_Report:
|
|
||||||
# run report check for failed builds to indicate the CI error
|
|
||||||
if: ${{ !cancelled() && needs.RunConfig.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'ClickHouse special build check') }}
|
|
||||||
needs: [RunConfig, Builds_2]
|
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
|
||||||
with:
|
|
||||||
test_name: ClickHouse special build check
|
|
||||||
runner_type: style-checker-aarch64
|
runner_type: style-checker-aarch64
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
|
|
||||||
@ -165,7 +155,7 @@ jobs:
|
|||||||
|
|
||||||
FinishCheck:
|
FinishCheck:
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
needs: [RunConfig, Builds_1, Builds_2, Builds_1_Report, Builds_2_Report, Tests_1, Tests_2, Tests_3]
|
needs: [RunConfig, Builds_1, Builds_2, Builds_Report, Tests_1, Tests_2, Tests_3]
|
||||||
runs-on: [self-hosted, style-checker-aarch64]
|
runs-on: [self-hosted, style-checker-aarch64]
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
@ -173,4 +163,4 @@ jobs:
|
|||||||
- name: Finish label
|
- name: Finish label
|
||||||
run: |
|
run: |
|
||||||
cd "$GITHUB_WORKSPACE/tests/ci"
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
python3 finish_check.py
|
python3 finish_check.py --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
|
15
.github/workflows/merge_queue.yml
vendored
15
.github/workflows/merge_queue.yml
vendored
@ -96,20 +96,15 @@ jobs:
|
|||||||
stage: Tests_1
|
stage: Tests_1
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
|
|
||||||
################################# Stage Final #################################
|
CheckReadyForMerge:
|
||||||
#
|
if: ${{ !cancelled() && needs.StyleCheck.result == 'success' }}
|
||||||
FinishCheck:
|
# Test_2 or Test_3 must not have jobs required for Mergeable check
|
||||||
if: ${{ !failure() && !cancelled() }}
|
|
||||||
needs: [RunConfig, BuildDockers, StyleCheck, FastTest, Builds_1, Tests_1]
|
needs: [RunConfig, BuildDockers, StyleCheck, FastTest, Builds_1, Tests_1]
|
||||||
runs-on: [self-hosted, style-checker-aarch64]
|
runs-on: [self-hosted, style-checker-aarch64]
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
uses: ClickHouse/checkout@v1
|
uses: ClickHouse/checkout@v1
|
||||||
- name: Check sync status
|
- name: Check and set merge status
|
||||||
run: |
|
run: |
|
||||||
cd "$GITHUB_WORKSPACE/tests/ci"
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
python3 sync_pr.py --status
|
python3 merge_pr.py --set-ci-status --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
- name: Finish label
|
|
||||||
run: |
|
|
||||||
cd "$GITHUB_WORKSPACE/tests/ci"
|
|
||||||
python3 finish_check.py ${{ (contains(needs.*.result, 'failure') && github.event_name == 'merge_group') && '--pipeline-failure' || '' }}
|
|
||||||
|
35
.github/workflows/pull_request.yml
vendored
35
.github/workflows/pull_request.yml
vendored
@ -126,16 +126,16 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
stage: Builds_2
|
stage: Builds_2
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
|
# stage for running non-required checks without being blocked by required checks (Test_1) if corresponding settings is selected
|
||||||
Tests_2:
|
Tests_2:
|
||||||
needs: [RunConfig, Builds_2]
|
needs: [RunConfig, Builds_1]
|
||||||
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).stages_data.stages_to_do, 'Tests_2') }}
|
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).stages_data.stages_to_do, 'Tests_2') }}
|
||||||
uses: ./.github/workflows/reusable_test_stage.yml
|
uses: ./.github/workflows/reusable_test_stage.yml
|
||||||
with:
|
with:
|
||||||
stage: Tests_2
|
stage: Tests_2
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
# stage for jobs that do not prohibit merge
|
|
||||||
Tests_3:
|
Tests_3:
|
||||||
needs: [RunConfig, Builds_1, Tests_1, Builds_2, Tests_2]
|
needs: [RunConfig, Builds_1, Tests_1]
|
||||||
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).stages_data.stages_to_do, 'Tests_3') }}
|
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).stages_data.stages_to_do, 'Tests_3') }}
|
||||||
uses: ./.github/workflows/reusable_test_stage.yml
|
uses: ./.github/workflows/reusable_test_stage.yml
|
||||||
with:
|
with:
|
||||||
@ -143,29 +143,21 @@ jobs:
|
|||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
|
|
||||||
################################# Reports #################################
|
################################# Reports #################################
|
||||||
# Reports should by run even if Builds_1/2 fail, so put them separately in wf (not in Tests_1/2)
|
# Reports should run even if Builds_1/2 fail - run them separately (not in Tests_1/2/3)
|
||||||
Builds_1_Report:
|
Builds_Report:
|
||||||
# run report check for failed builds to indicate the CI error
|
# run report check for failed builds to indicate the CI error
|
||||||
if: ${{ !cancelled() && needs.StyleCheck.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'ClickHouse build check') }}
|
if: ${{ !cancelled() && needs.RunConfig.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'Builds') }}
|
||||||
needs: [RunConfig, StyleCheck, Builds_1]
|
needs: [RunConfig, StyleCheck, Builds_1, Builds_2]
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: ClickHouse build check
|
test_name: Builds
|
||||||
runner_type: style-checker-aarch64
|
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
|
||||||
Builds_2_Report:
|
|
||||||
# run report check for failed builds to indicate the CI error
|
|
||||||
if: ${{ !cancelled() && needs.StyleCheck.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'ClickHouse special build check') }}
|
|
||||||
needs: [RunConfig, StyleCheck, Builds_2]
|
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
|
||||||
with:
|
|
||||||
test_name: ClickHouse special build check
|
|
||||||
runner_type: style-checker-aarch64
|
runner_type: style-checker-aarch64
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
|
|
||||||
CheckReadyForMerge:
|
CheckReadyForMerge:
|
||||||
if: ${{ !cancelled() && needs.StyleCheck.result == 'success' }}
|
if: ${{ !cancelled() && needs.StyleCheck.result == 'success' }}
|
||||||
needs: [RunConfig, BuildDockers, StyleCheck, FastTest, Builds_1, Builds_2, Builds_1_Report, Builds_2_Report, Tests_1, Tests_2]
|
# Test_2 or Test_3 must not have jobs required for Mergeable check
|
||||||
|
needs: [RunConfig, BuildDockers, StyleCheck, FastTest, Builds_1, Builds_2, Builds_Report, Tests_1]
|
||||||
runs-on: [self-hosted, style-checker-aarch64]
|
runs-on: [self-hosted, style-checker-aarch64]
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
@ -181,7 +173,7 @@ jobs:
|
|||||||
#
|
#
|
||||||
FinishCheck:
|
FinishCheck:
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
needs: [RunConfig, BuildDockers, StyleCheck, FastTest, Builds_1, Builds_2, Builds_1_Report, Builds_2_Report, Tests_1, Tests_2, Tests_3]
|
needs: [RunConfig, BuildDockers, StyleCheck, FastTest, Builds_1, Builds_2, Builds_Report, Tests_1, Tests_2, Tests_3]
|
||||||
runs-on: [self-hosted, style-checker-aarch64]
|
runs-on: [self-hosted, style-checker-aarch64]
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
@ -191,7 +183,7 @@ jobs:
|
|||||||
- name: Finish label
|
- name: Finish label
|
||||||
run: |
|
run: |
|
||||||
cd "$GITHUB_WORKSPACE/tests/ci"
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
python3 finish_check.py
|
python3 finish_check.py --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
|
|
||||||
#############################################################################################
|
#############################################################################################
|
||||||
###################################### JEPSEN TESTS #########################################
|
###################################### JEPSEN TESTS #########################################
|
||||||
@ -204,8 +196,7 @@ jobs:
|
|||||||
concurrency:
|
concurrency:
|
||||||
group: jepsen
|
group: jepsen
|
||||||
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'ClickHouse Keeper Jepsen') }}
|
if: ${{ !failure() && !cancelled() && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'ClickHouse Keeper Jepsen') }}
|
||||||
# jepsen needs binary_release build which is in Builds_2
|
needs: [RunConfig, Builds_1]
|
||||||
needs: [RunConfig, Builds_2]
|
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: ClickHouse Keeper Jepsen
|
test_name: ClickHouse Keeper Jepsen
|
||||||
|
53
.github/workflows/release_branches.yml
vendored
53
.github/workflows/release_branches.yml
vendored
@ -65,7 +65,7 @@ jobs:
|
|||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: Compatibility check (amd64)
|
test_name: Compatibility check (release)
|
||||||
runner_type: style-checker
|
runner_type: style-checker
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
CompatibilityCheckAarch64:
|
CompatibilityCheckAarch64:
|
||||||
@ -176,35 +176,18 @@ jobs:
|
|||||||
############################################################################################
|
############################################################################################
|
||||||
##################################### BUILD REPORTER #######################################
|
##################################### BUILD REPORTER #######################################
|
||||||
############################################################################################
|
############################################################################################
|
||||||
BuilderReport:
|
Builds_Report:
|
||||||
# run report check for failed builds to indicate the CI error
|
# run report check for failed builds to indicate the CI error
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() && needs.RunConfig.result == 'success' && contains(fromJson(needs.RunConfig.outputs.data).jobs_data.jobs_to_do, 'Builds') }}
|
||||||
needs:
|
needs: [RunConfig, BuilderDebRelease, BuilderDebAarch64, BuilderDebAsan, BuilderDebUBsan, BuilderDebMsan, BuilderDebTsan, BuilderDebDebug, BuilderBinDarwin, BuilderBinDarwinAarch64]
|
||||||
- RunConfig
|
runs-on: [self-hosted, style-checker-aarch64]
|
||||||
- BuilderDebRelease
|
steps:
|
||||||
- BuilderDebAarch64
|
- name: Check out repository code
|
||||||
- BuilderDebAsan
|
uses: ClickHouse/checkout@v1
|
||||||
- BuilderDebTsan
|
- name: Builds report
|
||||||
- BuilderDebUBsan
|
run: |
|
||||||
- BuilderDebMsan
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
- BuilderDebDebug
|
python3 ./build_report_check.py --reports package_release package_aarch64 package_asan package_msan package_ubsan package_tsan package_debug binary_darwin binary_darwin_aarch64
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
|
||||||
with:
|
|
||||||
test_name: ClickHouse build check
|
|
||||||
runner_type: style-checker-aarch64
|
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
|
||||||
BuilderSpecialReport:
|
|
||||||
# run report check for failed builds to indicate the CI error
|
|
||||||
if: ${{ !cancelled() }}
|
|
||||||
needs:
|
|
||||||
- RunConfig
|
|
||||||
- BuilderBinDarwin
|
|
||||||
- BuilderBinDarwinAarch64
|
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
|
||||||
with:
|
|
||||||
test_name: ClickHouse special build check
|
|
||||||
runner_type: style-checker-aarch64
|
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
|
||||||
MarkReleaseReady:
|
MarkReleaseReady:
|
||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
needs:
|
needs:
|
||||||
@ -244,7 +227,7 @@ jobs:
|
|||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: Install packages (amd64)
|
test_name: Install packages (release)
|
||||||
runner_type: style-checker
|
runner_type: style-checker
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
run_command: |
|
run_command: |
|
||||||
@ -254,7 +237,7 @@ jobs:
|
|||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
uses: ./.github/workflows/reusable_test.yml
|
uses: ./.github/workflows/reusable_test.yml
|
||||||
with:
|
with:
|
||||||
test_name: Install packages (arm64)
|
test_name: Install packages (aarch64)
|
||||||
runner_type: style-checker-aarch64
|
runner_type: style-checker-aarch64
|
||||||
data: ${{ needs.RunConfig.outputs.data }}
|
data: ${{ needs.RunConfig.outputs.data }}
|
||||||
run_command: |
|
run_command: |
|
||||||
@ -460,8 +443,7 @@ jobs:
|
|||||||
needs:
|
needs:
|
||||||
- DockerServerImage
|
- DockerServerImage
|
||||||
- DockerKeeperImage
|
- DockerKeeperImage
|
||||||
- BuilderReport
|
- Builds_Report
|
||||||
- BuilderSpecialReport
|
|
||||||
- MarkReleaseReady
|
- MarkReleaseReady
|
||||||
- FunctionalStatelessTestDebug
|
- FunctionalStatelessTestDebug
|
||||||
- FunctionalStatelessTestRelease
|
- FunctionalStatelessTestRelease
|
||||||
@ -496,4 +478,7 @@ jobs:
|
|||||||
- name: Finish label
|
- name: Finish label
|
||||||
run: |
|
run: |
|
||||||
cd "$GITHUB_WORKSPACE/tests/ci"
|
cd "$GITHUB_WORKSPACE/tests/ci"
|
||||||
python3 finish_check.py
|
# update mergeable check
|
||||||
|
python3 merge_pr.py --set-ci-status --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
|
# update overall ci report
|
||||||
|
python3 finish_check.py --wf-status ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
|
||||||
|
5
.github/workflows/tags_stable.yml
vendored
5
.github/workflows/tags_stable.yml
vendored
@ -46,9 +46,10 @@ jobs:
|
|||||||
./utils/list-versions/list-versions.sh > ./utils/list-versions/version_date.tsv
|
./utils/list-versions/list-versions.sh > ./utils/list-versions/version_date.tsv
|
||||||
./utils/list-versions/update-docker-version.sh
|
./utils/list-versions/update-docker-version.sh
|
||||||
GID=$(id -g "${UID}")
|
GID=$(id -g "${UID}")
|
||||||
docker run -u "${UID}:${GID}" -e PYTHONUNBUFFERED=1 \
|
# --network=host and CI=1 are required for the S3 access from a container
|
||||||
|
docker run -u "${UID}:${GID}" -e PYTHONUNBUFFERED=1 -e CI=1 --network=host \
|
||||||
--volume="${GITHUB_WORKSPACE}:/ClickHouse" clickhouse/style-test \
|
--volume="${GITHUB_WORKSPACE}:/ClickHouse" clickhouse/style-test \
|
||||||
/ClickHouse/utils/changelog/changelog.py -v --debug-helpers \
|
/ClickHouse/tests/ci/changelog.py -v --debug-helpers \
|
||||||
--gh-user-or-token="$GITHUB_TOKEN" --jobs=5 \
|
--gh-user-or-token="$GITHUB_TOKEN" --jobs=5 \
|
||||||
--output="/ClickHouse/docs/changelogs/${GITHUB_TAG}.md" "${GITHUB_TAG}"
|
--output="/ClickHouse/docs/changelogs/${GITHUB_TAG}.md" "${GITHUB_TAG}"
|
||||||
git add "./docs/changelogs/${GITHUB_TAG}.md"
|
git add "./docs/changelogs/${GITHUB_TAG}.md"
|
||||||
|
8
.gitmodules
vendored
8
.gitmodules
vendored
@ -91,13 +91,13 @@
|
|||||||
[submodule "contrib/aws"]
|
[submodule "contrib/aws"]
|
||||||
path = contrib/aws
|
path = contrib/aws
|
||||||
url = https://github.com/ClickHouse/aws-sdk-cpp
|
url = https://github.com/ClickHouse/aws-sdk-cpp
|
||||||
[submodule "aws-c-event-stream"]
|
[submodule "contrib/aws-c-event-stream"]
|
||||||
path = contrib/aws-c-event-stream
|
path = contrib/aws-c-event-stream
|
||||||
url = https://github.com/awslabs/aws-c-event-stream
|
url = https://github.com/awslabs/aws-c-event-stream
|
||||||
[submodule "aws-c-common"]
|
[submodule "contrib/aws-c-common"]
|
||||||
path = contrib/aws-c-common
|
path = contrib/aws-c-common
|
||||||
url = https://github.com/awslabs/aws-c-common.git
|
url = https://github.com/awslabs/aws-c-common.git
|
||||||
[submodule "aws-checksums"]
|
[submodule "contrib/aws-checksums"]
|
||||||
path = contrib/aws-checksums
|
path = contrib/aws-checksums
|
||||||
url = https://github.com/awslabs/aws-checksums
|
url = https://github.com/awslabs/aws-checksums
|
||||||
[submodule "contrib/curl"]
|
[submodule "contrib/curl"]
|
||||||
@ -161,7 +161,7 @@
|
|||||||
[submodule "contrib/xz"]
|
[submodule "contrib/xz"]
|
||||||
path = contrib/xz
|
path = contrib/xz
|
||||||
url = https://github.com/xz-mirror/xz
|
url = https://github.com/xz-mirror/xz
|
||||||
[submodule "abseil"]
|
[submodule "contrib/abseil-cpp"]
|
||||||
path = contrib/abseil-cpp
|
path = contrib/abseil-cpp
|
||||||
url = https://github.com/ClickHouse/abseil-cpp.git
|
url = https://github.com/ClickHouse/abseil-cpp.git
|
||||||
[submodule "contrib/dragonbox"]
|
[submodule "contrib/dragonbox"]
|
||||||
|
174
CHANGELOG.md
174
CHANGELOG.md
@ -1,4 +1,5 @@
|
|||||||
### Table of Contents
|
### Table of Contents
|
||||||
|
**[ClickHouse release v24.6, 2024-06-27](#246)**<br/>
|
||||||
**[ClickHouse release v24.5, 2024-05-30](#245)**<br/>
|
**[ClickHouse release v24.5, 2024-05-30](#245)**<br/>
|
||||||
**[ClickHouse release v24.4, 2024-04-30](#244)**<br/>
|
**[ClickHouse release v24.4, 2024-04-30](#244)**<br/>
|
||||||
**[ClickHouse release v24.3 LTS, 2024-03-26](#243)**<br/>
|
**[ClickHouse release v24.3 LTS, 2024-03-26](#243)**<br/>
|
||||||
@ -8,6 +9,179 @@
|
|||||||
|
|
||||||
# 2024 Changelog
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### <a id="246"></a> ClickHouse release 24.6, 2024-06-27
|
||||||
|
|
||||||
|
#### Backward Incompatible Change
|
||||||
|
* Enable asynchronous load of databases and tables by default. See the `async_load_databases` in config.xml. While this change is fully compatible, it can introduce a difference in behavior. When `async_load_databases` is false, as in the previous versions, the server will not accept connections until all tables are loaded. When `async_load_databases` is true, as in the new version, the server can accept connections before all the tables are loaded. If a query is made to a table that is not yet loaded, it will wait for the table's loading, which can take considerable time. It can change the behavior of the server if it is part of a large distributed system under a load balancer. In the first case, the load balancer can get a connection refusal and quickly failover to another server. In the second case, the load balancer can connect to a server that is still loading the tables, and the query will have a higher latency. Moreover, if many queries accumulate in the waiting state, it can lead to a "thundering herd" problem when they start processing simultaneously. This can make a difference only for highly loaded distributed backends. You can set the value of `async_load_databases` to false to avoid this problem. [#57695](https://github.com/ClickHouse/ClickHouse/pull/57695) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Some invalid queries will fail earlier during parsing. Note: disabled the support for inline KQL expressions (the experimental Kusto language) when they are put into a `kql` table function without a string literal, e.g. `kql(garbage | trash)` instead of `kql('garbage | trash')` or `kql($$garbage | trash$$)`. This feature was introduced unintentionally and should not exist. [#61500](https://github.com/ClickHouse/ClickHouse/pull/61500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Rework parallel processing in `Ordered` mode of storage `S3Queue`. This PR is backward incompatible for Ordered mode if you used settings `s3queue_processing_threads_num` or `s3queue_total_shards_num`. Setting `s3queue_total_shards_num` is deleted, previously it was allowed to use only under `s3queue_allow_experimental_sharded_mode`, which is now deprecated. A new setting is added - `s3queue_buckets`. [#64349](https://github.com/ClickHouse/ClickHouse/pull/64349) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* New functions `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID`, and `dateTime64ToSnowflakeID` were added. Unlike the existing functions `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake`, and `dateTime64ToSnowflake`, the new functions are compatible with function `generateSnowflakeID`, i.e. they accept the snowflake IDs generated by `generateSnowflakeID` and produce snowflake IDs of the same type as `generateSnowflakeID` (i.e. `UInt64`). Furthermore, the new functions default to the UNIX epoch (aka. 1970-01-01), just like `generateSnowflakeID`. If necessary, a different epoch, e.g. Twitter's/X's epoch 2010-11-04 aka. 1288834974657 msec since UNIX epoch, can be passed. The old conversion functions are deprecated and will be removed after a transition period: to use them regardless, enable setting `allow_deprecated_snowflake_conversion_functions`. [#64948](https://github.com/ClickHouse/ClickHouse/pull/64948) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
|
||||||
|
#### New Feature
|
||||||
|
* Introduce statistics of type "number of distinct values". [#59357](https://github.com/ClickHouse/ClickHouse/pull/59357) ([Han Fei](https://github.com/hanfei1991)).
|
||||||
|
* Add Hilbert Curve encode and decode functions. [#60156](https://github.com/ClickHouse/ClickHouse/pull/60156) ([Artem Mustafin](https://github.com/Artemmm91)).
|
||||||
|
* Added support for reading LINESTRING geometry in WKT format using function `readWKTLineString`. [#62519](https://github.com/ClickHouse/ClickHouse/pull/62519) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
|
||||||
|
* Allow to attach parts from a different disk. [#63087](https://github.com/ClickHouse/ClickHouse/pull/63087) ([Unalian](https://github.com/Unalian)).
|
||||||
|
* Allow proxy to be bypassed for hosts specified in `no_proxy` env variable and ClickHouse proxy configuration. [#63314](https://github.com/ClickHouse/ClickHouse/pull/63314) ([Arthur Passos](https://github.com/arthurpassos)).
|
||||||
|
* Added a new table function `loop` to support returning query results in an infinite loop. [#63452](https://github.com/ClickHouse/ClickHouse/pull/63452) ([Sariel](https://github.com/sarielwxm)).
|
||||||
|
* Added new SQL functions `generateSnowflakeID` for generating Twitter-style Snowflake IDs. [#63577](https://github.com/ClickHouse/ClickHouse/pull/63577) ([Danila Puzov](https://github.com/kazalika)).
|
||||||
|
* Add the ability to reshuffle rows during insert to optimize for size without violating the order set by `PRIMARY KEY`. It's controlled by the setting `optimize_row_order` (off by default). [#63578](https://github.com/ClickHouse/ClickHouse/pull/63578) ([Igor Markelov](https://github.com/ElderlyPassionFruit)).
|
||||||
|
* Added `merge_workload` and `mutation_workload` settings to regulate how resources are utilized and shared between merges, mutations and other workloads. [#64061](https://github.com/ClickHouse/ClickHouse/pull/64061) ([Sergei Trifonov](https://github.com/serxa)).
|
||||||
|
* Add support for comparing IPv4 and IPv6 types using the `=` operator. [#64292](https://github.com/ClickHouse/ClickHouse/pull/64292) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
|
||||||
|
* Allow to store named collections in zookeeper. [#64574](https://github.com/ClickHouse/ClickHouse/pull/64574) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Support decimal arguments in binary math functions (pow, atan2, max2, min2, hypot). [#64582](https://github.com/ClickHouse/ClickHouse/pull/64582) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
|
||||||
|
* Add support for index analysis over `hilbertEncode`. [#64662](https://github.com/ClickHouse/ClickHouse/pull/64662) ([Artem Mustafin](https://github.com/Artemmm91)).
|
||||||
|
* Added SQL functions `parseReadableSize` (along with `OrNull` and `OrZero` variants). [#64742](https://github.com/ClickHouse/ClickHouse/pull/64742) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
|
||||||
|
* Add server settings `max_table_num_to_throw` and `max_database_num_to_throw` to limit the number of databases or tables on `CREATE` queries. [#64781](https://github.com/ClickHouse/ClickHouse/pull/64781) ([Xu Jia](https://github.com/XuJia0210)).
|
||||||
|
* Add _time virtual column to file alike storages (s3/file/hdfs/url/azureBlobStorage). [#64947](https://github.com/ClickHouse/ClickHouse/pull/64947) ([Ilya Golshtein](https://github.com/ilejn)).
|
||||||
|
* Introduced new functions `base64URLEncode`, `base64URLDecode` and `tryBase64URLDecode`. [#64991](https://github.com/ClickHouse/ClickHouse/pull/64991) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
|
||||||
|
* Add new function `editDistanceUTF8`, which calculates the [edit distance](https://en.wikipedia.org/wiki/Edit_distance) between two UTF8 strings. [#65269](https://github.com/ClickHouse/ClickHouse/pull/65269) ([LiuNeng](https://github.com/liuneng1994)).
|
||||||
|
|
||||||
|
#### Performance Improvement
|
||||||
|
* Add a native parquet reader, which can read parquet binary to ClickHouse Columns directly. It's controlled by the setting `input_format_parquet_use_native_reader` (disabled by default). [#60361](https://github.com/ClickHouse/ClickHouse/pull/60361) ([ZhiHong Zhang](https://github.com/copperybean)).
|
||||||
|
* Reduce the number of virtual function calls in ColumnNullable::size. [#60556](https://github.com/ClickHouse/ClickHouse/pull/60556) ([HappenLee](https://github.com/HappenLee)).
|
||||||
|
* Speedup `splitByRegexp` when the regular expression argument is a single-character. [#62696](https://github.com/ClickHouse/ClickHouse/pull/62696) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Speed up FixedHashTable by keeping track of the min and max keys used. This allows to reduce the number of cells that need to be verified. [#62746](https://github.com/ClickHouse/ClickHouse/pull/62746) ([Jiebin Sun](https://github.com/jiebinn)).
|
||||||
|
* Optimize the resolution of in(LowCardinality, ConstantSet). [#64060](https://github.com/ClickHouse/ClickHouse/pull/64060) ([Zhiguo Zhou](https://github.com/ZhiguoZh)).
|
||||||
|
* Use a thread pool to initialize and destroy hash tables inside `ConcurrentHashJoin`. [#64241](https://github.com/ClickHouse/ClickHouse/pull/64241) ([Nikita Taranov](https://github.com/nickitat)).
|
||||||
|
* Optimized vertical merges in tables with sparse columns. [#64311](https://github.com/ClickHouse/ClickHouse/pull/64311) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Enabled prefetches of data from remote filesystem during vertical merges. It improves latency of vertical merges in tables with data stored on remote filesystem. [#64314](https://github.com/ClickHouse/ClickHouse/pull/64314) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Reduce redundant calls to `isDefault()` of `ColumnSparse::filter` to improve performance. [#64426](https://github.com/ClickHouse/ClickHouse/pull/64426) ([Jiebin Sun](https://github.com/jiebinn)).
|
||||||
|
* Speedup `find_super_nodes` and `find_big_family` keeper-client commands by making multiple asynchronous getChildren requests. [#64628](https://github.com/ClickHouse/ClickHouse/pull/64628) ([Alexander Gololobov](https://github.com/davenger)).
|
||||||
|
* Improve function least/greatest for nullable numberic type arguments. [#64668](https://github.com/ClickHouse/ClickHouse/pull/64668) ([KevinyhZou](https://github.com/KevinyhZou)).
|
||||||
|
* Allow merging two consequent `FilterSteps` of a query plan. This improves filter-push-down optimization if the filter condition can be pushed down from the parent step. [#64760](https://github.com/ClickHouse/ClickHouse/pull/64760) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Remove bad optimization in vertical final implementation and re-enable vertical final algorithm by default. [#64783](https://github.com/ClickHouse/ClickHouse/pull/64783) ([Duc Canh Le](https://github.com/canhld94)).
|
||||||
|
* Remove ALIAS nodes from the filter expression. This slightly improves performance for queries with `PREWHERE` (with the new analyzer). [#64793](https://github.com/ClickHouse/ClickHouse/pull/64793) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix performance regression in cross join introduced in [#60459](https://github.com/ClickHouse/ClickHouse/issues/60459) (24.5). [#65243](https://github.com/ClickHouse/ClickHouse/pull/65243) ([Nikita Taranov](https://github.com/nickitat)).
|
||||||
|
|
||||||
|
#### Improvement
|
||||||
|
* Support empty tuples. [#55061](https://github.com/ClickHouse/ClickHouse/pull/55061) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Hot reload storage policy for distributed tables when adding a new disk. [#58285](https://github.com/ClickHouse/ClickHouse/pull/58285) ([Duc Canh Le](https://github.com/canhld94)).
|
||||||
|
* Avoid possible deadlock during MergeTree index analysis when scheduling threads in a saturated service. [#59427](https://github.com/ClickHouse/ClickHouse/pull/59427) ([Sean Haynes](https://github.com/seandhaynes)).
|
||||||
|
* Support partial trivial count optimization when the query filter is able to select exact ranges from merge tree tables. [#60463](https://github.com/ClickHouse/ClickHouse/pull/60463) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
* Reduce max memory usage of multithreaded `INSERT`s by collecting chunks of multiple threads in a single transform. [#61047](https://github.com/ClickHouse/ClickHouse/pull/61047) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
|
||||||
|
* Reduce the memory usage when using Azure object storage by using fixed memory allocation, avoiding the allocation of an extra buffer. [#63160](https://github.com/ClickHouse/ClickHouse/pull/63160) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
|
||||||
|
* Several minor corner case fixes to proxy support & tunneling. [#63427](https://github.com/ClickHouse/ClickHouse/pull/63427) ([Arthur Passos](https://github.com/arthurpassos)).
|
||||||
|
* Add `http_response_headers` setting to support custom response headers in custom HTTP handlers. [#63562](https://github.com/ClickHouse/ClickHouse/pull/63562) ([Grigorii](https://github.com/GSokol)).
|
||||||
|
* Improve io_uring resubmit visibility. Rename profile event `IOUringSQEsResubmits` -> `IOUringSQEsResubmitsAsync` and add a new one `IOUringSQEsResubmitsSync`. [#63699](https://github.com/ClickHouse/ClickHouse/pull/63699) ([Tomer Shafir](https://github.com/tomershafir)).
|
||||||
|
* Introduce assertions to verify all functions are called with columns of the right size. [#63723](https://github.com/ClickHouse/ClickHouse/pull/63723) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* `SHOW CREATE TABLE` executed on top of system tables will now show the super handy comment unique for each table which will explain why this table is needed. [#63788](https://github.com/ClickHouse/ClickHouse/pull/63788) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
|
||||||
|
* Added setting `metadata_storage_type` to keep free space on metadata storage disk. [#64128](https://github.com/ClickHouse/ClickHouse/pull/64128) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
|
||||||
|
* Add metrics to track the number of directories created and removed by the plain_rewritable metadata storage, and the number of entries in the local-to-remote in-memory map. [#64175](https://github.com/ClickHouse/ClickHouse/pull/64175) ([Julia Kartseva](https://github.com/jkartseva)).
|
||||||
|
* The query cache now considers identical queries with different settings as different. This increases robustness in cases where different settings (e.g. `limit` or `additional_table_filters`) would affect the query result. [#64205](https://github.com/ClickHouse/ClickHouse/pull/64205) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Better Exception Message in Delete Table with Projection, users can understand the error and the steps should be taken. [#64212](https://github.com/ClickHouse/ClickHouse/pull/64212) ([jsc0218](https://github.com/jsc0218)).
|
||||||
|
* Support the non standard error code `QpsLimitExceeded` in object storage as a retryable error. [#64225](https://github.com/ClickHouse/ClickHouse/pull/64225) ([Sema Checherinda](https://github.com/CheSema)).
|
||||||
|
* Forbid converting a MergeTree table to replicated if the zookeeper path for this table already exists. [#64244](https://github.com/ClickHouse/ClickHouse/pull/64244) ([Kirill](https://github.com/kirillgarbar)).
|
||||||
|
* If "replica group" is configured for a `Replicated` database, automatically create a cluster that includes replicas from all groups. [#64312](https://github.com/ClickHouse/ClickHouse/pull/64312) ([Alexander Tokmakov](https://github.com/tavplubix)).
|
||||||
|
* Added settings to disable materialization of skip indexes and statistics on inserts (`materialize_skip_indexes_on_insert` and `materialize_statistics_on_insert`). [#64391](https://github.com/ClickHouse/ClickHouse/pull/64391) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Use the allocated memory size to calculate the row group size and reduce the peak memory of the parquet writer in single-threaded mode. [#64424](https://github.com/ClickHouse/ClickHouse/pull/64424) ([LiuNeng](https://github.com/liuneng1994)).
|
||||||
|
* Added new configuration input_format_parquet_prefer_block_bytes to control the average output block bytes, and modified the default value of input_format_parquet_max_block_size to 65409. [#64427](https://github.com/ClickHouse/ClickHouse/pull/64427) ([LiuNeng](https://github.com/liuneng1994)).
|
||||||
|
* Always start Keeper with sufficient amount of threads in global thread pool. [#64444](https://github.com/ClickHouse/ClickHouse/pull/64444) ([Duc Canh Le](https://github.com/canhld94)).
|
||||||
|
* Settings from user config doesn't affect merges and mutations for MergeTree on top of object storage. [#64456](https://github.com/ClickHouse/ClickHouse/pull/64456) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Setting `replace_long_file_name_to_hash` is enabled by default for `MergeTree` tables. [#64457](https://github.com/ClickHouse/ClickHouse/pull/64457) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Improve the iterator of sparse column to reduce call of size(). [#64497](https://github.com/ClickHouse/ClickHouse/pull/64497) ([Jiebin Sun](https://github.com/jiebinn)).
|
||||||
|
* Update condition to use copy for azure blob storage. [#64518](https://github.com/ClickHouse/ClickHouse/pull/64518) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
|
||||||
|
* Support the non standard error code `TotalQpsLimitExceeded` in object storage as a retryable error. [#64520](https://github.com/ClickHouse/ClickHouse/pull/64520) ([Sema Checherinda](https://github.com/CheSema)).
|
||||||
|
* Optimized memory usage of vertical merges for tables with high number of skip indexes. [#64580](https://github.com/ClickHouse/ClickHouse/pull/64580) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Introduced two additional columns in the `system.query_log`: `used_privileges` and `missing_privileges`. `used_privileges` is populated with the privileges that were checked during query execution, and `missing_privileges` contains required privileges that are missing. [#64597](https://github.com/ClickHouse/ClickHouse/pull/64597) ([Alexey Katsman](https://github.com/alexkats)).
|
||||||
|
* Add settings `parallel_replicas_custom_key_range_lower` and `parallel_replicas_custom_key_range_upper` to control how parallel replicas with dynamic shards parallelizes queries when using a range filter. [#64604](https://github.com/ClickHouse/ClickHouse/pull/64604) ([josh-hildred](https://github.com/josh-hildred)).
|
||||||
|
* Updated Advanced Dashboard for both open-source and ClickHouse Cloud versions to include a chart for 'Maximum concurrent network connections'. [#64610](https://github.com/ClickHouse/ClickHouse/pull/64610) ([Thom O'Connor](https://github.com/thomoco)).
|
||||||
|
* The second argument (scale) of functions `round()`, `roundBankers()`, `floor()`, `ceil()` and `trunc()` can now be non-const. [#64798](https://github.com/ClickHouse/ClickHouse/pull/64798) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
|
||||||
|
* Improve progress report on zeros_mt and generateRandom. [#64804](https://github.com/ClickHouse/ClickHouse/pull/64804) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Add an asynchronous metric jemalloc.profile.active to show whether sampling is currently active. This is an activation mechanism in addition to prof.active; both must be active for the calling thread to sample. [#64842](https://github.com/ClickHouse/ClickHouse/pull/64842) ([Unalian](https://github.com/Unalian)).
|
||||||
|
* Support statistics with ReplicatedMergeTree. [#64934](https://github.com/ClickHouse/ClickHouse/pull/64934) ([Han Fei](https://github.com/hanfei1991)).
|
||||||
|
* Remove mark of `allow_experimental_join_condition` as important. This mark may have prevented distributed queries in a mixed versions cluster from being executed successfully. [#65008](https://github.com/ClickHouse/ClickHouse/pull/65008) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
|
||||||
|
* Added server Asynchronous metrics `DiskGetObjectThrottler*` and `DiskGetObjectThrottler*` reflecting request per second rate limit defined with `s3_max_get_rps` and `s3_max_put_rps` disk settings and currently available number of requests that could be sent without hitting throttling limit on the disk. Metrics are defined for every disk that has a configured limit. [#65050](https://github.com/ClickHouse/ClickHouse/pull/65050) ([Sergei Trifonov](https://github.com/serxa)).
|
||||||
|
* Added a setting `output_format_pretty_display_footer_column_names` which when enabled displays column names at the end of the table for long tables (50 rows by default), with the threshold value for minimum number of rows controlled by `output_format_pretty_display_footer_column_names_min_rows`. [#65144](https://github.com/ClickHouse/ClickHouse/pull/65144) ([Shaun Struwig](https://github.com/Blargian)).
|
||||||
|
* Returned back the behaviour of how ClickHouse works and interprets Tuples in CSV format. This change effectively reverts https://github.com/ClickHouse/ClickHouse/pull/60994 and makes it available only under a few settings: `output_format_csv_serialize_tuple_into_separate_columns`, `input_format_csv_deserialize_separate_columns_into_tuple` and `input_format_csv_try_infer_strings_from_quoted_tuples`. [#65170](https://github.com/ClickHouse/ClickHouse/pull/65170) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
|
||||||
|
* Initialize global trace collector for Poco::ThreadPool (needed for keeper, etc). [#65239](https://github.com/ClickHouse/ClickHouse/pull/65239) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Add validation when creating a user with bcrypt_hash. [#65242](https://github.com/ClickHouse/ClickHouse/pull/65242) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Unite s3/hdfs/azure storage implementations into a single class working with IObjectStorage. Same for *Cluster, data lakes and Queue storages. [#59767](https://github.com/ClickHouse/ClickHouse/pull/59767) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Refactor data part writer to remove dependencies on MergeTreeData and DataPart. [#63620](https://github.com/ClickHouse/ClickHouse/pull/63620) ([Alexander Gololobov](https://github.com/davenger)).
|
||||||
|
* Add profile events for number of rows read during/after prewhere. [#64198](https://github.com/ClickHouse/ClickHouse/pull/64198) ([Nikita Taranov](https://github.com/nickitat)).
|
||||||
|
* Print query in explain plan with parallel replicas. [#64298](https://github.com/ClickHouse/ClickHouse/pull/64298) ([vdimir](https://github.com/vdimir)).
|
||||||
|
* Rename `allow_deprecated_functions` to `allow_deprecated_error_prone_window_functions`. [#64358](https://github.com/ClickHouse/ClickHouse/pull/64358) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Respect `max_read_buffer_size` setting for file descriptors as well in file() table function. [#64532](https://github.com/ClickHouse/ClickHouse/pull/64532) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Disable transactions for unsupported storages even for materialized views. [#64918](https://github.com/ClickHouse/ClickHouse/pull/64918) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Refactor `KeyCondition` and key analysis to improve PartitionPruner and trivial count optimization. This is separated from [#60463](https://github.com/ClickHouse/ClickHouse/issues/60463) . [#61459](https://github.com/ClickHouse/ClickHouse/pull/61459) ([Amos Bird](https://github.com/amosbird)).
|
||||||
|
|
||||||
|
#### Bug Fix (user-visible misbehavior in an official stable release)
|
||||||
|
* Fix a permission error where a user in a specific situation can escalate their privileges on the default database without necessary grants. [#64769](https://github.com/ClickHouse/ClickHouse/pull/64769) ([pufit](https://github.com/pufit)).
|
||||||
|
* Fix crash with UniqInjectiveFunctionsEliminationPass and uniqCombined. [#65188](https://github.com/ClickHouse/ClickHouse/pull/65188) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix a bug in ClickHouse Keeper that causes digest mismatch during closing session. [#65198](https://github.com/ClickHouse/ClickHouse/pull/65198) ([Aleksei Filatov](https://github.com/aalexfvk)).
|
||||||
|
* Forbid `QUALIFY` clause in the old analyzer. The old analyzer ignored `QUALIFY`, so it could lead to unexpected data removal in mutations. [#65356](https://github.com/ClickHouse/ClickHouse/pull/65356) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Use correct memory alignment for Distinct combinator. Previously, crash could happen because of invalid memory allocation when the combinator was used. [#65379](https://github.com/ClickHouse/ClickHouse/pull/65379) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Fix crash with `DISTINCT` and window functions. [#64767](https://github.com/ClickHouse/ClickHouse/pull/64767) ([Igor Nikonov](https://github.com/devcrafter)).
|
||||||
|
* Fixed 'set' skip index not working with IN and indexHint(). [#62083](https://github.com/ClickHouse/ClickHouse/pull/62083) ([Michael Kolupaev](https://github.com/al13n321)).
|
||||||
|
* Support executing function during assignment of parameterized view value. [#63502](https://github.com/ClickHouse/ClickHouse/pull/63502) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
|
||||||
|
* Fixed parquet memory tracking. [#63584](https://github.com/ClickHouse/ClickHouse/pull/63584) ([Michael Kolupaev](https://github.com/al13n321)).
|
||||||
|
* Fixed reading of columns of type `Tuple(Map(LowCardinality(String), String), ...)`. [#63956](https://github.com/ClickHouse/ClickHouse/pull/63956) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Fix an `Cyclic aliases` error for cyclic aliases of different type (expression and function). [#63993](https://github.com/ClickHouse/ClickHouse/pull/63993) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* This fix will use a proper redefined context with the correct definer for each individual view in the query pipeline. [#64079](https://github.com/ClickHouse/ClickHouse/pull/64079) ([pufit](https://github.com/pufit)).
|
||||||
|
* Fix analyzer: "Not found column" error is fixed when using INTERPOLATE. [#64096](https://github.com/ClickHouse/ClickHouse/pull/64096) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
|
||||||
|
* Fix creating backups to S3 buckets with different credentials from the disk containing the file. [#64153](https://github.com/ClickHouse/ClickHouse/pull/64153) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* The query cache now considers two identical queries against different databases as different. The previous behavior could be used to bypass missing privileges to read from a table. [#64199](https://github.com/ClickHouse/ClickHouse/pull/64199) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Fix possible abort on uncaught exception in ~WriteBufferFromFileDescriptor in StatusFile. [#64206](https://github.com/ClickHouse/ClickHouse/pull/64206) ([Kruglov Pavel](https://github.com/Avogar)).
|
||||||
|
* Fix `duplicate alias` error for distributed queries with `ARRAY JOIN`. [#64226](https://github.com/ClickHouse/ClickHouse/pull/64226) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix unexpected accurateCast from string to integer. [#64255](https://github.com/ClickHouse/ClickHouse/pull/64255) ([wudidapaopao](https://github.com/wudidapaopao)).
|
||||||
|
* Fixed CNF simplification, in case any OR group contains mutually exclusive atoms. [#64256](https://github.com/ClickHouse/ClickHouse/pull/64256) ([Eduard Karacharov](https://github.com/korowa)).
|
||||||
|
* Fix Query Tree size validation. [#64377](https://github.com/ClickHouse/ClickHouse/pull/64377) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Fix `Logical error: Bad cast` for `Buffer` table with `PREWHERE`. [#64388](https://github.com/ClickHouse/ClickHouse/pull/64388) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Prevent recursive logging in `blob_storage_log` when it's stored on object storage. [#64393](https://github.com/ClickHouse/ClickHouse/pull/64393) ([vdimir](https://github.com/vdimir)).
|
||||||
|
* Fixed `CREATE TABLE AS` queries for tables with default expressions. [#64455](https://github.com/ClickHouse/ClickHouse/pull/64455) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Fixed `optimize_read_in_order` behaviour for ORDER BY ... NULLS FIRST / LAST on tables with nullable keys. [#64483](https://github.com/ClickHouse/ClickHouse/pull/64483) ([Eduard Karacharov](https://github.com/korowa)).
|
||||||
|
* Fix the `Expression nodes list expected 1 projection names` and `Unknown expression or identifier` errors for queries with aliases to `GLOBAL IN.`. [#64517](https://github.com/ClickHouse/ClickHouse/pull/64517) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix an error `Cannot find column` in distributed queries with constant CTE in the `GROUP BY` key. [#64519](https://github.com/ClickHouse/ClickHouse/pull/64519) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fixed ORC statistics calculation, when writing, for unsigned types on all platforms and Int8 on ARM. [#64563](https://github.com/ClickHouse/ClickHouse/pull/64563) ([Michael Kolupaev](https://github.com/al13n321)).
|
||||||
|
* Fix the crash loop when restoring from backup is blocked by creating an MV with a definer that hasn't been restored yet. [#64595](https://github.com/ClickHouse/ClickHouse/pull/64595) ([pufit](https://github.com/pufit)).
|
||||||
|
* Fix the output of function `formatDateTimeInJodaSyntax` when a formatter generates an uneven number of characters and the last character is `0`. For example, `SELECT formatDateTimeInJodaSyntax(toDate('2012-05-29'), 'D')` now correctly returns `150` instead of previously `15`. [#64614](https://github.com/ClickHouse/ClickHouse/pull/64614) ([LiuNeng](https://github.com/liuneng1994)).
|
||||||
|
* Do not rewrite aggregation if `-If` combinator is already used. [#64638](https://github.com/ClickHouse/ClickHouse/pull/64638) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Fix type inference for float (in case of small buffer, i.e. `--max_read_buffer_size 1`). [#64641](https://github.com/ClickHouse/ClickHouse/pull/64641) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fix bug which could lead to non-working TTLs with expressions. [#64694](https://github.com/ClickHouse/ClickHouse/pull/64694) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Fix removing the `WHERE` and `PREWHERE` expressions, which are always true (for the new analyzer). [#64695](https://github.com/ClickHouse/ClickHouse/pull/64695) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fixed excessive part elimination by token-based text indexes (`ngrambf` , `full_text`) when filtering by result of `startsWith`, `endsWith`, `match`, `multiSearchAny`. [#64720](https://github.com/ClickHouse/ClickHouse/pull/64720) ([Eduard Karacharov](https://github.com/korowa)).
|
||||||
|
* Fixes incorrect behaviour of ANSI CSI escaping in the `UTF8::computeWidth` function. [#64756](https://github.com/ClickHouse/ClickHouse/pull/64756) ([Shaun Struwig](https://github.com/Blargian)).
|
||||||
|
* Fix a case of incorrect removal of `ORDER BY` / `LIMIT BY` across subqueries. [#64766](https://github.com/ClickHouse/ClickHouse/pull/64766) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix (experimental) unequal join with subqueries for sets which are in the mixed join conditions. [#64775](https://github.com/ClickHouse/ClickHouse/pull/64775) ([lgbo](https://github.com/lgbo-ustc)).
|
||||||
|
* Fix crash in a local cache over `plain_rewritable` disk. [#64778](https://github.com/ClickHouse/ClickHouse/pull/64778) ([Julia Kartseva](https://github.com/jkartseva)).
|
||||||
|
* Keeper fix: return correct value for `zk_latest_snapshot_size` in `mntr` command. [#64784](https://github.com/ClickHouse/ClickHouse/pull/64784) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Fix `Cannot find column` in distributed query with `ARRAY JOIN` by `Nested` column. Fixes [#64755](https://github.com/ClickHouse/ClickHouse/issues/64755). [#64801](https://github.com/ClickHouse/ClickHouse/pull/64801) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix memory leak in slru cache policy. [#64803](https://github.com/ClickHouse/ClickHouse/pull/64803) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Fixed possible incorrect memory tracking in several kinds of queries: queries that read any data from S3, queries via http protocol, asynchronous inserts. [#64844](https://github.com/ClickHouse/ClickHouse/pull/64844) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Fix the `Block structure mismatch` error for queries reading with `PREWHERE` from the materialized view when the materialized view has columns of different types than the source table. Fixes [#64611](https://github.com/ClickHouse/ClickHouse/issues/64611). [#64855](https://github.com/ClickHouse/ClickHouse/pull/64855) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix rare crash when table has TTL with subquery + database replicated + parallel replicas + analyzer. It's really rare, but please don't use TTLs with subqueries. [#64858](https://github.com/ClickHouse/ClickHouse/pull/64858) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Fix duplicating `Delete` events in `blob_storage_log` in case of large batch to delete. [#64924](https://github.com/ClickHouse/ClickHouse/pull/64924) ([vdimir](https://github.com/vdimir)).
|
||||||
|
* Fixed `Session moved to another server` error from [Zoo]Keeper that might happen after server startup when the config has includes from [Zoo]Keeper. [#64986](https://github.com/ClickHouse/ClickHouse/pull/64986) ([Alexander Tokmakov](https://github.com/tavplubix)).
|
||||||
|
* Fix `ALTER MODIFY COMMENT` query that was broken for parameterized VIEWs in https://github.com/ClickHouse/ClickHouse/pull/54211. [#65031](https://github.com/ClickHouse/ClickHouse/pull/65031) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Fix `host_id` in DatabaseReplicated when `cluster_secure_connection` parameter is enabled. Previously all the connections within the cluster created by DatabaseReplicated were not secure, even if the parameter was enabled. [#65054](https://github.com/ClickHouse/ClickHouse/pull/65054) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Fixing the `Not-ready Set` error after the `PREWHERE` optimization for StorageMerge. [#65057](https://github.com/ClickHouse/ClickHouse/pull/65057) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Avoid writing to finalized buffer in File-like storages. [#65063](https://github.com/ClickHouse/ClickHouse/pull/65063) ([Kruglov Pavel](https://github.com/Avogar)).
|
||||||
|
* Fix possible infinite query duration in case of cyclic aliases. Fixes [#64849](https://github.com/ClickHouse/ClickHouse/issues/64849). [#65081](https://github.com/ClickHouse/ClickHouse/pull/65081) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix the `Unknown expression identifier` error for remote queries with `INTERPOLATE (alias)` (new analyzer). Fixes [#64636](https://github.com/ClickHouse/ClickHouse/issues/64636). [#65090](https://github.com/ClickHouse/ClickHouse/pull/65090) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Fix pushing arithmetic operations out of aggregation. In the new analyzer, optimization was applied only once. [#65104](https://github.com/ClickHouse/ClickHouse/pull/65104) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Fix aggregate function name rewriting in the new analyzer. [#65110](https://github.com/ClickHouse/ClickHouse/pull/65110) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Respond with 5xx instead of 200 OK in case of receive timeout while reading (parts of) the request body from the client socket. [#65118](https://github.com/ClickHouse/ClickHouse/pull/65118) ([Julian Maicher](https://github.com/jmaicher)).
|
||||||
|
* Fix possible crash for hedged requests. [#65206](https://github.com/ClickHouse/ClickHouse/pull/65206) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Fix the bug in Hashed and Hashed_Array dictionary short circuit evaluation, which may read uninitialized number, leading to various errors. [#65256](https://github.com/ClickHouse/ClickHouse/pull/65256) ([jsc0218](https://github.com/jsc0218)).
|
||||||
|
* This PR ensures that the type of the constant(IN operator's second parameter) is always visible during the IN operator's type conversion process. Otherwise, losing type information may cause some conversions to fail, such as the conversion from DateTime to Date. This fixes ([#64487](https://github.com/ClickHouse/ClickHouse/issues/64487)). [#65315](https://github.com/ClickHouse/ClickHouse/pull/65315) ([pn](https://github.com/chloro-pn)).
|
||||||
|
|
||||||
|
#### Build/Testing/Packaging Improvement
|
||||||
|
* Make `network` service be required when using the rc init script to start the ClickHouse server daemon. [#60650](https://github.com/ClickHouse/ClickHouse/pull/60650) ([Chun-Sheng, Li](https://github.com/peter279k)).
|
||||||
|
* Fix typo in test_hdfsCluster_unset_skip_unavailable_shards. The test writes data to unskip_unavailable_shards, but uses skip_unavailable_shards from the previous test. [#64243](https://github.com/ClickHouse/ClickHouse/pull/64243) ([Mikhail Artemenko](https://github.com/Michicosun)).
|
||||||
|
* Reduce the size of some slow tests. [#64387](https://github.com/ClickHouse/ClickHouse/pull/64387) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Reduce the size of some slow tests. [#64452](https://github.com/ClickHouse/ClickHouse/pull/64452) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix test_lost_part_other_replica. [#64512](https://github.com/ClickHouse/ClickHouse/pull/64512) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Add tests for experimental unequal joins and randomize new settings in clickhouse-test. [#64535](https://github.com/ClickHouse/ClickHouse/pull/64535) ([Nikita Fomichev](https://github.com/fm4v)).
|
||||||
|
* Upgrade tests: Update config and work with release candidates. [#64542](https://github.com/ClickHouse/ClickHouse/pull/64542) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Add support for LLVM XRay. [#64592](https://github.com/ClickHouse/ClickHouse/pull/64592) ([Tomer Shafir](https://github.com/tomershafir)).
|
||||||
|
* Speed up 02995_forget_partition. [#64761](https://github.com/ClickHouse/ClickHouse/pull/64761) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Fix 02790_async_queries_in_query_log. [#64764](https://github.com/ClickHouse/ClickHouse/pull/64764) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Support LLVM XRay on Linux amd64 only. [#64837](https://github.com/ClickHouse/ClickHouse/pull/64837) ([Tomer Shafir](https://github.com/tomershafir)).
|
||||||
|
* Get rid of custom code in `tests/ci/download_release_packages.py` and `tests/ci/get_previous_release_tag.py` to avoid issues after the https://github.com/ClickHouse/ClickHouse/pull/64759 is merged. [#64848](https://github.com/ClickHouse/ClickHouse/pull/64848) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Decrease the `unit-test` image a few times. [#65102](https://github.com/ClickHouse/ClickHouse/pull/65102) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Replay ZooKeeper logs using keeper-bench. [#62481](https://github.com/ClickHouse/ClickHouse/pull/62481) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Re-enable OpenSSL session caching. [#65111](https://github.com/ClickHouse/ClickHouse/pull/65111) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
|
||||||
### <a id="245"></a> ClickHouse release 24.5, 2024-05-30
|
### <a id="245"></a> ClickHouse release 24.5, 2024-05-30
|
||||||
|
|
||||||
#### Backward Incompatible Change
|
#### Backward Incompatible Change
|
||||||
|
@ -399,7 +399,7 @@ option (ENABLE_GWP_ASAN "Enable Gwp-Asan" ON)
|
|||||||
# but GWP-ASan also wants to use mmap frequently,
|
# but GWP-ASan also wants to use mmap frequently,
|
||||||
# and due to a large number of memory mappings,
|
# and due to a large number of memory mappings,
|
||||||
# it does not work together well.
|
# it does not work together well.
|
||||||
if ((NOT OS_LINUX AND NOT OS_ANDROID) OR (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG"))
|
if ((NOT OS_LINUX AND NOT OS_ANDROID) OR (CMAKE_BUILD_TYPE_UC STREQUAL "DEBUG") OR SANITIZE)
|
||||||
set(ENABLE_GWP_ASAN OFF)
|
set(ENABLE_GWP_ASAN OFF)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
10
README.md
10
README.md
@ -34,20 +34,18 @@ curl https://clickhouse.com/ | sh
|
|||||||
|
|
||||||
Every month we get together with the community (users, contributors, customers, those interested in learning more about ClickHouse) to discuss what is coming in the latest release. If you are interested in sharing what you've built on ClickHouse, let us know.
|
Every month we get together with the community (users, contributors, customers, those interested in learning more about ClickHouse) to discuss what is coming in the latest release. If you are interested in sharing what you've built on ClickHouse, let us know.
|
||||||
|
|
||||||
* [v24.5 Community Call](https://clickhouse.com/company/events/v24-5-community-release-call) - May 30
|
* [v24.6 Community Call](https://clickhouse.com/company/events/v24-6-community-release-call) - Jul 2
|
||||||
|
|
||||||
## Upcoming Events
|
## Upcoming Events
|
||||||
|
|
||||||
Keep an eye out for upcoming meetups and events around the world. Somewhere else you want us to be? Please feel free to reach out to tyler `<at>` clickhouse `<dot>` com. You can also peruse [ClickHouse Events](https://clickhouse.com/company/news-events) for a list of all upcoming trainings, meetups, speaking engagements, etc.
|
Keep an eye out for upcoming meetups and events around the world. Somewhere else you want us to be? Please feel free to reach out to tyler `<at>` clickhouse `<dot>` com. You can also peruse [ClickHouse Events](https://clickhouse.com/company/news-events) for a list of all upcoming trainings, meetups, speaking engagements, etc.
|
||||||
|
|
||||||
* [ClickHouse Happy Hour @ Tom's Watch Bar - Los Angeles](https://www.meetup.com/clickhouse-los-angeles-user-group/events/300740584/) - May 22
|
* [AWS Summit in DC](https://clickhouse.com/company/events/2024-06-aws-summit-dc) - Jun 26
|
||||||
* [ClickHouse & Confluent Meetup in Dubai](https://www.meetup.com/clickhouse-dubai-meetup-group/events/299629189/) - May 28
|
|
||||||
* [ClickHouse Meetup in Stockholm](https://www.meetup.com/clickhouse-stockholm-user-group/events/299752651/) - Jun 3
|
|
||||||
* [ClickHouse Meetup @ Cloudflare - San Francisco](https://www.meetup.com/clickhouse-silicon-valley-meetup-group/events/300523061/) - Jun 4
|
|
||||||
* [ClickHouse (クリックハウス) Meetup Tokyo](https://www.meetup.com/clickhouse-tokyo-user-group/events/300798053/) - Jun 5
|
|
||||||
* [ClickHouse Meetup in Amsterdam](https://www.meetup.com/clickhouse-netherlands-user-group/events/300781068/) - Jun 27
|
* [ClickHouse Meetup in Amsterdam](https://www.meetup.com/clickhouse-netherlands-user-group/events/300781068/) - Jun 27
|
||||||
* [ClickHouse Meetup in Paris](https://www.meetup.com/clickhouse-france-user-group/events/300783448/) - Jul 9
|
* [ClickHouse Meetup in Paris](https://www.meetup.com/clickhouse-france-user-group/events/300783448/) - Jul 9
|
||||||
|
* [ClickHouse Cloud - Live Update Call](https://clickhouse.com/company/events/202407-cloud-update-live) - Jul 9
|
||||||
* [ClickHouse Meetup @ Ramp - New York City](https://www.meetup.com/clickhouse-new-york-user-group/events/300595845/) - Jul 9
|
* [ClickHouse Meetup @ Ramp - New York City](https://www.meetup.com/clickhouse-new-york-user-group/events/300595845/) - Jul 9
|
||||||
|
* [AWS Summit in New York](https://clickhouse.com/company/events/2024-07-awssummit-nyc) - Jul 10
|
||||||
* [ClickHouse Meetup @ Klaviyo - Boston](https://www.meetup.com/clickhouse-boston-user-group/events/300907870) - Jul 11
|
* [ClickHouse Meetup @ Klaviyo - Boston](https://www.meetup.com/clickhouse-boston-user-group/events/300907870) - Jul 11
|
||||||
|
|
||||||
## Recent Recordings
|
## Recent Recordings
|
||||||
|
@ -32,7 +32,7 @@ constexpr void static_for(F && f)
|
|||||||
template <is_enum T>
|
template <is_enum T>
|
||||||
struct fmt::formatter<T> : fmt::formatter<std::string_view>
|
struct fmt::formatter<T> : fmt::formatter<std::string_view>
|
||||||
{
|
{
|
||||||
constexpr auto format(T value, auto& format_context)
|
constexpr auto format(T value, auto& format_context) const
|
||||||
{
|
{
|
||||||
return formatter<string_view>::format(magic_enum::enum_name(value), format_context);
|
return formatter<string_view>::format(magic_enum::enum_name(value), format_context);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <base/types.h>
|
#include <base/types.h>
|
||||||
#include <base/unaligned.h>
|
#include <base/unaligned.h>
|
||||||
#include <base/simd.h>
|
#include <base/simd.h>
|
||||||
|
#include <fmt/core.h>
|
||||||
|
#include <fmt/ostream.h>
|
||||||
|
|
||||||
#include <city.h>
|
#include <city.h>
|
||||||
|
|
||||||
@ -376,3 +378,5 @@ namespace PackedZeroTraits
|
|||||||
|
|
||||||
|
|
||||||
std::ostream & operator<<(std::ostream & os, const StringRef & str);
|
std::ostream & operator<<(std::ostream & os, const StringRef & str);
|
||||||
|
|
||||||
|
template<> struct fmt::formatter<StringRef> : fmt::ostream_formatter {};
|
||||||
|
@ -62,7 +62,7 @@ struct fmt::formatter<wide::integer<Bits, Signed>>
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename FormatContext>
|
template <typename FormatContext>
|
||||||
auto format(const wide::integer<Bits, Signed> & value, FormatContext & ctx)
|
auto format(const wide::integer<Bits, Signed> & value, FormatContext & ctx) const
|
||||||
{
|
{
|
||||||
return fmt::format_to(ctx.out(), "{}", to_string(value));
|
return fmt::format_to(ctx.out(), "{}", to_string(value));
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,6 @@
|
|||||||
#include <openssl/conf.h>
|
#include <openssl/conf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __has_feature(address_sanitizer)
|
|
||||||
#include <sanitizer/lsan_interface.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
using Poco::RandomInputStream;
|
using Poco::RandomInputStream;
|
||||||
using Poco::Thread;
|
using Poco::Thread;
|
||||||
@ -70,18 +67,12 @@ void OpenSSLInitializer::initialize()
|
|||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
SSL_load_error_strings();
|
SSL_load_error_strings();
|
||||||
OpenSSL_add_all_algorithms();
|
OpenSSL_add_all_algorithms();
|
||||||
|
|
||||||
char seed[SEEDSIZE];
|
char seed[SEEDSIZE];
|
||||||
RandomInputStream rnd;
|
RandomInputStream rnd;
|
||||||
rnd.read(seed, sizeof(seed));
|
rnd.read(seed, sizeof(seed));
|
||||||
{
|
RAND_seed(seed, SEEDSIZE);
|
||||||
# if __has_feature(address_sanitizer)
|
|
||||||
/// Leak sanitizer (part of address sanitizer) thinks that a few bytes of memory in OpenSSL are allocated during but never released.
|
|
||||||
__lsan::ScopedDisabler lsan_disabler;
|
|
||||||
#endif
|
|
||||||
RAND_seed(seed, SEEDSIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
int nMutexes = CRYPTO_num_locks();
|
int nMutexes = CRYPTO_num_locks();
|
||||||
_mutexes = new Poco::FastMutex[nMutexes];
|
_mutexes = new Poco::FastMutex[nMutexes];
|
||||||
CRYPTO_set_locking_callback(&OpenSSLInitializer::lock);
|
CRYPTO_set_locking_callback(&OpenSSLInitializer::lock);
|
||||||
@ -89,8 +80,8 @@ void OpenSSLInitializer::initialize()
|
|||||||
// https://sourceforge.net/p/poco/bugs/110/
|
// https://sourceforge.net/p/poco/bugs/110/
|
||||||
//
|
//
|
||||||
// From http://www.openssl.org/docs/crypto/threads.html :
|
// From http://www.openssl.org/docs/crypto/threads.html :
|
||||||
// "If the application does not register such a callback using CRYPTO_THREADID_set_callback(),
|
// "If the application does not register such a callback using CRYPTO_THREADID_set_callback(),
|
||||||
// then a default implementation is used - on Windows and BeOS this uses the system's
|
// then a default implementation is used - on Windows and BeOS this uses the system's
|
||||||
// default thread identifying APIs"
|
// default thread identifying APIs"
|
||||||
CRYPTO_set_id_callback(&OpenSSLInitializer::id);
|
CRYPTO_set_id_callback(&OpenSSLInitializer::id);
|
||||||
CRYPTO_set_dynlock_create_callback(&OpenSSLInitializer::dynlockCreate);
|
CRYPTO_set_dynlock_create_callback(&OpenSSLInitializer::dynlockCreate);
|
||||||
@ -109,7 +100,7 @@ void OpenSSLInitializer::uninitialize()
|
|||||||
CRYPTO_set_locking_callback(0);
|
CRYPTO_set_locking_callback(0);
|
||||||
CRYPTO_set_id_callback(0);
|
CRYPTO_set_id_callback(0);
|
||||||
delete [] _mutexes;
|
delete [] _mutexes;
|
||||||
|
|
||||||
CONF_modules_free();
|
CONF_modules_free();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,6 +213,7 @@ target_compile_definitions (_poco_foundation
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories (_poco_foundation SYSTEM PUBLIC "include")
|
target_include_directories (_poco_foundation SYSTEM PUBLIC "include")
|
||||||
|
target_link_libraries (_poco_foundation PRIVATE clickhouse_common_io)
|
||||||
|
|
||||||
target_link_libraries (_poco_foundation
|
target_link_libraries (_poco_foundation
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
@ -48,7 +48,13 @@ class Foundation_API ThreadPool
|
|||||||
/// from the pool.
|
/// from the pool.
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThreadPool(int minCapacity = 2, int maxCapacity = 16, int idleTime = 60, int stackSize = POCO_THREAD_STACK_SIZE);
|
explicit ThreadPool(
|
||||||
|
int minCapacity = 2,
|
||||||
|
int maxCapacity = 16,
|
||||||
|
int idleTime = 60,
|
||||||
|
int stackSize = POCO_THREAD_STACK_SIZE,
|
||||||
|
size_t global_profiler_real_time_period_ns_ = 0,
|
||||||
|
size_t global_profiler_cpu_time_period_ns_ = 0);
|
||||||
/// Creates a thread pool with minCapacity threads.
|
/// Creates a thread pool with minCapacity threads.
|
||||||
/// If required, up to maxCapacity threads are created
|
/// If required, up to maxCapacity threads are created
|
||||||
/// a NoThreadAvailableException exception is thrown.
|
/// a NoThreadAvailableException exception is thrown.
|
||||||
@ -56,8 +62,14 @@ public:
|
|||||||
/// and more than minCapacity threads are running, the thread
|
/// and more than minCapacity threads are running, the thread
|
||||||
/// is killed. Threads are created with given stack size.
|
/// is killed. Threads are created with given stack size.
|
||||||
|
|
||||||
ThreadPool(
|
explicit ThreadPool(
|
||||||
const std::string & name, int minCapacity = 2, int maxCapacity = 16, int idleTime = 60, int stackSize = POCO_THREAD_STACK_SIZE);
|
const std::string & name,
|
||||||
|
int minCapacity = 2,
|
||||||
|
int maxCapacity = 16,
|
||||||
|
int idleTime = 60,
|
||||||
|
int stackSize = POCO_THREAD_STACK_SIZE,
|
||||||
|
size_t global_profiler_real_time_period_ns_ = 0,
|
||||||
|
size_t global_profiler_cpu_time_period_ns_ = 0);
|
||||||
/// Creates a thread pool with the given name and minCapacity threads.
|
/// Creates a thread pool with the given name and minCapacity threads.
|
||||||
/// If required, up to maxCapacity threads are created
|
/// If required, up to maxCapacity threads are created
|
||||||
/// a NoThreadAvailableException exception is thrown.
|
/// a NoThreadAvailableException exception is thrown.
|
||||||
@ -171,6 +183,8 @@ private:
|
|||||||
int _serial;
|
int _serial;
|
||||||
int _age;
|
int _age;
|
||||||
int _stackSize;
|
int _stackSize;
|
||||||
|
size_t _globalProfilerRealTimePeriodNs;
|
||||||
|
size_t _globalProfilerCPUTimePeriodNs;
|
||||||
ThreadVec _threads;
|
ThreadVec _threads;
|
||||||
mutable FastMutex _mutex;
|
mutable FastMutex _mutex;
|
||||||
};
|
};
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "Poco/ErrorHandler.h"
|
#include "Poco/ErrorHandler.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <Common/ThreadPool.h>
|
||||||
|
|
||||||
|
|
||||||
namespace Poco {
|
namespace Poco {
|
||||||
@ -28,7 +29,11 @@ namespace Poco {
|
|||||||
class PooledThread: public Runnable
|
class PooledThread: public Runnable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PooledThread(const std::string& name, int stackSize = POCO_THREAD_STACK_SIZE);
|
explicit PooledThread(
|
||||||
|
const std::string& name,
|
||||||
|
int stackSize = POCO_THREAD_STACK_SIZE,
|
||||||
|
size_t globalProfilerRealTimePeriodNs_ = 0,
|
||||||
|
size_t globalProfilerCPUTimePeriodNs_ = 0);
|
||||||
~PooledThread();
|
~PooledThread();
|
||||||
|
|
||||||
void start();
|
void start();
|
||||||
@ -51,16 +56,24 @@ private:
|
|||||||
Event _targetCompleted;
|
Event _targetCompleted;
|
||||||
Event _started;
|
Event _started;
|
||||||
FastMutex _mutex;
|
FastMutex _mutex;
|
||||||
|
size_t _globalProfilerRealTimePeriodNs;
|
||||||
|
size_t _globalProfilerCPUTimePeriodNs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
PooledThread::PooledThread(const std::string& name, int stackSize):
|
PooledThread::PooledThread(
|
||||||
_idle(true),
|
const std::string& name,
|
||||||
_idleTime(0),
|
int stackSize,
|
||||||
_pTarget(0),
|
size_t globalProfilerRealTimePeriodNs_,
|
||||||
_name(name),
|
size_t globalProfilerCPUTimePeriodNs_) :
|
||||||
|
_idle(true),
|
||||||
|
_idleTime(0),
|
||||||
|
_pTarget(0),
|
||||||
|
_name(name),
|
||||||
_thread(name),
|
_thread(name),
|
||||||
_targetCompleted(false)
|
_targetCompleted(false),
|
||||||
|
_globalProfilerRealTimePeriodNs(globalProfilerRealTimePeriodNs_),
|
||||||
|
_globalProfilerCPUTimePeriodNs(globalProfilerCPUTimePeriodNs_)
|
||||||
{
|
{
|
||||||
poco_assert_dbg (stackSize >= 0);
|
poco_assert_dbg (stackSize >= 0);
|
||||||
_thread.setStackSize(stackSize);
|
_thread.setStackSize(stackSize);
|
||||||
@ -83,7 +96,7 @@ void PooledThread::start()
|
|||||||
void PooledThread::start(Thread::Priority priority, Runnable& target)
|
void PooledThread::start(Thread::Priority priority, Runnable& target)
|
||||||
{
|
{
|
||||||
FastMutex::ScopedLock lock(_mutex);
|
FastMutex::ScopedLock lock(_mutex);
|
||||||
|
|
||||||
poco_assert (_pTarget == 0);
|
poco_assert (_pTarget == 0);
|
||||||
|
|
||||||
_pTarget = ⌖
|
_pTarget = ⌖
|
||||||
@ -109,7 +122,7 @@ void PooledThread::start(Thread::Priority priority, Runnable& target, const std:
|
|||||||
}
|
}
|
||||||
_thread.setName(fullName);
|
_thread.setName(fullName);
|
||||||
_thread.setPriority(priority);
|
_thread.setPriority(priority);
|
||||||
|
|
||||||
poco_assert (_pTarget == 0);
|
poco_assert (_pTarget == 0);
|
||||||
|
|
||||||
_pTarget = ⌖
|
_pTarget = ⌖
|
||||||
@ -145,7 +158,7 @@ void PooledThread::join()
|
|||||||
void PooledThread::activate()
|
void PooledThread::activate()
|
||||||
{
|
{
|
||||||
FastMutex::ScopedLock lock(_mutex);
|
FastMutex::ScopedLock lock(_mutex);
|
||||||
|
|
||||||
poco_assert (_idle);
|
poco_assert (_idle);
|
||||||
_idle = false;
|
_idle = false;
|
||||||
_targetCompleted.reset();
|
_targetCompleted.reset();
|
||||||
@ -155,7 +168,7 @@ void PooledThread::activate()
|
|||||||
void PooledThread::release()
|
void PooledThread::release()
|
||||||
{
|
{
|
||||||
const long JOIN_TIMEOUT = 10000;
|
const long JOIN_TIMEOUT = 10000;
|
||||||
|
|
||||||
_mutex.lock();
|
_mutex.lock();
|
||||||
_pTarget = 0;
|
_pTarget = 0;
|
||||||
_mutex.unlock();
|
_mutex.unlock();
|
||||||
@ -174,6 +187,10 @@ void PooledThread::release()
|
|||||||
|
|
||||||
void PooledThread::run()
|
void PooledThread::run()
|
||||||
{
|
{
|
||||||
|
DB::ThreadStatus thread_status;
|
||||||
|
if (unlikely(_globalProfilerRealTimePeriodNs != 0 || _globalProfilerCPUTimePeriodNs != 0))
|
||||||
|
thread_status.initGlobalProfiler(_globalProfilerRealTimePeriodNs, _globalProfilerCPUTimePeriodNs);
|
||||||
|
|
||||||
_started.set();
|
_started.set();
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -220,13 +237,17 @@ void PooledThread::run()
|
|||||||
ThreadPool::ThreadPool(int minCapacity,
|
ThreadPool::ThreadPool(int minCapacity,
|
||||||
int maxCapacity,
|
int maxCapacity,
|
||||||
int idleTime,
|
int idleTime,
|
||||||
int stackSize):
|
int stackSize,
|
||||||
_minCapacity(minCapacity),
|
size_t globalProfilerRealTimePeriodNs_,
|
||||||
_maxCapacity(maxCapacity),
|
size_t globalProfilerCPUTimePeriodNs_) :
|
||||||
|
_minCapacity(minCapacity),
|
||||||
|
_maxCapacity(maxCapacity),
|
||||||
_idleTime(idleTime),
|
_idleTime(idleTime),
|
||||||
_serial(0),
|
_serial(0),
|
||||||
_age(0),
|
_age(0),
|
||||||
_stackSize(stackSize)
|
_stackSize(stackSize),
|
||||||
|
_globalProfilerRealTimePeriodNs(globalProfilerRealTimePeriodNs_),
|
||||||
|
_globalProfilerCPUTimePeriodNs(globalProfilerCPUTimePeriodNs_)
|
||||||
{
|
{
|
||||||
poco_assert (minCapacity >= 1 && maxCapacity >= minCapacity && idleTime > 0);
|
poco_assert (minCapacity >= 1 && maxCapacity >= minCapacity && idleTime > 0);
|
||||||
|
|
||||||
@ -243,14 +264,18 @@ ThreadPool::ThreadPool(const std::string& name,
|
|||||||
int minCapacity,
|
int minCapacity,
|
||||||
int maxCapacity,
|
int maxCapacity,
|
||||||
int idleTime,
|
int idleTime,
|
||||||
int stackSize):
|
int stackSize,
|
||||||
|
size_t globalProfilerRealTimePeriodNs_,
|
||||||
|
size_t globalProfilerCPUTimePeriodNs_) :
|
||||||
_name(name),
|
_name(name),
|
||||||
_minCapacity(minCapacity),
|
_minCapacity(minCapacity),
|
||||||
_maxCapacity(maxCapacity),
|
_maxCapacity(maxCapacity),
|
||||||
_idleTime(idleTime),
|
_idleTime(idleTime),
|
||||||
_serial(0),
|
_serial(0),
|
||||||
_age(0),
|
_age(0),
|
||||||
_stackSize(stackSize)
|
_stackSize(stackSize),
|
||||||
|
_globalProfilerRealTimePeriodNs(globalProfilerRealTimePeriodNs_),
|
||||||
|
_globalProfilerCPUTimePeriodNs(globalProfilerCPUTimePeriodNs_)
|
||||||
{
|
{
|
||||||
poco_assert (minCapacity >= 1 && maxCapacity >= minCapacity && idleTime > 0);
|
poco_assert (minCapacity >= 1 && maxCapacity >= minCapacity && idleTime > 0);
|
||||||
|
|
||||||
@ -393,15 +418,15 @@ void ThreadPool::housekeep()
|
|||||||
ThreadVec activeThreads;
|
ThreadVec activeThreads;
|
||||||
idleThreads.reserve(_threads.size());
|
idleThreads.reserve(_threads.size());
|
||||||
activeThreads.reserve(_threads.size());
|
activeThreads.reserve(_threads.size());
|
||||||
|
|
||||||
for (ThreadVec::iterator it = _threads.begin(); it != _threads.end(); ++it)
|
for (ThreadVec::iterator it = _threads.begin(); it != _threads.end(); ++it)
|
||||||
{
|
{
|
||||||
if ((*it)->idle())
|
if ((*it)->idle())
|
||||||
{
|
{
|
||||||
if ((*it)->idleTime() < _idleTime)
|
if ((*it)->idleTime() < _idleTime)
|
||||||
idleThreads.push_back(*it);
|
idleThreads.push_back(*it);
|
||||||
else
|
else
|
||||||
expiredThreads.push_back(*it);
|
expiredThreads.push_back(*it);
|
||||||
}
|
}
|
||||||
else activeThreads.push_back(*it);
|
else activeThreads.push_back(*it);
|
||||||
}
|
}
|
||||||
@ -463,7 +488,7 @@ PooledThread* ThreadPool::createThread()
|
|||||||
{
|
{
|
||||||
std::ostringstream name;
|
std::ostringstream name;
|
||||||
name << _name << "[#" << ++_serial << "]";
|
name << _name << "[#" << ++_serial << "]";
|
||||||
return new PooledThread(name.str(), _stackSize);
|
return new PooledThread(name.str(), _stackSize, _globalProfilerRealTimePeriodNs, _globalProfilerCPUTimePeriodNs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -481,7 +506,7 @@ public:
|
|||||||
ThreadPool* pool()
|
ThreadPool* pool()
|
||||||
{
|
{
|
||||||
FastMutex::ScopedLock lock(_mutex);
|
FastMutex::ScopedLock lock(_mutex);
|
||||||
|
|
||||||
if (!_pPool)
|
if (!_pPool)
|
||||||
{
|
{
|
||||||
_pPool = new ThreadPool("default");
|
_pPool = new ThreadPool("default");
|
||||||
@ -490,7 +515,7 @@ public:
|
|||||||
}
|
}
|
||||||
return _pPool;
|
return _pPool;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ThreadPool* _pPool;
|
ThreadPool* _pPool;
|
||||||
FastMutex _mutex;
|
FastMutex _mutex;
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#ifndef NetSSL_SSLManager_INCLUDED
|
#ifndef NetSSL_SSLManager_INCLUDED
|
||||||
#define NetSSL_SSLManager_INCLUDED
|
#define NetSSL_SSLManager_INCLUDED
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
#include "Poco/BasicEvent.h"
|
#include "Poco/BasicEvent.h"
|
||||||
@ -219,6 +220,13 @@ namespace Net
|
|||||||
/// Unless initializeClient() has been called, the first call to this method initializes the default Context
|
/// Unless initializeClient() has been called, the first call to this method initializes the default Context
|
||||||
/// from the application configuration.
|
/// from the application configuration.
|
||||||
|
|
||||||
|
Context::Ptr getCustomServerContext(const std::string & name);
|
||||||
|
/// Return custom Context used by the server.
|
||||||
|
|
||||||
|
Context::Ptr setCustomServerContext(const std::string & name, Context::Ptr ctx);
|
||||||
|
/// Set custom Context used by the server.
|
||||||
|
/// Return pointer on inserted Context or on old Context if exists.
|
||||||
|
|
||||||
PrivateKeyPassphraseHandlerPtr serverPassphraseHandler();
|
PrivateKeyPassphraseHandlerPtr serverPassphraseHandler();
|
||||||
/// Returns the configured passphrase handler of the server. If none is set, the method will create a default one
|
/// Returns the configured passphrase handler of the server. If none is set, the method will create a default one
|
||||||
/// from an application configuration.
|
/// from an application configuration.
|
||||||
@ -258,6 +266,40 @@ namespace Net
|
|||||||
static const std::string CFG_SERVER_PREFIX;
|
static const std::string CFG_SERVER_PREFIX;
|
||||||
static const std::string CFG_CLIENT_PREFIX;
|
static const std::string CFG_CLIENT_PREFIX;
|
||||||
|
|
||||||
|
static const std::string CFG_PRIV_KEY_FILE;
|
||||||
|
static const std::string CFG_CERTIFICATE_FILE;
|
||||||
|
static const std::string CFG_CA_LOCATION;
|
||||||
|
static const std::string CFG_VER_MODE;
|
||||||
|
static const Context::VerificationMode VAL_VER_MODE;
|
||||||
|
static const std::string CFG_VER_DEPTH;
|
||||||
|
static const int VAL_VER_DEPTH;
|
||||||
|
static const std::string CFG_ENABLE_DEFAULT_CA;
|
||||||
|
static const bool VAL_ENABLE_DEFAULT_CA;
|
||||||
|
static const std::string CFG_CIPHER_LIST;
|
||||||
|
static const std::string CFG_CYPHER_LIST; // for backwards compatibility
|
||||||
|
static const std::string VAL_CIPHER_LIST;
|
||||||
|
static const std::string CFG_PREFER_SERVER_CIPHERS;
|
||||||
|
static const std::string CFG_DELEGATE_HANDLER;
|
||||||
|
static const std::string VAL_DELEGATE_HANDLER;
|
||||||
|
static const std::string CFG_CERTIFICATE_HANDLER;
|
||||||
|
static const std::string VAL_CERTIFICATE_HANDLER;
|
||||||
|
static const std::string CFG_CACHE_SESSIONS;
|
||||||
|
static const std::string CFG_SESSION_ID_CONTEXT;
|
||||||
|
static const std::string CFG_SESSION_CACHE_SIZE;
|
||||||
|
static const std::string CFG_SESSION_TIMEOUT;
|
||||||
|
static const std::string CFG_EXTENDED_VERIFICATION;
|
||||||
|
static const std::string CFG_REQUIRE_TLSV1;
|
||||||
|
static const std::string CFG_REQUIRE_TLSV1_1;
|
||||||
|
static const std::string CFG_REQUIRE_TLSV1_2;
|
||||||
|
static const std::string CFG_DISABLE_PROTOCOLS;
|
||||||
|
static const std::string CFG_DH_PARAMS_FILE;
|
||||||
|
static const std::string CFG_ECDH_CURVE;
|
||||||
|
|
||||||
|
#ifdef OPENSSL_FIPS
|
||||||
|
static const std::string CFG_FIPS_MODE;
|
||||||
|
static const bool VAL_FIPS_MODE;
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static int verifyClientCallback(int ok, X509_STORE_CTX * pStore);
|
static int verifyClientCallback(int ok, X509_STORE_CTX * pStore);
|
||||||
/// The return value of this method defines how errors in
|
/// The return value of this method defines how errors in
|
||||||
@ -314,39 +356,7 @@ namespace Net
|
|||||||
InvalidCertificateHandlerPtr _ptrClientCertificateHandler;
|
InvalidCertificateHandlerPtr _ptrClientCertificateHandler;
|
||||||
Poco::FastMutex _mutex;
|
Poco::FastMutex _mutex;
|
||||||
|
|
||||||
static const std::string CFG_PRIV_KEY_FILE;
|
std::unordered_map<std::string, Context::Ptr> _mapPtrServerContexts;
|
||||||
static const std::string CFG_CERTIFICATE_FILE;
|
|
||||||
static const std::string CFG_CA_LOCATION;
|
|
||||||
static const std::string CFG_VER_MODE;
|
|
||||||
static const Context::VerificationMode VAL_VER_MODE;
|
|
||||||
static const std::string CFG_VER_DEPTH;
|
|
||||||
static const int VAL_VER_DEPTH;
|
|
||||||
static const std::string CFG_ENABLE_DEFAULT_CA;
|
|
||||||
static const bool VAL_ENABLE_DEFAULT_CA;
|
|
||||||
static const std::string CFG_CIPHER_LIST;
|
|
||||||
static const std::string CFG_CYPHER_LIST; // for backwards compatibility
|
|
||||||
static const std::string VAL_CIPHER_LIST;
|
|
||||||
static const std::string CFG_PREFER_SERVER_CIPHERS;
|
|
||||||
static const std::string CFG_DELEGATE_HANDLER;
|
|
||||||
static const std::string VAL_DELEGATE_HANDLER;
|
|
||||||
static const std::string CFG_CERTIFICATE_HANDLER;
|
|
||||||
static const std::string VAL_CERTIFICATE_HANDLER;
|
|
||||||
static const std::string CFG_CACHE_SESSIONS;
|
|
||||||
static const std::string CFG_SESSION_ID_CONTEXT;
|
|
||||||
static const std::string CFG_SESSION_CACHE_SIZE;
|
|
||||||
static const std::string CFG_SESSION_TIMEOUT;
|
|
||||||
static const std::string CFG_EXTENDED_VERIFICATION;
|
|
||||||
static const std::string CFG_REQUIRE_TLSV1;
|
|
||||||
static const std::string CFG_REQUIRE_TLSV1_1;
|
|
||||||
static const std::string CFG_REQUIRE_TLSV1_2;
|
|
||||||
static const std::string CFG_DISABLE_PROTOCOLS;
|
|
||||||
static const std::string CFG_DH_PARAMS_FILE;
|
|
||||||
static const std::string CFG_ECDH_CURVE;
|
|
||||||
|
|
||||||
#ifdef OPENSSL_FIPS
|
|
||||||
static const std::string CFG_FIPS_MODE;
|
|
||||||
static const bool VAL_FIPS_MODE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
friend class Poco::SingletonHolder<SSLManager>;
|
friend class Poco::SingletonHolder<SSLManager>;
|
||||||
friend class Context;
|
friend class Context;
|
||||||
|
@ -330,27 +330,26 @@ void SSLManager::initDefaultContext(bool server)
|
|||||||
else
|
else
|
||||||
_ptrDefaultClientContext->disableProtocols(disabledProtocols);
|
_ptrDefaultClientContext->disableProtocols(disabledProtocols);
|
||||||
|
|
||||||
/// Temporarily disabled during the transition from boringssl to OpenSSL due to tsan issues.
|
bool cacheSessions = config.getBool(prefix + CFG_CACHE_SESSIONS, false);
|
||||||
/// bool cacheSessions = config.getBool(prefix + CFG_CACHE_SESSIONS, false);
|
if (server)
|
||||||
/// if (server)
|
{
|
||||||
/// {
|
std::string sessionIdContext = config.getString(prefix + CFG_SESSION_ID_CONTEXT, config.getString("application.name", ""));
|
||||||
/// std::string sessionIdContext = config.getString(prefix + CFG_SESSION_ID_CONTEXT, config.getString("application.name", ""));
|
_ptrDefaultServerContext->enableSessionCache(cacheSessions, sessionIdContext);
|
||||||
/// _ptrDefaultServerContext->enableSessionCache(cacheSessions, sessionIdContext);
|
if (config.hasProperty(prefix + CFG_SESSION_CACHE_SIZE))
|
||||||
/// if (config.hasProperty(prefix + CFG_SESSION_CACHE_SIZE))
|
{
|
||||||
/// {
|
int cacheSize = config.getInt(prefix + CFG_SESSION_CACHE_SIZE);
|
||||||
/// int cacheSize = config.getInt(prefix + CFG_SESSION_CACHE_SIZE);
|
_ptrDefaultServerContext->setSessionCacheSize(cacheSize);
|
||||||
/// _ptrDefaultServerContext->setSessionCacheSize(cacheSize);
|
}
|
||||||
/// }
|
if (config.hasProperty(prefix + CFG_SESSION_TIMEOUT))
|
||||||
/// if (config.hasProperty(prefix + CFG_SESSION_TIMEOUT))
|
{
|
||||||
/// {
|
int timeout = config.getInt(prefix + CFG_SESSION_TIMEOUT);
|
||||||
/// int timeout = config.getInt(prefix + CFG_SESSION_TIMEOUT);
|
_ptrDefaultServerContext->setSessionTimeout(timeout);
|
||||||
/// _ptrDefaultServerContext->setSessionTimeout(timeout);
|
}
|
||||||
/// }
|
}
|
||||||
/// }
|
else
|
||||||
/// else
|
{
|
||||||
/// {
|
_ptrDefaultClientContext->enableSessionCache(cacheSessions);
|
||||||
/// _ptrDefaultClientContext->enableSessionCache(cacheSessions);
|
}
|
||||||
/// }
|
|
||||||
bool extendedVerification = config.getBool(prefix + CFG_EXTENDED_VERIFICATION, false);
|
bool extendedVerification = config.getBool(prefix + CFG_EXTENDED_VERIFICATION, false);
|
||||||
if (server)
|
if (server)
|
||||||
_ptrDefaultServerContext->enableExtendedCertificateVerification(extendedVerification);
|
_ptrDefaultServerContext->enableExtendedCertificateVerification(extendedVerification);
|
||||||
@ -429,6 +428,23 @@ void SSLManager::initCertificateHandler(bool server)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Context::Ptr SSLManager::getCustomServerContext(const std::string & name)
|
||||||
|
{
|
||||||
|
Poco::FastMutex::ScopedLock lock(_mutex);
|
||||||
|
auto it = _mapPtrServerContexts.find(name);
|
||||||
|
if (it != _mapPtrServerContexts.end())
|
||||||
|
return it->second;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
Context::Ptr SSLManager::setCustomServerContext(const std::string & name, Context::Ptr ctx)
|
||||||
|
{
|
||||||
|
Poco::FastMutex::ScopedLock lock(_mutex);
|
||||||
|
ctx = _mapPtrServerContexts.insert({name, ctx}).first->second;
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Poco::Util::AbstractConfiguration& SSLManager::appConfig()
|
Poco::Util::AbstractConfiguration& SSLManager::appConfig()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
# This variables autochanged by tests/ci/version_helper.py:
|
# This variables autochanged by tests/ci/version_helper.py:
|
||||||
|
|
||||||
# NOTE: has nothing common with DBMS_TCP_PROTOCOL_VERSION,
|
# NOTE: VERSION_REVISION has nothing common with DBMS_TCP_PROTOCOL_VERSION,
|
||||||
# only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes.
|
# only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes.
|
||||||
SET(VERSION_REVISION 54487)
|
SET(VERSION_REVISION 54488)
|
||||||
SET(VERSION_MAJOR 24)
|
SET(VERSION_MAJOR 24)
|
||||||
SET(VERSION_MINOR 6)
|
SET(VERSION_MINOR 7)
|
||||||
SET(VERSION_PATCH 1)
|
SET(VERSION_PATCH 1)
|
||||||
SET(VERSION_GITHASH 70a1d3a63d47f0be077d67b8deb907230fc7cfb0)
|
SET(VERSION_GITHASH aa023477a9265e403982fca5ee29a714db5133d9)
|
||||||
SET(VERSION_DESCRIBE v24.6.1.1-testing)
|
SET(VERSION_DESCRIBE v24.7.1.1-testing)
|
||||||
SET(VERSION_STRING 24.6.1.1)
|
SET(VERSION_STRING 24.7.1.1)
|
||||||
# end of autochange
|
# end of autochange
|
||||||
|
2
contrib/aws
vendored
2
contrib/aws
vendored
@ -1 +1 @@
|
|||||||
Subproject commit deeaa9e7c5fe690e3dacc4005d7ecfa7a66a32bb
|
Subproject commit 1c2946bfcb7f1e3ae0a858de0b59d4f1a7b4ccaf
|
2
contrib/fmtlib
vendored
2
contrib/fmtlib
vendored
@ -1 +1 @@
|
|||||||
Subproject commit b6f4ceaed0a0a24ccf575fab6c56dd50ccf6f1a9
|
Subproject commit a33701196adfad74917046096bf5a2aa0ab0bb50
|
@ -13,7 +13,6 @@ set (SRCS
|
|||||||
${FMT_SOURCE_DIR}/include/fmt/core.h
|
${FMT_SOURCE_DIR}/include/fmt/core.h
|
||||||
${FMT_SOURCE_DIR}/include/fmt/format.h
|
${FMT_SOURCE_DIR}/include/fmt/format.h
|
||||||
${FMT_SOURCE_DIR}/include/fmt/format-inl.h
|
${FMT_SOURCE_DIR}/include/fmt/format-inl.h
|
||||||
${FMT_SOURCE_DIR}/include/fmt/locale.h
|
|
||||||
${FMT_SOURCE_DIR}/include/fmt/os.h
|
${FMT_SOURCE_DIR}/include/fmt/os.h
|
||||||
${FMT_SOURCE_DIR}/include/fmt/ostream.h
|
${FMT_SOURCE_DIR}/include/fmt/ostream.h
|
||||||
${FMT_SOURCE_DIR}/include/fmt/printf.h
|
${FMT_SOURCE_DIR}/include/fmt/printf.h
|
||||||
|
2
contrib/openssl
vendored
2
contrib/openssl
vendored
@ -1 +1 @@
|
|||||||
Subproject commit f7b8721dfc66abb147f24ca07b9c9d1d64f40f71
|
Subproject commit 5d81fa7068fc8c07f4d0997d5b703f3c541a637c
|
2
contrib/re2
vendored
2
contrib/re2
vendored
@ -1 +1 @@
|
|||||||
Subproject commit a807e8a3aac2cc33c77b7071efea54fcabe38e0c
|
Subproject commit 85dd7ad833a73095ecf3e3baea608ba051bbe2c7
|
@ -28,16 +28,20 @@ set(RE2_SOURCES
|
|||||||
add_library(_re2 ${RE2_SOURCES})
|
add_library(_re2 ${RE2_SOURCES})
|
||||||
target_include_directories(_re2 PUBLIC "${SRC_DIR}")
|
target_include_directories(_re2 PUBLIC "${SRC_DIR}")
|
||||||
target_link_libraries(_re2 PRIVATE
|
target_link_libraries(_re2 PRIVATE
|
||||||
|
absl::absl_check
|
||||||
|
absl::absl_log
|
||||||
absl::base
|
absl::base
|
||||||
absl::core_headers
|
absl::core_headers
|
||||||
absl::fixed_array
|
absl::fixed_array
|
||||||
|
absl::flags
|
||||||
absl::flat_hash_map
|
absl::flat_hash_map
|
||||||
absl::flat_hash_set
|
absl::flat_hash_set
|
||||||
|
absl::hash
|
||||||
absl::inlined_vector
|
absl::inlined_vector
|
||||||
absl::strings
|
|
||||||
absl::str_format
|
|
||||||
absl::synchronization
|
|
||||||
absl::optional
|
absl::optional
|
||||||
absl::span)
|
absl::span
|
||||||
|
absl::str_format
|
||||||
|
absl::strings
|
||||||
|
absl::synchronization)
|
||||||
|
|
||||||
add_library(ch_contrib::re2 ALIAS _re2)
|
add_library(ch_contrib::re2 ALIAS _re2)
|
||||||
|
@ -34,7 +34,7 @@ RUN arch=${TARGETARCH:-amd64} \
|
|||||||
# lts / testing / prestable / etc
|
# lts / testing / prestable / etc
|
||||||
ARG REPO_CHANNEL="stable"
|
ARG REPO_CHANNEL="stable"
|
||||||
ARG REPOSITORY="https://packages.clickhouse.com/tgz/${REPO_CHANNEL}"
|
ARG REPOSITORY="https://packages.clickhouse.com/tgz/${REPO_CHANNEL}"
|
||||||
ARG VERSION="24.5.1.1763"
|
ARG VERSION="24.5.3.5"
|
||||||
ARG PACKAGES="clickhouse-keeper"
|
ARG PACKAGES="clickhouse-keeper"
|
||||||
ARG DIRECT_DOWNLOAD_URLS=""
|
ARG DIRECT_DOWNLOAD_URLS=""
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ RUN arch=${TARGETARCH:-amd64} \
|
|||||||
# lts / testing / prestable / etc
|
# lts / testing / prestable / etc
|
||||||
ARG REPO_CHANNEL="stable"
|
ARG REPO_CHANNEL="stable"
|
||||||
ARG REPOSITORY="https://packages.clickhouse.com/tgz/${REPO_CHANNEL}"
|
ARG REPOSITORY="https://packages.clickhouse.com/tgz/${REPO_CHANNEL}"
|
||||||
ARG VERSION="24.5.1.1763"
|
ARG VERSION="24.5.3.5"
|
||||||
ARG PACKAGES="clickhouse-client clickhouse-server clickhouse-common-static"
|
ARG PACKAGES="clickhouse-client clickhouse-server clickhouse-common-static"
|
||||||
ARG DIRECT_DOWNLOAD_URLS=""
|
ARG DIRECT_DOWNLOAD_URLS=""
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ RUN sed -i "s|http://archive.ubuntu.com|${apt_archive}|g" /etc/apt/sources.list
|
|||||||
|
|
||||||
ARG REPO_CHANNEL="stable"
|
ARG REPO_CHANNEL="stable"
|
||||||
ARG REPOSITORY="deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb ${REPO_CHANNEL} main"
|
ARG REPOSITORY="deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb ${REPO_CHANNEL} main"
|
||||||
ARG VERSION="24.5.1.1763"
|
ARG VERSION="24.5.3.5"
|
||||||
ARG PACKAGES="clickhouse-client clickhouse-server clickhouse-common-static"
|
ARG PACKAGES="clickhouse-client clickhouse-server clickhouse-common-static"
|
||||||
|
|
||||||
#docker-official-library:off
|
#docker-official-library:off
|
||||||
|
@ -208,6 +208,7 @@ handle SIGPIPE nostop noprint pass
|
|||||||
handle SIGTERM nostop noprint pass
|
handle SIGTERM nostop noprint pass
|
||||||
handle SIGUSR1 nostop noprint pass
|
handle SIGUSR1 nostop noprint pass
|
||||||
handle SIGUSR2 nostop noprint pass
|
handle SIGUSR2 nostop noprint pass
|
||||||
|
handle SIGSEGV nostop pass
|
||||||
handle SIG$RTMIN nostop noprint pass
|
handle SIG$RTMIN nostop noprint pass
|
||||||
info signals
|
info signals
|
||||||
continue
|
continue
|
||||||
|
@ -20,6 +20,7 @@ handle SIGPIPE nostop noprint pass
|
|||||||
handle SIGTERM nostop noprint pass
|
handle SIGTERM nostop noprint pass
|
||||||
handle SIGUSR1 nostop noprint pass
|
handle SIGUSR1 nostop noprint pass
|
||||||
handle SIGUSR2 nostop noprint pass
|
handle SIGUSR2 nostop noprint pass
|
||||||
|
handle SIGSEGV nostop pass
|
||||||
handle SIG$RTMIN nostop noprint pass
|
handle SIG$RTMIN nostop noprint pass
|
||||||
info signals
|
info signals
|
||||||
continue
|
continue
|
||||||
|
@ -254,7 +254,7 @@ function run_tests()
|
|||||||
|
|
||||||
set +e
|
set +e
|
||||||
clickhouse-test --testname --shard --zookeeper --check-zookeeper-session --hung-check --print-time \
|
clickhouse-test --testname --shard --zookeeper --check-zookeeper-session --hung-check --print-time \
|
||||||
--test-runs "$NUM_TRIES" "${ADDITIONAL_OPTIONS[@]}" 2>&1 \
|
--no-drop-if-fail --test-runs "$NUM_TRIES" "${ADDITIONAL_OPTIONS[@]}" 2>&1 \
|
||||||
| ts '%Y-%m-%d %H:%M:%S' \
|
| ts '%Y-%m-%d %H:%M:%S' \
|
||||||
| tee -a test_output/test_result.txt
|
| tee -a test_output/test_result.txt
|
||||||
set -e
|
set -e
|
||||||
@ -285,7 +285,7 @@ stop_logs_replication
|
|||||||
|
|
||||||
# Try to get logs while server is running
|
# Try to get logs while server is running
|
||||||
failed_to_save_logs=0
|
failed_to_save_logs=0
|
||||||
for table in query_log zookeeper_log trace_log transactions_info_log metric_log blob_storage_log
|
for table in query_log zookeeper_log trace_log transactions_info_log metric_log blob_storage_log error_log
|
||||||
do
|
do
|
||||||
err=$(clickhouse-client -q "select * from system.$table into outfile '/test_output/$table.tsv.gz' format TSVWithNamesAndTypes")
|
err=$(clickhouse-client -q "select * from system.$table into outfile '/test_output/$table.tsv.gz' format TSVWithNamesAndTypes")
|
||||||
echo "$err"
|
echo "$err"
|
||||||
@ -339,7 +339,7 @@ if [ $failed_to_save_logs -ne 0 ]; then
|
|||||||
# directly
|
# directly
|
||||||
# - even though ci auto-compress some files (but not *.tsv) it does this only
|
# - even though ci auto-compress some files (but not *.tsv) it does this only
|
||||||
# for files >64MB, we want this files to be compressed explicitly
|
# for files >64MB, we want this files to be compressed explicitly
|
||||||
for table in query_log zookeeper_log trace_log transactions_info_log metric_log blob_storage_log
|
for table in query_log zookeeper_log trace_log transactions_info_log metric_log blob_storage_log error_log
|
||||||
do
|
do
|
||||||
clickhouse-local "$data_path_config" --only-system-tables --stacktrace -q "select * from system.$table format TSVWithNamesAndTypes" | zstd --threads=0 > /test_output/$table.tsv.zst ||:
|
clickhouse-local "$data_path_config" --only-system-tables --stacktrace -q "select * from system.$table format TSVWithNamesAndTypes" | zstd --threads=0 > /test_output/$table.tsv.zst ||:
|
||||||
if [[ -n "$USE_DATABASE_REPLICATED" ]] && [[ "$USE_DATABASE_REPLICATED" -eq 1 ]]; then
|
if [[ -n "$USE_DATABASE_REPLICATED" ]] && [[ "$USE_DATABASE_REPLICATED" -eq 1 ]]; then
|
||||||
@ -379,6 +379,10 @@ fi
|
|||||||
|
|
||||||
tar -chf /test_output/coordination.tar /var/lib/clickhouse/coordination ||:
|
tar -chf /test_output/coordination.tar /var/lib/clickhouse/coordination ||:
|
||||||
|
|
||||||
|
rm -rf /var/lib/clickhouse/data/system/*/
|
||||||
|
tar -chf /test_output/store.tar /var/lib/clickhouse/store ||:
|
||||||
|
tar -chf /test_output/metadata.tar /var/lib/clickhouse/metadata/*.sql ||:
|
||||||
|
|
||||||
if [[ -n "$USE_DATABASE_REPLICATED" ]] && [[ "$USE_DATABASE_REPLICATED" -eq 1 ]]; then
|
if [[ -n "$USE_DATABASE_REPLICATED" ]] && [[ "$USE_DATABASE_REPLICATED" -eq 1 ]]; then
|
||||||
rg -Fa "<Fatal>" /var/log/clickhouse-server/clickhouse-server1.log ||:
|
rg -Fa "<Fatal>" /var/log/clickhouse-server/clickhouse-server1.log ||:
|
||||||
rg -Fa "<Fatal>" /var/log/clickhouse-server/clickhouse-server2.log ||:
|
rg -Fa "<Fatal>" /var/log/clickhouse-server/clickhouse-server2.log ||:
|
||||||
|
@ -89,10 +89,6 @@ function configure()
|
|||||||
# since we run clickhouse from root
|
# since we run clickhouse from root
|
||||||
sudo chown root: /var/lib/clickhouse
|
sudo chown root: /var/lib/clickhouse
|
||||||
|
|
||||||
# Set more frequent update period of asynchronous metrics to more frequently update information about real memory usage (less chance of OOM).
|
|
||||||
echo "<clickhouse><asynchronous_metrics_update_period_s>1</asynchronous_metrics_update_period_s></clickhouse>" \
|
|
||||||
> /etc/clickhouse-server/config.d/asynchronous_metrics_update_period_s.xml
|
|
||||||
|
|
||||||
local total_mem
|
local total_mem
|
||||||
total_mem=$(awk '/MemTotal/ { print $(NF-1) }' /proc/meminfo) # KiB
|
total_mem=$(awk '/MemTotal/ { print $(NF-1) }' /proc/meminfo) # KiB
|
||||||
total_mem=$(( total_mem*1024 )) # bytes
|
total_mem=$(( total_mem*1024 )) # bytes
|
||||||
|
@ -10,14 +10,15 @@ RUN sed -i "s|http://archive.ubuntu.com|$apt_archive|g" /etc/apt/sources.list
|
|||||||
RUN apt-get update && env DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
RUN apt-get update && env DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
aspell \
|
aspell \
|
||||||
curl \
|
curl \
|
||||||
git \
|
|
||||||
gh \
|
|
||||||
file \
|
file \
|
||||||
|
gh \
|
||||||
|
git \
|
||||||
libxml2-utils \
|
libxml2-utils \
|
||||||
|
locales \
|
||||||
moreutils \
|
moreutils \
|
||||||
python3-pip \
|
python3-pip \
|
||||||
yamllint \
|
yamllint \
|
||||||
locales \
|
zstd \
|
||||||
&& apt-get clean \
|
&& apt-get clean \
|
||||||
&& rm -rf /var/lib/apt/lists/* /var/cache/debconf /tmp/*
|
&& rm -rf /var/lib/apt/lists/* /var/cache/debconf /tmp/*
|
||||||
|
|
||||||
@ -33,8 +34,10 @@ RUN pip3 install \
|
|||||||
flake8==4.0.1 \
|
flake8==4.0.1 \
|
||||||
requests \
|
requests \
|
||||||
thefuzz \
|
thefuzz \
|
||||||
|
tqdm==4.66.4 \
|
||||||
types-requests \
|
types-requests \
|
||||||
unidiff \
|
unidiff \
|
||||||
|
jwt \
|
||||||
&& rm -rf /root/.cache/pip
|
&& rm -rf /root/.cache/pip
|
||||||
|
|
||||||
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen en_US.UTF-8
|
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen en_US.UTF-8
|
||||||
|
40
docs/changelogs/v23.8.15.35-lts.md
Normal file
40
docs/changelogs/v23.8.15.35-lts.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
sidebar_label: 2024
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### ClickHouse release v23.8.15.35-lts (060ff8e813a) FIXME as compared to v23.8.14.6-lts (967e51c1d6b)
|
||||||
|
|
||||||
|
#### Build/Testing/Packaging Improvement
|
||||||
|
* Backported in [#63621](https://github.com/ClickHouse/ClickHouse/issues/63621): The Dockerfile is reviewed by the docker official library in https://github.com/docker-library/official-images/pull/15846. [#63400](https://github.com/ClickHouse/ClickHouse/pull/63400) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#65153](https://github.com/ClickHouse/ClickHouse/issues/65153): Decrease the `unit-test` image a few times. [#65102](https://github.com/ClickHouse/ClickHouse/pull/65102) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
|
||||||
|
#### Bug Fix (user-visible misbehavior in an official stable release)
|
||||||
|
|
||||||
|
* Backported in [#64422](https://github.com/ClickHouse/ClickHouse/issues/64422): Fixes [#59989](https://github.com/ClickHouse/ClickHouse/issues/59989): runs init scripts when force-enabled or when no database exists, rather than the inverse. [#59991](https://github.com/ClickHouse/ClickHouse/pull/59991) ([jktng](https://github.com/jktng)).
|
||||||
|
* Backported in [#64016](https://github.com/ClickHouse/ClickHouse/issues/64016): Fix "Invalid storage definition in metadata file" for parameterized views. [#60708](https://github.com/ClickHouse/ClickHouse/pull/60708) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Backported in [#63456](https://github.com/ClickHouse/ClickHouse/issues/63456): Fix the issue where the function `addDays` (and similar functions) reports an error when the first parameter is `DateTime64`. [#61561](https://github.com/ClickHouse/ClickHouse/pull/61561) ([Shuai li](https://github.com/loneylee)).
|
||||||
|
* Backported in [#63289](https://github.com/ClickHouse/ClickHouse/issues/63289): Fix crash with untuple and unresolved lambda. [#63131](https://github.com/ClickHouse/ClickHouse/pull/63131) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#63512](https://github.com/ClickHouse/ClickHouse/issues/63512): Fix `X-ClickHouse-Timezone` header returning wrong timezone when using `session_timezone` as query level setting. [#63377](https://github.com/ClickHouse/ClickHouse/pull/63377) ([Andrey Zvonov](https://github.com/zvonand)).
|
||||||
|
* Backported in [#63902](https://github.com/ClickHouse/ClickHouse/issues/63902): `query_plan_remove_redundant_distinct` can break queries with WINDOW FUNCTIONS (with `allow_experimental_analyzer` is on). Fixes [#62820](https://github.com/ClickHouse/ClickHouse/issues/62820). [#63776](https://github.com/ClickHouse/ClickHouse/pull/63776) ([Igor Nikonov](https://github.com/devcrafter)).
|
||||||
|
* Backported in [#64104](https://github.com/ClickHouse/ClickHouse/issues/64104): Deserialize untrusted binary inputs in a safer way. [#64024](https://github.com/ClickHouse/ClickHouse/pull/64024) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Backported in [#64265](https://github.com/ClickHouse/ClickHouse/issues/64265): Prevent LOGICAL_ERROR on CREATE TABLE as MaterializedView. [#64174](https://github.com/ClickHouse/ClickHouse/pull/64174) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#64867](https://github.com/ClickHouse/ClickHouse/issues/64867): Fixed memory possible incorrect memory tracking in several kinds of queries: queries that read any data from S3, queries via http protocol, asynchronous inserts. [#64844](https://github.com/ClickHouse/ClickHouse/pull/64844) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
|
||||||
|
#### NO CL CATEGORY
|
||||||
|
|
||||||
|
* Backported in [#63704](https://github.com/ClickHouse/ClickHouse/issues/63704):. [#63415](https://github.com/ClickHouse/ClickHouse/pull/63415) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
|
||||||
|
#### NO CL ENTRY
|
||||||
|
|
||||||
|
* NO CL ENTRY: 'Installation test has wrong check_state'. [#63994](https://github.com/ClickHouse/ClickHouse/pull/63994) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
|
||||||
|
#### NOT FOR CHANGELOG / INSIGNIFICANT
|
||||||
|
|
||||||
|
* Backported in [#63343](https://github.com/ClickHouse/ClickHouse/issues/63343): The commit url has different pattern. [#63331](https://github.com/ClickHouse/ClickHouse/pull/63331) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#63965](https://github.com/ClickHouse/ClickHouse/issues/63965): fix 02124_insert_deduplication_token_multiple_blocks. [#63950](https://github.com/ClickHouse/ClickHouse/pull/63950) ([Han Fei](https://github.com/hanfei1991)).
|
||||||
|
* Backported in [#64043](https://github.com/ClickHouse/ClickHouse/issues/64043): Do not create new release in release branch automatically. [#64039](https://github.com/ClickHouse/ClickHouse/pull/64039) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Pin requests to fix the integration tests. [#65183](https://github.com/ClickHouse/ClickHouse/pull/65183) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
|
45
docs/changelogs/v24.1.6.52-stable.md
Normal file
45
docs/changelogs/v24.1.6.52-stable.md
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
sidebar_label: 2024
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### ClickHouse release v24.1.6.52-stable (fa09f677bc9) FIXME as compared to v24.1.5.6-stable (7f67181ff31)
|
||||||
|
|
||||||
|
#### Improvement
|
||||||
|
* Backported in [#60292](https://github.com/ClickHouse/ClickHouse/issues/60292): Copy S3 file GCP fallback to buffer copy in case GCP returned `Internal Error` with `GATEWAY_TIMEOUT` HTTP error code. [#60164](https://github.com/ClickHouse/ClickHouse/pull/60164) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Backported in [#60832](https://github.com/ClickHouse/ClickHouse/issues/60832): Update tzdata to 2024a. [#60768](https://github.com/ClickHouse/ClickHouse/pull/60768) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
|
||||||
|
#### Bug Fix (user-visible misbehavior in an official stable release)
|
||||||
|
|
||||||
|
* Backported in [#60413](https://github.com/ClickHouse/ClickHouse/issues/60413): Fix segmentation fault in KQL parser when the input query exceeds the `max_query_size`. Also re-enable the KQL dialect. Fixes [#59036](https://github.com/ClickHouse/ClickHouse/issues/59036) and [#59037](https://github.com/ClickHouse/ClickHouse/issues/59037). [#59626](https://github.com/ClickHouse/ClickHouse/pull/59626) ([Yong Wang](https://github.com/kashwy)).
|
||||||
|
* Backported in [#60074](https://github.com/ClickHouse/ClickHouse/issues/60074): Fix error `Read beyond last offset` for `AsynchronousBoundedReadBuffer`. [#59630](https://github.com/ClickHouse/ClickHouse/pull/59630) ([Vitaly Baranov](https://github.com/vitlibar)).
|
||||||
|
* Backported in [#60299](https://github.com/ClickHouse/ClickHouse/issues/60299): Fix having neigher acked nor nacked messages. If exception happens during read-write phase, messages will be nacked. [#59775](https://github.com/ClickHouse/ClickHouse/pull/59775) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Backported in [#60066](https://github.com/ClickHouse/ClickHouse/issues/60066): Fix optimize_uniq_to_count removing the column alias. [#60026](https://github.com/ClickHouse/ClickHouse/pull/60026) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#60638](https://github.com/ClickHouse/ClickHouse/issues/60638): Fixed a bug in parallel optimization for queries with `FINAL`, which could give an incorrect result in rare cases. [#60041](https://github.com/ClickHouse/ClickHouse/pull/60041) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Backported in [#60177](https://github.com/ClickHouse/ClickHouse/issues/60177): Fix cosineDistance crash with Nullable. [#60150](https://github.com/ClickHouse/ClickHouse/pull/60150) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#60279](https://github.com/ClickHouse/ClickHouse/issues/60279): Hide sensitive info for `S3Queue` table engine. [#60233](https://github.com/ClickHouse/ClickHouse/pull/60233) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Backported in [#61000](https://github.com/ClickHouse/ClickHouse/issues/61000): Reduce the number of read rows from `system.numbers`. Fixes [#59418](https://github.com/ClickHouse/ClickHouse/issues/59418). [#60546](https://github.com/ClickHouse/ClickHouse/pull/60546) ([JackyWoo](https://github.com/JackyWoo)).
|
||||||
|
* Backported in [#60791](https://github.com/ClickHouse/ClickHouse/issues/60791): Fix buffer overflow that can happen if the attacker asks the HTTP server to decompress data with a composition of codecs and size triggering numeric overflow. Fix buffer overflow that can happen inside codec NONE on wrong input data. This was submitted by TIANGONG research team through our [Bug Bounty program](https://github.com/ClickHouse/ClickHouse/issues/38986). [#60731](https://github.com/ClickHouse/ClickHouse/pull/60731) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Backported in [#60783](https://github.com/ClickHouse/ClickHouse/issues/60783): Functions for SQL/JSON were able to read uninitialized memory. This closes [#60017](https://github.com/ClickHouse/ClickHouse/issues/60017). Found by Fuzzer. [#60738](https://github.com/ClickHouse/ClickHouse/pull/60738) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Backported in [#60803](https://github.com/ClickHouse/ClickHouse/issues/60803): Do not set aws custom metadata `x-amz-meta-*` headers on UploadPart & CompleteMultipartUpload calls. [#60748](https://github.com/ClickHouse/ClickHouse/pull/60748) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
|
||||||
|
* Backported in [#60820](https://github.com/ClickHouse/ClickHouse/issues/60820): Fix crash in arrayEnumerateRanked. [#60764](https://github.com/ClickHouse/ClickHouse/pull/60764) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#60841](https://github.com/ClickHouse/ClickHouse/issues/60841): Fix crash when using input() in INSERT SELECT JOIN. Closes [#60035](https://github.com/ClickHouse/ClickHouse/issues/60035). [#60765](https://github.com/ClickHouse/ClickHouse/pull/60765) ([Kruglov Pavel](https://github.com/Avogar)).
|
||||||
|
* Backported in [#60904](https://github.com/ClickHouse/ClickHouse/issues/60904): Avoid segfault if too many keys are skipped when reading from S3. [#60849](https://github.com/ClickHouse/ClickHouse/pull/60849) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
|
||||||
|
#### NO CL CATEGORY
|
||||||
|
|
||||||
|
* Backported in [#60186](https://github.com/ClickHouse/ClickHouse/issues/60186):. [#60181](https://github.com/ClickHouse/ClickHouse/pull/60181) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
|
||||||
|
#### NOT FOR CHANGELOG / INSIGNIFICANT
|
||||||
|
|
||||||
|
* Backported in [#60333](https://github.com/ClickHouse/ClickHouse/issues/60333): CI: Fix job failures due to jepsen artifacts. [#59890](https://github.com/ClickHouse/ClickHouse/pull/59890) ([Max K.](https://github.com/maxknv)).
|
||||||
|
* Backported in [#60034](https://github.com/ClickHouse/ClickHouse/issues/60034): Fix mark release ready. [#59994](https://github.com/ClickHouse/ClickHouse/pull/59994) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#60326](https://github.com/ClickHouse/ClickHouse/issues/60326): Ability to detect undead ZooKeeper sessions. [#60044](https://github.com/ClickHouse/ClickHouse/pull/60044) ([Alexander Tokmakov](https://github.com/tavplubix)).
|
||||||
|
* Backported in [#60363](https://github.com/ClickHouse/ClickHouse/issues/60363): CI: hot fix for gh statuses. [#60201](https://github.com/ClickHouse/ClickHouse/pull/60201) ([Max K.](https://github.com/maxknv)).
|
||||||
|
* Backported in [#60648](https://github.com/ClickHouse/ClickHouse/issues/60648): Detect io_uring in tests. [#60373](https://github.com/ClickHouse/ClickHouse/pull/60373) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Backported in [#60569](https://github.com/ClickHouse/ClickHouse/issues/60569): Remove broken test while we fix it. [#60547](https://github.com/ClickHouse/ClickHouse/pull/60547) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#60756](https://github.com/ClickHouse/ClickHouse/issues/60756): Update shellcheck. [#60553](https://github.com/ClickHouse/ClickHouse/pull/60553) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#60584](https://github.com/ClickHouse/ClickHouse/issues/60584): CI: fix docker build job name. [#60554](https://github.com/ClickHouse/ClickHouse/pull/60554) ([Max K.](https://github.com/maxknv)).
|
||||||
|
|
100
docs/changelogs/v24.3.4.147-lts.md
Normal file
100
docs/changelogs/v24.3.4.147-lts.md
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
sidebar_label: 2024
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### ClickHouse release v24.3.4.147-lts (31a7bdc346d) FIXME as compared to v24.3.3.102-lts (7e7f3bdd9be)
|
||||||
|
|
||||||
|
#### Improvement
|
||||||
|
* Backported in [#63465](https://github.com/ClickHouse/ClickHouse/issues/63465): Make rabbitmq nack broken messages. Closes [#45350](https://github.com/ClickHouse/ClickHouse/issues/45350). [#60312](https://github.com/ClickHouse/ClickHouse/pull/60312) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Backported in [#64290](https://github.com/ClickHouse/ClickHouse/issues/64290): Fix logical-error when undoing quorum insert transaction. [#61953](https://github.com/ClickHouse/ClickHouse/pull/61953) ([Han Fei](https://github.com/hanfei1991)).
|
||||||
|
|
||||||
|
#### Build/Testing/Packaging Improvement
|
||||||
|
* Backported in [#63610](https://github.com/ClickHouse/ClickHouse/issues/63610): The Dockerfile is reviewed by the docker official library in https://github.com/docker-library/official-images/pull/15846. [#63400](https://github.com/ClickHouse/ClickHouse/pull/63400) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#65128](https://github.com/ClickHouse/ClickHouse/issues/65128): Decrease the `unit-test` image a few times. [#65102](https://github.com/ClickHouse/ClickHouse/pull/65102) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
|
||||||
|
#### Bug Fix (user-visible misbehavior in an official stable release)
|
||||||
|
|
||||||
|
* Backported in [#64277](https://github.com/ClickHouse/ClickHouse/issues/64277): Fix queries with FINAL give wrong result when table does not use adaptive granularity. [#62432](https://github.com/ClickHouse/ClickHouse/pull/62432) ([Duc Canh Le](https://github.com/canhld94)).
|
||||||
|
* Backported in [#63716](https://github.com/ClickHouse/ClickHouse/issues/63716): Fix excessive memory usage for queries with nested lambdas. Fixes [#62036](https://github.com/ClickHouse/ClickHouse/issues/62036). [#62462](https://github.com/ClickHouse/ClickHouse/pull/62462) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#63247](https://github.com/ClickHouse/ClickHouse/issues/63247): Fix size checks when updating materialized nested columns ( fixes [#62731](https://github.com/ClickHouse/ClickHouse/issues/62731) ). [#62773](https://github.com/ClickHouse/ClickHouse/pull/62773) ([Eliot Hautefeuille](https://github.com/hileef)).
|
||||||
|
* Backported in [#62984](https://github.com/ClickHouse/ClickHouse/issues/62984): Fix the `Unexpected return type` error for queries that read from `StorageBuffer` with `PREWHERE` when the source table has different types. Fixes [#62545](https://github.com/ClickHouse/ClickHouse/issues/62545). [#62916](https://github.com/ClickHouse/ClickHouse/pull/62916) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#63185](https://github.com/ClickHouse/ClickHouse/issues/63185): Sanity check: Clamp values instead of throwing. [#63119](https://github.com/ClickHouse/ClickHouse/pull/63119) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#63293](https://github.com/ClickHouse/ClickHouse/issues/63293): Fix crash with untuple and unresolved lambda. [#63131](https://github.com/ClickHouse/ClickHouse/pull/63131) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#63411](https://github.com/ClickHouse/ClickHouse/issues/63411): Fix a misbehavior when SQL security defaults don't load for old tables during server startup. [#63209](https://github.com/ClickHouse/ClickHouse/pull/63209) ([pufit](https://github.com/pufit)).
|
||||||
|
* Backported in [#63616](https://github.com/ClickHouse/ClickHouse/issues/63616): Fix bug which could potentially lead to rare LOGICAL_ERROR during SELECT query with message: `Unexpected return type from materialize. Expected type_XXX. Got type_YYY.` Introduced in [#59379](https://github.com/ClickHouse/ClickHouse/issues/59379). [#63353](https://github.com/ClickHouse/ClickHouse/pull/63353) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#63455](https://github.com/ClickHouse/ClickHouse/issues/63455): Fix `X-ClickHouse-Timezone` header returning wrong timezone when using `session_timezone` as query level setting. [#63377](https://github.com/ClickHouse/ClickHouse/pull/63377) ([Andrey Zvonov](https://github.com/zvonand)).
|
||||||
|
* Backported in [#63603](https://github.com/ClickHouse/ClickHouse/issues/63603): Fix backup of projection part in case projection was removed from table metadata, but part still has projection. [#63426](https://github.com/ClickHouse/ClickHouse/pull/63426) ([Kseniia Sumarokova](https://github.com/kssenii)).
|
||||||
|
* Backported in [#63508](https://github.com/ClickHouse/ClickHouse/issues/63508): Fix 'Every derived table must have its own alias' error for MYSQL dictionary source, close [#63341](https://github.com/ClickHouse/ClickHouse/issues/63341). [#63481](https://github.com/ClickHouse/ClickHouse/pull/63481) ([vdimir](https://github.com/vdimir)).
|
||||||
|
* Backported in [#63595](https://github.com/ClickHouse/ClickHouse/issues/63595): Avoid segafult in `MergeTreePrefetchedReadPool` while fetching projection parts. [#63513](https://github.com/ClickHouse/ClickHouse/pull/63513) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Backported in [#63748](https://github.com/ClickHouse/ClickHouse/issues/63748): Read only the necessary columns from VIEW (new analyzer). Closes [#62594](https://github.com/ClickHouse/ClickHouse/issues/62594). [#63688](https://github.com/ClickHouse/ClickHouse/pull/63688) ([Maksim Kita](https://github.com/kitaisreal)).
|
||||||
|
* Backported in [#63770](https://github.com/ClickHouse/ClickHouse/issues/63770): Fix [#63539](https://github.com/ClickHouse/ClickHouse/issues/63539). Forbid WINDOW redefinition in new analyzer. [#63694](https://github.com/ClickHouse/ClickHouse/pull/63694) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Backported in [#64189](https://github.com/ClickHouse/ClickHouse/issues/64189): Fix `Not found column` and `CAST AS Map from array requires nested tuple of 2 elements` exceptions for distributed queries which use `Map(Nothing, Nothing)` type. Fixes [#63637](https://github.com/ClickHouse/ClickHouse/issues/63637). [#63753](https://github.com/ClickHouse/ClickHouse/pull/63753) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#63845](https://github.com/ClickHouse/ClickHouse/issues/63845): Fix possible `ILLEGAL_COLUMN` error in `partial_merge` join, close [#37928](https://github.com/ClickHouse/ClickHouse/issues/37928). [#63755](https://github.com/ClickHouse/ClickHouse/pull/63755) ([vdimir](https://github.com/vdimir)).
|
||||||
|
* Backported in [#63906](https://github.com/ClickHouse/ClickHouse/issues/63906): `query_plan_remove_redundant_distinct` can break queries with WINDOW FUNCTIONS (with `allow_experimental_analyzer` is on). Fixes [#62820](https://github.com/ClickHouse/ClickHouse/issues/62820). [#63776](https://github.com/ClickHouse/ClickHouse/pull/63776) ([Igor Nikonov](https://github.com/devcrafter)).
|
||||||
|
* Backported in [#63989](https://github.com/ClickHouse/ClickHouse/issues/63989): Fix incorrect select query result when parallel replicas were used to read from a Materialized View. [#63861](https://github.com/ClickHouse/ClickHouse/pull/63861) ([Nikita Taranov](https://github.com/nickitat)).
|
||||||
|
* Backported in [#64031](https://github.com/ClickHouse/ClickHouse/issues/64031): Fix a error `Database name is empty` for remote queries with lambdas over the cluster with modified default database. Fixes [#63471](https://github.com/ClickHouse/ClickHouse/issues/63471). [#63864](https://github.com/ClickHouse/ClickHouse/pull/63864) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#64559](https://github.com/ClickHouse/ClickHouse/issues/64559): Fix SIGSEGV due to CPU/Real (`query_profiler_real_time_period_ns`/`query_profiler_cpu_time_period_ns`) profiler (has been an issue since 2022, that leads to periodic server crashes, especially if you were using distributed engine). [#63865](https://github.com/ClickHouse/ClickHouse/pull/63865) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Backported in [#64009](https://github.com/ClickHouse/ClickHouse/issues/64009): Fix analyzer - IN function with arbitrary deep sub-selects in materialized view to use insertion block. [#63930](https://github.com/ClickHouse/ClickHouse/pull/63930) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
|
||||||
|
* Backported in [#64236](https://github.com/ClickHouse/ClickHouse/issues/64236): Fix resolve of unqualified COLUMNS matcher. Preserve the input columns order and forbid usage of unknown identifiers. [#63962](https://github.com/ClickHouse/ClickHouse/pull/63962) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Backported in [#64106](https://github.com/ClickHouse/ClickHouse/issues/64106): Deserialize untrusted binary inputs in a safer way. [#64024](https://github.com/ClickHouse/ClickHouse/pull/64024) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Backported in [#64168](https://github.com/ClickHouse/ClickHouse/issues/64168): Add missing settings to recoverLostReplica. [#64040](https://github.com/ClickHouse/ClickHouse/pull/64040) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#64320](https://github.com/ClickHouse/ClickHouse/issues/64320): This fix will use a proper redefined context with the correct definer for each individual view in the query pipeline Closes [#63777](https://github.com/ClickHouse/ClickHouse/issues/63777). [#64079](https://github.com/ClickHouse/ClickHouse/pull/64079) ([pufit](https://github.com/pufit)).
|
||||||
|
* Backported in [#64380](https://github.com/ClickHouse/ClickHouse/issues/64380): Fix analyzer: "Not found column" error is fixed when using INTERPOLATE. [#64096](https://github.com/ClickHouse/ClickHouse/pull/64096) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
|
||||||
|
* Backported in [#64567](https://github.com/ClickHouse/ClickHouse/issues/64567): Fix creating backups to S3 buckets with different credentials from the disk containing the file. [#64153](https://github.com/ClickHouse/ClickHouse/pull/64153) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Backported in [#64270](https://github.com/ClickHouse/ClickHouse/issues/64270): Prevent LOGICAL_ERROR on CREATE TABLE as MaterializedView. [#64174](https://github.com/ClickHouse/ClickHouse/pull/64174) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#64339](https://github.com/ClickHouse/ClickHouse/issues/64339): The query cache now considers two identical queries against different databases as different. The previous behavior could be used to bypass missing privileges to read from a table. [#64199](https://github.com/ClickHouse/ClickHouse/pull/64199) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Backported in [#64259](https://github.com/ClickHouse/ClickHouse/issues/64259): Ignore `text_log` config when using Keeper. [#64218](https://github.com/ClickHouse/ClickHouse/pull/64218) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Backported in [#64688](https://github.com/ClickHouse/ClickHouse/issues/64688): Fix Query Tree size validation. Closes [#63701](https://github.com/ClickHouse/ClickHouse/issues/63701). [#64377](https://github.com/ClickHouse/ClickHouse/pull/64377) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Backported in [#64725](https://github.com/ClickHouse/ClickHouse/issues/64725): Fixed `CREATE TABLE AS` queries for tables with default expressions. [#64455](https://github.com/ClickHouse/ClickHouse/pull/64455) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Backported in [#64621](https://github.com/ClickHouse/ClickHouse/issues/64621): Fix an error `Cannot find column` in distributed queries with constant CTE in the `GROUP BY` key. [#64519](https://github.com/ClickHouse/ClickHouse/pull/64519) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#64678](https://github.com/ClickHouse/ClickHouse/issues/64678): Fix [#64612](https://github.com/ClickHouse/ClickHouse/issues/64612). Do not rewrite aggregation if `-If` combinator is already used. [#64638](https://github.com/ClickHouse/ClickHouse/pull/64638) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
* Backported in [#64831](https://github.com/ClickHouse/ClickHouse/issues/64831): Fix bug which could lead to non-working TTLs with expressions. Fixes [#63700](https://github.com/ClickHouse/ClickHouse/issues/63700). [#64694](https://github.com/ClickHouse/ClickHouse/pull/64694) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#64940](https://github.com/ClickHouse/ClickHouse/issues/64940): Fix OrderByLimitByDuplicateEliminationVisitor across subqueries. [#64766](https://github.com/ClickHouse/ClickHouse/pull/64766) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#64869](https://github.com/ClickHouse/ClickHouse/issues/64869): Fixed memory possible incorrect memory tracking in several kinds of queries: queries that read any data from S3, queries via http protocol, asynchronous inserts. [#64844](https://github.com/ClickHouse/ClickHouse/pull/64844) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Backported in [#64980](https://github.com/ClickHouse/ClickHouse/issues/64980): Fix the `Block structure mismatch` error for queries reading with `PREWHERE` from the materialized view when the materialized view has columns of different types than the source table. Fixes [#64611](https://github.com/ClickHouse/ClickHouse/issues/64611). [#64855](https://github.com/ClickHouse/ClickHouse/pull/64855) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#64972](https://github.com/ClickHouse/ClickHouse/issues/64972): Fix rare crash when table has TTL with subquery + database replicated + parallel replicas + analyzer. It's really rare, but please don't use TTLs with subqueries. [#64858](https://github.com/ClickHouse/ClickHouse/pull/64858) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#65070](https://github.com/ClickHouse/ClickHouse/issues/65070): Fix `ALTER MODIFY COMMENT` query that was broken for parameterized VIEWs in https://github.com/ClickHouse/ClickHouse/pull/54211. [#65031](https://github.com/ClickHouse/ClickHouse/pull/65031) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Backported in [#65175](https://github.com/ClickHouse/ClickHouse/issues/65175): Fix the `Unknown expression identifier` error for remote queries with `INTERPOLATE (alias)` (new analyzer). Fixes [#64636](https://github.com/ClickHouse/ClickHouse/issues/64636). [#65090](https://github.com/ClickHouse/ClickHouse/pull/65090) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
|
||||||
|
#### Critical Bug Fix (crash, LOGICAL_ERROR, data loss, RBAC)
|
||||||
|
|
||||||
|
* Backported in [#64587](https://github.com/ClickHouse/ClickHouse/issues/64587): Disabled `enable_vertical_final` setting by default. This feature should not be used because it has a bug: [#64543](https://github.com/ClickHouse/ClickHouse/issues/64543). [#64544](https://github.com/ClickHouse/ClickHouse/pull/64544) ([Alexander Tokmakov](https://github.com/tavplubix)).
|
||||||
|
* Backported in [#64878](https://github.com/ClickHouse/ClickHouse/issues/64878): This PR fixes an error when a user in a specific situation can escalate their privileges on the default database without necessary grants. [#64769](https://github.com/ClickHouse/ClickHouse/pull/64769) ([pufit](https://github.com/pufit)).
|
||||||
|
|
||||||
|
#### NO CL CATEGORY
|
||||||
|
|
||||||
|
* Backported in [#63304](https://github.com/ClickHouse/ClickHouse/issues/63304):. [#63297](https://github.com/ClickHouse/ClickHouse/pull/63297) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Backported in [#63708](https://github.com/ClickHouse/ClickHouse/issues/63708):. [#63415](https://github.com/ClickHouse/ClickHouse/pull/63415) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
|
||||||
|
#### NO CL ENTRY
|
||||||
|
|
||||||
|
* NO CL ENTRY: 'Revert "Backport [#64363](https://github.com/ClickHouse/ClickHouse/issues/64363) to 24.3: Split tests 03039_dynamic_all_merge_algorithms to avoid timeouts"'. [#64907](https://github.com/ClickHouse/ClickHouse/pull/64907) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
|
||||||
|
#### NOT FOR CHANGELOG / INSIGNIFICANT
|
||||||
|
|
||||||
|
* Backported in [#63751](https://github.com/ClickHouse/ClickHouse/issues/63751): group_by_use_nulls strikes back. [#62922](https://github.com/ClickHouse/ClickHouse/pull/62922) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#63558](https://github.com/ClickHouse/ClickHouse/issues/63558): Try fix segfault in `MergeTreeReadPoolBase::createTask`. [#63323](https://github.com/ClickHouse/ClickHouse/pull/63323) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Backported in [#63336](https://github.com/ClickHouse/ClickHouse/issues/63336): The commit url has different pattern. [#63331](https://github.com/ClickHouse/ClickHouse/pull/63331) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#63374](https://github.com/ClickHouse/ClickHouse/issues/63374): Add tags for the test 03000_traverse_shadow_system_data_paths.sql to make it stable. [#63366](https://github.com/ClickHouse/ClickHouse/pull/63366) ([Aleksei Filatov](https://github.com/aalexfvk)).
|
||||||
|
* Backported in [#63625](https://github.com/ClickHouse/ClickHouse/issues/63625): Workaround for `oklch()` inside canvas bug for firefox. [#63404](https://github.com/ClickHouse/ClickHouse/pull/63404) ([Sergei Trifonov](https://github.com/serxa)).
|
||||||
|
* Backported in [#63569](https://github.com/ClickHouse/ClickHouse/issues/63569): Add `jwcrypto` to integration tests runner. [#63551](https://github.com/ClickHouse/ClickHouse/pull/63551) ([Konstantin Bogdanov](https://github.com/thevar1able)).
|
||||||
|
* Backported in [#63649](https://github.com/ClickHouse/ClickHouse/issues/63649): Fix `02362_part_log_merge_algorithm` flaky test. [#63635](https://github.com/ClickHouse/ClickHouse/pull/63635) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
|
||||||
|
* Backported in [#63762](https://github.com/ClickHouse/ClickHouse/issues/63762): Cancel S3 reads properly when parallel reads are used. [#63687](https://github.com/ClickHouse/ClickHouse/pull/63687) ([Antonio Andelic](https://github.com/antonio2368)).
|
||||||
|
* Backported in [#63741](https://github.com/ClickHouse/ClickHouse/issues/63741): Userspace page cache: don't collect stats if cache is unused. [#63730](https://github.com/ClickHouse/ClickHouse/pull/63730) ([Michael Kolupaev](https://github.com/al13n321)).
|
||||||
|
* Backported in [#63826](https://github.com/ClickHouse/ClickHouse/issues/63826): Fix `test_odbc_interaction` for arm64 on linux. [#63787](https://github.com/ClickHouse/ClickHouse/pull/63787) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#63895](https://github.com/ClickHouse/ClickHouse/issues/63895): Fix `test_catboost_evaluate` for aarch64. [#63789](https://github.com/ClickHouse/ClickHouse/pull/63789) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#63887](https://github.com/ClickHouse/ClickHouse/issues/63887): Fix `test_disk_types` for aarch64. [#63832](https://github.com/ClickHouse/ClickHouse/pull/63832) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#63879](https://github.com/ClickHouse/ClickHouse/issues/63879): Fix `test_short_strings_aggregation` for arm. [#63836](https://github.com/ClickHouse/ClickHouse/pull/63836) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#63916](https://github.com/ClickHouse/ClickHouse/issues/63916): Disable `test_non_default_compression/test.py::test_preconfigured_deflateqpl_codec` on arm. [#63839](https://github.com/ClickHouse/ClickHouse/pull/63839) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#63969](https://github.com/ClickHouse/ClickHouse/issues/63969): fix 02124_insert_deduplication_token_multiple_blocks. [#63950](https://github.com/ClickHouse/ClickHouse/pull/63950) ([Han Fei](https://github.com/hanfei1991)).
|
||||||
|
* Backported in [#64047](https://github.com/ClickHouse/ClickHouse/issues/64047): Do not create new release in release branch automatically. [#64039](https://github.com/ClickHouse/ClickHouse/pull/64039) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#64076](https://github.com/ClickHouse/ClickHouse/issues/64076): Files without shebang have mime 'text/plain' or 'inode/x-empty'. [#64062](https://github.com/ClickHouse/ClickHouse/pull/64062) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#64142](https://github.com/ClickHouse/ClickHouse/issues/64142): Fix sanitizers. [#64090](https://github.com/ClickHouse/ClickHouse/pull/64090) ([Azat Khuzhin](https://github.com/azat)).
|
||||||
|
* Backported in [#64159](https://github.com/ClickHouse/ClickHouse/issues/64159): Add retries in `git submodule update`. [#64125](https://github.com/ClickHouse/ClickHouse/pull/64125) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
|
||||||
|
* Backported in [#64473](https://github.com/ClickHouse/ClickHouse/issues/64473): Split tests 03039_dynamic_all_merge_algorithms to avoid timeouts. [#64363](https://github.com/ClickHouse/ClickHouse/pull/64363) ([Kruglov Pavel](https://github.com/Avogar)).
|
||||||
|
* Backported in [#65113](https://github.com/ClickHouse/ClickHouse/issues/65113): Adjust the `version_helper` and script to a new release scheme. [#64759](https://github.com/ClickHouse/ClickHouse/pull/64759) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#64999](https://github.com/ClickHouse/ClickHouse/issues/64999): Fix crash with DISTINCT and window functions. [#64767](https://github.com/ClickHouse/ClickHouse/pull/64767) ([Igor Nikonov](https://github.com/devcrafter)).
|
||||||
|
|
30
docs/changelogs/v24.4.3.25-stable.md
Normal file
30
docs/changelogs/v24.4.3.25-stable.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
sidebar_label: 2024
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### ClickHouse release v24.4.3.25-stable (a915dd4eda4) FIXME as compared to v24.4.2.141-stable (9e23d27bd11)
|
||||||
|
|
||||||
|
#### Build/Testing/Packaging Improvement
|
||||||
|
* Backported in [#65130](https://github.com/ClickHouse/ClickHouse/issues/65130): Decrease the `unit-test` image a few times. [#65102](https://github.com/ClickHouse/ClickHouse/pull/65102) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
|
||||||
|
#### Bug Fix (user-visible misbehavior in an official stable release)
|
||||||
|
|
||||||
|
* Backported in [#64982](https://github.com/ClickHouse/ClickHouse/issues/64982): Fix the `Block structure mismatch` error for queries reading with `PREWHERE` from the materialized view when the materialized view has columns of different types than the source table. Fixes [#64611](https://github.com/ClickHouse/ClickHouse/issues/64611). [#64855](https://github.com/ClickHouse/ClickHouse/pull/64855) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#64974](https://github.com/ClickHouse/ClickHouse/issues/64974): Fix rare crash when table has TTL with subquery + database replicated + parallel replicas + analyzer. It's really rare, but please don't use TTLs with subqueries. [#64858](https://github.com/ClickHouse/ClickHouse/pull/64858) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#65072](https://github.com/ClickHouse/ClickHouse/issues/65072): Fix `ALTER MODIFY COMMENT` query that was broken for parameterized VIEWs in https://github.com/ClickHouse/ClickHouse/pull/54211. [#65031](https://github.com/ClickHouse/ClickHouse/pull/65031) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Backported in [#65177](https://github.com/ClickHouse/ClickHouse/issues/65177): Fix the `Unknown expression identifier` error for remote queries with `INTERPOLATE (alias)` (new analyzer). Fixes [#64636](https://github.com/ClickHouse/ClickHouse/issues/64636). [#65090](https://github.com/ClickHouse/ClickHouse/pull/65090) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#65263](https://github.com/ClickHouse/ClickHouse/issues/65263): Fix the bug in Hashed and Hashed_Array dictionary short circuit evaluation, which may read uninitialized number, leading to various errors. [#65256](https://github.com/ClickHouse/ClickHouse/pull/65256) ([jsc0218](https://github.com/jsc0218)).
|
||||||
|
|
||||||
|
#### Critical Bug Fix (crash, LOGICAL_ERROR, data loss, RBAC)
|
||||||
|
|
||||||
|
* Backported in [#65285](https://github.com/ClickHouse/ClickHouse/issues/65285): Fix crash with UniqInjectiveFunctionsEliminationPass and uniqCombined. [#65188](https://github.com/ClickHouse/ClickHouse/pull/65188) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
|
||||||
|
#### NOT FOR CHANGELOG / INSIGNIFICANT
|
||||||
|
|
||||||
|
* Backported in [#65114](https://github.com/ClickHouse/ClickHouse/issues/65114): Adjust the `version_helper` and script to a new release scheme. [#64759](https://github.com/ClickHouse/ClickHouse/pull/64759) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#65225](https://github.com/ClickHouse/ClickHouse/issues/65225): Capture weak_ptr of ContextAccess for safety. [#65051](https://github.com/ClickHouse/ClickHouse/pull/65051) ([Alexander Gololobov](https://github.com/davenger)).
|
||||||
|
* Backported in [#65217](https://github.com/ClickHouse/ClickHouse/issues/65217): Fix false positives leaky memory warnings in OpenSSL. [#65125](https://github.com/ClickHouse/ClickHouse/pull/65125) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
|
38
docs/changelogs/v24.5.2.34-stable.md
Normal file
38
docs/changelogs/v24.5.2.34-stable.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
sidebar_label: 2024
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### ClickHouse release v24.5.2.34-stable (45589aeee49) FIXME as compared to v24.5.1.1763-stable (647c154a94d)
|
||||||
|
|
||||||
|
#### Improvement
|
||||||
|
* Backported in [#65096](https://github.com/ClickHouse/ClickHouse/issues/65096): The setting `allow_experimental_join_condition` was accidentally marked as important which may prevent distributed queries in a mixed versions cluster from being executed successfully. [#65008](https://github.com/ClickHouse/ClickHouse/pull/65008) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
|
||||||
|
|
||||||
|
#### Build/Testing/Packaging Improvement
|
||||||
|
* Backported in [#65132](https://github.com/ClickHouse/ClickHouse/issues/65132): Decrease the `unit-test` image a few times. [#65102](https://github.com/ClickHouse/ClickHouse/pull/65102) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
|
||||||
|
#### Bug Fix (user-visible misbehavior in an official stable release)
|
||||||
|
|
||||||
|
* Backported in [#64729](https://github.com/ClickHouse/ClickHouse/issues/64729): Fixed `CREATE TABLE AS` queries for tables with default expressions. [#64455](https://github.com/ClickHouse/ClickHouse/pull/64455) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Backported in [#65061](https://github.com/ClickHouse/ClickHouse/issues/65061): Fix the `Expression nodes list expected 1 projection names` and `Unknown expression or identifier` errors for queries with aliases to `GLOBAL IN.` Fixes [#64445](https://github.com/ClickHouse/ClickHouse/issues/64445). [#64517](https://github.com/ClickHouse/ClickHouse/pull/64517) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#65088](https://github.com/ClickHouse/ClickHouse/issues/65088): Fix removing the `WHERE` and `PREWHERE` expressions, which are always true (for the new analyzer). Fixes [#64575](https://github.com/ClickHouse/ClickHouse/issues/64575). [#64695](https://github.com/ClickHouse/ClickHouse/pull/64695) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#64944](https://github.com/ClickHouse/ClickHouse/issues/64944): Fix OrderByLimitByDuplicateEliminationVisitor across subqueries. [#64766](https://github.com/ClickHouse/ClickHouse/pull/64766) ([Raúl Marín](https://github.com/Algunenano)).
|
||||||
|
* Backported in [#64873](https://github.com/ClickHouse/ClickHouse/issues/64873): Fixed memory possible incorrect memory tracking in several kinds of queries: queries that read any data from S3, queries via http protocol, asynchronous inserts. [#64844](https://github.com/ClickHouse/ClickHouse/pull/64844) ([Anton Popov](https://github.com/CurtizJ)).
|
||||||
|
* Backported in [#64984](https://github.com/ClickHouse/ClickHouse/issues/64984): Fix the `Block structure mismatch` error for queries reading with `PREWHERE` from the materialized view when the materialized view has columns of different types than the source table. Fixes [#64611](https://github.com/ClickHouse/ClickHouse/issues/64611). [#64855](https://github.com/ClickHouse/ClickHouse/pull/64855) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#64976](https://github.com/ClickHouse/ClickHouse/issues/64976): Fix rare crash when table has TTL with subquery + database replicated + parallel replicas + analyzer. It's really rare, but please don't use TTLs with subqueries. [#64858](https://github.com/ClickHouse/ClickHouse/pull/64858) ([alesapin](https://github.com/alesapin)).
|
||||||
|
* Backported in [#65074](https://github.com/ClickHouse/ClickHouse/issues/65074): Fix `ALTER MODIFY COMMENT` query that was broken for parameterized VIEWs in https://github.com/ClickHouse/ClickHouse/pull/54211. [#65031](https://github.com/ClickHouse/ClickHouse/pull/65031) ([Nikolay Degterinsky](https://github.com/evillique)).
|
||||||
|
* Backported in [#65179](https://github.com/ClickHouse/ClickHouse/issues/65179): Fix the `Unknown expression identifier` error for remote queries with `INTERPOLATE (alias)` (new analyzer). Fixes [#64636](https://github.com/ClickHouse/ClickHouse/issues/64636). [#65090](https://github.com/ClickHouse/ClickHouse/pull/65090) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
|
||||||
|
* Backported in [#65163](https://github.com/ClickHouse/ClickHouse/issues/65163): Fix pushing arithmetic operations out of aggregation. In the new analyzer, optimization was applied only once. Part of [#62245](https://github.com/ClickHouse/ClickHouse/issues/62245). [#65104](https://github.com/ClickHouse/ClickHouse/pull/65104) ([Dmitry Novik](https://github.com/novikd)).
|
||||||
|
|
||||||
|
#### Critical Bug Fix (crash, LOGICAL_ERROR, data loss, RBAC)
|
||||||
|
|
||||||
|
* Backported in [#64882](https://github.com/ClickHouse/ClickHouse/issues/64882): This PR fixes an error when a user in a specific situation can escalate their privileges on the default database without necessary grants. [#64769](https://github.com/ClickHouse/ClickHouse/pull/64769) ([pufit](https://github.com/pufit)).
|
||||||
|
|
||||||
|
#### NOT FOR CHANGELOG / INSIGNIFICANT
|
||||||
|
|
||||||
|
* Backported in [#65002](https://github.com/ClickHouse/ClickHouse/issues/65002): Be more graceful with existing tables with `inverted` indexes. [#64656](https://github.com/ClickHouse/ClickHouse/pull/64656) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
* Backported in [#65115](https://github.com/ClickHouse/ClickHouse/issues/65115): Adjust the `version_helper` and script to a new release scheme. [#64759](https://github.com/ClickHouse/ClickHouse/pull/64759) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
|
||||||
|
* Backported in [#64796](https://github.com/ClickHouse/ClickHouse/issues/64796): Fix crash with DISTINCT and window functions. [#64767](https://github.com/ClickHouse/ClickHouse/pull/64767) ([Igor Nikonov](https://github.com/devcrafter)).
|
||||||
|
|
14
docs/changelogs/v24.5.3.5-stable.md
Normal file
14
docs/changelogs/v24.5.3.5-stable.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 1
|
||||||
|
sidebar_label: 2024
|
||||||
|
---
|
||||||
|
|
||||||
|
# 2024 Changelog
|
||||||
|
|
||||||
|
### ClickHouse release v24.5.3.5-stable (e0eb66f8e17) FIXME as compared to v24.5.2.34-stable (45589aeee49)
|
||||||
|
|
||||||
|
#### NOT FOR CHANGELOG / INSIGNIFICANT
|
||||||
|
|
||||||
|
* Backported in [#65227](https://github.com/ClickHouse/ClickHouse/issues/65227): Capture weak_ptr of ContextAccess for safety. [#65051](https://github.com/ClickHouse/ClickHouse/pull/65051) ([Alexander Gololobov](https://github.com/davenger)).
|
||||||
|
* Backported in [#65219](https://github.com/ClickHouse/ClickHouse/issues/65219): Fix false positives leaky memory warnings in OpenSSL. [#65125](https://github.com/ClickHouse/ClickHouse/pull/65125) ([Robert Schulze](https://github.com/rschu1ze)).
|
||||||
|
|
@ -267,7 +267,7 @@ A pull request can be created even if the work is not completed yet. In this cas
|
|||||||
|
|
||||||
Testing will commence as soon as ClickHouse employees label your PR with a tag “can be tested”. The results of some first checks (e.g. code style) will come in within several minutes. Build check results will arrive within half an hour. And the main set of tests will report itself within an hour.
|
Testing will commence as soon as ClickHouse employees label your PR with a tag “can be tested”. The results of some first checks (e.g. code style) will come in within several minutes. Build check results will arrive within half an hour. And the main set of tests will report itself within an hour.
|
||||||
|
|
||||||
The system will prepare ClickHouse binary builds for your pull request individually. To retrieve these builds click the “Details” link next to “ClickHouse build check” entry in the list of checks. There you will find direct links to the built .deb packages of ClickHouse which you can deploy even on your production servers (if you have no fear).
|
The system will prepare ClickHouse binary builds for your pull request individually. To retrieve these builds click the “Details” link next to “Builds” entry in the list of checks. There you will find direct links to the built .deb packages of ClickHouse which you can deploy even on your production servers (if you have no fear).
|
||||||
|
|
||||||
Most probably some of the builds will fail at first times. This is due to the fact that we check builds both with gcc as well as with clang, with almost all of existing warnings (always with the `-Werror` flag) enabled for clang. On that same page, you can find all of the build logs so that you do not have to build ClickHouse in all of the possible ways.
|
Most probably some of the builds will fail at first times. This is due to the fact that we check builds both with gcc as well as with clang, with almost all of existing warnings (always with the `-Werror` flag) enabled for clang. On that same page, you can find all of the build logs so that you do not have to build ClickHouse in all of the possible ways.
|
||||||
|
|
||||||
|
@ -229,6 +229,10 @@ For production builds, clang is used, but we also test make gcc builds. For deve
|
|||||||
|
|
||||||
## Sanitizers {#sanitizers}
|
## Sanitizers {#sanitizers}
|
||||||
|
|
||||||
|
:::note
|
||||||
|
If the process (ClickHouse server or client) crashes at startup when running it locally, you might need to disable address space layout randomization: `sudo sysctl kernel.randomize_va_space=0`
|
||||||
|
:::
|
||||||
|
|
||||||
### Address sanitizer
|
### Address sanitizer
|
||||||
We run functional, integration, stress and unit tests under ASan on per-commit basis.
|
We run functional, integration, stress and unit tests under ASan on per-commit basis.
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ Using named collections:
|
|||||||
<named_collections>
|
<named_collections>
|
||||||
<iceberg_conf>
|
<iceberg_conf>
|
||||||
<url>http://test.s3.amazonaws.com/clickhouse-bucket/</url>
|
<url>http://test.s3.amazonaws.com/clickhouse-bucket/</url>
|
||||||
<access_key_id>test<access_key_id>
|
<access_key_id>test</access_key_id>
|
||||||
<secret_access_key>test</secret_access_key>
|
<secret_access_key>test</secret_access_key>
|
||||||
</iceberg_conf>
|
</iceberg_conf>
|
||||||
</named_collections>
|
</named_collections>
|
||||||
|
@ -13,7 +13,7 @@ This engine provides integration with [Amazon S3](https://aws.amazon.com/s3/) ec
|
|||||||
CREATE TABLE s3_queue_engine_table (name String, value UInt32)
|
CREATE TABLE s3_queue_engine_table (name String, value UInt32)
|
||||||
ENGINE = S3Queue(path, [NOSIGN, | aws_access_key_id, aws_secret_access_key,] format, [compression])
|
ENGINE = S3Queue(path, [NOSIGN, | aws_access_key_id, aws_secret_access_key,] format, [compression])
|
||||||
[SETTINGS]
|
[SETTINGS]
|
||||||
[mode = 'unordered',]
|
[mode = '',]
|
||||||
[after_processing = 'keep',]
|
[after_processing = 'keep',]
|
||||||
[keeper_path = '',]
|
[keeper_path = '',]
|
||||||
[s3queue_loading_retries = 0,]
|
[s3queue_loading_retries = 0,]
|
||||||
@ -75,7 +75,7 @@ Possible values:
|
|||||||
- unordered — With unordered mode, the set of all already processed files is tracked with persistent nodes in ZooKeeper.
|
- unordered — With unordered mode, the set of all already processed files is tracked with persistent nodes in ZooKeeper.
|
||||||
- ordered — With ordered mode, only the max name of the successfully consumed file, and the names of files that will be retried after unsuccessful loading attempt are being stored in ZooKeeper.
|
- ordered — With ordered mode, only the max name of the successfully consumed file, and the names of files that will be retried after unsuccessful loading attempt are being stored in ZooKeeper.
|
||||||
|
|
||||||
Default value: `unordered`.
|
Default value: `ordered` in versions before 24.6. Starting with 24.6 there is no default value, the setting becomes required to be specified manually. For tables created on earlier versions the default value will remain `Ordered` for compatibility.
|
||||||
|
|
||||||
### after_processing {#after_processing}
|
### after_processing {#after_processing}
|
||||||
|
|
||||||
@ -181,6 +181,10 @@ For 'Ordered' mode. Defines a maximum boundary for reschedule interval for a bac
|
|||||||
|
|
||||||
Default value: `30000`.
|
Default value: `30000`.
|
||||||
|
|
||||||
|
### s3queue_buckets {#buckets}
|
||||||
|
|
||||||
|
For 'Ordered' mode. Available since `24.6`. If there are several replicas of S3Queue table, each working with the same metadata directory in keeper, the value of `s3queue_buckets` needs to be equal to at least the number of replicas. If `s3queue_processing_threads` setting is used as well, it makes sense to increase the value of `s3queue_buckets` setting even further, as it defines the actual parallelism of `S3Queue` processing.
|
||||||
|
|
||||||
## S3-related Settings {#s3-settings}
|
## S3-related Settings {#s3-settings}
|
||||||
|
|
||||||
Engine supports all s3 related settings. For more information about S3 settings see [here](../../../engines/table-engines/integrations/s3.md).
|
Engine supports all s3 related settings. For more information about S3 settings see [here](../../../engines/table-engines/integrations/s3.md).
|
||||||
|
@ -314,7 +314,7 @@ For example, to download a aarch64 binary for ClickHouse v23.4, follow these ste
|
|||||||
- Find the GitHub pull request for release v23.4: [Release pull request for branch 23.4](https://github.com/ClickHouse/ClickHouse/pull/49238)
|
- Find the GitHub pull request for release v23.4: [Release pull request for branch 23.4](https://github.com/ClickHouse/ClickHouse/pull/49238)
|
||||||
- Click "Commits", then click a commit similar to "Update autogenerated version to 23.4.2.1 and contributors" for the particular version you like to install.
|
- Click "Commits", then click a commit similar to "Update autogenerated version to 23.4.2.1 and contributors" for the particular version you like to install.
|
||||||
- Click the green check / yellow dot / red cross to open the list of CI checks.
|
- Click the green check / yellow dot / red cross to open the list of CI checks.
|
||||||
- Click "Details" next to "ClickHouse Build Check" in the list, it will open a page similar to [this page](https://s3.amazonaws.com/clickhouse-test-reports/46793/b460eb70bf29b19eadd19a1f959b15d186705394/clickhouse_build_check/report.html)
|
- Click "Details" next to "Builds" in the list, it will open a page similar to [this page](https://s3.amazonaws.com/clickhouse-test-reports/46793/b460eb70bf29b19eadd19a1f959b15d186705394/clickhouse_build_check/report.html)
|
||||||
- Find the rows with compiler = "clang-*-aarch64" - there are multiple rows.
|
- Find the rows with compiler = "clang-*-aarch64" - there are multiple rows.
|
||||||
- Download the artifacts for these builds.
|
- Download the artifacts for these builds.
|
||||||
|
|
||||||
|
@ -193,6 +193,7 @@ You can pass parameters to `clickhouse-client` (all parameters have a default va
|
|||||||
- `--hardware-utilization` — Print hardware utilization information in progress bar.
|
- `--hardware-utilization` — Print hardware utilization information in progress bar.
|
||||||
- `--print-profile-events` – Print `ProfileEvents` packets.
|
- `--print-profile-events` – Print `ProfileEvents` packets.
|
||||||
- `--profile-events-delay-ms` – Delay between printing `ProfileEvents` packets (-1 - print only totals, 0 - print every single packet).
|
- `--profile-events-delay-ms` – Delay between printing `ProfileEvents` packets (-1 - print only totals, 0 - print every single packet).
|
||||||
|
- `--jwt` – If specified, enables authorization via JSON Web Token. Server JWT authorization is available only in ClickHouse Cloud.
|
||||||
|
|
||||||
Instead of `--host`, `--port`, `--user` and `--password` options, ClickHouse client also supports connection strings (see next section).
|
Instead of `--host`, `--port`, `--user` and `--password` options, ClickHouse client also supports connection strings (see next section).
|
||||||
|
|
||||||
|
@ -480,7 +480,7 @@ The CSV format supports the output of totals and extremes the same way as `TabSe
|
|||||||
- [input_format_csv_detect_header](/docs/en/operations/settings/settings-formats.md/#input_format_csv_detect_header) - automatically detect header with names and types in CSV format. Default value - `true`.
|
- [input_format_csv_detect_header](/docs/en/operations/settings/settings-formats.md/#input_format_csv_detect_header) - automatically detect header with names and types in CSV format. Default value - `true`.
|
||||||
- [input_format_csv_skip_trailing_empty_lines](/docs/en/operations/settings/settings-formats.md/#input_format_csv_skip_trailing_empty_lines) - skip trailing empty lines at the end of data. Default value - `false`.
|
- [input_format_csv_skip_trailing_empty_lines](/docs/en/operations/settings/settings-formats.md/#input_format_csv_skip_trailing_empty_lines) - skip trailing empty lines at the end of data. Default value - `false`.
|
||||||
- [input_format_csv_trim_whitespaces](/docs/en/operations/settings/settings-formats.md/#input_format_csv_trim_whitespaces) - trim spaces and tabs in non-quoted CSV strings. Default value - `true`.
|
- [input_format_csv_trim_whitespaces](/docs/en/operations/settings/settings-formats.md/#input_format_csv_trim_whitespaces) - trim spaces and tabs in non-quoted CSV strings. Default value - `true`.
|
||||||
- [input_format_csv_allow_whitespace_or_tab_as_delimiter](/docs/en/operations/settings/settings-formats.md/# input_format_csv_allow_whitespace_or_tab_as_delimiter) - Allow to use whitespace or tab as field delimiter in CSV strings. Default value - `false`.
|
- [input_format_csv_allow_whitespace_or_tab_as_delimiter](/docs/en/operations/settings/settings-formats.md/#input_format_csv_allow_whitespace_or_tab_as_delimiter) - Allow to use whitespace or tab as field delimiter in CSV strings. Default value - `false`.
|
||||||
- [input_format_csv_allow_variable_number_of_columns](/docs/en/operations/settings/settings-formats.md/#input_format_csv_allow_variable_number_of_columns) - allow variable number of columns in CSV format, ignore extra columns and use default values on missing columns. Default value - `false`.
|
- [input_format_csv_allow_variable_number_of_columns](/docs/en/operations/settings/settings-formats.md/#input_format_csv_allow_variable_number_of_columns) - allow variable number of columns in CSV format, ignore extra columns and use default values on missing columns. Default value - `false`.
|
||||||
- [input_format_csv_use_default_on_bad_values](/docs/en/operations/settings/settings-formats.md/#input_format_csv_use_default_on_bad_values) - Allow to set default value to column when CSV field deserialization failed on bad value. Default value - `false`.
|
- [input_format_csv_use_default_on_bad_values](/docs/en/operations/settings/settings-formats.md/#input_format_csv_use_default_on_bad_values) - Allow to set default value to column when CSV field deserialization failed on bad value. Default value - `false`.
|
||||||
- [input_format_csv_try_infer_numbers_from_strings](/docs/en/operations/settings/settings-formats.md/#input_format_csv_try_infer_numbers_from_strings) - Try to infer numbers from string fields while schema inference. Default value - `false`.
|
- [input_format_csv_try_infer_numbers_from_strings](/docs/en/operations/settings/settings-formats.md/#input_format_csv_try_infer_numbers_from_strings) - Try to infer numbers from string fields while schema inference. Default value - `false`.
|
||||||
@ -1490,6 +1490,8 @@ Differs from [PrettySpaceNoEscapes](#prettyspacenoescapes) in that up to 10,000
|
|||||||
- [output_format_pretty_color](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_color) - use ANSI escape sequences to paint colors in Pretty formats. Default value - `true`.
|
- [output_format_pretty_color](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_color) - use ANSI escape sequences to paint colors in Pretty formats. Default value - `true`.
|
||||||
- [output_format_pretty_grid_charset](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_grid_charset) - Charset for printing grid borders. Available charsets: ASCII, UTF-8. Default value - `UTF-8`.
|
- [output_format_pretty_grid_charset](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_grid_charset) - Charset for printing grid borders. Available charsets: ASCII, UTF-8. Default value - `UTF-8`.
|
||||||
- [output_format_pretty_row_numbers](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_row_numbers) - Add row numbers before each row for pretty output format. Default value - `true`.
|
- [output_format_pretty_row_numbers](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_row_numbers) - Add row numbers before each row for pretty output format. Default value - `true`.
|
||||||
|
- [output_format_pretty_display_footer_column_names](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_display_footer_column_names) - Display column names in the footer if table contains many rows. Default value - `true`.
|
||||||
|
- [output_format_pretty_display_footer_column_names_min_rows](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_display_footer_column_names_min_rows) - Sets the minimum number of rows for which a footer will be displayed if [output_format_pretty_display_footer_column_names](/docs/en/operations/settings/settings-formats.md/#output_format_pretty_display_footer_column_names) is enabled. Default value - 50.
|
||||||
|
|
||||||
## RowBinary {#rowbinary}
|
## RowBinary {#rowbinary}
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@ Now `rule` can configure `method`, `headers`, `url`, `handler`:
|
|||||||
|
|
||||||
- `headers` are responsible for matching the header part of the HTTP request. It is compatible with RE2’s regular expressions. It is an optional configuration. If it is not defined in the configuration file, it does not match the header portion of the HTTP request.
|
- `headers` are responsible for matching the header part of the HTTP request. It is compatible with RE2’s regular expressions. It is an optional configuration. If it is not defined in the configuration file, it does not match the header portion of the HTTP request.
|
||||||
|
|
||||||
- `handler` contains the main processing part. Now `handler` can configure `type`, `status`, `content_type`, `response_content`, `query`, `query_param_name`.
|
- `handler` contains the main processing part. Now `handler` can configure `type`, `status`, `content_type`, `http_response_headers`, `response_content`, `query`, `query_param_name`.
|
||||||
`type` currently supports three types: [predefined_query_handler](#predefined_query_handler), [dynamic_query_handler](#dynamic_query_handler), [static](#static).
|
`type` currently supports three types: [predefined_query_handler](#predefined_query_handler), [dynamic_query_handler](#dynamic_query_handler), [static](#static).
|
||||||
|
|
||||||
- `query` — use with `predefined_query_handler` type, executes query when the handler is called.
|
- `query` — use with `predefined_query_handler` type, executes query when the handler is called.
|
||||||
@ -519,6 +519,8 @@ Now `rule` can configure `method`, `headers`, `url`, `handler`:
|
|||||||
|
|
||||||
- `content_type` — use with any type, response [content-type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type).
|
- `content_type` — use with any type, response [content-type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type).
|
||||||
|
|
||||||
|
- `http_response_headers` — use with any type, response headers map. Could be used to set content type as well.
|
||||||
|
|
||||||
- `response_content` — use with `static` type, response content sent to client, when using the prefix ‘file://’ or ‘config://’, find the content from the file or configuration sends to client.
|
- `response_content` — use with `static` type, response content sent to client, when using the prefix ‘file://’ or ‘config://’, find the content from the file or configuration sends to client.
|
||||||
|
|
||||||
Next are the configuration methods for different `type`.
|
Next are the configuration methods for different `type`.
|
||||||
@ -616,6 +618,33 @@ Return a message.
|
|||||||
<type>static</type>
|
<type>static</type>
|
||||||
<status>402</status>
|
<status>402</status>
|
||||||
<content_type>text/html; charset=UTF-8</content_type>
|
<content_type>text/html; charset=UTF-8</content_type>
|
||||||
|
<http_response_headers>
|
||||||
|
<Content-Language>en</Content-Language>
|
||||||
|
<X-My-Custom-Header>43</X-My-Custom-Header>
|
||||||
|
</http_response_headers>
|
||||||
|
<response_content>Say Hi!</response_content>
|
||||||
|
</handler>
|
||||||
|
</rule>
|
||||||
|
<defaults/>
|
||||||
|
</http_handlers>
|
||||||
|
```
|
||||||
|
|
||||||
|
`http_response_headers` could be used to set content type instead of `content_type`.
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<http_handlers>
|
||||||
|
<rule>
|
||||||
|
<methods>GET</methods>
|
||||||
|
<headers><XXX>xxx</XXX></headers>
|
||||||
|
<url>/hi</url>
|
||||||
|
<handler>
|
||||||
|
<type>static</type>
|
||||||
|
<status>402</status>
|
||||||
|
<http_response_headers>
|
||||||
|
<Content-Type>text/html; charset=UTF-8</Content-Type>
|
||||||
|
<Content-Language>en</Content-Language>
|
||||||
|
<X-My-Custom-Header>43</X-My-Custom-Header>
|
||||||
|
</http_response_headers>
|
||||||
<response_content>Say Hi!</response_content>
|
<response_content>Say Hi!</response_content>
|
||||||
</handler>
|
</handler>
|
||||||
</rule>
|
</rule>
|
||||||
@ -696,6 +725,9 @@ Find the content from the file send to client.
|
|||||||
<handler>
|
<handler>
|
||||||
<type>static</type>
|
<type>static</type>
|
||||||
<content_type>text/html; charset=UTF-8</content_type>
|
<content_type>text/html; charset=UTF-8</content_type>
|
||||||
|
<http_response_headers>
|
||||||
|
<ETag>737060cd8c284d8af7ad3082f209582d</ETag>
|
||||||
|
</http_response_headers>
|
||||||
<response_content>file:///absolute_path_file.html</response_content>
|
<response_content>file:///absolute_path_file.html</response_content>
|
||||||
</handler>
|
</handler>
|
||||||
</rule>
|
</rule>
|
||||||
@ -706,6 +738,9 @@ Find the content from the file send to client.
|
|||||||
<handler>
|
<handler>
|
||||||
<type>static</type>
|
<type>static</type>
|
||||||
<content_type>text/html; charset=UTF-8</content_type>
|
<content_type>text/html; charset=UTF-8</content_type>
|
||||||
|
<http_response_headers>
|
||||||
|
<ETag>737060cd8c284d8af7ad3082f209582d</ETag>
|
||||||
|
</http_response_headers>
|
||||||
<response_content>file://./relative_path_file.html</response_content>
|
<response_content>file://./relative_path_file.html</response_content>
|
||||||
</handler>
|
</handler>
|
||||||
</rule>
|
</rule>
|
||||||
|
@ -31,6 +31,56 @@ Alternatively, in order to enable the MySQL interface for an existing service:
|
|||||||
3. After entering the password, you will get prompted the MySQL connection string for this service
|
3. After entering the password, you will get prompted the MySQL connection string for this service
|
||||||
![Connection screen - MySQL Enabled](./images/mysql5.png)
|
![Connection screen - MySQL Enabled](./images/mysql5.png)
|
||||||
|
|
||||||
|
## Creating multiple MySQL users in ClickHouse Cloud
|
||||||
|
|
||||||
|
By default, there is a built-in `mysql4<subdomain>` user, which uses the same password as the `default` one. The `<subdomain>` part is the first segment of your ClickHouse Cloud hostname. This format is necessary to work with the tools that implement secure connection, but don't provide [SNI information in their TLS handshake](https://www.cloudflare.com/learning/ssl/what-is-sni), which makes it impossible to do the internal routing without an extra hint in the username (MySQL console client is one of such tools).
|
||||||
|
|
||||||
|
Because of this, we _highly recommend_ following the `mysql4<subdomain>_<username>` format when creating a new user intended to be used with the MySQL interface, where `<subdomain>` is a hint to identify your Cloud service, and `<username>` is an arbitrary suffix of your choice.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
For ClickHouse Cloud hostname like `foobar.us-east1.aws.clickhouse.cloud`, the `<subdomain>` part equals to `foobar`, and a custom MySQL username could look like `mysql4foobar_team1`.
|
||||||
|
:::
|
||||||
|
|
||||||
|
You can create extra users to use with the MySQL interface if, for example, you need to apply extra settings.
|
||||||
|
|
||||||
|
1. Optional - create a [settings profile](https://clickhouse.com/docs/en/sql-reference/statements/create/settings-profile) to apply for your custom user. For example, `my_custom_profile` with an extra setting which will be applied by default when we connect with the user we create later:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE SETTINGS PROFILE my_custom_profile SETTINGS prefer_column_name_to_alias=1;
|
||||||
|
```
|
||||||
|
|
||||||
|
`prefer_column_name_to_alias` is used just as an example, you can use other settings there.
|
||||||
|
2. [Create a user](https://clickhouse.com/docs/en/sql-reference/statements/create/user) using the following format: `mysql4<subdomain>_<username>` ([see above](#creating-multiple-mysql-users-in-clickhouse-cloud)). The password must be in double SHA1 format. For example:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$';
|
||||||
|
```
|
||||||
|
|
||||||
|
or if you want to use a custom profile for this user:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$' SETTINGS PROFILE 'my_custom_profile';
|
||||||
|
```
|
||||||
|
|
||||||
|
where `my_custom_profile` is the name of the profile you created earlier.
|
||||||
|
3. [Grant](https://clickhouse.com/docs/en/sql-reference/statements/grant) the new user the necessary permissions to interact with the desired tables or databases. For example, if you want to grant access to `system.query_log` only:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
GRANT SELECT ON system.query_log TO mysql4foobar_team1;
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Use the created user to connect to your ClickHouse Cloud service with the MySQL interface.
|
||||||
|
|
||||||
|
### Troubleshooting multiple MySQL users in ClickHouse Cloud
|
||||||
|
|
||||||
|
If you created a new MySQL user, and you see the following error while connecting via MySQL CLI client:
|
||||||
|
|
||||||
|
```
|
||||||
|
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 54
|
||||||
|
```
|
||||||
|
|
||||||
|
In this case, ensure that the username follows the `mysql4<subdomain>_<username>` format, as described ([above](#creating-multiple-mysql-users-in-clickhouse-cloud)).
|
||||||
|
|
||||||
## Enabling the MySQL Interface On Self-managed ClickHouse
|
## Enabling the MySQL Interface On Self-managed ClickHouse
|
||||||
|
|
||||||
Add the [mysql_port](../operations/server-configuration-parameters/settings.md#server_configuration_parameters-mysql_port) setting to your server's configuration file. For example, you could define the port in a new XML file in your `config.d/` [folder](../operations/configuration-files):
|
Add the [mysql_port](../operations/server-configuration-parameters/settings.md#server_configuration_parameters-mysql_port) setting to your server's configuration file. For example, you could define the port in a new XML file in your `config.d/` [folder](../operations/configuration-files):
|
||||||
|
@ -59,10 +59,10 @@ For that, we need to use `jemalloc`'s tool called [jeprof](https://github.com/je
|
|||||||
If that’s the case, we recommend installing an [alternative implementation](https://github.com/gimli-rs/addr2line) of the tool.
|
If that’s the case, we recommend installing an [alternative implementation](https://github.com/gimli-rs/addr2line) of the tool.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/gimli-rs/addr2line
|
git clone https://github.com/gimli-rs/addr2line.git --depth=1 --branch=0.23.0
|
||||||
cd addr2line
|
cd addr2line
|
||||||
cargo b --examples -r
|
cargo build --features bin --release
|
||||||
cp ./target/release/examples/addr2line path/to/current/addr2line
|
cp ./target/release/addr2line path/to/current/addr2line
|
||||||
```
|
```
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
@ -591,6 +591,22 @@ Default value: 100000
|
|||||||
<max_part_num_to_warn>400</max_part_num_to_warn>
|
<max_part_num_to_warn>400</max_part_num_to_warn>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## max\_table\_num\_to\_throw {#max-table-num-to-throw}
|
||||||
|
If number of tables is greater than this value, server will throw an exception. 0 means no limitation. View, remote tables, dictionary, system tables are not counted. Only count table in Atomic/Ordinary/Replicated/Lazy database engine.Default value: 0
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
```xml
|
||||||
|
<max_table_num_to_throw>400</max_table_num_to_throw>
|
||||||
|
```
|
||||||
|
|
||||||
|
## max\_database\_num\_to\_throw {#max-table-num-to-throw}
|
||||||
|
If number of _database is greater than this value, server will throw an exception. 0 means no limitation.
|
||||||
|
Default value: 0
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
```xml
|
||||||
|
<max_database_num_to_throw>400</max_database_num_to_throw>
|
||||||
|
```
|
||||||
|
|
||||||
## max_temporary_data_on_disk_size
|
## max_temporary_data_on_disk_size
|
||||||
|
|
||||||
@ -938,6 +954,38 @@ Or it can be set in hex:
|
|||||||
|
|
||||||
Everything mentioned above can be applied for `aes_256_gcm_siv` (but the key must be 32 bytes long).
|
Everything mentioned above can be applied for `aes_256_gcm_siv` (but the key must be 32 bytes long).
|
||||||
|
|
||||||
|
## error_log {#error_log}
|
||||||
|
|
||||||
|
It is disabled by default.
|
||||||
|
|
||||||
|
**Enabling**
|
||||||
|
|
||||||
|
To manually turn on error history collection [`system.error_log`](../../operations/system-tables/error_log.md), create `/etc/clickhouse-server/config.d/error_log.xml` with the following content:
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<clickhouse>
|
||||||
|
<error_log>
|
||||||
|
<database>system</database>
|
||||||
|
<table>error_log</table>
|
||||||
|
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
|
||||||
|
<collect_interval_milliseconds>1000</collect_interval_milliseconds>
|
||||||
|
<max_size_rows>1048576</max_size_rows>
|
||||||
|
<reserved_size_rows>8192</reserved_size_rows>
|
||||||
|
<buffer_size_rows_flush_threshold>524288</buffer_size_rows_flush_threshold>
|
||||||
|
<flush_on_crash>false</flush_on_crash>
|
||||||
|
</error_log>
|
||||||
|
</clickhouse>
|
||||||
|
```
|
||||||
|
|
||||||
|
**Disabling**
|
||||||
|
|
||||||
|
To disable `error_log` setting, you should create the following file `/etc/clickhouse-server/config.d/disable_error_log.xml` with the following content:
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<clickhouse>
|
||||||
|
<error_log remove="1" />
|
||||||
|
</clickhouse>
|
||||||
|
```
|
||||||
|
|
||||||
## custom_settings_prefixes {#custom_settings_prefixes}
|
## custom_settings_prefixes {#custom_settings_prefixes}
|
||||||
|
|
||||||
@ -1901,7 +1949,7 @@ For more information, see the MergeTreeSettings.h header file.
|
|||||||
|
|
||||||
## metric_log {#metric_log}
|
## metric_log {#metric_log}
|
||||||
|
|
||||||
It is enabled by default. If it`s not, you can do this manually.
|
It is disabled by default.
|
||||||
|
|
||||||
**Enabling**
|
**Enabling**
|
||||||
|
|
||||||
@ -2924,6 +2972,8 @@ Define proxy servers for HTTP and HTTPS requests, currently supported by S3 stor
|
|||||||
|
|
||||||
There are three ways to define proxy servers: environment variables, proxy lists, and remote proxy resolvers.
|
There are three ways to define proxy servers: environment variables, proxy lists, and remote proxy resolvers.
|
||||||
|
|
||||||
|
Bypassing proxy servers for specific hosts is also supported with the use of `no_proxy`.
|
||||||
|
|
||||||
### Environment variables
|
### Environment variables
|
||||||
|
|
||||||
The `http_proxy` and `https_proxy` environment variables allow you to specify a
|
The `http_proxy` and `https_proxy` environment variables allow you to specify a
|
||||||
@ -3033,6 +3083,29 @@ This also allows a mix of resolver types can be used.
|
|||||||
|
|
||||||
By default, tunneling (i.e, `HTTP CONNECT`) is used to make `HTTPS` requests over `HTTP` proxy. This setting can be used to disable it.
|
By default, tunneling (i.e, `HTTP CONNECT`) is used to make `HTTPS` requests over `HTTP` proxy. This setting can be used to disable it.
|
||||||
|
|
||||||
|
### no_proxy
|
||||||
|
By default, all requests will go through the proxy. In order to disable it for specific hosts, the `no_proxy` variable must be set.
|
||||||
|
It can be set inside the `<proxy>` clause for list and remote resolvers and as an environment variable for environment resolver.
|
||||||
|
It supports IP addresses, domains, subdomains and `'*'` wildcard for full bypass. Leading dots are stripped just like curl does.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
The below configuration bypasses proxy requests to `clickhouse.cloud` and all of its subdomains (e.g, `auth.clickhouse.cloud`).
|
||||||
|
The same applies to GitLab, even though it has a leading dot. Both `gitlab.com` and `about.gitlab.com` would bypass the proxy.
|
||||||
|
|
||||||
|
``` xml
|
||||||
|
<proxy>
|
||||||
|
<no_proxy>clickhouse.cloud,.gitlab.com</no_proxy>
|
||||||
|
<http>
|
||||||
|
<uri>http://proxy1</uri>
|
||||||
|
<uri>http://proxy2:3128</uri>
|
||||||
|
</http>
|
||||||
|
<https>
|
||||||
|
<uri>http://proxy1:3128</uri>
|
||||||
|
</https>
|
||||||
|
</proxy>
|
||||||
|
```
|
||||||
|
|
||||||
## max_materialized_views_count_for_table {#max_materialized_views_count_for_table}
|
## max_materialized_views_count_for_table {#max_materialized_views_count_for_table}
|
||||||
|
|
||||||
A limit on the number of materialized views attached to a table.
|
A limit on the number of materialized views attached to a table.
|
||||||
@ -3059,3 +3132,21 @@ This setting is only necessary for the migration period and will become obsolete
|
|||||||
Type: Bool
|
Type: Bool
|
||||||
|
|
||||||
Default: 1
|
Default: 1
|
||||||
|
|
||||||
|
## merge_workload {#merge_workload}
|
||||||
|
|
||||||
|
Used to regulate how resources are utilized and shared between merges and other workloads. Specified value is used as `workload` setting value for all background merges. Can be overridden by a merge tree setting.
|
||||||
|
|
||||||
|
Default value: "default"
|
||||||
|
|
||||||
|
**See Also**
|
||||||
|
- [Workload Scheduling](/docs/en/operations/workload-scheduling.md)
|
||||||
|
|
||||||
|
## mutation_workload {#mutation_workload}
|
||||||
|
|
||||||
|
Used to regulate how resources are utilized and shared between mutations and other workloads. Specified value is used as `workload` setting value for all background mutations. Can be overridden by a merge tree setting.
|
||||||
|
|
||||||
|
Default value: "default"
|
||||||
|
|
||||||
|
**See Also**
|
||||||
|
- [Workload Scheduling](/docs/en/operations/workload-scheduling.md)
|
||||||
|
@ -974,6 +974,24 @@ Default value: false
|
|||||||
|
|
||||||
- [exclude_deleted_rows_for_part_size_in_merge](#exclude_deleted_rows_for_part_size_in_merge) setting
|
- [exclude_deleted_rows_for_part_size_in_merge](#exclude_deleted_rows_for_part_size_in_merge) setting
|
||||||
|
|
||||||
|
## merge_workload
|
||||||
|
|
||||||
|
Used to regulate how resources are utilized and shared between merges and other workloads. Specified value is used as `workload` setting value for background merges of this table. If not specified (empty string), then server setting `merge_workload` is used instead.
|
||||||
|
|
||||||
|
Default value: an empty string
|
||||||
|
|
||||||
|
**See Also**
|
||||||
|
- [Workload Scheduling](/docs/en/operations/workload-scheduling.md)
|
||||||
|
|
||||||
|
## mutation_workload
|
||||||
|
|
||||||
|
Used to regulate how resources are utilized and shared between mutations and other workloads. Specified value is used as `workload` setting value for background mutations of this table. If not specified (empty string), then server setting `mutation_workload` is used instead.
|
||||||
|
|
||||||
|
Default value: an empty string
|
||||||
|
|
||||||
|
**See Also**
|
||||||
|
- [Workload Scheduling](/docs/en/operations/workload-scheduling.md)
|
||||||
|
|
||||||
### optimize_row_order
|
### optimize_row_order
|
||||||
|
|
||||||
Controls if the row order should be optimized during inserts to improve the compressability of the newly inserted table part.
|
Controls if the row order should be optimized during inserts to improve the compressability of the newly inserted table part.
|
||||||
|
@ -1706,6 +1706,43 @@ Result:
|
|||||||
└────────────┘
|
└────────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## output_format_pretty_display_footer_column_names
|
||||||
|
|
||||||
|
Display column names in the footer if there are many table rows.
|
||||||
|
|
||||||
|
Possible values:
|
||||||
|
|
||||||
|
- 0 — No column names are displayed in the footer.
|
||||||
|
- 1 — Column names are displayed in the footer if row count is greater than or equal to the threshold value set by [output_format_pretty_display_footer_column_names_min_rows](#output_format_pretty_display_footer_column_names_min_rows) (50 by default).
|
||||||
|
|
||||||
|
Default value: `1`.
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT *, toTypeName(*) FROM (SELECT * FROM system.numbers LIMIT 1000);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
```response
|
||||||
|
┌─number─┬─toTypeName(number)─┐
|
||||||
|
1. │ 0 │ UInt64 │
|
||||||
|
2. │ 1 │ UInt64 │
|
||||||
|
3. │ 2 │ UInt64 │
|
||||||
|
...
|
||||||
|
999. │ 998 │ UInt64 │
|
||||||
|
1000. │ 999 │ UInt64 │
|
||||||
|
└─number─┴─toTypeName(number)─┘
|
||||||
|
```
|
||||||
|
## output_format_pretty_display_footer_column_names_min_rows
|
||||||
|
|
||||||
|
Sets the minimum number of rows for which a footer with column names will be displayed if setting [output_format_pretty_display_footer_column_names](#output_format_pretty_display_footer_column_names) is enabled.
|
||||||
|
|
||||||
|
Default value: `50`.
|
||||||
|
|
||||||
## Template format settings {#template-format-settings}
|
## Template format settings {#template-format-settings}
|
||||||
|
|
||||||
### format_template_resultset {#format_template_resultset}
|
### format_template_resultset {#format_template_resultset}
|
||||||
|
@ -1592,19 +1592,19 @@ Default value: `default`.
|
|||||||
|
|
||||||
## parallel_replicas_custom_key_range_lower {#parallel_replicas_custom_key_range_lower}
|
## parallel_replicas_custom_key_range_lower {#parallel_replicas_custom_key_range_lower}
|
||||||
|
|
||||||
Allows the filter type `range` to split the work evenly between replicas based on the custom range `[parallel_replicas_custom_key_range_lower, INT_MAX]`.
|
Allows the filter type `range` to split the work evenly between replicas based on the custom range `[parallel_replicas_custom_key_range_lower, INT_MAX]`.
|
||||||
|
|
||||||
When used in conjuction with [parallel_replicas_custom_key_range_upper](#parallel_replicas_custom_key_range_upper), it lets the filter evenly split the work over replicas for the range `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.
|
When used in conjuction with [parallel_replicas_custom_key_range_upper](#parallel_replicas_custom_key_range_upper), it lets the filter evenly split the work over replicas for the range `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.
|
||||||
|
|
||||||
Note: This setting will not cause any additional data to be filtered during query processing, rather it changes the points at which the range filter breaks up the range `[0, INT_MAX]` for parallel processing.
|
Note: This setting will not cause any additional data to be filtered during query processing, rather it changes the points at which the range filter breaks up the range `[0, INT_MAX]` for parallel processing.
|
||||||
|
|
||||||
## parallel_replicas_custom_key_range_upper {#parallel_replicas_custom_key_range_upper}
|
## parallel_replicas_custom_key_range_upper {#parallel_replicas_custom_key_range_upper}
|
||||||
|
|
||||||
Allows the filter type `range` to split the work evenly between replicas based on the custom range `[0, parallel_replicas_custom_key_range_upper]`. A value of 0 disables the upper bound, setting it the max value of the custom key expression.
|
Allows the filter type `range` to split the work evenly between replicas based on the custom range `[0, parallel_replicas_custom_key_range_upper]`. A value of 0 disables the upper bound, setting it the max value of the custom key expression.
|
||||||
|
|
||||||
When used in conjuction with [parallel_replicas_custom_key_range_lower](#parallel_replicas_custom_key_range_lower), it lets the filter evenly split the work over replicas for the range `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.
|
When used in conjuction with [parallel_replicas_custom_key_range_lower](#parallel_replicas_custom_key_range_lower), it lets the filter evenly split the work over replicas for the range `[parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper]`.
|
||||||
|
|
||||||
Note: This setting will not cause any additional data to be filtered during query processing, rather it changes the points at which the range filter breaks up the range `[0, INT_MAX]` for parallel processing.
|
Note: This setting will not cause any additional data to be filtered during query processing, rather it changes the points at which the range filter breaks up the range `[0, INT_MAX]` for parallel processing.
|
||||||
|
|
||||||
## allow_experimental_parallel_reading_from_replicas
|
## allow_experimental_parallel_reading_from_replicas
|
||||||
|
|
||||||
@ -3188,7 +3188,7 @@ Default value: `0`.
|
|||||||
|
|
||||||
## lightweight_deletes_sync {#lightweight_deletes_sync}
|
## lightweight_deletes_sync {#lightweight_deletes_sync}
|
||||||
|
|
||||||
The same as 'mutation_sync', but controls only execution of lightweight deletes.
|
The same as 'mutation_sync', but controls only execution of lightweight deletes.
|
||||||
|
|
||||||
Possible values:
|
Possible values:
|
||||||
|
|
||||||
@ -5150,7 +5150,7 @@ Allows using statistic to optimize the order of [prewhere conditions](../../sql-
|
|||||||
|
|
||||||
## analyze_index_with_space_filling_curves
|
## analyze_index_with_space_filling_curves
|
||||||
|
|
||||||
If a table has a space-filling curve in its index, e.g. `ORDER BY mortonEncode(x, y)`, and the query has conditions on its arguments, e.g. `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`, use the space-filling curve for index analysis.
|
If a table has a space-filling curve in its index, e.g. `ORDER BY mortonEncode(x, y)` or `ORDER BY hilbertEncode(x, y)`, and the query has conditions on its arguments, e.g. `x >= 10 AND x <= 20 AND y >= 20 AND y <= 30`, use the space-filling curve for index analysis.
|
||||||
|
|
||||||
## query_plan_enable_optimizations {#query_plan_enable_optimizations}
|
## query_plan_enable_optimizations {#query_plan_enable_optimizations}
|
||||||
|
|
||||||
@ -5418,6 +5418,15 @@ When set to `false` than all attempts are made with identical timeouts.
|
|||||||
|
|
||||||
Default value: `true`.
|
Default value: `true`.
|
||||||
|
|
||||||
|
## allow_deprecated_snowflake_conversion_functions {#allow_deprecated_snowflake_conversion_functions}
|
||||||
|
|
||||||
|
Functions `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake`, and `dateTime64ToSnowflake` are deprecated and disabled by default.
|
||||||
|
Please use functions `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID`, and `dateTime64ToSnowflakeID` instead.
|
||||||
|
|
||||||
|
To re-enable the deprecated functions (e.g., during a transition period), please set this setting to `true`.
|
||||||
|
|
||||||
|
Default value: `false`
|
||||||
|
|
||||||
## allow_experimental_variant_type {#allow_experimental_variant_type}
|
## allow_experimental_variant_type {#allow_experimental_variant_type}
|
||||||
|
|
||||||
Allows creation of experimental [Variant](../../sql-reference/data-types/variant.md).
|
Allows creation of experimental [Variant](../../sql-reference/data-types/variant.md).
|
||||||
|
@ -639,6 +639,10 @@ An internal metric of the low-level memory allocator (jemalloc). See https://jem
|
|||||||
|
|
||||||
An internal metric of the low-level memory allocator (jemalloc). See https://jemalloc.net/jemalloc.3.html
|
An internal metric of the low-level memory allocator (jemalloc). See https://jemalloc.net/jemalloc.3.html
|
||||||
|
|
||||||
|
### jemalloc.prof.active
|
||||||
|
|
||||||
|
An internal metric of the low-level memory allocator (jemalloc). See https://jemalloc.net/jemalloc.3.html
|
||||||
|
|
||||||
**See Also**
|
**See Also**
|
||||||
|
|
||||||
- [Monitoring](../../operations/monitoring.md) — Base concepts of ClickHouse monitoring.
|
- [Monitoring](../../operations/monitoring.md) — Base concepts of ClickHouse monitoring.
|
||||||
|
39
docs/en/operations/system-tables/error_log.md
Normal file
39
docs/en/operations/system-tables/error_log.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
slug: /en/operations/system-tables/error_log
|
||||||
|
---
|
||||||
|
# error_log
|
||||||
|
|
||||||
|
Contains history of error values from table `system.errors`, periodically flushed to disk.
|
||||||
|
|
||||||
|
Columns:
|
||||||
|
- `hostname` ([LowCardinality(String)](../../sql-reference/data-types/string.md)) — Hostname of the server executing the query.
|
||||||
|
- `event_date` ([Date](../../sql-reference/data-types/date.md)) — Event date.
|
||||||
|
- `event_time` ([DateTime](../../sql-reference/data-types/datetime.md)) — Event time.
|
||||||
|
- `code` ([Int32](../../sql-reference/data-types/int-uint.md)) — Code number of the error.
|
||||||
|
- `error` ([LowCardinality(String)](../../sql-reference/data-types/string.md)) - Name of the error.
|
||||||
|
- `value` ([UInt64](../../sql-reference/data-types/int-uint.md)) — The number of times this error happened.
|
||||||
|
- `remote` ([UInt8](../../sql-reference/data-types/int-uint.md)) — Remote exception (i.e. received during one of the distributed queries).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
``` sql
|
||||||
|
SELECT * FROM system.error_log LIMIT 1 FORMAT Vertical;
|
||||||
|
```
|
||||||
|
|
||||||
|
``` text
|
||||||
|
Row 1:
|
||||||
|
──────
|
||||||
|
hostname: clickhouse.eu-central1.internal
|
||||||
|
event_date: 2024-06-18
|
||||||
|
event_time: 2024-06-18 07:32:39
|
||||||
|
code: 999
|
||||||
|
error: KEEPER_EXCEPTION
|
||||||
|
value: 2
|
||||||
|
remote: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
**See also**
|
||||||
|
|
||||||
|
- [error_log setting](../../operations/server-configuration-parameters/settings.md#error_log) — Enabling and disabling the setting.
|
||||||
|
- [system.errors](../../operations/system-tables/errors.md) — Contains error codes with the number of times they have been triggered.
|
||||||
|
- [Monitoring](../../operations/monitoring.md) — Base concepts of ClickHouse monitoring.
|
@ -113,6 +113,8 @@ Columns:
|
|||||||
- `used_functions` ([Array(String)](../../sql-reference/data-types/array.md)) — Canonical names of `functions`, which were used during query execution.
|
- `used_functions` ([Array(String)](../../sql-reference/data-types/array.md)) — Canonical names of `functions`, which were used during query execution.
|
||||||
- `used_storages` ([Array(String)](../../sql-reference/data-types/array.md)) — Canonical names of `storages`, which were used during query execution.
|
- `used_storages` ([Array(String)](../../sql-reference/data-types/array.md)) — Canonical names of `storages`, which were used during query execution.
|
||||||
- `used_table_functions` ([Array(String)](../../sql-reference/data-types/array.md)) — Canonical names of `table functions`, which were used during query execution.
|
- `used_table_functions` ([Array(String)](../../sql-reference/data-types/array.md)) — Canonical names of `table functions`, which were used during query execution.
|
||||||
|
- `used_privileges` ([Array(String)](../../sql-reference/data-types/array.md)) - Privileges which were successfully checked during query execution.
|
||||||
|
- `missing_privileges` ([Array(String)](../../sql-reference/data-types/array.md)) - Privileges that are missing during query execution.
|
||||||
- `query_cache_usage` ([Enum8](../../sql-reference/data-types/enum.md)) — Usage of the [query cache](../query-cache.md) during query execution. Values:
|
- `query_cache_usage` ([Enum8](../../sql-reference/data-types/enum.md)) — Usage of the [query cache](../query-cache.md) during query execution. Values:
|
||||||
- `'Unknown'` = Status unknown.
|
- `'Unknown'` = Status unknown.
|
||||||
- `'None'` = The query result was neither written into nor read from the query cache.
|
- `'None'` = The query result was neither written into nor read from the query cache.
|
||||||
@ -194,6 +196,8 @@ used_formats: []
|
|||||||
used_functions: []
|
used_functions: []
|
||||||
used_storages: []
|
used_storages: []
|
||||||
used_table_functions: []
|
used_table_functions: []
|
||||||
|
used_privileges: []
|
||||||
|
missing_privileges: []
|
||||||
query_cache_usage: None
|
query_cache_usage: None
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -36,9 +36,24 @@ $ echo 0 | sudo tee /proc/sys/vm/overcommit_memory
|
|||||||
Use `perf top` to watch the time spent in the kernel for memory management.
|
Use `perf top` to watch the time spent in the kernel for memory management.
|
||||||
Permanent huge pages also do not need to be allocated.
|
Permanent huge pages also do not need to be allocated.
|
||||||
|
|
||||||
:::warning
|
### Using less than 16GB of RAM
|
||||||
If your system has less than 16 GB of RAM, you may experience various memory exceptions because default settings do not match this amount of memory. The recommended amount of RAM is 32 GB or more. You can use ClickHouse in a system with a small amount of RAM, even with 2 GB of RAM, but it requires additional tuning and can ingest at a low rate.
|
|
||||||
:::
|
The recommended amount of RAM is 32 GB or more.
|
||||||
|
|
||||||
|
If your system has less than 16 GB of RAM, you may experience various memory exceptions because default settings do not match this amount of memory. You can use ClickHouse in a system with a small amount of RAM (as low as 2 GB), but these setups require additional tuning and can only ingest at a low rate.
|
||||||
|
|
||||||
|
When using ClickHouse with less than 16GB of RAM, we recommend the following:
|
||||||
|
|
||||||
|
- Lower the size of the mark cache in the `config.xml`. It can be set as low as 500 MB, but it cannot be set to zero.
|
||||||
|
- Lower the number of query processing threads down to `1`.
|
||||||
|
- Lower the `max_block_size` to `8192`. Values as low as `1024` can still be practical.
|
||||||
|
- Lower `max_download_threads` to `1`.
|
||||||
|
- Set `input_format_parallel_parsing` and `output_format_parallel_formatting` to `0`.
|
||||||
|
|
||||||
|
Additional notes:
|
||||||
|
- To flush the memory cached by the memory allocator, you can run the `SYSTEM JEMALLOC PURGE`
|
||||||
|
command.
|
||||||
|
- We do not recommend using S3 or Kafka integrations on low-memory machines because they require significant memory for buffers.
|
||||||
|
|
||||||
## Storage Subsystem {#storage-subsystem}
|
## Storage Subsystem {#storage-subsystem}
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@ Example:
|
|||||||
|
|
||||||
Queries can be marked with setting `workload` to distinguish different workloads. If `workload` is not set, than value "default" is used. Note that you are able to specify the other value using settings profiles. Setting constraints can be used to make `workload` constant if you want all queries from the user to be marked with fixed value of `workload` setting.
|
Queries can be marked with setting `workload` to distinguish different workloads. If `workload` is not set, than value "default" is used. Note that you are able to specify the other value using settings profiles. Setting constraints can be used to make `workload` constant if you want all queries from the user to be marked with fixed value of `workload` setting.
|
||||||
|
|
||||||
|
It is possible to assign a `workload` setting for background activities. Merges and mutations are using `merge_workload` and `mutation_workload` server settings correspondingly. These values can also be overridden for specific tables using `merge_workload` and `mutation_workload` merge tree settings
|
||||||
|
|
||||||
Let's consider an example of a system with two different workloads: "production" and "development".
|
Let's consider an example of a system with two different workloads: "production" and "development".
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
@ -151,6 +153,9 @@ Example:
|
|||||||
</clickhouse>
|
</clickhouse>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## See also
|
## See also
|
||||||
- [system.scheduler](/docs/en/operations/system-tables/scheduler.md)
|
- [system.scheduler](/docs/en/operations/system-tables/scheduler.md)
|
||||||
|
- [merge_workload](/docs/en/operations/settings/merge-tree-settings.md#merge_workload) merge tree setting
|
||||||
|
- [merge_workload](/docs/en/operations/server-configuration-parameters/settings.md#merge_workload) global server setting
|
||||||
|
- [mutation_workload](/docs/en/operations/settings/merge-tree-settings.md#mutation_workload) merge tree setting
|
||||||
|
- [mutation_workload](/docs/en/operations/server-configuration-parameters/settings.md#mutation_workload) global server setting
|
||||||
|
@ -106,8 +106,8 @@ To work with these states, use:
|
|||||||
- [AggregatingMergeTree](../../engines/table-engines/mergetree-family/aggregatingmergetree.md) table engine.
|
- [AggregatingMergeTree](../../engines/table-engines/mergetree-family/aggregatingmergetree.md) table engine.
|
||||||
- [finalizeAggregation](../../sql-reference/functions/other-functions.md#function-finalizeaggregation) function.
|
- [finalizeAggregation](../../sql-reference/functions/other-functions.md#function-finalizeaggregation) function.
|
||||||
- [runningAccumulate](../../sql-reference/functions/other-functions.md#runningaccumulate) function.
|
- [runningAccumulate](../../sql-reference/functions/other-functions.md#runningaccumulate) function.
|
||||||
- [-Merge](#aggregate_functions_combinators-merge) combinator.
|
- [-Merge](#-merge) combinator.
|
||||||
- [-MergeState](#aggregate_functions_combinators-mergestate) combinator.
|
- [-MergeState](#-mergestate) combinator.
|
||||||
|
|
||||||
## -Merge
|
## -Merge
|
||||||
|
|
||||||
|
@ -82,10 +82,12 @@ FROM
|
|||||||
|
|
||||||
In this case, you should remember that you do not know the histogram bin borders.
|
In this case, you should remember that you do not know the histogram bin borders.
|
||||||
|
|
||||||
## sequenceMatch(pattern)(timestamp, cond1, cond2, ...)
|
## sequenceMatch
|
||||||
|
|
||||||
Checks whether the sequence contains an event chain that matches the pattern.
|
Checks whether the sequence contains an event chain that matches the pattern.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
``` sql
|
``` sql
|
||||||
sequenceMatch(pattern)(timestamp, cond1, cond2, ...)
|
sequenceMatch(pattern)(timestamp, cond1, cond2, ...)
|
||||||
```
|
```
|
||||||
@ -102,7 +104,7 @@ Events that occur at the same second may lay in the sequence in an undefined ord
|
|||||||
|
|
||||||
**Parameters**
|
**Parameters**
|
||||||
|
|
||||||
- `pattern` — Pattern string. See [Pattern syntax](#sequence-function-pattern-syntax).
|
- `pattern` — Pattern string. See [Pattern syntax](#sequencematch).
|
||||||
|
|
||||||
**Returned values**
|
**Returned values**
|
||||||
|
|
||||||
@ -170,9 +172,9 @@ SELECT sequenceMatch('(?1)(?2)')(time, number = 1, number = 2, number = 4) FROM
|
|||||||
|
|
||||||
**See Also**
|
**See Also**
|
||||||
|
|
||||||
- [sequenceCount](#function-sequencecount)
|
- [sequenceCount](#sequencecount)
|
||||||
|
|
||||||
## sequenceCount(pattern)(time, cond1, cond2, ...)
|
## sequenceCount
|
||||||
|
|
||||||
Counts the number of event chains that matched the pattern. The function searches event chains that do not overlap. It starts to search for the next chain after the current chain is matched.
|
Counts the number of event chains that matched the pattern. The function searches event chains that do not overlap. It starts to search for the next chain after the current chain is matched.
|
||||||
|
|
||||||
@ -180,6 +182,8 @@ Counts the number of event chains that matched the pattern. The function searche
|
|||||||
Events that occur at the same second may lay in the sequence in an undefined order affecting the result.
|
Events that occur at the same second may lay in the sequence in an undefined order affecting the result.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
``` sql
|
``` sql
|
||||||
sequenceCount(pattern)(timestamp, cond1, cond2, ...)
|
sequenceCount(pattern)(timestamp, cond1, cond2, ...)
|
||||||
```
|
```
|
||||||
@ -192,7 +196,7 @@ sequenceCount(pattern)(timestamp, cond1, cond2, ...)
|
|||||||
|
|
||||||
**Parameters**
|
**Parameters**
|
||||||
|
|
||||||
- `pattern` — Pattern string. See [Pattern syntax](#sequence-function-pattern-syntax).
|
- `pattern` — Pattern string. See [Pattern syntax](#sequencematch).
|
||||||
|
|
||||||
**Returned values**
|
**Returned values**
|
||||||
|
|
||||||
@ -229,7 +233,7 @@ SELECT sequenceCount('(?1).*(?2)')(time, number = 1, number = 2) FROM t
|
|||||||
|
|
||||||
**See Also**
|
**See Also**
|
||||||
|
|
||||||
- [sequenceMatch](#function-sequencematch)
|
- [sequenceMatch](#sequencematch)
|
||||||
|
|
||||||
## windowFunnel
|
## windowFunnel
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/analysis_of_variance
|
slug: /en/sql-reference/aggregate-functions/reference/analysis_of_variance
|
||||||
sidebar_position: 6
|
sidebar_position: 101
|
||||||
---
|
---
|
||||||
|
|
||||||
# analysisOfVariance
|
# analysisOfVariance
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/any
|
slug: /en/sql-reference/aggregate-functions/reference/any
|
||||||
sidebar_position: 6
|
sidebar_position: 102
|
||||||
---
|
---
|
||||||
|
|
||||||
# any
|
# any
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/anyheavy
|
slug: /en/sql-reference/aggregate-functions/reference/anyheavy
|
||||||
sidebar_position: 103
|
sidebar_position: 104
|
||||||
---
|
---
|
||||||
|
|
||||||
# anyHeavy
|
# anyHeavy
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/anylast
|
slug: /en/sql-reference/aggregate-functions/reference/anylast
|
||||||
sidebar_position: 104
|
sidebar_position: 105
|
||||||
---
|
---
|
||||||
|
|
||||||
# anyLast
|
# anyLast
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/anylast_respect_nulls
|
slug: /en/sql-reference/aggregate-functions/reference/anylast_respect_nulls
|
||||||
sidebar_position: 104
|
sidebar_position: 106
|
||||||
---
|
---
|
||||||
|
|
||||||
# anyLast_respect_nulls
|
# anyLast_respect_nulls
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/approxtopk
|
slug: /en/sql-reference/aggregate-functions/reference/approxtopk
|
||||||
sidebar_position: 212
|
sidebar_position: 107
|
||||||
---
|
---
|
||||||
|
|
||||||
# approx_top_k
|
# approx_top_k
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/approxtopsum
|
slug: /en/sql-reference/aggregate-functions/reference/approxtopsum
|
||||||
sidebar_position: 212
|
sidebar_position: 108
|
||||||
---
|
---
|
||||||
|
|
||||||
# approx_top_sum
|
# approx_top_sum
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/argmax
|
slug: /en/sql-reference/aggregate-functions/reference/argmax
|
||||||
sidebar_position: 106
|
sidebar_position: 109
|
||||||
---
|
---
|
||||||
|
|
||||||
# argMax
|
# argMax
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/argmin
|
slug: /en/sql-reference/aggregate-functions/reference/argmin
|
||||||
sidebar_position: 105
|
sidebar_position: 110
|
||||||
---
|
---
|
||||||
|
|
||||||
# argMin
|
# argMin
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/array_concat_agg
|
slug: /en/sql-reference/aggregate-functions/reference/array_concat_agg
|
||||||
sidebar_position: 110
|
sidebar_position: 111
|
||||||
---
|
---
|
||||||
|
|
||||||
# array_concat_agg
|
# array_concat_agg
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/avg
|
slug: /en/sql-reference/aggregate-functions/reference/avg
|
||||||
sidebar_position: 5
|
sidebar_position: 112
|
||||||
---
|
---
|
||||||
|
|
||||||
# avg
|
# avg
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/avgweighted
|
slug: /en/sql-reference/aggregate-functions/reference/avgweighted
|
||||||
sidebar_position: 107
|
sidebar_position: 113
|
||||||
---
|
---
|
||||||
|
|
||||||
# avgWeighted
|
# avgWeighted
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/boundingRatio
|
slug: /en/sql-reference/aggregate-functions/reference/boundingRatio
|
||||||
sidebar_position: 2
|
sidebar_position: 114
|
||||||
title: boundingRatio
|
title: boundingRatio
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/categoricalinformationvalue
|
slug: /en/sql-reference/aggregate-functions/reference/categoricalinformationvalue
|
||||||
sidebar_position: 250
|
sidebar_position: 115
|
||||||
title: categoricalInformationValue
|
title: categoricalInformationValue
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/contingency
|
slug: /en/sql-reference/aggregate-functions/reference/contingency
|
||||||
sidebar_position: 350
|
sidebar_position: 116
|
||||||
---
|
---
|
||||||
|
|
||||||
# contingency
|
# contingency
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/corr
|
slug: /en/sql-reference/aggregate-functions/reference/corr
|
||||||
sidebar_position: 107
|
sidebar_position: 117
|
||||||
---
|
---
|
||||||
|
|
||||||
# corr
|
# corr
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/corrmatrix
|
slug: /en/sql-reference/aggregate-functions/reference/corrmatrix
|
||||||
sidebar_position: 108
|
sidebar_position: 118
|
||||||
---
|
---
|
||||||
|
|
||||||
# corrMatrix
|
# corrMatrix
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/corrstable
|
slug: /en/sql-reference/aggregate-functions/reference/corrstable
|
||||||
sidebar_position: 107
|
sidebar_position: 119
|
||||||
---
|
---
|
||||||
|
|
||||||
# corrStable
|
# corrStable
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/count
|
slug: /en/sql-reference/aggregate-functions/reference/count
|
||||||
sidebar_position: 1
|
sidebar_position: 120
|
||||||
---
|
---
|
||||||
|
|
||||||
# count
|
# count
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/covarpop
|
slug: /en/sql-reference/aggregate-functions/reference/covarpop
|
||||||
sidebar_position: 37
|
sidebar_position: 121
|
||||||
---
|
---
|
||||||
|
|
||||||
# covarPop
|
# covarPop
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/covarpopmatrix
|
slug: /en/sql-reference/aggregate-functions/reference/covarpopmatrix
|
||||||
sidebar_position: 36
|
sidebar_position: 122
|
||||||
---
|
---
|
||||||
|
|
||||||
# covarPopMatrix
|
# covarPopMatrix
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/covarpopstable
|
slug: /en/sql-reference/aggregate-functions/reference/covarpopstable
|
||||||
sidebar_position: 36
|
sidebar_position: 123
|
||||||
---
|
---
|
||||||
|
|
||||||
# covarPopStable
|
# covarPopStable
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/covarsamp
|
slug: /en/sql-reference/aggregate-functions/reference/covarsamp
|
||||||
sidebar_position: 37
|
sidebar_position: 124
|
||||||
---
|
---
|
||||||
|
|
||||||
# covarSamp
|
# covarSamp
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/covarsampmatrix
|
slug: /en/sql-reference/aggregate-functions/reference/covarsampmatrix
|
||||||
sidebar_position: 38
|
sidebar_position: 125
|
||||||
---
|
---
|
||||||
|
|
||||||
# covarSampMatrix
|
# covarSampMatrix
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/covarsampstable
|
slug: /en/sql-reference/aggregate-functions/reference/covarsampstable
|
||||||
sidebar_position: 37
|
sidebar_position: 126
|
||||||
---
|
---
|
||||||
|
|
||||||
# covarSampStable
|
# covarSampStable
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/cramersv
|
slug: /en/sql-reference/aggregate-functions/reference/cramersv
|
||||||
sidebar_position: 351
|
sidebar_position: 127
|
||||||
---
|
---
|
||||||
|
|
||||||
# cramersV
|
# cramersV
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/cramersvbiascorrected
|
slug: /en/sql-reference/aggregate-functions/reference/cramersvbiascorrected
|
||||||
sidebar_position: 352
|
sidebar_position: 128
|
||||||
---
|
---
|
||||||
|
|
||||||
# cramersVBiasCorrected
|
# cramersVBiasCorrected
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/deltasum
|
slug: /en/sql-reference/aggregate-functions/reference/deltasum
|
||||||
sidebar_position: 141
|
sidebar_position: 129
|
||||||
---
|
---
|
||||||
|
|
||||||
# deltaSum
|
# deltaSum
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/deltasumtimestamp
|
slug: /en/sql-reference/aggregate-functions/reference/deltasumtimestamp
|
||||||
sidebar_position: 141
|
sidebar_position: 130
|
||||||
title: deltaSumTimestamp
|
title: deltaSumTimestamp
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/entropy
|
slug: /en/sql-reference/aggregate-functions/reference/entropy
|
||||||
sidebar_position: 302
|
sidebar_position: 131
|
||||||
---
|
---
|
||||||
|
|
||||||
# entropy
|
# entropy
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/exponentialmovingaverage
|
slug: /en/sql-reference/aggregate-functions/reference/exponentialMovingAverage
|
||||||
sidebar_position: 108
|
sidebar_position: 132
|
||||||
sidebar_title: exponentialMovingAverage
|
title: exponentialMovingAverage
|
||||||
---
|
---
|
||||||
|
|
||||||
## exponentialMovingAverage
|
## exponentialMovingAverage
|
||||||
@ -96,56 +96,56 @@ Result:
|
|||||||
|
|
||||||
``` text
|
``` text
|
||||||
┌─value─┬─time─┬─round(exp_smooth, 3)─┬─bar────────────────────────────────────────┐
|
┌─value─┬─time─┬─round(exp_smooth, 3)─┬─bar────────────────────────────────────────┐
|
||||||
│ 1 │ 0 │ 0.067 │ ███▎ │
|
│ 1 │ 0 │ 0.067 │ ███▎ │
|
||||||
│ 0 │ 1 │ 0.062 │ ███ │
|
│ 0 │ 1 │ 0.062 │ ███ │
|
||||||
│ 0 │ 2 │ 0.058 │ ██▊ │
|
│ 0 │ 2 │ 0.058 │ ██▊ │
|
||||||
│ 0 │ 3 │ 0.054 │ ██▋ │
|
│ 0 │ 3 │ 0.054 │ ██▋ │
|
||||||
│ 0 │ 4 │ 0.051 │ ██▌ │
|
│ 0 │ 4 │ 0.051 │ ██▌ │
|
||||||
│ 0 │ 5 │ 0.047 │ ██▎ │
|
│ 0 │ 5 │ 0.047 │ ██▎ │
|
||||||
│ 0 │ 6 │ 0.044 │ ██▏ │
|
│ 0 │ 6 │ 0.044 │ ██▏ │
|
||||||
│ 0 │ 7 │ 0.041 │ ██ │
|
│ 0 │ 7 │ 0.041 │ ██ │
|
||||||
│ 0 │ 8 │ 0.038 │ █▊ │
|
│ 0 │ 8 │ 0.038 │ █▊ │
|
||||||
│ 0 │ 9 │ 0.036 │ █▋ │
|
│ 0 │ 9 │ 0.036 │ █▋ │
|
||||||
│ 0 │ 10 │ 0.033 │ █▋ │
|
│ 0 │ 10 │ 0.033 │ █▋ │
|
||||||
│ 0 │ 11 │ 0.031 │ █▌ │
|
│ 0 │ 11 │ 0.031 │ █▌ │
|
||||||
│ 0 │ 12 │ 0.029 │ █▍ │
|
│ 0 │ 12 │ 0.029 │ █▍ │
|
||||||
│ 0 │ 13 │ 0.027 │ █▎ │
|
│ 0 │ 13 │ 0.027 │ █▎ │
|
||||||
│ 0 │ 14 │ 0.025 │ █▎ │
|
│ 0 │ 14 │ 0.025 │ █▎ │
|
||||||
│ 0 │ 15 │ 0.024 │ █▏ │
|
│ 0 │ 15 │ 0.024 │ █▏ │
|
||||||
│ 0 │ 16 │ 0.022 │ █ │
|
│ 0 │ 16 │ 0.022 │ █ │
|
||||||
│ 0 │ 17 │ 0.021 │ █ │
|
│ 0 │ 17 │ 0.021 │ █ │
|
||||||
│ 0 │ 18 │ 0.019 │ ▊ │
|
│ 0 │ 18 │ 0.019 │ ▊ │
|
||||||
│ 0 │ 19 │ 0.018 │ ▊ │
|
│ 0 │ 19 │ 0.018 │ ▊ │
|
||||||
│ 0 │ 20 │ 0.017 │ ▋ │
|
│ 0 │ 20 │ 0.017 │ ▋ │
|
||||||
│ 0 │ 21 │ 0.016 │ ▋ │
|
│ 0 │ 21 │ 0.016 │ ▋ │
|
||||||
│ 0 │ 22 │ 0.015 │ ▋ │
|
│ 0 │ 22 │ 0.015 │ ▋ │
|
||||||
│ 0 │ 23 │ 0.014 │ ▋ │
|
│ 0 │ 23 │ 0.014 │ ▋ │
|
||||||
│ 0 │ 24 │ 0.013 │ ▋ │
|
│ 0 │ 24 │ 0.013 │ ▋ │
|
||||||
│ 1 │ 25 │ 0.079 │ ███▊ │
|
│ 1 │ 25 │ 0.079 │ ███▊ │
|
||||||
│ 1 │ 26 │ 0.14 │ ███████ │
|
│ 1 │ 26 │ 0.14 │ ███████ │
|
||||||
│ 1 │ 27 │ 0.198 │ █████████▊ │
|
│ 1 │ 27 │ 0.198 │ █████████▊ │
|
||||||
│ 1 │ 28 │ 0.252 │ ████████████▌ │
|
│ 1 │ 28 │ 0.252 │ ████████████▌ │
|
||||||
│ 1 │ 29 │ 0.302 │ ███████████████ │
|
│ 1 │ 29 │ 0.302 │ ███████████████ │
|
||||||
│ 1 │ 30 │ 0.349 │ █████████████████▍ │
|
│ 1 │ 30 │ 0.349 │ █████████████████▍ │
|
||||||
│ 1 │ 31 │ 0.392 │ ███████████████████▌ │
|
│ 1 │ 31 │ 0.392 │ ███████████████████▌ │
|
||||||
│ 1 │ 32 │ 0.433 │ █████████████████████▋ │
|
│ 1 │ 32 │ 0.433 │ █████████████████████▋ │
|
||||||
│ 1 │ 33 │ 0.471 │ ███████████████████████▌ │
|
│ 1 │ 33 │ 0.471 │ ███████████████████████▌ │
|
||||||
│ 1 │ 34 │ 0.506 │ █████████████████████████▎ │
|
│ 1 │ 34 │ 0.506 │ █████████████████████████▎ │
|
||||||
│ 1 │ 35 │ 0.539 │ ██████████████████████████▊ │
|
│ 1 │ 35 │ 0.539 │ ██████████████████████████▊ │
|
||||||
│ 1 │ 36 │ 0.57 │ ████████████████████████████▌ │
|
│ 1 │ 36 │ 0.57 │ ████████████████████████████▌ │
|
||||||
│ 1 │ 37 │ 0.599 │ █████████████████████████████▊ │
|
│ 1 │ 37 │ 0.599 │ █████████████████████████████▊ │
|
||||||
│ 1 │ 38 │ 0.626 │ ███████████████████████████████▎ │
|
│ 1 │ 38 │ 0.626 │ ███████████████████████████████▎ │
|
||||||
│ 1 │ 39 │ 0.651 │ ████████████████████████████████▌ │
|
│ 1 │ 39 │ 0.651 │ ████████████████████████████████▌ │
|
||||||
│ 1 │ 40 │ 0.674 │ █████████████████████████████████▋ │
|
│ 1 │ 40 │ 0.674 │ █████████████████████████████████▋ │
|
||||||
│ 1 │ 41 │ 0.696 │ ██████████████████████████████████▋ │
|
│ 1 │ 41 │ 0.696 │ ██████████████████████████████████▋ │
|
||||||
│ 1 │ 42 │ 0.716 │ ███████████████████████████████████▋ │
|
│ 1 │ 42 │ 0.716 │ ███████████████████████████████████▋ │
|
||||||
│ 1 │ 43 │ 0.735 │ ████████████████████████████████████▋ │
|
│ 1 │ 43 │ 0.735 │ ████████████████████████████████████▋ │
|
||||||
│ 1 │ 44 │ 0.753 │ █████████████████████████████████████▋ │
|
│ 1 │ 44 │ 0.753 │ █████████████████████████████████████▋ │
|
||||||
│ 1 │ 45 │ 0.77 │ ██████████████████████████████████████▍ │
|
│ 1 │ 45 │ 0.77 │ ██████████████████████████████████████▍ │
|
||||||
│ 1 │ 46 │ 0.785 │ ███████████████████████████████████████▎ │
|
│ 1 │ 46 │ 0.785 │ ███████████████████████████████████████▎ │
|
||||||
│ 1 │ 47 │ 0.8 │ ███████████████████████████████████████▊ │
|
│ 1 │ 47 │ 0.8 │ ███████████████████████████████████████▊ │
|
||||||
│ 1 │ 48 │ 0.813 │ ████████████████████████████████████████▋ │
|
│ 1 │ 48 │ 0.813 │ ████████████████████████████████████████▋ │
|
||||||
│ 1 │ 49 │ 0.825 │ █████████████████████████████████████████▎│
|
│ 1 │ 49 │ 0.825 │ █████████████████████████████████████████▎ │
|
||||||
└───────┴──────┴──────────────────────┴────────────────────────────────────────────┘
|
└───────┴──────┴──────────────────────┴────────────────────────────────────────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
slug: /en/sql-reference/aggregate-functions/reference/exponentialTimeDecayedAvg
|
||||||
|
sidebar_position: 133
|
||||||
|
title: exponentialTimeDecayedAvg
|
||||||
|
---
|
||||||
|
|
||||||
|
## exponentialTimeDecayedAvg
|
||||||
|
|
||||||
|
Returns the exponentially smoothed weighted moving average of values of a time series at point `t` in time.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
exponentialTimeDecayedAvg(x)(v, t)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `v` — Value. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
- `t` — Time. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md), [DateTime](../../data-types/datetime.md), [DateTime64](../../data-types/datetime64.md).
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
|
||||||
|
- `x` — Half-life period. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
|
||||||
|
**Returned values**
|
||||||
|
|
||||||
|
- Returns an exponentially smoothed weighted moving average at index `t` in time. [Float64](../../data-types/float.md).
|
||||||
|
|
||||||
|
**Examples**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT
|
||||||
|
value,
|
||||||
|
time,
|
||||||
|
round(exp_smooth, 3),
|
||||||
|
bar(exp_smooth, 0, 5, 50) AS bar
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
(number = 0) OR (number >= 25) AS value,
|
||||||
|
number AS time,
|
||||||
|
exponentialTimeDecayedAvg(10)(value, time) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS exp_smooth
|
||||||
|
FROM numbers(50)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Response:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
┌─value─┬─time─┬─round(exp_smooth, 3)─┬─bar────────┐
|
||||||
|
1. │ 1 │ 0 │ 1 │ ██████████ │
|
||||||
|
2. │ 0 │ 1 │ 0.475 │ ████▊ │
|
||||||
|
3. │ 0 │ 2 │ 0.301 │ ███ │
|
||||||
|
4. │ 0 │ 3 │ 0.214 │ ██▏ │
|
||||||
|
5. │ 0 │ 4 │ 0.162 │ █▌ │
|
||||||
|
6. │ 0 │ 5 │ 0.128 │ █▎ │
|
||||||
|
7. │ 0 │ 6 │ 0.104 │ █ │
|
||||||
|
8. │ 0 │ 7 │ 0.086 │ ▊ │
|
||||||
|
9. │ 0 │ 8 │ 0.072 │ ▋ │
|
||||||
|
0. │ 0 │ 9 │ 0.061 │ ▌ │
|
||||||
|
1. │ 0 │ 10 │ 0.052 │ ▌ │
|
||||||
|
2. │ 0 │ 11 │ 0.045 │ ▍ │
|
||||||
|
3. │ 0 │ 12 │ 0.039 │ ▍ │
|
||||||
|
4. │ 0 │ 13 │ 0.034 │ ▎ │
|
||||||
|
5. │ 0 │ 14 │ 0.03 │ ▎ │
|
||||||
|
6. │ 0 │ 15 │ 0.027 │ ▎ │
|
||||||
|
7. │ 0 │ 16 │ 0.024 │ ▏ │
|
||||||
|
8. │ 0 │ 17 │ 0.021 │ ▏ │
|
||||||
|
9. │ 0 │ 18 │ 0.018 │ ▏ │
|
||||||
|
0. │ 0 │ 19 │ 0.016 │ ▏ │
|
||||||
|
1. │ 0 │ 20 │ 0.015 │ ▏ │
|
||||||
|
2. │ 0 │ 21 │ 0.013 │ ▏ │
|
||||||
|
3. │ 0 │ 22 │ 0.012 │ │
|
||||||
|
4. │ 0 │ 23 │ 0.01 │ │
|
||||||
|
5. │ 0 │ 24 │ 0.009 │ │
|
||||||
|
6. │ 1 │ 25 │ 0.111 │ █ │
|
||||||
|
7. │ 1 │ 26 │ 0.202 │ ██ │
|
||||||
|
8. │ 1 │ 27 │ 0.283 │ ██▊ │
|
||||||
|
9. │ 1 │ 28 │ 0.355 │ ███▌ │
|
||||||
|
0. │ 1 │ 29 │ 0.42 │ ████▏ │
|
||||||
|
1. │ 1 │ 30 │ 0.477 │ ████▊ │
|
||||||
|
2. │ 1 │ 31 │ 0.529 │ █████▎ │
|
||||||
|
3. │ 1 │ 32 │ 0.576 │ █████▊ │
|
||||||
|
4. │ 1 │ 33 │ 0.618 │ ██████▏ │
|
||||||
|
5. │ 1 │ 34 │ 0.655 │ ██████▌ │
|
||||||
|
6. │ 1 │ 35 │ 0.689 │ ██████▉ │
|
||||||
|
7. │ 1 │ 36 │ 0.719 │ ███████▏ │
|
||||||
|
8. │ 1 │ 37 │ 0.747 │ ███████▍ │
|
||||||
|
9. │ 1 │ 38 │ 0.771 │ ███████▋ │
|
||||||
|
0. │ 1 │ 39 │ 0.793 │ ███████▉ │
|
||||||
|
1. │ 1 │ 40 │ 0.813 │ ████████▏ │
|
||||||
|
2. │ 1 │ 41 │ 0.831 │ ████████▎ │
|
||||||
|
3. │ 1 │ 42 │ 0.848 │ ████████▍ │
|
||||||
|
4. │ 1 │ 43 │ 0.862 │ ████████▌ │
|
||||||
|
5. │ 1 │ 44 │ 0.876 │ ████████▊ │
|
||||||
|
6. │ 1 │ 45 │ 0.888 │ ████████▉ │
|
||||||
|
7. │ 1 │ 46 │ 0.898 │ ████████▉ │
|
||||||
|
8. │ 1 │ 47 │ 0.908 │ █████████ │
|
||||||
|
9. │ 1 │ 48 │ 0.917 │ █████████▏ │
|
||||||
|
0. │ 1 │ 49 │ 0.925 │ █████████▏ │
|
||||||
|
└───────┴──────┴──────────────────────┴────────────┘
|
||||||
|
```
|
@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
slug: /en/sql-reference/aggregate-functions/reference/exponentialTimeDecayedCount
|
||||||
|
sidebar_position: 134
|
||||||
|
title: exponentialTimeDecayedCount
|
||||||
|
---
|
||||||
|
|
||||||
|
## exponentialTimeDecayedCount
|
||||||
|
|
||||||
|
Returns the cumulative exponential decay over a time series at the index `t` in time.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
exponentialTimeDecayedCount(x)(t)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `t` — Time. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md), [DateTime](../../data-types/datetime.md), [DateTime64](../../data-types/datetime64.md).
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
|
||||||
|
- `x` — Half-life period. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
|
||||||
|
**Returned values**
|
||||||
|
|
||||||
|
- Returns the cumulative exponential decay at the given point in time. [Float64](../../data-types/float.md).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT
|
||||||
|
value,
|
||||||
|
time,
|
||||||
|
round(exp_smooth, 3),
|
||||||
|
bar(exp_smooth, 0, 20, 50) AS bar
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
(number % 5) = 0 AS value,
|
||||||
|
number AS time,
|
||||||
|
exponentialTimeDecayedCount(10)(time) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS exp_smooth
|
||||||
|
FROM numbers(50)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
```response
|
||||||
|
┌─value─┬─time─┬─round(exp_smooth, 3)─┬─bar────────────────────────┐
|
||||||
|
1. │ 1 │ 0 │ 1 │ ██▌ │
|
||||||
|
2. │ 0 │ 1 │ 1.905 │ ████▊ │
|
||||||
|
3. │ 0 │ 2 │ 2.724 │ ██████▊ │
|
||||||
|
4. │ 0 │ 3 │ 3.464 │ ████████▋ │
|
||||||
|
5. │ 0 │ 4 │ 4.135 │ ██████████▎ │
|
||||||
|
6. │ 1 │ 5 │ 4.741 │ ███████████▊ │
|
||||||
|
7. │ 0 │ 6 │ 5.29 │ █████████████▏ │
|
||||||
|
8. │ 0 │ 7 │ 5.787 │ ██████████████▍ │
|
||||||
|
9. │ 0 │ 8 │ 6.236 │ ███████████████▌ │
|
||||||
|
10. │ 0 │ 9 │ 6.643 │ ████████████████▌ │
|
||||||
|
11. │ 1 │ 10 │ 7.01 │ █████████████████▌ │
|
||||||
|
12. │ 0 │ 11 │ 7.343 │ ██████████████████▎ │
|
||||||
|
13. │ 0 │ 12 │ 7.644 │ ███████████████████ │
|
||||||
|
14. │ 0 │ 13 │ 7.917 │ ███████████████████▊ │
|
||||||
|
15. │ 0 │ 14 │ 8.164 │ ████████████████████▍ │
|
||||||
|
16. │ 1 │ 15 │ 8.387 │ ████████████████████▉ │
|
||||||
|
17. │ 0 │ 16 │ 8.589 │ █████████████████████▍ │
|
||||||
|
18. │ 0 │ 17 │ 8.771 │ █████████████████████▉ │
|
||||||
|
19. │ 0 │ 18 │ 8.937 │ ██████████████████████▎ │
|
||||||
|
20. │ 0 │ 19 │ 9.086 │ ██████████████████████▋ │
|
||||||
|
21. │ 1 │ 20 │ 9.222 │ ███████████████████████ │
|
||||||
|
22. │ 0 │ 21 │ 9.344 │ ███████████████████████▎ │
|
||||||
|
23. │ 0 │ 22 │ 9.455 │ ███████████████████████▋ │
|
||||||
|
24. │ 0 │ 23 │ 9.555 │ ███████████████████████▉ │
|
||||||
|
25. │ 0 │ 24 │ 9.646 │ ████████████████████████ │
|
||||||
|
26. │ 1 │ 25 │ 9.728 │ ████████████████████████▎ │
|
||||||
|
27. │ 0 │ 26 │ 9.802 │ ████████████████████████▌ │
|
||||||
|
28. │ 0 │ 27 │ 9.869 │ ████████████████████████▋ │
|
||||||
|
29. │ 0 │ 28 │ 9.93 │ ████████████████████████▊ │
|
||||||
|
30. │ 0 │ 29 │ 9.985 │ ████████████████████████▉ │
|
||||||
|
31. │ 1 │ 30 │ 10.035 │ █████████████████████████ │
|
||||||
|
32. │ 0 │ 31 │ 10.08 │ █████████████████████████▏ │
|
||||||
|
33. │ 0 │ 32 │ 10.121 │ █████████████████████████▎ │
|
||||||
|
34. │ 0 │ 33 │ 10.158 │ █████████████████████████▍ │
|
||||||
|
35. │ 0 │ 34 │ 10.191 │ █████████████████████████▍ │
|
||||||
|
36. │ 1 │ 35 │ 10.221 │ █████████████████████████▌ │
|
||||||
|
37. │ 0 │ 36 │ 10.249 │ █████████████████████████▌ │
|
||||||
|
38. │ 0 │ 37 │ 10.273 │ █████████████████████████▋ │
|
||||||
|
39. │ 0 │ 38 │ 10.296 │ █████████████████████████▋ │
|
||||||
|
40. │ 0 │ 39 │ 10.316 │ █████████████████████████▊ │
|
||||||
|
41. │ 1 │ 40 │ 10.334 │ █████████████████████████▊ │
|
||||||
|
42. │ 0 │ 41 │ 10.351 │ █████████████████████████▉ │
|
||||||
|
43. │ 0 │ 42 │ 10.366 │ █████████████████████████▉ │
|
||||||
|
44. │ 0 │ 43 │ 10.379 │ █████████████████████████▉ │
|
||||||
|
45. │ 0 │ 44 │ 10.392 │ █████████████████████████▉ │
|
||||||
|
46. │ 1 │ 45 │ 10.403 │ ██████████████████████████ │
|
||||||
|
47. │ 0 │ 46 │ 10.413 │ ██████████████████████████ │
|
||||||
|
48. │ 0 │ 47 │ 10.422 │ ██████████████████████████ │
|
||||||
|
49. │ 0 │ 48 │ 10.43 │ ██████████████████████████ │
|
||||||
|
50. │ 0 │ 49 │ 10.438 │ ██████████████████████████ │
|
||||||
|
└───────┴──────┴──────────────────────┴────────────────────────────┘
|
||||||
|
```
|
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
slug: /en/sql-reference/aggregate-functions/reference/exponentialTimeDecayedMax
|
||||||
|
sidebar_position: 135
|
||||||
|
title: exponentialTimeDecayedMax
|
||||||
|
---
|
||||||
|
|
||||||
|
## exponentialTimeDecayedMax
|
||||||
|
|
||||||
|
Returns the maximum of the computed exponentially smoothed moving average at index `t` in time with that at `t-1`.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
exponentialTimeDecayedMax(x)(value, timeunit)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `value` — Value. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
- `timeunit` — Timeunit. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md), [DateTime](../../data-types/datetime.md), [DateTime64](../../data-types/datetime64.md).
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
|
||||||
|
- `x` — Half-life period. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
|
||||||
|
**Returned values**
|
||||||
|
|
||||||
|
- Returns the maximum of the exponentially smoothed weighted moving average at `t` and `t-1`. [Float64](../../data-types/float.md).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT
|
||||||
|
value,
|
||||||
|
time,
|
||||||
|
round(exp_smooth, 3),
|
||||||
|
bar(exp_smooth, 0, 5, 50) AS bar
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
(number = 0) OR (number >= 25) AS value,
|
||||||
|
number AS time,
|
||||||
|
exponentialTimeDecayedMax(10)(value, time) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS exp_smooth
|
||||||
|
FROM numbers(50)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
```response
|
||||||
|
┌─value─┬─time─┬─round(exp_smooth, 3)─┬─bar────────┐
|
||||||
|
1. │ 1 │ 0 │ 1 │ ██████████ │
|
||||||
|
2. │ 0 │ 1 │ 0.905 │ █████████ │
|
||||||
|
3. │ 0 │ 2 │ 0.819 │ ████████▏ │
|
||||||
|
4. │ 0 │ 3 │ 0.741 │ ███████▍ │
|
||||||
|
5. │ 0 │ 4 │ 0.67 │ ██████▋ │
|
||||||
|
6. │ 0 │ 5 │ 0.607 │ ██████ │
|
||||||
|
7. │ 0 │ 6 │ 0.549 │ █████▍ │
|
||||||
|
8. │ 0 │ 7 │ 0.497 │ ████▉ │
|
||||||
|
9. │ 0 │ 8 │ 0.449 │ ████▍ │
|
||||||
|
10. │ 0 │ 9 │ 0.407 │ ████ │
|
||||||
|
11. │ 0 │ 10 │ 0.368 │ ███▋ │
|
||||||
|
12. │ 0 │ 11 │ 0.333 │ ███▎ │
|
||||||
|
13. │ 0 │ 12 │ 0.301 │ ███ │
|
||||||
|
14. │ 0 │ 13 │ 0.273 │ ██▋ │
|
||||||
|
15. │ 0 │ 14 │ 0.247 │ ██▍ │
|
||||||
|
16. │ 0 │ 15 │ 0.223 │ ██▏ │
|
||||||
|
17. │ 0 │ 16 │ 0.202 │ ██ │
|
||||||
|
18. │ 0 │ 17 │ 0.183 │ █▊ │
|
||||||
|
19. │ 0 │ 18 │ 0.165 │ █▋ │
|
||||||
|
20. │ 0 │ 19 │ 0.15 │ █▍ │
|
||||||
|
21. │ 0 │ 20 │ 0.135 │ █▎ │
|
||||||
|
22. │ 0 │ 21 │ 0.122 │ █▏ │
|
||||||
|
23. │ 0 │ 22 │ 0.111 │ █ │
|
||||||
|
24. │ 0 │ 23 │ 0.1 │ █ │
|
||||||
|
25. │ 0 │ 24 │ 0.091 │ ▉ │
|
||||||
|
26. │ 1 │ 25 │ 1 │ ██████████ │
|
||||||
|
27. │ 1 │ 26 │ 1 │ ██████████ │
|
||||||
|
28. │ 1 │ 27 │ 1 │ ██████████ │
|
||||||
|
29. │ 1 │ 28 │ 1 │ ██████████ │
|
||||||
|
30. │ 1 │ 29 │ 1 │ ██████████ │
|
||||||
|
31. │ 1 │ 30 │ 1 │ ██████████ │
|
||||||
|
32. │ 1 │ 31 │ 1 │ ██████████ │
|
||||||
|
33. │ 1 │ 32 │ 1 │ ██████████ │
|
||||||
|
34. │ 1 │ 33 │ 1 │ ██████████ │
|
||||||
|
35. │ 1 │ 34 │ 1 │ ██████████ │
|
||||||
|
36. │ 1 │ 35 │ 1 │ ██████████ │
|
||||||
|
37. │ 1 │ 36 │ 1 │ ██████████ │
|
||||||
|
38. │ 1 │ 37 │ 1 │ ██████████ │
|
||||||
|
39. │ 1 │ 38 │ 1 │ ██████████ │
|
||||||
|
40. │ 1 │ 39 │ 1 │ ██████████ │
|
||||||
|
41. │ 1 │ 40 │ 1 │ ██████████ │
|
||||||
|
42. │ 1 │ 41 │ 1 │ ██████████ │
|
||||||
|
43. │ 1 │ 42 │ 1 │ ██████████ │
|
||||||
|
44. │ 1 │ 43 │ 1 │ ██████████ │
|
||||||
|
45. │ 1 │ 44 │ 1 │ ██████████ │
|
||||||
|
46. │ 1 │ 45 │ 1 │ ██████████ │
|
||||||
|
47. │ 1 │ 46 │ 1 │ ██████████ │
|
||||||
|
48. │ 1 │ 47 │ 1 │ ██████████ │
|
||||||
|
49. │ 1 │ 48 │ 1 │ ██████████ │
|
||||||
|
50. │ 1 │ 49 │ 1 │ ██████████ │
|
||||||
|
└───────┴──────┴──────────────────────┴────────────┘
|
||||||
|
```
|
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
slug: /en/sql-reference/aggregate-functions/reference/exponentialTimeDecayedSum
|
||||||
|
sidebar_position: 136
|
||||||
|
title: exponentialTimeDecayedSum
|
||||||
|
---
|
||||||
|
|
||||||
|
## exponentialTimeDecayedSum
|
||||||
|
|
||||||
|
Returns the sum of exponentially smoothed moving average values of a time series at the index `t` in time.
|
||||||
|
|
||||||
|
**Syntax**
|
||||||
|
|
||||||
|
```sql
|
||||||
|
exponentialTimeDecayedSum(x)(v, t)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Arguments**
|
||||||
|
|
||||||
|
- `v` — Value. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
- `t` — Time. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md), [DateTime](../../data-types/datetime.md), [DateTime64](../../data-types/datetime64.md).
|
||||||
|
|
||||||
|
**Parameters**
|
||||||
|
|
||||||
|
- `x` — Half-life period. [Integer](../../../sql-reference/data-types/int-uint.md), [Float](../../../sql-reference/data-types/float.md) or [Decimal](../../../sql-reference/data-types/decimal.md).
|
||||||
|
|
||||||
|
**Returned values**
|
||||||
|
|
||||||
|
- Returns the sum of exponentially smoothed moving average values at the given point in time. [Float64](../../data-types/float.md).
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
Query:
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT
|
||||||
|
value,
|
||||||
|
time,
|
||||||
|
round(exp_smooth, 3),
|
||||||
|
bar(exp_smooth, 0, 10, 50) AS bar
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
(number = 0) OR (number >= 25) AS value,
|
||||||
|
number AS time,
|
||||||
|
exponentialTimeDecayedSum(10)(value, time) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS exp_smooth
|
||||||
|
FROM numbers(50)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
```response
|
||||||
|
┌─value─┬─time─┬─round(exp_smooth, 3)─┬─bar───────────────────────────────────────────────┐
|
||||||
|
1. │ 1 │ 0 │ 1 │ █████ │
|
||||||
|
2. │ 0 │ 1 │ 0.905 │ ████▌ │
|
||||||
|
3. │ 0 │ 2 │ 0.819 │ ████ │
|
||||||
|
4. │ 0 │ 3 │ 0.741 │ ███▋ │
|
||||||
|
5. │ 0 │ 4 │ 0.67 │ ███▎ │
|
||||||
|
6. │ 0 │ 5 │ 0.607 │ ███ │
|
||||||
|
7. │ 0 │ 6 │ 0.549 │ ██▋ │
|
||||||
|
8. │ 0 │ 7 │ 0.497 │ ██▍ │
|
||||||
|
9. │ 0 │ 8 │ 0.449 │ ██▏ │
|
||||||
|
10. │ 0 │ 9 │ 0.407 │ ██ │
|
||||||
|
11. │ 0 │ 10 │ 0.368 │ █▊ │
|
||||||
|
12. │ 0 │ 11 │ 0.333 │ █▋ │
|
||||||
|
13. │ 0 │ 12 │ 0.301 │ █▌ │
|
||||||
|
14. │ 0 │ 13 │ 0.273 │ █▎ │
|
||||||
|
15. │ 0 │ 14 │ 0.247 │ █▏ │
|
||||||
|
16. │ 0 │ 15 │ 0.223 │ █ │
|
||||||
|
17. │ 0 │ 16 │ 0.202 │ █ │
|
||||||
|
18. │ 0 │ 17 │ 0.183 │ ▉ │
|
||||||
|
19. │ 0 │ 18 │ 0.165 │ ▊ │
|
||||||
|
20. │ 0 │ 19 │ 0.15 │ ▋ │
|
||||||
|
21. │ 0 │ 20 │ 0.135 │ ▋ │
|
||||||
|
22. │ 0 │ 21 │ 0.122 │ ▌ │
|
||||||
|
23. │ 0 │ 22 │ 0.111 │ ▌ │
|
||||||
|
24. │ 0 │ 23 │ 0.1 │ ▌ │
|
||||||
|
25. │ 0 │ 24 │ 0.091 │ ▍ │
|
||||||
|
26. │ 1 │ 25 │ 1.082 │ █████▍ │
|
||||||
|
27. │ 1 │ 26 │ 1.979 │ █████████▉ │
|
||||||
|
28. │ 1 │ 27 │ 2.791 │ █████████████▉ │
|
||||||
|
29. │ 1 │ 28 │ 3.525 │ █████████████████▋ │
|
||||||
|
30. │ 1 │ 29 │ 4.19 │ ████████████████████▉ │
|
||||||
|
31. │ 1 │ 30 │ 4.791 │ ███████████████████████▉ │
|
||||||
|
32. │ 1 │ 31 │ 5.335 │ ██████████████████████████▋ │
|
||||||
|
33. │ 1 │ 32 │ 5.827 │ █████████████████████████████▏ │
|
||||||
|
34. │ 1 │ 33 │ 6.273 │ ███████████████████████████████▎ │
|
||||||
|
35. │ 1 │ 34 │ 6.676 │ █████████████████████████████████▍ │
|
||||||
|
36. │ 1 │ 35 │ 7.041 │ ███████████████████████████████████▏ │
|
||||||
|
37. │ 1 │ 36 │ 7.371 │ ████████████████████████████████████▊ │
|
||||||
|
38. │ 1 │ 37 │ 7.669 │ ██████████████████████████████████████▎ │
|
||||||
|
39. │ 1 │ 38 │ 7.939 │ ███████████████████████████████████████▋ │
|
||||||
|
40. │ 1 │ 39 │ 8.184 │ ████████████████████████████████████████▉ │
|
||||||
|
41. │ 1 │ 40 │ 8.405 │ ██████████████████████████████████████████ │
|
||||||
|
42. │ 1 │ 41 │ 8.605 │ ███████████████████████████████████████████ │
|
||||||
|
43. │ 1 │ 42 │ 8.786 │ ███████████████████████████████████████████▉ │
|
||||||
|
44. │ 1 │ 43 │ 8.95 │ ████████████████████████████████████████████▊ │
|
||||||
|
45. │ 1 │ 44 │ 9.098 │ █████████████████████████████████████████████▍ │
|
||||||
|
46. │ 1 │ 45 │ 9.233 │ ██████████████████████████████████████████████▏ │
|
||||||
|
47. │ 1 │ 46 │ 9.354 │ ██████████████████████████████████████████████▊ │
|
||||||
|
48. │ 1 │ 47 │ 9.464 │ ███████████████████████████████████████████████▎ │
|
||||||
|
49. │ 1 │ 48 │ 9.563 │ ███████████████████████████████████████████████▊ │
|
||||||
|
50. │ 1 │ 49 │ 9.653 │ ████████████████████████████████████████████████▎ │
|
||||||
|
└───────┴──────┴──────────────────────┴───────────────────────────────────────────────────┘
|
||||||
|
```
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/first_value
|
slug: /en/sql-reference/aggregate-functions/reference/first_value
|
||||||
sidebar_position: 7
|
sidebar_position: 137
|
||||||
---
|
---
|
||||||
|
|
||||||
# first_value
|
# first_value
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/flamegraph
|
slug: /en/sql-reference/aggregate-functions/reference/flame_graph
|
||||||
sidebar_position: 110
|
sidebar_position: 138
|
||||||
---
|
---
|
||||||
|
|
||||||
# flameGraph
|
# flameGraph
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
slug: /en/sql-reference/aggregate-functions/reference/grouparray
|
slug: /en/sql-reference/aggregate-functions/reference/grouparray
|
||||||
sidebar_position: 110
|
sidebar_position: 139
|
||||||
---
|
---
|
||||||
|
|
||||||
# groupArray
|
# groupArray
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user