> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 2021 변경 내역

> 2021년 변경 내역

<div id="clickhouse-release-v2112-2021-12-15">
  ### ClickHouse 릴리스 v21.12, 2021-12-15. [발표 자료](https://presentations.clickhouse.com/2021-release-21.12/), [동영상](https://www.youtube.com/watch?v=6qi_S9CEqa4)
</div>

<Frame>
  <iframe src="https://www.youtube.com/embed/6qi_S9CEqa4" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />
</Frame>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* *기존에 원치 않는 동작이 있던 기능에 대한 수정입니다.* Kafka/RabbitMQ/FileLog에 대한 direct select는 기본적으로 허용되지 않습니다. `stream_like_engine_allow_direct_select`를 설정하면 활성화할 수 있습니다. attached 상태인 materialized view가 있는 경우에는 이 설정을 활성화해도 direct select가 허용되지 않습니다. Kafka와 RabbitMQ에서는 direct select가 허용되더라도 기본적으로 메시지를 커밋하지 않습니다. direct select에서 커밋을 활성화하려면 스토리지 수준 설정 `kafka{rabbitmq}_commit_on_select=1`(기본값 `0`)을 사용해야 합니다. [#31053](https://github.com/ClickHouse/ClickHouse/pull/31053) ([Kseniia Sumarokova](https://github.com/kssenii)).
* *새 함수의 동작이 약간 변경되었습니다.* JSON\_VALUE가 따옴표 없는 문자열을 반환하도록 변경되었습니다. [#27965](https://github.com/ClickHouse/ClickHouse/issues/27965)를 해결합니다. [#31008](https://github.com/ClickHouse/ClickHouse/pull/31008) ([Kseniia Sumarokova](https://github.com/kssenii)).
* *설정 이름 변경입니다.* TSV/CSV 입력 형식에 사용자 지정 NULL 표현 지원을 추가했습니다. TSV/CSV/JSONCompactStringsEachRow/JSONStringsEachRow 입력 형식에서 Nullable(String) 역직렬화 문제를 수정했습니다. 이에 따라 `output_format_csv_null_representation` 및 `output_format_tsv_null_representation`의 이름을 `format_csv_null_representation` 및 `format_tsv_null_representation`으로 변경했습니다. [#30497](https://github.com/ClickHouse/ClickHouse/pull/30497) ([Kruglov Pavel](https://github.com/Avogar)).
* *이미 사용되지 않는 코드의 추가 지원 중단입니다.* 이는 20.6보다 오래된 ClickHouse 버전을 사용 중인 경우에만 해당합니다. 20.6부터 여러 리더를 지원하므로 `ReplicatedMergeTree`에서 "리더 선출" 메커니즘이 제거되었습니다. 이전 버전에서 업그레이드하는 중이며 구버전 레플리카 중 하나가 리더인 경우, 업그레이드 후 서버가 시작되지 않습니다. 새 버전이 시작될 수 있도록 구버전 레플리카를 중지하십시오. 이후에는 20.6보다 오래된 버전으로 다운그레이드할 수 없습니다. [#32140](https://github.com/ClickHouse/ClickHouse/pull/32140) ([tavplubix](https://github.com/tavplubix)).

<div id="new-feature">
  #### 새로운 기능
</div>

* clickhouse-keeper에 ZooKeeper Four Letter Words 명령을 추가로 구현했습니다: [https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc\&#95;zkCommands](https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc\&#95;zkCommands). [#28981](https://github.com/ClickHouse/ClickHouse/pull/28981) ([JackyWoo](https://github.com/JackyWoo)). 이제 `clickhouse-keeper`는 필요한 기능이 모두 갖춰졌습니다.
* `Bool` 데이터 타입을 지원합니다. [#31072](https://github.com/ClickHouse/ClickHouse/pull/31072) ([kevin wan](https://github.com/MaxWk)).
* File, URL, HDFS 스토리지 및 `INSERT INTO` 테이블 함수에서 `PARTITION BY`를 지원합니다. [#30273](https://github.com/ClickHouse/ClickHouse/issues/30273)를 해결했습니다. [#30690](https://github.com/ClickHouse/ClickHouse/pull/30690) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `CONSTRAINT ... ASSUME ...`가 추가되었습니다(`INSERT` 중에는 검사를 수행하지 않음). 최적화를 더 쉽게 할 수 있도록 쿼리를 CNF로 변환하는 기능이 추가되었습니다([https://github.com/ClickHouse/ClickHouse/issues/11749](https://github.com/ClickHouse/ClickHouse/issues/11749)). 제약 조건을 활용한 간단한 쿼리 재작성 기능이 추가되었습니다(현재는 단순 매칭만 지원하며, 추후 \<,=,>... 도 지원하도록 개선될 예정입니다). 가능한 경우 무거운 컬럼을 가벼운 컬럼으로 대체하는 기능이 추가되었습니다. [#18787](https://github.com/ClickHouse/ClickHouse/pull/18787) ([Nikita Vasilev](https://github.com/nikvas0)).
* http/url 함수에 대한 Basic 인증. [#31648](https://github.com/ClickHouse/ClickHouse/pull/31648) ([michael1589](https://github.com/michael1589)).
* `WITH FILL` 수정자의 `STEP` 절에서 `INTERVAL` 타입을 지원합니다. [#30927](https://github.com/ClickHouse/ClickHouse/pull/30927) ([Anton Popov](https://github.com/CurtizJ)).
* 여러 파일에서의 병렬 읽기와 `FROM INFILE` 절의 글롭 패턴을 지원합니다. [#30135](https://github.com/ClickHouse/ClickHouse/pull/30135) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* `Identifier` 테이블(table) 및 데이터베이스(database) 쿼리 매개변수 지원이 추가되었습니다. [#27226](https://github.com/ClickHouse/ClickHouse/issues/27226)을 해결했습니다. [#28668](https://github.com/ClickHouse/ClickHouse/pull/28668) ([Nikolay Degterinsky](https://github.com/evillique)).
* *TLDR: 텍스트 형식의 완전성과 일관성이 크게 개선되었습니다.* `TSV`, `TSVRaw`, `CSV`, `JSONCompactEachRow`, `JSONCompactStringsEachRow` 포맷을 리팩터링하고 코드 중복을 제거했으며, `-WithNames` 및 `-WithNamesAndTypes` 접미사가 붙은 포맷을 위한 기본 인터페이스를 추가했습니다. `CSVWithNamesAndTypes`, `TSVRawWithNames`, `TSVRawWithNamesAndTypes`, `JSONCompactEachRowWIthNames`, `JSONCompactStringsEachRowWIthNames`, `RowBinaryWithNames` 포맷을 추가했습니다. `TSVWithNamesAndTypes`, `TSVRaw(WithNames/WIthNamesAndTypes)`, `CSVWithNamesAndTypes`, `JSONCompactEachRow(WithNames/WIthNamesAndTypes)`, `JSONCompactStringsEachRow(WithNames/WIthNamesAndTypes)` 포맷에서 병렬 파싱을 지원합니다. `RowBinaryWithNamesAndTypes` 포맷에 대해 컬럼 매핑과 타입 검사를 지원합니다. `<format_name>WIthNamesAndTypes` 포맷에 기록된 타입이 테이블 구조와 일치하는지 검사할지 지정하는 `input_format_with_types_use_header` 설정을 추가했습니다. `input_format_csv_empty_as_default` 설정을 추가하고, CSV 형식에서는 `input_format_defaults_for_omitted_fields` 대신 이 설정을 사용하도록 했습니다(`csv_empty_as_default`는 이 설정으로 제어하면 안 되기 때문입니다). `input_format_defaults_for_omitted_fields` 설정의 사용 방식도 수정했습니다(이전에는 `csv_empty_as_default`로만 사용되었지만, 생략된 필드의 기본 표현식 계산을 제어해야 합니다). `TSVRaw` 포맷의 널 허용(Nullable) 입력/출력을 수정하여, 이 포맷이 TSV 삽입과 완전히 호환되도록 했습니다. `input_format_null_as_default`가 활성화된 경우 `LowCardinality(Nullable)`에 NULL을 삽입할 때 발생하던 문제를 수정했습니다(이전에는 실제 NULL 대신 기본값이 삽입되었습니다). `JSONStringsEachRow`/`JSONCompactStringsEachRow` 포맷의 문자열 역직렬화를 수정했습니다(문자열이 첫 번째 '\n' 또는 '\t'까지만 파싱되었습니다). Template 입력 형식에서 `Raw` 이스케이프 규칙을 사용할 수 있도록 했습니다. JSONCompactEachRow(WithNames/WIthNamesAndTypes) 입력 형식에 진단 정보를 추가했습니다. `min_chunk_bytes_for_parallel_parsing` 설정이 단일 행의 바이트 수보다 작은 경우 `-WithNames` 포맷의 병렬 파싱에서 발생하던 버그를 수정했습니다. [#30178](https://github.com/ClickHouse/ClickHouse/pull/30178) ([Kruglov Pavel](https://github.com/Avogar)). `CustomSeparated` 입력/출력 형식에서 컬럼 이름과 타입을 출력하고 파싱할 수 있도록 했습니다. `TSVWithNames/WithNamesAndTypes`와 유사한 `CustomSeparatedWithNames/WithNamesAndTypes` 포맷을 추가했습니다. [#31434](https://github.com/ClickHouse/ClickHouse/pull/31434) ([Kruglov Pavel](https://github.com/Avogar)).
* Aliyun OSS Storage를 지원합니다. [#31286](https://github.com/ClickHouse/ClickHouse/pull/31286) ([cfcz48](https://github.com/cfcz48)).
* 설정 파일에서 Global Thread 풀의 모든 설정을 사용할 수 있도록 했습니다. [#31285](https://github.com/ClickHouse/ClickHouse/pull/31285) ([Tomáš Hromada](https://github.com/gyfis)).
* 더 큰 윈도우에서 `exponentialMovingAverage`보다 더 효과적인 윈도우 함수 `exponentialTimeDecayedSum`, `exponentialTimeDecayedMax`, `exponentialTimeDecayedCount`, `exponentialTimeDecayedAvg`가 도입되었습니다. 또한 더 다양한 사용 사례를 지원하게 되었습니다. [#29799](https://github.com/ClickHouse/ClickHouse/pull/29799) ([Vladimir Chebotarev](https://github.com/excitoon)).
* LZ4를 사용해 파일에 기록하기 전에 로그를 압축하는 옵션을 추가했습니다. [#23860](https://github.com/ClickHouse/ClickHouse/issues/23860)을 해결했습니다. [#29219](https://github.com/ClickHouse/ClickHouse/pull/29219) ([Nikolay Degterinsky](https://github.com/evillique)).
* CROSS JOIN 의미를 갖는 `JOIN ON 1 = 1`을 지원합니다. 이로써 [#25578](https://github.com/ClickHouse/ClickHouse/issues/25578)가 해결되었습니다. [#25894](https://github.com/ClickHouse/ClickHouse/pull/25894) ([Vladimir C](https://github.com/vdimir)).
* `Map` 타입에 Map combinator를 추가했습니다. - 매핑된 배열용 기존 `sum-, min-, max- Map`의 이름을 `sum-, min-, max- MappedArrays`로 변경했습니다. [#24539](https://github.com/ClickHouse/ClickHouse/pull/24539) ([Ildus Kurbangaliev](https://github.com/ildus)).
* HTTP에서 읽기를 재시도할 수 있게 합니다. [#29696](https://github.com/ClickHouse/ClickHouse/issues/29696)을 해결합니다. [#29894](https://github.com/ClickHouse/ClickHouse/pull/29894) ([Kseniia Sumarokova](https://github.com/kssenii)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* ClickHouse에서 스트림 처리를 지원하는 `WINDOW VIEW`. [#8331](https://github.com/ClickHouse/ClickHouse/pull/8331) ([vxider](https://github.com/Vxider)).
* `MaterializedMySQL`와 함께 Ordinary 데이터베이스를 사용하는 지원을 제거했습니다. [#31292](https://github.com/ClickHouse/ClickHouse/pull/31292) ([Stig Bakken](https://github.com/stigsb)).
* Log 계열에 BACKUP 및 RESTORE 명령을 구현했습니다. 이 기능은 개발 중입니다. [#30688](https://github.com/ClickHouse/ClickHouse/pull/30688) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* `s3` / `url` / `hdfs` 포맷 `Parquet`, `ORC`, `Arrow`를 읽을 때 메모리 사용량을 줄였습니다(설정 `input_format_allow_seeks`로 제어되며 기본적으로 활성화되어 있음). 또한 seek를 제어하는 설정 `remote_read_min_bytes_for_seek`를 추가했습니다. [#10461](https://github.com/ClickHouse/ClickHouse/issues/10461) 해결. [#16857](https://github.com/ClickHouse/ClickHouse/issues/16857) 해결. [#30936](https://github.com/ClickHouse/ClickHouse/pull/30936) ([Kseniia Sumarokova](https://github.com/kssenii)).
* JOIN ON의 상수 조건에 대한 최적화를 추가했습니다. 관련 이슈: [#26928](https://github.com/ClickHouse/ClickHouse/issues/26928). [#27021](https://github.com/ClickHouse/ClickHouse/pull/27021) ([Vladimir C](https://github.com/vdimir)).
* `JSONEachRowWithProgress` 및 `PrettyCompactMonoBlock`을 제외한 모든 텍스트 형식에 대해 병렬 formatting을 지원합니다. [#31489](https://github.com/ClickHouse/ClickHouse/pull/31489) ([Kruglov Pavel](https://github.com/Avogar)).
* 널 허용 컬럼에 대한 count 성능을 개선했습니다. [#31806](https://github.com/ClickHouse/ClickHouse/pull/31806) ([Raúl Marín](https://github.com/Algunenano)).
* `avg` 및 `sumCount` 집계 함수의 성능을 개선했습니다. [#31694](https://github.com/ClickHouse/ClickHouse/pull/31694) ([Raúl Marín](https://github.com/Algunenano)).
* JSON 및 XML 출력 형식의 성능을 개선했습니다. [#31673](https://github.com/ClickHouse/ClickHouse/pull/31673) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 데이터를 블록 디바이스에 동기화하는 성능을 개선했습니다. 이 변경으로 [#31181](https://github.com/ClickHouse/ClickHouse/issues/31181)가 해결되었습니다. [#31229](https://github.com/ClickHouse/ClickHouse/pull/31229) ([zhanglistar](https://github.com/zhanglistar)).
* `LiveView` 테이블의 쿼리 성능 문제를 수정했습니다. [#30831](https://github.com/ClickHouse/ClickHouse/issues/30831) 해결. [#31006](https://github.com/ClickHouse/ClickHouse/pull/31006) ([vzakaznikov](https://github.com/vzakaznikov)).
* 쿼리 parsing 성능을 개선했습니다. [#31949](https://github.com/ClickHouse/ClickHouse/pull/31949) ([Raúl Marín](https://github.com/Algunenano)).
* 일반 메트릭/태그된 메트릭에 대해 `GraphiteMergeTree` 롤업 규칙을 분리할 수 있도록 했습니다(선택적 `rule_type` 필드). [#25122](https://github.com/ClickHouse/ClickHouse/pull/25122) ([Michail Safronov](https://github.com/msaf1980)).
* `remote()`에서 과도한 `DESC TABLE` 요청을 제거했습니다(`remote('127.1', system.one)`의 경우, 즉 문자열 대신 db.table 식별자를 사용할 때 과도한 `DESC TABLE` 요청이 있었습니다). [#32019](https://github.com/ClickHouse/ClickHouse/pull/32019) ([Azat Khuzhin](https://github.com/azat)).
* 설정 `optimize_functions_to_subcolumns`가 활성화된 경우 함수 `tupleElement`가 서브컬럼을 읽도록 최적화했습니다. [#31261](https://github.com/ClickHouse/ClickHouse/pull/31261) ([Anton Popov](https://github.com/CurtizJ)).
* 설정 `optimize_functions_to_subcolumns`가 활성화된 경우 함수 `mapContains`가 서브컬럼 `key`를 읽도록 최적화했습니다. [#31218](https://github.com/ClickHouse/ClickHouse/pull/31218) ([Anton Popov](https://github.com/CurtizJ)).
* 설정 `merge_tree_min_rows_for_concurrent_read_for_remote_filesystem` 및 `merge_tree_min_bytes_for_concurrent_read_for_remote_filesystem`를 추가했습니다. [#30970](https://github.com/ClickHouse/ClickHouse/pull/30970) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `StorageMergeTree`에서 서로 다른 파티션의 뮤테이션을 스키핑합니다. [#21326](https://github.com/ClickHouse/ClickHouse/pull/21326) ([Vladimir Chebotarev](https://github.com/excitoon)).

<div id="improvement">
  #### 개선 사항
</div>

* 이를 참조하는 테이블 또는 딕셔너리가 있으면 해당 테이블 또는 딕셔너리를 삭제할 수 없도록 합니다. [#30977](https://github.com/ClickHouse/ClickHouse/pull/30977) ([tavplubix](https://github.com/tavplubix)).
* 집계 함수 상태의 버전 관리를 허용합니다. 이제 집계 함수 상태의 직렬화 포맷에 하위 호환되는 변경 사항을 도입할 수 있습니다. [#12552](https://github.com/ClickHouse/ClickHouse/issues/12552)를 해결했습니다. [#24820](https://github.com/ClickHouse/ClickHouse/pull/24820) ([Kseniia Sumarokova](https://github.com/kssenii)).
* PostgreSQL 스타일의 `ALTER MODIFY COLUMN` 구문을 지원합니다. [#32003](https://github.com/ClickHouse/ClickHouse/pull/32003) ([SuperDJY](https://github.com/cmsxbc)).
* `RangeHashedDictionary`, `ComplexKeyRangeHashedDictionary`에 `update_field` 지원이 추가되었습니다. [#32185](https://github.com/ClickHouse/ClickHouse/pull/32185) ([Maksim Kita](https://github.com/kitaisreal)).
* 이제 `murmurHash3_128` 및 `sipHash128` 함수는 인수를 임의 개수만큼 받을 수 있습니다. 이로써 [#28774](https://github.com/ClickHouse/ClickHouse/issues/28774)가 해결되었습니다. [#28965](https://github.com/ClickHouse/ClickHouse/pull/28965) ([小路](https://github.com/nicelulu)).
* `HDFS` 스토리지에 대한 기본 표현식 지원을 추가하고, 소스가 컬럼 지향형일 때 가져오기 작업을 최적화했습니다. [#32256](https://github.com/ClickHouse/ClickHouse/pull/32256) ([李扬](https://github.com/taiyang-li)).
* OpenTelemetry 스팬의 작업 이름을 개선했습니다. [#32234](https://github.com/ClickHouse/ClickHouse/pull/32234) ([Frank Chen](https://github.com/FrankChen021)).
* 출력 형식 `JSONEachRow`에는 `Content-Type: application/x-ndjson` ([http://ndjson.org/)을](http://ndjson.org/\)을) 사용하도록 했습니다. [#32223](https://github.com/ClickHouse/ClickHouse/pull/32223) ([Dmitriy Dorofeev](https://github.com/deem0n)).
* Template/CustomSeparated 포맷에서 따옴표 이스케이프 규칙이 적용된 알 수 없는 field의 스키핑이 개선되었습니다. 이전에는 따옴표로 묶인 문자열만 건너뛸 수 있었지만, 이제는 모든 유형의 값을 건너뛸 수 있습니다. [#32204](https://github.com/ClickHouse/ClickHouse/pull/32204) ([Kruglov Pavel](https://github.com/Avogar)).
* 이제 `clickhouse-keeper`에 중복된 ID 또는 엔드포인트가 포함되어 있으면 시작되지 않으며, 구성 변경도 적용되지 않습니다. [#31339](https://github.com/ClickHouse/ClickHouse/issues/31339)을 수정했습니다. [#32121](https://github.com/ClickHouse/ClickHouse/pull/32121) ([alesapin](https://github.com/alesapin)).
* URL 엔진에서 전송되는 HTTP 패킷의 Content-Type을 설정합니다. [#32113](https://github.com/ClickHouse/ClickHouse/pull/32113) ([Frank Chen](https://github.com/FrankChen021)).
* `output_format_json_array_of_rows`가 활성화되어 있으면 `JSONEachRow` 포맷의 Content-Type을 'application/json'으로 반환합니다. [#32112](https://github.com/ClickHouse/ClickHouse/pull/32112) ([Frank Chen](https://github.com/FrankChen021)).
* `Float32`/`Float64` 값 앞에 오는 `+`를 파싱할 수 있도록 했습니다. [#32079](https://github.com/ClickHouse/ClickHouse/pull/32079) ([Kruglov Pavel](https://github.com/Avogar)).
* `DiskHDFS` 및 `StorageHDFS`에서 사용자 지정 `hdfs_replication` 매개변수를 허용합니다. [#32039](https://github.com/ClickHouse/ClickHouse/issues/32039)를 해결합니다. [#32049](https://github.com/ClickHouse/ClickHouse/pull/32049) ([leosunli](https://github.com/leosunli)).
* OpenTelemetry 스팬 로그에 ClickHouse `exception` 및 `exception_code` 필드를 추가했습니다. [#32040](https://github.com/ClickHouse/ClickHouse/pull/32040) ([Frank Chen](https://github.com/FrankChen021)).
* OpenTelemetry 스팬 로그 지속 시간 개선 - 쿼리 예외가 발생할 경우 쿼리 수준에서 값이 0으로 기록되던 문제를 개선했습니다. [#32038](https://github.com/ClickHouse/ClickHouse/pull/32038) ([Frank Chen](https://github.com/FrankChen021)).
* `Int256`에 대해 `LowCardinality`를 생성할 수 없던 문제를 수정했습니다. [#31832](https://github.com/ClickHouse/ClickHouse/pull/31832) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 엔진/partition\_by가 다를 경우 `system.*_log` 테이블을 다시 생성합니다. [#31824](https://github.com/ClickHouse/ClickHouse/pull/31824) ([Azat Khuzhin](https://github.com/azat)).
* `MaterializedMySQL`: 이름이 'table'인 테이블에서 발생하던 문제를 수정했습니다. [#31781](https://github.com/ClickHouse/ClickHouse/pull/31781) ([Håvard Kvålen](https://github.com/havardk)).
* ClickHouse 딕셔너리 소스: 사전 정의된 연결을 지원합니다. [#31705](https://github.com/ClickHouse/ClickHouse/issues/31705)를 해결합니다. [#31749](https://github.com/ClickHouse/ClickHouse/pull/31749) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Kafka 및 RabbitMQ 엔진에서 미리 정의된 연결 구성을 사용할 수 있도록 했습니다(다른 통합 테이블 엔진과 동일한 방식). [#31691](https://github.com/ClickHouse/ClickHouse/pull/31691) ([Kseniia Sumarokova](https://github.com/kssenii)).
* clickhouse-client에서 이력을 탐색하는 동안 프롬프트를 항상 다시 표시합니다. 이렇게 하면 화면에 다 표시되지 않는 매우 긴 쿼리를 다룰 때의 사용성이 개선됩니다. [#31675](https://github.com/ClickHouse/ClickHouse/pull/31675) ([alexey-milovidov](https://github.com/alexey-milovidov)) (작성자: Amos Bird).
* 이력 탐색을 위한 키 바인딩을 추가했습니다(줄/이력 대신). [#31641](https://github.com/ClickHouse/ClickHouse/pull/31641) ([Azat Khuzhin](https://github.com/azat)).
* `max_execution_time` 검사를 개선했습니다. timeout 검사가 누락되어 쿼리가 지나치게 오래 실행될 수 있던 일부 경우를 수정했습니다. [#31636](https://github.com/ClickHouse/ClickHouse/pull/31636) ([Raúl Marín](https://github.com/Algunenano)).
* 잘못된 비밀번호 hash 때문에 `users.xml`을 로드할 수 없을 때 표시되는 예외 메시지가 개선되었습니다. 이 변경으로 [#24126](https://github.com/ClickHouse/ClickHouse/issues/24126)이 해결되었습니다. [#31557](https://github.com/ClickHouse/ClickHouse/pull/31557) ([Vitaly Baranov](https://github.com/vitlibar)).
* config에 이러한 매크로가 정의되어 있지 않으면, `ReplicatedMergeTree` 인수에서 매크로를 확장할 때 `Replicated` 데이터베이스 인수의 세그먼트 및 레플리카 이름을 사용합니다. [#31471](https://github.com/ClickHouse/ClickHouse/issues/31471)을 닫습니다. [#31488](https://github.com/ClickHouse/ClickHouse/pull/31488) ([tavplubix](https://github.com/tavplubix)).
* `min/max/count` 프로젝션 분석이 개선되었습니다. 이제 `allow_experimental_projection_optimization`이 활성화되면 가상 `min/max/count` 프로젝션을 파티션 키 컬럼과 함께 사용할 수 있습니다. [#31474](https://github.com/ClickHouse/ClickHouse/pull/31474) ([Amos Bird](https://github.com/amosbird)).
* `clickhouse-local`에서 `--pager`를 지원하도록 했습니다. [#31457](https://github.com/ClickHouse/ClickHouse/pull/31457) ([Azat Khuzhin](https://github.com/azat)).
* 대화형 쿼리 편집 중 에디터를 기다리는 동작을 수정했습니다(`waitpid()`는 `SIGWINCH`에서 -1을 반환하며, `EDITOR`와 `clickhouse-local`/`clickhouse-client`는 동시에 작동합니다). [#31456](https://github.com/ClickHouse/ClickHouse/pull/31456) ([Azat Khuzhin](https://github.com/azat)).
* `JSONCompactStrings(EachRow)` 포맷에서 필드 뒤에 불필요한 데이터가 있으면 예외를 발생시킵니다. [#31455](https://github.com/ClickHouse/ClickHouse/pull/31455) ([Kruglov Pavel](https://github.com/Avogar)).
* `http_send_timeout` 및 `http_receive_timeout` 설정의 기본값이 1800(30분)에서 180(3분)으로 변경되었습니다. [#31450](https://github.com/ClickHouse/ClickHouse/pull/31450) ([tavplubix](https://github.com/tavplubix)).
* `MaterializedMySQL`가 이제 `CREATE TABLE ... LIKE ...` DDL 쿼리도 처리할 수 있습니다. [#31410](https://github.com/ClickHouse/ClickHouse/pull/31410) ([Stig Bakken](https://github.com/stigsb)).
* `show create table`을 system 테이블에서 실행할 때 가상의 CREATE 쿼리를 반환합니다. [#31391](https://github.com/ClickHouse/ClickHouse/pull/31391) ([SuperDJY](https://github.com/cmsxbc)).
* 이전에는 `numbers` 테이블 함수에서만 진행률이 표시되었지만, 이제는 `numbers_mt`에서도 표시됩니다. [#31318](https://github.com/ClickHouse/ClickHouse/pull/31318) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 이제 초기 사용자의 역할을 기준으로 행 정책을 찾습니다. [#31080](https://github.com/ClickHouse/ClickHouse/issues/31080)을 참조하십시오. [#31262](https://github.com/ClickHouse/ClickHouse/pull/31262) ([Vitaly Baranov](https://github.com/vitlibar)).
* 더 이상 사용되지 않는 설정이 변경되면 `system.warnings`에 경고가 표시됩니다. [#31252](https://github.com/ClickHouse/ClickHouse/pull/31252) ([tavplubix](https://github.com/tavplubix)).
* `MergeTree`의 백그라운드 정리 작업에 대한 백오프가 개선되었습니다. `merge_tree_clear_old_temporary_directories_interval_seconds` 및 `merge_tree_clear_old_parts_interval_seconds` 설정이 사용자 설정에서 MergeTree 설정으로 옮겨졌습니다. [#31180](https://github.com/ClickHouse/ClickHouse/pull/31180) ([tavplubix](https://github.com/tavplubix)).
* 이제 모든 레플리카는 profile events 카운터에 대한 증분 정보만 클라이언트에 전송합니다. [#31155](https://github.com/ClickHouse/ClickHouse/pull/31155) ([Dmitry Novik](https://github.com/novikd)). 그 결과 `clickhouse-client`의 `--hardware_utilization` 옵션을 사용할 수 있게 되었습니다.
* 기본적으로 clickhouse-client에서 여러 줄 편집을 사용할 수 있도록 했습니다. 이는 [#31121](https://github.com/ClickHouse/ClickHouse/issues/31121)를 해결합니다. [#31123](https://github.com/ClickHouse/ClickHouse/pull/31123) ([Amos Bird](https://github.com/amosbird)).
* `ALTER` 쿼리의 함수 이름을 정규화했습니다. 이를 통해 인덱스/프로젝션이 있는 테이블을 생성할 때와 ALTER 명령으로 인덱스/프로젝션을 추가할 때 발생할 수 있는 메타데이터 불일치를 방지하는 데 도움이 됩니다. 이는 [https://github.com/ClickHouse/ClickHouse/pull/20174의](https://github.com/ClickHouse/ClickHouse/pull/20174의) 후속 PR입니다. 버그 보고가 없고 이런 시나리오는 비교적 드물기 때문에 개선 사항으로 분류했습니다. [#31095](https://github.com/ClickHouse/ClickHouse/pull/31095) ([Amos Bird](https://github.com/amosbird)).
* `RENAME DATABASE`/`TABLE`/`DICTIONARY` 쿼리에서 `IF EXISTS` 수정자를 지원합니다. 이 수정자를 사용하면 이름을 변경할 DATABASE/TABLE/DICTIONARY가 존재하지 않아도 오류가 발생하지 않습니다. [#31081](https://github.com/ClickHouse/ClickHouse/pull/31081) ([victorgao](https://github.com/kafka1991)).
* 파티션이 삭제되면 수직 병합을 취소합니다. 이는 [https://github.com/ClickHouse/ClickHouse/pull/25684](https://github.com/ClickHouse/ClickHouse/pull/25684) 및 [https://github.com/ClickHouse/ClickHouse/pull/30996의](https://github.com/ClickHouse/ClickHouse/pull/30996의) 후속 작업입니다. [#31057](https://github.com/ClickHouse/ClickHouse/pull/31057) ([Amos Bird](https://github.com/amosbird)).
* ClickHouse 딕셔너리 소스 내부의 로컬 세션은 더 이상 세션 로그로 이벤트를 전송하지 않습니다. 이로써 종료 시 발생할 수 있는 교착 상태(tsan 알림)를 해결했습니다. 또한 이 PR에서는 간헐적으로 실패하던 `test_dictionaries_dependency_xml/`도 수정했습니다. [#31013](https://github.com/ClickHouse/ClickHouse/pull/31013) ([Vitaly Baranov](https://github.com/vitlibar)).
* ALTER 명령에서 잠금이 줄었습니다. [#31010](https://github.com/ClickHouse/ClickHouse/pull/31010) ([Amos Bird](https://github.com/amosbird)).
* clickhouse-local 대화형 모드에서 `--verbose` 옵션을 수정하고 파일에 로깅할 수 있도록 했습니다. [#30881](https://github.com/ClickHouse/ClickHouse/pull/30881) ([Kseniia Sumarokova](https://github.com/kssenii)).
* MySQL 및 PostgreSQL처럼 `clickhouse-client`에 `\l`, `\d`, `\c` 명령을 추가했습니다. [#30876](https://github.com/ClickHouse/ClickHouse/pull/30876) ([Pavel Medvedev](https://github.com/pmed)).
* clickhouse-local 또는 clickhouse-client의 경우: `--query` 또는 `--queries-file`과 함께 `--interactive` 옵션이 지정되면, 먼저 비대화형 모드와 같이 이를 실행한 다음 대화형 모드를 시작합니다. [#30851](https://github.com/ClickHouse/ClickHouse/pull/30851) ([Kseniia Sumarokova](https://github.com/kssenii)).
* ZooKeeper에서 znode를 제거하는 중 DROP이 실패할 때 발생할 수 있는 "The local set of parts of X doesn't look like the set of parts in ZooKeeper" 오류를 수정했습니다. [#30826](https://github.com/ClickHouse/ClickHouse/pull/30826) ([Azat Khuzhin](https://github.com/azat)).
* Avro 포맷이 Kafka에서 작동합니다. `output_format_avro_rows_in_file` 설정이 추가되었습니다. [#30351](https://github.com/ClickHouse/ClickHouse/pull/30351) ([Ilya Golshtein](https://github.com/ilejn)).
* 하나의 `MaterializedPostgreSQL` 데이터베이스에 하나 이상의 PostgreSQL 스키마를 지정할 수 있도록 했습니다. [#28901](https://github.com/ClickHouse/ClickHouse/issues/28901)을 해결합니다. [#29324](https://github.com/ClickHouse/ClickHouse/issues/29324)을 해결합니다. [#28933](https://github.com/ClickHouse/ClickHouse/pull/28933) ([Kseniia Sumarokova](https://github.com/kssenii)).
* clickhouse-keeper 내부 통신의 기본 포트를 44444에서 9234로 변경했습니다. [#30879](https://github.com/ClickHouse/ClickHouse/issues/30879)를 해결했습니다. [#31799](https://github.com/ClickHouse/ClickHouse/pull/31799) ([alesapin](https://github.com/alesapin)).
* Decimal 인수를 지원하는 transform 함수를 구현했습니다. [#31839](https://github.com/ClickHouse/ClickHouse/pull/31839) ([李帅](https://github.com/loneylee)).
* hdfs url 구조를 추가로 검사하도록 하여, 잘못된 hdfs url로 인해 debug 서버에서 발생하는 abort와 release 서버에서 발생하는 `DB::Exception: std::out_of_range: basic_string` 오류를 수정했습니다. [#31042](https://github.com/ClickHouse/ClickHouse/pull/31042) ([Kruglov Pavel](https://github.com/Avogar)).
* `hdfs` 테이블 함수/엔진에서 발생할 수 있는 assert 문제를 수정하고 테스트를 추가했습니다. [#31036](https://github.com/ClickHouse/ClickHouse/pull/31036) ([Kruglov Pavel](https://github.com/Avogar)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 위치 인수가 활성화된 상태에서 GROUP BY / ORDER BY / LIMIT BY 별칭 관련 문제를 수정했습니다. [#31173](https://github.com/ClickHouse/ClickHouse/issues/31173)을 해결했습니다. [#31741](https://github.com/ClickHouse/ClickHouse/pull/31741) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `Map` 유형에서 `Buffer` 테이블 엔진 사용 문제를 수정했습니다. [#30546](https://github.com/ClickHouse/ClickHouse/issues/30546)을 해결했습니다. [#31742](https://github.com/ClickHouse/ClickHouse/pull/31742) ([Anton Popov](https://github.com/CurtizJ)).
* `use_uncompressed_cache`가 활성화된 `MergeTree` 테이블에서 읽는 문제를 수정했습니다. [#31826](https://github.com/ClickHouse/ClickHouse/pull/31826) ([Anton Popov](https://github.com/CurtizJ)).
* 아무 작업도 할 것이 없는 뮤테이션이 멈추는 경우의 동작을 수정했습니다(`empty_result_for_aggregation_by_empty_set` 설정이 활성화된 경우). [#32358](https://github.com/ClickHouse/ClickHouse/pull/32358) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* protobuf 작성 시 스키핑 컬럼 처리 문제를 수정했습니다. 이 PR에서는 [#31160](https://github.com/ClickHouse/ClickHouse/issues/31160)을 수정했으며, [#31160](https://github.com/ClickHouse/ClickHouse/issues/31160)#issuecomment-980595318의 댓글을 참조하십시오. [#31988](https://github.com/ClickHouse/ClickHouse/pull/31988) ([Vitaly Baranov](https://github.com/vitlibar)).
* 서브쿼리에서 불필요한 컬럼을 제거할 때 발생하던 버그를 수정했습니다. GROUP BY가 없는 쿼리에 집계 함수가 있는 경우, 해당 함수가 불필요하더라도 제거하지 않도록 했습니다. [#32289](https://github.com/ClickHouse/ClickHouse/pull/32289) ([dongyifeng](https://github.com/dyf6372)).
* Quota 한도에 도달하지 않았지만, 한도를 초과한 것으로 처리되었습니다. 이 PR은 [#31174](https://github.com/ClickHouse/ClickHouse/issues/31174)를 수정합니다. [#31337](https://github.com/ClickHouse/ClickHouse/pull/31337) ([sunny](https://github.com/sunny19930321)).
* 부분 REVOKE 사용 시 SHOW GRANTS가 올바르게 동작하도록 수정했습니다. 이 PR은 [#31138](https://github.com/ClickHouse/ClickHouse/issues/31138)을 수정합니다. [#31249](https://github.com/ClickHouse/ClickHouse/pull/31249) ([Vitaly Baranov](https://github.com/vitlibar)).
* ClickHouse가 cgroup 제한이 있는 컨테이너에서 실행될 때 메모리 사용량이 잘못 추정되던 문제가 있었습니다. [#31157](https://github.com/ClickHouse/ClickHouse/pull/31157) ([Pavel Medvedev](https://github.com/pmed)).
* default 표현식의 데이터 타입이 컬럼의 데이터 타입과 일치하지 않을 때 `ALTER ... MATERIALIZE COLUMN ...` 쿼리를 수정했습니다. [#32348](https://github.com/ClickHouse/ClickHouse/pull/32348) ([Anton Popov](https://github.com/CurtizJ)).
* `Decimal` 인수가 있는 집계 함수 `avgWeighted`에서 발생하던 SIGFPE 충돌을 수정했습니다. [#32053](https://github.com/ClickHouse/ClickHouse/issues/32053)를 해결합니다. [#32303](https://github.com/ClickHouse/ClickHouse/pull/32303) ([tavplubix](https://github.com/tavplubix)).
* `Dictionary` 테이블이 같은 이름의 XML-dictionary를 참조하는 경우 `Cannot attach 1 tables due to cyclic dependencies` 오류로 서버가 시작되지 않을 수 있던 문제가 수정되었습니다. [#31315](https://github.com/ClickHouse/ClickHouse/issues/31315)를 수정했습니다. [#32288](https://github.com/ClickHouse/ClickHouse/pull/32288) ([tavplubix](https://github.com/tavplubix)).
* `Quoted` 이스케이프 규칙에서 `Nullable(Float)`의 NaN을 역직렬화할 때 발생하던 파싱 오류를 수정했습니다. [#32190](https://github.com/ClickHouse/ClickHouse/pull/32190) ([Kruglov Pavel](https://github.com/Avogar)).
* XML 딕셔너리: 테이블 CREATE 쿼리에서 사용되는 식별자는 새 버전으로 업그레이드하는 과정에서 `default_database`로 수식될 수 있습니다. [#31963](https://github.com/ClickHouse/ClickHouse/issues/31963)을 해결했습니다. [#32187](https://github.com/ClickHouse/ClickHouse/pull/32187) ([Maksim Kita](https://github.com/kitaisreal)).
* 일부 레플리카에서 설정 `replicated_can_become_leader`가 비활성화된 경우, 쿼럼(quorum)과 함께 삽입할 때 활성 레플리카 수가 잘못 계산될 수 있었습니다. 이 문제가 수정되었습니다. [#32157](https://github.com/ClickHouse/ClickHouse/pull/32157) ([tavplubix](https://github.com/tavplubix)).
* Dictionaries: 사용자 지정 데이터베이스 쿼리에서 `{condition}`이 작동하지 않던 문제를 수정했습니다. [#32117](https://github.com/ClickHouse/ClickHouse/pull/32117) ([Maksim Kita](https://github.com/kitaisreal)).
* `cast_keep_nullable`를 사용해 `Nullable`에서의 `CAST`를 수정했습니다 (`toUInt32OrDefault(toNullable(toUInt32(1)))`와 같은 경우 이전에는 `PARAMETER_OUT_OF_BOUND` 오류가 발생했습니다). [#32080](https://github.com/ClickHouse/ClickHouse/pull/32080) ([Azat Khuzhin](https://github.com/azat)).
* 일부 드문 경우에 Join Storage의 CREATE TABLE 문제를 수정했습니다. [#31680](https://github.com/ClickHouse/ClickHouse/issues/31680)을 해결했습니다. [#32066](https://github.com/ClickHouse/ClickHouse/pull/32066) ([SuperDJY](https://github.com/cmsxbc)).
* part를 분리하는 과정에서 발생하던 `Directory ... already exists and is not empty` 오류를 수정했습니다. [#32063](https://github.com/ClickHouse/ClickHouse/pull/32063) ([tavplubix](https://github.com/tavplubix)).
* `MaterializedMySQL` (실험적 기능): MySQL의 `DECIMAL` 데이터가 잘못 해석되던 문제를 수정했습니다. [#31990](https://github.com/ClickHouse/ClickHouse/pull/31990) ([Håvard Kvålen](https://github.com/havardk)).
* `FileLog` (실험적 기능) 엔진에서 테이블 생성이 실패했을 때 메타데이터 디렉터리가 불필요하게 생성되던 문제가 수정되었습니다. 수정 [#31962](https://github.com/ClickHouse/ClickHouse/issues/31962). [#31967](https://github.com/ClickHouse/ClickHouse/pull/31967) ([flynn](https://github.com/ucasfl)).
* 일부 `GET_PART` 항목은 파트가 모든 레플리카에서 손실되고 같은 파티션에 다른 파트가 없는 경우 복제 큐에서 멈춰 있을 수 있습니다. 이 문제는 파티션 키가 정수 타입의 컬럼 또는 `Date[Time]`만 포함하는 경우 수정되었습니다. [#31485](https://github.com/ClickHouse/ClickHouse/issues/31485)를 수정했습니다. [#31887](https://github.com/ClickHouse/ClickHouse/pull/31887) ([tavplubix](https://github.com/tavplubix)).
* `UUID` 유형 인수를 받는 `empty` 및 `notEmpty` 함수의 문제를 수정했습니다. [#31819](https://github.com/ClickHouse/ClickHouse/issues/31819)을 수정했습니다. [#31883](https://github.com/ClickHouse/ClickHouse/pull/31883) ([Anton Popov](https://github.com/CurtizJ)).
* `KeeperTCPHandler`를 생성할 때 구성 경로를 `keeper_server.session_timeout_ms`에서 `keeper_server.coordination_settings.session_timeout_ms`로 변경했습니다. `operation_timeout`도 마찬가지입니다. [#31859](https://github.com/ClickHouse/ClickHouse/pull/31859) ([JackyWoo](https://github.com/JackyWoo)).
* 널 허용 기본 키(primary key)를 사용할 때 발생하는 널 허용 유형(Nullable type)의 잘못된 CAST 문제를 수정했습니다. (널 허용 기본 키는 권장되지 않는 기능이므로 사용하지 마십시오). 이 변경으로 [#31075](https://github.com/ClickHouse/ClickHouse/issues/31075)가 수정됩니다. [#31823](https://github.com/ClickHouse/ClickHouse/pull/31823) ([Amos Bird](https://github.com/amosbird)).
* SQL의 재귀 UDF에서 발생하던 충돌을 수정했습니다. [#30856](https://github.com/ClickHouse/ClickHouse/issues/30856)를 해결했습니다. [#31820](https://github.com/ClickHouse/ClickHouse/pull/31820) ([Maksim Kita](https://github.com/kitaisreal)).
* type이 `Nullable`인 경우, 타입이 지정된 `dictGet` 함수를 딕셔너리 속성에 사용할 때 발생하던 충돌을 수정했습니다. [#30980](https://github.com/ClickHouse/ClickHouse/issues/30980)을 수정합니다. [#31800](https://github.com/ClickHouse/ClickHouse/pull/31800) ([Maksim Kita](https://github.com/kitaisreal)).
* ODBC 쿼리 결과가 비어 있을 때(일부 ODBC 드라이버에서) 발생하는 충돌을 수정했습니다. [#31465](https://github.com/ClickHouse/ClickHouse/issues/31465)를 해결합니다. [#31766](https://github.com/ClickHouse/ClickHouse/pull/31766) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 쿼리 프로파일러 비활성화 문제 수정(`query_profiler_real_time_period_ns>0`/`query_profiler_cpu_time_period_ns>0`인 경우 쿼리 종료 후에도 쿼리 프로파일러가 계속 활성화된 상태로 남아 있을 수 있었습니다). [#31740](https://github.com/ClickHouse/ClickHouse/pull/31740) ([Azat Khuzhin](https://github.com/azat)).
* 동시에 실행된 `ATTACH PARTITION` 쿼리에서 드물게 발생하던 segfault를 수정했습니다. [#31738](https://github.com/ClickHouse/ClickHouse/pull/31738) ([tavplubix](https://github.com/tavplubix)).
* 출력에서 데이터와 진행 상황이 포함된 줄이 함께 섞일 때 발생하던 JSONEachRowWithProgress 출력 형식의 경쟁 상태(race condition)를 수정했습니다. [#31736](https://github.com/ClickHouse/ClickHouse/pull/31736) ([Kruglov Pavel](https://github.com/Avogar)).
* `ON CLUSTER` 쿼리 실행 시, 지정한 클러스터 이름이 `Replicated` 데이터베이스 이름과 같은 경우 발생하던 `there are no such cluster here` 오류를 수정했습니다. [#31723](https://github.com/ClickHouse/ClickHouse/pull/31723) ([tavplubix](https://github.com/tavplubix)).
* `decrypt` 함수를 널 허용 컬럼에 적용할 때 일부 경우에 발생하던 예외를 수정했습니다. 이로써 [#31662](https://github.com/ClickHouse/ClickHouse/issues/31662)가 해결되었습니다. 이로써 [#31426](https://github.com/ClickHouse/ClickHouse/issues/31426)가 해결되었습니다. [#31707](https://github.com/ClickHouse/ClickHouse/pull/31707) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 문자열에 UTF-8 문자가 포함된 경우 ngrams 함수가 올바르게 동작하지 않던 문제를 수정했습니다. [#31706](https://github.com/ClickHouse/ClickHouse/pull/31706) ([yandd](https://github.com/yandd)).
* 설정 `input_format_allow_errors_num` 및 `input_format_allow_errors_ratio`는 `IPv4`와 같은 도메인 타입을 파싱할 때 작동하지 않았으나, 수정되었습니다. [#31686](https://github.com/ClickHouse/ClickHouse/issues/31686)을 수정했습니다. [#31697](https://github.com/ClickHouse/ClickHouse/pull/31697) ([tavplubix](https://github.com/tavplubix)).
* `MATERIALIZE COLUMN`에서 발생하던 null 포인터 예외를 수정했습니다. [#31679](https://github.com/ClickHouse/ClickHouse/pull/31679) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `RENAME TABLE` 쿼리가 `Ordinary` 데이터베이스에서 DDL 딕셔너리의 이름을 변경하려고 할 때 잘못 동작하던 문제가 수정되었습니다. [#31638](https://github.com/ClickHouse/ClickHouse/pull/31638) ([tavplubix](https://github.com/tavplubix)).
* 의도한 방식대로 `sparkbar` 집계 함수를 구현했습니다. 참고: [#26175](https://github.com/ClickHouse/ClickHouse/issues/26175)#issuecomment-960353867, [comment](https://github.com/ClickHouse/ClickHouse/issues/26175#issuecomment-961155065). [#31624](https://github.com/ClickHouse/ClickHouse/pull/31624) ([小路](https://github.com/nicelulu)).
* 유효하지 않은 UTF-8 시퀀스가 컬럼 이름에만 포함된 경우 생성되는 잘못된 JSON을 수정했습니다. [#31534](https://github.com/ClickHouse/ClickHouse/pull/31534) ([Kevin Michel](https://github.com/kmichel-aiven)).
* 이 최적화의 버그가 수정되기 전까지 `partial_merge_join_left_table_buffer_bytes`를 비활성화합니다. [#31009](https://github.com/ClickHouse/ClickHouse/issues/31009))를 참조하십시오. 중복된 옵션 `partial_merge_join_optimizations`를 제거합니다. [#31528](https://github.com/ClickHouse/ClickHouse/pull/31528) ([Vladimir C](https://github.com/vdimir)).
* 짧은 `INSERT SELECT` 쿼리의 Progress를 수정했습니다. [#31510](https://github.com/ClickHouse/ClickHouse/pull/31510) ([Azat Khuzhin](https://github.com/azat)).
* GROUP BY 및 위치 인수 관련 잘못된 동작을 수정했습니다. [#31280](https://github.com/ClickHouse/ClickHouse/issues/31280)#issuecomment-968696186을 해결합니다. [#31420](https://github.com/ClickHouse/ClickHouse/pull/31420) ([Kseniia Sumarokova](https://github.com/kssenii)).
* S3용 STS 자격 증명 제공자의 `nullptr` 문제를 해결했습니다. [#31409](https://github.com/ClickHouse/ClickHouse/pull/31409) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 잘못된 내용이어서 인덱스 분석에서 `notLike` 함수를 제거했습니다. [#31169](https://github.com/ClickHouse/ClickHouse/pull/31169) ([sundyli](https://github.com/sundy-li)).
* 일부 coordination 로그가 손실되고 최신 로그보다 더 새로운 스냅샷이 있는 경우 시작하지 못할 수 있는 Keeper의 버그를 수정했습니다. [#31150](https://github.com/ClickHouse/ClickHouse/pull/31150) ([alesapin](https://github.com/alesapin)).
* 로컬 join에서 오른쪽의 분산 테이블을 재작성합니다. [#25809](https://github.com/ClickHouse/ClickHouse/issues/25809)를 해결합니다. [#31105](https://github.com/ClickHouse/ClickHouse/pull/31105) ([abel-cheng](https://github.com/abel-cheng)).
* aliases와 where를 사용하는 `Merge` 테이블을 수정했습니다(이전에는 전혀 작동하지 않았습니다). [#28802](https://github.com/ClickHouse/ClickHouse/issues/28802)를 해결합니다. [#31044](https://github.com/ClickHouse/ClickHouse/pull/31044) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 따옴표로 묶인 식별자를 사용할 때 JSON\_VALUE/JSON\_QUERY 관련 문제를 수정했습니다. 이제 JSON 경로에 공백을 포함할 수 있습니다. [#30971](https://github.com/ClickHouse/ClickHouse/issues/30971)을 해결했습니다. [#31003](https://github.com/ClickHouse/ClickHouse/pull/31003) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 행 지향이 아닌 포맷에서 `formatRow` 함수를 사용하면 segfault가 발생했습니다. 이러한 포맷에서는 이 함수를 사용할 수 없도록 했습니다(의미가 없기 때문입니다). [#31001](https://github.com/ClickHouse/ClickHouse/pull/31001) ([Kruglov Pavel](https://github.com/Avogar)).
* materialized view를 삭제한 후 실행되는 SELECT 쿼리가 정상 동작하지 않던 버그를 수정했습니다. [#30691](https://github.com/ClickHouse/ClickHouse/issues/30691)에서 발견되었습니다. [#30997](https://github.com/ClickHouse/ClickHouse/pull/30997) ([Kseniia Sumarokova](https://github.com/kssenii)).
* ATTACH PARTITION ... FROM 및 MOVE PARTITION ...에서는 `max_partition_size_to_drop` 검사를 건너뜁니다 [#30995](https://github.com/ClickHouse/ClickHouse/pull/30995) ([Amr Alaa](https://github.com/amralaa-MSFT)).
* `INTERSECT` 및 `EXCEPT` 연산자의 일부 특수한 경우를 수정했습니다. [#30803](https://github.com/ClickHouse/ClickHouse/issues/30803)을 해결했습니다. [#30965](https://github.com/ClickHouse/ClickHouse/pull/30965) ([Kseniia Sumarokova](https://github.com/kssenii)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* non-x86 빌드에서 잘못된 필터링 결과를 수정했습니다. [#31417](https://github.com/ClickHouse/ClickHouse/issues/31417)을 해결합니다. [#31524](https://github.com/ClickHouse/ClickHouse/issues/31524)를 해결합니다. [#31574](https://github.com/ClickHouse/ClickHouse/pull/31574) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* ClickHouse 빌드를 완전히 재현 가능하도록 만들었습니다(서로 다른 머신에서도 바이트 단위로 동일). [#22113](https://github.com/ClickHouse/ClickHouse/issues/22113)을 해결합니다. [#31899](https://github.com/ClickHouse/ClickHouse/pull/31899) ([alexey-milovidov](https://github.com/alexey-milovidov)). 재현 가능한 빌드를 위해 바이너리에서 빌드 디렉터리의 파일 시스템 경로를 제거했습니다. 이는 [#22113](https://github.com/ClickHouse/ClickHouse/issues/22113)에 필요했습니다. [#31838](https://github.com/ClickHouse/ClickHouse/pull/31838) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `zlib-ng`, `cassandra`, `mariadb-connector-c`, `xz`, `re2`, `sentry`, `gsasl`, `arrow`, `protobuf`에 자체 CMakeLists를 사용합니다. 이는 [#20151](https://github.com/ClickHouse/ClickHouse/issues/20151)에 필요합니다. [#9226](https://github.com/ClickHouse/ClickHouse/issues/9226)의 일부입니다. 빌드 시스템에서 성가신 군더더기를 제거하기 위한 작은 진전입니다. [#30599](https://github.com/ClickHouse/ClickHouse/pull/30599) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Hermetic builds: libc의 고정 버전을 사용하고, 빌드 중 호스트 OS의 소스 파일이나 binary 파일이 사용되지 않도록 했습니다. [#27133](https://github.com/ClickHouse/ClickHouse/issues/27133)을 해결합니다. [#21435](https://github.com/ClickHouse/ClickHouse/issues/21435)를 해결합니다. [#30462](https://github.com/ClickHouse/ClickHouse/issues/30462)를 해결합니다. [#30011](https://github.com/ClickHouse/ClickHouse/pull/30011) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 특정 함수를 쉽게 퍼징할 수 있도록 `getFuzzerData()` 함수를 추가했습니다. [#23227](https://github.com/ClickHouse/ClickHouse/issues/23227)을 해결합니다. [#27526](https://github.com/ClickHouse/ClickHouse/pull/27526) ([Alexey Boykov](https://github.com/mathalex)).
* Docker 내부에서 capability를 보다 올바르게 설정하도록 개선했습니다. [#31802](https://github.com/ClickHouse/ClickHouse/pull/31802) ([Constantine Peresypkin](https://github.com/pkit)).
* clang 컴파일 옵션 `-fstrict-vtable-pointers`, `-fwhole-program-vtables`를 활성화했습니다. [#20151](https://github.com/ClickHouse/ClickHouse/pull/20151) ([Maksim Kita](https://github.com/kitaisreal)).
* FreeBSD용 크로스 컴파일을 위해 toolchain tarball을 다운로드하지 않도록 했습니다. [#31672](https://github.com/ClickHouse/ClickHouse/pull/31672) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* risc-v에 대한 초기 지원을 추가했습니다. 확인된 주의사항과 테스트된 빌드 명령은 development/build-cross-riscv를 참조하십시오. [#31309](https://github.com/ClickHouse/ClickHouse/pull/31309) ([Vladimir Smirnov](https://github.com/Civil)).
* arm 머신에서 "-DENABLE\_TESTS=OFF" 매개변수로 컴파일할 수 있도록 지원합니다. [#31007](https://github.com/ClickHouse/ClickHouse/pull/31007) ([zhanghuajie](https://github.com/zhanghuajieHIT)).

<div id="clickhouse-release-v2111-2021-11-09">
  ### ClickHouse 릴리스 v21.11, 2021-11-09. [발표 자료](https://presentations.clickhouse.com/2021-release-21.11/), [동영상](https://www.youtube.com/watch?v=xb64zoPYvqQ)
</div>

<Frame>
  <iframe src="https://www.youtube.com/embed/xb64zoPYvqQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />
</Frame>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* SQL/JSON 함수에서 json\_path와 json 인수의 순서가 변경되었습니다(표준과 일치시키기 위함). [#30449](https://github.com/ClickHouse/ClickHouse/issues/30449)를 해결합니다. [#30474](https://github.com/ClickHouse/ClickHouse/pull/30474) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `MergeTree` 테이블 설정 `write_final_mark`가 제거되었습니다. 이제 항상 `true`입니다. [#30455](https://github.com/ClickHouse/ClickHouse/pull/30455) ([Kseniia Sumarokova](https://github.com/kssenii)). 별도의 조치는 필요하지 않으며, 모든 테이블은 새 버전과 호환됩니다.
* 함수 `bayesAB`가 제거되었습니다. 이 함수를 개선하여 다시 추가할 수 있도록 도와주십시오. 이로써 [#26233](https://github.com/ClickHouse/ClickHouse/issues/26233)가 해결됩니다. [#29934](https://github.com/ClickHouse/ClickHouse/pull/29934) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이는 실험적 `clickhouse-keeper` 지원을 이미 사용 중인 경우에만 해당합니다. 이제 ClickHouse Keeper 스냅샷은 기본적으로 ClickHouse의 사용자 지정 LZ4 블록 압축 대신 `ZSTD` 코덱으로 압축됩니다. 이 동작은 `compress_snapshots_with_zstd_format` coordination 설정으로 비활성화할 수 있습니다(모든 quorum 레플리카에서 동일해야 함). 하위 호환성 문제는 매우 드물며, 새 노드가 이전 노드로 스냅샷을 전송할 때만 발생할 수 있습니다(복구 시 발생). 이전 노드는 ZSTD 포맷의 스냅샷을 읽을 수 없습니다. [#29417](https://github.com/ClickHouse/ClickHouse/pull/29417) ([alesapin](https://github.com/alesapin)).

<div id="new-feature">
  #### 새로운 기능
</div>

* 새로운 비동기 `INSERT` 모드에서는 삽입된 데이터를 누적했다가 백그라운드에서 단일 배치로 저장할 수 있습니다. 클라이언트에서는 쿼리에 데이터가 인라인으로 포함된 `INSERT` 쿼리나 별도 버퍼의 데이터(예: HTTP protocol을 통한 `INSERT` 쿼리)에 대해 `async_insert`를 설정하여 이 기능을 활성화할 수 있습니다. `wait_for_async_insert`가 true이면(기본값) 클라이언트는 데이터가 테이블에 플러시될 때까지 대기합니다. 서버 측에서는 `async_insert_threads`, `async_insert_max_data_size`, `async_insert_busy_timeout_ms` 설정으로 이를 제어합니다. [#18282](https://github.com/ClickHouse/ClickHouse/issues/18282)를 구현했습니다. [#27537](https://github.com/ClickHouse/ClickHouse/pull/27537) ([Anton Popov](https://github.com/CurtizJ)). [#20557](https://github.com/ClickHouse/ClickHouse/pull/20557) ([Ivan](https://github.com/abyss7)). 성능 관련 참고: 비동기 삽입을 사용하면 초당 약 10,000개의 개별 `INSERT` 쿼리를 처리할 수 있으므로, 초당 수백만 행 수준의 성능을 달성하려면 여전히 배치 단위로 삽입하는 것이 좋습니다.
* `clickhouse-local`에 대화형 모드를 추가했습니다. 이제 서버에 연결하지 않고도 `clickhouse-local`만 실행하면 명령줄용 ClickHouse 인터페이스를 사용할 수 있으며, 파일과 외부 데이터 소스의 데이터를 처리할 수 있습니다. 또한 `clickhouse-client`와 `clickhouse-local`의 코드를 통합했습니다. [#7203](https://github.com/ClickHouse/ClickHouse/issues/7203)를 해결했습니다. [#25516](https://github.com/ClickHouse/ClickHouse/issues/25516)를 해결했습니다. [#22401](https://github.com/ClickHouse/ClickHouse/issues/22401)를 해결했습니다. [#26231](https://github.com/ClickHouse/ClickHouse/pull/26231) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 실행형(스크립트 작성 가능) 사용자 정의 함수 지원이 추가되었습니다. 이러한 UDF는 어떤 프로그래밍 언어로든 작성할 수 있습니다. [#28803](https://github.com/ClickHouse/ClickHouse/pull/28803) ([Maksim Kita](https://github.com/kitaisreal)).
* 외부 데이터 원본에 대해 사전 정의된 연결을 허용합니다. 이를 통해 외부 데이터 원본을 사용할 때 자격 증명이나 주소를 지정하지 않아도 되며, 대신 이름으로 참조할 수 있습니다. [#28367](https://github.com/ClickHouse/ClickHouse/issues/28367)을 해결합니다. [#28577](https://github.com/ClickHouse/ClickHouse/pull/28577) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `system` 데이터베이스의 해당 테이블에 대응하는 `SCHEMATA`, `TABLES`, `VIEWS`, `COLUMNS` 뷰를 포함한 `INFORMATION_SCHEMA` 데이터베이스를 추가했습니다. [#9770](https://github.com/ClickHouse/ClickHouse/issues/9770)를 해결합니다. [#28691](https://github.com/ClickHouse/ClickHouse/pull/28691) ([tavplubix](https://github.com/tavplubix)).
* `EXISTS (subquery)`를 지원합니다. [#6852](https://github.com/ClickHouse/ClickHouse/issues/6852)를 해결합니다. [#29731](https://github.com/ClickHouse/ClickHouse/pull/29731) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 감사를 위한 세션 로깅. 모든 로그인 및 로그아웃의 성공 및 실패 이벤트를 새로운 `system.session_log` 테이블(table)에 기록합니다. [#22415](https://github.com/ClickHouse/ClickHouse/pull/22415) ([Vasily Nemkov](https://github.com/Enmk)) ([Vitaly Baranov](https://github.com/vitlibar)).
* 다차원 코사인 거리 및 유클리드 거리 함수와 L1, L2, Lp, Linf 거리 및 노름을 지원합니다. 튜플의 스칼라 곱과 튜플에 대한 다양한 산술 연산자도 지원합니다. 이로써 [#4509](https://github.com/ClickHouse/ClickHouse/issues/4509)가 완전히 해결되었으며, 그 이상도 포함됩니다. [#27933](https://github.com/ClickHouse/ClickHouse/pull/27933) ([Alexey Boykov](https://github.com/mathalex)).
* `INTO OUTFILE` 및 `FROM INFILE`에 압축 및 압축 해제 지원을 추가했습니다(자동 감지 또는 추가적인 선택적 매개변수 사용). [#27135](https://github.com/ClickHouse/ClickHouse/pull/27135) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* HTTP `OPTIONS` 요청에 CORS(Cross Origin Resource Sharing) 지원을 추가했습니다. 이제 Grafana가 별도 임시방편 없이 서버리스 요청과 함께 작동합니다. [#18693](https://github.com/ClickHouse/ClickHouse/issues/18693)를 해결합니다. [#29155](https://github.com/ClickHouse/ClickHouse/pull/29155) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* 이제 JOIN ON이 있는 쿼리에서 논리합(OR)을 지원합니다. [#21320](https://github.com/ClickHouse/ClickHouse/pull/21320) ([Ilya Golshtein](https://github.com/ilejn)).
* 함수 `tokens`가 추가되었습니다. 이 함수는 영숫자가 아닌 ASCII 문자를 구분자로 사용해 문자열을 토큰으로 분할할 수 있습니다. [#29981](https://github.com/ClickHouse/ClickHouse/pull/29981) ([Maksim Kita](https://github.com/kitaisreal)). 텍스트에서 ngram을 추출하는 함수 `ngrams`가 추가되었습니다. [#29699](https://github.com/ClickHouse/ClickHouse/issues/29699)를 해결합니다. [#29738](https://github.com/ClickHouse/ClickHouse/pull/29738) ([Maksim Kita](https://github.com/kitaisreal)).
* 유니코드 정규화 함수 `normalizeUTF8NFC`, `normalizeUTF8NFD`, `normalizeUTF8NFKC`, `normalizeUTF8NFKD`를 추가했습니다. [#28633](https://github.com/ClickHouse/ClickHouse/pull/28633) ([darkkeks](https://github.com/darkkeks)).
* `FileLog` 테이블 엔진을 사용해 ClickHouse에서 애플리케이션 로그 파일을 스트리밍 방식으로 활용할 수 있습니다. 로컬 파일 시스템의 추가 전용 로그와 로테이션된 로그를 위한 엔진으로, `Kafka` 또는 `RabbitMQ` 엔진과 유사합니다. [#6953](https://github.com/ClickHouse/ClickHouse/issues/6953)을 해결했습니다. [#25969](https://github.com/ClickHouse/ClickHouse/pull/25969) ([flynn](https://github.com/ucasfl)) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `CapnProto` 출력 형식을 추가하고 `CapnProto` 입력 형식을 리팩터링했습니다. [#29291](https://github.com/ClickHouse/ClickHouse/pull/29291) ([Kruglov Pavel](https://github.com/Avogar)).
* 쿼리에서 숫자를 이진 리터럴로 작성할 수 있게 되었습니다. 예시 `SELECT 0b001;`. [#29304](https://github.com/ClickHouse/ClickHouse/pull/29304) ([Maksim Kita](https://github.com/kitaisreal)).
* `hashed_array` 딕셔너리 유형이 추가되었습니다. 여러 속성을 가진 딕셔너리를 사용할 때 메모리를 절약할 수 있습니다. [#30236](https://github.com/ClickHouse/ClickHouse/issues/30236)를 해결합니다. [#30242](https://github.com/ClickHouse/ClickHouse/pull/30242) ([Maksim Kita](https://github.com/kitaisreal)).
* `JSONExtractKeys` 함수가 추가되었습니다. [#30056](https://github.com/ClickHouse/ClickHouse/pull/30056) ([Vitaly](https://github.com/orloffv)).
* 함수 `getOSKernelVersion`이 추가되었습니다. 이 함수는 OS 커널 버전을 나타내는 문자열을 반환합니다. [#29755](https://github.com/ClickHouse/ClickHouse/pull/29755) ([Memo](https://github.com/Joeywzr)).
* `MD4` 및 `SHA384` 함수가 추가되었습니다. MD4는 더 이상 권장되지 않는 오래된 해시 함수이며 보안상 안전하지 않습니다. 따라서 일부 레거시 시스템에서 이미 MD4를 사용 중이고 정확히 동일한 결과를 얻어야 하는 드문 경우에만 사용할 수 있습니다. [#29602](https://github.com/ClickHouse/ClickHouse/pull/29602) ([Nikita Tikhomirov](https://github.com/NSTikhomirov)).
* `hsts_max_age`를 설정 파일에서 양수로 지정하면 ClickHouse HTTP 서버에서 HSTS를 활성화할 수 있습니다. [#29516](https://github.com/ClickHouse/ClickHouse/pull/29516) ([凌涛](https://github.com/lingtaolf)).
* Huawei OBS Storage 지원. [#24294](https://github.com/ClickHouse/ClickHouse/issues/24294)를 해결합니다. [#29511](https://github.com/ClickHouse/ClickHouse/pull/29511) ([kevin wan](https://github.com/MaxWk)).
* 키가 단순한 정규식과 일치하는 맵을 반환하는 새 함수 `mapContainsKeyLike`가 추가되었습니다. [#29471](https://github.com/ClickHouse/ClickHouse/pull/29471) ([凌涛](https://github.com/lingtaolf)). 지정된 패턴과 일치하는 요소만 포함하는 맵을 반환하는 새 함수 `mapExtractKeyLike`가 추가되었습니다. [#30793](https://github.com/ClickHouse/ClickHouse/pull/30793) ([凌涛](https://github.com/lingtaolf)).
* `ALTER TABLE x MODIFY COMMENT`를 지원하도록 구현했습니다. [#29264](https://github.com/ClickHouse/ClickHouse/pull/29264) ([Vasily Nemkov](https://github.com/Enmk)).
* H3 API에서 제공되지만 ClickHouse에는 없는 H3 inspection 함수를 추가했습니다: [https://h3geo.org/docs/api/inspection](https://h3geo.org/docs/api/inspection). [#29209](https://github.com/ClickHouse/ClickHouse/pull/29209) ([Bharat Nallan](https://github.com/bharatnc)).
* 복제된 데이터베이스에서 복제되지 않은 `ALTER TABLE FETCH` 및 `ATTACH` 작업을 허용합니다. [#29202](https://github.com/ClickHouse/ClickHouse/pull/29202) ([Kevin Michel](https://github.com/kmichel-aiven)).
* 설정 `output_format_csv_null_representation`이 추가되었습니다. CSV 출력용이라는 점을 제외하면 `output_format_tsv_null_representation`와 동일합니다. [#29123](https://github.com/ClickHouse/ClickHouse/pull/29123) ([PHO](https://github.com/depressed-pho)).
* 현재 ZooKeeper 세션의 업타임을 초 단위로 반환하는 함수 `zookeeperSessionUptime()`이 추가되었습니다. [#28983](https://github.com/ClickHouse/ClickHouse/pull/28983) ([tavplubix](https://github.com/tavplubix)).
* `h3ToGeoBoundary` 함수가 구현되었습니다. [#28952](https://github.com/ClickHouse/ClickHouse/pull/28952) ([Ivan Veselov](https://github.com/fuzzERot)).
* 윈도 함수로 사용할 수 있는 집계 함수 `exponentialMovingAverage`가 추가되었습니다. 이로써 [#27511](https://github.com/ClickHouse/ClickHouse/issues/27511)이 해결되었습니다. [#28914](https://github.com/ClickHouse/ClickHouse/pull/28914) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 테이블 컬럼의 서브컬럼도 `DESCRIBE` 쿼리 결과에 포함할 수 있게 했습니다(`describe_include_subcolumns` 설정으로 활성화할 수 있습니다). [#28905](https://github.com/ClickHouse/ClickHouse/pull/28905) ([Anton Popov](https://github.com/CurtizJ)).
* `Executable`, `ExecutablePool`에 `send_chunk_header` 옵션이 추가되었습니다. 이 옵션이 true이면 청크 전에 줄바꿈이 포함된 청크 행 수 `rows&#95;count`가 클라이언트로 전송됩니다. [#28833](https://github.com/ClickHouse/ClickHouse/pull/28833) ([Maksim Kita](https://github.com/kitaisreal)).
* `tokenbf_v1` 및 `ngram`은 키가 String 또는 FixedSring 타입인 맵을 지원합니다. 이는 맵 키 필터를 사용하는 쿼리에서 데이터 스키핑을 개선합니다. `sql CREATE TABLE map_tokenbf ( row_id UInt32, map Map(String, String), INDEX map_tokenbf map TYPE ngrambf_v1(4,256,2,0) GRANULARITY 1 ) Engine=MergeTree() Order by id ` 위 테이블에서는 쿼리 `select * from map_tokebf where map['K']='V'` 실행 시 키 `A`를 포함하지 않는 그레뉼을 스킵합니다. 물론 스킵되는 행 수는 설정한 `granularity` 및 `index_granularity`에 따라 달라집니다. [#28511](https://github.com/ClickHouse/ClickHouse/pull/28511) ([凌涛](https://github.com/lingtaolf)).
* server에서 클라이언트로 profile events를 전송합니다. 새로운 패킷 유형 `ProfileEvents`가 도입되었습니다. [#26177](https://github.com/ClickHouse/ClickHouse/issues/26177)을 해결합니다. [#28364](https://github.com/ClickHouse/ClickHouse/pull/28364) ([Dmitry Novik](https://github.com/novikd)).
* `FixedString` 및 `String` 데이터 타입에 비트 시프트 연산이 추가되었습니다. 이로써 [#27763](https://github.com/ClickHouse/ClickHouse/issues/27763)가 해결되었습니다. [#28325](https://github.com/ClickHouse/ClickHouse/pull/28325) ([小路](https://github.com/nicelulu)).
* 데이터베이스 엔진 MaterializedPostgreSQL에서 PostgreSQL 테이블을 복제에 동적으로 추가 및 삭제하는 기능을 지원합니다. 데이터베이스 설정에 대한 ALTER를 지원합니다. [#27573](https://github.com/ClickHouse/ClickHouse/issues/27573)을 해결했습니다. [#28301](https://github.com/ClickHouse/ClickHouse/pull/28301) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 함수 accurateCastOrDefault(x, T)를 추가했습니다. [#21330](https://github.com/ClickHouse/ClickHouse/issues/21330)을 종료합니다. 작성자: @taiyang-li. [#23028](https://github.com/ClickHouse/ClickHouse/pull/23028) ([Maksim Kita](https://github.com/kitaisreal)).
* 문자열 파싱에 실패할 경우 사용자가 기본값(NULL이 아님)을 지정할 수 있는 함수 `toUUIDOrDefault`, `toUInt8/16/32/64/256OrDefault`, `toInt8/16/32/64/128/256OrDefault`를 추가했습니다. [#21330](https://github.com/ClickHouse/ClickHouse/pull/21330) ([taiyang-li](https://github.com/taiyang-li)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* 백그라운드 머지는 서로 선점할 수 있으며, 적절한 우선순위에 따라 스케줄됩니다. 이제 오래 실행되는 머지가 짧은 머지의 진행을 가로막지 않습니다. 이는 머지 실행을 더 효율적으로 스케줄링하고 제어하기 위해 필요합니다. 이를 통해 "Too many parts" 오류가 발생할 가능성이 줄어듭니다. [#22381](https://github.com/ClickHouse/ClickHouse/issues/22381). [#25165](https://github.com/ClickHouse/ClickHouse/pull/25165) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)). background pool의 스레드 수보다 많은 머지와 뮤테이션을 실행할 수 있는 기능이 추가되었습니다. 머지와 뮤테이션은 크기에 따라(작을수록 우선순위가 높음) 단계적으로 실행됩니다. 실행할 작업 수와 스레드 수의 비율은 설정 `background_merges_mutations_concurrency_ratio`로 제어되며, 기본값은 2입니다. [#29140](https://github.com/ClickHouse/ClickHouse/pull/29140) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 원격 파일 시스템에 비동기 읽기를 사용할 수 있도록 했습니다. 원격 파일 시스템에서 읽는 동안 seek 횟수를 줄였습니다. 그 결과 성능이 크게 향상되었으며, 특정 조건에서는 실험적 `web` 및 `s3` 디스크가 EBS보다 더 빠르게 동작합니다. [#29205](https://github.com/ClickHouse/ClickHouse/pull/29205) ([Kseniia Sumarokova](https://github.com/kssenii)). 한편, `web` 디스크 유형(웹 서버에서 호스팅되는 정적 데이터셋)은 실험적 단계에서 벗어나 프로덕션 사용이 가능한 상태가 되었습니다.
* `clickhouse-client`에서 `INTO OUTFILE`을 사용하는 쿼리는 여러 스레드를 사용합니다. `INTO OUTFILE` 사용 시 진행률 표시줄이 깜빡이던 문제를 수정했습니다. 이로써 [#30873](https://github.com/ClickHouse/ClickHouse/issues/30873)가 해결되었습니다. 이로써 [#30872](https://github.com/ClickHouse/ClickHouse/issues/30872)가 해결되었습니다. [#30886](https://github.com/ClickHouse/ClickHouse/pull/30886) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 일부 타입의 `SELECT` 쿼리에서 디스크로부터 읽는 중복된 압축 데이터의 양을 줄였습니다(`MergeTree` 엔진 계열에만 해당). [#30111](https://github.com/ClickHouse/ClickHouse/pull/30111) ([alesapin](https://github.com/alesapin)).
* MergeTree 테이블 엔진 제품군에서 압축된 블록을 읽는 과정의 중복 `seek` 호출 일부를 제거했습니다. [#29766](https://github.com/ClickHouse/ClickHouse/pull/29766) ([alesapin](https://github.com/alesapin)).
* `url` 테이블 함수가 여러 URL을 병렬로 처리하도록 개선했습니다. 이 변경으로 [#29670](https://github.com/ClickHouse/ClickHouse/issues/29670) 및 [#29671](https://github.com/ClickHouse/ClickHouse/issues/29671)이 해결되었습니다. [#29673](https://github.com/ClickHouse/ClickHouse/pull/29673) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 기본 키(primary key) 순서에 따른 집계 성능을 개선했습니다(설정 `optimize_aggregation_in_order`가 활성화된 경우). [#30266](https://github.com/ClickHouse/ClickHouse/pull/30266) ([Anton Popov](https://github.com/CurtizJ)).
* 이제 ClickHouse는 외부 S3와 통신할 때 DNS 캐시를 사용합니다. [#29999](https://github.com/ClickHouse/ClickHouse/pull/29999) ([alesapin](https://github.com/alesapin)).
* 외부 데이터베이스(예: MySQL)에 `IS NULL`/`IS NOT NULL` 푸시다운 지원을 추가했습니다. [#29463](https://github.com/ClickHouse/ClickHouse/pull/29463) ([Azat Khuzhin](https://github.com/azat)). `isNull`/`isNotNull`을 `IS NULL`/`IS NOT NULL`로 변환하도록 개선했습니다(외부 DB, 예: MySQL). [#29446](https://github.com/ClickHouse/ClickHouse/pull/29446) ([Azat Khuzhin](https://github.com/azat)).
* 딕셔너리 테이블에 대한 SELECT 쿼리는 여러 스레드를 사용합니다. [#30500](https://github.com/ClickHouse/ClickHouse/pull/30500) ([Maksim Kita](https://github.com/kitaisreal)).
* `Decimal` 컬럼의 필터링(WHERE 연산) 성능을 개선했습니다. [#30431](https://github.com/ClickHouse/ClickHouse/pull/30431) ([Jun Jin](https://github.com/vesslanjin)).
* 더 높은 성능의 popcnt/ctz 구현을 사용해 필터 연산의 분기 코드를 제거했습니다. [#29881](https://github.com/ClickHouse/ClickHouse/pull/29881) ([Jun Jin](https://github.com/vesslanjin)).
* SSE/AVX2/AVX512 명령어를 사용해 all in one 함수의 filter 바이트마스크 생성기(WHERE 연산자에 사용)를 개선했습니다. 기본적으로 ClickHouse는 SSE만 사용하므로 커스텀 빌드에만 해당합니다. [#30014](https://github.com/ClickHouse/ClickHouse/pull/30014) ([jasperzhu](https://github.com/jinjunzh)). [#30670](https://github.com/ClickHouse/ClickHouse/pull/30670) ([jasperzhu](https://github.com/jinjunzh)).
* 널 허용 부동소수점 숫자에 대한 SUM 집계 함수의 성능을 개선했습니다. [#28906](https://github.com/ClickHouse/ClickHouse/pull/28906) ([Raúl Marín](https://github.com/Algunenano)).
* 여러 디스크를 사용하는 경우 part loading 프로세스의 속도를 높였습니다. 기본 아이디어는 [https://github.com/ClickHouse/ClickHouse/pull/16423](https://github.com/ClickHouse/ClickHouse/pull/16423) 와 유사합니다. 운영 환경에서 성능 개선이 확인되었습니다: 24분 -> 16분. [#28363](https://github.com/ClickHouse/ClickHouse/pull/28363) ([Amos Bird](https://github.com/amosbird)).
* 메모리 사용량을 줄이기 위해 S3 멀티파트 업로드 파트 크기의 기본 설정을 낮췄습니다. [#28679](https://github.com/ClickHouse/ClickHouse/pull/28679) ([ianton-ru](https://github.com/ianton-ru)).
* `bitmapAnd` 함수 성능 개선. [#28332](https://github.com/ClickHouse/ClickHouse/pull/28332) ([dddounaiking](https://github.com/OodounaikingoO)).
* `StorageMergeTree`에서 머지가 계속 진행 중일 때 표시되던 불필요한 mutation 알림을 제거했습니다. [#27552](https://github.com/ClickHouse/ClickHouse/pull/27552) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 문자열 비교 성능을 개선했습니다. [#28767](https://github.com/ClickHouse/ClickHouse/pull/28767) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 기본 키 인덱스와 파티션 필터를 Tuple에서도 사용할 수 있습니다. [#29281](https://github.com/ClickHouse/ClickHouse/pull/29281) ([凌涛](https://github.com/lingtaolf)).
* 쿼리에 동일한 인수를 사용하지만 level 매개변수만 다른 여러 분위수 집계 함수가 있는 경우, `optimize_syntax_fuse_functions` 설정이 활성화되어 있으면 이 함수들은 하나로 결합되어 한 번에 실행됩니다. [#26657](https://github.com/ClickHouse/ClickHouse/pull/26657) ([hexiaoting](https://github.com/hexiaoting)).
* 이제 기본 키(primary key)의 첫 번째 표현식에 대한 min-max 집계가 프로젝션을 통해 최적화됩니다. 이는 [#329](https://github.com/ClickHouse/ClickHouse/issues/329) 관련 변경입니다. [#29918](https://github.com/ClickHouse/ClickHouse/pull/29918) ([Amos Bird](https://github.com/amosbird)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* ClickHouse Keeper의 노드 구성(`.xml` 파일)을 변경할 수 있는 기능을 추가했습니다. [#30372](https://github.com/ClickHouse/ClickHouse/pull/30372) ([alesapin](https://github.com/alesapin)).
* `sparkbar` 집계 함수를 추가했습니다. 이로써 [#26175](https://github.com/ClickHouse/ClickHouse/issues/26175)가 해결되었습니다. [#27481](https://github.com/ClickHouse/ClickHouse/pull/27481) ([小路](https://github.com/nicelulu)). 참고: 이 함수에는 한 가지 문제가 있으며, 동작은 향후 릴리스에서 변경될 예정입니다.

<div id="improvement">
  #### 개선 사항
</div>

* 재시작 없이 로그 수준을 변경할 수 있도록 개선했습니다. [#29586](https://github.com/ClickHouse/ClickHouse/pull/29586) ([Nikolay Degterinsky](https://github.com/evillique)).
* SQL UDF가 여러 가지로 개선되었습니다. 이제 SQL 사용자 정의 함수를 조작하는 쿼리에서 ON CLUSTER 절을 지원합니다. 예시 `CREATE FUNCTION test_function ON CLUSTER 'cluster' AS x -> x + 1;`. [#30666](https://github.com/ClickHouse/ClickHouse/issues/30666)을 해결했습니다. [#30734](https://github.com/ClickHouse/ClickHouse/pull/30734) ([Maksim Kita](https://github.com/kitaisreal)). `CREATE OR REPLACE`, `CREATE IF NOT EXISTS` 구문을 지원합니다. [#30454](https://github.com/ClickHouse/ClickHouse/pull/30454) ([Maksim Kita](https://github.com/kitaisreal)). `DROP IF EXISTS` 지원이 추가되었습니다. 예시 `DROP FUNCTION IF EXISTS test_function`. [#30437](https://github.com/ClickHouse/ClickHouse/pull/30437) ([Maksim Kita](https://github.com/kitaisreal)). 람다를 지원합니다. 예시 `CREATE FUNCTION lambda_function AS x -> arrayMap(element -> element * 2, x);`. [#30435](https://github.com/ClickHouse/ClickHouse/pull/30435) ([Maksim Kita](https://github.com/kitaisreal)). `clickhouse-local`에서 SQL 사용자 정의 함수를 지원합니다. [#30179](https://github.com/ClickHouse/ClickHouse/pull/30179) ([Maksim Kita](https://github.com/kitaisreal)).
* 쿼리별 메모리 프로파일러를 전역적으로 활성화합니다(`memory_profiler_step` = 4MiB로 설정). [#29455](https://github.com/ClickHouse/ClickHouse/pull/29455) ([Azat Khuzhin](https://github.com/azat)).
* `system.data_skipping_indices`에 `data_compressed_bytes`, `data_uncompressed_bytes`, `marks_bytes` 컬럼을 추가했습니다. `system.parts`에 `secondary_indices_compressed_bytes`, `secondary_indices_uncompressed_bytes`, `secondary_indices_marks_bytes` 컬럼을 추가했습니다. [#29697](https://github.com/ClickHouse/ClickHouse/issues/29697)을 해결했습니다. [#29896](https://github.com/ClickHouse/ClickHouse/pull/29896) ([Maksim Kita](https://github.com/kitaisreal)).
* system.tables에 `table` 별칭을, system.databases에 `database` 별칭을 추가했습니다 [#29677](https://github.com/ClickHouse/ClickHouse/issues/29677). [#29882](https://github.com/ClickHouse/ClickHouse/pull/29882) ([kevin wan](https://github.com/MaxWk)).
* server 시작 시 테이블 간 상호 의존 관계를 올바르게 해결합니다. [#8004](https://github.com/ClickHouse/ClickHouse/issues/8004), [#15170](https://github.com/ClickHouse/ClickHouse/issues/15170)를 해결합니다. [#28373](https://github.com/ClickHouse/ClickHouse/pull/28373) ([tavplubix](https://github.com/tavplubix)).
* 함수 `divide`, `intDiv`, `modulo`에서 분모가 널 허용일 때 발생하는 "Division by zero" 오류를 방지합니다. [#22621](https://github.com/ClickHouse/ClickHouse/issues/22621)을 해결합니다. [#28352](https://github.com/ClickHouse/ClickHouse/pull/28352) ([Kruglov Pavel](https://github.com/Avogar)).
* 텍스트 형식에서 `Date` 데이터 타입 값을 `YYYY-MM-DD`뿐만 아니라 `YYYYMMDD` 형식으로도 파싱할 수 있게 했습니다. 이로써 [#30870](https://github.com/ClickHouse/ClickHouse/issues/30870)이 해결되었습니다. [#30871](https://github.com/ClickHouse/ClickHouse/pull/30871) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Web UI: 테이블 셀에 막대를 표시합니다. [#29792](https://github.com/ClickHouse/ClickHouse/pull/29792) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 주석이 있는 딕셔너리를 생성할 수 있습니다: `CREATE DICTIONARY ... COMMENT 'vaue'` ... [#29899](https://github.com/ClickHouse/ClickHouse/pull/29899) ([Vasily Nemkov](https://github.com/Enmk)). 이제 `CREATE DATABASE` 구문에서 데이터베이스에 주석을 설정할 수 있습니다 ... [#29429](https://github.com/ClickHouse/ClickHouse/pull/29429) ([Vasily Nemkov](https://github.com/Enmk)).
* `compiled_expression_cache_elements_size` 설정이 도입되었습니다. 이 설정을 사용할 일이 있다면, 이미 이 설정이 무엇을 하는지 알고 있을 것입니다. [#30667](https://github.com/ClickHouse/ClickHouse/pull/30667) ([Maksim Kita](https://github.com/kitaisreal)).
* clickhouse-format이 이제 `--query` 옵션을 지원합니다. 이전 버전에서는 쿼리를 stdin으로 전달해야만 했습니다. [#29325](https://github.com/ClickHouse/ClickHouse/pull/29325) ([凌涛](https://github.com/lingtaolf)).
* `Memory` 데이터베이스의 테이블에서 `ALTER TABLE`을 지원합니다. `Memory` 데이터베이스는 `clickhouse-local`에서 사용됩니다. [#30866](https://github.com/ClickHouse/ClickHouse/pull/30866) ([tavplubix](https://github.com/tavplubix)).
* 이제 `arrayStringConcat`는 직렬화 가능한 모든 타입의 배열을 지원합니다. [#30840](https://github.com/ClickHouse/ClickHouse/pull/30840) ([Nickita Taranov](https://github.com/nickitat)).
* 이제 ClickHouse는 시스템 메모리 용량을 파악할 때 docker/cgroups 제한을 반영합니다. [#25662](https://github.com/ClickHouse/ClickHouse/issues/25662)를 참조하십시오. [#30574](https://github.com/ClickHouse/ClickHouse/pull/30574) ([Pavel Medvedev](https://github.com/pmed)).
* 이제 PostgreSQL 데이터베이스에서 가져오는 테이블 구조를 더 안정적으로 확인할 수 있습니다. [#30477](https://github.com/ClickHouse/ClickHouse/pull/30477) ([Kseniia Sumarokova](https://github.com/kssenii)).
* GROUP BY 및 ORDER BY에서 위치 인수를 전면 지원합니다. [#30433](https://github.com/ClickHouse/ClickHouse/pull/30433) ([Kseniia Sumarokova](https://github.com/kssenii)).
* JSONExtractString을 사용해 문자열이 아닌 요소도 문자열로 추출할 수 있도록 합니다. 이는 [pull/25452#issuecomment-927123287](https://github.com/ClickHouse/ClickHouse/pull/25452#issuecomment-927123287) 관련 변경입니다. [#30426](https://github.com/ClickHouse/ClickHouse/pull/30426) ([Amos Bird](https://github.com/amosbird)).
* `GraphiteMergeTree`의 SELECT 쿼리에서 FINAL 절을 사용할 수 있게 되었습니다. [#30360](https://github.com/ClickHouse/ClickHouse/pull/30360) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 레플리카 복제와 손상된 파트에 대한 fetch 작업을 큐에 넣는 과정이 소폭 개선되어, 매우 드물게 발생하던 복제 큐의 `GET_PART` 항목 멈춤 현상을 방지할 수 있습니다. [#30346](https://github.com/ClickHouse/ClickHouse/pull/30346) ([tavplubix](https://github.com/tavplubix)).
* `user_files` 디렉터리에서 file 테이블 함수가 파일을 가리키는 심볼릭 링크를 허용합니다. [#30309](https://github.com/ClickHouse/ClickHouse/pull/30309) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `Date32`를 `Date`, `DateTime`, `DateTime64` 및 `String`과 비교할 때의 문제를 수정했습니다. [#30219](https://github.com/ClickHouse/ClickHouse/pull/30219) ([liang.huang](https://github.com/lhuang09287750)).
* `MergeTree` 테이블에서 `SAMPLE BY` 표현식을 제거할 수 있도록 했습니다 (`ALTER TABLE <table> REMOVE SAMPLE BY`). [#30180](https://github.com/ClickHouse/ClickHouse/pull/30180) ([Anton Popov](https://github.com/CurtizJ)).
* 이제 `Keeper`는 (`clickhouse-server`의 일부로) 다른 노드에 연결할 수 있으면 비동기적으로 시작됩니다. [#30170](https://github.com/ClickHouse/ClickHouse/pull/30170) ([alesapin](https://github.com/alesapin)).
* 이제 `clickhouse-client`에서 네이티브 여러 줄 편집을 지원합니다. [#30143](https://github.com/ClickHouse/ClickHouse/pull/30143) ([Amos Bird](https://github.com/amosbird)).
* `polygon` 딕셔너리(역방향 지오코딩): setting `store_polygon_key_column` = true인 경우 SELECT 쿼리 메서드를 사용해 딕셔너리 내용을 읽을 수 있도록 지원을 추가했습니다. [#30090](https://github.com/ClickHouse/ClickHouse/issues/30090)을 해결했습니다. [#30142](https://github.com/ClickHouse/ClickHouse/pull/30142) ([Maksim Kita](https://github.com/kitaisreal)).
* Play UI에 ClickHouse 로고를 추가했습니다. [#29674](https://github.com/ClickHouse/ClickHouse/pull/29674) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Arrow`, `ArrowStream`, `Parquet`, `ORC`와 같은 Arrow 지원 포맷에서 컬럼을 읽을 때 표시되는 예외 메시지가 개선되었습니다. 이 변경으로 [#29926](https://github.com/ClickHouse/ClickHouse/issues/29926)가 해결되었습니다. [#29927](https://github.com/ClickHouse/ClickHouse/pull/29927) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Buffer` 테이블에서 플러시와 시작 시점 사이에 발생하는 데이터 경합을 수정했습니다. 이는 테스트에서 나타날 수 있습니다. [#29930](https://github.com/ClickHouse/ClickHouse/pull/29930) ([Azat Khuzhin](https://github.com/azat)).
* `DatabaseMemory`와 `LiveView`의 `DROP TABLE` 간 `lock-order-inversion`을 수정했습니다. Live View는 실험적 기능입니다. Memory 데이터베이스는 clickhouse-local에서 사용됩니다. [#29929](https://github.com/ClickHouse/ClickHouse/pull/29929) ([Azat Khuzhin](https://github.com/azat)).
* 주기적인 딕셔너리 재로드와 설정 재로드 사이의 잠금 순서 역전 문제를 수정했습니다. [#29928](https://github.com/ClickHouse/ClickHouse/pull/29928) ([Azat Khuzhin](https://github.com/azat)).
* zoneinfo 파일을 2021c로 갱신했습니다. [#29925](https://github.com/ClickHouse/ClickHouse/pull/29925) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-copier`에서 재시도(retries) 및 재시도 사이의 지연을 설정할 수 있는 기능이 추가되었습니다. [#29921](https://github.com/ClickHouse/ClickHouse/pull/29921) ([Azat Khuzhin](https://github.com/azat)).
* `shutdown_wait_unfinished` 시간까지 실행 중인 쿼리를 기다릴 수 있도록 `shutdown_wait_unfinished_queries` 서버 설정을 추가했습니다. 이는 [#24451](https://github.com/ClickHouse/ClickHouse/issues/24451)을 위한 변경입니다. [#29914](https://github.com/ClickHouse/ClickHouse/pull/29914) ([Amos Bird](https://github.com/amosbird)).
* 최대 메모리 사용량을 추적할 수 있는 기능이 추가되었습니다(`system.trace_log`에 새로운 trace\_type `MemoryPeak` 추가). [#29858](https://github.com/ClickHouse/ClickHouse/pull/29858) ([Azat Khuzhin](https://github.com/azat)).
* PostgreSQL 외부 테이블: 레플리카 아이덴티티 인덱스를 가져오는 쿼리에 파티션된 테이블 접두사 'p'를 추가했습니다. [#29828](https://github.com/ClickHouse/ClickHouse/pull/29828) ([Shoh Jahon](https://github.com/Shohjahon)).
* 머지 중 메모리 사용량을 프로파일링할 수 있도록 mutate/merge 작업 중 `max_untracked_memory`/`memory_profiler_step`/`memory_profiler_sample_probability`를 적용합니다. [#29681](https://github.com/ClickHouse/ClickHouse/pull/29681) ([Azat Khuzhin](https://github.com/azat)).
* 쿼리 난독화 도구: `clickhouse-format --obfuscate`가 이제 더 다양한 유형의 쿼리를 처리할 수 있습니다. [#29672](https://github.com/ClickHouse/ClickHouse/pull/29672) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 다음 문제를 해결했습니다: `clickhouse-format --obfuscate`가 내장 딕셔너리(함수 `regionTo...`)가 포함된 쿼리를 처리하지 못하던 문제입니다. [#29667](https://github.com/ClickHouse/ClickHouse/pull/29667) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* JSON 함수의 잘못된 널 허용 처리를 수정했습니다. 이 수정으로 [#29615](https://github.com/ClickHouse/ClickHouse/issues/29615) 문제가 해결됩니다. [https://github.com/ClickHouse/ClickHouse/pull/28012](https://github.com/ClickHouse/ClickHouse/pull/28012) 가 아직 릴리스되지 않았으므로 개선 사항으로 분류했습니다. [#29659](https://github.com/ClickHouse/ClickHouse/pull/29659) ([Amos Bird](https://github.com/amosbird)).
* 기본 `listen_backlog` 값을 늘렸습니다(최신 Linux 커널의 기본값에 맞추기 위해). [#29643](https://github.com/ClickHouse/ClickHouse/pull/29643) ([Azat Khuzhin](https://github.com/azat)).
* server 설정 `dictionaries_config`, `models_config`, `user_defined_executable_functions_config`가 변경되면 Dictionaries, 모델, 사용자 정의 실행형 함수를 다시 로드합니다. [#28142](https://github.com/ClickHouse/ClickHouse/issues/28142)를 해결합니다. [#29529](https://github.com/ClickHouse/ClickHouse/pull/29529) ([Maksim Kita](https://github.com/kitaisreal)).
* 프로젝션 이름에 대한 불필요한 제한이 제거되었습니다. 이제 프로젝션 이름도 `tmp_`로 시작할 수 있습니다. [#29520](https://github.com/ClickHouse/ClickHouse/pull/29520) ([Amos Bird](https://github.com/amosbird)).
* 중첩된 서브쿼리가 포함된 뮤테이션에서 발생하던 `There is no query or query context has expired` 오류를 수정했습니다. 테이블이 복제된 상태이고 `allow_nondeterministic_mutations` 설정이 비활성화되어 있으면 뮤테이션에서 서브쿼리를 허용하지 않습니다. [#29495](https://github.com/ClickHouse/ClickHouse/pull/29495) ([tavplubix](https://github.com/tavplubix)).
* 런타임 중에 `max_concurrent_queries`의 설정 변경 사항을 적용할 수 있습니다(재시작할 필요가 없습니다). [#29414](https://github.com/ClickHouse/ClickHouse/pull/29414) ([Raúl Marín](https://github.com/Algunenano)).
* `use_skip_indexes` 설정이 추가되었습니다. [#29405](https://github.com/ClickHouse/ClickHouse/pull/29405) ([Maksim Kita](https://github.com/kitaisreal)).
* 인메모리 파트를 `FREEZE`할 수 있도록 지원을 추가했습니다(백업용). [#29376](https://github.com/ClickHouse/ClickHouse/pull/29376) ([Mo Xuan](https://github.com/mo-avatar)).
* `clickhouse-benchmark`에 초기 query\_id를 전달하도록 했습니다(이전에는 `clickhouse-benchmark`를 통해 원격 쿼리를 실행하면 세그먼트의 쿼리가 `initial_query_id`를 통해 초기 쿼리와 연결되지 않았습니다). [#29364](https://github.com/ClickHouse/ClickHouse/pull/29364) ([Azat Khuzhin](https://github.com/azat)).
* 스킵 인덱스 `tokenbf_v1` 및 `ngrambf_v1`에 `String` 또는 `FixedString` 타입의 키를 사용하는 `Array` 데이터 타입 지원이 추가되었습니다. [#29280](https://github.com/ClickHouse/ClickHouse/pull/29280) ([Maksim Kita](https://github.com/kitaisreal)). 스킵 인덱스 `tokenbf_v1` 및 `ngrambf_v1`에 `String` 또는 `FixedString` 타입의 키를 사용하는 `Map` 데이터 타입 지원이 추가되었습니다. 작성자 @lingtaolf. [#29220](https://github.com/ClickHouse/ClickHouse/pull/29220) ([Maksim Kita](https://github.com/kitaisreal)).
* 함수 `has`: `Map` 데이터 타입에 대한 지원이 추가되었습니다. [#29267](https://github.com/ClickHouse/ClickHouse/pull/29267) ([Maksim Kita](https://github.com/kitaisreal)).
* `clickhouse-keeper` 로그(복제된 상태 머신용)를 `ZSTD`로 압축할 수 있는 `compress_logs` 설정을 `clickhouse-keeper`에 추가했습니다. 구현: [#26977](https://github.com/ClickHouse/ClickHouse/issues/26977). [#29223](https://github.com/ClickHouse/ClickHouse/pull/29223) ([alesapin](https://github.com/alesapin)).
* `external_table_strict_query` 설정이 추가되었습니다. 호환되지 않더라도 외부 데이터베이스로 전송되는 쿼리에 전체 WHERE 표현식을 전달하도록 강제합니다. [#29206](https://github.com/ClickHouse/ClickHouse/pull/29206) ([Azat Khuzhin](https://github.com/azat)).
* `ARRAY JOIN`을 사용할 때 프로젝션을 비활성화합니다. 이전 버전에서는 프로젝션 분석으로 인해 ARRAY JOIN의 alias가 깨질 수 있었습니다. [#29139](https://github.com/ClickHouse/ClickHouse/pull/29139) ([Amos Bird](https://github.com/amosbird)).
* `MsgPack` 입력/출력 포맷에서 더 많은 타입을 지원하도록 개선했습니다. [#29077](https://github.com/ClickHouse/ClickHouse/pull/29077) ([Kruglov Pavel](https://github.com/Avogar)).
* `ORC` 입력/출력 포맷에서 `LowCardinality` 컬럼을 입력하고 출력할 수 있도록 지원합니다. [#29062](https://github.com/ClickHouse/ClickHouse/pull/29062) ([Kruglov Pavel](https://github.com/Avogar)).
* `system.distributed_ddl_queue`를 SELECT할 때 잘못된 값이 표시될 수 있던 문제가 수정되었습니다. [#29061](https://github.com/ClickHouse/ClickHouse/pull/29061) ([tavplubix](https://github.com/tavplubix)).
* HTTP 연결에서 알 수 없는 메서드에 대한 동작을 올바르게 처리합니다. [#29050](https://github.com/ClickHouse/ClickHouse/issues/29050)을 해결합니다. [#29057](https://github.com/ClickHouse/ClickHouse/pull/29057) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* `clickhouse-keeper`: ZooKeeper 로그(스냅샷 제외)로 복원할 때 일부 데이터 손실을 일으킬 수 있는 `clickhouse-keeper-converter`의 버그를 수정했습니다. [#29030](https://github.com/ClickHouse/ClickHouse/pull/29030) ([小路](https://github.com/nicelulu)). ZooKeeper 로그가 잘못 역직렬화될 수 있는 `clickhouse-keeper-converter`의 버그를 수정했습니다. [#29071](https://github.com/ClickHouse/ClickHouse/pull/29071) ([小路](https://github.com/nicelulu)).
* `CREATE ... AS SELECT` 쿼리의 설정이 적용되도록 했습니다(수정: [#28810](https://github.com/ClickHouse/ClickHouse/issues/28810)). [#28962](https://github.com/ClickHouse/ClickHouse/pull/28962) ([Azat Khuzhin](https://github.com/azat)).
* ALTER TABLE ... ON CLUSTER ... REPLACE/MOVE PARTITION FROM/TO ...에서 기본 데이터베이스 설정을 따르도록 개선했습니다. [#28955](https://github.com/ClickHouse/ClickHouse/pull/28955) ([anneji-dev](https://github.com/anneji-dev)).
* gRPC 프로토콜: 클라이언트에서 서버 측 Compression을 변경할 수 있도록 지원합니다. [#28953](https://github.com/ClickHouse/ClickHouse/pull/28953) ([Vitaly Baranov](https://github.com/vitlibar)).
* 비동기 메트릭을 위해 온도 센서를 읽을 때 발생하는 "no data" 예외를 건너뜁니다. 이로써 [#28852](https://github.com/ClickHouse/ClickHouse/issues/28852)가 해결되었습니다. [#28882](https://github.com/ClickHouse/ClickHouse/pull/28882) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 드문 경우 기존 딕셔너리에서 `Dictionary not found` 오류가 발생할 수 있던 논리적 race condition을 수정했습니다. [#28853](https://github.com/ClickHouse/ClickHouse/pull/28853) ([tavplubix](https://github.com/tavplubix)).
* If-combinator 검사에서 중첩 함수 제한을 완화합니다(단, 동일한 combinator의 중첩 사용은 금지합니다). [#28828](https://github.com/ClickHouse/ClickHouse/pull/28828) ([Azat Khuzhin](https://github.com/azat)).
* server 종료 시 발생할 수 있는 처리되지 않은 예외를 수정했습니다. [#28761](https://github.com/ClickHouse/ClickHouse/pull/28761) ([Azat Khuzhin](https://github.com/azat)).
* mutation/머지가 비정상적으로 오래 걸릴 경우, 활성 mutation/머지에서 사용할 수 있는 tmp 디렉터리 정리를 금지합니다. [#28760](https://github.com/ClickHouse/ClickHouse/pull/28760) ([Azat Khuzhin](https://github.com/azat)).
* 별칭 사용 시 `optimize_arithmetic_operations_in_aggregate_functions = 1` 최적화를 허용합니다. [#28746](https://github.com/ClickHouse/ClickHouse/pull/28746) ([Amos Bird](https://github.com/amosbird)).
* `ReplicatedMergeTree`에 `detach_not_byte_identical_parts` 설정을 구현하여, 바이트 단위로 동일하지 않은 파트를 제거하는 대신 분리하도록 했습니다(머지/뮤테이션 후). [#28708](https://github.com/ClickHouse/ClickHouse/pull/28708) ([Azat Khuzhin](https://github.com/azat)).
* `MergeTree`에 `max_suspicious_broken_parts_bytes` 설정을 추가했습니다(손상된 모든 파트의 총 크기를 제한하며, 기본값은 `1GiB`입니다). [#28707](https://github.com/ClickHouse/ClickHouse/pull/28707) ([Azat Khuzhin](https://github.com/azat)).
* `RabbitMQ` 테이블 설정에서 매크로를 확장할 수 있도록 했습니다. [#28683](https://github.com/ClickHouse/ClickHouse/pull/28683) ([Vitaly Baranov](https://github.com/vitlibar)).
* `Log` 엔진을 사용하는 테이블에서 여러 스레드로 데이터를 읽을 수 있는 기능을 복원했습니다. [#28125](https://github.com/ClickHouse/ClickHouse/pull/28125) ([Vitaly Baranov](https://github.com/vitlibar)).
* JSON 함수에서 NULL 컬럼 처리의 비정상 동작을 수정했습니다. 이 변경으로 [#27930](https://github.com/ClickHouse/ClickHouse/issues/27930)이 해결됩니다. [#28012](https://github.com/ClickHouse/ClickHouse/pull/28012) ([Amos Bird](https://github.com/amosbird)).
* 컬럼과 별도로 스킵 인덱스의 Mark/Uncompressed cache 크기를 설정할 수 있게 했습니다. [#27961](https://github.com/ClickHouse/ClickHouse/pull/27961) ([Amos Bird](https://github.com/amosbird)).
* 다른 JOIN 타입과 함께 `USING`을 사용하는 JOIN을 혼합할 수 있도록 했습니다. [#23881](https://github.com/ClickHouse/ClickHouse/pull/23881) ([darkkeks](https://github.com/darkkeks)).
* Yandex Cloud S3의 스로틀링 대응을 위해 aws-sdk 서브모듈을 업데이트했습니다. [#30646](https://github.com/ClickHouse/ClickHouse/pull/30646) ([ianton-ru](https://github.com/ianton-ru)).
* gRPC 호출을 처리하는 동안 쿼리 처리가 끝날 때 쿼리 ID와 세션 ID를 해제하던 문제를 수정했습니다. [#29954](https://github.com/ClickHouse/ClickHouse/pull/29954) ([Vitaly Baranov](https://github.com/vitlibar)).
* 간헐적으로 실패하는 테스트를 해결하기 위해 `AccessControlManager` 종료 로직을 수정했습니다. [#29951](https://github.com/ClickHouse/ClickHouse/pull/29951) ([Vitaly Baranov](https://github.com/vitlibar)).
* `HDFS`에서 읽는 과정에서 발생하던 assertion 실패를 수정했습니다. 디버그 환경의 테스트에서 실행할 수 있도록 libhdfs3 라이브러리를 업데이트했습니다. [#29251](https://github.com/ClickHouse/ClickHouse/issues/29251)을 해결했습니다. [#27814](https://github.com/ClickHouse/ClickHouse/issues/27814)을 해결했습니다. [#29276](https://github.com/ClickHouse/ClickHouse/pull/29276) ([Kseniia Sumarokova](https://github.com/kssenii)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* Aarch64 머신용 FreeBSD 빌드 지원을 추가했습니다. [#29952](https://github.com/ClickHouse/ClickHouse/pull/29952) ([MikaelUrankar](https://github.com/MikaelUrankar)).
* 이제 ClickHouse에는 재귀적 서브모듈이 더 이상 필요하지 않습니다. [#30315](https://github.com/ClickHouse/ClickHouse/pull/30315) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* ClickHouse를 Musl로 정적 빌드할 수 있습니다. 이 기능은 Experimental로 추가되었으며, `odbc-bridge`, `library-bridge`, CatBoost 통합, 일부 라이브러리의 빌드는 지원하지 않습니다. [#30248](https://github.com/ClickHouse/ClickHouse/pull/30248) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `AArch64` 및 `Darwin`(macOS) 빌드에서 `Protobuf`, `Arrow`, `ORC`, `Parquet`를 활성화했습니다. 이로써 [#29248](https://github.com/ClickHouse/ClickHouse/issues/29248)이 해결됩니다. 이로써 [#28018](https://github.com/ClickHouse/ClickHouse/issues/28018)이 해결됩니다. [#30015](https://github.com/ClickHouse/ClickHouse/pull/30015) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* PowerPC(powerpc64le)용 크로스 빌드를 추가했습니다. 이로써 [#9589](https://github.com/ClickHouse/ClickHouse/issues/9589)가 해결됩니다. AArch64 및 PowerPC에서 MySQL과 상호 운용할 수 있도록 지원을 활성화했습니다. 이로써 [#26301](https://github.com/ClickHouse/ClickHouse/issues/26301)이 해결됩니다. [#30010](https://github.com/ClickHouse/ClickHouse/pull/30010) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 크로스 컴파일 툴체인에는 필요한 파일만 남기고, 이를 서브모듈로 포함했습니다(이전에는 tarball로 다운로드했습니다). [#29974](https://github.com/ClickHouse/ClickHouse/pull/29974) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* ClickHouse의 select statement parser에 구조 인식 퍼징 기법을 구현했습니다. [#30012](https://github.com/ClickHouse/ClickHouse/pull/30012) ([Paul](https://github.com/PaulCher)).
* 템플릿 코드의 컴파일 속도를 높이기 위해 clang에서 Experimental constexpr 표현식 평가기를 활성화했습니다. [#29668](https://github.com/ClickHouse/ClickHouse/pull/29668) ([myrrc](https://github.com/myrrc)).
* 새 심볼을 사용하지 않고도 더 최신 버전의 glibc로 컴파일할 수 있는 기능을 추가했습니다. [#29594](https://github.com/ClickHouse/ClickHouse/pull/29594) ([Azat Khuzhin](https://github.com/azat)).
* clang 최적화 옵션으로 Debug 빌드 바이너리 크기를 줄였습니다. [#28736](https://github.com/ClickHouse/ClickHouse/pull/28736) ([flynn](https://github.com/ucasfl)).
* 이제 CI용 모든 이미지는 별도의 dockerhub 저장소에 배치됩니다. [#28656](https://github.com/ClickHouse/ClickHouse/pull/28656) ([alesapin](https://github.com/alesapin)).
* clang-13 빌드 지원을 개선했습니다. [#28046](https://github.com/ClickHouse/ClickHouse/pull/28046) ([Sergei Semin](https://github.com/syominsergey)).
* `clickhouse-client`에 raw profile events를 출력하는 기능을 추가했습니다(디버깅 및 테스트에 유용할 수 있습니다). [#30064](https://github.com/ClickHouse/ClickHouse/pull/30064) ([Azat Khuzhin](https://github.com/azat)).
* clickhouse-server 유닛(systemd 및 sysvinit init)에 시간 의존성을 추가했습니다. [#28891](https://github.com/ClickHouse/ClickHouse/pull/28891) ([Azat Khuzhin](https://github.com/azat)).
* 심볼이 다시 로드되면 stacktrace cache도 다시 로드합니다. [#28137](https://github.com/ClickHouse/ClickHouse/pull/28137) ([Amos Bird](https://github.com/amosbird)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* `positionCaseInsensitiveUTF8` 및 `countSubstringsCaseInsensitiveUTF8`와 같은 UTF-8 string에서 대소문자를 구분하지 않고 검색하는 함수는 매우 드물게 실제로는 일치하지 않는 substring을 찾는 경우가 있었는데, 이 문제가 수정되었습니다. [#30663](https://github.com/ClickHouse/ClickHouse/pull/30663) ([tavplubix](https://github.com/tavplubix)).
* 암호화된 디스크에서 빈 파일을 읽을 때 발생하던 문제를 수정했습니다. [#30494](https://github.com/ClickHouse/ClickHouse/pull/30494) ([Vitaly Baranov](https://github.com/vitlibar)).
* 분산 쿼리에서 `legacy_column_name_of_tuple_literal = 0` 설정 시, 논리합 체인을 `IN`으로 변환하는 동작(설정 `optimize_min_equality_disjunction_chain_length`로 제어됨)을 수정했습니다. [#28658](https://github.com/ClickHouse/ClickHouse/pull/28658) ([Anton Popov](https://github.com/CurtizJ)).
* `insert_allow_materialized_columns=0`이어도 구체화된 컬럼을 분산 테이블의 세그먼트 분할 키로 사용할 수 있게 했습니다. [#28637](https://github.com/ClickHouse/ClickHouse/pull/28637) ([Vitaly Baranov](https://github.com/vitlibar)).
* `TO`와 `FROM`이 설정되어 있고 결과 집합에 행이 없는 경우의 `ORDER BY ... WITH FILL` 문제를 수정했습니다. [#30888](https://github.com/ClickHouse/ClickHouse/pull/30888) ([Anton Popov](https://github.com/CurtizJ)).
* 피연산자가 2개를 초과하는 AND/OR 표현식에서 Set 인덱스가 사용되지 않던 문제를 수정했습니다. 이로써 [#30416](https://github.com/ClickHouse/ClickHouse/issues/30416)이 해결됩니다. [#30887](https://github.com/ClickHouse/ClickHouse/pull/30887) ([Amos Bird](https://github.com/amosbird)).
* 해시 함수를 사용하는 프로젝션이 구체화될 때 발생하는 크래시를 수정했습니다. 이로써 [#30861](https://github.com/ClickHouse/ClickHouse/issues/30861)이 해결되었습니다. 이 문제는 [https://github.com/ClickHouse/ClickHouse/pull/28560](https://github.com/ClickHouse/ClickHouse/pull/28560) 와 유사하며, 헤더(header)가 비어 있어야 한다는 불변 조건을 제대로 이해하지 못해 발생했습니다. [#30877](https://github.com/ClickHouse/ClickHouse/pull/30877) ([Amos Bird](https://github.com/amosbird)).
* `ReplicatedMergeTree`에서 ZooKeeper 경로로부터 보조 ZooKeeper 이름을 추출할 때의 모호성을 해결했습니다. 이전에는 ZooKeeper 경로에 콜론이 포함되어 있으면 `Unknown auxiliary ZooKeeper name` 오류로 인해 서버가 시작되지 않을 수 있었습니다. [#29052](https://github.com/ClickHouse/ClickHouse/issues/29052)를 수정했습니다. 또한 이전에는 슬래시로 시작하지 않는 ZooKeeper 경로를 지정할 수 있었지만, 이제 이는 Deprecated 상태이며 이러한 경로로는 새 테이블을 생성할 수 없습니다. 또한 보조 ZooKeeper 이름에는 슬래시와 콜론을 사용할 수 없습니다. [#30822](https://github.com/ClickHouse/ClickHouse/pull/30822) ([tavplubix](https://github.com/tavplubix)).
* 어떤 이유로든 localBackup이 실패한 경우 임시 디렉터리를 정리합니다. [#30797](https://github.com/ClickHouse/ClickHouse/pull/30797) ([ianton-ru](https://github.com/ianton-ru)).
* 비복제 `MergeTree`에서 `REPLACE/MOVE PARTITION`과 백그라운드 머지 사이의 레이스 컨디션을 수정했습니다. 이 문제로 인해 이동되거나 대체된 데이터의 일부가 파티션에 남을 수 있었습니다. [#29327](https://github.com/ClickHouse/ClickHouse/issues/29327)을 수정했습니다. [#30717](https://github.com/ClickHouse/ClickHouse/pull/30717) ([tavplubix](https://github.com/tavplubix)).
* 항상 참인 PREWHERE의 경우 PREWHERE를 WHERE로 수정했습니다. [#30668](https://github.com/ClickHouse/ClickHouse/pull/30668) ([Azat Khuzhin](https://github.com/azat)).
* Limit push down 최적화 과정에서 `Cannot find column` 오류가 발생할 수 있었습니다. [#30438](https://github.com/ClickHouse/ClickHouse/issues/30438)를 수정했습니다. [#30562](https://github.com/ClickHouse/ClickHouse/pull/30562) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `IS [NOT] NULL`로 재작성할 때 `isNotNull`/`isNull`에 빠진 괄호를 추가했습니다(`isNotNull(1)+isNotNull(2)`와 같은 식이 있는 쿼리를 수정). [#30520](https://github.com/ClickHouse/ClickHouse/pull/30520) ([Azat Khuzhin](https://github.com/azat)).
* 동일한 테이블을 참조하는 스칼라 서브쿼리가 포함된 ALTER에서 발생하던 교착 상태를 수정하고, [#30461](https://github.com/ClickHouse/ClickHouse/issues/30461)을 해결했습니다. [#30492](https://github.com/ClickHouse/ClickHouse/pull/30492) ([Vladimir C](https://github.com/vdimir)).
* REPLACE PARTITION 실행 중 세션이 만료될 경우 발생할 수 있는 세그폴트를 수정했습니다. [#30432](https://github.com/ClickHouse/ClickHouse/pull/30432) ([tavplubix](https://github.com/tavplubix)).
* `IN (subquery)` 같은 조건이 있는 쿼리는 집계 프로젝션이 적용된 경우 잘못된 결과를 반환할 수 있었습니다. 프로젝션용 Set 생성 문제를 수정했습니다. [#30310](https://github.com/ClickHouse/ClickHouse/pull/30310) ([Amos Bird](https://github.com/amosbird)).
* 프로젝션이 활성화되었을 때 JOIN 쿼리의 컬럼 별칭 해석 문제를 수정했습니다. 이로써 [#30146](https://github.com/ClickHouse/ClickHouse/issues/30146) 문제가 해결되었습니다. [#30293](https://github.com/ClickHouse/ClickHouse/pull/30293) ([Amos Bird](https://github.com/amosbird)).
* `replaceRegexpAll` 함수의 일부 문제를 수정했습니다. [#30292](https://github.com/ClickHouse/ClickHouse/pull/30292) ([Memo](https://github.com/Joeywzr)).
* 레이아웃 설정에서 `preallocate` 옵션을 파싱하는 ComplexKeyHashedDictionary, ComplexKeySparseHashedDictionary의 문제를 수정했습니다. [#30246](https://github.com/ClickHouse/ClickHouse/pull/30246) ([Maksim Kita](https://github.com/kitaisreal)).
* `[I]LIKE` 함수 수정. [#28661](https://github.com/ClickHouse/ClickHouse/issues/28661) 문제를 해결합니다. [#30244](https://github.com/ClickHouse/ClickHouse/pull/30244) ([Nikolay Degterinsky](https://github.com/evillique)).
* multiIf에서 shortcircuit와 lowcardinality를 사용할 때 발생하던 크래시를 수정했습니다. [#30243](https://github.com/ClickHouse/ClickHouse/pull/30243) ([Raúl Marín](https://github.com/Algunenano)).
* FlatDictionary, HashedDictionary에서 널 허용 속성의 bytes\_allocated 계산을 수정했습니다. [#30238](https://github.com/ClickHouse/ClickHouse/pull/30238) ([Maksim Kita](https://github.com/kitaisreal)).
* 여러 조인에서 숫자로 시작하는 식별자의 사용을 허용합니다. [#30230](https://github.com/ClickHouse/ClickHouse/pull/30230) ([Vladimir C](https://github.com/vdimir)).
* `max_read_buffer_size = 0`인 `MergeTree`에서 읽을 때 발생하던 문제를 수정했습니다(사용자가 스스로 발등을 찍으려는 경우) (예외 `Can't adjust last granule`, `LOGICAL_ERROR`, 또는 데이터 손실까지 초래할 수 있습니다). [#30192](https://github.com/ClickHouse/ClickHouse/pull/30192) ([Azat Khuzhin](https://github.com/azat)).
* `min_bytes_to_use_direct_io` 사용 시 발생하던 `pread_fake_async`/`pread_threadpool` 문제를 수정했습니다. [#30191](https://github.com/ClickHouse/ClickHouse/pull/30191) ([Azat Khuzhin](https://github.com/azat)).
* INSERT SELECT가 널 허용 컬럼을 기준으로 MATERIALIZED 컬럼을 잘못 채우던 문제를 수정했습니다. [#30189](https://github.com/ClickHouse/ClickHouse/pull/30189) ([Azat Khuzhin](https://github.com/azat)).
* 함수 `initializeAggregation`에서 널 허용 인수를 지원하도록 했습니다. [#30177](https://github.com/ClickHouse/ClickHouse/pull/30177) ([Anton Popov](https://github.com/CurtizJ)).
* `GLOBAL IN` 및 `WITH TOTALS`를 사용하는 쿼리에서 `Port is already connected` 오류를 수정했습니다. 21.9 및 21.10에만 해당합니다. [#30086](https://github.com/ClickHouse/ClickHouse/pull/30086) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* MOVE PARTITION과 MergeTree의 머지/뮤테이션 간 경쟁 상태를 수정했습니다. [#30074](https://github.com/ClickHouse/ClickHouse/pull/30074) ([Azat Khuzhin](https://github.com/azat)).
* 삭제한 `Memory` 데이터베이스가 서버 재시작 후 다시 나타나는 문제가 수정되었습니다([#29795](https://github.com/ClickHouse/ClickHouse/issues/29795)). 또한 `Ordinary` 데이터베이스를 삭제할 때 `Directory not empty` 오류가 발생하는 경우의 우회책으로 `force_remove_data_recursively_on_drop` 설정이 추가되었습니다(클라우드 환경에서는 남아 있는 데이터를 수동으로 제거할 수 없기 때문입니다). [#30054](https://github.com/ClickHouse/ClickHouse/pull/30054) ([tavplubix](https://github.com/tavplubix)).
* `tuple()`로 인해 sample이 크래시되는 문제를 수정하고, [#30004](https://github.com/ClickHouse/ClickHouse/issues/30004)를 해결했습니다. [#30016](https://github.com/ClickHouse/ClickHouse/pull/30016) ([flynn](https://github.com/ucasfl)).
* 이슈 종료 시도: [#29965](https://github.com/ClickHouse/ClickHouse/issues/29965). [#29976](https://github.com/ClickHouse/ClickHouse/pull/29976) ([hexiaoting](https://github.com/hexiaoting)).
* `FileChecker`와 `StorageLog`/`StorageStripeLog` 사이에서 발생할 수 있는 데이터 레이스를 수정했습니다. [#29959](https://github.com/ClickHouse/ClickHouse/pull/29959) ([Azat Khuzhin](https://github.com/azat)).
* `StorageLog`에서 `LogSink::writeMarks()`와 `LogSource` 간 데이터 레이스를 수정했습니다. [#29946](https://github.com/ClickHouse/ClickHouse/pull/29946) ([Azat Khuzhin](https://github.com/azat)).
* [https://github.com/ClickHouse/ClickHouse/pull/19544에서](https://github.com/ClickHouse/ClickHouse/pull/19544에서) 도입된 MergeTree 테이블의 동시 쿼리 제한과 관련된 잠재적 리소스 누수를 수정했습니다. [#29879](https://github.com/ClickHouse/ClickHouse/pull/29879) ([Amos Bird](https://github.com/amosbird)).
* 시스템 테이블 재생성 검사 수정(enum 값 변경을 감지하지 못하는 문제). [#29857](https://github.com/ClickHouse/ClickHouse/pull/29857) ([Azat Khuzhin](https://github.com/azat)).
* MaterializedMySQL: MySQL과의 연결이 끊겼을 때 트랜잭션의 일부만 처리되던 문제를 수정했습니다. [#29837](https://github.com/ClickHouse/ClickHouse/pull/29837) ([Håvard Kvålen](https://github.com/havardk)).
* 커널의 버그로 추정되는 원인으로 인해 극히 드물게 발생할 수 있는 `Timeout exceeded: elapsed 18446744073.709553 seconds` 오류를 방지합니다. [#29154](https://github.com/ClickHouse/ClickHouse/issues/29154)를 수정했습니다. [#29811](https://github.com/ClickHouse/ClickHouse/pull/29811) ([tavplubix](https://github.com/tavplubix)).
* `ATTACH TABLE ... FROM 'path'` 쿼리에서 경로로 사용할 문자열 리터럴 대신 문자열이 아닌 리터럴을 사용할 때 발생하는 잘못된 형변환을 수정했습니다. 이 문제로 인해 초기화되지 않은 메모리를 읽을 수 있습니다. [#29790](https://github.com/ClickHouse/ClickHouse/pull/29790) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `GROUP BY` 수행 중 `LowCardinality`에 대한 동시 접근 문제를 수정했습니다(`Buffer` 테이블과 함께 사용하면 문제가 생길 수 있습니다). [#29782](https://github.com/ClickHouse/ClickHouse/pull/29782) ([Azat Khuzhin](https://github.com/azat)).
* 세그먼트에 `<= 21.3` 및 `>= 21.4` 버전이 혼재되어 있고, `GROUP BY` 키가 모두 고정 크기인 여러 컬럼으로 이루어져 있으며, 2단계 집계가 활성화된 경우(`group_by_two_level_threshold` 및 `group_by_two_level_threshold_bytes` 참조) 분산 쿼리에서 발생하던 잘못된 `GROUP BY`(결과에 동일한 키를 가진 여러 행이 나타나는 문제)를 수정했습니다. [#29580](https://github.com/ClickHouse/ClickHouse/issues/29580)을 수정합니다. [#29735](https://github.com/ClickHouse/ClickHouse/pull/29735) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 서버 재시작 시 `materialized_postgresql_tables_list` 설정이 잘못 동작하던 문제를 수정했습니다. [#28529](https://github.com/ClickHouse/ClickHouse/issues/28529)에서 발견되었습니다. [#29686](https://github.com/ClickHouse/ClickHouse/pull/29686) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 필터 프레디케이트의 조건이 push-down 최적화 후 유실될 수 있었습니다. [#29625](https://github.com/ClickHouse/ClickHouse/pull/29625) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 별칭 및 단락 평가식 처리 시 발생하던 JIT 표현식 컴파일 문제를 수정했습니다. [#29403](https://github.com/ClickHouse/ClickHouse/issues/29403)를 해결했습니다. [#29574](https://github.com/ClickHouse/ClickHouse/pull/29574) ([Maksim Kita](https://github.com/kitaisreal)).
* `DEFAULT` 표현식에서 `x.y.z...`와 같은 잘못된 테이블 식별자를 사용할 때 `ALTER MODIFY` 쿼리에서 드물게 발생하던 segfault를 수정했습니다. [#29184](https://github.com/ClickHouse/ClickHouse/issues/29184)를 해결했습니다. [#29573](https://github.com/ClickHouse/ClickHouse/pull/29573) ([alesapin](https://github.com/alesapin)).
* `GROUP BY WITH TOTALS HAVING`에서 nullptr 역참조 문제를 수정했습니다(`HAVING`의 컬럼이 선택되지 않은 경우). [#29553](https://github.com/ClickHouse/ClickHouse/pull/29553) ([Azat Khuzhin](https://github.com/azat)).
* Join 테이블 엔진의 테이블에서 읽기와 쓰기를 동시에 수행할 때 발생하는 교착 상태를 방지합니다. [#29544](https://github.com/ClickHouse/ClickHouse/pull/29544) ([Raúl Marín](https://github.com/Algunenano)).
* `pathStartsWith` 검사에서 `std::mismatch` 사용과 관련된 문제를 수정했습니다. 이는 ` The behavior is undefined if the second range is shorter than the first range.` 때문입니다. [#29531](https://github.com/ClickHouse/ClickHouse/pull/29531) ([Kseniia Sumarokova](https://github.com/kssenii)).
* ODBC bridge에 오류 Invalid cursor state에 대한 재시도 기능을 추가했습니다. 이 오류는 재시도 가능한 오류입니다. [#29473](https://github.com/ClickHouse/ClickHouse/issues/29473)를 해결합니다. [#29518](https://github.com/ClickHouse/ClickHouse/pull/29518) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `Lazy` 데이터베이스를 로드할 때 테이블 이름이 잘못 파싱되던 문제를 수정했습니다. [#29456](https://github.com/ClickHouse/ClickHouse/issues/29456) 문제를 해결합니다. [#29476](https://github.com/ClickHouse/ClickHouse/pull/29476) ([tavplubix](https://github.com/tavplubix)).
* 푸시다운된 `HAVING` 프레디케이트가 있는 서브쿼리에서 발생할 수 있는 `Block structure mismatch` 문제를 수정했습니다. [#29010](https://github.com/ClickHouse/ClickHouse/issues/29010). [#29475](https://github.com/ClickHouse/ClickHouse/pull/29475) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 함수 greatest/least의 논리 오류 `Cannot capture columns`를 수정합니다. [#29334](https://github.com/ClickHouse/ClickHouse/issues/29334)를 해결합니다. [#29454](https://github.com/ClickHouse/ClickHouse/pull/29454) ([Kruglov Pavel](https://github.com/Avogar)).
* RocksDB 테이블 엔진: 여러 DB를 여는 과정에서 발생하는 race condition을 수정하고, CI에서 이 문제를 유발하는 일부 테스트도 다시 되살렸습니다. [#29393](https://github.com/ClickHouse/ClickHouse/pull/29393) ([Azat Khuzhin](https://github.com/azat)).
* 구성이 잘못된 경우 복제된 access storage가 정상적으로 종료되지 않는 문제를 수정했습니다. [#29388](https://github.com/ClickHouse/ClickHouse/pull/29388) ([Kevin Michel](https://github.com/kmichel-aiven)).
* 메모리 안전성을 보장할 수 없으므로 윈도 함수 `nth_value`를 제거했습니다. 이로써 [#29347](https://github.com/ClickHouse/ClickHouse/issues/29347)이 해결되었습니다. [#29348](https://github.com/ClickHouse/ClickHouse/pull/29348) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 프로젝션 파트의 수직 병합을 수정했습니다. 이로써 [#29253](https://github.com/ClickHouse/ClickHouse/issues/29253) 문제가 해결됩니다. 또한 이 PR에서는 [https://github.com/ClickHouse/ClickHouse/pull/25165](https://github.com/ClickHouse/ClickHouse/pull/25165) 에서 도입된 여러 프로젝션 머지/mutation 문제도 해결했습니다. [#29337](https://github.com/ClickHouse/ClickHouse/pull/29337) ([Amos Bird](https://github.com/amosbird)).
* 새 레플리카를 추가하는 동안 복제된 데이터베이스에서 DDL 쿼리가 멈춰 있는 문제를 수정했습니다. [#29328](https://github.com/ClickHouse/ClickHouse/pull/29328) ([Kevin Michel](https://github.com/kmichel-aiven)).
* 연결 타임아웃(`send_timeout`/`receive_timeout`) 문제를 수정했습니다. [#29282](https://github.com/ClickHouse/ClickHouse/pull/29282) ([Azat Khuzhin](https://github.com/azat)).
* 테이블 컬럼 중 하나에 대소문자를 구분하지 않는 함수를 사용하는 기본 표현식이 있을 때, `ReplicatedMergeTree`의 새 레플리카를 생성하거나 기존 레플리카를 다시 만드는 과정에서 발생할 수 있는 `Table columns structure in ZooKeeper is different from local table structure` 예외를 수정했습니다. [#29266](https://github.com/ClickHouse/ClickHouse/pull/29266) ([Anton Popov](https://github.com/CurtizJ)).
* `Database doesn't exist error` (`UNKNOWN_DATABASE`)를 `Attempt to read after eof` (`ATTEMPT_TO_READ_AFTER_EOF`) 대신 일반적인 오류로 클라이언트에(TCP를 통해) 전송합니다. [#29229](https://github.com/ClickHouse/ClickHouse/pull/29229) ([Azat Khuzhin](https://github.com/azat)).
* Avro 입력 형식에서 LowCardinality(Nullable) 타입의 컬럼에 삽입할 때 발생하던 segfault를 수정했습니다. [#29132](https://github.com/ClickHouse/ClickHouse/pull/29132) ([Kruglov Pavel](https://github.com/Avogar)).
* 서버 간 시크릿을 사용하는 경우 이전 자격 증명이 재사용되지 않도록 했습니다(이전에는 해당 cluster에 서버 간 시크릿이 구성된 분산 테이블로 Buffer/Kafka를 통해 INSERT하기 전에 해당 connection에 대해 이전에 설정된 사용자가 재사용될 수 있었습니다). [#29060](https://github.com/ClickHouse/ClickHouse/pull/29060) ([Azat Khuzhin](https://github.com/azat)).
* 딕셔너리와 조인할 때 `any_join_distinct_right_table_keys`를 처리하고 [#29007](https://github.com/ClickHouse/ClickHouse/issues/29007)을 해결합니다. [#29014](https://github.com/ClickHouse/ClickHouse/pull/29014) ([Vladimir C](https://github.com/vdimir)).
* alias 컬럼으로 join할 때 발생하던 "Not found column ... in block" 오류를 수정하고 [#26980](https://github.com/ClickHouse/ClickHouse/issues/26980)을 해결했습니다. [#29008](https://github.com/ClickHouse/ClickHouse/pull/29008) ([Vladimir C](https://github.com/vdimir)).
* `GLOBAL IN` 서브쿼리에서 사용되는 스레드 수를 수정했습니다([#19414](https://github.com/ClickHouse/ClickHouse/issues/19414) 버그 수정 이후 단일 스레드로 실행되어 왔습니다). [#28997](https://github.com/ClickHouse/ClickHouse/pull/28997) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* ORDER BY에 WITH FILL이 포함된 경우의 잘못된 최적화를 수정했습니다. 이로써 [#28908](https://github.com/ClickHouse/ClickHouse/issues/28908)이 해결되었습니다. 이로써 [#26049](https://github.com/ClickHouse/ClickHouse/issues/26049)가 해결되었습니다. [#28910](https://github.com/ClickHouse/ClickHouse/pull/28910) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 상수(const) 사용 시 발생하던 고차 배열 함수 문제(`arrayCompact`의 `SIGSEGV`, `arrayDifference`/`arrayCumSumNonNegative`의 `ILLEGAL_COLUMN`)를 수정했습니다. [#28904](https://github.com/ClickHouse/ClickHouse/pull/28904) ([Azat Khuzhin](https://github.com/azat)).
* `mutations_sync=2`에서 뮤테이션 대기 문제가 수정되었습니다. [#28889](https://github.com/ClickHouse/ClickHouse/pull/28889) ([Azat Khuzhin](https://github.com/azat)).
* 여러 컬럼이 포함된 IN 조건(예: `(k,v) IN ((1, 2))`)이 있는 외부 데이터베이스(예: MySQL) 쿼리 문제를 수정했습니다. [#28888](https://github.com/ClickHouse/ClickHouse/pull/28888) ([Azat Khuzhin](https://github.com/azat)).
* `LowCardinality`의 단락 평가 함수 실행 관련 버그를 수정했습니다. [#28884](https://github.com/ClickHouse/ClickHouse/issues/28884)를 해결합니다. [#28887](https://github.com/ClickHouse/ClickHouse/pull/28887) ([Kruglov Pavel](https://github.com/Avogar)).
* compact 파트의 서브컬럼 읽기 문제를 수정했습니다. [#28873](https://github.com/ClickHouse/ClickHouse/pull/28873) ([Anton Popov](https://github.com/CurtizJ)).
* `DROP PART`와 `REPLACE/MOVE PARTITION` 사이의 경쟁 상태를 수정하여, 드문 경우 레플리카 간 불일치가 발생할 수 있던 문제를 해결했습니다. [#28864](https://github.com/ClickHouse/ClickHouse/pull/28864) ([tavplubix](https://github.com/tavplubix)).
* 단락 평가가 적용된 표현식의 컴파일을 수정했습니다. [#28821](https://github.com/ClickHouse/ClickHouse/pull/28821) ([Azat Khuzhin](https://github.com/azat)).
* 모든 레플리카를 강제 재부팅한 후 ReplicatedMergeTree 레플리카 간 데이터가 서로 불일치할 수 있는 매우 드문 경우를 수정했습니다. 오류는 `Part ... intersects (previous|next) part ...`와 같이 표시됩니다. [#28817](https://github.com/ClickHouse/ClickHouse/pull/28817) ([alesapin](https://github.com/alesapin)).
* connection 사용 가능 여부를 더 잘 확인하고, 만일에 대비해 `RabbitMQ` 종료 시 발생하는 예외도 포착하도록 개선했습니다. [#28797](https://github.com/ClickHouse/ClickHouse/pull/28797) ([Kseniia Sumarokova](https://github.com/kssenii)).
* ReplicatedMergeTreeQueue의 경미한 경쟁 상태를 수정했습니다. 사용자에게는 보이지 않지만, 미묘한 버그로 이어질 수 있습니다. [#28734](https://github.com/ClickHouse/ClickHouse/pull/28734) ([alesapin](https://github.com/alesapin)).
* 예외 발생 시 부분적으로 생성된 집계 프로젝션이 있는 `SELECT`에서 발생할 수 있는 충돌을 수정했습니다. [#28700](https://github.com/ClickHouse/ClickHouse/pull/28700) ([Amos Bird](https://github.com/amosbird)).
* 전달된 매개변수가 잘못되었을 때 분산 테이블 생성 중 발생하던 코어 덤프 문제를 수정했습니다. [#28686](https://github.com/ClickHouse/ClickHouse/pull/28686) ([Zhiyong Wang](https://github.com/ljcui)).
* system.processes 테이블에 Settings.Names 및 Settings.Values 별칭을 추가했습니다. [#28685](https://github.com/ClickHouse/ClickHouse/pull/28685) ([Vitaly](https://github.com/orloffv)).
* S2 Geometry 라이브러리 지원: `s2RectAdd` 및 `s2RectContains` 함수에 필요한 인수 개수를 바로잡았습니다. [#28663](https://github.com/ClickHouse/ClickHouse/pull/28663) ([Bharat Nallan](https://github.com/bharatnc)).
* Nullable 또는 LowCardinality 기본 키를 사용할 때 잘못된 상수 타입 변환이 발생하는 문제를 수정했습니다. [#28636](https://github.com/ClickHouse/ClickHouse/pull/28636) ([Amos Bird](https://github.com/amosbird)).
* PREWHERE에서 "컬럼이 집계 함수에 포함되지 않고 GROUP BY에도 없는" 문제를 수정했습니다(Fixes: [#28461](https://github.com/ClickHouse/ClickHouse/issues/28461)). [#28502](https://github.com/ClickHouse/ClickHouse/pull/28502) ([Azat Khuzhin](https://github.com/azat)).

<div id="clickhouse-release-v2110-2021-10-16">
  ### ClickHouse 릴리스 v21.10, 2021-10-16. [프레젠테이션](https://presentations.clickhouse.com/2021-release-21.10/), [비디오](https://www.youtube.com/watch?v=b9MeoOtAivQ)
</div>

<Frame>
  <iframe src="https://www.youtube.com/embed/b9MeoOtAivQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen />
</Frame>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* 이제 다음 MergeTree 테이블 수준 설정인 `replicated_max_parallel_sends`, `replicated_max_parallel_sends_for_table`, `replicated_max_parallel_fetches`, `replicated_max_parallel_fetches_for_table`은 더 이상 아무런 역할을 하지 않습니다. 이 설정들은 애초에 제대로 동작하지 않았으며, `max_replicated_fetches_network_bandwidth`, `max_replicated_sends_network_bandwidth`, `background_fetches_pool_size`로 대체되었습니다. [#28404](https://github.com/ClickHouse/ClickHouse/pull/28404) ([alesapin](https://github.com/alesapin)).

<div id="new-feature">
  #### 새로운 기능
</div>

* 람다 표현식으로 사용자 정의 함수(UDF)를 생성하는 기능이 추가되었습니다. 구문은 `CREATE FUNCTION {function_name} as ({parameters}) -> {function core}`입니다. 예시: `CREATE FUNCTION plus_one as (a) -> a + 1`. 작성자: @Realist007. [#27796](https://github.com/ClickHouse/ClickHouse/pull/27796) ([Maksim Kita](https://github.com/kitaisreal)) [#23978](https://github.com/ClickHouse/ClickHouse/pull/23978) ([Realist007](https://github.com/Realist007)).
* `Executable` 스토리지 엔진과 `executable` 테이블 함수가 추가되었습니다. 이를 통해 외부 스크립트를 사용해 데이터를 스트리밍 방식으로 처리할 수 있습니다. [#28102](https://github.com/ClickHouse/ClickHouse/pull/28102) ([Maksim Kita](https://github.com/kitaisreal)) ([ruct](https://github.com/ruct)).
* `ExecutablePool` 스토리지 엔진이 추가되었습니다. `Executable`과 비슷하지만 장시간 실행되는 프로세스 풀을 사용합니다. [#28518](https://github.com/ClickHouse/ClickHouse/pull/28518) ([Maksim Kita](https://github.com/kitaisreal)).
* `ALTER TABLE ... MATERIALIZE COLUMN` 쿼리가 추가되었습니다. [#27038](https://github.com/ClickHouse/ClickHouse/pull/27038) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `s3` 테이블 함수에 대한 파티션별 쓰기를 지원합니다. [#23051](https://github.com/ClickHouse/ClickHouse/pull/23051) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 데이터 가져오기/내보내기용 `lz4` 압축 포맷을 지원합니다(`gz`, `bz2`, `xz`, `zstd` 외 추가 지원). [#25310](https://github.com/ClickHouse/ClickHouse/pull/25310) ([Bharat Nallan](https://github.com/bharatnc)).
* `enable_positional_arguments` 설정에서 위치 인수를 허용합니다. [#2592](https://github.com/ClickHouse/ClickHouse/issues/2592)를 해결합니다. [#27530](https://github.com/ClickHouse/ClickHouse/pull/27530) ([Kseniia Sumarokova](https://github.com/kssenii)).
* s3 테이블에 대한 `CREATE` 쿼리의 `SETTINGS` 절에서 파일 포맷 관련 사용자 설정을 허용합니다. 이 변경으로 [#27580](https://github.com/ClickHouse/ClickHouse/issues/27580)가 해결됩니다. [#28037](https://github.com/ClickHouse/ClickHouse/pull/28037) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `RabbitMQ` 엔진에 SSL 연결을 허용합니다. [#28365](https://github.com/ClickHouse/ClickHouse/pull/28365) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 서버 포트를 가져올 수 있도록 `getServerPort` 함수가 추가되었습니다. 해당 포트를 서버가 사용하지 않는 경우 예외를 발생시킵니다. [#27900](https://github.com/ClickHouse/ClickHouse/pull/27900) ([Amos Bird](https://github.com/amosbird)).
* "snowflake id"와 `DateTime`, `DateTime64` 간의 변환 함수를 추가했습니다. [#27058](https://github.com/ClickHouse/ClickHouse/issues/27058)을 참조하십시오. [#27704](https://github.com/ClickHouse/ClickHouse/pull/27704) ([jasine](https://github.com/jasine)).
* `SHA512` 함수가 추가되었습니다. [#27830](https://github.com/ClickHouse/ClickHouse/pull/27830) ([zhanglistar](https://github.com/zhanglistar)).
* `log_queries_probability` 설정을 통해 query\_log에 쿼리의 sample만 기록할 수 있습니다. [#16609](https://github.com/ClickHouse/ClickHouse/issues/16609)를 해결합니다. [#27527](https://github.com/ClickHouse/ClickHouse/pull/27527) ([Nikolay Degterinsky](https://github.com/evillique)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* 정적 파일 형태로 웹 서버에 읽기 전용 테이블을 저장할 수 있는 `web` 디스크 유형입니다. [#23982](https://github.com/ClickHouse/ClickHouse/issues/23982)를 참조하십시오. [#25251](https://github.com/ClickHouse/ClickHouse/pull/25251) ([Kseniia Sumarokova](https://github.com/kssenii)). 이 기능은 주로 공유 스토리지 작업 테스트를 쉽게 하고 데이터셋을 손쉽게 가져오기 위해 필요합니다. 21.11 릴리스 전에는 사용을 권장하지 않습니다.
* 새로운 명령 `BACKUP` 및 `RESTORE`가 추가되었습니다. [#21945](https://github.com/ClickHouse/ClickHouse/pull/21945) ([Vitaly Baranov](https://github.com/vitlibar)). 이 기능은 아직 개발 중이며 현재 버전에서 사용하도록 설계되지 않았습니다.

<div id="performance-improvement">
  #### 성능 개선
</div>

* `sumIf` 및 `countIf` 집계 함수의 성능을 향상했습니다. [#28272](https://github.com/ClickHouse/ClickHouse/pull/28272) ([Raúl Marín](https://github.com/Algunenano)).
* `minmax` 인덱스를 위한 가상 프로젝션을 생성합니다. 이제 `allow_experimental_projection_optimization`이 활성화되면, 가능한 경우 쿼리가 데이터를 읽는 대신 minmax 인덱스를 사용합니다. [#26286](https://github.com/ClickHouse/ClickHouse/pull/26286) ([Amos Bird](https://github.com/amosbird)).
* `sequenceMatch` 및 `sequenceCount`에 두 가지 검사를 도입해, 시퀀스 패턴의 결정적 부분 일부가 이벤트 목록에 없을 때 조기에 종료할 수 있도록 했습니다. 이 변경으로 이전에는 연산 한도에 도달해 실패하던 많은 쿼리를 처리할 수 있게 되었고, 전반적으로 파이프라인 속도도 향상되었습니다. [#27729](https://github.com/ClickHouse/ClickHouse/pull/27729) ([Jakub Kuklis](https://github.com/jkuklis)).
* 이항 함수, 특히 0이 아닌 상수에 대한 나눗셈의 항상 단조(monotonic) 정보를 활용해 프라이머리 키 분석을 강화했습니다. [#28302](https://github.com/ClickHouse/ClickHouse/pull/28302) ([Amos Bird](https://github.com/amosbird)).
* `hasAll` 필터 조건이 블룸 필터 데이터 스키핑 인덱스를 활용하도록 개선했습니다. [#27984](https://github.com/ClickHouse/ClickHouse/pull/27984) ([Braulio Valdivielso Martínez](https://github.com/BraulioVM)).
* 테이블 시작 프로세스를 지연시켜 데이터 파트 로딩 속도를 높였습니다. [#28313](https://github.com/ClickHouse/ClickHouse/pull/28313) ([Amos Bird](https://github.com/amosbird)).
* `WHERE`에서 `PREWHERE`로 이동되는 조건 수가 과도하게 많아질 수 있던 문제를 수정했습니다(`optimize_move_to_prewhere` 설정으로 제어되는 최적화). [#28139](https://github.com/ClickHouse/ClickHouse/pull/28139) ([lthaooo](https://github.com/lthaooo)).
* `optimize_distributed_group_by_sharding_key`를 기본적으로 활성화했습니다. [#28105](https://github.com/ClickHouse/ClickHouse/pull/28105) ([Azat Khuzhin](https://github.com/azat)).

<div id="improvement">
  #### 개선 사항
</div>

* `Distributed` 테이블을 생성하기 전에 cluster 이름을 확인하여, 잘못된 cluster 이름으로는 테이블을 생성할 수 없도록 했습니다. [#27832](https://github.com/ClickHouse/ClickHouse/issues/27832)을 수정했습니다. [#27927](https://github.com/ClickHouse/ClickHouse/pull/27927) ([tavplubix](https://github.com/tavplubix)).
* 다른 quantile...Weighted 함수와 마찬가지로 집계 함수 `quantileBFloat16Weighted`가 추가되었습니다. 이로써 [#27745](https://github.com/ClickHouse/ClickHouse/issues/27745)가 해결되었습니다. [#27758](https://github.com/ClickHouse/ClickHouse/pull/27758) ([Ivan Novitskiy](https://github.com/RedClusive)).
* 빈 속성 목록으로 Dictionaries를 생성할 수 있게 했습니다. [#27905](https://github.com/ClickHouse/ClickHouse/pull/27905) ([Maksim Kita](https://github.com/kitaisreal)).
* 비밀번호를 재설정하는 방법에 대한 대화형 문서를 `clickhouse-client`에 추가했습니다. 사용자가 ClickHouse를 설치하고 비밀번호를 설정한 직후 바로 잊어버리는 경우에 유용합니다. [#27750](https://github.com/ClickHouse/ClickHouse/issues/27750)를 참조하십시오. [#27903](https://github.com/ClickHouse/ClickHouse/pull/27903) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `JSONAsString` 입력 형식에서 데이터가 배열로 감싸진 경우를 지원합니다. [#25517](https://github.com/ClickHouse/ClickHouse/issues/25517)을 해결합니다. [#25633](https://github.com/ClickHouse/ClickHouse/pull/25633) ([Kruglov Pavel](https://github.com/Avogar)).
* `system.replicas` 테이블에 새 컬럼 `last_queue_update_exception`을 추가했습니다. [#26843](https://github.com/ClickHouse/ClickHouse/pull/26843) ([nvartolomei](https://github.com/nvartolomei)).
* 장애 조치 시 `MaterializedPostgreSQL` 테이블이 다시 연결되도록 지원합니다. [#28529](https://github.com/ClickHouse/ClickHouse/issues/28529)를 해결합니다. [#28614](https://github.com/ClickHouse/ClickHouse/pull/28614) ([Kseniia Sumarokova](https://github.com/kssenii)).
* server를 처음 시작할 때 고유한 서버 UUID를 생성합니다. [#20089](https://github.com/ClickHouse/ClickHouse/pull/20089) ([Bharat Nallan](https://github.com/bharatnc)).
* `MySQL` engine에 `connection_wait_timeout` 설정을 도입했습니다(기본값 5초, 0이면 대기하지 않음). [#28474](https://github.com/ClickHouse/ClickHouse/pull/28474) ([Azat Khuzhin](https://github.com/azat)).
* 잘못된 인수로 `MaterializedPostgreSQL`을 생성하지 못하도록 했습니다. [#28423](https://github.com/ClickHouse/ClickHouse/issues/28423)을 해결합니다. [#28430](https://github.com/ClickHouse/ClickHouse/pull/28430) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 수직 병합 시 미리 정의된 "rows\_sources" 대신 실제 tmp 파일을 사용합니다. 이렇게 하면 tmp 디스크에 불필요한 디렉터리가 생성되는 일을 방지할 수 있습니다. [#28299](https://github.com/ClickHouse/ClickHouse/pull/28299) ([Amos Bird](https://github.com/amosbird)).
* clickhouse-server.service에서 export env `LIBHDFS3_CONF`를 사용하는 대신 서버 구성에 `libhdfs3_conf`를 추가했습니다. 이는 HDFS와의 상호작용을 구성하기 위한 것입니다. [#28268](https://github.com/ClickHouse/ClickHouse/pull/28268) ([Zhichang Yu](https://github.com/yuzhichang)).
* 예기치 않은 예외(`Part %name% doesn't exist`)를 유발할 수 있는 Temporary 상태 파트의 제거 문제를 수정했습니다. [#23661](https://github.com/ClickHouse/ClickHouse/issues/23661)을 수정합니다. [#28221](https://github.com/ClickHouse/ClickHouse/pull/28221) [#28221](https://github.com/ClickHouse/ClickHouse/issues/28221)) ([Azat Khuzhin](https://github.com/azat)).
* `zookeeper_log.address`를 수정하고(이 PR의 첫 번째 패치 전에는 주소가 항상 `::`로 표시되었습니다), 이 컬럼에 대한 `getpeername(2)` 호출 횟수도 줄였습니다(`zookeeper_log`에 엔트리가 추가될 때마다 `getpeername()`이 호출되므로, 이를 방지하기 위해 이 주소를 zookeeper 클라이언트에 캐시합니다). [#28212](https://github.com/ClickHouse/ClickHouse/pull/28212) ([Azat Khuzhin](https://github.com/azat)).
* 연산자 `[]`의 인덱스와 `Map` 타입 키 간의 암시적 변환을 지원합니다(예: 서로 다른 `Int` 타입, `String`, `FixedString`). [#28096](https://github.com/ClickHouse/ClickHouse/pull/28096) ([Anton Popov](https://github.com/CurtizJ)).
* PostgreSQL 테이블 엔진 또는 테이블 함수에 삽입할 때 `ON CONFLICT` 절을 지원합니다. [#27727](https://github.com/ClickHouse/ClickHouse/issues/27727)을 해결합니다. [#28081](https://github.com/ClickHouse/ClickHouse/pull/28081) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 호환되는 데이터를 ATTACH할 수 있도록 `Enum` 데이터 타입에 대한 제한을 완화했습니다. [#26672](https://github.com/ClickHouse/ClickHouse/issues/26672)를 해결합니다. [#28028](https://github.com/ClickHouse/ClickHouse/pull/28028) ([Dmitry Novik](https://github.com/novikd)).
* 빈 집합(empty set)에서 상수 키로 그룹화할 때의 동작을 제어하는 설정 `empty_result_for_aggregation_by_constant_keys_on_empty_set`을 추가했습니다. 이는 [#6842](https://github.com/ClickHouse/ClickHouse/issues/6842)의 기존 동작을 복원하기 위한 것입니다. [#27932](https://github.com/ClickHouse/ClickHouse/pull/27932) ([Amos Bird](https://github.com/amosbird)).
* `replication_wait_for_inactive_replica_timeout` 설정이 추가되었습니다. 이 설정으로 비활성 레플리카가 `ALTER`/`OPTIMZE`/`TRUNCATE` 쿼리를 실행할 때까지 대기할 시간을 지정할 수 있습니다(기본값은 120초). `replication_alter_partitions_sync`가 2이고 일부 레플리카가 `replication_wait_for_inactive_replica_timeout`초를 넘도록 활성 상태가 아니면 `UNFINISHED` 예외가 발생합니다. [#27931](https://github.com/ClickHouse/ClickHouse/pull/27931) ([tavplubix](https://github.com/tavplubix)).
* `APPLY` 컬럼 변환기에서 2개 이상의 인수를 받는 함수를 적용할 수 있도록 람다 인수를 지원합니다. 이는 [#27877](https://github.com/ClickHouse/ClickHouse/issues/27877)를 위한 변경입니다. [#27901](https://github.com/ClickHouse/ClickHouse/pull/27901) ([Amos Bird](https://github.com/amosbird)).
* 기본값으로 `tcp_keep_alive_timeout`이 활성화됩니다. [#27882](https://github.com/ClickHouse/ClickHouse/pull/27882) ([Azat Khuzhin](https://github.com/azat)).
* 원격 서버가 비정상 종료된 경우 원격 쿼리 취소 기능을 개선했습니다. [#27881](https://github.com/ClickHouse/ClickHouse/pull/27881) ([Azat Khuzhin](https://github.com/azat)).
* 큰 S3 객체에는 Multipart copy upload를 사용합니다. [#27858](https://github.com/ClickHouse/ClickHouse/pull/27858) ([ianton-ru](https://github.com/ianton-ru)).
* 라이브러리 사전 경로에서 심볼릭 링크 순회를 허용합니다. [#27815](https://github.com/ClickHouse/ClickHouse/pull/27815) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 이제 `ALTER MODIFY COLUM` `T`를 `Nullable(T)`로 변경해도 mutation이 필요하지 않습니다. [#27787](https://github.com/ClickHouse/ClickHouse/pull/27787) ([victorgao](https://github.com/kafka1991)).
* 오류를 조용히 무시하지 않도록 하고 `ReadBufferFromS3`의 지연은 집계하지 않도록 했습니다. [#27484](https://github.com/ClickHouse/ClickHouse/pull/27484) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `ALTER ... MATERIALIZE TTL`이 실제 TTL 동작 없이 메타데이터만 다시 계산하도록 개선했습니다. [#27019](https://github.com/ClickHouse/ClickHouse/pull/27019) ([lthaooo](https://github.com/lthaooo)).
* EOF에 줄바꿈이 없어도 사용자 지정 최상위 도메인 목록을 읽을 수 있도록 했습니다. [#28213](https://github.com/ClickHouse/ClickHouse/pull/28213) ([Azat Khuzhin](https://github.com/azat)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* `carbon-clickhouse`에서 압축된 데이터를 읽을 때 '파일 끝 이후를 읽으려고 시도함(attempt to read after end of file)' 오류로 실패하던 문제를 수정했습니다. [#26149](https://github.com/ClickHouse/ClickHouse/issues/26149)를 해결했습니다. [#28150](https://github.com/ClickHouse/ClickHouse/pull/28150) ([FArthur-cmd](https://github.com/FArthur-cmd)).
* `ON CLUSTER` 절이 포함된 `GRANT WITH REPLACE` 문을 실행할 때 액세스 권한 부여를 확인하는 문제를 수정했습니다. 이 PR은 [#27001](https://github.com/ClickHouse/ClickHouse/pull/27701)의 수정 사항을 개선합니다. [#27983](https://github.com/ClickHouse/ClickHouse/pull/27983) ([Vitaly Baranov](https://github.com/vitlibar)).
* `LowCardinality(UUID)` 유형의 컬럼에서 `extremes = 1`을 사용해 SELECT할 수 있도록 했습니다. [#27918](https://github.com/ClickHouse/ClickHouse/pull/27918) ([Vitaly Baranov](https://github.com/vitlibar)).
* 음수에 대한 PostgreSQL 스타일 캐스트(`::` 연산자) 문제를 수정했습니다. [#27876](https://github.com/ClickHouse/ClickHouse/pull/27876) ([Anton Popov](https://github.com/CurtizJ)).
* [#26864](https://github.com/ClickHouse/ClickHouse/pull/26864) 이후 `NamedSessionStorage` 종료 처리를 수정했습니다. 이제 `NamedSessionStorage`에 저장된 session Context는 전역 Context를 파기하기 전에 먼저 파기됩니다. [#27875](https://github.com/ClickHouse/ClickHouse/pull/27875) ([Vitaly Baranov](https://github.com/vitlibar)).
* `windowFunnel` "strict" 모드 버그를 수정했습니다. 이로써 [#27469](https://github.com/ClickHouse/ClickHouse/issues/27469) 문제가 해결됩니다. [#27563](https://github.com/ClickHouse/ClickHouse/pull/27563) ([achimbab](https://github.com/achimbab)).
* `bzip2` 아카이브가 잘린 상태일 때 읽기 중 발생하던 무한 루프를 수정했습니다. [#28543](https://github.com/ClickHouse/ClickHouse/pull/28543) ([Azat Khuzhin](https://github.com/azat)).
* `MaterializedMySQL`의 내부 DDL에 대한 `DROP TABLE`에서 발생하는 UUID 중복 문제를 수정했습니다. MaterializedMySQL은 실험적 기능입니다. [#28533](https://github.com/ClickHouse/ClickHouse/pull/28533) ([Azat Khuzhin](https://github.com/azat)).
* `Nested` 컬럼과, 이름에 점이 있고 `Nested`와 동일한 접두사를 갖는 스칼라 컬럼이 함께 있는 테이블에서 select할 때 발생하던 `There is no subcolumn` 오류를 수정했습니다(예: `n.id UInt32, n.arr1 Array(UInt64), n.arr2 Array(UInt64)`). [#28531](https://github.com/ClickHouse/ClickHouse/pull/28531) ([Anton Popov](https://github.com/CurtizJ)).
* `ReplicatedVersionedCollapsingMergeTree`의 ALTER 후 `Existing table metadata in ZooKeeper differs in sorting key expression.` 오류가 발생할 수 있던 버그를 수정했습니다. [#28515](https://github.com/ClickHouse/ClickHouse/issues/28515)를 해결했습니다. [#28528](https://github.com/ClickHouse/ClickHouse/pull/28528) ([alesapin](https://github.com/alesapin)).
* 분산 DDL 큐를 백그라운드에서 처리할 때 발생할 수 있던 ZooKeeper watch 누수 가능성(경미한 문제)을 수정했습니다. [#26036](https://github.com/ClickHouse/ClickHouse/issues/26036)을 해결합니다. [#28446](https://github.com/ClickHouse/ClickHouse/pull/28446) ([tavplubix](https://github.com/tavplubix)).
* `MaterializedPostgreSQL` engine에서 테이블(table) 이름을 따옴표로 감싸지 않은 문제를 수정했습니다. [#28316](https://github.com/ClickHouse/ClickHouse/issues/28316)을 해결합니다. [#28433](https://github.com/ClickHouse/ClickHouse/pull/28433) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 널 허용 컬럼에서 JOIN되지 않은 행의 잘못된 동작을 수정했습니다. [#27691](https://github.com/ClickHouse/ClickHouse/issues/27691)을 해결했습니다. [#28349](https://github.com/ClickHouse/ClickHouse/pull/28349) ([vdimir](https://github.com/vdimir)).
* 모든 키 컬럼을 사용하지 않는 경우의 NOT-IN 인덱스 최적화를 수정했습니다. 이로써 [#28120](https://github.com/ClickHouse/ClickHouse/issues/28120)이 해결됩니다. [#28315](https://github.com/ClickHouse/ClickHouse/pull/28315) ([Amos Bird](https://github.com/amosbird)).
* 새 파트가 빈 파트로 대체되면서 발생한 겹치는 파트를 수정했습니다. [#28310](https://github.com/ClickHouse/ClickHouse/pull/28310) ([Azat Khuzhin](https://github.com/azat)).
* `ORDER BY` 및 `Merge` 테이블에서 설정 `optimize_read_in_order`가 활성화된 상태일 때 쿼리 결과가 일관되지 않게 나오던 문제를 수정했습니다. [#28266](https://github.com/ClickHouse/ClickHouse/pull/28266) ([Anton Popov](https://github.com/CurtizJ)).
* `Nullable(LowCardinality)` 유형의 쿼리에서 `extremes` 설정이 1로 지정된 경우, 초기화되지 않은 메모리를 읽을 수 있던 문제를 수정했습니다. [#28165](https://github.com/ClickHouse/ClickHouse/issues/28165)를 수정합니다. [#28205](https://github.com/ClickHouse/ClickHouse/pull/28205) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 프로젝션 관련 소규모 수정이 여러 건 적용되었습니다. 자세한 내용은 PR을 참조하십시오. [#28178](https://github.com/ClickHouse/ClickHouse/pull/28178) ([Amos Bird](https://github.com/amosbird)).
* Context/구성 리로더의 종료 순서가 잘못되어 종료 시 매우 드물게 발생하던 세그멘테이션 오류를 수정했습니다. [#28088](https://github.com/ClickHouse/ClickHouse/pull/28088) ([nvartolomei](https://github.com/nvartolomei)).
* 함수 `JSONExtract`에서 `Nullable(String)` 형식의 NULL 값 처리 방식을 수정했습니다. 이 수정으로 [#27929](https://github.com/ClickHouse/ClickHouse/issues/27929) 및 [#27930](https://github.com/ClickHouse/ClickHouse/issues/27930) 문제가 해결됩니다. 이 문제는 [https://github.com/ClickHouse/ClickHouse/pull/25452](https://github.com/ClickHouse/ClickHouse/pull/25452) 에서 도입되었습니다. [#27939](https://github.com/ClickHouse/ClickHouse/pull/27939) ([Amos Bird](https://github.com/amosbird)).
* 새로운 `clickhouse-keeper` 도구에 여러 수정 사항이 적용되었습니다. 클라이언트가 요청-응답보다 먼저 watch 응답을 받을 수 있는 드문 경우에 발생하던 `clickhouse-keeper` 버그를 수정했습니다. [#28197](https://github.com/ClickHouse/ClickHouse/pull/28197) ([alesapin](https://github.com/alesapin)). 하위 항목에 대한 `set` 요청으로 목록 watch(`getChildren`)가 트리거될 때 발생하던 `clickhouse-keeper`의 잘못된 동작을 수정했습니다. [#28190](https://github.com/ClickHouse/ClickHouse/pull/28190) ([alesapin](https://github.com/alesapin)). `clickhouse-keeper` 설정 변경으로 인해 로그가 유실되고 서버가 멈출 수 있던 드문 경우를 수정했습니다. [#28360](https://github.com/ClickHouse/ClickHouse/pull/28360) ([alesapin](https://github.com/alesapin)). `rotate_logs_interval`이 감소할 때 로그가 무한히 생성될 수 있는 `clickhouse-keeper` 버그를 수정했습니다. [#28152](https://github.com/ClickHouse/ClickHouse/pull/28152) ([alesapin](https://github.com/alesapin)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* Stress Test에서 Thread Fuzzer를 활성화했습니다. Thread Fuzzer는 thread 스케줄링의 더 다양한 순서를 테스트해 더 많은 잠재적 문제를 발견할 수 있게 해주는 ClickHouse 기능입니다. 이 변경으로 [#9813](https://github.com/ClickHouse/ClickHouse/issues/9813)이 해결되었습니다. 이 변경으로 [#9814](https://github.com/ClickHouse/ClickHouse/issues/9814)가 해결되었습니다. 이 변경으로 [#9515](https://github.com/ClickHouse/ClickHouse/issues/9515)가 해결되었습니다. 이 변경으로 [#9516](https://github.com/ClickHouse/ClickHouse/issues/9516)가 해결되었습니다. [#27538](https://github.com/ClickHouse/ClickHouse/pull/27538) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 테스트 환경용 새 로그 레벨 `test`를 추가했습니다. 기본 `trace`보다도 더 자세한 정보를 출력합니다. [#28559](https://github.com/ClickHouse/ClickHouse/pull/28559) ([alesapin](https://github.com/alesapin)).
* CMake 구성 단계에서 git status 정보를 출력합니다. [#28047](https://github.com/ClickHouse/ClickHouse/pull/28047) ([Braulio Valdivielso Martínez](https://github.com/BraulioVM)).
* ubuntu apt 리포지토리를 일시적으로 ru.archive.ubuntu.com 미러로 전환했습니다. 기본 리포지토리인 archive.ubuntu.com이 CI 환경에서 응답하지 않기 때문입니다. [#28016](https://github.com/ClickHouse/ClickHouse/pull/28016) ([Ilya Yatsishin](https://github.com/qoega)).

<div id="clickhouse-release-v219-2021-09-09">
  ### ClickHouse 릴리스 v21.9, 2021-09-09
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* `Decimal` 타입의 텍스트 표현에서 후행 0을 출력하지 않습니다. 예시: scale이 6인 decimal은 `1.230000` 대신 `1.23`으로 출력됩니다. 이 변경으로 [#15794](https://github.com/ClickHouse/ClickHouse/issues/15794)가 해결됩니다. 애플리케이션이 어떤 방식으로든 후행 0에 의존하고 있었다면 약간의 비호환성이 발생할 수 있습니다. 출력 형식의 serialization은 `output_format_decimal_trailing_zeros` 설정으로 제어할 수 있습니다. `toString` 구현과 `String`으로 캐스팅하는 동작은 조건 없이 변경됩니다. [#27680](https://github.com/ClickHouse/ClickHouse/pull/27680) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 상태가 다른 매개변수를 사용하는 집계 함수로 생성된 경우, 해당 집계 함수 상태에 `-Merge` combinator가 적용된 매개변수형 집계 함수를 적용할 수 없도록 변경했습니다. 예를 들어 `fooState(42)(x)`의 상태는 `fooMerge(s)` 또는 `fooMerge(123)(s)`로 finalize할 수 없으며, `fooMerge(42)(s)`처럼 매개변수를 명시적으로 지정해야 하고 그 값도 같아야 합니다. 이는 finalize에만 매개변수를 사용하는 `quantile`, `sequence*` 등의 일부 특수 집계 함수에는 영향을 주지 않습니다. [#26847](https://github.com/ClickHouse/ClickHouse/pull/26847) ([tavplubix](https://github.com/tavplubix)).
* clickhouse-local에서는 포트가 있는 로컬 주소를 항상 원격 주소로 처리합니다. [#26736](https://github.com/ClickHouse/ClickHouse/pull/26736) ([Raúl Marín](https://github.com/Algunenano)).
* 일부 복잡한 쿼리에서 컬럼 alias가 표현식 이름과 동일할 경우 잘못된 cast가 발생할 수 있던 문제를 수정했습니다. 이 변경으로 [#25447](https://github.com/ClickHouse/ClickHouse/issues/25447)가 해결됩니다. 또한 [#26914](https://github.com/ClickHouse/ClickHouse/issues/26914)도 해결됩니다. 이 수정은 하위 호환되지 않을 수 있습니다. 이름이 같은 서로 다른 표현식이 있으면 예외가 발생합니다. `enable_optimize_predicate_expression`이 설정된 일부 드문 경우에는 문제가 될 수 있습니다. [#26639](https://github.com/ClickHouse/ClickHouse/pull/26639) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 스칼라 subquery는 해당 타입이 `널 허용`일 수 있으면 항상 `널 허용` 결과를 반환합니다. 빈 subquery의 결과는 `Null`이어야 하므로 이 변경이 필요합니다. 이전에는 호환되지 않는 타입에 대한 오류가 발생할 수 있었습니다(타입 추론은 스칼라 subquery를 실행하지 않으므로 널 비허용 타입을 사용할 수 있었습니다). 빈 결과를 반환하는 스칼라 subquery 중 `널 허용`로 변환할 수 없는 것(`Array` 또는 `Tuple` 등)은 이제 오류를 발생시킵니다. [#25411](https://github.com/ClickHouse/ClickHouse/issues/25411)을 수정합니다. [#26423](https://github.com/ClickHouse/ClickHouse/pull/26423) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* here document용 구문을 도입했습니다. 예시 `SELECT $doc$ VALUE $doc$`. [#26671](https://github.com/ClickHouse/ClickHouse/pull/26671) ([Maksim Kita](https://github.com/kitaisreal)). 이 변경은 쿼리에 `$`를 포함한 식별자가 있는 경우 하위 호환되지 않습니다 [#28768](https://github.com/ClickHouse/ClickHouse/issues/28768).
* 이제 인덱스가 `isNull` 및 `isNotNull`을 포함한 `널 허용` 타입을 처리할 수 있습니다. [#12433](https://github.com/ClickHouse/ClickHouse/pull/12433) 및 [#12455](https://github.com/ClickHouse/ClickHouse/pull/12455) ([Amos Bird](https://github.com/amosbird)), 그리고 [#27250](https://github.com/ClickHouse/ClickHouse/pull/27250) ([Azat Khuzhin](https://github.com/azat)). 하지만 이 변경에는 디스크 저장 포맷 변경이 수반되므로, 새 서버는 이전 데이터를 읽을 수 있어도 이전 서버는 새 데이터를 읽을 수 없습니다. 또한 `MINMAX` data skipping indices가 있는 경우 새 인덱스는 `.idx2` 확장자를 사용하고 이전에는 `.idx`를 사용했기 때문에 `Data after mutation/merge is not byte-identical` 오류가 발생할 수 있습니다. 따라서 이 경우 기존의 모든 레플리카 업데이트를 미루지 않아야 합니다. 그렇지 않으면 이전 레플리카(\<21.9)가 21.9+의 새 레플리카에서 데이터를 다운로드할 때 다운로드한 part에 인덱스를 적용할 수 없습니다.

<div id="new-feature-3">
  #### 새 기능
</div>

* 함수의 단락 평가 구현으로 [#12587](https://github.com/ClickHouse/ClickHouse/issues/12587)가 해결되었습니다. 함수의 단락 평가를 구성하기 위한 설정 `short_circuit_function_evaluation`이 추가되었습니다. [#23367](https://github.com/ClickHouse/ClickHouse/pull/23367) ([Kruglov Pavel](https://github.com/Avogar)).
* INTERSECT, EXCEPT, ANY, ALL 연산자 지원이 추가되었습니다. [#24757](https://github.com/ClickHouse/ClickHouse/pull/24757) ([Kirill Ershov](https://github.com/zdikov)). ([Kseniia Sumarokova](https://github.com/kssenii)).
* AES-CTR 알고리즘을 사용해 가상 파일 시스템 수준의 암호화(데이터 저장 시 암호화) 지원을 추가했습니다. [#24206](https://github.com/ClickHouse/ClickHouse/pull/24206) ([Latysheva Alexandra](https://github.com/alexelex)). ([Vitaly Baranov](https://github.com/vitlibar)) [#26733](https://github.com/ClickHouse/ClickHouse/pull/26733) [#26377](https://github.com/ClickHouse/ClickHouse/pull/26377) [#26465](https://github.com/ClickHouse/ClickHouse/pull/26465).
* 동의어 확장 기능에 토큰화, 어간 추출, 표제어 추출, 검색을 위한 자연어 처리(NLP) 함수를 추가했습니다. [#24997](https://github.com/ClickHouse/ClickHouse/pull/24997) ([Nikolay Degterinsky](https://github.com/evillique)).
* S2 geometry 라이브러리 통합이 추가되었습니다. [#24980](https://github.com/ClickHouse/ClickHouse/pull/24980) ([Andr0901](https://github.com/Andr0901)). ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* SQLite 테이블 엔진, 테이블 함수, 데이터베이스 엔진이 추가되었습니다. [#24194](https://github.com/ClickHouse/ClickHouse/pull/24194) ([Arslan Gumerov](https://github.com/g-arslan)). ([Kseniia Sumarokova](https://github.com/kssenii)).
* `MySQL`, `PostgreSQL`, `ClickHouse`, `JDBC`, `Cassandra` 딕셔너리 소스에 사용자 지정 쿼리 지원이 추가되었습니다. [#1270](https://github.com/ClickHouse/ClickHouse/issues/1270)이 해결되었습니다. [#26995](https://github.com/ClickHouse/ClickHouse/pull/26995) ([Maksim Kita](https://github.com/kitaisreal)).
* ZooKeeper를 통해 사용자, 역할, 행 정책, 쿼터 및 설정 프로필의 공유(복제) 저장소를 추가했습니다. [#27426](https://github.com/ClickHouse/ClickHouse/pull/27426) ([Kevin Michel](https://github.com/kmichel-aiven)).
* 압축 알고리즘을 자동으로 선택하는 `INTO OUTFILE`용 압축을 추가했습니다. [#3473](https://github.com/ClickHouse/ClickHouse/issues/3473)를 해결합니다. [#27134](https://github.com/ClickHouse/ClickHouse/pull/27134) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* `SELECT ... INTO OUTFILE`와 마찬가지로 `INSERT ... FROM INFILE`을 추가했습니다. [#27655](https://github.com/ClickHouse/ClickHouse/pull/27655) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* `complex_key_range_hashed` 딕셔너리가 추가되었습니다. [#22029](https://github.com/ClickHouse/ClickHouse/issues/22029)가 해결되었습니다. [#27629](https://github.com/ClickHouse/ClickHouse/pull/27629) ([Maksim Kita](https://github.com/kitaisreal)).
* JOIN ON 절에서 표현식을 지원합니다. [#21868](https://github.com/ClickHouse/ClickHouse/issues/21868)을 해결합니다. [#24420](https://github.com/ClickHouse/ClickHouse/pull/24420) ([Vladimir C](https://github.com/vdimir)).
* 클라이언트가 서버에 연결되면 서버에 이미 수집된 모든 경고에 대한 정보를 받습니다. (`--no-warnings` 옵션을 사용하면 이 기능을 비활성화할 수 있습니다.) 서버 구성에 관한 경고를 수집하기 위해 `system.warnings` 테이블을 추가했습니다. [#26246](https://github.com/ClickHouse/ClickHouse/pull/26246) ([Filatenkov Artur](https://github.com/FArthur-cmd)). [#26282](https://github.com/ClickHouse/ClickHouse/pull/26282) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* WITH 및 SELECT의 상수 표현식을 집계 함수 매개변수에서 사용할 수 있도록 합니다. [#10945](https://github.com/ClickHouse/ClickHouse/issues/10945)를 해결합니다. [#27531](https://github.com/ClickHouse/ClickHouse/pull/27531) ([abel-cheng](https://github.com/abel-cheng)).
* `tupleToNameValuePairs`를 추가했습니다. 이 함수는 named tuple을 키-값 쌍의 배열로 변환합니다. [#27505](https://github.com/ClickHouse/ClickHouse/pull/27505) ([Braulio Valdivielso Martínez](https://github.com/BraulioVM)).
* 가져오기/내보내기용 `bzip2` 압축 방식을 지원합니다. [#22428](https://github.com/ClickHouse/ClickHouse/issues/22428)을 해결했습니다. [#27377](https://github.com/ClickHouse/ClickHouse/pull/27377) ([Nikolay Degterinsky](https://github.com/evillique)).
* `bitmapSubsetOffsetLimit(bitmap, offset, cardinality_limit)` 함수를 추가했습니다. 이 함수는 비트맵의 부분집합을 생성하고, `offset`만큼 건너뛴 뒤 결과를 `cardinality_limit`개로 제한합니다. [#27234](https://github.com/ClickHouse/ClickHouse/pull/27234) ([DHBin](https://github.com/DHBin)).
* `system.users`에 `default_database` 컬럼을 추가했습니다. [#27054](https://github.com/ClickHouse/ClickHouse/pull/27054) ([kevin wan](https://github.com/MaxWk)).
* 테이블 함수 'cluster' 및 'clusterAllReplicas'에서 `cluster` 매크로를 지원합니다. [#26913](https://github.com/ClickHouse/ClickHouse/pull/26913) ([polyprogrammist](https://github.com/PolyProgrammist)).
* 새로운 함수 `currentRoles()`, `enabledRoles()`, `defaultRoles()`를 추가했습니다. [#26780](https://github.com/ClickHouse/ClickHouse/pull/26780) ([Vitaly Baranov](https://github.com/vitlibar)).
* 새로운 함수 `currentProfiles()`, `enabledProfiles()`, `defaultProfiles()`. [#26714](https://github.com/ClickHouse/ClickHouse/pull/26714) ([Vitaly Baranov](https://github.com/vitlibar)).
* 현재 쿼리의 (initial\_)query\_id를 반환하는 함수를 추가했습니다. 이 변경으로 [#23682](https://github.com/ClickHouse/ClickHouse/issues/23682)가 해결되었습니다. [#26410](https://github.com/ClickHouse/ClickHouse/pull/26410) ([Alexey Boykov](https://github.com/mathalex)).
* `REPLACE GRANT` 기능이 추가되었습니다. [#26384](https://github.com/ClickHouse/ClickHouse/pull/26384) ([Caspian](https://github.com/Cas-pian)).
* `EXPLAIN` 쿼리에 이제 `EXPLAIN ESTIMATE ...` 모드가 추가되어 MergeTree 테이블에서 읽는 행 수, 마크, 파트 정보를 표시합니다. [#23941](https://github.com/ClickHouse/ClickHouse/issues/23941)를 해결합니다. [#26131](https://github.com/ClickHouse/ClickHouse/pull/26131) ([fastio](https://github.com/fastio)).
* `system.zookeeper_log` 테이블이 추가되었습니다. ZooKeeper 클라이언트의 모든 작업이 이 테이블에 기록됩니다. [#25449](https://github.com/ClickHouse/ClickHouse/issues/25449)을 구현합니다. [#26129](https://github.com/ClickHouse/ClickHouse/pull/26129) ([tavplubix](https://github.com/tavplubix)).
* `HDFS` 스토리지의 `ReplicatedMergeTree`를 위한 zero-copy 복제. [#25918](https://github.com/ClickHouse/ClickHouse/pull/25918) ([Zhichang Yu](https://github.com/yuzhichang)).
* `Arrow`, `ORC`, `Parquet` 입력 형식에서 Nested 타입을 struct의 배열로 삽입할 수 있습니다. [#25902](https://github.com/ClickHouse/ClickHouse/pull/25902) ([Kruglov Pavel](https://github.com/Avogar)).
* 새 데이터 유형 `Date32`를 추가했습니다(Int32로 데이터 저장). `DateTime64`와 동일한 날짜 범위를 지원하며, Parquet의 date32를 ClickHouse `Date32`로 로드할 수 있습니다. 또한 `toDate`와 유사한 새 함수 `toDate32`를 추가했습니다. [#25774](https://github.com/ClickHouse/ClickHouse/pull/25774) ([LiuNeng](https://github.com/liuneng1994)).
* 기본 데이터베이스를 설정할 수 있습니다. [#25268](https://github.com/ClickHouse/ClickHouse/issues/25268). [#25687](https://github.com/ClickHouse/ClickHouse/pull/25687) ([kevin wan](https://github.com/MaxWk)).
* `MongoDB` 엔진에 연결 문자열 옵션을 받고 SSL 연결을 지원하는 선택적 매개변수를 추가했습니다. [#21189](https://github.com/ClickHouse/ClickHouse/issues/21189)를 해결합니다. [#21041](https://github.com/ClickHouse/ClickHouse/issues/21041)를 해결합니다. [#22045](https://github.com/ClickHouse/ClickHouse/pull/22045) ([Omar Bazaraa](https://github.com/OmarBazaraa)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* 컬럼을 압축하는 대신 암호화하는 코덱 `AES_128_GCM_SIV`를 추가했습니다. [#19896](https://github.com/ClickHouse/ClickHouse/pull/19896) ([PHO](https://github.com/depressed-pho)). 다시 작성될 예정이므로 사용하지 마십시오.
* `MaterializeMySQL`의 이름을 `MaterializedMySQL`로 변경했습니다. [#26822](https://github.com/ClickHouse/ClickHouse/pull/26822) ([tavplubix](https://github.com/tavplubix)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* `clock_gettime` 시스템 호출 횟수를 줄여 `max_execution_time = 0`일 때 빠른 쿼리의 성능을 개선했습니다. [#27325](https://github.com/ClickHouse/ClickHouse/pull/27325) ([filimonov](https://github.com/filimonov)).
* date time 관련 비교를 특수화해 성능을 개선했습니다. 이 변경으로 [#27083](https://github.com/ClickHouse/ClickHouse/issues/27083)가 수정되었습니다. [#27122](https://github.com/ClickHouse/ClickHouse/pull/27122) ([Amos Bird](https://github.com/amosbird)).
* 동일한 파일에 대한 동시 읽기에서 파일 디스크립터를 공유합니다. Linux에서는 눈에 띄는 성능 차이가 없습니다. 하지만 일반적인 서버에서는 열린 파일 수가 크게(10\~100배) 줄어들어 운영이 더 수월해집니다. [#26214](https://github.com/ClickHouse/ClickHouse/issues/26214)를 참조하십시오. [#26768](https://github.com/ClickHouse/ClickHouse/pull/26768) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 많은 수의 컬럼이 있는 테이블에서 읽기가 필요한 짧은 쿼리의 지연 시간을 개선했습니다. [#26371](https://github.com/ClickHouse/ClickHouse/pull/26371) ([Anton Popov](https://github.com/CurtizJ)).
* 쿼리를 분석할 때 인덱스용 Set을 생성하지 않도록 했습니다. [#26365](https://github.com/ClickHouse/ClickHouse/pull/26365) ([Raúl Marín](https://github.com/Algunenano)).
* 네이티브 표현을 사용해 널 허용 정수 타입의 SUM을 벡터화했습니다 ([David Manzanares](https://github.com/davidmanzanares), [Raúl Marín](https://github.com/Algunenano)). [#26248](https://github.com/ClickHouse/ClickHouse/pull/26248) ([Raúl Marín](https://github.com/Algunenano)).
* `Enum` 타입 컬럼이 포함된 표현식을 컴파일합니다. [#26237](https://github.com/ClickHouse/ClickHouse/pull/26237) ([Maksim Kita](https://github.com/kitaisreal)).
* 집계 함수 `groupBitOr`, `groupBitAnd`, `groupBitXor`를 컴파일합니다. [#26161](https://github.com/ClickHouse/ClickHouse/pull/26161) ([Maksim Kita](https://github.com/kitaisreal)).
* 비어 있는 DEFAULT 컬럼을 읽을 때 블록 크기 예측을 개선해 메모리 사용량을 줄였습니다. [#17317](https://github.com/ClickHouse/ClickHouse/issues/17317)을 해결합니다. [#25917](https://github.com/ClickHouse/ClickHouse/pull/25917) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `ORDER BY primary_key`가 있는 쿼리에서 메모리 사용량과 읽는 행 수를 줄였습니다. [#25721](https://github.com/ClickHouse/ClickHouse/pull/25721) ([Anton Popov](https://github.com/CurtizJ)).
* `distributed_push_down_limit`를 기본적으로 활성화했습니다. [#27104](https://github.com/ClickHouse/ClickHouse/pull/27104) ([Azat Khuzhin](https://github.com/azat)).
* `timeZone`이 상수 값일 때 `toTimeZone`이 단조성을 갖도록 해, 다음과 같은 SQL을 사용할 때 파티션 가지치기를 지원합니다. [#26261](https://github.com/ClickHouse/ClickHouse/pull/26261) ([huangzhaowei](https://github.com/SaintBacchus)).

<div id="improvement-3">
  #### 개선
</div>

* 윈도우 함수를 정식으로 사용할 수 있도록 합니다. `allow_experimental_window_functions` 설정을 제거합니다. [#27184](https://github.com/ClickHouse/ClickHouse/pull/27184) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* 분 단위가 아닌 시간대 오프셋에 대한 호환성을 개선했습니다. [#27080](https://github.com/ClickHouse/ClickHouse/pull/27080) ([Raúl Marín](https://github.com/Algunenano)).
* `File` 테이블의 file descriptor가 일반 파일이면 이를 여러 번 읽을 수 있도록 허용했습니다. 이에 따라 stdin이 `clickhouse-local --query "SELECT * FROM table UNION ALL SELECT * FROM table" ... < file`와 같은 일반 파일인 경우, `clickhouse-local`에서 stdin을 여러 번 읽을 수 있습니다(여러 SELECT 쿼리 또는 서브쿼리를 사용하는 경우). 이로써 [#11124](https://github.com/ClickHouse/ClickHouse/issues/11124)가 해결되었습니다. ([alexey-milovidov](https://github.com/alexey-milovidov))와 공동 작성했습니다. [#25960](https://github.com/ClickHouse/ClickHouse/pull/25960) ([BoloniniD](https://github.com/BoloniniD)).
* 중복된 인덱스 분석을 제거하고, 프로젝션 분석 중 유효하지 않은 limit 검사가 수행될 수 있는 문제를 방지했습니다. [#27742](https://github.com/ClickHouse/ClickHouse/pull/27742) ([Amos Bird](https://github.com/amosbird)).
* HTTP 요청 본문으로 쿼리 매개변수를 전달할 수 있도록 했습니다. [#27706](https://github.com/ClickHouse/ClickHouse/pull/27706) ([Hermano Lustosa](https://github.com/hllustosa)).
* 파티션 표현식에서 `arrayJoin`을 사용할 수 없도록 했습니다. [#27648](https://github.com/ClickHouse/ClickHouse/pull/27648) ([Raúl Marín](https://github.com/Algunenano)).
* 인증 실패 시 클라이언트 IP 주소를 기록합니다. [#27514](https://github.com/ClickHouse/ClickHouse/pull/27514) ([Misko Lee](https://github.com/imiskolee)).
* GRPC 프로토콜에서 바이너리 데이터에 문자열 대신 바이트를 사용합니다. [#27431](https://github.com/ClickHouse/ClickHouse/pull/27431) ([Vitaly Baranov](https://github.com/vitlibar)).
* HTTP 포트가 설정되지 않은 상태에서 TCP 포트로 HTTP 요청을 보내려고 하면 오류 메시지가 포함된 응답을 반환합니다. [#27385](https://github.com/ClickHouse/ClickHouse/pull/27385) ([Braulio Valdivielso Martínez](https://github.com/BraulioVM)).
* 내부 사용을 위한 `_CAST` 함수를 추가했습니다. 이 함수는 유형의 널 허용 여부를 보존하지 않지만, 일반 CAST는 `cast_keep_nullable` 설정에 따라 이를 보존합니다. [#12636](https://github.com/ClickHouse/ClickHouse/issues/12636)을 해결합니다. [#27382](https://github.com/ClickHouse/ClickHouse/pull/27382) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `system.query_log`에 추가로 포맷된 쿼리를 기록하는 설정 `log_formatted_queries`를 추가했습니다. `normalizeQuery` 및 `normalizeQueryKeepNames` 같은 함수는 더 나은 성능을 위해 쿼리를 parse하거나 포맷하지 않으므로, 정규화된 쿼리 분석에 유용합니다. [#27380](https://github.com/ClickHouse/ClickHouse/pull/27380) ([Amos Bird](https://github.com/amosbird)).
* hyperscan 관련 함수(예: `multiMatchAny`)에서 지나치게 큰 정규식이 사용되지 않도록 `max_hyperscan_regexp_length` 및 `max_hyperscan_regexp_total_length` 두 설정을 추가했습니다. [#27378](https://github.com/ClickHouse/ClickHouse/pull/27378) ([Amos Bird](https://github.com/amosbird)).
* 이제 비트맵 집계 함수가 사용하는 메모리가 메모리 제한에 포함됩니다. 이로써 [#26555](https://github.com/ClickHouse/ClickHouse/issues/26555)가 해결되었습니다. [#27252](https://github.com/ClickHouse/ClickHouse/pull/27252) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* S3 프록시 리졸버에 10초 캐시를 추가했습니다. [#27216](https://github.com/ClickHouse/ClickHouse/pull/27216) ([ianton-ru](https://github.com/ianton-ru)).
* 전역 뮤텍스를 각 regexp 생성별로 분리했습니다. 이를 통해 대규모 regexp 생성 때문에 다른 관련 스레드가 차단되는 일을 줄이는 데 도움이 됩니다. [#27211](https://github.com/ClickHouse/ClickHouse/pull/27211) ([Amos Bird](https://github.com/amosbird)).
* PostgreSQL 데이터베이스 엔진의 스키마를 지원합니다. [#27166](https://github.com/ClickHouse/ClickHouse/issues/27166)를 해결했습니다. [#27198](https://github.com/ClickHouse/ClickHouse/pull/27198) ([Kseniia Sumarokova](https://github.com/kssenii)).
* clickhouse-client의 메모리 사용량을 추적합니다. [#27191](https://github.com/ClickHouse/ClickHouse/pull/27191) ([Filatenkov Artur](https://github.com/FArthur-cmd)).
* 쿼리 시작에 실패하더라도 `system.query_log`에 `query_kind`를 기록하도록 개선했습니다. [#27182](https://github.com/ClickHouse/ClickHouse/pull/27182) ([Amos Bird](https://github.com/amosbird)).
* 레플리카 이름을 레플리카 활성 여부에 매핑하는 컬럼 `replica_is_active`가 테이블 `system.replicas`에 추가되었습니다. [#27138](https://github.com/ClickHouse/ClickHouse/issues/27138)을 닫습니다. [#27180](https://github.com/ClickHouse/ClickHouse/pull/27180) ([Maksim Kita](https://github.com/kitaisreal)).
* Web UI에서 서버 URI를 통해 쿼리 설정을 전달할 수 있게 했습니다. [#27177](https://github.com/ClickHouse/ClickHouse/pull/27177) ([kolsys](https://github.com/kolsys)).
* `MaxPushedDDLEntryID`라는 새 메트릭을 추가했습니다. 이 메트릭은 현재 노드가 ZooKeeper에 푸시한 최대 DDL 엔트리 ID를 나타냅니다. [#27174](https://github.com/ClickHouse/ClickHouse/pull/27174) ([Fuwang Hu](https://github.com/fuwhu)).
* `clickhouse-keeper`가 znode를 생성할 때 존재 조건 및 빈 문자열 노드 판별을 개선했습니다. [#27125](https://github.com/ClickHouse/ClickHouse/pull/27125) ([小路](https://github.com/nicelulu)).
* 머지 JOIN이 오른쪽 빈 집합도 올바르게 처리합니다. [#27078](https://github.com/ClickHouse/ClickHouse/pull/27078) ([Vladimir C](https://github.com/vdimir)).
* 이제 함수는 세그먼트 수준 상수로 사용할 수 있습니다. 즉, 일부 분산 테이블의 Context에서 실행되면 일반 컬럼을 생성하고, 그렇지 않으면 상수 값을 생성합니다. 대표적인 함수는 다음과 같습니다: `hostName()`, `tcpPort()`, `version()`, `buildId()`, `uptime()`, 등입니다. [#27020](https://github.com/ClickHouse/ClickHouse/pull/27020) ([Amos Bird](https://github.com/amosbird)).
* `extractAllGroupsHorizontal` 개선 - 선택적 세 번째 인수를 통해 행별 일치 항목 수의 상한을 설정할 수 있습니다. [#26961](https://github.com/ClickHouse/ClickHouse/pull/26961) ([Vasily Nemkov](https://github.com/Enmk)).
* `RocksDB` 통계를 system.rocksdb 테이블을 통해 노출합니다. ClickHouse 설정에서 rocksdb 옵션(`rocksdb...` 키)을 읽어옵니다. 참고: ClickHouse는 RocksDB에 의존하지 않으며, 이는 추가로 제공되는 통합 스토리지 엔진 중 하나일 뿐입니다. [#26821](https://github.com/ClickHouse/ClickHouse/pull/26821) ([Azat Khuzhin](https://github.com/azat)).
* 내부 RocksDB 로그의 상세 수준을 낮췄습니다. 참고: ClickHouse는 RocksDB에 의존하지 않으며, RocksDB는 추가 통합 스토리지 엔진 중 하나일 뿐입니다. 이로써 [#26252](https://github.com/ClickHouse/ClickHouse/issues/26252)가 해결되었습니다. [#26789](https://github.com/ClickHouse/ClickHouse/pull/26789) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 기본 역할 변경은 새 세션에만 영향을 줍니다. [#26759](https://github.com/ClickHouse/ClickHouse/pull/26759) ([Vitaly Baranov](https://github.com/vitlibar)).
* Docker에서는 기본적으로 Watchdog가 비활성화되어 있습니다. Ctrl+C를 처리하지 못하던 문제를 수정했습니다. [#26757](https://github.com/ClickHouse/ClickHouse/pull/26757) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* `SET PROFILE`는 전달된 profile에 제약 조건이 설정된 경우, 이제 해당 제약 조건도 함께 적용합니다. [#26730](https://github.com/ClickHouse/ClickHouse/pull/26730) ([Vitaly Baranov](https://github.com/vitlibar)).
* `KILL QUERY` 요청 처리 방식이 개선되었습니다. [#26675](https://github.com/ClickHouse/ClickHouse/pull/26675) ([Raúl Marín](https://github.com/Algunenano)).
* `mapPopulatesSeries` 함수가 `Map` 타입을 지원합니다. [#26663](https://github.com/ClickHouse/ClickHouse/pull/26663) ([Ildus Kurbangaliev](https://github.com/ildus)).
* `skip_unavailable_shards`에서 발생하던 과도한(x2) 연결 시도를 수정했습니다. [#26658](https://github.com/ClickHouse/ClickHouse/pull/26658) ([Azat Khuzhin](https://github.com/azat)).
* 연결에 실패할 때(예: EMFILE) `clickhouse-benchmark`가 멈춘 상태가 되지 않도록 했습니다. [#26656](https://github.com/ClickHouse/ClickHouse/pull/26656) ([Azat Khuzhin](https://github.com/azat)).
* Kafka 엔진이 더 많은 스레드를 사용할 수 있도록 개선했습니다. [#26642](https://github.com/ClickHouse/ClickHouse/pull/26642) ([feihengye](https://github.com/feihengye)).
* `clickhouse-benchmark`에 라운드 로빈 지원을 추가했습니다(통계 보고서를 제외하면 일반적인 다중 호스트/포트 실행과 차이가 없습니다). [#26607](https://github.com/ClickHouse/ClickHouse/pull/26607) ([Azat Khuzhin](https://github.com/azat)).
* 실행형 딕셔너리(`executable`, `executable_pool`)를 `clickhouse-local`을 사용한 DDL 쿼리로 생성할 수 있게 되었습니다. [#22355](https://github.com/ClickHouse/ClickHouse/issues/22355)를 해결했습니다. [#26510](https://github.com/ClickHouse/ClickHouse/pull/26510) ([Maksim Kita](https://github.com/kitaisreal)).
* `mysql` 및 `postgresql` 호환성 프로토콜 핸들러의 클라이언트 쿼리 유형을 설정했습니다. [#26498](https://github.com/ClickHouse/ClickHouse/pull/26498) ([anneji-dev](https://github.com/anneji-dev)).
* `distributed_push_down_limit=1`일 때 `SELECT * FROM dist ORDER BY key LIMIT 10` 같은 쿼리에서 세그먼트에 `LIMIT`를 적용합니다. `SELECT DISTINCT shading_key FROM dist ORDER BY key` 같은 쿼리에서는 `Distinct`/`LIMIT BY` 단계를 실행하지 않습니다. 이제 `distributed_push_down_limit`가 `optimize_distributed_group_by_sharding_key` 최적화에도 적용됩니다. [#26466](https://github.com/ClickHouse/ClickHouse/pull/26466) ([Azat Khuzhin](https://github.com/azat)).
* protobuf를 3.17.3 버전으로 업데이트했습니다. 변경 이력은 [https://github.com/protocolbuffers/protobuf/releases에서](https://github.com/protocolbuffers/protobuf/releases에서) 확인할 수 있습니다. [#26424](https://github.com/ClickHouse/ClickHouse/pull/26424) ([Ilya Yatsishin](https://github.com/qoega)).
* 대규모 클러스터에서 테일 레이턴시를 완화할 수 있도록 `use_hedged_requests` 설정을 활성화했습니다. [#26380](https://github.com/ClickHouse/ClickHouse/pull/26380) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 사용자 허용 호스트 목록에 존재하지 않는 호스트가 포함된 경우의 동작을 개선했습니다. [#26368](https://github.com/ClickHouse/ClickHouse/pull/26368) ([ianton-ru](https://github.com/ianton-ru)).
* CREATE TABLE을 통해 `Distributed` 디렉터리 모니터 설정을 지정할 수 있는 기능이 추가되었습니다(즉, `CREATE TABLE dist (key Int) Engine=Distributed(cluster, db, table) SETTINGS monitor_batch_inserts=1` 및 이와 유사한 구문). [#26336](https://github.com/ClickHouse/ClickHouse/pull/26336) ([Azat Khuzhin](https://github.com/azat)).
* 서버 주소가 웹 UI의 origin과 다른 경우, 해당 서버 주소를 웹 UI의 이력 URL에 저장합니다. 이 변경으로 [#26044](https://github.com/ClickHouse/ClickHouse/issues/26044)가 해결됩니다. [#26322](https://github.com/ClickHouse/ClickHouse/pull/26322) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `sleep` / `sleepEachRow` 호출에 대한 프로파일링 이벤트를 추가했습니다. [#26320](https://github.com/ClickHouse/ClickHouse/pull/26320) ([Raúl Marín](https://github.com/Algunenano)).
* 서로 다른 클러스터 간에 세그먼트 연결을 재사용할 수 있도록 했습니다. 또한 `cluster` 테이블 함수를 사용할 때 새 연결을 생성하지 않도록 합니다. [#26318](https://github.com/ClickHouse/ClickHouse/pull/26318) ([Amos Bird](https://github.com/amosbird)).
* 기본값이 설정된 매개변수로 오래된 임시 디렉터리를 정리하는 실행 주기를 제어할 수 있습니다. [#26212](https://github.com/ClickHouse/ClickHouse/issues/26212). [#26313](https://github.com/ClickHouse/ClickHouse/pull/26313) ([fastio](https://github.com/fastio)).
* 함수 `range`가 생성하는 데이터 양의 안전 임계값을 조정할 수 있도록 설정 `function_range_max_elements_in_block`을 추가했습니다. 이로써 [#26303](https://github.com/ClickHouse/ClickHouse/issues/26303)이 해결되었습니다. [#26305](https://github.com/ClickHouse/ClickHouse/pull/26305) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 샘플링 시점이 아니라 테이블 생성 시점에 hash function을 검사하도록 했습니다. 잘못된 샘플링 컬럼으로 테이블을 생성했더라도 샘플링을 전혀 사용하지 않았다면, 예외 없이 server를 시작할 수 있도록 이 설정을 비활성화하는 MergeTree 설정을 추가했습니다. [#26256](https://github.com/ClickHouse/ClickHouse/pull/26256) ([zhaoyu](https://github.com/zxc111)).
* 지정된 String 컬럼이 기본 bytes 대신 string으로 Avro에 저장되도록 `output_format_avro_string_column_pattern` 설정을 추가했습니다. [#22414](https://github.com/ClickHouse/ClickHouse/issues/22414)을 구현합니다. [#26245](https://github.com/ClickHouse/ClickHouse/pull/26245) ([Ilya Golshtein](https://github.com/ilejn)).
* `Log` 및 `TinyLog` 테이블의 `system.columns` 테이블에 컬럼 크기 정보를 추가했습니다. 이로써 [#9001](https://github.com/ClickHouse/ClickHouse/issues/9001)이 해결되었습니다. [#26241](https://github.com/ClickHouse/ClickHouse/pull/26241) ([Nikolay Degterinsky](https://github.com/evillique)).
* 사용자 지정 디스크 구성이 있고 일부 디스크에 `detached` 디렉터리가 없더라도 `system.detached_parts` 테이블을 쿼리할 때 예외가 발생하지 않도록 개선했습니다. 이로써 [#26078](https://github.com/ClickHouse/ClickHouse/issues/26078)이 해결되었습니다. [#26236](https://github.com/ClickHouse/ClickHouse/pull/26236) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `now()`, `today()`와 같은 상수 표현식을 포함해 키에 비결정적 함수가 있는지 확인합니다. 이로써 [#25875](https://github.com/ClickHouse/ClickHouse/issues/25875)가 해결되었습니다. 이로써 [#11333](https://github.com/ClickHouse/ClickHouse/issues/11333)가 해결되었습니다. [#26235](https://github.com/ClickHouse/ClickHouse/pull/26235) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* PostgreSQL 테이블 엔진에서 `timestamp` 및 `timestamptz` 데이터 타입을 `DateTime64`로 변환합니다. [#26234](https://github.com/ClickHouse/ClickHouse/pull/26234) ([jasine](https://github.com/jasine)).
* 더 적합한 프로젝션 후보를 선택할 수 있도록 프로젝션에 대해 IN 인덱스 분석을 적극적으로 적용했습니다. [#26218](https://github.com/ClickHouse/ClickHouse/pull/26218) ([Amos Bird](https://github.com/amosbird)).
* 스칼라 함수가 전달된 경우 `IN`에서 GLOBAL 키워드를 제거했습니다. 이전 버전에서는 사용자가 `GLOBAL IN f(x)`를 지정하면 예외가 발생했습니다. [#26217](https://github.com/ClickHouse/ClickHouse/pull/26217) ([Amos Bird](https://github.com/amosbird)).
* 예외 메시지에 오류 ID(`BAD_ARGUMENTS` 등)를 추가했습니다. 이로써 [#25862](https://github.com/ClickHouse/ClickHouse/issues/25862)가 해결되었습니다. [#26172](https://github.com/ClickHouse/ClickHouse/pull/26172) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* clickhouse-local의 `--progress` 옵션에서 잘못된 출력이 발생하는 문제를 수정했습니다. 진행 표시줄은 100%에 도달하면 clickhouse-client와 동일하게 지워집니다. [#17484](https://github.com/ClickHouse/ClickHouse/issues/17484)를 해결했습니다. [#26128](https://github.com/ClickHouse/ClickHouse/pull/26128) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `merge_selecting_sleep_ms` 설정을 추가했습니다. [#26120](https://github.com/ClickHouse/ClickHouse/pull/26120) ([lthaooo](https://github.com/lthaooo)).
* 한 블록 선행 읽기와 함께 사용하는 복잡한 Linux AIO를 제거하고, 이를 O\_DIRECT를 사용하는 단순한 동기식 IO로 대체했습니다. 이전 버전에서는 `max_threads`가 1보다 크면 `min_bytes_to_use_direct_io` 설정이 올바르게 동작하지 않을 수 있습니다. direct IO를 사용한 읽기(쿼리에서는 기본적으로 비활성화되어 있고 대규모 머지에서는 기본적으로 활성화됨)는 효율이 다소 떨어지는 방식으로 동작합니다. 이 변경으로 [#25997](https://github.com/ClickHouse/ClickHouse/issues/25997)이 해결되었습니다. [#26003](https://github.com/ClickHouse/ClickHouse/pull/26003) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `REPLACE TABLE` 쿼리 시 `Distributed` 테이블을 플러시합니다. [#24566](https://github.com/ClickHouse/ClickHouse/issues/24566) 해결 - 새 테이블에 대한 삽입이 실패하면 `[CREATE OR] REPLACE TABLE ... AS SELECT` 쿼리에서 테이블을 대체하거나 생성하지 않도록 했습니다. [#23175](https://github.com/ClickHouse/ClickHouse/issues/23175) 해결. [#25895](https://github.com/ClickHouse/ClickHouse/pull/25895) ([tavplubix](https://github.com/tavplubix)).
* 쿼리에 의해 실행된 (구체화된 뷰 또는 라이브 뷰) 이름을 담는 `views` 컬럼을 system.query\_log에 추가합니다. 또한 쿼리 실행 중 각 뷰에 대한 정보를 담는 새 로그 테이블(`system.query_views_log`)을 추가합니다. 뷰 실행 방식도 변경됩니다. 뷰 실행 중 예외가 발생하면, 이미 시작된 뷰는 완료될 때까지 계속 실행됩니다. 이는 이전에는 parallel\_view\_processing=true일 때만 적용되던 동작이었지만, 이제는 항상 동일하게 동작합니다. - 이제 종속 뷰가 읽기 진행 상황을 Context에 보고합니다. [#25714](https://github.com/ClickHouse/ClickHouse/pull/25714) ([Raúl Marín](https://github.com/Algunenano)).
* 분산 쿼리 실행이 끝난 후 연결 드레이닝을 비동기적으로 수행합니다. 백그라운드에서 연결을 회수하는 worker 수를 지정하는 새로운 서버 설정 `max_threads_for_connection_collector`가 추가되었습니다. 풀이 가득 차면 연결 드레이닝은 동기적으로 수행되지만, 이전과는 조금 다릅니다. 클라이언트에 EOS를 보낸 뒤 드레이닝이 수행되며, 쿼리는 충분한 데이터를 받는 즉시 성공으로 처리되고, 예외는 클라이언트에 반환되지 않고 로그에 기록됩니다. 설정 `drain_timeout`도 추가되었습니다(기본값은 3초). 연결 드레이닝은 타임아웃이 발생하면 연결을 끊습니다. [#25674](https://github.com/ClickHouse/ClickHouse/pull/25674) ([Amos Bird](https://github.com/amosbird)).
* 구성에서 여러 include를 지원합니다. 여러 소스의 users 구성과 remote servers 구성을 include할 수 있습니다. `<include />` 요소에 `from_zk`, `from_env` 또는 `incl` 속성을 지정하면 해당 치환값으로 대체됩니다. [#24404](https://github.com/ClickHouse/ClickHouse/pull/24404) ([nvartolomei](https://github.com/nvartolomei)).
* `insert_distributed_one_random_shard = 1`에서 분산 테이블에 여러 block을 삽입할 때의 문제를 수정했습니다. 이는 사소한 기능입니다. 개선 사항으로 분류했습니다. [#23140](https://github.com/ClickHouse/ClickHouse/pull/23140) ([Amos Bird](https://github.com/amosbird)).
* `Map` 유형에서 `LowCardinality` 및 `FixedString` 키/값을 지원합니다. [#21543](https://github.com/ClickHouse/ClickHouse/pull/21543) ([hexiaoting](https://github.com/hexiaoting)).
* 로컬 디스크 구성을 다시 로드할 수 있도록 했습니다. [#19526](https://github.com/ClickHouse/ClickHouse/pull/19526) ([taiyang-li](https://github.com/taiyang-li)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 레플리카 간 불일치를 일으킬 수 있는 몇 가지 버그를 수정했습니다. [#27808](https://github.com/ClickHouse/ClickHouse/pull/27808) ([tavplubix](https://github.com/tavplubix)).
* `DROP PART`에서 드물게 발생해 오류 `Unexpected merged part intersects drop range`를 일으킬 수 있는 버그를 수정했습니다. [#27807](https://github.com/ClickHouse/ClickHouse/pull/27807) ([alesapin](https://github.com/alesapin)).
* Kafka의 NULL (tombstone) 메시지가 유입될 때 일부 포맷에서 발생하던 비정상 종료를 방지합니다. [#19255](https://github.com/ClickHouse/ClickHouse/issues/19255)를 해결합니다. [#27794](https://github.com/ClickHouse/ClickHouse/pull/27794) ([filimonov](https://github.com/filimonov)).
* 서브쿼리에서 union distinct 사용 시 컬럼 필터링 문제를 수정했습니다. [#27578](https://github.com/ClickHouse/ClickHouse/issues/27578)를 해결했습니다. [#27689](https://github.com/ClickHouse/ClickHouse/pull/27689) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `arrayHas`와 같은 함수를 `DateTime` 및 `DateTime64`처럼 서로 다른 비숫자 타입의 `LowCardinality(Nullable(...))` 배열에 적용할 때 발생하던 잘못된 타입 캐스팅 문제를 수정했습니다. 이전 버전에서는 잘못된 캐스팅이 발생했습니다. 새 버전에서는 예외가 발생합니다. 이로써 [#26330](https://github.com/ClickHouse/ClickHouse/issues/26330)이 해결되었습니다. [#27682](https://github.com/ClickHouse/ClickHouse/pull/27682) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 연결이 닫히지 않던 postgresql 테이블 함수를 수정했습니다. [#26088](https://github.com/ClickHouse/ClickHouse/issues/26088)을 해결합니다. [#27662](https://github.com/ClickHouse/ClickHouse/pull/27662) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `Unexpected merged part ... intersecting drop range ...` 오류가 발생하는 또 다른 경우를 수정했습니다. [#27656](https://github.com/ClickHouse/ClickHouse/pull/27656) ([tavplubix](https://github.com/tavplubix)).
* `Distributed` 테이블의 별칭 컬럼 관련 오류를 수정했습니다. [#27652](https://github.com/ClickHouse/ClickHouse/pull/27652) ([Vladimir C](https://github.com/vdimir)).
* `max_memory_usage*`를 0이 아닌 값으로 설정한 뒤에는 다시 0(무제한)으로 되돌릴 수 없었습니다. 이 문제가 수정되었습니다. [#27638](https://github.com/ClickHouse/ClickHouse/pull/27638) ([tavplubix](https://github.com/tavplubix)).
* 구성 요소로 시간 값을 만들 때 발생하던 언더플로를 수정했습니다. [#27193](https://github.com/ClickHouse/ClickHouse/issues/27193)를 해결합니다. [#27605](https://github.com/ClickHouse/ClickHouse/pull/27605) ([Vasily Nemkov](https://github.com/Enmk)).
* 일부 파트에서 컬럼이 누락된 경우 projection을 머티리얼라이즈하는 중 발생하던 크래시를 수정했습니다. 이로써 [#27512](https://github.com/ClickHouse/ClickHouse/issues/27512)가 해결되었습니다. [#27528](https://github.com/ClickHouse/ClickHouse/pull/27528) ([Amos Bird](https://github.com/amosbird)).
* `BackgroundMessageBrokerSchedulePoolTask` 메트릭을 수정했습니다. 오타였을 가능성이 있습니다. [#27452](https://github.com/ClickHouse/ClickHouse/pull/27452) ([Ben](https://github.com/benbiti)).
* 세그먼트가 0개인 경우의 분산 쿼리 및 집계 문제를 수정했습니다. [#27427](https://github.com/ClickHouse/ClickHouse/pull/27427) ([Azat Khuzhin](https://github.com/azat)).
* `/proc/meminfo`에 KB 접미사가 없을 때의 호환성. [#27361](https://github.com/ClickHouse/ClickHouse/pull/27361) ([Mike Kot](https://github.com/myrrc)).
* 행 수준 보안, PREWHERE 및 LowCardinality 필터가 적용된 쿼리에서 잘못된 결과가 반환되는 문제를 수정했습니다. [#27179](https://github.com/ClickHouse/ClickHouse/issues/27179)를 수정합니다. [#27329](https://github.com/ClickHouse/ClickHouse/pull/27329) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 이전 문법으로 생성된 MergeTree 테이블의 파티션 ID에 대한 잘못된 유효성 검사를 수정했습니다. [#27328](https://github.com/ClickHouse/ClickHouse/pull/27328) ([tavplubix](https://github.com/tavplubix)).
* 병렬 포맷(CSV / TSV) 사용 시 발생하던 MySQL 프로토콜 문제를 수정했습니다. [#27326](https://github.com/ClickHouse/ClickHouse/pull/27326) ([Raúl Marín](https://github.com/Algunenano)).
* 샘플링이 있는 쿼리에서 발생하는 `Cannot find column` 오류를 수정했습니다. 해당 문제는 [#24574](https://github.com/ClickHouse/ClickHouse/issues/24574)에서 도입되었습니다. [#26522](https://github.com/ClickHouse/ClickHouse/issues/26522)를 수정했습니다. [#27301](https://github.com/ClickHouse/ClickHouse/pull/27301) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `PREWHERE`에서 `LowCardinality`를 사용하는 일부 쿼리에서 발생하던 `Expected ColumnLowCardinality, gotUInt8` 또는 `Bad cast from type DB::ColumnVector<char8_t> to DB::ColumnLowCardinality`와 같은 오류를 수정했습니다. 더 중요한 점으로, 오류 메시지에 공백이 누락되던 문제도 수정했습니다. [#23515](https://github.com/ClickHouse/ClickHouse/issues/23515)를 수정했습니다. [#27298](https://github.com/ClickHouse/ClickHouse/pull/27298) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `LIMIT BY` 및 `LIMIT OFFSET`와 함께 사용할 때 `distributed_push_down_limit = 1` 또는 `optimize_distributed_group_by_sharding_key = 1` 조합에서 발생하는 `distributed_group_by_no_merge = 2` 관련 문제를 수정했습니다. [#27249](https://github.com/ClickHouse/ClickHouse/pull/27249) ([Azat Khuzhin](https://github.com/azat)). 이는 사실상 아무도 사용하지 않는 드문 설정 조합입니다.
* 비복제 MergeTree에서 잘못된 파티션 때문에 멈춰 있던 mutation 문제를 수정했습니다. [#27248](https://github.com/ClickHouse/ClickHouse/pull/27248) ([Azat Khuzhin](https://github.com/azat)).
* 모호한 경우, 람다 함수에서는 다른 별칭이나 식별자보다 해당 인수를 우선합니다. [#27235](https://github.com/ClickHouse/ClickHouse/pull/27235) ([Raúl Marín](https://github.com/Algunenano)).
* 머지 조인의 컬럼 구조를 수정하고 [#27091](https://github.com/ClickHouse/ClickHouse/issues/27091)을 해결했습니다. [#27217](https://github.com/ClickHouse/ClickHouse/pull/27217) ([Vladimir C](https://github.com/vdimir)).
* 드물게 `system.detached_parts` 테이블에 일부 파트의 잘못된 정보가 포함되는 경우가 있었는데, 이 문제가 수정되었습니다. [#27114](https://github.com/ClickHouse/ClickHouse/issues/27114)을 수정했습니다. [#27183](https://github.com/ClickHouse/ClickHouse/pull/27183) ([tavplubix](https://github.com/tavplubix)).
* 빈 배열을 사용할 때 `multiSearch*` 함수에서 발생하는 초기화되지 않은 메모리 문제를 수정하고, [#27169](https://github.com/ClickHouse/ClickHouse/issues/27169)를 해결했습니다. [#27181](https://github.com/ClickHouse/ClickHouse/pull/27181) ([Vladimir C](https://github.com/vdimir)).
* GRPCServer의 동기화 문제를 수정했습니다. 이 PR은 [#27024](https://github.com/ClickHouse/ClickHouse/issues/27024)를 해결합니다. [#27064](https://github.com/ClickHouse/ClickHouse/pull/27064) ([Vitaly Baranov](https://github.com/vitlibar)).
* `cache`, `complex_key_cache`, `ssd_cache`, `complex_key_ssd_cache` 구성 파싱을 수정했습니다. `cache` 유형이 아닌 Dictionaries에서는 `allow_read_expired_keys`, `max_update_queue_size`, `update_queue_push_timeout_milliseconds`, `query_wait_timeout_milliseconds` 옵션이 파싱되지 않았습니다. [#27032](https://github.com/ClickHouse/ClickHouse/pull/27032) ([Maksim Kita](https://github.com/kitaisreal)).
* DROP\_RANGE와의 경쟁 상태로 인해 발생할 수 있는 mutation 스택 문제를 수정했습니다. [#27002](https://github.com/ClickHouse/ClickHouse/pull/27002) ([Azat Khuzhin](https://github.com/azat)).
* 이제 `ALTER TABLE ... PARTITION ID xxx`와 같은 쿼리에서 파티션 ID의 유효성을 검사합니다. [#25718](https://github.com/ClickHouse/ClickHouse/issues/25718)을 수정했습니다. [#26963](https://github.com/ClickHouse/ClickHouse/pull/26963) ([alesapin](https://github.com/alesapin)).
* 일부 경우 여러 조인을 사용할 때 발생하는 "알 수 없는 컬럼 이름" 오류를 수정하고 [#26899](https://github.com/ClickHouse/ClickHouse/issues/26899)를 해결했습니다. [#26957](https://github.com/ClickHouse/ClickHouse/pull/26957) ([Vladimir C](https://github.com/vdimir)).
* 사용자 지정 TLD를 읽을 때 버퍼가 더 작거나 파일이 더 크면 처리가 중단되던 문제를 수정했습니다. [#26948](https://github.com/ClickHouse/ClickHouse/pull/26948) ([Azat Khuzhin](https://github.com/azat)).
* `DEFAULT` 표현식이 없는 다른 비구체화 컬럼을 `DEFAULT` 컬럼이 참조할 때 발생하는 오류 `Missing columns: 'xxx'`를 수정했습니다. [#26591](https://github.com/ClickHouse/ClickHouse/issues/26591)을 해결했습니다. [#26900](https://github.com/ClickHouse/ClickHouse/pull/26900) ([alesapin](https://github.com/alesapin)).
* `library` 딕셔너리 소스의 `library-bridge`에서 딕셔너리 키 로딩 문제를 수정했습니다. [#26834](https://github.com/ClickHouse/ClickHouse/pull/26834) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 일부 combinator를 적용할 때 집계 함수 매개변수가 손실되어 `Conversion from AggregateFunction(topKArray, Array(String)) to AggregateFunction(topKArray(10), Array(String)) is not supported`와 같은 예외가 발생할 수 있었습니다. 이 문제가 수정되었습니다. [#26196](https://github.com/ClickHouse/ClickHouse/issues/26196), [#26433](https://github.com/ClickHouse/ClickHouse/issues/26433)을 수정합니다. [#26814](https://github.com/ClickHouse/ClickHouse/pull/26814) ([tavplubix](https://github.com/tavplubix)).
* `system.part_log`의 `REMOVE_PART`에 `event_time_microseconds` 값을 추가했습니다. 이전 버전에서는 이 값이 설정되지 않았습니다. [#26720](https://github.com/ClickHouse/ClickHouse/pull/26720) ([Azat Khuzhin](https://github.com/azat)).
* 데이터와 메타데이터 간 불일치를 방지하기 위해 ReplicatedMergeTree 테이블 종료 시 데이터를 삭제하지 않도록 했습니다. [#26716](https://github.com/ClickHouse/ClickHouse/pull/26716) ([nvartolomei](https://github.com/nvartolomei)).
* 간혹 `SET ROLE`이 올바르게 동작하지 않는 문제가 있었는데, 이 PR에서 이를 수정했습니다. [#26707](https://github.com/ClickHouse/ClickHouse/pull/26707) ([Vitaly Baranov](https://github.com/vitlibar)).
* 병렬 포맷팅 관련 몇 가지 수정 사항입니다 ([https://github.com/ClickHouse/ClickHouse/issues/26694](https://github.com/ClickHouse/ClickHouse/issues/26694)). [#26703](https://github.com/ClickHouse/ClickHouse/pull/26703) ([Raúl Marín](https://github.com/Algunenano)).
* 윈도우 함수에서 발생할 수 있는 잠재적인 `nullptr` 역참조 문제를 수정했습니다. 이 변경으로 [#25276](https://github.com/ClickHouse/ClickHouse/issues/25276)가 해결되었습니다. [#26668](https://github.com/ClickHouse/ClickHouse/pull/26668) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* 파일이 비어 있을 때 clickhouse-client 이력 파일 변환(3년 전 clickhouse-client 버전의 포맷에서 업그레이드하는 경우) 문제를 수정했습니다. [#26589](https://github.com/ClickHouse/ClickHouse/pull/26589) ([Azat Khuzhin](https://github.com/azat)).
* 일부 상황에서 표시될 수 있는 groupBitmapAnd/Or/Xor의 잘못된 함수명을 수정했습니다. [#26557](https://github.com/ClickHouse/ClickHouse/pull/26557) ([Amos Bird](https://github.com/amosbird)).
* clickhouse-server Docker 엔트리포인트의 `chown` 명령 검사 로직을 업데이트했습니다. 이로써 Kubernetes에서 클러스터 파드 재시작이 실패하거나 타임아웃되던 버그를 수정했습니다. [#26545](https://github.com/ClickHouse/ClickHouse/pull/26545) ([Ky Li](https://github.com/Kylinrix)).
* `RabbitMQ` 설정이 시작되지 않은 경우 `RabbitMQ` 종료 중 발생하는 크래시를 수정했습니다. [#26504](https://github.com/ClickHouse/ClickHouse/issues/26504)를 해결합니다. [#26529](https://github.com/ClickHouse/ClickHouse/pull/26529) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 딕셔너리 이름 또는 데이터베이스 이름을 따옴표로 감싼 경우 `CREATE DICTIONARY` 쿼리에서 발생하던 문제를 수정했습니다. [#26491](https://github.com/ClickHouse/ClickHouse/issues/26491)을 해결합니다. [#26508](https://github.com/ClickHouse/ClickHouse/pull/26508) ([Maksim Kita](https://github.com/kitaisreal)).
* 컬럼 별칭을 재작성한 후 깨지던 컬럼 이름 해석을 수정했습니다. 이 변경으로 [#26432](https://github.com/ClickHouse/ClickHouse/issues/26432)가 해결됩니다. [#26475](https://github.com/ClickHouse/ClickHouse/pull/26475) ([Amos Bird](https://github.com/amosbird)).
* 퍼징 중 발견된 msan 충돌 일부를 수정했습니다. [#22517](https://github.com/ClickHouse/ClickHouse/issues/22517)을 해결했습니다. [#26428](https://github.com/ClickHouse/ClickHouse/pull/26428) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `partial_merge_join`에서 무한히 이어지는 비조인 block stream 문제를 수정해 [#26325](https://github.com/ClickHouse/ClickHouse/issues/26325)를 해결했습니다. [#26374](https://github.com/ClickHouse/ClickHouse/pull/26374) ([Vladimir C](https://github.com/vdimir)).
* 삭제된 사용자로 로그인할 때 발생할 수 있는 비정상 종료 문제를 수정합니다. 이 PR은 [#26073](https://github.com/ClickHouse/ClickHouse/issues/26073)를 해결합니다. [#26363](https://github.com/ClickHouse/ClickHouse/pull/26363) ([Vitaly Baranov](https://github.com/vitlibar)).
* 여러 컬럼을 처리할 때 `optimize_distributed_group_by_sharding_key`를 수정했습니다(`optimize_skip_unused_shards=1`/`allow_nondeterministic_optimize_skip_unused_shards=1`이 설정되어 있고 세그먼트 분할 키 표현식에 여러 컬럼이 포함된 경우 잘못된 결과가 발생함). [#26353](https://github.com/ClickHouse/ClickHouse/pull/26353) ([Azat Khuzhin](https://github.com/azat)).
* 드물게 발생하던, 손실된 레플리카 복구 과정에서 레플리카 간 데이터가 불일치할 수 있는 버그를 수정했습니다. [#26321](https://github.com/ClickHouse/ClickHouse/pull/26321) ([tavplubix](https://github.com/tavplubix)).
* 내부 버퍼 끝에 이스케이프 시퀀스가 있는 경우 zstd 압축 해제를 수정했습니다(zstd 프레이밍 포맷으로 import/export할 때이며, 테이블 데이터와는 무관함). [#26013](https://github.com/ClickHouse/ClickHouse/issues/26013)을 해결합니다. [#26314](https://github.com/ClickHouse/ClickHouse/pull/26314) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 합계가 포함된 join의 논리적 오류를 수정하고 [#26017](https://github.com/ClickHouse/ClickHouse/issues/26017)을 해결했습니다. [#26250](https://github.com/ClickHouse/ClickHouse/pull/26250) ([Vladimir C](https://github.com/vdimir)).
* `system.stack_trace` 테이블의 `thread_name` 컬럼에서 불필요한 줄바꿈을 제거했습니다. 이로써 [#24124](https://github.com/ClickHouse/ClickHouse/issues/24124)가 수정되었습니다. [#26210](https://github.com/ClickHouse/ClickHouse/pull/26210) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 둘 이상의 `untuple` 표현식을 사용할 때 발생할 수 있는 잠재적 크래시를 수정했습니다. [#26179](https://github.com/ClickHouse/ClickHouse/pull/26179) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Enum에 0값이 정의되어 있지 않은 경우에도 널 허용 Enum의 `toString`에서 예외를 발생시키지 않도록 수정, [#25806](https://github.com/ClickHouse/ClickHouse/issues/25806) 해결. [#26123](https://github.com/ClickHouse/ClickHouse/pull/26123) ([Vladimir C](https://github.com/vdimir)).
* 쿼리 실행 중 예외가 발생했을 때 ClickHouse가 전송하는 MySQL 프로토콜 패킷의 잘못된 `sequence_id`를 수정했습니다. 이 문제로 인해 MySQL 클라이언트가 ClickHouse 서버와의 연결(connection)을 재설정할 수 있었습니다. [#21184](https://github.com/ClickHouse/ClickHouse/issues/21184)를 수정했습니다. [#26051](https://github.com/ClickHouse/ClickHouse/pull/26051) ([tavplubix](https://github.com/tavplubix)).
* `cutToFirstSignificantSubdomainCustom()`/`cutToFirstSignificantSubdomainCustomWithWWW()`/`firstSignificantSubdomainCustom()`가 상수에 대해 잘못된 타입을 반환해 `optimize_skip_unused_shards`가 작동하지 않던 문제를 수정했습니다:. [#26041](https://github.com/ClickHouse/ClickHouse/pull/26041) ([Azat Khuzhin](https://github.com/azat)).
* prewhere와 함께 일반 projection을 사용할 때 발생할 수 있는 헤더 불일치 문제를 수정했습니다. 이로써 [#26020](https://github.com/ClickHouse/ClickHouse/issues/26020) 문제가 해결됩니다. [#26038](https://github.com/ClickHouse/ClickHouse/pull/26038) ([Amos Bird](https://github.com/amosbird)).
* remote()에서 함수 없이 컬럼의 sharding\_key를 사용할 때 발생하던 문제를 수정했습니다 (이전에는 `select * from remote('127.1', system.one, dummy)`가 `Unknown column: dummy, there are only columns .` 오류를 발생시켰습니다). [#25824](https://github.com/ClickHouse/ClickHouse/pull/25824) ([Azat Khuzhin](https://github.com/azat)).
* `MaterializeMySQL`에서 SELECT할 때 발생하던 `Not found column ...` 및 `Missing column ...` 오류를 수정했습니다. [#23708](https://github.com/ClickHouse/ClickHouse/issues/23708), [#24830](https://github.com/ClickHouse/ClickHouse/issues/24830), [#25794](https://github.com/ClickHouse/ClickHouse/issues/25794)를 해결합니다. [#25822](https://github.com/ClickHouse/ClickHouse/pull/25822) ([tavplubix](https://github.com/tavplubix)).
* non-UInt64 타입에 대해 `optimize_skip_unused_shards_rewrite_in`을 수정했습니다(이전에는 결국 잘못된 세그먼트를 선택하거나 `Cannot infer type of an empty tuple` 또는 `Function tuple requires at least one argument` 오류가 발생할 수 있었습니다). [#25798](https://github.com/ClickHouse/ClickHouse/pull/25798) ([Azat Khuzhin](https://github.com/azat)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* 이제 stateful 테스트와 stateless 테스트를 무작위 시간대에서 실행합니다. [#12439](https://github.com/ClickHouse/ClickHouse/issues/12439)를 수정했습니다. 이제 Protobuf 형식에서 String을 DateTime으로 읽고 DateTime을 String으로 쓸 때 시간대를 반영합니다. 이제 Arrow 및 Parquet 포맷에서 UInt16을 DateTime으로 읽으면 이를 Date로 처리한 뒤 DateTime의 시간대를 반영해 DateTime으로 변환합니다. 이는 Arrow와 Parquet에서 Date가 UInt16으로 직렬화되기 때문입니다. 이제 GraphiteMergeTree는 시간 반올림에 시간대를 반영합니다. [#5098](https://github.com/ClickHouse/ClickHouse/issues/5098)를 수정했습니다. 작성자: @alexey-milovidov. [#15408](https://github.com/ClickHouse/ClickHouse/pull/15408) ([alesapin](https://github.com/alesapin)).
* `clickhouse-test`는 [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/templates/#synopsis) Template을 사용하는 SQL 테스트를 지원합니다. [#26579](https://github.com/ClickHouse/ClickHouse/pull/26579) ([Vladimir C](https://github.com/vdimir)).
* `clang-13`으로 빌드할 수 있도록 지원을 추가했습니다. 이로써 [#27705](https://github.com/ClickHouse/ClickHouse/issues/27705)가 해결됩니다. [#27714](https://github.com/ClickHouse/ClickHouse/pull/27714) ([alexey-milovidov](https://github.com/alexey-milovidov)). [#27777](https://github.com/ClickHouse/ClickHouse/pull/27777) ([Sergei Semin](https://github.com/syominsergey))
* 특정 CPU 명령어 집합 포함 여부를 선택해 빌드할 수 있도록 CMake 옵션을 추가했습니다. 이는 [#17469](https://github.com/ClickHouse/ClickHouse/issues/17469) 및 [#27509](https://github.com/ClickHouse/ClickHouse/issues/27509)를 위한 것입니다. [#27508](https://github.com/ClickHouse/ClickHouse/pull/27508) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 동적 라이브러리 사용 시 보조 프로그램의 링크 문제를 수정했습니다. [#26958](https://github.com/ClickHouse/ClickHouse/pull/26958) ([Raúl Marín](https://github.com/Algunenano)).
* RocksDB를 `2021-07-16` master로 업데이트했습니다. [#26411](https://github.com/ClickHouse/ClickHouse/pull/26411) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="clickhouse-release-v218-2021-08-12">
  ### ClickHouse 릴리스 v21.8, 2021-08-12
</div>

<div id="upgrade-notes">
  #### 업그레이드 참고 사항
</div>

* 새 버전에서는 시스템 로그 테이블(`system.query_log`, `system.query_thread_log`, `system.processes`, `system.opentelemetry_span_log`)에 `Map` 데이터 타입을 사용합니다. 이 테이블들은 새 데이터 타입으로 자동 생성됩니다. 기존 쿼리와의 호환성을 위해 가상 컬럼이 생성됩니다. [#18698](https://github.com/ClickHouse/ClickHouse/issues/18698)을 해결했습니다. [#23934](https://github.com/ClickHouse/ClickHouse/pull/23934), [#25773](https://github.com/ClickHouse/ClickHouse/pull/25773) ([hexiaoting](https://github.com/hexiaoting), [sundy-li](https://github.com/sundy-li), [Maksim Kita](https://github.com/kitaisreal)). 버전 21.8에서 이전 버전으로 *다운그레이드*하려면 로그가 있는 system 테이블을 수동으로 정리해야 합니다. `/var/lib/clickhouse/data/system/*_log`를 확인하십시오.

<div id="new-feature">
  #### 새로운 기능
</div>

* SQL/JSON 표준의 일부를 지원합니다. [#24148](https://github.com/ClickHouse/ClickHouse/pull/24148) ([l1tsolaiki](https://github.com/l1tsolaiki), [Kseniia Sumarokova](https://github.com/kssenii)).
* CPU 사용량, 디스크 사용량, 메모리 사용량, IO, 네트워크, 파일, 로드 평균, CPU 주파수, 열 센서, EDAC 카운터, 시스템 uptime에 관한 공통 시스템 메트릭을 `system.asynchronous_metrics` 및 `system.asynchronous_metric_log`에서 수집하며, 스케줄링 지터와 메트릭 수집에 소요된 시간에 대한 메트릭도 추가했습니다. 이는 ClickHouse에서 `atop`과 비슷하게 동작하며, 추가 도구를 설치하지 않아도 모니터링 데이터에 접근할 수 있게 해줍니다. [#9430](https://github.com/ClickHouse/ClickHouse/issues/9430)을 해결했습니다. [#24416](https://github.com/ClickHouse/ClickHouse/pull/24416) ([alexey-milovidov](https://github.com/alexey-milovidov), [Yegor Levankov](https://github.com/elevankoff)).
* MaterializedPostgreSQL 테이블 엔진과 데이터베이스 엔진을 추가했습니다. 이 데이터베이스 엔진을 사용하면 전체 데이터베이스 또는 데이터베이스 테이블의 일부만 레플리케이션할 수 있습니다. [#20470](https://github.com/ClickHouse/ClickHouse/pull/20470) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 새로운 함수 `leftPad()`, `rightPad()`, `leftPadUTF8()`, `rightPadUTF8()`를 추가했습니다. [#26075](https://github.com/ClickHouse/ClickHouse/pull/26075) ([Vitaly Baranov](https://github.com/vitlibar)).
* 인덱스 목록 맨 앞에 인덱스를 추가할 수 있도록 `ADD INDEX` 명령에 `FIRST` 키워드를 추가했습니다. [#25904](https://github.com/ClickHouse/ClickHouse/pull/25904) ([xjewer](https://github.com/xjewer)).
* 기존 data skipping indices에 대한 정보를 담은 `system.data_skipping_indices` 테이블을 도입했습니다. [#7659](https://github.com/ClickHouse/ClickHouse/issues/7659)를 해결했습니다. [#25693](https://github.com/ClickHouse/ClickHouse/pull/25693) ([Dmitry Novik](https://github.com/novikd)).
* `bin`/`unbin` 함수를 추가했습니다. [#25609](https://github.com/ClickHouse/ClickHouse/pull/25609) ([zhaoyu](https://github.com/zxc111)).
* `mapAdd` 및 `mapSubtract` 함수에서 `Map`과 `UInt128`, `Int128`, `UInt256`, `Int256` 타입을 지원합니다. [#25596](https://github.com/ClickHouse/ClickHouse/pull/25596) ([Ildus Kurbangaliev](https://github.com/ildus)).
* `DISTINCT ON (columns)` 표현식을 지원하며, [#25404](https://github.com/ClickHouse/ClickHouse/issues/25404)를 해결했습니다. [#25589](https://github.com/ClickHouse/ClickHouse/pull/25589) ([Zijie Lu](https://github.com/TszKitLo40)).
* 사용자 지정 설정을 기본값으로 재설정하고 테이블 메타데이터에서 제거하는 기능을 추가했습니다. 이를 통해 시스템/설정의 기본값을 몰라도 변경 사항을 롤백할 수 있습니다. [#14449](https://github.com/ClickHouse/ClickHouse/issues/14449)를 해결했습니다. [#17769](https://github.com/ClickHouse/ClickHouse/pull/17769) ([xjewer](https://github.com/xjewer)).
* `EXPLAIN PIPELINE graph = 1` 쿼리를 제출하면 Web UI에서 파이프라인을 그래프로 렌더링합니다. [#26067](https://github.com/ClickHouse/ClickHouse/pull/26067) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* 집계 함수를 컴파일할 수 있습니다. 활성화하려면 `compile_aggregate_expressions` 옵션을 사용하세요. [#24789](https://github.com/ClickHouse/ClickHouse/pull/24789) ([Maksim Kita](https://github.com/kitaisreal)).
* 컬럼이 많은 테이블을 읽어야 하는 짧은 쿼리의 지연 시간을 개선했습니다. [#26371](https://github.com/ClickHouse/ClickHouse/pull/26371) ([Anton Popov](https://github.com/CurtizJ)).

<div id="improvements">
  #### 개선사항
</div>

* 시스템 로그 테이블(`system.query_log`, `system.query_thread_log`, `system.processes`, `system.opentelemetry_span_log`)에 `Map` 데이터 타입을 사용합니다. 이들 테이블은 새 데이터 타입으로 자동 생성됩니다. 기존 쿼리와의 호환성을 위해 가상 컬럼이 생성됩니다. [#18698](https://github.com/ClickHouse/ClickHouse/issues/18698)을 해결했습니다. [#23934](https://github.com/ClickHouse/ClickHouse/pull/23934), [#25773](https://github.com/ClickHouse/ClickHouse/pull/25773) ([hexiaoting](https://github.com/hexiaoting), [sundy-li](https://github.com/sundy-li), [Maksim Kita](https://github.com/kitaisreal)).
* 속성이 하나뿐인 복합 키를 사용하는 딕셔너리에서 `dictGet`, `dictHas` 함수에 대해 키 표현식을 tuple로 감싸지 않아도 되도록 허용했습니다. [#26130](https://github.com/ClickHouse/ClickHouse/pull/26130) ([Maksim Kita](https://github.com/kitaisreal)).
* `AggregateFunction` 상태에서 `bin`/`hex` 함수를 구현했습니다. [#26094](https://github.com/ClickHouse/ClickHouse/pull/26094) ([zhaoyu](https://github.com/zxc111)).
* `empty` 및 `notEmpty` 함수에서 `UUID` 유형의 인수를 지원합니다. `UUID`가 모두 0인 경우 비어 있는 것으로 간주됩니다(nil UUID). [#3446](https://github.com/ClickHouse/ClickHouse/issues/3446)을 해결합니다. [#25974](https://github.com/ClickHouse/ClickHouse/pull/25974) ([zhaoyu](https://github.com/zxc111)).
* MySQL 프로토콜에 `SET SQL_SELECT_LIMIT` 지원을 추가했습니다. [#17115](https://github.com/ClickHouse/ClickHouse/issues/17115)를 종료합니다. [#25972](https://github.com/ClickHouse/ClickHouse/pull/25972) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 네트워크 상호작용에 대한 계측을 더 추가했습니다. recv/send 바이트용 Counter를 추가하고, recv/send 횟수용 Gauge를 추가했습니다. 누락된 문서를 추가했습니다. [#5897](https://github.com/ClickHouse/ClickHouse/issues/5897)을 종료했습니다. [#25962](https://github.com/ClickHouse/ClickHouse/pull/25962) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `optimize_move_to_prewhere_if_final` 설정을 추가했습니다. 쿼리에 `FINAL`이 있으면 `move_to_prewhere` 최적화는 `optimize_move_to_prewhere`와 `optimize_move_to_prewhere_if_final`이 모두 활성화된 경우에만 적용됩니다. [#8684](https://github.com/ClickHouse/ClickHouse/issues/8684)를 종료합니다. [#25940](https://github.com/ClickHouse/ClickHouse/pull/25940) ([Kseniia Sumarokova](https://github.com/kssenii)).
* JOIN된 테이블에서 복잡한 따옴표로 묶인 식별자를 허용합니다. [#17861](https://github.com/ClickHouse/ClickHouse/issues/17861)을 해결했습니다. [#25924](https://github.com/ClickHouse/ClickHouse/pull/25924) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Nested` 데이터 타입에서 유니코드(예: 중국어, 키릴 문자) 컴포넌트를 지원합니다. [#25594](https://github.com/ClickHouse/ClickHouse/issues/25594)를 해결합니다. [#25923](https://github.com/ClickHouse/ClickHouse/pull/25923) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `aggregate_functions_null_for_empty`와 함께 `quantiles*` 함수가 작동할 수 있도록 허용합니다. [#25892](https://github.com/ClickHouse/ClickHouse/issues/25892)를 해결합니다. [#25919](https://github.com/ClickHouse/ClickHouse/pull/25919) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 매개변수화된 집계 함수의 매개변수로 리터럴뿐만 아니라 임의의 상수 표현식(예: `1 + 2`)도 사용할 수 있습니다. 또한 매개변수화된 쿼리(예: `{param:UInt8}`)의 쿼리 매개변수를 매개변수화된 집계 함수 내에서도 사용할 수 있습니다. [#11607](https://github.com/ClickHouse/ClickHouse/issues/11607)을 해결합니다. [#25910](https://github.com/ClickHouse/ClickHouse/pull/25910) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 잘못된 `Date`를 파싱하려고 할 때 예외가 올바르게 발생하도록 했습니다. [#6481](https://github.com/ClickHouse/ClickHouse/issues/6481)을 해결합니다. [#25909](https://github.com/ClickHouse/ClickHouse/pull/25909) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 구성에서 여러 include를 지원합니다. 여러 소스의 사용자 구성과 원격 서버 구성을 포함할 수 있습니다. `from_zk`, `from_env` 또는 `incl` 속성이 있는 `<include />` 요소를 추가하면 해당 대체 값으로 치환됩니다. [#24404](https://github.com/ClickHouse/ClickHouse/pull/24404) ([nvartolomei](https://github.com/nvartolomei)).
* `"null"`이라는 이름의 컬럼(백틱 또는 큰따옴표로 지정해야 함)과 `ON CLUSTER`가 포함된 쿼리를 지원합니다. [#24035](https://github.com/ClickHouse/ClickHouse/issues/24035)를 해결합니다. [#25907](https://github.com/ClickHouse/ClickHouse/pull/25907) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `JSONExtract`가 이제 `LowCardinality`, `Decimal`, `UUID`를 지원합니다. [#24606](https://github.com/ClickHouse/ClickHouse/issues/24606)을 해결했습니다. [#25900](https://github.com/ClickHouse/ClickHouse/pull/25900) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `readline` 포맷의 이력 파일을 `replxx` 포맷으로 변환합니다. [#25888](https://github.com/ClickHouse/ClickHouse/pull/25888) ([Azat Khuzhin](https://github.com/azat)).
* `DROP PART` 이후 또는 빈 파트가 백그라운드에서 삭제된 후 서로 겹치는 파트가 발생할 수 있는 문제를 수정했습니다. [#25884](https://github.com/ClickHouse/ClickHouse/pull/25884) ([alesapin](https://github.com/alesapin)).
* `ReplicatedMergeTree` 테이블에서 손실된 파트 처리가 개선되었습니다. `ReplicationQueue`에서 드물게 발생하는 불일치를 수정했습니다. [#10368](https://github.com/ClickHouse/ClickHouse/issues/10368)을 수정했습니다. [#25820](https://github.com/ClickHouse/ClickHouse/pull/25820) ([alesapin](https://github.com/alesapin)).
* 작업 디렉터리를 읽을 수 없는 경우에도 clickhouse-client를 시작할 수 있도록 합니다. [#25817](https://github.com/ClickHouse/ClickHouse/pull/25817) ([ianton-ru](https://github.com/ianton-ru)).
* `Merge` 스토리지에서 발생하는 "사용 가능한 컬럼이 없습니다" 오류를 수정했습니다. [#25801](https://github.com/ClickHouse/ClickHouse/pull/25801) ([Azat Khuzhin](https://github.com/azat)).
* MySQL Engine이 이제 MySQL과 ClickHouse 사이에서 컬럼 주석을 교환할 수 있도록 지원합니다. [#25795](https://github.com/ClickHouse/ClickHouse/pull/25795) ([Storozhuk Kostiantyn](https://github.com/sand6255)).
* 빈 집합에서 `GROUP BY` 상수 동작의 일관성 문제를 수정했습니다. [#6842](https://github.com/ClickHouse/ClickHouse/issues/6842)를 해결합니다. [#25786](https://github.com/ClickHouse/ClickHouse/pull/25786) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `ReplicatedMergeTree`에서 `DROP PARTITION` 및 `TRUNCATE` 시 해당 파티션에서 이미 실행 중인 머지를 취소합니다. [#17151](https://github.com/ClickHouse/ClickHouse/issues/17151)을 해결했습니다. [#25684](https://github.com/ClickHouse/ClickHouse/pull/25684) ([tavplubix](https://github.com/tavplubix)).
* MaterializeMySQL에서 ENUM\` 데이터 타입을 지원합니다. [#25676](https://github.com/ClickHouse/ClickHouse/pull/25676) ([Storozhuk Kostiantyn](https://github.com/sand6255)).
* JOIN에서 구체화된 컬럼 및 별칭 컬럼을 지원하고, [#13274](https://github.com/ClickHouse/ClickHouse/issues/13274)를 해결했습니다. [#25634](https://github.com/ClickHouse/ClickHouse/pull/25634) ([Vladimir C](https://github.com/vdimir)).
* `ALTER TABLE ... DETACH`와 백그라운드 머지 사이에서 발생할 수 있는 논리적 경쟁 상태를 수정했습니다. [#25605](https://github.com/ClickHouse/ClickHouse/pull/25605) ([Azat Khuzhin](https://github.com/azat)).
* `NetworkReceiveElapsedMicroseconds` 메트릭에 클라이언트가 `INSERT`할 데이터를 보내기를 기다리는 시간이 올바르게 포함되도록 했습니다. [#9958](https://github.com/ClickHouse/ClickHouse/issues/9958)를 해결했습니다. [#25602](https://github.com/ClickHouse/ClickHouse/pull/25602) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* S3 및 HDFS에 대한 `TRUNCATE TABLE`을 지원합니다. [#25530](https://github.com/ClickHouse/ClickHouse/issues/25530)을 해결했습니다. [#25550](https://github.com/ClickHouse/ClickHouse/pull/25550) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 백그라운드 작업 실행(머지, 뮤테이션, fetches)에 사용하는 풀의 스레드 수를 변경할 수 있도록 config를 동적으로 다시 로드하는 기능을 지원합니다. [#25548](https://github.com/ClickHouse/ClickHouse/pull/25548) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `JSONExtract`를 사용해 문자열이 아닌 요소도 문자열로 추출할 수 있도록 했습니다. 이는 [#25414](https://github.com/ClickHouse/ClickHouse/issues/25414) 관련 변경입니다. [#25452](https://github.com/ClickHouse/ClickHouse/pull/25452) ([Amos Bird](https://github.com/amosbird)).
* `StorageMerge`의 `Database` 인수에서 정규식 사용을 지원합니다. [#776](https://github.com/ClickHouse/ClickHouse/issues/776)를 종료했습니다. [#25064](https://github.com/ClickHouse/ClickHouse/pull/25064) ([flynn](https://github.com/ucasfl)).
* 웹 UI: 값이 URL로 보이면 링크를 자동으로 생성합니다. [#25965](https://github.com/ClickHouse/ClickHouse/pull/25965) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Centos 8과 같이 `systemd`를 사용하는 시스템에서도 `sudo service clickhouse-server start`가 동작하도록 했습니다. [#14298](https://github.com/ClickHouse/ClickHouse/issues/14298)을 해결했습니다. [#17799](https://github.com/ClickHouse/ClickHouse/issues/17799)을 해결했습니다. [#25921](https://github.com/ClickHouse/ClickHouse/pull/25921) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 일부 경우 `SET ROLE`의 잘못된 동작을 수정했습니다. [#26707](https://github.com/ClickHouse/ClickHouse/pull/26707) ([Vitaly Baranov](https://github.com/vitlibar)).
* 윈도우 함수에서 발생할 수 있는 `nullptr` 역참조 문제를 수정했습니다. [#25276](https://github.com/ClickHouse/ClickHouse/issues/25276) 문제를 수정했습니다. [#26668](https://github.com/ClickHouse/ClickHouse/pull/26668) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* `groupBitmapAnd/Or/Xor`의 잘못된 함수명을 수정했습니다. [#26557](https://github.com/ClickHouse/ClickHouse/pull/26557) 문제를 해결했습니다 ([Amos Bird](https://github.com/amosbird)).
* RabbitMQ 설정이 시작되지 않은 상태에서 RabbitMQ 종료 시 발생하던 충돌을 수정했습니다. [#26504](https://github.com/ClickHouse/ClickHouse/issues/26504)을 해결했습니다. [#26529](https://github.com/ClickHouse/ClickHouse/pull/26529) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 딕셔너리 이름 또는 데이터베이스 이름을 따옴표로 감싼 경우 `CREATE DICTIONARY` 쿼리에서 발생하던 문제를 수정했습니다. [#26491](https://github.com/ClickHouse/ClickHouse/issues/26491)을 해결했습니다. [#26508](https://github.com/ClickHouse/ClickHouse/pull/26508) ([Maksim Kita](https://github.com/kitaisreal)).
* 컬럼 별칭을 다시 작성한 후 깨진 이름 확인 문제가 수정되었습니다. [#26432](https://github.com/ClickHouse/ClickHouse/issues/26432)를 수정했습니다. [#26475](https://github.com/ClickHouse/ClickHouse/pull/26475) ([Amos Bird](https://github.com/amosbird)).
* `partial_merge_join` 종료 시 조인되지 않은 블록 스트림이 무한히 이어지는 문제를 수정했습니다 [#26325](https://github.com/ClickHouse/ClickHouse/issues/26325). [#26374](https://github.com/ClickHouse/ClickHouse/pull/26374) ([Vladimir C](https://github.com/vdimir)).
* 삭제된 사용자로 로그인할 때 발생할 수 있는 크래시를 수정했습니다. [#26073](https://github.com/ClickHouse/ClickHouse/issues/26073)를 수정했습니다. [#26363](https://github.com/ClickHouse/ClickHouse/pull/26363) ([Vitaly Baranov](https://github.com/vitlibar)).
* 여러 컬럼을 사용하는 경우의 `optimize_distributed_group_by_sharding_key`를 수정했습니다(`optimize_skip_unused_shards=1`/`allow_nondeterministic_optimize_skip_unused_shards=1` 사용 시 세그먼트 분할 키 표현식에 여러 컬럼이 포함되어 있으면 잘못된 결과가 발생함). [#26353](https://github.com/ClickHouse/ClickHouse/pull/26353) ([Azat Khuzhin](https://github.com/azat)).
* `CAST`에서 `Date`를 `DateTime`(또는 `DateTime64`)으로 변환할 때 `DateTime` 타입의 시간대를 사용하지 않았습니다. 이로 인해 `Date`와 `DateTime` 간 비교에도 영향이 있을 수 있습니다. `Date`와 `DateTime`의 공통 타입을 추론할 때도 해당 시간대를 사용하지 않았습니다. 이 문제는 `if` 함수와 배열 생성 결과에 영향을 주었습니다. [#24128](https://github.com/ClickHouse/ClickHouse/issues/24128)을 해결합니다. [#24129](https://github.com/ClickHouse/ClickHouse/pull/24129) ([Maksim Kita](https://github.com/kitaisreal)).
* 레플리카 간 불일치를 초래할 수 있는 유실된 레플리카 복구 과정의 드문 버그를 수정했습니다. [#26321](https://github.com/ClickHouse/ClickHouse/pull/26321) ([tavplubix](https://github.com/tavplubix)).
* 내부 버퍼 끝에 이스케이프 시퀀스가 있을 때 zstd 압축 해제가 올바르게 동작하도록 수정했습니다. [#26013](https://github.com/ClickHouse/ClickHouse/issues/26013)을 해결합니다. [#26314](https://github.com/ClickHouse/ClickHouse/pull/26314) ([Kseniia Sumarokova](https://github.com/kssenii)).
* totals가 포함된 JOIN의 논리 오류를 수정하고 [#26017](https://github.com/ClickHouse/ClickHouse/issues/26017)을 해결했습니다. [#26250](https://github.com/ClickHouse/ClickHouse/pull/26250) ([Vladimir C](https://github.com/vdimir)).
* `system.stack_trace` 테이블의 `thread_name` 컬럼에서 불필요한 줄바꿈을 제거했습니다. [#24124](https://github.com/ClickHouse/ClickHouse/issues/24124)를 수정했습니다. [#26210](https://github.com/ClickHouse/ClickHouse/pull/26210) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `LowCardinality` 컬럼의 `joinGet` 문제를 수정하고, [#25993](https://github.com/ClickHouse/ClickHouse/issues/25993)를 해결했습니다. [#26118](https://github.com/ClickHouse/ClickHouse/pull/26118) ([Vladimir C](https://github.com/vdimir)).
* `validate_polygons` 설정이 꺼져 있을 경우 `pointInPolygon`에서 발생할 수 있는 충돌 문제를 수정했습니다. [#26113](https://github.com/ClickHouse/ClickHouse/pull/26113) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 존재하지 않는 원격 디렉터리를 순회할 때 발생하던 예외를 수정했습니다. [#26087](https://github.com/ClickHouse/ClickHouse/pull/26087) ([ianton-ru](https://github.com/ianton-ru)).
* ZooKeeper client의 `abort`로 인해 드물게 발생하던 server 충돌을 수정했습니다. [#25813](https://github.com/ClickHouse/ClickHouse/issues/25813)을 해결합니다. [#26079](https://github.com/ClickHouse/ClickHouse/pull/26079) ([alesapin](https://github.com/alesapin)).
* 일부 경우 `right subquery join`에서 스레드 수를 잘못 추정하던 문제를 수정했습니다. [#24075](https://github.com/ClickHouse/ClickHouse/issues/24075)를 해결했습니다. [#26052](https://github.com/ClickHouse/ClickHouse/pull/26052) ([Vladimir C](https://github.com/vdimir)).
* 쿼리 실행 중 예외 발생 시 ClickHouse가 전송하는 MySQL 프로토콜 패킷의 잘못된 `sequence_id`를 수정했습니다. 이 문제로 인해 MySQL 클라이언트가 ClickHouse 서버와의 연결을 재설정할 수 있었습니다. [#21184](https://github.com/ClickHouse/ClickHouse/issues/21184)를 수정했습니다. [#26051](https://github.com/ClickHouse/ClickHouse/pull/26051) ([tavplubix](https://github.com/tavplubix)).
* `PREWHERE`와 함께 일반 projection을 사용할 때 발생할 수 있는 헤더 불일치 문제를 수정했습니다. [#26020](https://github.com/ClickHouse/ClickHouse/issues/26020). [#26038](https://github.com/ClickHouse/ClickHouse/pull/26038) ([Amos Bird](https://github.com/amosbird)).
* 정수 키를 가진 `Map`을 `JSON`으로 포맷할 때 발생하던 문제를 수정했습니다. [#25982](https://github.com/ClickHouse/ClickHouse/pull/25982) ([Anton Popov](https://github.com/CurtizJ)).
* 쿼리 프로파일러 스택 언와인딩 중 발생할 수 있는 교착 상태를 수정했습니다. [#25968](https://github.com/ClickHouse/ClickHouse/issues/25968)을 수정했습니다. [#25970](https://github.com/ClickHouse/ClickHouse/pull/25970) ([Maksim Kita](https://github.com/kitaisreal)).
* 잘못된 인수로 `dictGet()`을 호출할 때 발생하는 충돌을 수정했습니다. [#25913](https://github.com/ClickHouse/ClickHouse/pull/25913) ([Vitaly Baranov](https://github.com/vitlibar)).
* PostgreSQL 엔진의 `scram-sha-256` authentication 문제를 수정했습니다. [#24516](https://github.com/ClickHouse/ClickHouse/issues/24516)을 해결합니다. [#25906](https://github.com/ClickHouse/ClickHouse/pull/25906) ([Kseniia Sumarokova](https://github.com/kssenii)).
* background pool이 가득 찼을 때 백그라운드 작업의 백오프가 지나치게 길어지는 문제를 수정했습니다. [#25836](https://github.com/ClickHouse/ClickHouse/issues/25836) 관련 수정입니다. [#25893](https://github.com/ClickHouse/ClickHouse/pull/25893) ([alesapin](https://github.com/alesapin)).
* 기본 페이지 크기가 아닌 경우의 ARM 예외 처리를 수정했습니다. [#25512](https://github.com/ClickHouse/ClickHouse/issues/25512), [#25044](https://github.com/ClickHouse/ClickHouse/issues/25044), [#24901](https://github.com/ClickHouse/ClickHouse/issues/24901), [#23183](https://github.com/ClickHouse/ClickHouse/issues/23183), [#20221](https://github.com/ClickHouse/ClickHouse/issues/20221), [#19703](https://github.com/ClickHouse/ClickHouse/issues/19703), [#19028](https://github.com/ClickHouse/ClickHouse/issues/19028), [#18391](https://github.com/ClickHouse/ClickHouse/issues/18391), [#18121](https://github.com/ClickHouse/ClickHouse/issues/18121), [#17994](https://github.com/ClickHouse/ClickHouse/issues/17994), [#12483](https://github.com/ClickHouse/ClickHouse/issues/12483)를 해결했습니다. [#25854](https://github.com/ClickHouse/ClickHouse/pull/25854) ([Maksim Kita](https://github.com/kitaisreal)).
* `remote()`에서 함수 없이 지정된 컬럼의 sharding\_key를 수정했습니다(이전에는 `select * from remote('127.1', system.one, dummy)`로 인해 `Unknown column: dummy, there are only columns .` 오류가 발생했습니다). [#25824](https://github.com/ClickHouse/ClickHouse/pull/25824) ([Azat Khuzhin](https://github.com/azat)).
* `MaterializeMySQL`에서 조회할 때 발생하던 `Not found column ...` 및 `Missing column ...` 오류를 수정했습니다. [#23708](https://github.com/ClickHouse/ClickHouse/issues/23708), [#24830](https://github.com/ClickHouse/ClickHouse/issues/24830), [#25794](https://github.com/ClickHouse/ClickHouse/issues/25794)를 해결합니다. [#25822](https://github.com/ClickHouse/ClickHouse/pull/25822) ([tavplubix](https://github.com/tavplubix)).
* `optimize_skip_unused_shards_rewrite_in`을 `UInt64`가 아닌 타입에서 수정했습니다(그렇지 않으면 잘못된 세그먼트를 선택하거나 `Cannot infer type of an empty tuple` 또는 `Function tuple requires at least one argument` 오류가 발생할 수 있습니다). [#25798](https://github.com/ClickHouse/ClickHouse/pull/25798) ([Azat Khuzhin](https://github.com/azat)).
* `ReplicatedMergeTree` 테이블에서 드물게 발생하는 `DROP PART` 쿼리 버그를 수정했습니다. 이 버그로 인해 `Unexpected merged part intersecting drop range` 오류 메시지가 발생할 수 있습니다. [#25783](https://github.com/ClickHouse/ClickHouse/pull/25783) ([alesapin](https://github.com/alesapin)).
* `GROUP BY` 표현식이 있는 `TTL`에서 파트 내 첫 실행 후 `TTL`이 더 이상 실행되지 않는 버그를 수정했습니다. [#25743](https://github.com/ClickHouse/ClickHouse/pull/25743) ([alesapin](https://github.com/alesapin)).
* StorageMerge에서 별칭이 있는 테이블에 접근할 수 있도록 했습니다. [#6051](https://github.com/ClickHouse/ClickHouse/issues/6051)를 해결했습니다. [#25694](https://github.com/ClickHouse/ClickHouse/pull/25694) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 일부 경우 dict join이 느리게 동작하던 문제를 수정하고, [#24209](https://github.com/ClickHouse/ClickHouse/issues/24209)를 해결했습니다. [#25618](https://github.com/ClickHouse/ClickHouse/pull/25618) ([Vladimir C](https://github.com/vdimir)).
* TTL 표현식에 포함되는 컬럼의 `ALTER MODIFY COLUMN` 관련 문제를 수정했습니다. [#25554](https://github.com/ClickHouse/ClickHouse/pull/25554) ([Anton Popov](https://github.com/CurtizJ)).
* `PREWHERE`에서 UInt8이 아닌 유형으로 발생하는 assertion 오류를 수정하고 [#19589](https://github.com/ClickHouse/ClickHouse/issues/19589)를 해결했습니다. [#25484](https://github.com/ClickHouse/ClickHouse/pull/25484) ([Vladimir C](https://github.com/vdimir)).
* 퍼징으로 발견된 일부 msan 크래시를 수정했습니다. [#22517](https://github.com/ClickHouse/ClickHouse/issues/22517)을 해결합니다. [#26428](https://github.com/ClickHouse/ClickHouse/pull/26428) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `clickhouse-server` Docker 엔트리포인트에서 `chown` cmd 확인 로직을 업데이트했습니다. 이 변경으로 Kubernetes에서 발생하는 'cluster pod restart failed (or timeout)' 오류를 해결합니다. [#26545](https://github.com/ClickHouse/ClickHouse/pull/26545) ([Ky Li](https://github.com/Kylinrix)).

<div id="clickhouse-release-v217-2021-07-09">
  ### ClickHouse 릴리스 v21.7, 2021-07-09
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* 명시적으로 정의된 큰 Set이 있는 쿼리의 성능을 개선했습니다. 호환성 설정 `legacy_column_name_of_tuple_literal`를 추가했습니다. 21.7 미만 버전에서 그 이상의 버전으로 클러스터를 롤링 업데이트하는 동안에는 이 값을 `true`로 설정하는 것이 좋습니다. 그렇지 않으면 업데이트 중 `IN` 절에 명시적으로 정의된 Set이 있는 분산 쿼리가 실패할 수 있습니다. [#25371](https://github.com/ClickHouse/ClickHouse/pull/25371) ([Anton Popov](https://github.com/CurtizJ)).
* clickhouse-keeper(ZooKeeper의 실험적 대안)의 최대 버퍼 크기에 대해 이전/이후 버전과 호환되지 않는 변경이 있습니다. 나중에 하는 것보다 지금(프로덕션 적용 전) 하는 편이 더 낫습니다. [#25421](https://github.com/ClickHouse/ClickHouse/pull/25421) ([alesapin](https://github.com/alesapin)).

<div id="new-feature-3">
  #### 새 기능
</div>

* XML의 대안으로 YAML 포맷 구성을 지원합니다. 이로써 [#3607](https://github.com/ClickHouse/ClickHouse/issues/3607)이 해결되었습니다. [#21858](https://github.com/ClickHouse/ClickHouse/pull/21858) ([BoloniniD](https://github.com/BoloniniD)).
* 데이터는 (아마도) 존재하지만 ZooKeeper 메타데이터가 손실된 경우 복제된 테이블을 복원하는 방법을 제공합니다. [#13458](https://github.com/ClickHouse/ClickHouse/issues/13458)을 해결합니다. [#13652](https://github.com/ClickHouse/ClickHouse/pull/13652) ([Mike Kot](https://github.com/myrrc)).
* Arrow/Parquet/ORC에서 struct와 맵을, Arrow 입력/출력 포맷에서 딕셔너리를 지원합니다. 새로운 설정 `output_format_arrow_low_cardinality_as_dictionary`를 도입했습니다. [#24341](https://github.com/ClickHouse/ClickHouse/pull/24341) ([Kruglov Pavel](https://github.com/Avogar)).
* 딕셔너리에서 `Array` 타입 지원을 추가했습니다. [#25119](https://github.com/ClickHouse/ClickHouse/pull/25119) ([Maksim Kita](https://github.com/kitaisreal)).
* 함수 `bitPositionsToArray`를 추가했습니다. [#23792](https://github.com/ClickHouse/ClickHouse/issues/23792)를 해결합니다. 작성자: \[Kevin Wan] (@MaxWk). [#25394](https://github.com/ClickHouse/ClickHouse/pull/25394) ([Maksim Kita](https://github.com/kitaisreal)).
* 'Friday' 또는 'April'과 같은 이름을 반환하는 함수 `dateName`을 추가했습니다. 작성자: \[Daniil Kondratyev] (@dankondr). [#25372](https://github.com/ClickHouse/ClickHouse/pull/25372) ([Maksim Kita](https://github.com/kitaisreal)).
* 컬럼을 JSON 표현으로 직렬화하는 `toJSONString` 함수를 추가했습니다. [#25164](https://github.com/ClickHouse/ClickHouse/pull/25164) ([Amos Bird](https://github.com/amosbird)).
* 이제 `query_log`에는 새 컬럼 2개(`initial_query_start_time`, `initial_query_start_time_microsecond`)가 추가되어, 분산 쿼리가 있는 경우 해당 시작 시간을 기록합니다. [#25022](https://github.com/ClickHouse/ClickHouse/pull/25022) ([Amos Bird](https://github.com/amosbird)).
* 집계 함수 `segmentLengthSum`을 추가했습니다. [#24250](https://github.com/ClickHouse/ClickHouse/pull/24250) ([flynn](https://github.com/ucasfl)).
* 모든 IN/JOIN을 기본적으로 GLOBAL IN/JOIN으로 설정하는 새 불리언 설정 `prefer_global_in_and_join`을 추가했습니다. [#23434](https://github.com/ClickHouse/ClickHouse/pull/23434) ([Amos Bird](https://github.com/amosbird)).
* `Join` 테이블 엔진에서 `ALTER DELETE` 쿼리를 지원합니다. [#23260](https://github.com/ClickHouse/ClickHouse/pull/23260) ([foolchi](https://github.com/foolchi)).
* 집계 함수 `quantileBFloat16`과 이에 대응하는 `quantilesBFloat16` 및 `medianBFloat16`을 추가했습니다. 이는 상대 오차가 0.390625%를 넘지 않는 매우 단순하고 빠른 분위수 추정기입니다. 이로써 [#16641](https://github.com/ClickHouse/ClickHouse/issues/16641)이 해결되었습니다. [#23204](https://github.com/ClickHouse/ClickHouse/pull/23204) ([Ivan Novitskiy](https://github.com/RedClusive)).
* `flow analysis`에 유용한 함수 `sequenceNextNode()`를 구현했습니다. [#19766](https://github.com/ClickHouse/ClickHouse/pull/19766) ([achimbab](https://github.com/achimbab)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* HDFS 상의 가상 파일 시스템 지원이 추가되었습니다. [#11058](https://github.com/ClickHouse/ClickHouse/pull/11058) ([overshov](https://github.com/overshov)) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 이제 clickhouse-keeper(실험적인 ZooKeeper 대안)에서 ZooKeeper와 유사한 `digest` ACL을 지원합니다. [#24448](https://github.com/ClickHouse/ClickHouse/pull/24448) ([alesapin](https://github.com/alesapin)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* 읽는 데이터 양을 줄이기 위해 일부 함수를 서브컬럼을 읽는 방식으로 변환하는 최적화가 추가되었습니다. 예를 들어, 구문 `col IS NULL`은 서브컬럼 `col.null`을 읽는 것으로 변환됩니다. 이 최적화는 `optimize_functions_to_subcolumns` 설정으로 활성화할 수 있으며, 현재는 기본적으로 비활성화되어 있습니다. [#24406](https://github.com/ClickHouse/ClickHouse/pull/24406) ([Anton Popov](https://github.com/CurtizJ)).
* 더 많은 컬럼을 가능한 별칭 표현식으로 재작성하도록 개선했습니다. 이를 통해 프로젝션과 같은 더 나은 최적화가 가능해질 수 있습니다. [#24405](https://github.com/ClickHouse/ClickHouse/pull/24405) ([Amos Bird](https://github.com/amosbird)).
* `bloom_filter` 유형의 인덱스는 상수 배열이 포함된 `hasAny` 함수 표현식에 사용할 수 있습니다. 이 변경으로 다음 이슈가 해결됩니다: [#24291](https://github.com/ClickHouse/ClickHouse/issues/24291). [#24900](https://github.com/ClickHouse/ClickHouse/pull/24900) ([Vasily Nemkov](https://github.com/Enmk)).
* RabbitMQ 큐가 비어 있을 때 읽기 시도를 다시 예약하도록 지수 백오프를 추가했습니다. (ClickHouse는 RabbitMQ에서 데이터를 가져오는 기능을 지원합니다.) 다음 이슈를 해결합니다: [#24340](https://github.com/ClickHouse/ClickHouse/issues/24340). [#24415](https://github.com/ClickHouse/ClickHouse/pull/24415) ([Kseniia Sumarokova](https://github.com/kssenii)).

<div id="improvement-3">
  #### 개선
</div>

* 복제에 사용할 네트워크 대역폭을 제한할 수 있도록 했습니다. 두 개의 Replicated\*MergeTree 설정인 `max_replicated_fetches_network_bandwidth` 및 `max_replicated_sends_network_bandwidth`를 추가하여 테이블의 복제 fetch/send 최대 속도를 제한할 수 있습니다. `default` 사용자 profile에 서버 전역 설정 두 개(`max_replicated_fetches_network_bandwidth_for_server` 및 `max_replicated_sends_network_bandwidth_for_server`)도 추가하여 모든 테이블의 복제 최대 속도를 제한할 수 있습니다. 이 설정은 완벽하게 정확히 적용되지는 않습니다. 기본적으로 비활성화되어 있습니다. [#1821](https://github.com/ClickHouse/ClickHouse/issues/1821)을 수정합니다. [#24573](https://github.com/ClickHouse/ClickHouse/pull/24573) ([alesapin](https://github.com/alesapin)).
* ODBC 및 Library 브리지에 리소스 제약 및 격리를 적용했습니다. 브리지 프로세스에는 별도의 `clickhouse-bridge` 그룹과 사용자를 사용합니다. 브리지가 OOM killer에 의해 가장 먼저 종료되도록 oom\_score\_adj를 설정합니다. 최대 RSS를 1 GiB로 설정합니다. [#23861](https://github.com/ClickHouse/ClickHouse/issues/23861)을 해결합니다. [#25280](https://github.com/ClickHouse/ClickHouse/pull/25280) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 주 `clickhouse` 바이너리에 독립 실행형 `clickhouse-keeper` 심볼릭 링크를 추가했습니다. 이제 주 ClickHouse 서버 없이도 조정 기능을 실행할 수 있습니다. [#24059](https://github.com/ClickHouse/ClickHouse/pull/24059) ([alesapin](https://github.com/alesapin)).
* `VIEW`에 대한 쿼리에는 전역 설정을 사용합니다. `VIEW`에 대한 쿼리가 로컬 설정을 사용할 때, `CREATE VIEW`와 `SELECT`의 설정이 서로 다르면 오류가 발생하던 동작을 수정했습니다. 이제 `VIEW`는 이러한 변경된 설정을 사용하지 않지만, `CREATE VIEW` 쿼리의 `SETTINGS` 섹션에서 추가 설정을 계속 전달할 수 있습니다. [#20551](https://github.com/ClickHouse/ClickHouse/issues/20551)을 종료했습니다. [#24095](https://github.com/ClickHouse/ClickHouse/pull/24095) ([Vladimir](https://github.com/vdimir)).
* 서버 시작 시 파티션 ID가 올바르지 않은 파트는 제거되지 않고 항상 분리된 상태가 되었습니다. [#25070](https://github.com/ClickHouse/ClickHouse/issues/25070). [#25166](https://github.com/ClickHouse/ClickHouse/pull/25166) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 백그라운드 스케줄 풀 크기를 128로 늘렸습니다(`background_schedule_pool_size` 설정). 이를 통해 Zookeeper 연결이 느릴 때 복제 큐가 멈추는 현상을 방지할 수 있습니다. [#25072](https://github.com/ClickHouse/ClickHouse/pull/25072) ([alesapin](https://github.com/alesapin)).
* 백그라운드에서 한 번에 머지할 수 있는 파트 수를 제한하는 MergeTree 설정 `max_parts_to_merge_at_once`를 추가했습니다. `OPTIMIZE FINAL` 쿼리에는 영향을 주지 않습니다. [#1820](https://github.com/ClickHouse/ClickHouse/issues/1820)을 수정했습니다. [#24496](https://github.com/ClickHouse/ClickHouse/pull/24496) ([alesapin](https://github.com/alesapin)).
* 파티션 프루닝에서 `NOT IN` 연산자를 사용할 수 있도록 했습니다. [#24894](https://github.com/ClickHouse/ClickHouse/pull/24894) ([Amos Bird](https://github.com/amosbird)).
* `127.0.1.1`과 같은 IPv4 주소를 로컬 주소로 인식합니다. 이 변경은 다소 논란의 여지가 있으며 [#23504](https://github.com/ClickHouse/ClickHouse/issues/23504)를 해결합니다. Michael Filimonov가 이 기능을 테스트할 예정입니다. [#24316](https://github.com/ClickHouse/ClickHouse/pull/24316) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* MaterializeMySQL로 생성된 ClickHouse 데이터베이스에 이제 구체화된 MySQL 데이터베이스의 모든 컬럼 주석이 포함됩니다(이 기능은 실험적입니다). [#25199](https://github.com/ClickHouse/ClickHouse/pull/25199) ([Storozhuk Kostiantyn](https://github.com/sand6255)).
* MySQL 스토리지 엔진용 설정(`connection_auto_close`/`connection_max_tries`/`connection_pool_size`)을 추가했습니다. [#24146](https://github.com/ClickHouse/ClickHouse/pull/24146) ([Azat Khuzhin](https://github.com/azat)).
* 분산 엔진의 시작 시간을 단축했습니다. [#25663](https://github.com/ClickHouse/ClickHouse/pull/25663) ([Azat Khuzhin](https://github.com/azat)).
* 분산 테이블 개선. internal\_replication=true일 때 dirname에서 레플리카를 제거했습니다(cluster가 설정된 Distributed에 레플리카 수와 관계없이 INSERT할 수 있으며, 이전에는 15개의 레플리카까지만 지원되었고 그보다 많으면 async blocks용 디렉터리를 생성하는 동안 ENAMETOOLONG으로 실패했습니다). [#25513](https://github.com/ClickHouse/ClickHouse/pull/25513) ([Azat Khuzhin](https://github.com/azat)).
* `LowCardinality`에 `Interval` 유형 지원이 추가되었습니다. 이는 일부 표현식의 중간 값에 필요합니다. [#21730](https://github.com/ClickHouse/ClickHouse/issues/21730)을 해결합니다. [#25410](https://github.com/ClickHouse/ClickHouse/pull/25410) ([Vladimir](https://github.com/vdimir)).
* `sequenceMatch` 및 `sequenceCount` 함수의 시간 조건에 `==` 연산자가 추가되었습니다. 예: sequenceMatch('(?1)(?t==1)(?2)')(time, data = 1, data = 2). [#25299](https://github.com/ClickHouse/ClickHouse/pull/25299) ([Christophe Kalenzaga](https://github.com/mga-chka)).
* 설정인 `http_max_fields`, `http_max_field_name_size`, `http_max_field_value_size`를 추가했습니다. [#25296](https://github.com/ClickHouse/ClickHouse/pull/25296) ([Ivan](https://github.com/abyss7)).
* 함수 `if`의 분기에서 `Decimal` 및 `Int` 타입 지원이 추가되었습니다. 이로써 [#20549](https://github.com/ClickHouse/ClickHouse/issues/20549)가 해결되었습니다. 이로써 [#10142](https://github.com/ClickHouse/ClickHouse/issues/10142)가 해결되었습니다. [#25283](https://github.com/ClickHouse/ClickHouse/pull/25283) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` 프롬프트를 변경하고 재연결할 때 메시지를 표시합니다. 이로써 [#10577](https://github.com/ClickHouse/ClickHouse/issues/10577)이 해결되었습니다. [#25281](https://github.com/ClickHouse/ClickHouse/pull/25281) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 집계 함수 `topK`의 메모리 추적을 수정했습니다. 이로써 [#25259](https://github.com/ClickHouse/ClickHouse/issues/25259) 이슈가 해결되었습니다. [#25260](https://github.com/ClickHouse/ClickHouse/pull/25260) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* IDN 호스트(예: `example.рф`)에서 `topLevelDomain`이 빈 문자열을 반환하던 문제를 수정했습니다. [#25103](https://github.com/ClickHouse/ClickHouse/pull/25103) ([Azat Khuzhin](https://github.com/azat)).
* 런타임에 Linux 커널 버전을 감지합니다(중첩 epoll이 제대로 작동하려면 `async_socket_for_remote`/`use_hedged_requests`에 이 기능이 필요하며, 그렇지 않으면 원격 쿼리가 멈출 수 있습니다). [#25067](https://github.com/ClickHouse/ClickHouse/pull/25067) ([Azat Khuzhin](https://github.com/azat)).
* 분산 쿼리에서 `optimize_skip_unused_shards=1`일 때 `(세그먼트 분할 키) IN (단일 요소 튜플)`과 같은 조건으로 세그먼트를 건너뛸 수 있게 했습니다. (여러 요소로 이루어진 튜플은 이미 지원되었습니다. 단일 요소 튜플은 리터럴로 파싱되기 때문에 동작하지 않았습니다.) [#24930](https://github.com/ClickHouse/ClickHouse/pull/24930) ([Amos Bird](https://github.com/amosbird)).
* S3 오류 로그 메시지를 개선했으며, 키와 버킷이 비어 있는 경우 더 이상 공백이 두 번 들어가지 않습니다. [#24897](https://github.com/ClickHouse/ClickHouse/pull/24897) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 일부 쿼리는 여러 단계의 의미 분석이 필요합니다. 이 경우 `IN`에 대해 이미 생성된 Set을 재사용해 보십시오. [#24874](https://github.com/ClickHouse/ClickHouse/pull/24874) ([Amos Bird](https://github.com/amosbird)).
* `insert_distributed_sync`에 `max_distributed_connections`를 적용합니다(그렇지 않으면 대규모 클러스터에서 동기 삽입 시 `max_thread_pool_size`가 소진될 수 있습니다). [#24754](https://github.com/ClickHouse/ClickHouse/pull/24754) ([Azat Khuzhin](https://github.com/azat)).
* 스칼라 서브쿼리에서 `Limit for rows or bytes to read exceeded`와 같은 오류가 숨겨지지 않도록 개선했습니다. [#24545](https://github.com/ClickHouse/ClickHouse/pull/24545) ([nvartolomei](https://github.com/nvartolomei)).
* String-to-Int parser를 더 엄격하게 하여 `toInt64('+')`가 예외를 던지도록 했습니다. [#24475](https://github.com/ClickHouse/ClickHouse/pull/24475) ([Amos Bird](https://github.com/amosbird)).
* `SSD_CACHE`를 DDL 쿼리로 생성하는 경우 `user_files` 디렉터리 내부에서만 생성할 수 있습니다. [#24466](https://github.com/ClickHouse/ClickHouse/pull/24466) ([Maksim Kita](https://github.com/kitaisreal)).
* 삽입 쿼리에서 기본 스키마가 아닌 스키마를 지정할 수 있도록 PostgreSQL 지원이 추가되었습니다. [#24149](https://github.com/ClickHouse/ClickHouse/issues/24149)를 해결합니다. [#24413](https://github.com/ClickHouse/ClickHouse/pull/24413) ([Kseniia Sumarokova](https://github.com/kssenii)).
* IPv6 주소 해석 문제를 수정했습니다(즉, `select * from remote('[::1]', system.one)`가 수정됨). [#24319](https://github.com/ClickHouse/ClickHouse/pull/24319) ([Azat Khuzhin](https://github.com/azat)).
* 여러 줄 모드에서 서브쿼리가 있는 FROM 절의 후행 공백을 수정하고, 쿼리 출력도 사람이 읽기 더 쉬운 형태로 약간 변경했습니다. [#24151](https://github.com/ClickHouse/ClickHouse/pull/24151) ([Azat Khuzhin](https://github.com/azat)).
* 분산 테이블이 개선되었습니다. 실패 시(예: 메모리 제한, 손상) 분산 Batch를 분할할 수 있는 기능이 `distributed_directory_monitor_split_batch_on_failure`에 추가되었습니다(기본값은 OFF). [#23864](https://github.com/ClickHouse/ClickHouse/pull/23864) ([Azat Khuzhin](https://github.com/azat)).
* `Join` 테이블 엔진의 컬럼 이름 충돌을 처리합니다. [#20309](https://github.com/ClickHouse/ClickHouse/issues/20309)를 해결합니다. [#23769](https://github.com/ClickHouse/ClickHouse/pull/23769) ([Vladimir](https://github.com/vdimir)).
* stdin으로 데이터를 전달할 때 `clickhouse-local`의 `File` 테이블 엔진과 `clickhouse-client`의 INSERT 쿼리에서 진행 상황을 표시합니다. [#18209](https://github.com/ClickHouse/ClickHouse/issues/18209)을 해결했습니다. [#23656](https://github.com/ClickHouse/ClickHouse/pull/23656) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `clickhouse-copier`의 버그를 수정하고 개선했습니다. 서로 다른(하지만 호환 가능한 스키마를 가진) 테이블도 복사할 수 있도록 했습니다. [#9159](https://github.com/ClickHouse/ClickHouse/issues/9159)를 해결했습니다. ReplacingMergeTree를 복사하는 테스트를 추가했습니다. [#22711](https://github.com/ClickHouse/ClickHouse/issues/22711)을 해결했습니다. 컬럼의 TTL 및 데이터 스키핑 인덱스를 지원합니다. 내부 분산 테이블을 생성하기 위해 이 정보는 단순히 제거되며(기반 테이블에는 TTL과 스킵 인덱스가 유지됨), [#19384](https://github.com/ClickHouse/ClickHouse/issues/19384)를 해결했습니다. MATERIALIZED 및 ALIAS 컬럼도 복사할 수 있도록 했습니다. 일부 경우에는 이것이 유용할 수 있습니다(예: 해당 컬럼이 PRIMARY KEY에 포함된 경우). 이제 작업 구성에서 `allow_to_copy_alias_and_materialized_columns` 속성을 true로 설정하면 이를 허용할 수 있습니다. [#9177](https://github.com/ClickHouse/ClickHouse/issues/9177)를 해결했습니다. \[#11007] ([https://github.com/ClickHouse/ClickHouse/issues/11007)을](https://github.com/ClickHouse/ClickHouse/issues/11007\)을) 해결했습니다. [#9514](https://github.com/ClickHouse/ClickHouse/issues/9514)를 해결했습니다. 보조 테이블을 이동하기 전에 원본 테이블의 파티션을 삭제할 수 있도록 작업 구성에 `allow_to_drop_target_partitions` 속성을 추가했습니다. [#20957](https://github.com/ClickHouse/ClickHouse/issues/20957)를 해결했습니다. `OPTIMIZE DEDUPLICATE` 쿼리를 제거했습니다. 이는 `ALTER TABLE MOVE PARTITION`이 여러 번 재시도되었고, 일반 MergeTree 테이블에는 중복 제거 기능이 없기 때문에 필요했던 우회 방법이었습니다. [#17966](https://github.com/ClickHouse/ClickHouse/issues/17966)를 해결했습니다. 진행 상황을 `task_path + /status` 경로의 ZooKeeper 노드에 JSON 포맷으로 기록합니다. [#20955](https://github.com/ClickHouse/ClickHouse/issues/20955)를 해결했습니다. 인수 없는 ReplicatedTables를 지원합니다. [#24834](https://github.com/ClickHouse/ClickHouse/issues/24834) .[#23518](https://github.com/ClickHouse/ClickHouse/pull/23518) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* S3에서 읽기 재시도 사이에 백오프를 적용한 대기 시간을 추가했습니다. [#23461](https://github.com/ClickHouse/ClickHouse/pull/23461) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `Distributed` 테이블에 INSERT할 때 `insert_allow_materialized_columns` 설정(materialized 컬럼 허용)이 적용됩니다. [#23349](https://github.com/ClickHouse/ClickHouse/pull/23349) ([Azat Khuzhin](https://github.com/azat)).
* 분산 쿼리에서 LIMIT 푸시다운을 지원하도록 했습니다. [#23027](https://github.com/ClickHouse/ClickHouse/pull/23027) ([Azat Khuzhin](https://github.com/azat)).
* 여러 S3 볼륨을 사용할 때 발생하던 zero-copy 복제 문제를 수정했습니다 ([#22679](https://github.com/ClickHouse/ClickHouse/issues/22679) 수정). [#22864](https://github.com/ClickHouse/ClickHouse/pull/22864) ([ianton-ru](https://github.com/ianton-ru)).
* 사용자가 운영 체제에 사용 가능한 아무 포트나 요청했을 때, 바인딩된 실제 포트 번호를 확인해 로그 메시지에 표시하도록 했습니다. [#25569](https://github.com/ClickHouse/ClickHouse/pull/25569) ([bnaecker](https://github.com/bnaecker)).
* `attndims`가 일부 경우 올바르게 동작하지 않아 postgres 배열 변환 결과가 n차원 배열이 아니라 `String` 데이터 타입으로 처리되던 문제를 수정했습니다. [#24804](https://github.com/ClickHouse/ClickHouse/issues/24804)을 해결했습니다. [#25538](https://github.com/ClickHouse/ClickHouse/pull/25538) ([Kseniia Sumarokova](https://github.com/kssenii)).
* MySQL, PostgreSQL, ODBC에서 시간대가 포함된 DateTime 변환을 수정했습니다. [#5057](https://github.com/ClickHouse/ClickHouse/issues/5057)를 해결합니다. [#25528](https://github.com/ClickHouse/ClickHouse/pull/25528) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 서로 다른 테이블의 KILL MUTATION을 구분하도록 개선했습니다(예기치 않은 `Cancelled mutating parts` 오류를 수정). [#25025](https://github.com/ClickHouse/ClickHouse/pull/25025) ([Azat Khuzhin](https://github.com/azat)).
* 버킷 루트에 S3 디스크를 선언할 수 있도록 했습니다(S3 가상 파일 시스템은 현재 개발 중인 실험적 기능입니다). [#24898](https://github.com/ClickHouse/ClickHouse/pull/24898) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 분산 테이블에서 서브컬럼(예: 튜플의 구성 요소)을 읽을 수 있도록 했습니다. [#24472](https://github.com/ClickHouse/ClickHouse/pull/24472) ([Anton Popov](https://github.com/CurtizJ)).
* MySQL 호환성 프로토콜 관련 기능: `user` 함수가 올바른 결과를 반환하도록 합니다. [#25697](https://github.com/ClickHouse/ClickHouse/pull/25697)을 해결합니다. [#25697](https://github.com/ClickHouse/ClickHouse/pull/25697) ([sundyli](https://github.com/sundy-li)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 하위 호환성을 개선했습니다. 파티션 키에 사용하는 경우 이전 modulo 함수 버전을 사용합니다. [#23508](https://github.com/ClickHouse/ClickHouse/issues/23508)을 해결했습니다. [#24157](https://github.com/ClickHouse/ClickHouse/pull/24157) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 메모리가 매우 부족한 서버에서 재시작하지 않으면 머지를 수행할 수 없게 되는 매우 드문 버그를 수정했습니다. [#24603](https://github.com/ClickHouse/ClickHouse/issues/24603)도 수정되었을 가능성이 있습니다. [#24872](https://github.com/ClickHouse/ClickHouse/pull/24872) ([alesapin](https://github.com/alesapin)).
* `alter move/replace partition`를 동시에 수행할 때 복제 큐에서 발생하는 매우 드문 오류 `Tagging already tagged part`를 수정했습니다. [#22142](https://github.com/ClickHouse/ClickHouse/issues/22142)도 해결될 가능성이 있습니다. [#24961](https://github.com/ClickHouse/ClickHouse/pull/24961) ([alesapin](https://github.com/alesapin)).
* 다른 집계 함수의 집계 함수 상태를 집계할 때 집계 함수 상태를 계산하는 과정에서 발생할 수 있는 잠재적인 충돌 문제를 수정했습니다(실제 사용 사례는 아닙니다). [#24523](https://github.com/ClickHouse/ClickHouse/issues/24523)를 참조하십시오. [#25015](https://github.com/ClickHouse/ClickHouse/pull/25015) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 쿼리 `SYSTEM RESTART REPLICA` 또는 `SYSTEM SYNC REPLICA`가 완료되지 않던 문제를 수정했습니다. 이 문제는 RAM이 극히 적은 서버에서 발견되었습니다. [#24457](https://github.com/ClickHouse/ClickHouse/pull/24457) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* clickhouse-server 내부에서 ZooKeeper 클라이언트가 응답하지 않게 될 수 있는 버그를 수정했습니다. [#24721](https://github.com/ClickHouse/ClickHouse/pull/24721) ([alesapin](https://github.com/alesapin)).
* ZooKeeper 연결이 끊겼다가 복구된 후 레플리카가 복제되면, 해당 복제 큐에 outdated 항목이 포함될 수 있었습니다. 복제 큐에 서로 겹치는 virtual parts가 포함되어 있을 때 발생하던 assertion 실패를 수정했습니다. 일부 데이터 파트가 손실된 경우 드물게 발생할 수 있습니다. 프로세스를 종료하는 대신 로그에 오류를 출력합니다. [#24777](https://github.com/ClickHouse/ClickHouse/pull/24777) ([tavplubix](https://github.com/tavplubix)).
* 쿼리 계획의 표현식 푸시다운 최적화에서 누락된 `WHERE` 조건을 수정했습니다(`query_plan_filter_push_down = 1`이 기본값이 되도록 설정). [#25368](https://github.com/ClickHouse/ClickHouse/issues/25368) 문제를 수정했습니다. [#25370](https://github.com/ClickHouse/ClickHouse/pull/25370) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* TTL이 적용된 머지 후 서로 겹치는 파트가 생길 수 있는 버그를 수정했습니다: `Part all_40_40_0 is covered by all_40_40_1 but should be merged into all_40_41_1. This shouldn't happen often.`. [#25549](https://github.com/ClickHouse/ClickHouse/pull/25549) ([alesapin](https://github.com/alesapin)).
* ZooKeeper 연결이 끊어지면 `ReplicatedMergeTree` 테이블이 재연결을 시도하기 전에 백그라운드 작업이 끝날 때까지 대기할 수 있었습니다. 이 문제는 수정되었으며, 이제 백그라운드 작업은 강제로 중지됩니다. [#25306](https://github.com/ClickHouse/ClickHouse/pull/25306) ([tavplubix](https://github.com/tavplubix)).
* 배열이 기본 키(primary key)에 사용될 때 `ARRAY JOIN`이 포함된 쿼리에서 발생하는 `Key expression contains comparison between inconvertible types` 오류를 수정했습니다. [#8247](https://github.com/ClickHouse/ClickHouse/issues/8247)을 해결합니다. [#25546](https://github.com/ClickHouse/ClickHouse/pull/25546) ([Anton Popov](https://github.com/CurtizJ)).
* `WITH TOTALS` 및 `WITH FILL` 쿼리의 잘못된 합계를 수정했습니다. [#20872](https://github.com/ClickHouse/ClickHouse/issues/20872)를 수정했습니다. [#25539](https://github.com/ClickHouse/ClickHouse/pull/25539) ([Anton Popov](https://github.com/CurtizJ)).
* 클러스터 구성을 다시 로드하는 동시에 `system.clusters`를 쿼리할 때 발생하던 데이터 레이스를 수정했습니다. [#25737](https://github.com/ClickHouse/ClickHouse/pull/25737) ([Amos Bird](https://github.com/amosbird)).
* 데이터베이스 간에 `Distributed` 테이블을 이동할 때 발생하던 `No such file or directory` 오류를 수정했습니다. [#24971](https://github.com/ClickHouse/ClickHouse/issues/24971)를 해결했습니다. [#25667](https://github.com/ClickHouse/ClickHouse/pull/25667) ([tavplubix](https://github.com/tavplubix)).
* `REPLACE PARTITION`은 소스 파티션이 비어 있는 드문 경우 무시될 수 있었습니다. 이 문제가 수정되었습니다. [#24869](https://github.com/ClickHouse/ClickHouse/issues/24869). [#25665](https://github.com/ClickHouse/ClickHouse/pull/25665) ([tavplubix](https://github.com/tavplubix)).
* 드물게 일부 레플리카가 큐에 등록된 DDL 쿼리를 건너뛸 수 있게 하는 `Replicated` 데이터베이스 엔진의 버그를 수정했습니다. [#24805](https://github.com/ClickHouse/ClickHouse/pull/24805) ([tavplubix](https://github.com/tavplubix)).
* `EXPLAIN AST`를 쿼리 없이 사용할 때 발생하는 널 포인터 역참조 문제를 수정했습니다. [#25631](https://github.com/ClickHouse/ClickHouse/pull/25631) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 빈 파트 자동 삭제 대기 문제를 수정했습니다. 이 문제로 인해 백그라운드 풀(background pool)이 가득 차고 복제가 멈출 수 있었습니다. [#23315](https://github.com/ClickHouse/ClickHouse/pull/23315) ([Anton Popov](https://github.com/CurtizJ)).
* S3 가상 파일 시스템에 저장된 테이블의 복원 문제를 수정했습니다(실험적 기능으로, 아직 프로덕션 환경에서 사용할 준비가 되지 않았습니다). [#25601](https://github.com/ClickHouse/ClickHouse/pull/25601) ([ianton-ru](https://github.com/ianton-ru)).
* `Decimal256` 사용 시 `Arrow` 포맷에서 발생하던 nullptr 역참조 문제를 수정했습니다. `Arrow` 포맷에서 `Decimal256`을 지원하도록 추가했습니다. [#25531](https://github.com/ClickHouse/ClickHouse/pull/25531) ([Kruglov Pavel](https://github.com/Avogar)).
* 전처리된 설정 파일 이름 앞에 과도한 언더스코어가 붙는 문제를 수정했습니다. [#25431](https://github.com/ClickHouse/ClickHouse/pull/25431) ([Vitaly Baranov](https://github.com/vitlibar)).
* `clickhouse-copier` 도구 수정: copier 작업 구성에 sharding\_key가 없을 때 발생하는 segfault를 수정했습니다. [#25419](https://github.com/ClickHouse/ClickHouse/pull/25419) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 포맷된 쿼리를 올바르게 따옴표 처리하도록 하여 DDL에서 사용할 때 `REPLACE` 컬럼 변환기를 수정했습니다. 이로써 [#23925](https://github.com/ClickHouse/ClickHouse/issues/23925)가 해결되었습니다. [#25391](https://github.com/ClickHouse/ClickHouse/pull/25391) ([Amos Bird](https://github.com/amosbird)).
* `quantileDeterministic` 함수 및 이와 유사한 함수에서 비결정적 동작이 발생할 수 있는 문제를 해결했습니다. 이로써 [#20480](https://github.com/ClickHouse/ClickHouse/issues/20480)이 해결되었습니다. [#25313](https://github.com/ClickHouse/ClickHouse/pull/25313) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `SummingMergeTree`에서 `SimpleAggregateFunction(LowCardinality)`를 지원합니다. [#25134](https://github.com/ClickHouse/ClickHouse/issues/25134)를 해결합니다. [#25300](https://github.com/ClickHouse/ClickHouse/pull/25300) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 예외 메시지 "min/maxMap에서 Array/Tuple을 합산할 수 없음"이 발생하는 논리 오류를 수정했습니다. [#25298](https://github.com/ClickHouse/ClickHouse/pull/25298) ([Kruglov Pavel](https://github.com/Avogar)).
* IN에 `LowCardinality` 인수를 사용한 쿼리에서 발생하던 오류 `Bad cast from type DB::ColumnLowCardinality to DB::ColumnVector<char8_t>`를 수정했습니다(이 버그는 21.6에서 나타났습니다). [#25187](https://github.com/ClickHouse/ClickHouse/issues/25187)을 해결했습니다. [#25290](https://github.com/ClickHouse/ClickHouse/pull/25290) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 널을 허용하지 않는 컬럼에서 `joinGetOrNull`의 잘못된 동작을 수정했습니다. 이 수정으로 [#24261](https://github.com/ClickHouse/ClickHouse/issues/24261) 문제가 해결되었습니다. [#25288](https://github.com/ClickHouse/ClickHouse/pull/25288) ([Amos Bird](https://github.com/amosbird)).
* 큰 정수에서 발생하던 잘못된 동작과 UBSan 경고를 수정했습니다. 이전 버전에서는 `CAST(1e19 AS UInt128)`가 0을 반환했습니다. [#25279](https://github.com/ClickHouse/ClickHouse/pull/25279) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* CSVWithNames 포맷을 사용해 일부 컬럼을 삽입할 때 발생하던 오류를 수정했습니다. [#25129](https://github.com/ClickHouse/ClickHouse/issues/25129)을 해결합니다. [#25169](https://github.com/ClickHouse/ClickHouse/pull/25169) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `FINAL`이 있는 `SELECT`에서는 테이블 프로젝션을 사용하지 마십시오. 아직 지원되지 않습니다. [#25163](https://github.com/ClickHouse/ClickHouse/pull/25163) ([Amos Bird](https://github.com/amosbird)).
* 테이블의 파티션 키에 `UUID`를 사용한 경우, 21.5까지 업데이트한 후 발생할 수 있는 파트 손실 문제를 수정했습니다. (`UUID`를 파티션 키에 사용하는 것은 권장되지 않습니다.) [#25070](https://github.com/ClickHouse/ClickHouse/issues/25070)을 수정했습니다. [#25127](https://github.com/ClickHouse/ClickHouse/pull/25127) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* cross join 및 `joined_subquery_requires_alias = 0`이 설정된 쿼리에서 발생하던 충돌을 수정했습니다. [#24011](https://github.com/ClickHouse/ClickHouse/issues/24011)을 해결합니다. [#25082](https://github.com/ClickHouse/ClickHouse/pull/25082) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `empty column was returned by function mapContains` 오류를 일으키던 mapContains 함수의 상수 맵 관련 버그를 수정했습니다. [#25077](https://github.com/ClickHouse/ClickHouse/issues/25077)를 해결합니다. [#25080](https://github.com/ClickHouse/ClickHouse/pull/25080) ([Kruglov Pavel](https://github.com/Avogar)).
* `a UInt32 ALIAS a + 1` 또는 `b UInt32 MATERIALIZED b`처럼 자기 자신을 참조하는 컬럼이 있는 테이블은 생성할 수 없도록 변경했습니다. [#24910](https://github.com/ClickHouse/ClickHouse/issues/24910), [#24292](https://github.com/ClickHouse/ClickHouse/issues/24292)를 수정했습니다. [#25059](https://github.com/ClickHouse/ClickHouse/pull/25059) ([alesapin](https://github.com/alesapin)).
* *비어 있지 않은* `GROUP BY` 키가 있는 집계 PROJECTION을 사용해 *비어 있는* 키로 `GROUP BY`하는 쿼리를 실행할 때 잘못된 결과가 나오던 문제를 수정했습니다. [#25055](https://github.com/ClickHouse/ClickHouse/pull/25055) ([Amos Bird](https://github.com/amosbird)).
* Protobuf 형식에서 분할된 중첩 메시지 직렬화 문제를 수정했습니다. 이 PR은 [#24647](https://github.com/ClickHouse/ClickHouse/issues/24647)을 해결합니다. [#25000](https://github.com/ClickHouse/ClickHouse/pull/25000) ([Vitaly Baranov](https://github.com/vitlibar)).
* 분산 쿼리의 LIMIT/OFFSET 설정을 수정했습니다(원격 노드에서는 무시). [#24940](https://github.com/ClickHouse/ClickHouse/pull/24940) ([Azat Khuzhin](https://github.com/azat)).
* `Arrow` 포맷에서 발생할 수 있는 힙 버퍼 오버플로우 문제를 수정했습니다. [#24922](https://github.com/ClickHouse/ClickHouse/pull/24922) ([Kruglov Pavel](https://github.com/Avogar)).
* DiskS3에서 파일을 읽을 때 발생할 수 있는 'Cannot read from istream at offset 0' 오류를 수정했습니다(S3 가상 파일 시스템은 현재 개발 중인 실험적 기능이므로 프로덕션에서는 사용하지 않아야 합니다). [#24885](https://github.com/ClickHouse/ClickHouse/pull/24885) ([Pavel Kovalenko](https://github.com/Jokser)).
* 분산 materialized view를 조인할 때 "Missing columns" 예외가 발생하던 문제를 수정했습니다. [#24870](https://github.com/ClickHouse/ClickHouse/pull/24870) ([Azat Khuzhin](https://github.com/azat)).
* PostgreSQL 호환 프로토콜에서 `NULL` 값을 허용합니다. [#22622](https://github.com/ClickHouse/ClickHouse/issues/22622)를 해결했습니다. [#24857](https://github.com/ClickHouse/ClickHouse/pull/24857) ([Kseniia Sumarokova](https://github.com/kssenii)).
* mutation이 아직 메모리에 로드되지 않은 상태에서 mutation을 기다리는 동안 `Mutation was killed` 예외가 클라이언트에 전달될 수 있는 버그를 수정했습니다. [#24809](https://github.com/ClickHouse/ClickHouse/pull/24809) ([alesapin](https://github.com/alesapin)).
* 일부 데이터 타입(예: `AggregateFunction(groupArraySample(N), T))`)이 비결정적으로 동작할 수 있었던 랜덤 생성기 상태 역직렬화 버그를 수정했습니다. [#24538](https://github.com/ClickHouse/ClickHouse/pull/24538) ([tavplubix](https://github.com/tavplubix)).
* 다른 집계 상태에서 uniqXXXXStates를 생성하지 못하도록 했습니다. [#24523](https://github.com/ClickHouse/ClickHouse/pull/24523) ([Raúl Marín](https://github.com/Algunenano)). 이후 관련 문제의 근본 원인을 실제로 제거하여 다시 허용했습니다. ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `CREATE .. AS SELECT` 쿼리에서 튜플 사용 문제를 수정했습니다. [#24464](https://github.com/ClickHouse/ClickHouse/pull/24464) ([Anton Popov](https://github.com/CurtizJ)).
* `Buffer` 테이블의 총 바이트 수 계산을 수정했습니다. 현재 ClickHouse 버전에서는 버퍼 플러시 중 total\_writes.bytes 카운터가 과도하게 감소합니다. 이로 인해 카운터 오버플로우가 발생하며, 플러시 후 얼마 지나지 않아 totalBytes가 약 17.44 EB의 값을 반환합니다. [#24450](https://github.com/ClickHouse/ClickHouse/pull/24450) ([DimasKovas](https://github.com/DimasKovas)).
* toWeek 함수의 단조성에 대한 잘못된 정보를 수정했습니다. 이로써 [#24422](https://github.com/ClickHouse/ClickHouse/issues/24422)가 해결됩니다. 이 버그는 [https://github.com/ClickHouse/ClickHouse/pull/5212](https://github.com/ClickHouse/ClickHouse/pull/5212) 에서 도입되었으며, 이후 더 정교한 파티션 프루너로 인해 드러났습니다. [#24446](https://github.com/ClickHouse/ClickHouse/pull/24446) ([Amos Bird](https://github.com/amosbird)).
* 사용자 authentication이 LDAP로 관리되는 경우, LDAP 그룹이 존재하지 않는 로컬 역할에 매핑될 때 LDAP 역할 (re)mapping 중 발생할 수 있는 잠재적 교착 상태를 수정했습니다. [#24431](https://github.com/ClickHouse/ClickHouse/pull/24431) ([Denis Glazachev](https://github.com/traceon)).
* "multipart/form-data" 메시지에서는 boundary 앞의 CRLF를 해당 boundary의 일부로 간주합니다. [#23905](https://github.com/ClickHouse/ClickHouse/issues/23905)를 수정했습니다. [#24399](https://github.com/ClickHouse/ClickHouse/pull/24399) ([Ivan](https://github.com/abyss7)).
* intersect 가짜 파트가 있는 파티션 삭제 문제를 수정했습니다. 드물게 현재 block 번호보다 mutation 버전이 더 큰 파트가 있을 수 있습니다. [#24321](https://github.com/ClickHouse/ClickHouse/pull/24321) ([Amos Bird](https://github.com/amosbird)).
* Ordinary 데이터베이스에서 Atomic 데이터베이스로 materialized view를 이동할 때 발생하던 버그를 수정했습니다(`RENAME TABLE` 쿼리). 이제 내부 테이블도 materialized view와 함께 새 데이터베이스로 이동합니다. [#23926](https://github.com/ClickHouse/ClickHouse/issues/23926)를 수정했습니다. [#24309](https://github.com/ClickHouse/ClickHouse/pull/24309) ([tavplubix](https://github.com/tavplubix)).
* 빈 HTTP 헤더를 허용합니다. [#23901](https://github.com/ClickHouse/ClickHouse/issues/23901)을 해결합니다. [#24285](https://github.com/ClickHouse/ClickHouse/pull/24285) ([Ivan](https://github.com/abyss7)).
* Memory 테이블에서 뮤테이션(ALTER UPDATE/DELETE)이 정상적으로 처리되도록 수정했습니다. [#24274](https://github.com/ClickHouse/ClickHouse/issues/24274)를 해결했습니다. [#24275](https://github.com/ClickHouse/ClickHouse/pull/24275) ([flynn](https://github.com/ucasfl)).
* JOIN 출력의 컬럼 LowCardinality 속성이 입력과 동일해지도록 수정하고, [#23351](https://github.com/ClickHouse/ClickHouse/issues/23351), [#20315](https://github.com/ClickHouse/ClickHouse/issues/20315)을 해결했습니다. [#24061](https://github.com/ClickHouse/ClickHouse/pull/24061) ([Vladimir](https://github.com/vdimir)).
* Kafka 테이블(table)에 대한 수정입니다. 이전에 동일한 consumer의 할당이 비어 있었던 경우, Engine = Kafka에서 failover 동작 시 소비를 시작하지 못하던 버그를 수정했습니다. [#21118](https://github.com/ClickHouse/ClickHouse/issues/21118)을 해결했습니다. [#21267](https://github.com/ClickHouse/ClickHouse/pull/21267) ([filimonov](https://github.com/filimonov)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* CI에 `darwin-aarch64` (Mac M1 / Apple Silicon) 빌드를 추가했습니다 [#25560](https://github.com/ClickHouse/ClickHouse/pull/25560) ([Ivan](https://github.com/abyss7)). 또한 문서와 웹사이트에도 링크를 추가했습니다 ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 실행 파일에 바이너리 리소스를 크로스 플랫폼 방식으로 임베딩하는 기능을 추가했습니다. Illumos에서도 동작합니다. [#25146](https://github.com/ClickHouse/ClickHouse/pull/25146) ([bnaecker](https://github.com/bnaecker)).
* 퍼징을 개선하기 위해 스트레스 테스트에 JOIN 관련 옵션을 추가했습니다. [#25200](https://github.com/ClickHouse/ClickHouse/pull/25200) ([Vladimir](https://github.com/vdimir)).
* osx에서 S3 모듈을 포함한 빌드를 활성화했습니다 [#25217](https://github.com/ClickHouse/ClickHouse/issues/25217). [#25218](https://github.com/ClickHouse/ClickHouse/pull/25218) ([kevin wan](https://github.com/MaxWk)).
* JDBC 브리지를 다루는 통합 테스트 케이스를 추가했습니다. [#25047](https://github.com/ClickHouse/ClickHouse/pull/25047) ([Zhichun Wu](https://github.com/zhicwu)).
* 통합 테스트 구성에서 딕셔너리에 대한 특별 처리를 정리하고, 남아 있던 딕셔너리 수동 설정을 제거했습니다. [#24728](https://github.com/ClickHouse/ClickHouse/pull/24728) ([Ilya Yatsishin](https://github.com/qoega)).
* YAMLParser 클래스용 libfuzzer 테스트를 추가했습니다. [#24480](https://github.com/ClickHouse/ClickHouse/pull/24480) ([BoloniniD](https://github.com/BoloniniD)).
* 이제 Ubuntu 20.04를 사용해 통합 테스트를 실행하며, 통합 테스트 실행에 사용되는 docker-compose 버전도 1.28.2로 업데이트되었습니다. 이제 환경 변수가 docker-compose에도 적용됩니다. 병렬로 실행할 수 있도록 test\_dictionaries\_all\_layouts\_separate\_sources를 재작업했습니다. [#20393](https://github.com/ClickHouse/ClickHouse/pull/20393) ([Ilya Yatsishin](https://github.com/qoega)).
* 설치 스크립트의 TOCTOU 오류를 수정했습니다. [#25277](https://github.com/ClickHouse/ClickHouse/pull/25277) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="clickhouse-release-216-2021-06-05">
  ### ClickHouse 릴리스 21.6, 2021-06-05
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* uniqState / uniqHLL12State / uniqCombinedState / uniqCombined64State는 `UUID` 유형에서 호환되지 않는 상태를 생성합니다. [#33607](https://github.com/ClickHouse/ClickHouse/issues/33607).

<div id="upgrade-notes">
  #### 업그레이드 참고 사항
</div>

* `zstd` 압축 라이브러리가 v1.5.0으로 업데이트되었습니다. 복제 중 "checksum does not match" 메시지가 표시될 수 있습니다. 이 메시지는 압축 알고리즘 업데이트로 인해 예상되는 것이므로 무시해도 됩니다. 이 메시지는 정보 제공용이며, 바람직하지 않은 동작을 의미하지는 않습니다.
* `compile_expressions` 설정이 기본적으로 활성화됩니다. 다양한 시나리오에서 충분히 테스트되었지만, 서버에서 바람직하지 않은 동작이 발견되면 이 설정을 꺼 보십시오.
* `UUID` 유형의 값은 정수와 비교할 수 없습니다. 예를 들어 `uuid != 0` 대신 `uuid != '00000000-0000-0000-0000-000000000000'`를 입력하십시오.

<div id="new-feature-3">
  #### 새 기능
</div>

* Postgres 스타일의 CAST 연산자(`::`)를 추가했습니다. 예: `[1, 2]::Array(UInt8)`, `0.1::Decimal(4, 4)`, `number::UInt16`. [#23871](https://github.com/ClickHouse/ClickHouse/pull/23871) ([Anton Popov](https://github.com/CurtizJ)).
* 큰 정수를 프로덕션 환경에서 안정적으로 사용할 수 있도록 개선했습니다. `UInt128` 데이터 타입 지원을 추가했습니다. `Decimal256` 데이터 타입의 알려진 문제를 수정했습니다. 딕셔너리에서 큰 정수를 지원합니다. 큰 정수에 대해 `gcd`/`lcm` 함수를 지원합니다. 배열 검색 및 조건 함수에서 큰 정수를 지원합니다. `LowCardinality(UUID)`를 지원합니다. `generateRandom` 테이블 함수와 `clickhouse-obfuscator`에서 큰 정수를 지원합니다. 스칼라 서브쿼리에서 `UUID`를 반환할 때 발생하던 오류를 수정했습니다. 이 변경으로 [#7834](https://github.com/ClickHouse/ClickHouse/issues/7834) 문제가 해결됩니다. 이 변경으로 [#23936](https://github.com/ClickHouse/ClickHouse/issues/23936) 문제가 해결됩니다. 이 변경으로 [#4176](https://github.com/ClickHouse/ClickHouse/issues/4176) 문제가 해결됩니다. 이 변경으로 [#24018](https://github.com/ClickHouse/ClickHouse/issues/24018) 문제가 해결됩니다. 하위 호환되지 않는 변경 사항: `UUID` 타입의 값은 정수와 비교할 수 없습니다. 예를 들어 `uuid != 0`이라고 작성하는 대신 `uuid != '00000000-0000-0000-0000-000000000000'`로 작성하십시오. [#23631](https://github.com/ClickHouse/ClickHouse/pull/23631) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Arrow`, `Parquet`, `ORC` 포맷에서 데이터 삽입 및 조회 시 `Array` 데이터 타입을 지원합니다. [#21770](https://github.com/ClickHouse/ClickHouse/pull/21770) ([taylor12805](https://github.com/taylor12805)).
* 테이블 주석을 구현했습니다. [#23225](https://github.com/ClickHouse/ClickHouse/issues/23225)를 해결했습니다. [#23548](https://github.com/ClickHouse/ClickHouse/pull/23548) ([flynn](https://github.com/ucasFL)).
* `clickhouse-local`에서 DDL 쿼리를 사용한 딕셔너리 생성을 지원합니다. [#22354](https://github.com/ClickHouse/ClickHouse/issues/22354)를 해결했습니다. `DETACH DICTIONARY PERMANENTLY`를 지원합니다. `Atomic` 데이터베이스 엔진에서 `EXCHANGE DICTIONARIES`를 지원합니다. `RENAME DICTIONARY`를 사용해 데이터베이스 간 딕셔너리 이동을 지원합니다. [#23436](https://github.com/ClickHouse/ClickHouse/pull/23436) ([Maksim Kita](https://github.com/kitaisreal)).
* ClickHouse에서 [Theta Sketch](https://datasketches.apache.org/docs/Theta/ThetaSketchFramework.html) 지원을 위해 집계 함수 `uniqTheta`를 추가했습니다. [#23894](https://github.com/ClickHouse/ClickHouse/pull/23894). [#22609](https://github.com/ClickHouse/ClickHouse/pull/22609) ([Ping Yu](https://github.com/pingyu)).
* 함수 `splitByRegexp`가 추가되었습니다. [#24077](https://github.com/ClickHouse/ClickHouse/pull/24077) ([abel-cheng](https://github.com/abel-cheng)).
* 배열을 매개변수로 받아 배열의 모든 요소를 곱한 값을 반환하는 함수 `arrayProduct`를 추가했습니다. [#21613](https://github.com/ClickHouse/ClickHouse/issues/21613)을 해결합니다. [#23782](https://github.com/ClickHouse/ClickHouse/pull/23782) ([Maksim Kita](https://github.com/kitaisreal)).
* `system.stack_trace`에 `thread_name` 컬럼을 추가했습니다. 이 변경으로 [#23256](https://github.com/ClickHouse/ClickHouse/issues/23256)가 해결되었습니다. [#24124](https://github.com/ClickHouse/ClickHouse/pull/24124) ([abel-cheng](https://github.com/abel-cheng)).
* `insert_null_as_default` = 1이면 `INSERT ... SELECT` 및 `INSERT ... SELECT ... UNION ALL ...` 쿼리에서 NULL 대신 기본값을 삽입합니다. [#22832](https://github.com/ClickHouse/ClickHouse/issues/22832)를 해결합니다. [#23524](https://github.com/ClickHouse/ClickHouse/pull/23524) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `--progress` 옵션을 사용해 `clickhouse-local`에서 진행 상황을 표시할 수 있도록 지원을 추가했습니다. [#23196](https://github.com/ClickHouse/ClickHouse/pull/23196) ([Egor Savin](https://github.com/Amesaru)).
* `http` 딕셔너리 소스에서 HTTP 압축(`Content-Encoding` HTTP header로 결정됨) 지원이 추가되었습니다. 이 변경으로 [#8912](https://github.com/ClickHouse/ClickHouse/issues/8912)가 수정되었습니다. [#23946](https://github.com/ClickHouse/ClickHouse/pull/23946) ([FArthur-cmd](https://github.com/FArthur-cmd)).
* `SYSTEM QUERY RELOAD MODEL`, `SYSTEM QUERY RELOAD MODELS`를 추가했습니다. [#18722](https://github.com/ClickHouse/ClickHouse/issues/18722)를 해결했습니다. [#23182](https://github.com/ClickHouse/ClickHouse/pull/23182) ([Maksim Kita](https://github.com/kitaisreal)).
* `EXPLAIN PLAN` 쿼리에 `json` 설정(불리언, 기본값은 0)을 추가했습니다. 이 설정을 활성화하면 쿼리 출력이 단일 `JSON` 행으로 반환됩니다. 불필요한 이스케이프를 피하려면 `TSVRaw` 포맷을 사용하는 것이 좋습니다. [#23082](https://github.com/ClickHouse/ClickHouse/pull/23082) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `EXPLAIN PIPELINE` 쿼리에 `indexes` 설정(bool, 기본값은 비활성화)을 추가했습니다. 활성화하면 적용된 각 인덱스에 대해 사용된 인덱스와 필터링된 파트 수 및 그래뉼 수를 표시합니다. `MergeTree*` 테이블에서 지원됩니다. [#22352](https://github.com/ClickHouse/ClickHouse/pull/22352) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* LDAP: Active Directory 그룹을 ClickHouse 역할에 매핑할 때 사용할 수 있도록 user DN 감지 기능을 구현했습니다. [#22228](https://github.com/ClickHouse/ClickHouse/pull/22228) ([Denis Glazachev](https://github.com/traceon)).
* 타임스탬프를 저장해 머지 중에도 순서를 유지하면서 연속된 행 사이의 차이를 합산하는 새로운 집계 함수 `deltaSumTimestamp`가 추가되었습니다. [#21888](https://github.com/ClickHouse/ClickHouse/pull/21888) ([Russ Frank](https://github.com/rf)).
* docker에서 올바르게 작동하는, 보안성이 다소 낮은 S3용 IMDS 자격 증명 제공자를 추가했습니다. [#21852](https://github.com/ClickHouse/ClickHouse/pull/21852) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `indexHint` 함수를 다시 추가했습니다. 이는 [#21238](https://github.com/ClickHouse/ClickHouse/issues/21238) 관련 변경입니다. 이 변경으로 [#9542](https://github.com/ClickHouse/ClickHouse/pull/9542)를 되돌렸습니다. 또한 [#9540](https://github.com/ClickHouse/ClickHouse/issues/9540)도 수정했습니다. [#21304](https://github.com/ClickHouse/ClickHouse/pull/21304) ([Amos Bird](https://github.com/amosbird)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* `MergeTree*` 테이블에 `PROJECTION` 지원을 추가했습니다. [#20202](https://github.com/ClickHouse/ClickHouse/pull/20202) ([Amos Bird](https://github.com/amosbird)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* `compile_expressions` 설정이 기본적으로 활성화됩니다. 이 설정이 활성화되면 단순한 함수와 연산자의 조합이 런타임에 LLVM을 사용해 네이티브 코드로 컴파일됩니다. [#8482](https://github.com/ClickHouse/ClickHouse/pull/8482) ([Maksim Kita](https://github.com/kitaisreal), [alexey-milovidov](https://github.com/alexey-milovidov)). 참고: 문제가 발생하면 이 옵션을 비활성화하십시오.
* `re2` 라이브러리를 업데이트했습니다. 정규식 매칭 성능이 개선되었습니다. 또한 이 PR에는 gcc-11 호환성이 추가되었습니다. [#24196](https://github.com/ClickHouse/ClickHouse/pull/24196) ([Raúl Marín](https://github.com/Algunenano)).
* ORC 입력 형식은 전체 테이블을 한 번에 메모리로 읽는 대신 stripe 단위로 읽도록 개선되었습니다. 파일 크기가 매우 클 때 메모리 사용량이 커지는 문제를 줄입니다. [#23102](https://github.com/ClickHouse/ClickHouse/pull/23102) ([Chao Ma](https://github.com/godliness)).
* 하나의 쿼리에서 집계 함수 `sum`, `count`, `avg`를 단일 집계 함수로 결합합니다. 이 최적화는 `optimize_fuse_sum_count_avg` 설정으로 제어됩니다. 이는 새로운 집계 함수 `sumCount`로 구현됩니다. 이 함수는 `sum`과 `count`라는 두 필드를 가진 Tuple을 반환합니다. [#21337](https://github.com/ClickHouse/ClickHouse/pull/21337) ([hexiaoting](https://github.com/hexiaoting)).
* `zstd`를 v1.5.0으로 업데이트했습니다. Compression 성능이 한 자릿수 퍼센트 수준으로 향상되었습니다. [#24135](https://github.com/ClickHouse/ClickHouse/pull/24135) ([Raúl Marín](https://github.com/Algunenano)). 참고: 복제 과정에서 "checksum does not match" 메시지가 표시될 수 있습니다. 이는 압축 알고리즘 업데이트로 인해 예상되는 메시지이므로 무시해도 됩니다.
* `Buffer` 테이블의 성능이 개선되었습니다. `Buffer` 엔진에서 total\_bytes/total\_rows에 대해서는 잠금을 획득하지 않습니다. [#24066](https://github.com/ClickHouse/ClickHouse/pull/24066) ([Azat Khuzhin](https://github.com/azat)).
* `hashed`/`sparse_hashed` Dictionaries에 대한 사전 할당 지원이 다시 추가되었습니다. [#23979](https://github.com/ClickHouse/ClickHouse/pull/23979) ([Azat Khuzhin](https://github.com/azat)).
* `async_socket_for_remote`가 기본적으로 활성화됩니다(팬아웃이 큰 분산 테이블을 쿼리할 때 thread 수 감소). [#23683](https://github.com/ClickHouse/ClickHouse/pull/23683) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).

<div id="improvement-3">
  #### 개선
</div>

* MergeTree 테이블 계열에 `_partition_value` 가상 컬럼을 추가했습니다. 이 컬럼은 결정론적인 방식으로 파티션을 프루닝하는 데 사용할 수 있습니다. 뮤테이션을 위한 파티션 매처를 구현하는 데 필요합니다. [#23673](https://github.com/ClickHouse/ClickHouse/pull/23673) ([Amos Bird](https://github.com/amosbird)).
* S3 스토리지와 디스크에 `region` 매개변수가 추가되었습니다. [#23846](https://github.com/ClickHouse/ClickHouse/pull/23846) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 서로 다른 로깅 채널별로 서로 다른 로그 수준을 설정할 수 있도록 합니다. [#19569](https://github.com/ClickHouse/ClickHouse/issues/19569)을 해결했습니다. [#23857](https://github.com/ClickHouse/ClickHouse/pull/23857) ([filimonov](https://github.com/filimonov)).
* 명시적으로 지정하지 않은 경우 `DateTime` 연산에서는 기본 시간대를 유지합니다. 예를 들어, 시간대가 없는 `DateTime` 타입 값에 1초를 더해도 시간대가 없는 `DateTime`으로 유지됩니다. 이전 버전에서는 반환 데이터 타입에 기본 시간대 값이 명시적으로 포함되어 `DateTime(&#39;something&#39;)`이 되었습니다. 이 변경으로 [#4854](https://github.com/ClickHouse/ClickHouse/issues/4854)가 해결되었습니다. [#23392](https://github.com/ClickHouse/ClickHouse/pull/23392) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `MySQL` 스토리지에서 데이터베이스 이름 대신 빈 문자열을 지정할 수 있도록 했습니다. 쿼리에는 기본 데이터베이스가 사용됩니다. 이전 버전에서는 SELECT 쿌리에서만 동작했으며, INSERT를 지원하지 않는 문제에 대한 지원도 추가되었습니다. 이로써 [#19281](https://github.com/ClickHouse/ClickHouse/issues/19281)이 해결되었습니다. 이는 `Sphinx` 또는 기타 MySQL 호환 외부 데이터베이스와 함께 작업할 때 유용할 수 있습니다. [#23319](https://github.com/ClickHouse/ClickHouse/pull/23319) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `quantile(s)TDigest`를 수정했습니다. tdunning/t-digest 3.2+에 따라 singleton centroid에 대한 특별 처리를 추가했습니다. 또한 이전 버전 알고리즘 구현에서 centroid가 과도하게 압축되는 버그도 수정했습니다. [#23314](https://github.com/ClickHouse/ClickHouse/pull/23314) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 함수 `now64`가 이제 선택적 시간대 인수를 지원하게 되었습니다. [#24091](https://github.com/ClickHouse/ClickHouse/pull/24091) ([Vasily Nemkov](https://github.com/Enmk)).
* `clickhouse-client`의 대화형 모드에서 데이터 중간에 나타나는 진행 표시줄이 터미널에 표시된 데이터 일부를 덮어쓰는 문제를 수정했습니다. 이로써 [#19283](https://github.com/ClickHouse/ClickHouse/issues/19283)가 해결되었습니다. [#23050](https://github.com/ClickHouse/ClickHouse/pull/23050) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* simdjson에서 메모리 할당 실패 시 발생할 수 있는 충돌을 수정했습니다. [https://github.com/simdjson/simdjson/pull/1567](https://github.com/simdjson/simdjson/pull/1567) . 매우 드물게 발생하는 버그이므로 개선 사항으로 분류했습니다. [#24147](https://github.com/ClickHouse/ClickHouse/pull/24147) ([Amos Bird](https://github.com/amosbird)).
* 스토리지가 종료될 때까지 딕셔너리를 유지합니다(이렇게 하면 `Buffer` 엔진의 최종 플러시 중 서버 종료 시 발생할 수 있는 `external dictionary 'DICT' not found` 오류를 방지할 수 있습니다). [#24068](https://github.com/ClickHouse/ClickHouse/pull/24068) ([Azat Khuzhin](https://github.com/azat)).
* 기반 테이블이 이미 분리되어 블록이 버려지고(로그에 `Destination table default.a_data_01870 doesn't exist. Block of data is discarded` 오류가 기록됨) 있는 상황을 방지하기 위해, 테이블(하나의 데이터베이스 내)을 종료하기 전에 `Buffer` 테이블을 플러시합니다. [#24067](https://github.com/ClickHouse/ClickHouse/pull/24067) ([Azat Khuzhin](https://github.com/azat)).
* 이제 `prefer_column_name_to_alias = 1`은 `group by`, `having`, `order by`에서도 컬럼 이름을 우선적으로 사용합니다. 이로써 [#23882](https://github.com/ClickHouse/ClickHouse/issues/23882)가 수정되었습니다. [#24022](https://github.com/ClickHouse/ClickHouse/pull/24022) ([Amos Bird](https://github.com/amosbird)).
* `DateTime64`에 대한 `ORDER BY WITH FILL` 지원이 추가되었습니다. [#24016](https://github.com/ClickHouse/ClickHouse/pull/24016) ([kevin wan](https://github.com/MaxWk)).
* `ReplacingMergeTree`에서 `DateTime64`를 버전 컬럼으로 사용할 수 있도록 지원합니다. [#23992](https://github.com/ClickHouse/ClickHouse/pull/23992) ([kevin wan](https://github.com/MaxWk)).
* 서버 시작 시 OS 이름, 커널 버전, CPU 아키텍처 정보를 로그에 기록합니다. [#23988](https://github.com/ClickHouse/ClickHouse/pull/23988) ([Azat Khuzhin](https://github.com/azat)).
* `postgresql` 딕셔너리 소스에서 테이블 스키마를 지정할 수 있도록 지원합니다. [#23958](https://github.com/ClickHouse/ClickHouse/issues/23958)를 해결했습니다. [#23980](https://github.com/ClickHouse/ClickHouse/pull/23980) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `Enum` 요소 이름에 대한 힌트를 추가합니다(오타가 있을 경우 올바른 이름을 제안합니다). [#17112](https://github.com/ClickHouse/ClickHouse/issues/17112)를 해결합니다. [#23919](https://github.com/ClickHouse/ClickHouse/pull/23919) ([flynn](https://github.com/ucasFL)).
* Dictionaries의 조회 성공률(값을 찾은 비율, `system.dictionaries`의 `found_rate` 참조)을 측정합니다. [#23916](https://github.com/ClickHouse/ClickHouse/pull/23916) ([Azat Khuzhin](https://github.com/azat)).
* 테이블 설정 `rabbitmq_queue_settings_list`를 통해 특정 큐 설정을 추가할 수 있도록 했습니다. ([#23737](https://github.com/ClickHouse/ClickHouse/issues/23737) 및 [#23918](https://github.com/ClickHouse/ClickHouse/issues/23918) 해결). 사용자가 RabbitMQ 설정 전체를 제어할 수 있도록 했습니다. 즉, 테이블 설정 `rabbitmq_queue_consume`이 `1`로 설정되면 RabbitMQ 테이블 엔진은 지정된 큐에만 연결하며, exchange, 큐, bindings 선언과 같은 RabbitMQ consumer 측 설정은 수행하지 않습니다. ([#21757](https://github.com/ClickHouse/ClickHouse/issues/21757) 해결). RabbitMQ 테이블이 삭제될 때 적절히 정리되도록 개선했습니다. 테이블이 선언한 큐와, 테이블이 생성한 경우 해당 큐에 바인딩된 모든 exchange를 삭제합니다. [#23887](https://github.com/ClickHouse/ClickHouse/pull/23887) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `system.distribution_queue`에 `broken_data_files`/`broken_data_compressed_bytes`를 추가했습니다. 손상된 것으로 표시된 분산 테이블의 비동기 삽입 파일 수를 나타내는 메트릭(`BrokenDistributedFilesToInsert`)을 추가했습니다. [#23885](https://github.com/ClickHouse/ClickHouse/pull/23885) ([Azat Khuzhin](https://github.com/azat)).
* `system.tables`에 대한 쿼리는 이제 더 이상 ZooKeeper로 가지 않습니다. [#23793](https://github.com/ClickHouse/ClickHouse/pull/23793) ([Fuwang Hu](https://github.com/fuwhu)).
* `OPTIMIZE` 쿼리에도 `lock_acquire_timeout_for_background_operations`를 적용합니다. [#23623](https://github.com/ClickHouse/ClickHouse/pull/23623) ([Azat Khuzhin](https://github.com/azat)).
* 새로운 `SYSTEM RESTART DISK` SQL 명령으로 런타임 중 `S3` 디스크 설정을 변경할 수 있게 되었습니다. [#23429](https://github.com/ClickHouse/ClickHouse/pull/23429) ([Pavel Kovalenko](https://github.com/Jokser)).
* 사용자가 실수로 `max_distributed_connections` 값을 0으로 설정해 잘못된 구성을 적용하면, `Distributed` 테이블에 대한 모든 쿼리에서 "logical error"가 포함된 메시지와 함께 예외가 발생합니다. 하지만 이는 실제로 논리 오류가 아니라 예상된 동작이므로, 예외 메시지가 다소 부정확했습니다. 또한 이로 인해 논리 오류가 절대 발생하지 않아야 한다고 검사하는 CI 환경의 체크도 실행되었습니다. 앞으로는 `max_distributed_connections`가 0으로 잘못 설정된 경우 이를 가능한 최소값인 1로 처리합니다. [#23348](https://github.com/ClickHouse/ClickHouse/pull/23348) ([Azat Khuzhin](https://github.com/azat)).
* `min_bytes_to_use_mmap_io`를 기본값으로 비활성화했습니다. [#23322](https://github.com/ClickHouse/ClickHouse/pull/23322) ([Azat Khuzhin](https://github.com/azat)).
* `join_use_nulls`에서 `LowCardinality`의 NULL 허용을 지원하고, [#15101](https://github.com/ClickHouse/ClickHouse/issues/15101)을 해결했습니다. [#23237](https://github.com/ClickHouse/ClickHouse/pull/23237) ([vdimir](https://github.com/vdimir)).
* `S3` 디스크에서 `MergeTree` 파트를 `detached` 디렉터리로 복원하는 기능이 추가되었습니다. [#23112](https://github.com/ClickHouse/ClickHouse/pull/23112) ([Pavel Kovalenko](https://github.com/Jokser)).
* S3에서 HTTP connection 끊김 시 재시도합니다. [#22988](https://github.com/ClickHouse/ClickHouse/pull/22988) ([Vladimir Chebotarev](https://github.com/excitoon)).
* MySQL 테이블 엔진, 딕셔너리 소스, 그리고 MaterializeMySQL의 소규모 데이터 가져오기 작업을 위해 설정 `external_storage_max_read_rows` 및 `external_storage_max_read_rows`를 추가했습니다. [#22697](https://github.com/ClickHouse/ClickHouse/pull/22697) ([TCeason](https://github.com/TCeason)).
* `MaterializeMySQL`(실험적 기능): 이전에는 SQL 비호환성 때문에 MySQL 5.7.9를 지원하지 않았습니다. 이제 MySQL 매개변수 검증은 MaterializeMySQL에서 처리합니다. [#23413](https://github.com/ClickHouse/ClickHouse/pull/23413) ([TCeason](https://github.com/TCeason)).
* 분산 테이블에서 서브컬럼을 읽을 수 있도록 했습니다. [#24472](https://github.com/ClickHouse/ClickHouse/pull/24472) ([Anton Popov](https://github.com/CurtizJ)).
* `CREATE .. AS SELECT` 쿼리에서 튜플 사용 문제를 수정했습니다. [#24464](https://github.com/ClickHouse/ClickHouse/pull/24464) ([Anton Popov](https://github.com/CurtizJ)).
* `Kafka` 테이블의 `Parquet` 포맷 지원. [#23412](https://github.com/ClickHouse/ClickHouse/pull/23412) ([Chao Ma](https://github.com/godliness)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 파티션 키와 기본 키에 사용할 때는 이전 modulo 함수 버전을 사용합니다. [#23508](https://github.com/ClickHouse/ClickHouse/issues/23508)을 해결했습니다. [#24157](https://github.com/ClickHouse/ClickHouse/pull/24157) ([Kseniia Sumarokova](https://github.com/kssenii)). 이전 릴리스에서 이전 버전과의 호환성을 깨뜨리는 원인이었습니다.
* 쿼리 `SYSTEM RESTART REPLICA` 또는 `SYSTEM SYNC REPLICA`가 무한히 처리되던 문제를 수정했습니다. 이 문제는 RAM이 극히 적은 서버에서 발견되었습니다. [#24457](https://github.com/ClickHouse/ClickHouse/pull/24457) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `toWeek` 함수의 잘못된 단조성을 수정했습니다. 이로써 [#24422](https://github.com/ClickHouse/ClickHouse/issues/24422)가 해결됩니다. 이 버그는 [#5212](https://github.com/ClickHouse/ClickHouse/pull/5212)에서 도입되었으며, 이후 더 정교해진 파티션 가지치기 기능으로 인해 드러났습니다. [#24446](https://github.com/ClickHouse/ClickHouse/pull/24446) ([Amos Bird](https://github.com/amosbird)).
* intersect fake parts가 있는 경우 파티션 삭제 문제를 수정했습니다. 드물게 현재 블록 번호보다 큰 mutation 버전을 가진 파트가 있을 수 있습니다. [#24321](https://github.com/ClickHouse/ClickHouse/pull/24321) ([Amos Bird](https://github.com/amosbird)).
* materialized view를 Ordinary 데이터베이스에서 Atomic 데이터베이스로 이동할 때 발생하던 버그를 수정했습니다(`RENAME TABLE` 쿼리). 이제 내부 테이블도 materialized view와 함께 새 데이터베이스로 이동합니다. [#23926](https://github.com/ClickHouse/ClickHouse/issues/23926)을 수정했습니다. [#24309](https://github.com/ClickHouse/ClickHouse/pull/24309) ([tavplubix](https://github.com/tavplubix)).
* 클라이언트 요청에서 빈 HTTP 헤더를 허용합니다. [#23901](https://github.com/ClickHouse/ClickHouse/issues/23901)을 해결합니다. [#24285](https://github.com/ClickHouse/ClickHouse/pull/24285) ([Ivan](https://github.com/abyss7)).
* `max_threads = 1`로 설정하여 `Memory` 테이블에서 발생하던 mutation 실패를 해결합니다. [#24274](https://github.com/ClickHouse/ClickHouse/issues/24274)를 해결합니다. [#24275](https://github.com/ClickHouse/ClickHouse/pull/24275) ([flynn](https://github.com/ucasFL)).
* `Memory` 테이블 구현의 오타를 수정했습니다. 이 버그는 [#15127](https://github.com/ClickHouse/ClickHouse/issues/15127)에서 도입되었습니다. [#24192](https://github.com/ClickHouse/ClickHouse/issues/24192)를 해결합니다. [#24193](https://github.com/ClickHouse/ClickHouse/pull/24193) ([张中南](https://github.com/plugine)).
* 쿼리 실행 중 `HDFS`에 더 이상 접근할 수 없게 되어 발생하는 비정상적인 서버 종료 문제를 수정했습니다. [#24117](https://github.com/ClickHouse/ClickHouse/issues/24117)를 해결합니다. [#24191](https://github.com/ClickHouse/ClickHouse/pull/24191) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 상수 조건으로 `Nested` 컬럼을 업데이트할 때 발생하던 충돌을 수정했습니다. [#24183](https://github.com/ClickHouse/ClickHouse/pull/24183) ([hexiaoting](https://github.com/hexiaoting)).
* 높은 부하 상황에서 RBAC에 발생할 수 있던 경쟁 상태를 수정했습니다. 이 PR은 [#24090](https://github.com/ClickHouse/ClickHouse/issues/24090), [#24134](https://github.com/ClickHouse/ClickHouse/issues/24134),. [#24176](https://github.com/ClickHouse/ClickHouse/pull/24176)을 수정합니다 ([Vitaly Baranov](https://github.com/vitlibar)).
* 쓰기 요청(삽입/alter 등)을 처리할 수 있는 부분적으로만 초기화된 테이블이 생성될 수 있었던 드문 버그를 수정했습니다. 이제 이러한 테이블은 읽기 전용 모드로 전환됩니다. [#24122](https://github.com/ClickHouse/ClickHouse/pull/24122) ([alesapin](https://github.com/alesapin)).
* `SELECT xxx FINAL`과 함께 사용하는 `EXPLAIN PIPELINE`이 잘못된 파이프라인을 표시하던 문제를 수정했습니다. ([hexiaoting](https://github.com/hexiaoting)).
* `WHERE`에서 const `DateTime` 값을 `DateTime64` 컬럼과 비교할 때 발생하던 문제를 수정했습니다. [#24100](https://github.com/ClickHouse/ClickHouse/pull/24100) ([Vasily Nemkov](https://github.com/Enmk)).
* merge JOIN에서 발생하던 충돌을 수정했으며, [#24010](https://github.com/ClickHouse/ClickHouse/issues/24010)을 해결했습니다. [#24013](https://github.com/ClickHouse/ClickHouse/pull/24013) ([vdimir](https://github.com/vdimir)).
* 일부 `ALTER PARTITION` 쿼리로 인해 복제 큐에서 `Part A intersects previous part B` 및 `Unexpected merged part C intersecting drop range D` 오류가 발생할 수 있었습니다. 이 문제가 수정되었습니다. [#23296](https://github.com/ClickHouse/ClickHouse/issues/23296)를 해결했습니다. [#23997](https://github.com/ClickHouse/ClickHouse/pull/23997) ([tavplubix](https://github.com/tavplubix)).
* external GROUP BY와 오버플로우 행에서 발생하던 SIGSEGV를 수정했습니다(즉, `SELECT FROM GROUP BY WITH TOTALS SETTINGS max_bytes_before_external_group_by>0, max_rows_to_group_by>0, group_by_overflow_mode='any', totals_mode='before_having'`와 같은 쿼리). [#23962](https://github.com/ClickHouse/ClickHouse/pull/23962) ([Azat Khuzhin](https://github.com/azat)).
* 소스에 중복이 있는 `CACHE` 딕셔너리의 키 메트릭 집계를 수정했습니다(`DictCacheKeysRequestedMiss` 오버플로우로 이어짐). [#23929](https://github.com/ClickHouse/ClickHouse/pull/23929) ([Azat Khuzhin](https://github.com/azat)).
* `PostgreSQL` engine의 연결 풀 구현을 수정했습니다. [#23897](https://github.com/ClickHouse/ClickHouse/issues/23897)을 해결했습니다. [#23909](https://github.com/ClickHouse/ClickHouse/pull/23909) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `GROUP BY`와 함께 일반 함수로 감싼 집계 함수를 사용할 때 `distributed_group_by_no_merge = 2`가 올바르게 동작하도록 수정했습니다([#23546](https://github.com/ClickHouse/ClickHouse/issues/23546)에서 문제가 발생했음). `distributed_group_by_no_merge = 2`를 윈도우 함수와 함께 사용하려고 하면 예외를 발생시키도록 했습니다. 윈도우 함수가 포함된 쿼리에서는 `optimize_distributed_group_by_sharding_key`를 비활성화했습니다. [#23906](https://github.com/ClickHouse/ClickHouse/pull/23906) ([Azat Khuzhin](https://github.com/azat)).
* `s3` 테이블 함수 수정: HTTP 오류를 더 잘 처리하도록 개선했습니다. 이전에는 HTTP 오류의 응답 본문이 무시되었습니다. [#23844](https://github.com/ClickHouse/ClickHouse/pull/23844) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `s3` 테이블 함수 수정: URI 처리를 개선했습니다. `+` 기호가 포함된 URL에서 발생하던 비호환성 문제를 수정했으며, 이러한 키를 가진 데이터는 이전에는 읽을 수 없었습니다. [#23822](https://github.com/ClickHouse/ClickHouse/pull/23822) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `GLOBAL IN/JOIN` 및 `use_hedged_requests`를 사용하는 쿼리에서 `Can't initialize pipeline with empty pipe` 오류를 수정했습니다. [#23431](https://github.com/ClickHouse/ClickHouse/issues/23431)을 해결합니다. [#23805](https://github.com/ClickHouse/ClickHouse/pull/23805) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* materialized view에서 참조되는 경우 `CLEAR COLUMN`이 작동하지 않는 문제를 수정했습니다. [#23764](https://github.com/ClickHouse/ClickHouse/issues/23764)를 해결했습니다. [#23781](https://github.com/ClickHouse/ClickHouse/pull/23781) ([flynn](https://github.com/ucasFL)).
* `Values` 포맷을 사용할 때 HDFS에서 읽는 중 발생하던 heap use-after-free 문제가 수정되었습니다. [#23761](https://github.com/ClickHouse/ClickHouse/pull/23761) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Distributed에 INSERT할 때(일부 예외가 발생한 경우) 발생할 수 있는 "Cannot schedule a task" 오류를 방지합니다. [#23744](https://github.com/ClickHouse/ClickHouse/pull/23744) ([Azat Khuzhin](https://github.com/azat)).
* 오래된 `ReplicatedMergeTree` 레플리카를 복구하는 과정에서 발생하던 버그를 수정했습니다. 레플리카가 중단된 동안 `ALTER` 쿼리가 실행되면, 오래된 레플리카가 일부 메타데이터 업데이트를 무시할 수 있었습니다. [#23742](https://github.com/ClickHouse/ClickHouse/pull/23742) ([tavplubix](https://github.com/tavplubix)).
* `Join` 및 `WITH TOTALS` 관련 버그를 수정해 [#17718](https://github.com/ClickHouse/ClickHouse/issues/17718)을 해결했습니다. [#23549](https://github.com/ClickHouse/ClickHouse/pull/23549) ([vdimir](https://github.com/vdimir)).
* filter-pushdown 최적화 후 `UNION`이 포함된 쿼리에서 발생할 수 있던 `Block structure mismatch` 오류를 수정했습니다. [#23029](https://github.com/ClickHouse/ClickHouse/issues/23029)를 수정했습니다. [#23359](https://github.com/ClickHouse/ClickHouse/pull/23359) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `optimize_skip_unused_shards_rewrite_in` 설정이 활성화되었을 때 형 변환을 추가했습니다. 이를 통해 MSan 보고 문제를 수정했습니다. [#23219](https://github.com/ClickHouse/ClickHouse/pull/23219) ([Azat Khuzhin](https://github.com/azat)).
* 중첩된 서브컬럼을 업데이트할 때 누락된 검사를 추가하여 이슈를 해결했습니다: [#22353](https://github.com/ClickHouse/ClickHouse/issues/22353). [#22503](https://github.com/ClickHouse/ClickHouse/pull/22503) ([hexiaoting](https://github.com/hexiaoting)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* Illumos에서의 빌드를 지원합니다. [#24144](https://github.com/ClickHouse/ClickHouse/pull/24144). Solaris 계열 운영 체제에서 빌드할 수 있도록 지원을 추가합니다. [#23746](https://github.com/ClickHouse/ClickHouse/pull/23746) ([bnaecker](https://github.com/bnaecker)).
* Google의 Swiss Table을 포함해 해시 테이블 벤치마크를 추가합니다(특정 사용 시나리오에서는 ClickHouse 해시 맵보다 느린 것으로 나타남). [#24111](https://github.com/ClickHouse/ClickHouse/pull/24111) ([Maksim Kita](https://github.com/kitaisreal)).
* librdkafka를 1.6.0-RC3에서 1.6.1로 업데이트합니다. [#23874](https://github.com/ClickHouse/ClickHouse/pull/23874) ([filimonov](https://github.com/filimonov)).
* `asynchronous-unwind-tables`를 항상 명시적으로 활성화합니다. AArch64에서 쿼리 프로파일러 문제를 해결할 수 있습니다. [#23602](https://github.com/ClickHouse/ClickHouse/pull/23602) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 로캘 및 파일 시스템 순서에 대한 빌드 의존성이 생길 가능성을 방지합니다. 이를 통해 재현 가능한 빌드가 가능해집니다. [#23600](https://github.com/ClickHouse/ClickHouse/pull/23600) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 빌드의 비결정성 원인 하나를 제거합니다. 이제 서로 다른 시점에 빌드해도 바이트 단위로 동일한 바이너리가 생성됩니다. [#22113](https://github.com/ClickHouse/ClickHouse/issues/22113)를 부분적으로 해결했습니다. [#23559](https://github.com/ClickHouse/ClickHouse/pull/23559) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* (Zoo)Keeper 벤치마크를 위한 간단한 도구를 추가합니다. [#23038](https://github.com/ClickHouse/ClickHouse/pull/23038) ([alesapin](https://github.com/alesapin)).

<div id="clickhouse-release-215-2021-05-20">
  ## ClickHouse 릴리스 21.5, 2021-05-20
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* 정수를 부동소수점 데이터 타입으로 정확하게 표현할 수 없을 때의 정수와 부동소수점 수 비교 방식이 변경되었습니다. 새 버전에서는 반올림 오차가 발생하므로 비교 결과가 false가 됩니다. 예시: `9223372036854775808.0 != 9223372036854775808`. 이는 `9223372036854775808`이라는 값을 부동소수점 수로 정확하게 표현할 수 없기 때문입니다(그리고 `9223372036854775808.0`은 `9223372036854776000.0`으로 반올림됩니다). 그러나 이전 버전에서는 이 비교 결과가 두 수가 같다고 나왔습니다. 부동소수점 수 `9223372036854776000.0`을 다시 UInt64로 변환하면 `9223372036854775808`이 되기 때문입니다. 참고로 Python 프로그래밍 언어도 이 수들을 같다고 취급합니다. 하지만 이 동작은 CPU 모델에 따라 달랐습니다(일부 범위 밖 숫자에서는 AMD64와 AArch64에서 결과가 달랐음). 따라서 비교를 더 정확하게 개선했습니다. 이제 정수와 부동소수점 수는 정수가 부동소수점 타입으로 정확하게 표현될 수 있는 경우에만 같다고 취급됩니다. [#22595](https://github.com/ClickHouse/ClickHouse/pull/22595) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 단일 `Tuple` 인수에 대한 `argMin` 및 `argMax` 지원이 제거되었습니다. 해당 코드는 메모리 안전성이 없었습니다. 이 기능은 실수로 추가된 것이며 사용자에게 혼란을 줄 수 있습니다. 이 함수들은 나중에 다른 이름으로 다시 도입될 수 있습니다. 이 변경은 [#22384](https://github.com/ClickHouse/ClickHouse/issues/22384)를 수정하고 [#17359](https://github.com/ClickHouse/ClickHouse/issues/17359)를 되돌립니다. [#23393](https://github.com/ClickHouse/ClickHouse/pull/23393) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="new-feature">
  #### 새로운 기능
</div>

* 함수 `dictGetChildren(dictionary, key)`, `dictGetDescendants(dictionary, key, level)`가 추가되었습니다. `dictGetChildren` 함수는 모든 자식의 인덱스를 배열로 반환합니다. 이는 `dictGetHierarchy`의 역변환입니다. `dictGetDescendants` 함수는 `dictGetChildren`를 재귀적으로 `level`번 적용한 것과 같이 모든 하위 항목을 반환합니다. `level` 값이 0이면 무한대로 간주됩니다. 또한 `dictGetHierarchy`, `dictIsIn` 함수의 성능이 개선되었습니다. [#14656](https://github.com/ClickHouse/ClickHouse/issues/14656)을 해결했습니다. [#22096](https://github.com/ClickHouse/ClickHouse/pull/22096) ([Maksim Kita](https://github.com/kitaisreal)).
* 함수 `dictGetOrNull`이 추가되었습니다. 이 함수는 `dictGet`처럼 동작하지만, 딕셔너리에서 키를 찾지 못한 경우 `Null`을 반환합니다. [#22375](https://github.com/ClickHouse/ClickHouse/issues/22375)를 해결했습니다. [#22413](https://github.com/ClickHouse/ClickHouse/pull/22413) ([Maksim Kita](https://github.com/kitaisreal)).
* 테이블 함수 `s3Cluster`가 추가되었습니다. 이를 통해 지정된 cluster의 각 노드에서 `s3`의 파일을 병렬로 처리할 수 있습니다. [#22012](https://github.com/ClickHouse/ClickHouse/pull/22012) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* MySQL/PostgreSQL 테이블 엔진 / 테이블 함수에서 레플리카와 세그먼트 지원이 추가되었습니다. `SELECT * FROM mysql('host{1,2}-{1|2}', ...)`와 같이 작성할 수 있습니다. [#20969](https://github.com/ClickHouse/ClickHouse/issues/20969)를 해결했습니다. [#22217](https://github.com/ClickHouse/ClickHouse/pull/22217) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `ALTER TABLE ... FETCH PART ...` 쿼리가 추가되었습니다. 이는 `FETCH PARTITION`과 유사하지만, 하나의 파트만 가져옵니다. [#22706](https://github.com/ClickHouse/ClickHouse/pull/22706) ([turbo jason](https://github.com/songenjie)).
* `Distributed` 테이블에 대한 재귀 쿼리의 깊이를 제한하는 설정 `max_distributed_depth`가 추가되었습니다. [#20229](https://github.com/ClickHouse/ClickHouse/issues/20229)를 해결했습니다. [#21942](https://github.com/ClickHouse/ClickHouse/pull/21942) ([flynn](https://github.com/ucasFL)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* AVX2용 동적 디스패치를 적용해 `intDiv` 성능을 개선했습니다. 이 변경으로 [#22314](https://github.com/ClickHouse/ClickHouse/issues/22314)가 해결되었습니다. [#23000](https://github.com/ClickHouse/ClickHouse/pull/23000) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 로컬 파일이 아닌 소스(예: URL)에서 `ArrowStream` 입력 형식을 읽을 때의 성능을 개선했습니다. [#22673](https://github.com/ClickHouse/ClickHouse/pull/22673) ([nvartolomei](https://github.com/nvartolomei)).
* 네이티브 프로토콜로 `localhost`와 통신할 때(`clickhouse-client` 사용 시 또는 분산 쿼리의 서버 간 통신 시) 기본적으로 Compression을 비활성화했습니다. 이에 따라 일부 가져오기/내보내기 작업의 성능이 향상될 수 있습니다. 이 변경으로 [#22234](https://github.com/ClickHouse/ClickHouse/issues/22234)가 해결되었습니다. [#22237](https://github.com/ClickHouse/ClickHouse/pull/22237) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 분산 쿼리의 IN 절 오른쪽 부분에서 해당 세그먼트에 속하지 않는 값을 제외하도록 했습니다(`optimize_skip_unused_shards_rewrite_in` 기준, 기본적으로 활성화되지만 여전히 `optimize_skip_unused_shards`가 필요함). [#21511](https://github.com/ClickHouse/ClickHouse/pull/21511) ([Azat Khuzhin](https://github.com/azat)).
* File 계열 테이블 엔진과 Parquet, Arrow, ORC 같은 컬럼 지향 포맷에서 일부 컬럼만 읽을 때의 성능을 개선했습니다. 이 변경으로 [#issue:20129](https://github.com/ClickHouse/ClickHouse/issues/20129)가 해결되었습니다. [#21302](https://github.com/ClickHouse/ClickHouse/pull/21302) ([keenwolf](https://github.com/keen-wolf)).
* 버전 21.1 이전처럼 더 많은 조건을 `PREWHERE`로 이동할 수 있도록 했습니다(내부 휴리스틱 조정). 이동되는 조건 수가 충분하지 않으면 성능이 저하될 수 있습니다. [#23397](https://github.com/ClickHouse/ClickHouse/pull/23397) ([Anton Popov](https://github.com/CurtizJ)).
* ODBC 연결 성능을 개선하고 백로그에 남아 있던 모든 문제를 수정했습니다. `Poco::ODBC` 대신 `nanodbc` 라이브러리를 사용합니다. 이 변경으로 [#9678](https://github.com/ClickHouse/ClickHouse/issues/9678)이 해결되었습니다. ODBC 테이블 엔진에 DateTime64 및 Decimal\* 지원을 추가했습니다. 이 변경으로 [#21961](https://github.com/ClickHouse/ClickHouse/issues/21961)이 해결되었습니다. 키릴 문자 텍스트가 잘리는 문제를 수정했습니다. 이 변경으로 [#16246](https://github.com/ClickHouse/ClickHouse/issues/16246)이 해결되었습니다. ODBC bridge용 연결 풀을 추가했습니다. [#21972](https://github.com/ClickHouse/ClickHouse/pull/21972) ([Kseniia Sumarokova](https://github.com/kssenii)).

<div id="improvement-3">
  #### 개선
</div>

* 기본값으로 `max_uri_size`(HTTP 인터페이스에서 URL의 최대 크기)를 1 MiB로 늘렸습니다. 이 변경으로 [#21197](https://github.com/ClickHouse/ClickHouse/issues/21197)이 해결되었습니다. [#22997](https://github.com/ClickHouse/ClickHouse/pull/22997) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `background_fetches_pool_size`를 `8`로 설정했습니다. 이는 빈번한 소규모 삽입이 있거나 ZooKeeper 클러스터가 느린 프로덕션 환경에 더 적합합니다. [#22945](https://github.com/ClickHouse/ClickHouse/pull/22945) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* FlatDictionary에 `initial_array_size`, `max_array_size` 옵션이 추가되었습니다. [#22521](https://github.com/ClickHouse/ClickHouse/pull/22521) ([Maksim Kita](https://github.com/kitaisreal)).
* 복제되지 않은 MergeTree에서 삽입 중복 제거를 위한 새로운 설정 `non_replicated_deduplication_window`을 추가했습니다. [#22514](https://github.com/ClickHouse/ClickHouse/pull/22514) ([alesapin](https://github.com/alesapin)).
* `CatBoost` 모델 구성의 경로를 구성을 다시 로드할 때 업데이트했습니다. [#22434](https://github.com/ClickHouse/ClickHouse/pull/22434) ([Kruglov Pavel](https://github.com/Avogar)).
* Dictionaries에 `Decimal256` 유형 지원이 추가되었습니다. `Decimal256`은 실험적 기능입니다. [#20979](https://github.com/ClickHouse/ClickHouse/issues/20979)를 해결했습니다. [#22960](https://github.com/ClickHouse/ClickHouse/pull/22960) ([Maksim Kita](https://github.com/kitaisreal)).
* 기본값으로 `async_socket_for_remote`를 활성화했습니다(분산 쿼리에 사용하는 OS 스레드 수를 줄임). [#23683](https://github.com/ClickHouse/ClickHouse/pull/23683) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `quantile(s)TDigest`를 수정했습니다. tdunning/t-digest 3.2+에 따라 싱글턴 centroid에 대한 특별 처리를 추가했습니다. 또한 이전 버전 알고리즘 구현에서 centroid가 과도하게 압축되던 버그도 수정했습니다. [#23314](https://github.com/ClickHouse/ClickHouse/pull/23314) ([Vladimir Chebotarev](https://github.com/excitoon)).
* MySQL과의 호환성을 위해 함수 이름 `unhex`가 대소문자를 구분하지 않도록 변경했습니다. [#23229](https://github.com/ClickHouse/ClickHouse/pull/23229) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 배열 요소의 타입이 서로 다른 일반적인 경우에도 `arrayHasAny`, `arrayHasAll`, `has`, `indexOf`, `countEqual` 함수가 동작하도록 구현했습니다. 이전 버전에서는 `arrayHasAny`, `arrayHasAll` 함수는 false를 반환했고 `has`, `indexOf`, `countEqual`은 예외를 발생시켰습니다. 또한 `has` 및 유사한 함수에서 `Decimal` 및 큰 정수 타입을 지원하도록 추가했습니다. 이로써 [#20272](https://github.com/ClickHouse/ClickHouse/issues/20272)가 해결되었습니다. [#23044](https://github.com/ClickHouse/ClickHouse/pull/23044) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 함수 `extractAllGroupsHorizontal`의 결과에서 최대 일치 개수의 한도를 높였습니다. [#23036](https://github.com/ClickHouse/ClickHouse/pull/23036) ([Vasily Nemkov](https://github.com/Enmk)).
* 노드가 1개뿐인 클러스터에서는 `optimize_skip_unused_shards`를 수행하지 않습니다. [#22999](https://github.com/ClickHouse/ClickHouse/pull/22999) ([Azat Khuzhin](https://github.com/azat)).
* SSL을 사용해 clickhouse-keeper(ZooKeeper를 바로 대체할 수 있는 Experimental drop-in replacement)를 실행할 수 있는 기능이 추가되었습니다. 클라이언트와 keeper-server 간의 보안 통신에는 `keeper_server.tcp_port_secure` 설정을 사용할 수 있습니다. 노드 간 내부 보안 통신을 활성화하려면 `keeper_server.raft_configuration.secure`를 사용할 수 있습니다. [#22992](https://github.com/ClickHouse/ClickHouse/pull/22992) ([alesapin](https://github.com/alesapin)).
* `Buffer` 테이블에서 버퍼를 백그라운드에서만 플러시할 수 있는 기능이 추가되었습니다. [#22986](https://github.com/ClickHouse/ClickHouse/pull/22986) ([Azat Khuzhin](https://github.com/azat)).
* WHERE 조건에 NULL이 포함된 MergeTree 테이블을 SELECT할 때, 드물게 예외가 발생하던 문제를 수정했습니다. 이로써 [#20019](https://github.com/ClickHouse/ClickHouse/issues/20019)가 해결되었습니다. [#22978](https://github.com/ClickHouse/ClickHouse/pull/22978) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* AWS용 Poco HTTP Client의 오류 처리 문제를 수정했습니다. [#22973](https://github.com/ClickHouse/ClickHouse/pull/22973) ([kreuzerkrieg](https://github.com/kreuzerkrieg)).
* `ReplicatedMergeTree`에서 `max_part_removal_threads` 설정을 적용합니다. [#22971](https://github.com/ClickHouse/ClickHouse/pull/22971) ([Azat Khuzhin](https://github.com/azat)).
* inactive\_parts\_to\_throw\_insert = 0이고 inactive\_parts\_to\_delay\_insert > 0일 때 발생하는 MergeTree 설정의 드문 예외 사례를 수정했습니다. [#22947](https://github.com/ClickHouse/ClickHouse/pull/22947) ([Azat Khuzhin](https://github.com/azat)).
* `dateDiff`가 이제 `DateTime64` 인수를 지원합니다(`DateTime` 범위를 벗어나는 값도 포함). [#22931](https://github.com/ClickHouse/ClickHouse/pull/22931) ([Vasily Nemkov](https://github.com/Enmk)).
* MaterializeMySQL (실험적 기능): 뷰를 포함하는 MySQL 데이터베이스도 오류 없이 복제할 수 있는 기능이 추가되었습니다. 이는 뷰를 무시하는 방식으로 구현되었습니다. [#22760](https://github.com/ClickHouse/ClickHouse/pull/22760) ([Christian](https://github.com/cfroystad)).
* PostgreSQL 프로토콜을 통해 RBAC ROW POLICY를 사용할 수 있도록 했습니다. [#22658](https://github.com/ClickHouse/ClickHouse/issues/22658)를 해결합니다. PostgreSQL 프로토콜은 기본적으로 구성에서 활성화되어 있습니다. [#22755](https://github.com/ClickHouse/ClickHouse/pull/22755) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Buffer layer lock을 기다리는 데 소요되는 시간을 추적하기 위한 메트릭을 추가했습니다. [#22725](https://github.com/ClickHouse/ClickHouse/pull/22725) ([Azat Khuzhin](https://github.com/azat)).
* VIEW 정의에서 CTE를 사용할 수 있게 되었습니다. 이로써 [#22491](https://github.com/ClickHouse/ClickHouse/issues/22491) 문제가 해결되었습니다. [#22657](https://github.com/ClickHouse/ClickHouse/pull/22657) ([Amos Bird](https://github.com/amosbird)).
* 이전 프로그램이 터미널에 깨진 출력을 남긴 경우 `clickhouse-client`에서 화면의 나머지 부분을 지우고 커서를 다시 표시합니다. 이로써 [#16518](https://github.com/ClickHouse/ClickHouse/issues/16518) 문제가 해결됩니다. [#22634](https://github.com/ClickHouse/ClickHouse/pull/22634) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `round` 함수가 non-x86\_64 플랫폼에서도 일관되게 동작하도록 개선했습니다. 정확히 절반인 경우 가장 가까운 짝수로 반올림하는 방식(Banker's rounding)을 사용합니다. [#22582](https://github.com/ClickHouse/ClickHouse/pull/22582) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 분산 테이블이 전송하는 데이터 블록의 구조를 올바르게 검사합니다. [#22325](https://github.com/ClickHouse/ClickHouse/pull/22325) ([Azat Khuzhin](https://github.com/azat)).
* `kafka_handle_error_mode` 설정으로 제어되는 Kafka engine의 가상 컬럼에 Kafka 오류를 게시할 수 있도록 했습니다. [#21850](https://github.com/ClickHouse/ClickHouse/pull/21850) ([fastio](https://github.com/fastio)).
* `visitParam/visitParamExtract{UInt, Int, Bool, Float, Raw, String}`의 별칭으로 `simpleJSONExtract/simpleJSONHas`를 추가합니다. [#21383](https://github.com/ClickHouse/ClickHouse/issues/21383)를 수정했습니다. [#21519](https://github.com/ClickHouse/ClickHouse/pull/21519) ([fastio](https://github.com/fastio)).
* 라이브러리 딕셔너리 소스를 위해 `clickhouse-library-bridge`를 추가했습니다. [#9502](https://github.com/ClickHouse/ClickHouse/issues/9502)를 종료합니다. [#21509](https://github.com/ClickHouse/ClickHouse/pull/21509) ([Kseniia Sumarokova](https://github.com/kssenii)).
* materialized view에서 참조되는 컬럼은 삭제할 수 없게 합니다. [#21164](https://github.com/ClickHouse/ClickHouse/issues/21164)를 해결합니다. [#21303](https://github.com/ClickHouse/ClickHouse/pull/21303) ([flynn](https://github.com/ucasFL)).
* 서비스 중단 없이 자격 증명을 교체할 수 있는 동적 서버 간 자격 증명을 지원합니다. [#14113](https://github.com/ClickHouse/ClickHouse/pull/14113) ([johnskopis](https://github.com/johnskopis)).
* Kafka 스토리지에서 `Arrow` 및 `ArrowStream` 포맷 메시지 지원을 추가했습니다. [#23415](https://github.com/ClickHouse/ClickHouse/pull/23415) ([Chao Ma](https://github.com/godliness)).
* 예외 메시지에서 누락된 세미콜론을 수정했습니다. 이 예외 메시지는 읽기에 다소 불편할 수 있습니다. [#23208](https://github.com/ClickHouse/ClickHouse/pull/23208) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 일부 `LowCardinality` 유형 관련 예외 메시지에서 누락된 공백을 수정했습니다. [#23207](https://github.com/ClickHouse/ClickHouse/pull/23207) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Markdown` 포맷에서 일부 값이 테이블 셀 내에서 가운데 정렬로 표시되던 문제가 있었습니다. 이제는 더 이상 그렇지 않습니다. [#23096](https://github.com/ClickHouse/ClickHouse/pull/23096) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* clickhouse-client의 제안 항목에서 불필요한 세부 정보를 제거했습니다. 이 변경으로 [#22158](https://github.com/ClickHouse/ClickHouse/issues/22158)이 해결되었습니다. [#23040](https://github.com/ClickHouse/ClickHouse/pull/23040) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 희소\_hashed 사전의 system.dictionaries에서 `bytes_allocated` 필드가 올바르게 계산되도록 수정했습니다. [#22867](https://github.com/ClickHouse/ClickHouse/pull/22867) ([Azat Khuzhin](https://github.com/azat)).
* MergeTree에서 역방향으로 읽을 때 대략적인 전체 행 수 집계를 수정했습니다. [#22726](https://github.com/ClickHouse/ClickHouse/pull/22726) ([Azat Khuzhin](https://github.com/azat)).
* 자기 자신을 참조하는 ClickHouse 소스로 딕셔너리를 구성할 수 있어 무한 루프가 발생하던 문제를 수정했습니다. [#14314](https://github.com/ClickHouse/ClickHouse/issues/14314)를 종료합니다. [#22479](https://github.com/ClickHouse/ClickHouse/pull/22479) ([Maksim Kita](https://github.com/kitaisreal)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 헤지드 요청과 관련된 여러 수정이 적용되었습니다. `use_hedged_requests` 설정이 활성화된 상태에서 `GLOBAL IN/JOIN`이 포함된 쿼리에서 발생하던 `Can't initialize pipeline with empty pipe` 오류를 수정했습니다. [#23431](https://github.com/ClickHouse/ClickHouse/issues/23431)을 해결합니다. [#23805](https://github.com/ClickHouse/ClickHouse/pull/23805) ([Nikolai Kochetov](https://github.com/KochetovNicolai)). 충돌을 유발하던 헤지드 연결의 race condition을 수정했습니다. 이 변경으로 [#22161](https://github.com/ClickHouse/ClickHouse/issues/22161)이 해결됩니다. [#22443](https://github.com/ClickHouse/ClickHouse/pull/22443) ([Kruglov Pavel](https://github.com/Avogar)). 원격 쿼리에서 `unknown packet`을 수신했을 때(`async_socket_for_remote` 활성화 시) 발생할 수 있는 충돌을 수정했습니다. [#21167](https://github.com/ClickHouse/ClickHouse/issues/21167)을 해결합니다. [#23309](https://github.com/ClickHouse/ClickHouse/pull/23309) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `input_format_with_names_use_header ` 설정을 비활성화했을 때 CSVWithNames 포맷에서 모든 입력이 버려지던 문제를 수정했습니다. 이 변경으로 [#22406](https://github.com/ClickHouse/ClickHouse/issues/22406)이 해결되었습니다. [#23202](https://github.com/ClickHouse/ClickHouse/pull/23202) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 원격 JDBC bridge의 connection timeout 문제를 해결했습니다. [#9609](https://github.com/ClickHouse/ClickHouse/issues/9609)을 닫습니다. [#23771](https://github.com/ClickHouse/ClickHouse/pull/23771) ([Maksim Kita](https://github.com/kitaisreal), [alexey-milovidov](https://github.com/alexey-milovidov)).
* `update_field`가 지정된 경우 `complex_key_hashed`의 초기 적재 로직을 수정합니다. [#23800](https://github.com/ClickHouse/ClickHouse/issues/23800)을 해결합니다. [#23824](https://github.com/ClickHouse/ClickHouse/pull/23824) ([Maksim Kita](https://github.com/kitaisreal)).
* `PREWHERE`와 ROW POLICY 필터가 모두 적용되어 있고 결과가 비어 있을 때 발생하던 크래시를 수정했습니다. [#23763](https://github.com/ClickHouse/ClickHouse/pull/23763) ([Amos Bird](https://github.com/amosbird)).
* 분산에 INSERT할 때(일부 예외가 발생했을 때) 발생할 수 있는 "Cannot schedule a task" 오류를 방지합니다. [#23744](https://github.com/ClickHouse/ClickHouse/pull/23744) ([Azat Khuzhin](https://github.com/azat)).
* 두 샘플의 값이 모두 완전히 동일한 경우에 대비한 예외를 집계 함수 `mannWhitneyUTest`에 추가했습니다. 이로써 [#23646](https://github.com/ClickHouse/ClickHouse/issues/23646)을 수정했습니다. [#23654](https://github.com/ClickHouse/ClickHouse/pull/23654) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* HTTP를 통해 데이터를 삽입할 때 예외가 발생하던 서버 결함을 수정했습니다. 이 수정으로 [#23512](https://github.com/ClickHouse/ClickHouse/issues/23512)이 해결됩니다. [#23643](https://github.com/ClickHouse/ClickHouse/pull/23643) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 이스케이프 시퀀스가 포함된 일부 `LIKE` 표현식의 잘못된 해석을 수정했습니다. [#23610](https://github.com/ClickHouse/ClickHouse/pull/23610) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 재시작 / 중지 명령이 멈추는 문제를 수정했습니다. [#20214](https://github.com/ClickHouse/ClickHouse/issues/20214)를 해결합니다. [#23552](https://github.com/ClickHouse/ClickHouse/pull/23552) ([filimonov](https://github.com/filimonov)).
* select 쿼리에 조인이 여러 개 있는 경우 `COLUMNS` 매처를 수정했습니다. [#22736](https://github.com/ClickHouse/ClickHouse/issues/22736)을 해결합니다. [#23501](https://github.com/ClickHouse/ClickHouse/pull/23501) ([Maksim Kita](https://github.com/kitaisreal)).
* 컬럼 자체가 `ReplacingMergeTree`의 매개변수로 사용되는 경우, 해당 컬럼의 기본값을 수정할 때 발생하던 크래시를 수정했습니다. [#23483](https://github.com/ClickHouse/ClickHouse/pull/23483) ([hexiaoting](https://github.com/hexiaoting)).
* `ReplacingMergeTree`의 수직 병합에서 발생하던 특이한 사례를 수정했습니다. 드물게 `Incomplete granules are not allowed while blocks are granules size`와 같은 예외로 인해 병합이 실패할 수 있었습니다. [#23459](https://github.com/ClickHouse/ClickHouse/pull/23459) ([Anton Popov](https://github.com/CurtizJ)).
* 빈 배열 리터럴에서 1보다 큰 차원의 배열로 CAST할 수 없던 버그를 수정했습니다. 예: `CAST([] AS Array(Array(String)))`. [#14476](https://github.com/ClickHouse/ClickHouse/issues/14476)를 해결합니다. [#23456](https://github.com/ClickHouse/ClickHouse/pull/23456) ([Maksim Kita](https://github.com/kitaisreal)).
* `deltaSum` 집계 함수에서 카운터를 재설정한 후 잘못된 결과가 발생하던 버그를 수정했습니다. [#23437](https://github.com/ClickHouse/ClickHouse/pull/23437) ([Russ Frank](https://github.com/rf)).
* 멀티디스크 구성에서 ReplicatedMergeTree 테이블 생성에 실패했을 때 발생하던 `Cannot unlink file` 오류를 수정했습니다. 이로써 [#21755](https://github.com/ClickHouse/ClickHouse/issues/21755)가 해결되었습니다. [#23433](https://github.com/ClickHouse/ClickHouse/pull/23433) ([tavplubix](https://github.com/tavplubix)).
* 가상 컬럼 기반 파티션 프루닝 중 호환되지 않는 상수 표현식이 생성되던 문제를 수정했습니다. 이로써 [https://github.com/ClickHouse/ClickHouse/pull/21401#discussion\&#95;r611888913](https://github.com/ClickHouse/ClickHouse/pull/21401#discussion\&#95;r611888913) 문제가 해결됩니다. [#23366](https://github.com/ClickHouse/ClickHouse/pull/23366) ([Amos Bird](https://github.com/amosbird)).
* join\_algorithm 설정이 'auto'로 되어 있고 딕셔너리와 Join을 수행할 때 발생하던 충돌을 수정했습니다. [#23002](https://github.com/ClickHouse/ClickHouse/issues/23002)를 해결했습니다. [#23312](https://github.com/ClickHouse/ClickHouse/pull/23312) ([Vladimir](https://github.com/vdimir)).
* 파티션 프루닝 시 NOT 조건을 완화하지 않도록 했습니다. 이로써 [#23305](https://github.com/ClickHouse/ClickHouse/issues/23305) 및 [#21539](https://github.com/ClickHouse/ClickHouse/issues/21539)가 해결됩니다. [#23310](https://github.com/ClickHouse/ClickHouse/pull/23310) ([Amos Bird](https://github.com/amosbird)).
* 오래된 블록을 백그라운드에서 정리하는 과정에서 매우 드물게 발생하던 경쟁 상태를 수정했습니다. 이 문제로 인해 블록이 중복 제거 윈도우의 끝에 너무 가까우면 중복 제거되지 않을 수 있었습니다. [#23301](https://github.com/ClickHouse/ClickHouse/pull/23301) ([tavplubix](https://github.com/tavplubix)).
* ReplicatedMergeTree 테이블을 생성하거나 제거하는 과정 사이에서 발생하는 매우 드문 (distributed) race condition를 수정했습니다. 이 문제로 인해 복제된 테이블(Replicated Table)을 생성하려고 할 때 `node doesn't exist`와 같은 예외가 발생할 수 있었습니다. 이 수정은 [#21419](https://github.com/ClickHouse/ClickHouse/issues/21419)를 해결합니다. [#23294](https://github.com/ClickHouse/ClickHouse/pull/23294) ([tavplubix](https://github.com/tavplubix)).
* 프라이머리 키(primary key)가 첫 번째 속성이 아닐 경우 DDL 생성 시 단순 키 딕셔너리에서 발생하던 문제를 수정했습니다. [#23236](https://github.com/ClickHouse/ClickHouse/issues/23236)을 수정합니다. [#23262](https://github.com/ClickHouse/ClickHouse/pull/23262) ([Maksim Kita](https://github.com/kitaisreal)).
* 테이블에 긴 컬럼 이름이 많이 있을 때 ODBC에서 읽는 문제가 수정되었습니다. [#8853](https://github.com/ClickHouse/ClickHouse/issues/8853)를 해결합니다. [#23215](https://github.com/ClickHouse/ClickHouse/pull/23215) ([Kseniia Sumarokova](https://github.com/kssenii)).
* MaterializeMySQL(실험적 기능): 키 컬럼에 조건을 걸고 `MaterializeMySQL`에서 조회할 때 발생하던 `Not found column` 오류를 수정했습니다. [#22432](https://github.com/ClickHouse/ClickHouse/issues/22432)를 해결했습니다. [#23200](https://github.com/ClickHouse/ClickHouse/pull/23200) ([tavplubix](https://github.com/tavplubix)).
* 서브쿼리가 상수로 최적화된 경우 alias 처리가 올바르게 이루어지도록 수정했습니다. [#22924](https://github.com/ClickHouse/ClickHouse/issues/22924)를 수정했습니다. [#10401](https://github.com/ClickHouse/ClickHouse/issues/10401)을 수정했습니다. [#23191](https://github.com/ClickHouse/ClickHouse/pull/23191) ([Maksim Kita](https://github.com/kitaisreal)).
* 기본 프로필에서 `data_type_default_nullable` 설정이 활성화된 경우 서버가 시작되지 않을 수 있던 문제가 수정되었습니다. [#22573](https://github.com/ClickHouse/ClickHouse/issues/22573)를 수정했습니다. [#23185](https://github.com/ClickHouse/ClickHouse/pull/23185) ([tavplubix](https://github.com/tavplubix)).
* 현재 연결 수를 잘못 계산해 종료 시 발생하던 충돌을 수정했습니다. [#23154](https://github.com/ClickHouse/ClickHouse/pull/23154) ([Vitaly Baranov](https://github.com/vitlibar)).
* materialized view를 Atomic 데이터베이스에서 분리했다가 다시 ATTACH한 뒤 조회할 때 발생하던 `Table .inner_id... doesn't exist` 오류를 수정했습니다. [#23047](https://github.com/ClickHouse/ClickHouse/pull/23047) ([tavplubix](https://github.com/tavplubix)).
* 하위 쿼리(subquery)에서 `untuple`을 사용할 때 발생할 수 있는 오류 `Cannot find column in ActionsDAG result`를 수정했습니다. [#22290](https://github.com/ClickHouse/ClickHouse/issues/22290). [#22991](https://github.com/ClickHouse/ClickHouse/pull/22991) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 값이 널 허용인 `Map` 타입 상수 컬럼 사용 문제를 수정했습니다. [#22939](https://github.com/ClickHouse/ClickHouse/pull/22939) ([Anton Popov](https://github.com/CurtizJ)).
* `DateTime64`에서 `formatDateTime()`과 "%C" 포맷 지정자 문제가 수정되었으며, 큰 값과 0이 아닌 scale에서 `toDateTime64()`도 수정되었습니다. [#22937](https://github.com/ClickHouse/ClickHouse/pull/22937) ([Vasily Nemkov](https://github.com/Enmk)).
* `mannWhitneyUTest` 및 `rankCorr`를 윈도우 함수와 함께 사용할 때 발생하던 크래시를 수정했습니다. 이로써 [#22728](https://github.com/ClickHouse/ClickHouse/issues/22728)이 해결되었습니다. [#22876](https://github.com/ClickHouse/ClickHouse/pull/22876) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* LIVE VIEW (실험적 기능): `TemporaryLiveViewCleaner`에서 TEMPORARY LIVE VIEW를 동시에 DROP/CREATE할 때 발생할 수 있던 멈춤 현상을 수정했습니다. [참조](https://gist.github.com/vzakaznikov/0c03195960fc86b56bfe2bc73a90019e). [#22858](https://github.com/ClickHouse/ClickHouse/pull/22858) ([Vitaly Baranov](https://github.com/vitlibar)).
* 집계에 필터 컬럼이 사용되는 경우 `HAVING` pushdown 문제를 수정했습니다. [#22763](https://github.com/ClickHouse/ClickHouse/pull/22763) ([Anton Popov](https://github.com/CurtizJ)).
* OOM 예외 발생 시 Zookeeper 요청에서 발생할 수 있는 멈춤 현상을 수정했습니다. [#22438](https://github.com/ClickHouse/ClickHouse/issues/22438)을 해결합니다. [#22684](https://github.com/ClickHouse/ClickHouse/pull/22684) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* ReplicatedMergeTree 테이블 엔진에서 여러 레플리카에 대한 뮤테이션 대기 동작을 수정했습니다. 이전에는 다른 레플리카에서 뮤테이션이 실제로 실행되기 전에 mutation/alter 쿼리가 완료될 수 있었습니다. [#22669](https://github.com/ClickHouse/ClickHouse/pull/22669) ([alesapin](https://github.com/alesapin)).
* SELECT 절에 컬럼이 없는 중첩 타입의 Log에서 발생하던 예외를 수정했습니다. [#22654](https://github.com/ClickHouse/ClickHouse/pull/22654) ([Azat Khuzhin](https://github.com/azat)).
* AWS 보조 요청에서 무기한 대기하는 문제를 수정했습니다. [#22594](https://github.com/ClickHouse/ClickHouse/pull/22594) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 클라이언트가 연결을 아주 일찍 닫을 때 발생하던 충돌을 수정했습니다 [#22579](https://github.com/ClickHouse/ClickHouse/issues/22579). [#22591](https://github.com/ClickHouse/ClickHouse/pull/22591) ([nvartolomei](https://github.com/nvartolomei)).
* `Map` 데이터 타입(실험적 기능): 분산 쿼리에서 함수 `map`이 잘못 포맷되던 문제를 수정했습니다. [#22588](https://github.com/ClickHouse/ClickHouse/pull/22588) ([foolchi](https://github.com/foolchi)).
* TSV 포맷 끝에 개행이 없는 빈 문자열을 역직렬화할 때 발생하던 문제를 수정했습니다. 이로써 [#20244](https://github.com/ClickHouse/ClickHouse/issues/20244)가 해결되었습니다. 버전을 업데이트하지 않고 적용할 수 있는 우회 방법으로 `input_format_null_as_default`를 0으로 설정할 수 있습니다. 이전 버전에서는 이 값이 0이었습니다. [#22527](https://github.com/ClickHouse/ClickHouse/pull/22527) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Merge Join 알고리즘에서 `LowCardinality` 타입 컬럼의 잘못된 CAST를 수정했습니다. [#22386](https://github.com/ClickHouse/ClickHouse/issues/22386), [#22388](https://github.com/ClickHouse/ClickHouse/issues/22388)를 해결했습니다. [#22510](https://github.com/ClickHouse/ClickHouse/pull/22510) ([Vladimir](https://github.com/vdimir)).
* `tokenbf_v1` 전문 검색 인덱스에서 버퍼 오버플로우(읽기 시)가 발생할 수 있었습니다. 초과된 바이트는 사용되지 않지만, 드물게 읽기 작업 중 충돌이 발생할 수 있습니다. 이로써 [#19233](https://github.com/ClickHouse/ClickHouse/issues/19233)가 해결되었습니다. [#22421](https://github.com/ClickHouse/ClickHouse/pull/22421) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* HTTP 청크 크기를 제한하지 않도록 수정했습니다. [#21907](https://github.com/ClickHouse/ClickHouse/issues/21907) 문제를 수정했습니다. [#22322](https://github.com/ClickHouse/ClickHouse/pull/22322) ([Ivan](https://github.com/abyss7)).
* `optimize_aggregation_in_order`가 활성화되어 있고 테이블에 파트가 많은 경우 데이터가 충분히 집계되지 않던 버그를 수정했습니다. `optimize_aggregation_in_order`가 활성화된 상태에서 집계 성능도 약간 개선했습니다. [#21889](https://github.com/ClickHouse/ClickHouse/pull/21889) ([Anton Popov](https://github.com/CurtizJ)).
* 테이블 함수 view가 컬럼으로 사용되는지 확인합니다. 이는 #20350을 보완합니다. [#21465](https://github.com/ClickHouse/ClickHouse/pull/21465) ([Amos Bird](https://github.com/amosbird)).
* `Merge` 엔진을 사용하는 테이블에서 `JOIN` 및 집계가 포함된 쿼리의 "알 수 없는 컬럼" 오류를 수정했습니다. [#18368](https://github.com/ClickHouse/ClickHouse/issues/18368) 및 [#22226](https://github.com/ClickHouse/ClickHouse/issues/22226)를 해결했습니다. [#21370](https://github.com/ClickHouse/ClickHouse/pull/21370) ([Vladimir](https://github.com/vdimir)).
* pushdown 최적화에서 발생한 이름 충돌 문제를 수정했습니다. 이로 인해 FULL JOIN 이후 `WHERE` 필터링이 잘못 적용되던 문제가 있었습니다. [#20497](https://github.com/ClickHouse/ClickHouse/issues/20497)를 해결했습니다. [#20622](https://github.com/ClickHouse/ClickHouse/pull/20622) ([Vladimir](https://github.com/vdimir)).
* 중복 제거로 인해 `quorum_parallel=1`을 사용한 quorum 삽입이 실제로는 "quorum"으로 동작하지 않는 매우 드문 버그를 수정했습니다. [#18215](https://github.com/ClickHouse/ClickHouse/pull/18215) ([filimonov](https://github.com/filimonov) - 보고, [alesapin](https://github.com/alesapin) - 수정).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* CI에서 stateless tests를 병렬로 실행합니다. [#22300](https://github.com/ClickHouse/ClickHouse/pull/22300) ([alesapin](https://github.com/alesapin)).
* Debian 패키지를 단순화했습니다. 이로써 [#21698](https://github.com/ClickHouse/ClickHouse/issues/21698) 문제가 해결됩니다. [#22976](https://github.com/ClickHouse/ClickHouse/pull/22976) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Apple M1에서 ClickHouse 빌드를 지원하도록 추가했습니다. [#21639](https://github.com/ClickHouse/ClickHouse/pull/21639) ([changvvb](https://github.com/changvvb)).
* macOS용 ClickHouse Keeper 빌드를 수정했습니다. [#22860](https://github.com/ClickHouse/ClickHouse/pull/22860) ([alesapin](https://github.com/alesapin)).
* AArch64 플랫폼의 일부 테스트를 수정했습니다. [#22596](https://github.com/ClickHouse/ClickHouse/pull/22596) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 성능 향상을 위해 함수 정렬을 추가했습니다. [#21431](https://github.com/ClickHouse/ClickHouse/pull/21431) ([Danila Kutenin](https://github.com/danlark1)).
* amd64와 aarch64(qemu)에서 동일한 결과가 출력되도록 일부 테스트를 조정했습니다. 이전에는 구현별 CPU 동작에 따라 결과가 달라졌습니다. [#22590](https://github.com/ClickHouse/ClickHouse/pull/22590) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 쿼리 profiling은 x86\_64에서만 허용하도록 했습니다. [#15174](https://github.com/ClickHouse/ClickHouse/issues/15174#issuecomment-812954965) 및 [#15638](https://github.com/ClickHouse/ClickHouse/issues/15638#issuecomment-703805337)을 참조하십시오. 이 변경으로 [#15638](https://github.com/ClickHouse/ClickHouse/issues/15638)가 종료됩니다. [#22580](https://github.com/ClickHouse/ClickHouse/pull/22580) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `USE_INTERNAL_XZ_LIBRARY=OFF` CMake 옵션을 사용해 번들되지 않은 xz(lzma)로 빌드할 수 있도록 했습니다. [#22571](https://github.com/ClickHouse/ClickHouse/pull/22571) ([Kfir Itzhak](https://github.com/mastertheknife)).
* `ppc64le`에서 번들된 `openldap`를 활성화했습니다. [#22487](https://github.com/ClickHouse/ClickHouse/pull/22487) ([Kfir Itzhak](https://github.com/mastertheknife)).
* `ppc64le`에서 호환되지 않는 라이브러리(대개 플랫폼별 라이브러리)를 비활성화했습니다. [#22475](https://github.com/ClickHouse/ClickHouse/pull/22475) ([Kfir Itzhak](https://github.com/mastertheknife)).
* CI에 ClickHouse Keeper용 Jepsen 테스트를 추가했습니다. [#22373](https://github.com/ClickHouse/ClickHouse/pull/22373) ([alesapin](https://github.com/alesapin)).
* [heap profiling](https://github.com/jemalloc/jemalloc/wiki/Use-Case%3A-Heap-Profiling)을 지원하도록 `jemalloc`을 빌드합니다. [#22834](https://github.com/ClickHouse/ClickHouse/pull/22834) ([nvartolomei](https://github.com/nvartolomei)).
* 다른 thread에서 unlock이 수행되어 rwlock unlock 시 `*Log` 엔진에서 UB가 발생하는 문제를 방지했습니다. [#22583](https://github.com/ClickHouse/ClickHouse/pull/22583) ([Azat Khuzhin](https://github.com/azat)).
* 동일한 thread에서 TinyLog의 rwlock을 unlock하도록 변경해 UB를 수정했습니다. [#22560](https://github.com/ClickHouse/ClickHouse/pull/22560) ([Azat Khuzhin](https://github.com/azat)).

<div id="clickhouse-release-214">
  ## ClickHouse 릴리스 21.4
</div>

<div id="clickhouse-release-2141-2021-04-12">
  ### ClickHouse 릴리스 21.4.1 2021-04-12
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* `toStartOfIntervalFunction`은 이제 시간 인터벌을 자정 기준으로 정렬합니다(이전 버전에서는 unix epoch 시작 시점 기준으로 정렬되었습니다). 예를 들어 `toStartOfInterval(x, INTERVAL 11 HOUR)`는 하루를 3개의 인터벌로 나눕니다: `00:00:00..10:59:59`, `11:00:00..21:59:59`, `22:00:00..23:59:59`. 이 동작은 실제 사용 요구에 더 적합합니다. 이 변경으로 [#9510](https://github.com/ClickHouse/ClickHouse/issues/9510)이 해결되었습니다. [#22060](https://github.com/ClickHouse/ClickHouse/pull/22060) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* graphite 롤업 구성에서 `Age`와 `Precision`은 retention이 증가함에 따라 함께 증가해야 합니다. 이제 이를 검사하며, 잘못된 구성인 경우 예외가 발생합니다. [#21496](https://github.com/ClickHouse/ClickHouse/pull/21496) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* 사용자 지정 최상위 도메인 목록에 포함된 3단계 이상 도메인에 대해 `cutToFirstSignificantSubdomainCustom()`/`firstSignificantSubdomainCustom()`가 잘못된 결과를 반환하던 문제를 수정했습니다. 이러한 사용자 지정 최상위 도메인과 일치하는 입력 도메인에서는 3단계 도메인이 첫 번째 유의미한 도메인으로 간주되고 있었습니다. 이제 이 문제가 수정되었습니다. 다만 이 함수가 예를 들어 세그먼트 분할 키에서 사용되는 경우, 이 변경으로 인해 호환되지 않는 동작이 발생할 수 있습니다. [#21946](https://github.com/ClickHouse/ClickHouse/pull/21946) ([Azat Khuzhin](https://github.com/azat)).
* `system.dictionaries` 테이블의 `keys` 컬럼이 `key.names` 및 `key.types` 컬럼으로 대체되었습니다. `system.dictionaries` 테이블의 `key.names`, `key.types`, `attribute.names`, `attribute.types` 컬럼은 딕셔너리가 로드되지 않아도 사용할 수 있습니다. [#21884](https://github.com/ClickHouse/ClickHouse/pull/21884) ([Maksim Kita](https://github.com/kitaisreal)).
* 이제 `ALTER TABLE ATTACH PART[ITION]` 명령을 처리하는 레플리카는 다른 레플리카에서 데이터를 가져오기 전에 자신의 `detached/` 폴더를 먼저 검색합니다. 구현 세부 사항으로, 복제 로그에 새로운 `ATTACH_PART` 명령이 도입되었습니다. 파트는 체크섬을 기준으로 검색하고 비교합니다. [#18978](https://github.com/ClickHouse/ClickHouse/pull/18978) ([Mike Kot](https://github.com/myrrc)). **참고**:
  * cluster 업그레이드 중에는 `ATTACH PART[ITION]` 쿼리가 작동하지 않을 수 있습니다.
  * 새 버전에서 `ALTER ... ATTACH` 쿼리를 실행한 후에는 이전 ClickHouse 버전으로 롤백할 수 없습니다. 이전 server가 복제 로그의 `ATTACH_PART` 항목을 처리하지 못하기 때문입니다.
* 이 버전에서는 비어 있는 `<remote_url_allow_hosts></remote_url_allow_hosts>`가 모든 원격 호스트 접근을 차단하지만, 이전 버전에서는 아무 동작도 하지 않았습니다. 기존 동작을 유지하려면 설정 파일에 비어 있는 `remote_url_allow_hosts` 요소가 있다면 이를 제거하십시오. [#20058](https://github.com/ClickHouse/ClickHouse/pull/20058) ([Vladimir Chebotarev](https://github.com/excitoon)).

<div id="new-feature">
  #### 새로운 기능
</div>

* `DateTime64`의 범위를 확장해 1925년부터 2283년까지의 날짜를 지원합니다. 제로 날짜(`1970-01-01`) 전후의 `DateTime` 지원도 개선했습니다. [#9404](https://github.com/ClickHouse/ClickHouse/pull/9404) ([alexey-milovidov](https://github.com/alexey-milovidov), [Vasily Nemkov](https://github.com/Enmk)). 다만 모든 시간 및 날짜 함수가 확장된 날짜 범위에서 동작하는 것은 아닙니다.
* 사전 구성된 사용자와 HTTP 요청에 대한 Kerberos 인증(GSS-SPNEGO) 지원이 추가되었습니다. [#14995](https://github.com/ClickHouse/ClickHouse/pull/14995) ([Denis Glazachev](https://github.com/traceon)).
* 별칭 대신 원래 컬럼 이름을 사용하기 위한 `prefer_column_name_to_alias` 설정을 추가했습니다. 이는 일반적인 데이터베이스의 별칭 규칙과의 호환성을 높이기 위해 필요합니다. [#9715](https://github.com/ClickHouse/ClickHouse/issues/9715) 및 [#9887](https://github.com/ClickHouse/ClickHouse/issues/9887)에 해당합니다. [#22044](https://github.com/ClickHouse/ClickHouse/pull/22044) ([Amos Bird](https://github.com/amosbird)).
* 함수 `dictGetChildren(dictionary, key)`, `dictGetDescendants(dictionary, key, level)`가 추가되었습니다. 함수 `dictGetChildren`은 모든 자식 항목을 인덱스의 배열로 반환합니다. 이 함수는 `dictGetHierarchy`의 역변환입니다. 함수 `dictGetDescendants`는 `dictGetChildren`을 `level`번 재귀적으로 적용한 것과 같이 모든 하위 항목을 반환합니다. `level` 값이 0이면 무한대로 간주됩니다. [#14656](https://github.com/ClickHouse/ClickHouse/issues/14656)을 해결합니다. [#22096](https://github.com/ClickHouse/ClickHouse/pull/22096) ([Maksim Kita](https://github.com/kitaisreal)).
* `executable_pool` 딕셔너리 소스를 추가했습니다. [#14528](https://github.com/ClickHouse/ClickHouse/issues/14528)를 해결했습니다. [#21321](https://github.com/ClickHouse/ClickHouse/pull/21321) ([Maksim Kita](https://github.com/kitaisreal)).
* 테이블 함수 `dictionary`가 추가되었습니다. `Dictionary` 엔진과 동일하게 작동합니다. [#21560](https://github.com/ClickHouse/ClickHouse/issues/21560)을 해결했습니다. [#21910](https://github.com/ClickHouse/ClickHouse/pull/21910) ([Maksim Kita](https://github.com/kitaisreal)).
* `PolygonDictionary` 속성에 `Nullable` 타입을 지원합니다. [#21890](https://github.com/ClickHouse/ClickHouse/pull/21890) ([Maksim Kita](https://github.com/kitaisreal)).
* 함수 `dictGet`, `dictHas`는 DDL로 생성된 딕셔너리에서 데이터베이스 이름이 지정되지 않은 경우 현재 데이터베이스 이름을 사용합니다. [#21632](https://github.com/ClickHouse/ClickHouse/issues/21632)를 해결합니다. [#21859](https://github.com/ClickHouse/ClickHouse/pull/21859) ([Maksim Kita](https://github.com/kitaisreal)).
* 함수 `dictGetOrNull`이 추가되었습니다. 이 함수는 `dictGet`처럼 동작하지만, 딕셔너리에서 키를 찾지 못하면 `Null`을 반환합니다. [#22375](https://github.com/ClickHouse/ClickHouse/issues/22375)를 해결합니다. [#22413](https://github.com/ClickHouse/ClickHouse/pull/22413) ([Maksim Kita](https://github.com/kitaisreal)).
* `ComplexKeyCache`, `SSDCache`, `SSDComplexKeyCache` 사전에 비동기 업데이트가 추가되었습니다. `Cache`, `ComplexKeyCache`, `SSDCache`, `SSDComplexKeyCache` 사전에서 `Nullable` 널 허용 유형 지원이 추가되었습니다. `dictGet`, `dictGetOrDefault` 함수에서 여러 속성을 가져오는 기능이 추가되었습니다. [#21517](https://github.com/ClickHouse/ClickHouse/issues/21517)을 수정했습니다. [#20595](https://github.com/ClickHouse/ClickHouse/pull/20595) ([Maksim Kita](https://github.com/kitaisreal)).
* `RangeHashedDictionary`에서 `dictHas` 함수를 지원합니다. [#6680](https://github.com/ClickHouse/ClickHouse/issues/6680)을 수정합니다. [#19816](https://github.com/ClickHouse/ClickHouse/pull/19816) ([Maksim Kita](https://github.com/kitaisreal)).
* `DateTime` 또는 `DateTime64` 데이터 타입의 시간대 이름을 반환하는 `timezoneOf` 함수를 추가했습니다. 이 변경은 [#9959](https://github.com/ClickHouse/ClickHouse/issues/9959)를 해결하지는 않습니다. 함수 이름의 불일치를 수정하여 `timezone` 및 `timeZone`, `toTimezone` 및 `toTimeZone`, `timezoneOf` 및 `timeZoneOf` 별칭을 추가했습니다. [#22001](https://github.com/ClickHouse/ClickHouse/pull/22001) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `CREATE/ALTER USER` 명령에 새로운 선택적 절 `GRANTEES`가 추가되었습니다. 이 절은 이 사용자가 grant option과 함께 필요한 모든 접근 권한도 부여받은 경우, 이 사용자로부터 권한을 부여받을 수 있는 사용자 또는 역할을 지정합니다. 기본값은 `GRANTEES ANY`이며, 이는 grant option이 있는 사용자가 누구에게나 권한을 부여할 수 있음을 의미합니다. 구문: `CREATE USER ... GRANTEES {user | role | ANY | NONE} [,...] [EXCEPT {user | role} [,...]]`. [#21641](https://github.com/ClickHouse/ClickHouse/pull/21641) ([Vitaly Baranov](https://github.com/vitlibar)).
* `system.clusters`에 새 컬럼 `slowdowns_count`를 추가했습니다. hedged requests를 사용할 때 이 레플리카의 응답이 느려 다른 레플리카로 전환한 횟수를 보여줍니다. 또한 `system.clusters`에서 `errors_count`의 실제 값도 표시합니다. [#21480](https://github.com/ClickHouse/ClickHouse/pull/21480) ([Kruglov Pavel](https://github.com/Avogar)).
* `MergeTree*` 엔진에 `_partition_id` 가상 컬럼을 추가했습니다. `_partition_id`를 사용해 파티션 프루닝이 가능해졌습니다. 파티션 ID 문자열을 계산하는 `partitionID()` 함수를 추가했습니다. [#21401](https://github.com/ClickHouse/ClickHouse/pull/21401) ([Amos Bird](https://github.com/amosbird)).
* 주어진 CIDR 네트워크 프리픽스에 IPv4 또는 IPv6 주소가 속하는지 확인하는 `isIPAddressInRange` 함수를 추가했습니다. [#21329](https://github.com/ClickHouse/ClickHouse/pull/21329) ([PHO](https://github.com/depressed-pho)).
* 새로운 SQL 명령 `ALTER TABLE 'table_name' UNFREEZE [PARTITION 'part_expr'] WITH NAME 'backup_name'`이 추가되었습니다. 이 명령은 모든 디스크에서 '동결된' 파티션을 올바르게 삭제하는 데 필요합니다. [#21142](https://github.com/ClickHouse/ClickHouse/pull/21142) ([Pavel Kovalenko](https://github.com/Jokser)).
* JOIN에서 키 유형의 암시적 변환을 지원합니다. [#19885](https://github.com/ClickHouse/ClickHouse/pull/19885) ([Vladimir](https://github.com/vdimir)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* 부동소수점 타입에 대해 `RANGE OFFSET` 프레임(윈도우 함수)을 지원합니다. `lag`/`lead`와 유사하지만 윈도우 프레임을 따르는 `lagInFrame`/`leadInFrame` 윈도우 함수를 구현했습니다. 프레임이 `between unbounded preceding and unbounded following`인 경우에는 두 함수가 동일합니다. 이로써 [#5485](https://github.com/ClickHouse/ClickHouse/issues/5485)가 해결되었습니다. [#21895](https://github.com/ClickHouse/ClickHouse/pull/21895) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* S3 storage 기반 `ReplicatedMergeTree`의 zero-copy 복제를 지원합니다. [#16240](https://github.com/ClickHouse/ClickHouse/pull/16240) ([ianton-ru](https://github.com/ianton-ru)).
* 기존 S3 디스크를 백업 및 복원 기능을 지원하는 스키마로 마이그레이션할 수 있는 기능이 추가되었습니다. [#22070](https://github.com/ClickHouse/ClickHouse/pull/22070) ([Pavel Kovalenko](https://github.com/Jokser)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* `clickhouse-local` 및 기타 전반에서 병렬 포맷팅을 지원합니다. [#21630](https://github.com/ClickHouse/ClickHouse/pull/21630) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `CSVWithNames` 및 `TSVWithNames` 포맷에 대한 병렬 파싱을 지원합니다. 이로써 [#21085](https://github.com/ClickHouse/ClickHouse/issues/21085)가 해결되었습니다. [#21149](https://github.com/ClickHouse/ClickHouse/pull/21149) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 64 MiB 이상의 파일 범위에 대해 mmap IO 읽기를 활성화합니다(설정 `min_bytes_to_use_mmap_io`). 이에 따라 성능이 어느 정도 향상될 수 있습니다. [#22326](https://github.com/ClickHouse/ClickHouse/pull/22326) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `min_bytes_to_use_mmap_io` 설정으로 읽는 파일에 cache를 추가합니다. 이 설정값이 작을 때 빈번한 mmap/munmap 호출과 그에 따른 페이지 폴트를 줄여 성능이 크게(2배 이상) 향상됩니다. mmap IO는 운영 환경에서 신뢰성이 떨어질 수 있는 큰 단점도 있습니다(예: 디스크 결함 시 hang 또는 SIGBUS 발생, 제어하기 더 어려운 메모리 사용량). 그럼에도 벤치마크에서는 유용합니다. [#22206](https://github.com/ClickHouse/ClickHouse/pull/22206) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 코덱 `NONE`을 사용할 때 불필요한 데이터 복사를 피합니다. 코덱 `NONE`은 대체로 거의 쓸모가 없으며, Compression(`LZ4`가 기본값)을 항상 사용하는 것을 권장합니다. 일반적인 인식과 달리 압축을 비활성화해도 성능이 향상되지 않을 수 있으며, 오히려 반대 효과가 날 수도 있습니다. `NONE` 코덱은 일부 경우에 유용합니다. - 데이터가 압축되지 않는 경우 - 합성 벤치마크의 경우 [#22145](https://github.com/ClickHouse/ClickHouse/pull/22145) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `max_rows_to_group_by`가 작고 `group_by_overflow_mode='any'`인 경우 `GROUP BY`를 더 빠르게 수행합니다. [#21856](https://github.com/ClickHouse/ClickHouse/pull/21856) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `SELECT ... FINAL ... WHERE` 형태의 쿼리 성능을 최적화합니다. 이제 `FINAL`이 포함된 쿼리에서는 sorting key에 포함된 컬럼을 `PREWHERE`로 이동할 수 있습니다. [#21830](https://github.com/ClickHouse/ClickHouse/pull/21830) ([foolchi](https://github.com/foolchi)).
* `memcpy`를 다른 구현으로 대체해 성능을 개선했습니다. 이로써 [#18583](https://github.com/ClickHouse/ClickHouse/issues/18583)가 해결되었습니다. [#21520](https://github.com/ClickHouse/ClickHouse/pull/21520) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* sorting key 순서에 따른 집계 성능을 개선합니다(설정 `optimize_aggregation_in_order`가 활성화된 경우). [#19401](https://github.com/ClickHouse/ClickHouse/pull/19401) ([Anton Popov](https://github.com/CurtizJ)).

<div id="improvement-3">
  #### 개선
</div>

* PostgreSQL 테이블/데이터베이스 엔진과 딕셔너리 소스에 연결 풀을 추가했습니다. 이로써 [#21444](https://github.com/ClickHouse/ClickHouse/issues/21444)가 해결됩니다. [#21839](https://github.com/ClickHouse/ClickHouse/pull/21839) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Postgres storage/table-function에서 기본 스키마가 아닌 테이블 스키마를 지원합니다. [#21701](https://github.com/ClickHouse/ClickHouse/issues/21701)을 해결했습니다. [#21711](https://github.com/ClickHouse/ClickHouse/pull/21711) ([Kseniia Sumarokova](https://github.com/kssenii)).
* postgres 딕셔너리 소스에서 레플리카 우선순위를 지원합니다. [#21710](https://github.com/ClickHouse/ClickHouse/pull/21710) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 새로운 MergeTree 설정 `min_bytes_to_rebalance_partition_over_jbod`를 도입하여 JBOD 볼륨의 서로 다른 디스크에 새 파트를 균형 있게 할당할 수 있도록 했습니다. [#16481](https://github.com/ClickHouse/ClickHouse/pull/16481) ([Amos Bird](https://github.com/amosbird)).
* `system.query_log`의 해당 쿼리에 대해 `query_kind` 컬럼에 `Grant`, `Revoke`, `System` 값을 추가했습니다. [#21102](https://github.com/ClickHouse/ClickHouse/pull/21102) ([Vasily Nemkov](https://github.com/Enmk)).
* 복제에 사용되는 HTTP 연결에 대한 시간 제한을 다른 HTTP 시간 제한과 별도로 설정할 수 있도록 했습니다. [#20088](https://github.com/ClickHouse/ClickHouse/pull/20088) ([nvartolomei](https://github.com/nvartolomei)).
* server가 블록을 쓰는 도중 예외가 발생할 경우, client에 더 나은 예외 메시지가 표시되도록 개선했습니다. 이전 버전에서는 client가 `Data compressed with different methods`와 같이 오해를 불러일으킬 수 있는 메시지를 받을 수 있었습니다. [#22427](https://github.com/ClickHouse/ClickHouse/pull/22427) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* part fetch 실패 후 발생할 수 있던 `Directory tmp_fetch_XXX already exists` 오류를 수정했습니다. 이미 존재하는 경우 임시 fetch 디렉터리를 삭제하도록 했습니다. [#14197](https://github.com/ClickHouse/ClickHouse/issues/14197)을 해결했습니다. [#22411](https://github.com/ClickHouse/ClickHouse/pull/22411) ([nvartolomei](https://github.com/nvartolomei)).
* `UInt256` 인수를 사용하는 `range` 함수의 MSan 리포트를 수정했습니다(큰 정수 지원은 실험적 기능입니다). 이로써 [#22157](https://github.com/ClickHouse/ClickHouse/issues/22157)가 해결되었습니다. [#22387](https://github.com/ClickHouse/ClickHouse/pull/22387) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `system.processes` 테이블에 `current_database` 컬럼을 추가했습니다. 이 컬럼에는 해당 쿼리의 현재 데이터베이스가 저장됩니다. [#22365](https://github.com/ClickHouse/ClickHouse/pull/22365) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* `clickhouse-client`에 대소문자를 구분하지 않는 이력 검색/이동과 하위 단어 단위 이동 기능을 추가했습니다. [#22105](https://github.com/ClickHouse/ClickHouse/pull/22105) ([Amos Bird](https://github.com/amosbird)).
* 예를 들어 `(NULL, NULL)`처럼 NULL로만 이루어진 튜플이 `IN` 연산자의 왼쪽에 있고, `SELECT (NULL, NULL) IN ((0, 0), (3, 1))`처럼 오른쪽에 NULL이 아닌 값으로 이루어진 튜플이 있는 경우, 호환되지 않는 타입이라는 예외를 발생시키는 대신 0을 반환합니다. 이 표현식은 `SELECT (NULL, NULL) = (8, 0) OR (NULL, NULL) = (3, 2) OR (NULL, NULL) = (0, 0) OR (NULL, NULL) = (3, 1)`과 같은 구문이 최적화되는 과정에서 나타날 수도 있습니다. 이 변경으로 [#22017](https://github.com/ClickHouse/ClickHouse/issues/22017)이 해결되었습니다. [#22063](https://github.com/ClickHouse/ClickHouse/pull/22063) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 사용 중인 simdjson 버전을 0.9.1로 업데이트했습니다. 이로써 [#21984](https://github.com/ClickHouse/ClickHouse/issues/21984)가 수정됩니다. [#22057](https://github.com/ClickHouse/ClickHouse/pull/22057) ([Vitaly Baranov](https://github.com/vitlibar)).
* `CONNECTION_ID()` 및 `VERSION()` 함수에 대소문자를 구분하지 않고 사용할 수 있는 별칭이 추가되었습니다. 이 변경으로 [#22028](https://github.com/ClickHouse/ClickHouse/issues/22028) 문제가 수정되었습니다. [#22042](https://github.com/ClickHouse/ClickHouse/pull/22042) ([Eugene Klimov](https://github.com/Slach)).
* 각 이벤트가 한 번만 계산되도록 `windowFunnel` 함수에 `strict_increase` 옵션을 추가했습니다([#21835](https://github.com/ClickHouse/ClickHouse/issues/21835) 해결). [#22025](https://github.com/ClickHouse/ClickHouse/pull/22025) ([Vladimir](https://github.com/vdimir)).
* `MergeTree` 테이블의 파티션 키에 `Date` 또는 `DateTime` 컬럼은 없고 `DateTime64` 컬럼이 정확히 하나만 포함된 경우, 해당 값을 `system.parts` 및 `system.parts_columns` 테이블의 `min_time` 및 `max_time` 컬럼에 표시합니다. `system.parts_columns` 테이블에 `min_time` 및 `max_time` 컬럼을 추가했습니다(`system.parts` 테이블과의 불일치가 있었습니다). 이로써 [#18244](https://github.com/ClickHouse/ClickHouse/issues/18244)가 해결되었습니다. [#22011](https://github.com/ClickHouse/ClickHouse/pull/22011) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-copier`에서 보조 테이블에서 대상으로 파티션을 이동할 때 `replication_alter_partitions_sync=1` 설정을 지원합니다. 기본 타임아웃 값을 줄였습니다. [#21911](https://github.com/ClickHouse/ClickHouse/issues/21911)을 수정했습니다. [#21912](https://github.com/ClickHouse/ClickHouse/pull/21912) ([turbo jason](https://github.com/songenjie)).
* 시스템 테이블에서 `EmbeddedRocksDB` 테이블의 데이터 디렉터리 경로를 표시합니다. [#21903](https://github.com/ClickHouse/ClickHouse/pull/21903) ([tavplubix](https://github.com/tavplubix)).
* 프로파일 이벤트 `HedgedRequestsChangeReplica`를 추가하고, 데이터 읽기 timeout 단위를 초에서 ms로 변경했습니다. [#21886](https://github.com/ClickHouse/ClickHouse/pull/21886) ([Kruglov Pavel](https://github.com/Avogar)).
* DiskS3 (개발 중인 실험적 기능). 대상 디렉터리가 비어 있지 않고 캐시 디스크를 사용하는 경우 디렉터리를 이동할 수 없던 버그를 수정했습니다. [#21837](https://github.com/ClickHouse/ClickHouse/pull/21837) ([Pavel Kovalenko](https://github.com/Jokser)).
* Web UI에서 `Array` 및 `Map` 데이터 타입의 표시 형식이 개선되었습니다. [#21798](https://github.com/ClickHouse/ClickHouse/pull/21798) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 구성이 업데이트된 클러스터만 업데이트합니다. [#21685](https://github.com/ClickHouse/ClickHouse/pull/21685) ([Kruglov Pavel](https://github.com/Avogar)).
* 분산 DDL 쿼리에서 쿼리 및 세션 설정이 전파되도록 했습니다. 이를 활성화하려면 `distributed_ddl_entry_format_version`을 2로 설정하십시오. `distributed_ddl_output_mode` 설정이 추가되었습니다. 지원되는 모드: `none`, `throw`(기본값), `null_status_on_timeout`, `never_throw`입니다. `Replicated` 데이터베이스 엔진에 여러 수정 및 개선 사항이 적용되었습니다. [#21535](https://github.com/ClickHouse/ClickHouse/pull/21535) ([tavplubix](https://github.com/tavplubix)).
* `PODArray`가 요소 크기를 16의 약수나 배수가 아닌 값으로 인스턴스화된 경우, 버퍼 오버플로우가 발생할 수 있었습니다. 현재 릴리스에는 이러한 버그가 없습니다. [#21533](https://github.com/ClickHouse/ClickHouse/pull/21533) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `system.errors`에 `last_error_time`/`last_error_message`/`last_error_stacktrace`/`remote` 컬럼이 추가되었습니다. [#21529](https://github.com/ClickHouse/ClickHouse/pull/21529) ([Azat Khuzhin](https://github.com/azat)).
* `simpleJSONExtract/simpleJSONHas` 별칭을 `visitParam/visitParamExtract{UInt, Int, Bool, Float, Raw, String}`에 추가했습니다. #21383을 해결했습니다. [#21519](https://github.com/ClickHouse/ClickHouse/pull/21519) ([fastio](https://github.com/fastio)).
* `optimize_skip_unused_shards`에서 세그먼트 분할 키 값의 개수를 제한하는 설정 `optimize_skip_unused_shards_limit`을 추가했습니다. [#21512](https://github.com/ClickHouse/ClickHouse/pull/21512) ([Azat Khuzhin](https://github.com/azat)).
* 마지막 쿼리 뒤에 여분의 공백이나 주석이 있어도 `clickhouse-format`이 예외를 발생시키지 않도록 개선하고, 데이터가 포함된 `ASTInsertQuery`를 포맷할 때는 읽기 쉬운 메시지와 함께 예외를 조기에 발생시키도록 개선했습니다. [#21311](https://github.com/ClickHouse/ClickHouse/pull/21311) ([flynn](https://github.com/ucasFL)).
* 데이터 타입 `Map`에서 정수형 키 지원을 개선했습니다. [#21157](https://github.com/ClickHouse/ClickHouse/pull/21157) ([Anton Popov](https://github.com/CurtizJ)).
* MaterializeMySQL: connection이 끊어지면 MySQL에 다시 연결을 시도합니다. [#20961](https://github.com/ClickHouse/ClickHouse/pull/20961) ([Håvard Kvålen](https://github.com/havardk)).
* `CROSS JOIN`을 `INNER JOIN`으로 재작성할 수 있는 경우를 더 많이 지원합니다. [#20392](https://github.com/ClickHouse/ClickHouse/pull/20392) ([Vladimir](https://github.com/vdimir)).
* `optimize_on_insert` 설정이 활성화되어 있을 때 INSERT 시 빈 파트가 생성되지 않도록 했습니다. [#20304](https://github.com/ClickHouse/ClickHouse/issues/20304)을 수정했습니다. [#20387](https://github.com/ClickHouse/ClickHouse/pull/20387) ([Kruglov Pavel](https://github.com/Avogar)).
* `MaterializeMySQL`: `_version` 컬럼에 minmax 스키핑 인덱스를 추가했습니다. [#20382](https://github.com/ClickHouse/ClickHouse/pull/20382) ([Stig Bakken](https://github.com/stigsb)).
* `clickhouse-format`에 `--backslash` 옵션이 추가되어, 포맷된 쿼리의 각 줄 끝에 백슬래시를 붙일 수 있습니다. [#21494](https://github.com/ClickHouse/ClickHouse/pull/21494) ([flynn](https://github.com/ucasFL)).
* 이제 이미 처리된 part에 대해 mutation을 수행하더라도 ClickHouse는 `LOGICAL_ERROR` 예외를 발생시키지 않습니다. [#22013](https://github.com/ClickHouse/ClickHouse/issues/22013)을 수정했습니다. [#22291](https://github.com/ClickHouse/ClickHouse/pull/22291) ([alesapin](https://github.com/alesapin)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* `HedgedConnections`에서 패킷 수신기를 취소하기 전에 epoll에서 socket을 제거해 발생할 수 있는 경쟁 상태를 방지합니다. [#22161](https://github.com/ClickHouse/ClickHouse/issues/22161)을 수정했습니다. [#22443](https://github.com/ClickHouse/ClickHouse/pull/22443) ([Kruglov Pavel](https://github.com/Avogar)).
* 병렬 파싱 루틴에 (누락되어 있던) 메모리 사용량 집계를 추가했습니다. 이전 버전에서는 결과 세트에 매우 큰 데이터 블록이 포함된 경우 OOM이 발생할 수 있었습니다. 이 변경으로 [#22008](https://github.com/ClickHouse/ClickHouse/issues/22008)를 해결했습니다. [#22425](https://github.com/ClickHouse/ClickHouse/pull/22425) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `SELECT`에 상수 `WHERE` 조건이 있고 원본 테이블에 이름이 숫자인 컬럼이 있는 경우 발생할 수 있는 예외를 수정했습니다. [#22270](https://github.com/ClickHouse/ClickHouse/pull/22270) ([LiuNeng](https://github.com/liuneng1994)).
* `use_hedged_requests=0` 및 `async_socket_for_remote=1` 사용 시 쿼리 취소가 제대로 동작하지 않던 문제를 수정했습니다. [#22183](https://github.com/ClickHouse/ClickHouse/pull/22183) ([Azat Khuzhin](https://github.com/azat)).
* `InterserverIOHTTPHandler`의 처리되지 않은 예외를 수정했습니다. [#22146](https://github.com/ClickHouse/ClickHouse/pull/22146) ([Azat Khuzhin](https://github.com/azat)).
* 설정에 `http_port`가 없는 경우 Docker 엔트리포인트를 수정했습니다. [#22132](https://github.com/ClickHouse/ClickHouse/pull/22132) ([Ewout](https://github.com/devwout)).
* `JOIN`, `TOTALS`, `arrayJoin` 사용 시 발생하던 오류 `Invalid number of rows in Chunk`를 수정했습니다. [#19303](https://github.com/ClickHouse/ClickHouse/issues/19303)을 해결했습니다. [#22129](https://github.com/ClickHouse/ClickHouse/pull/22129) ([Vladimir](https://github.com/vdimir)).
* Kafka에서 메시지를 폴링하는 데 사용되던 백그라운드 스레드 풀 이름을 수정했습니다. 문제가 있는 스레드 풀을 사용하는 Kafka 엔진은 메시지 큐의 메시지를 소비하지 못합니다. [#22122](https://github.com/ClickHouse/ClickHouse/pull/22122) ([fastio](https://github.com/fastio)).
* `ReplicatedMergeTree` 테이블 엔진의 `OPTIMIZE` 및 `ALTER` 쿼리 대기 문제를 수정했습니다. 이제 테이블이 분리되었거나 재시작된 경우에도 쿼리가 멈추지 않습니다. [#22118](https://github.com/ClickHouse/ClickHouse/pull/22118) ([alesapin](https://github.com/alesapin)).
* 문제가 있는 Linux 커널에서는 `async_socket_for_remote`/`use_hedged_requests`를 비활성화합니다. [#22109](https://github.com/ClickHouse/ClickHouse/pull/22109) ([Azat Khuzhin](https://github.com/azat)).
* Docker 엔트리포인트: `LOG_PATH`가 비어 있을 때 `.`에 대해 chown을 수행하지 않도록 수정했습니다. [#22100](https://github.com/ClickHouse/ClickHouse/issues/22100). [#22102](https://github.com/ClickHouse/ClickHouse/pull/22102) ([filimonov](https://github.com/filimonov)).
* 함수 `decrypt`에 `AEAD` 모드로 암호화된 데이터의 최소 크기를 확인하는 검사가 빠져 있었습니다. 이로써 [#21897](https://github.com/ClickHouse/ClickHouse/issues/21897)가 해결되었습니다. [#22064](https://github.com/ClickHouse/ClickHouse/pull/22064) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 드물게 `CollapsingMergeTree`의 머지 과정에서 `index_granularity + 1`개의 행을 포함하는 그래뉼이 생성될 수 있습니다. 이로 인해 [#18928](https://github.com/ClickHouse/ClickHouse/issues/18928)에서 추가된 내부 검사(21.2 및 21.3에 영향)가 `Incomplete granules are not allowed while blocks are granules size` 오류와 함께 실패할 수 있습니다. 이 오류로 인해 파트가 머지되지 못했습니다. [#21976](https://github.com/ClickHouse/ClickHouse/pull/21976) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 해시 유형 외부 딕셔너리를 로드할 때 메모리 사용량이 크게 증가할 수 있는 [#15454](https://github.com/ClickHouse/ClickHouse/issues/15454)를 되돌렸습니다. 이로써 [#21935](https://github.com/ClickHouse/ClickHouse/issues/21935)가 해결됩니다. [#21948](https://github.com/ClickHouse/ClickHouse/pull/21948) ([Maksim Kita](https://github.com/kitaisreal)).
* 헤지드 연결이 겹치는 문제를 방지합니다 (`Unknown packet 9 from server` 오류). [#21941](https://github.com/ClickHouse/ClickHouse/pull/21941) ([Azat Khuzhin](https://github.com/azat)).
* 일부 경우 "multipart/form-data" 콘텐츠 유형의 HTTP POST 요청을 읽지 못하던 문제를 수정했습니다. [#21936](https://github.com/ClickHouse/ClickHouse/pull/21936) ([Ivan](https://github.com/abyss7)).
* 쿼리에 윈도우 함수가 포함되어 있고 기본 키(primary key) 순서로 읽는 최적화가 적용된 경우 잘못된 `ORDER BY` 결과가 나오던 문제를 수정했습니다. [#21828](https://github.com/ClickHouse/ClickHouse/issues/21828)을 수정했습니다. [#21915](https://github.com/ClickHouse/ClickHouse/pull/21915) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* 첫 catboost 모델 실행 시 발생하던 데드락을 수정했습니다. [#13832](https://github.com/ClickHouse/ClickHouse/issues/13832)을 닫습니다. [#21844](https://github.com/ClickHouse/ClickHouse/pull/21844) ([Kruglov Pavel](https://github.com/Avogar)).
* `WHERE` 또는 `HAVING` 조건이 `GROUP BY`보다 먼저 푸시될 경우 발생할 수 있던 잘못된 쿼리 결과(및 크래시 가능성)를 수정했습니다. [#21773](https://github.com/ClickHouse/ClickHouse/issues/21773)를 수정합니다. [#21841](https://github.com/ClickHouse/ClickHouse/pull/21841) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `WriteBufferFromS3`의 오류 처리와 로깅이 개선되었습니다. [#21836](https://github.com/ClickHouse/ClickHouse/pull/21836) ([Pavel Kovalenko](https://github.com/Jokser)).
* `Distinct` combinator를 사용하는 집계 함수에서 2단계 집계 중 발생할 수 있는 비정상 종료를 수정했습니다. 이는 [#18365](https://github.com/ClickHouse/ClickHouse/pull/18365)의 후속 수정입니다. 운영 환경에서만 재현됩니다. [#21818](https://github.com/ClickHouse/ClickHouse/pull/21818) ([Amos Bird](https://github.com/amosbird)).
* 스칼라 서브쿼리 인덱스 분석을 수정했습니다. 이 변경으로 [#18896](https://github.com/ClickHouse/ClickHouse/pull/18896)에서 발생한 [#21717](https://github.com/ClickHouse/ClickHouse/issues/21717) 문제가 해결되었습니다. [#21766](https://github.com/ClickHouse/ClickHouse/pull/21766) ([Amos Bird](https://github.com/amosbird)).
* `ALTER MODIFY COLUMN` 쿼리에서 `Decimal` 컬럼의 크기(32비트 또는 64비트)가 바뀌지 않으면 컬럼 유형이 변경되지 않는 `ReplicatedMerge` 테이블 엔진 버그를 수정했습니다. [#21728](https://github.com/ClickHouse/ClickHouse/pull/21728) ([alesapin](https://github.com/alesapin)).
* `ReplicatedMergeTree`에서 `OPTIMIZE`와 `DROP`이 동시에 실행될 때 발생할 수 있는 무한 대기 문제를 수정했습니다. [#21716](https://github.com/ClickHouse/ClickHouse/pull/21716) ([Azat Khuzhin](https://github.com/azat)).
* 상수 정수 인수에 대해 `Map` 유형의 `arrayElement` 함수 문제를 수정했습니다. [#21699](https://github.com/ClickHouse/ClickHouse/pull/21699) ([Anton Popov](https://github.com/CurtizJ)).
* `access_to_key_from_attributes` 사용 시 `ip_trie`에 존재하지 않는 속성 때문에 발생하던 SIGSEGV를 수정했습니다. [#21692](https://github.com/ClickHouse/ClickHouse/pull/21692) ([Azat Khuzhin](https://github.com/azat)).
* 서버는 이제 `DDLWorker` 및 Dictionaries 초기화가 완료된 후에만 연결을 수락합니다. [#21676](https://github.com/ClickHouse/ClickHouse/pull/21676) ([Azat Khuzhin](https://github.com/azat)).
* `Join` 유형의 테이블 키에 대한 형 변환을 추가했습니다(이전에는 SIGSEGV를 유발했습니다). [#21646](https://github.com/ClickHouse/ClickHouse/pull/21646) ([Azat Khuzhin](https://github.com/azat)).
* `async_socket_for_remote=1` 사용 시 분산 요청 취소 문제가 수정되었습니다(예: limit이 포함된 여러 세그먼트에 대한 단순 select, 즉 `select * from remote('127.{2,3}', system.numbers) limit 100`). [#21643](https://github.com/ClickHouse/ClickHouse/pull/21643) ([Azat Khuzhin](https://github.com/azat)).
* 수평 머지에서 `fsync_part_directory`를 수정했습니다. [#21642](https://github.com/ClickHouse/ClickHouse/pull/21642) ([Azat Khuzhin](https://github.com/azat)).
* 외부 데이터베이스 엔진(MySQL, PostgreSQL)에 대한 쿼리의 `WHERE` 절에서 조인된 테이블의 알 수 없는 컬럼을 제거합니다. close [#14614](https://github.com/ClickHouse/ClickHouse/issues/14614), close [#19288](https://github.com/ClickHouse/ClickHouse/issues/19288) (dup), close [#19645](https://github.com/ClickHouse/ClickHouse/issues/19645) (dup). [#21640](https://github.com/ClickHouse/ClickHouse/pull/21640) ([Vladimir](https://github.com/vdimir)).
* s3에 데이터를 쓰는 중 오류가 발생하면 `std::terminate`가 호출되던 문제를 수정했습니다. [#21624](https://github.com/ClickHouse/ClickHouse/pull/21624) ([Vladimir](https://github.com/vdimir)).
* `optimize_skip_unused_shards`가 활성화된 상태에서 세그먼트를 전혀 사용하지 않을 때 발생할 수 있는 `Cannot find column` 오류를 수정했습니다. [#21579](https://github.com/ClickHouse/ClickHouse/pull/21579) ([Azat Khuzhin](https://github.com/azat)).
* 쿼리에 상수 `WHERE` 조건이 있고 `optimize_skip_unused_shards` 설정이 활성화되어 있으면, 모든 세그먼트가 건너뛰어져 쿼리가 잘못된 빈 결과를 반환할 수 있습니다. [#21550](https://github.com/ClickHouse/ClickHouse/pull/21550) ([Amos Bird](https://github.com/amosbird)).
* 테이블 함수 `clusterAllReplicas`가 잘못된 `_shard_num`을 반환하던 문제를 수정했습니다. [#21481](https://github.com/ClickHouse/ClickHouse/issues/21481)을 해결했습니다. [#21498](https://github.com/ClickHouse/ClickHouse/pull/21498) ([flynn](https://github.com/ucasFL)).
* 구성 업데이트 후 S3 테이블에 이전 자격 증명이 계속 남아 있던 문제를 수정했습니다. [#21457](https://github.com/ClickHouse/ClickHouse/pull/21457) ([Grigory Pervakov](https://github.com/GrigoryPervakov)).
* Poco의 `SecureSocket` 내부의 SSL 객체에서 발생하던 경쟁 상태를 수정했습니다. [#21456](https://github.com/ClickHouse/ClickHouse/pull/21456) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `Kafka`용 `Avro` 포맷 파싱을 수정했습니다. [#21437](https://github.com/ClickHouse/ClickHouse/issues/21437)을 해결했습니다. [#21438](https://github.com/ClickHouse/ClickHouse/pull/21438) ([Ilya Golshtein](https://github.com/ilejn)).
* 보안 소켓의 수신 및 송신 timeout, 그리고 논블로킹 읽기를 수정했습니다. [#21429](https://github.com/ClickHouse/ClickHouse/pull/21429) ([Kruglov Pavel](https://github.com/Avogar)).
* `force_drop_table` 플래그가 `MATERIALIZED VIEW`에서 작동하지 않던 문제가 수정되었습니다. [#18943](https://github.com/ClickHouse/ClickHouse/issues/18943)를 해결했습니다. [#20626](https://github.com/ClickHouse/ClickHouse/pull/20626) ([tavplubix](https://github.com/tavplubix)).
* `PredicateRewriteVisitor`의 이름 충돌을 수정했습니다. 이 문제로 인해 full join 이후 `WHERE` 필터링이 잘못 적용되었습니다. [#20497](https://github.com/ClickHouse/ClickHouse/issues/20497)를 해결했습니다. [#20622](https://github.com/ClickHouse/ClickHouse/pull/20622) ([Vladimir](https://github.com/vdimir)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* ClickHouse Keeper용 [Jepsen](https://github.com/jepsen-io/jepsen) 테스트를 추가했습니다. [#21677](https://github.com/ClickHouse/ClickHouse/pull/21677) ([alesapin](https://github.com/alesapin)).
* CI에서 stateless tests를 병렬 실행합니다. [#22181](https://github.com/ClickHouse/ClickHouse/issues/22181)이 선행되어야 합니다. [#22300](https://github.com/ClickHouse/ClickHouse/pull/22300) ([alesapin](https://github.com/alesapin)).
* [SQLancer](https://github.com/sqlancer/sqlancer) CI 실행의 상태 확인을 활성화합니다. [#22015](https://github.com/ClickHouse/ClickHouse/pull/22015) ([Ilya Yatsishin](https://github.com/qoega)).
* PowerPC 빌드를 위한 여러 사전 작업: `ppc64le`에서 번들 openldap을 활성화했습니다. [#22487](https://github.com/ClickHouse/ClickHouse/pull/22487) ([Kfir Itzhak](https://github.com/mastertheknife)). `ppc64le`에서 Clang으로 컴파일할 수 있도록 했습니다. [#22476](https://github.com/ClickHouse/ClickHouse/pull/22476) ([Kfir Itzhak](https://github.com/mastertheknife)). `ppc64le`에서 boost 컴파일 문제를 수정했습니다. [#22474](https://github.com/ClickHouse/ClickHouse/pull/22474) ([Kfir Itzhak](https://github.com/mastertheknife)). `ppc64le`에서 내부 CMake 변수 `CMAKE_ASM_COMPILE_OBJECT`가 설정되지 않아 발생하던 CMake 오류를 수정했습니다. [#22469](https://github.com/ClickHouse/ClickHouse/pull/22469) ([Kfir Itzhak](https://github.com/mastertheknife)). Fedora/RHEL/CentOS에서 `ppc64le`의 `libclang_rt.builtins`를 찾지 못하던 문제를 수정했습니다. [#22458](https://github.com/ClickHouse/ClickHouse/pull/22458) ([Kfir Itzhak](https://github.com/mastertheknife)). `ppc64le`에서 `jemalloc`으로 빌드할 수 있도록 했습니다. [#22447](https://github.com/ClickHouse/ClickHouse/pull/22447) ([Kfir Itzhak](https://github.com/mastertheknife)). `ppc64le`에서 ClickHouse 설정 임베딩과 cctz 시간대 임베딩 문제를 수정했습니다. [#22445](https://github.com/ClickHouse/ClickHouse/pull/22445) ([Kfir Itzhak](https://github.com/mastertheknife)). `ppc64le`에서의 컴파일 문제를 수정하고, 올바른 instruction pointer register를 사용하도록 했습니다. [#22430](https://github.com/ClickHouse/ClickHouse/pull/22430) ([Kfir Itzhak](https://github.com/mastertheknife)).
* `aarch64`에서 S3 (AWS) 라이브러리를 재활성화했습니다. [#22484](https://github.com/ClickHouse/ClickHouse/pull/22484) ([Kfir Itzhak](https://github.com/mastertheknife)).
* `ORC` 포맷을 읽으려면 `tzdata`가 필요하므로 Docker 컨테이너에 이를 추가합니다. 이로써 [#14156](https://github.com/ClickHouse/ClickHouse/issues/14156)가 해결됩니다. [#22000](https://github.com/ClickHouse/ClickHouse/pull/22000) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-server` 이미지 Dockerfile에 `deb_location` 및 `single_binary_location`이라는 2개의 인수를 추가했습니다. [#21977](https://github.com/ClickHouse/ClickHouse/pull/21977) ([filimonov](https://github.com/filimonov)).
* clang-tidy를 사용하는 경우 어설션을 활성화하여 릴리스 빌드에서도 사용할 수 있게 했습니다. [#21914](https://github.com/ClickHouse/ClickHouse/pull/21914) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* cmake 스크립트의 검색 대상에 llvm-12 바이너리 이름을 추가했습니다. clang 경고를 억제하기 위해 암시적 상수 변환을 적용했습니다. CMake 3.19로 빌드할 수 있도록 서브모듈을 업데이트했습니다. `readpassphrase` 라이브러리의 매크로 확장에서 재귀를 억제했습니다. clang에서 더 이상 권장되지 않는 `-fuse-ld`를 `--ld-path`로 변경했습니다. [#21597](https://github.com/ClickHouse/ClickHouse/pull/21597) ([Ilya Yatsishin](https://github.com/qoega)).
* Docker Hub에서 매우 엄격한 요청 횟수 제한을 적용했기 때문에, Yandex dockerhub-proxy를 사용하도록 `docker/test/testflows/runner/dockerd-entrypoint.sh`를 업데이트했습니다 [#21551](https://github.com/ClickHouse/ClickHouse/pull/21551) ([vzakaznikov](https://github.com/vzakaznikov)).
* macOS용 공유 라이브러리 빌드를 수정했습니다. [#20184](https://github.com/ClickHouse/ClickHouse/pull/20184) ([nvartolomei](https://github.com/nvartolomei)).
* `zookeeper-dump-tree`에 `ctime` 옵션이 추가되었습니다. 이 옵션을 사용하면 노드 생성 시각을 덤프할 수 있습니다. [#21842](https://github.com/ClickHouse/ClickHouse/pull/21842) ([Ilya](https://github.com/HumanUser)).

<div id="clickhouse-release-213-lts">
  ## ClickHouse 릴리스 21.3 (LTS)
</div>

<div id="clickhouse-release-v213-2021-03-12">
  ### ClickHouse 릴리스 v21.3, 2021-03-12
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* 이제 기존 구문으로 table TTL이 포함된 MergeTree 테이블을 생성할 수 없습니다. 해당 TTL이 무시되기 때문입니다. 기존 테이블은 계속 ATTACH할 수 있습니다. [#20282](https://github.com/ClickHouse/ClickHouse/pull/20282) ([alesapin](https://github.com/alesapin)).
* 이제 대소문자를 구분하지 않는 모든 함수 이름은 정규 표기로 다시 작성됩니다. 이는 프로젝션 쿼리 라우팅(예정된 기능)에 필요합니다. [#20174](https://github.com/ClickHouse/ClickHouse/pull/20174) ([Amos Bird](https://github.com/amosbird)).
* 표현식이 함수이고 `ORDER BY` 키와 동일한 경우의 `TTL` 생성 문제를 수정했습니다. 이제 `GROUP BY`가 있는 `TTL`에서는 프라이머리 키 컬럼에 사용자 지정 집계를 설정할 수 있습니다. 하위 호환되지 않음: 이제 `GROUP BY`에 포함되지 않고 명시적으로 설정되지 않은 프라이머리 키 컬럼에는 TTL이 만료될 때 `max` 대신 `any` 함수가 적용됩니다. 또한 `WHERE` 또는 `GROUP BY`와 함께 TTL을 사용하면 롤링 업데이트 중 머지 시 예외가 발생할 수 있습니다. [#15450](https://github.com/ClickHouse/ClickHouse/pull/15450) ([Anton Popov](https://github.com/CurtizJ)).

<div id="new-feature">
  #### 새로운 기능
</div>

* 파일 엔진 설정 `engine_file_empty_if_not_exists` 및 `engine_file_truncate_on_insert`를 추가했습니다. [#20620](https://github.com/ClickHouse/ClickHouse/pull/20620) ([M0r64n](https://github.com/M0r64n)).
* 연속된 행 간 차이를 합산하는 집계 함수 `deltaSum`을 추가했습니다. [#20057](https://github.com/ClickHouse/ClickHouse/pull/20057) ([Russ Frank](https://github.com/rf)).
* `system.part_log` 테이블에 새 `event_time_microseconds` 컬럼을 추가했습니다. [#20027](https://github.com/ClickHouse/ClickHouse/pull/20027) ([Bharat Nallan](https://github.com/bharatnc)).
* UTC 대비 오프셋을 초 단위로 반환하는 `timezoneOffset(datetime)` 함수를 추가했습니다. 이 변경으로 [#issue:19850](https://github.com/ClickHouse/ClickHouse/issues/19850)이 해결됩니다. [#19962](https://github.com/ClickHouse/ClickHouse/pull/19962) ([keenwolf](https://github.com/keen-wolf)).
* 분산 테이블에서 특정 세그먼트에 데이터를 삽입할 수 있도록 `insert_shard_id` 설정을 추가했습니다. [#19961](https://github.com/ClickHouse/ClickHouse/pull/19961) ([flynn](https://github.com/ucasFL)).
* `reinterpretAs` 함수가 큰 정수를 지원하도록 업데이트되었습니다. [#19691](https://github.com/ClickHouse/ClickHouse/issues/19691)을 수정합니다. [#19858](https://github.com/ClickHouse/ClickHouse/pull/19858) ([Maksim Kita](https://github.com/kitaisreal)).
* S3 클라이언트에 Server Side Encryption Customer Keys(`x-amz-server-side-encryption-customer-(key/md5)` header) 지원을 추가했습니다. 자세한 내용은 [링크](https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)를 참조하십시오. 이 변경으로 [#19428](https://github.com/ClickHouse/ClickHouse/issues/19428)이 해결됩니다. [#19748](https://github.com/ClickHouse/ClickHouse/pull/19748) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 실행형 딕셔너리 소스에 `implicit_key` 옵션을 추가했습니다. 이 옵션을 사용하면 레코드가 입력 키와 동일한 순서로 들어올 때 각 레코드마다 키를 출력하지 않아도 됩니다. [#14527](https://github.com/ClickHouse/ClickHouse/issues/14527)을 구현합니다. [#19677](https://github.com/ClickHouse/ClickHouse/pull/19677) ([Maksim Kita](https://github.com/kitaisreal)).
* QUOTA 유형 `query_selects` 및 `query_inserts`를 추가했습니다. [#19603](https://github.com/ClickHouse/ClickHouse/pull/19603) ([JackyWoo](https://github.com/JackyWoo)).
* 함수 `extractTextFromHTML`을 추가했습니다. [#19600](https://github.com/ClickHouse/ClickHouse/pull/19600) ([zlx19950903](https://github.com/zlx19950903)), ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 `MergeTree*` 엔진을 사용하는 테이블에는 쿼리 동시성 제어를 위한 새 테이블 수준 설정 2개가 있습니다. `max_concurrent_queries` 설정은 이 테이블과 관련된 동시 실행 쿼리 수를 제한합니다. `min_marks_to_honor_max_concurrent_queries` 설정은 쿼리가 최소 이 수만큼의 마크를 읽는 경우에만 앞선 설정을 적용하도록 지정합니다. [#19544](https://github.com/ClickHouse/ClickHouse/pull/19544) ([Amos Bird](https://github.com/amosbird)).
* `user_files` 디렉터리의 파일을 String으로 읽는 `file` 함수를 추가했습니다. 이는 `file` 테이블 함수와는 다릅니다. 이 변경은 [#issue:18851](https://github.com/ClickHouse/ClickHouse/issues/18851)을 구현합니다. [#19204](https://github.com/ClickHouse/ClickHouse/pull/19204) ([keenwolf](https://github.com/keen-wolf)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* 실험적인 `Replicated` 데이터베이스 엔진을 추가했습니다. 이 엔진은 여러 호스트 간에 DDL 쿼리를 복제합니다. [#16193](https://github.com/ClickHouse/ClickHouse/pull/16193) ([tavplubix](https://github.com/tavplubix)).
* `allow_experimental_window_functions = 1`로 활성화되는 윈도우 함수 지원을 실험적으로 도입했습니다. 이는 alpha 수준의 초기 구현으로, 프로덕션 환경에는 적합하지 않으며 이후 릴리스에서 하위 호환되지 않는 방식으로 변경될 예정입니다. 지원되는 기능 목록은 [문서](https://github.com/ClickHouse/ClickHouse/blob/master/docs/sql-reference/window-functions/index.md#experimental-window-functions)를 참조하십시오. [#20337](https://github.com/ClickHouse/ClickHouse/pull/20337) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* DiskS3의 메타데이터 파일을 백업/복원할 수 있는 기능을 추가했습니다. [#18377](https://github.com/ClickHouse/ClickHouse/pull/18377) ([Pavel Kovalenko](https://github.com/Jokser)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* 원격 쿼리를 위한 헤지드 요청입니다. `use_hedged_requests`를 활성화하면(기본값은 비활성화) 쿼리를 위해 서로 다른 레플리카에 대해 여러 연결을 설정할 수 있습니다. 기존 레플리카 연결이 `hedged_connection_timeout` 내에 수립되지 않았거나 `receive_data_timeout` 내에 데이터를 받지 못한 경우 새 연결이 활성화됩니다. 쿼리는 비어 있지 않은 첫 번째 progress 패킷(또는 `allow_changing_replica_until_first_data_packet`가 설정된 경우 데이터 패킷)을 보내는 연결을 사용하며, 다른 연결은 취소됩니다. `max_parallel_replicas > 1`인 쿼리도 지원됩니다. [#19291](https://github.com/ClickHouse/ClickHouse/pull/19291) ([Kruglov Pavel](https://github.com/Avogar)). 이를 통해 매우 큰 클러스터에서 테일 레이턴시를 크게 줄일 수 있습니다.
* 행 수준 보안 표현식이 지정된 테이블에서 `PREWHERE` 지원이 추가되었으며(해당 최적화도 활성화됨). [#19576](https://github.com/ClickHouse/ClickHouse/pull/19576) ([Denis Glazachev](https://github.com/traceon)).
* 설정 `distributed_aggregation_memory_efficient`은 기본적으로 활성화되어 있습니다. 메모리 사용량을 줄이고 분산 쿼리 성능을 향상시킵니다. [#20599](https://github.com/ClickHouse/ClickHouse/pull/20599) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 여러 개의 고정 길이 키에 대한 GROUP BY 성능을 개선했습니다. [#20472](https://github.com/ClickHouse/ClickHouse/pull/20472) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 별칭을 더 엄격하게 처리해 집계 함수의 성능을 개선했습니다. [#19946](https://github.com/ClickHouse/ClickHouse/pull/19946) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 파이프라인을 단순화하고, 그에 따라 파이프라인 스케줄링에서의 잠금 경합을 줄여 극단적인 경우(`Memory` 테이블의 읽기 속도가 초당 50 GB 수준에 이르는 경우) `Memory` 테이블의 읽기 성능을 향상했습니다. [#20468](https://github.com/ClickHouse/ClickHouse/pull/20468) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 들어오고 나가는 데이터의 복사 횟수를 줄이기 위해 HTTP server를 부분적으로 다시 구현했습니다. 이로써 HTTP를 통해 긴 레코드를 삽입할 때 성능이 최대 1.5배 향상됩니다. [#19516](https://github.com/ClickHouse/ClickHouse/pull/19516) ([Ivan](https://github.com/abyss7)).
* `Memory` 테이블에 `compress` 설정이 추가되었습니다. 이 설정을 활성화하면 테이블이 사용하는 RAM이 줄어듭니다. 일부 머신과 데이터셋에서는 SELECT 시 더 빠르게 동작할 수도 있지만, 항상 그런 것은 아닙니다. 이 변경으로 [#20093](https://github.com/ClickHouse/ClickHouse/issues/20093)가 해결되었습니다. 참고: Memory 테이블이 MergeTree보다 더 느리게 동작할 수 있는 이유는 (1) 압축 부재 (2) 블록의 고정된 크기 (3) 인덱스와 prewhere 부재 때문입니다... [#20168](https://github.com/ClickHouse/ClickHouse/pull/20168) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 집계 코드가 약간 개선되었습니다. [#20978](https://github.com/ClickHouse/ClickHouse/pull/20978) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 성능 향상을 위해 `intDiv`/`modulo` 특수화를 다시 추가합니다. 이로써 [#21293](https://github.com/ClickHouse/ClickHouse/issues/21293) 문제가 수정됩니다. 이 회귀는 [https://github.com/ClickHouse/ClickHouse/pull/18145](https://github.com/ClickHouse/ClickHouse/pull/18145) 에서 도입되었습니다. [#21307](https://github.com/ClickHouse/ClickHouse/pull/21307) ([Amos Bird](https://github.com/amosbird)).
* INSERT SELECT로 Memory 테이블에 삽입할 때 블록을 과도하게 합치지 않도록 했습니다. 이전 버전에서는 INSERT SELECT 이후 Memory 테이블에 비효율적인 데이터 표현이 만들어졌습니다. 이로써 [#13052](https://github.com/ClickHouse/ClickHouse/issues/13052)를 해결합니다. [#20169](https://github.com/ClickHouse/ClickHouse/pull/20169) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* DataType 파서에서 지수적 복잡도가 발생할 수 있는 사례를 최소 1건 수정했습니다(퍼저가 발견). 이로써 [#20096](https://github.com/ClickHouse/ClickHouse/issues/20096)가 해결되었습니다. [#20132](https://github.com/ClickHouse/ClickHouse/pull/20132) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `do_not_merge_across_partitions_select_final` 설정이 1이면 `level &gt; 0`인 단일 part에 대한 FINAL이 포함된 SELECT를 병렬로 실행합니다. [#19375](https://github.com/ClickHouse/ClickHouse/pull/19375) ([Kruglov Pavel](https://github.com/Avogar)).
* `system.parts` 및 `system.parts_columns`를 쿼리할 때 요청된 컬럼만 채우도록 했습니다. [#19570](https://github.com/ClickHouse/ClickHouse/issues/19570)을 해결했습니다. [#21035](https://github.com/ClickHouse/ClickHouse/pull/21035) ([Anmol Arora](https://github.com/anmolarora)).
* `avg` 집계 함수 내부의 산술 표현식에 대수적 최적화를 적용합니다. [#20092](https://github.com/ClickHouse/ClickHouse/issues/20092) 해결. [#20183](https://github.com/ClickHouse/ClickHouse/pull/20183) ([flynn](https://github.com/ucasFL)).

<div id="improvement">
  #### 개선 사항
</div>

* 테이블 함수에서 압축 방식을 대소문자 구분 없이 사용할 수 있도록 했습니다. 또한 대문자로 검사되던 LZMA 압축 방식도 수정했습니다. [#21416](https://github.com/ClickHouse/ClickHouse/pull/21416) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 삽입 중 비활성 파트가 너무 많으면 삽입을 지연하거나 오류를 발생시키는 두 가지 설정을 추가했습니다. 이는 서버가 파트를 충분히 빠르게 정리하지 못할 때 유용합니다. [#20178](https://github.com/ClickHouse/ClickHouse/pull/20178) ([Amos Bird](https://github.com/amosbird)).
* mysql 클라이언트와의 호환성을 개선했습니다. 1. mysql jdbc 2. mycli. [#21367](https://github.com/ClickHouse/ClickHouse/pull/21367) ([Amos Bird](https://github.com/amosbird)).
* materialized view에서 참조 중인 컬럼은 삭제할 수 없도록 했습니다. Closes [#21164](https://github.com/ClickHouse/ClickHouse/issues/21164). [#21303](https://github.com/ClickHouse/ClickHouse/pull/21303) ([flynn](https://github.com/ucasFL)).
* 이제 MySQL 딕셔너리 소스는 SSL/TLS 연결에서 가끔 발생하는 예기치 않은 연결 실패(Lost connection to MySQL server during query)가 발생하면 재시도합니다. [#21237](https://github.com/ClickHouse/ClickHouse/pull/21237) ([Alexander Kazakov](https://github.com/Akazz)).
* 사용성 개선: `DateTime64` 파싱이 더 일관되게 이루어지도록 개선했습니다. 소수 초 해상도의 Unix timestamp가 `1111111111.222` 대신 `1111111111222`와 같이 스케일된 정수로 지정된 경우를 인식합니다. 이로써 [#13194](https://github.com/ClickHouse/ClickHouse/issues/13194)가 해결됩니다. [#21053](https://github.com/ClickHouse/ClickHouse/pull/21053) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* distributed\_group\_by\_no\_merge 사용 시 initiator에서는 정렬된 블록만 머지하도록 변경했습니다. [#20882](https://github.com/ClickHouse/ClickHouse/pull/20882) ([Azat Khuzhin](https://github.com/azat)).
* mysql source의 구성을 로드할 때 ClickHouse는 이제 동일한 우선순위를 가진 레플리카 목록을 무작위로 섞어, mysql endpoint를 선택하는 라운드 로빈 로직이 올바르게 동작하도록 합니다. 이로써 [#20629](https://github.com/ClickHouse/ClickHouse/issues/20629)가 해결되었습니다. [#20632](https://github.com/ClickHouse/ClickHouse/pull/20632) ([Alexander Kazakov](https://github.com/Akazz)).
* 함수 'reinterpretAs(x, Type)'가 'reinterpret(x, Type)'로 이름이 변경되었습니다. [#20611](https://github.com/ClickHouse/ClickHouse/pull/20611) ([Maksim Kita](https://github.com/kitaisreal)).
* RabbitMQ engine에 vhost 지원을 추가했습니다 [#20576](https://github.com/ClickHouse/ClickHouse/issues/20576). [#20596](https://github.com/ClickHouse/ClickHouse/pull/20596) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 배열과 튜플이 결합된 데이터 타입의 직렬화를 개선했습니다. enum 데이터 타입을 protobuf enum 타입에 매칭하는 방식을 개선했습니다. `Map` 데이터 타입의 직렬화를 수정했습니다. 이제 생략된 값에는 기본값이 설정됩니다. [#20506](https://github.com/ClickHouse/ClickHouse/pull/20506) ([Vitaly Baranov](https://github.com/vitlibar)).
* 분산 DDL 작업 실행과 DDL 큐 정리 사이의 경쟁 상태를 수정했습니다. 이제 활성 상태의 worker가 있으면 DDL 작업을 ZooKeeper에서 제거할 수 없습니다. [#20016](https://github.com/ClickHouse/ClickHouse/issues/20016)을 해결했습니다. [#20448](https://github.com/ClickHouse/ClickHouse/pull/20448) ([tavplubix](https://github.com/tavplubix)).
* alpine 이미지에서 FQDN 및 기타 DNS 관련 함수가 올바르게 동작하도록 개선했습니다. [#20336](https://github.com/ClickHouse/ClickHouse/pull/20336) ([filimonov](https://github.com/filimonov)).
* 명시적으로 금지된 함수에 대해서는 이른 시점의 상수 폴딩을 허용하지 않습니다. [#20303](https://github.com/ClickHouse/ClickHouse/pull/20303) ([Azat Khuzhin](https://github.com/azat)).
* 정수 값이 Decimal 유형에 맞지 않아도 정수에서 Decimal 유형으로의 암시적 변환이 성공할 수 있었습니다. 이제는 `ARGUMENT_OUT_OF_BOUND` 예외가 발생합니다. [#20232](https://github.com/ClickHouse/ClickHouse/pull/20232) ([tavplubix](https://github.com/tavplubix)).
* 잠금 없이 `SYSTEM FLUSH DISTRIBUTED`. [#20215](https://github.com/ClickHouse/ClickHouse/pull/20215) ([Azat Khuzhin](https://github.com/azat)).
* count(constant)와 sum(1)을 count()로 정규화합니다. 이는 프로젝션 쿼리 라우팅에 필요합니다. [#20175](https://github.com/ClickHouse/ClickHouse/pull/20175) ([Amos Bird](https://github.com/amosbird)).
* 비트맵 함수가 모든 네이티브 정수 타입을 지원합니다. [#20171](https://github.com/ClickHouse/ClickHouse/pull/20171) ([Amos Bird](https://github.com/amosbird)).
* `CacheDictionary`, `ComplexCacheDictionary`, `SSDCacheDictionary`, `SSDComplexKeyDictionary`가 기반 인덱스로 LRUHashMap을 사용하도록 업데이트했습니다. [#20164](https://github.com/ClickHouse/ClickHouse/pull/20164) ([Maksim Kita](https://github.com/kitaisreal)).
* 이제 시작 시 `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT`를 지정해 `access_management` 설정을 구성할 수 있습니다. 기본값은 비활성화(`0`)이며, 이는 이전과 동일한 값입니다. [#20139](https://github.com/ClickHouse/ClickHouse/pull/20139) ([Marquitos](https://github.com/sonirico)).
* `toDateTime64(toDate()/toDateTime())`의 DateTime64 관련 수정 - DateTime 동작에 맞게 DateTime64 클램핑을 구현했습니다. [#20131](https://github.com/ClickHouse/ClickHouse/pull/20131) ([Azat Khuzhin](https://github.com/azat)).
* Quota 개선사항: 이제 quota 계산 시 SHOW TABLES는 2개의 쿼리가 아니라 1개의 쿼리로 간주됩니다. 이제 SYSTEM 쿼리도 quota를 소모합니다. quota 사용량 계산에서 인터벌 끝값 계산을 수정했습니다. [#20106](https://github.com/ClickHouse/ClickHouse/pull/20106) ([Vitaly Baranov](https://github.com/vitlibar)).
* `system.zookeeper` 테이블에서 `path IN (set)` 표현식을 지원합니다. [#20105](https://github.com/ClickHouse/ClickHouse/pull/20105) ([小路](https://github.com/nicelulu)).
* `system.tables`에서 `MaterializeMySQL` 테이블의 상세 정보를 모두 표시합니다. [#20051](https://github.com/ClickHouse/ClickHouse/pull/20051) ([Stig Bakken](https://github.com/stigsb)).
* 잘못 사용한 경우에만 발생할 수 있었던 실행형 딕셔너리의 데이터 레이스를 수정했습니다(예: 스크립트가 입력을 무시하고 데이터를 반환하는 경우). [#20045](https://github.com/ClickHouse/ClickHouse/pull/20045) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 MySQL 레플리카의 config 섹션에서 "opt\_reconnect" 매개변수로 MYSQL\_OPT\_RECONNECT 옵션 값을 제어할 수 있습니다. [#19998](https://github.com/ClickHouse/ClickHouse/pull/19998) ([Alexander Kazakov](https://github.com/Akazz)).
* 사용자가 `JSONExtract` 함수를 호출할 때 요청한 유형이 `Float32`이면, 결과 유형으로의 부정확한 변환을 허용합니다. 예를 들어 JSON의 숫자 `0.1`은 배정밀도(double precision)이므로 Float32로는 정확히 표현할 수 없지만, 사용자는 여전히 그 값을 얻고자 합니다. 이전 버전에서는 변환이 부정확함을 나타내기 위해 널 허용이 아닌 유형에는 0을, 널 허용 유형에는 NULL을 반환했습니다. 이 로직은 100% 정확했지만 사용자에게는 예상 밖이었고 혼란을 일으켜 질문으로 이어졌습니다. 이 변경으로 [#13962](https://github.com/ClickHouse/ClickHouse/issues/13962)가 해결됩니다. [#19960](https://github.com/ClickHouse/ClickHouse/pull/19960) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 분산 테이블에 INSERT할 때 블록 구조가 일치하지 않으면 이를 변환하는 기능을 추가했습니다. [#19947](https://github.com/ClickHouse/ClickHouse/pull/19947) ([Azat Khuzhin](https://github.com/azat)).
* `system.distributed_ddl_queue` 테이블이 개선되었습니다. 재시작 후 MaxDDLEntryID를 마지막 값으로 초기화합니다. 이 PR 이전에는 새 DDLTask가 처리되기 전까지 MaxDDLEntryID가 0으로 유지되었습니다. [#19924](https://github.com/ClickHouse/ClickHouse/pull/19924) ([Amos Bird](https://github.com/amosbird)).
* `system.parts`에 `MaterializeMySQL` 테이블을 표시합니다. [#19770](https://github.com/ClickHouse/ClickHouse/pull/19770) ([Stig Bakken](https://github.com/stigsb)).
* `Buffer` 프로필을 위한 별도의 설정 지시문을 추가했습니다. [#19721](https://github.com/ClickHouse/ClickHouse/pull/19721) ([Azat Khuzhin](https://github.com/azat)).
* JOIN과 관련 없는 조건을 WHERE 절로 이동합니다. [#18720](https://github.com/ClickHouse/ClickHouse/issues/18720). [#19685](https://github.com/ClickHouse/ClickHouse/pull/19685) ([hexiaoting](https://github.com/hexiaoting)).
* 비동기 전송의 대기 중 바이트 수를 기준으로 `Distributed` 엔진에 대한 INSERT 속도를 제한하는 기능이 추가되었습니다(`Distributed` 엔진에 `bytes_to_delay_insert`/`max_delay_to_insert` 및 `bytes_to_throw_insert` 설정이 추가됨). [#19673](https://github.com/ClickHouse/ClickHouse/pull/19673) ([Azat Khuzhin](https://github.com/azat)).
* destructor에서 쓰기 오류가 무시될 수 있는 드문 경우 일부를 수정했습니다. [#19451](https://github.com/ClickHouse/ClickHouse/pull/19451) ([Azat Khuzhin](https://github.com/azat)).
* 치명적 오류 발생 시 스택 트레이스에 인라인 프레임을 출력합니다. [#19317](https://github.com/ClickHouse/ClickHouse/pull/19317) ([Ivan](https://github.com/abyss7)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* ZooKeeper에 대한 불필요한 재연결과 단일 ClickHouse 서버에서 두 개의 세션이 동시에 활성화될 수 있는 문제를 수정했습니다. 두 문제 모두 #14678에서 도입되었습니다. [#21264](https://github.com/ClickHouse/ClickHouse/pull/21264) ([alesapin](https://github.com/alesapin)).
* `Values` 포맷에서 `LowCardinality` 컬럼이 있는 테이블에 데이터를 삽입할 때 발생하던 `Bad cast from type ... to DB::ColumnLowCardinality` 오류를 수정했습니다. #21140을 수정했습니다 [#21357](https://github.com/ClickHouse/ClickHouse/pull/21357) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 프레디케이트에 해당 테이블 자체가 포함된 경우, 비복제 MergeTree 테이블 엔진의 `ALTER DELETE` 뮤테이션에서 발생하던 교착 상태를 수정했습니다. [#20558](https://github.com/ClickHouse/ClickHouse/issues/20558)를 해결합니다. [#21477](https://github.com/ClickHouse/ClickHouse/pull/21477) ([alesapin](https://github.com/alesapin)).
* 장애 발생 시 분산 쿼리에서 발생하던 SIGSEGV를 수정했습니다. [#21434](https://github.com/ClickHouse/ClickHouse/pull/21434) ([Azat Khuzhin](https://github.com/azat)).
* 이제 `ALTER MODIFY COLUMN` 쿼리에서 파티션 키, 스킵 인덱스, TTL 등의 변경 사항이 올바르게 반영됩니다. [#13675](https://github.com/ClickHouse/ClickHouse/issues/13675)를 수정했습니다. [#21334](https://github.com/ClickHouse/ClickHouse/pull/21334) ([alesapin](https://github.com/alesapin)).
* `join_use_nulls` 및 서브쿼리의 `TOTALS`를 join할 때 발생하던 버그를 수정했습니다. 이로써 [#19362](https://github.com/ClickHouse/ClickHouse/issues/19362) 및 [#21137](https://github.com/ClickHouse/ClickHouse/issues/21137)가 해결되었습니다. [#21248](https://github.com/ClickHouse/ClickHouse/pull/21248) ([vdimir](https://github.com/vdimir)).
* `UNION`이 포함된 쿼리의 `EXPLAIN`에서 발생하던 충돌을 수정했습니다. [#20876](https://github.com/ClickHouse/ClickHouse/issues/20876), [#21170](https://github.com/ClickHouse/ClickHouse/issues/21170)을 수정했습니다. [#21246](https://github.com/ClickHouse/ClickHouse/pull/21246) ([flynn](https://github.com/ucasFL)).
* 이제 뮤테이션은 이를 지원하는 테이블 엔진(MergeTree 엔진 계열, Memory, MaterializedView)에서만 허용됩니다. 다른 엔진은 더 명확한 오류를 반환합니다. [#21168](https://github.com/ClickHouse/ClickHouse/issues/21168)을 수정했습니다. [#21183](https://github.com/ClickHouse/ClickHouse/pull/21183) ([alesapin](https://github.com/alesapin)).
* [#21112](https://github.com/ClickHouse/ClickHouse/issues/21112)를 수정했습니다. 콜백 중 하나가 약간 늦게 도착할 경우 삽입 쿼리에서 중복이 발생할 수 있던 버그를 수정했습니다. [#21138](https://github.com/ClickHouse/ClickHouse/pull/21138) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 타입이 널 허용인 경우 `input_format_null_as_default`가 제대로 적용되도록 수정했습니다. 이로써 [#21116](https://github.com/ClickHouse/ClickHouse/issues/21116) 문제가 해결됩니다. [#21121](https://github.com/ClickHouse/ClickHouse/pull/21121) ([Amos Bird](https://github.com/amosbird)).
* Tuple을 맵으로 CAST할 때 발생하던 버그를 수정했습니다. [#21029](https://github.com/ClickHouse/ClickHouse/issues/21029)를 해결했습니다. [#21120](https://github.com/ClickHouse/ClickHouse/pull/21120) ([hexiaoting](https://github.com/hexiaoting)).
* 사용자 지정(기본값이 아닌) ZooKeeper 클러스터를 사용하는 Replicated\*MergeTree가 삭제될 때 발생하던 메타데이터 누수를 수정했습니다. [#21119](https://github.com/ClickHouse/ClickHouse/pull/21119) ([fastio](https://github.com/fastio)).
* joinGet에서 LowCardinality 키를 사용할 때 발생하던 타입 불일치 문제를 수정했습니다. 이로써 [#21114](https://github.com/ClickHouse/ClickHouse/issues/21114)가 해결되었습니다. [#21117](https://github.com/ClickHouse/ClickHouse/pull/21117) ([Amos Bird](https://github.com/amosbird)).
* Replicated(\*)MergeTree 엔진에서 다른 매개변수를 지정해야 할 때 default\_replica\_path 및 default\_replica\_name 값이 적용되지 않던 문제를 수정했습니다. [#21060](https://github.com/ClickHouse/ClickHouse/pull/21060) ([mxzlxy](https://github.com/mxzlxy)).
* 특별히 조작된 `DateTime64` 유형의 범위 밖 값을 포맷하는 과정에서 범위를 벗어난 메모리 접근이 발생할 수 있었습니다. 이로써 [#20494](https://github.com/ClickHouse/ClickHouse/issues/20494)가 해결되었습니다. 이로써 [#20543](https://github.com/ClickHouse/ClickHouse/issues/20543)가 해결되었습니다. [#21023](https://github.com/ClickHouse/ClickHouse/pull/21023) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* storage join으로의 병렬 삽입을 차단합니다. [#21009](https://github.com/ClickHouse/ClickHouse/pull/21009) ([vdimir](https://github.com/vdimir)).
* `ALTER MODIFY COLUMN`이 실패가 확실한 mutation을 생성하던 동작을 수정했습니다. [#21007](https://github.com/ClickHouse/ClickHouse/pull/21007) ([Anton Popov](https://github.com/CurtizJ)).
* [#9969](https://github.com/ClickHouse/ClickHouse/issues/9969)를 닫습니다. 대용량 데이터, 다소 복잡한 구조, JSON 출력 형식에서 재현되던 Brotli HTTP Compression 오류를 수정했습니다. "ring-buffer에서 초기화되지 않은 데이터에 드물게 접근하던 문제 수정"을 포함하도록 Brotli를 최신 버전으로 업데이트했습니다. [#20991](https://github.com/ClickHouse/ClickHouse/pull/20991) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 쿼리 취소 시 '비동기 작업 큐에서 빈 작업이 반환되는' 문제를 수정했습니다. [#20881](https://github.com/ClickHouse/ClickHouse/pull/20881) ([Azat Khuzhin](https://github.com/azat)).
* MySQL 5.7 클라이언트로 ClickHouse 서버에 연결할 때 `USE database;` 쿼리가 작동하지 않던 문제가 수정되었습니다. [#18926](https://github.com/ClickHouse/ClickHouse/issues/18926)를 해결합니다. [#20878](https://github.com/ClickHouse/ClickHouse/pull/20878) ([tavplubix](https://github.com/tavplubix)).
* 집계 함수에서 `-State` combinator와 함께 `-Distinct` combinator를 사용할 때의 문제를 수정했습니다. [#20866](https://github.com/ClickHouse/ClickHouse/pull/20866) ([Anton Popov](https://github.com/CurtizJ)).
* `UNION DISTINCT` 및 `LIMIT` 절이 포함된 서브쿼리 문제를 수정했습니다. [#20597](https://github.com/ClickHouse/ClickHouse/issues/20597)을 해결했습니다. [#20610](https://github.com/ClickHouse/ClickHouse/pull/20610) ([flynn](https://github.com/ucasFL)).
* 딕셔너리에 없는 키를 조회하는 쿼리에서 발생하던 딕셔너리 동작의 불일치 문제를 수정했습니다. [#20578](https://github.com/ClickHouse/ClickHouse/pull/20578) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 스칼라 서브쿼리와 인덱스용 서브쿼리에 사용되는 스레드 수를 수정했습니다([#19007](https://github.com/ClickHouse/ClickHouse/issues/19007) 이후에는 항상 단일 스레드만 사용되었습니다). [#20457](https://github.com/ClickHouse/ClickHouse/issues/20457), [#20512](https://github.com/ClickHouse/ClickHouse/issues/20512)를 수정했습니다. [#20550](https://github.com/ClickHouse/ClickHouse/pull/20550) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* remove 쿼리에서 알 수 없는 패킷을 수신했을 때 발생할 수 있던 충돌을 수정했습니다([#17868](https://github.com/ClickHouse/ClickHouse/issues/17868)에서 처음 도입됨). [#20547](https://github.com/ClickHouse/ClickHouse/pull/20547) ([Azat Khuzhin](https://github.com/azat)).
* async INSERT용 디렉터리 이름을 파싱할 때 적절한 검사를 추가했습니다(SIGSEGV 수정). [#20498](https://github.com/ClickHouse/ClickHouse/pull/20498) ([Azat Khuzhin](https://github.com/azat)).
* 부동소수점 키에서 함수 `transform`이 제대로 작동하지 않던 문제를 수정했습니다. [#20460](https://github.com/ClickHouse/ClickHouse/issues/20460)을 해결합니다. [#20479](https://github.com/ClickHouse/ClickHouse/pull/20479) ([flynn](https://github.com/ucasFL)).
* WITH 별칭을 서브쿼리에 전파하는 과정에서 발생하던 무한 루프를 수정했습니다. 이 수정으로 [#20388](https://github.com/ClickHouse/ClickHouse/issues/20388) 문제가 해결됩니다. [#20476](https://github.com/ClickHouse/ClickHouse/pull/20476) ([Amos Bird](https://github.com/amosbird)).
* HTTP 클라이언트 연결이 끊겼을 때 server가 비정상적으로 종료되는 문제를 수정했습니다. [#20464](https://github.com/ClickHouse/ClickHouse/pull/20464) ([Azat Khuzhin](https://github.com/azat)).
* JOIN에 SELECT의 상수가 포함된 경우 `join_use_nulls=1`에서 발생하는 `LOGICAL_ERROR`를 수정했습니다. [#20461](https://github.com/ClickHouse/ClickHouse/pull/20461) ([Azat Khuzhin](https://github.com/azat)).
* 테이블 함수 `view`가 표현식 목록에 사용되었는지 확인하고, 사용된 경우 오류를 발생시킵니다. 이로써 [#20342](https://github.com/ClickHouse/ClickHouse/issues/20342)가 수정됩니다. [#20350](https://github.com/ClickHouse/ClickHouse/pull/20350) ([Amos Bird](https://github.com/amosbird)).
* RANGE\_HASHED() 딕셔너리에서 유효하지 않은 역참조를 방지합니다. [#20345](https://github.com/ClickHouse/ClickHouse/pull/20345) ([Azat Khuzhin](https://github.com/azat)).
* `join_use_nulls=1` 사용 시 NULL 역참조 문제를 수정했습니다. [#20344](https://github.com/ClickHouse/ClickHouse/pull/20344) ([Azat Khuzhin](https://github.com/azat)).
* scale이 서로 다른 두 상수 decimal 간 이항 연산에서 잘못된 결과가 반환되던 문제를 수정했습니다. [#20283](https://github.com/ClickHouse/ClickHouse/issues/20283)를 수정했습니다. [#20339](https://github.com/ClickHouse/ClickHouse/pull/20339) ([Maksim Kita](https://github.com/kitaisreal)).
* `ReplicatedMergeTree` 테이블 엔진 계열에서 실패한 백그라운드 작업을 너무 자주 재시도하던 문제를 수정했습니다. 이로 인해 로깅이 지나치게 많아지고 CPU 부하가 증가할 수 있었습니다. [#20203](https://github.com/ClickHouse/ClickHouse/issues/20203)를 수정했습니다. [#20335](https://github.com/ClickHouse/ClickHouse/pull/20335) ([alesapin](https://github.com/alesapin)).
* `*CollapsingMergeTree` 및 `ReplacingMergeTree` 테이블 엔진의 버전 컬럼의 `DROP` 또는 `RENAME`을 제한합니다. [#20300](https://github.com/ClickHouse/ClickHouse/pull/20300) ([alesapin](https://github.com/alesapin)).
* 손상된 JSON에서 전체 파일을 메모리로 읽으려다가 allocator 예외가 발생하던 문제를 수정했습니다. [#19719](https://github.com/ClickHouse/ClickHouse/issues/19719)을 수정합니다. [#20286](https://github.com/ClickHouse/ClickHouse/pull/20286) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 수직 병합을 지원하지 않는 `MergeTree` 테이블 엔진 계열에서 수직 병합 중 발생하던 예외를 수정했습니다. [#20259](https://github.com/ClickHouse/ClickHouse/issues/20259)를 해결했습니다. [#20279](https://github.com/ClickHouse/ClickHouse/pull/20279) ([alesapin](https://github.com/alesapin)).
* 종료 중 설정을 다시 로드할 때 드물게 발생하는 server 충돌을 수정했습니다. [#19689](https://github.com/ClickHouse/ClickHouse/issues/19689)을 해결합니다. [#20224](https://github.com/ClickHouse/ClickHouse/pull/20224) ([alesapin](https://github.com/alesapin)).
* INSERT SELECT에서 사용할 때 CTE가 올바르게 동작하도록 수정했습니다. 이 변경으로 [#20187](https://github.com/ClickHouse/ClickHouse/issues/20187) 및 [#20195](https://github.com/ClickHouse/ClickHouse/issues/20195) 문제가 수정되었습니다. [#20211](https://github.com/ClickHouse/ClickHouse/pull/20211) ([Amos Bird](https://github.com/amosbird)).
* [#19314](https://github.com/ClickHouse/ClickHouse/issues/19314)를 수정했습니다. [#20156](https://github.com/ClickHouse/ClickHouse/pull/20156) ([Ivan](https://github.com/abyss7)).
* 특수한 시간대를 올바르게 처리하도록 `toMinute` 함수를 수정했습니다. [#20149](https://github.com/ClickHouse/ClickHouse/pull/20149) ([keenwolf](https://github.com/keen-wolf)).
* then/else 분기 결과 타입이 `Tuple`인 `if` 함수가 포함된 쿼리 실행 후 서버가 충돌하던 문제를 수정했습니다. `Tuple` 타입에는 `Array` 또는 다른 복합 타입이 포함되어 있어야 합니다. [#18356](https://github.com/ClickHouse/ClickHouse/issues/18356)을 수정했습니다. [#20133](https://github.com/ClickHouse/ClickHouse/pull/20133) ([alesapin](https://github.com/alesapin)).
* `MongoDB` 테이블 엔진은 이제 데이터를 읽을 때만 연결을 맺습니다. `ATTACH TABLE`은 더 이상 연결을 시도하지 않습니다. [#20110](https://github.com/ClickHouse/ClickHouse/pull/20110) ([Vitaly Baranov](https://github.com/vitlibar)).
* StorageJoin의 버그 수정. [#20079](https://github.com/ClickHouse/ClickHouse/pull/20079) ([vdimir](https://github.com/vdimir)).
* 작은 제수로 음수를 나눌 때 나머지를 계산하는 경우, 음수 결과를 담기에 결과 데이터 타입이 충분히 크지 않았던 문제를 수정했습니다. 이로써 [#20052](https://github.com/ClickHouse/ClickHouse/issues/20052)가 해결되었습니다. [#20067](https://github.com/ClickHouse/ClickHouse/pull/20067) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* MaterializeMySQL: 여러 테이블을 업데이트하는 SQL 문의 복제를 수정했습니다. [#20066](https://github.com/ClickHouse/ClickHouse/pull/20066) ([Håvard Kvålen](https://github.com/havardk)).
* 초기화 스크립트 실행 중 Docker에서 "Connection refused" 오류가 발생하지 않도록 수정했습니다. [#20012](https://github.com/ClickHouse/ClickHouse/pull/20012) ([filimonov](https://github.com/filimonov)).
* `EmbeddedRocksDB`는 Experimental 스토리지입니다. 적절한 유형 검사가 없어 발생하던 문제를 수정했습니다. 코드를 단순화했습니다. 이로써 [#19967](https://github.com/ClickHouse/ClickHouse/issues/19967)이 해결되었습니다. [#19972](https://github.com/ClickHouse/ClickHouse/pull/19972) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 인수 타입이 Int32를 제외한 다른 정수 타입의 `Nullable(T)`인 경우 함수 `fromModifiedJulianDay`에서 발생하던 segfault를 수정했습니다. [#19959](https://github.com/ClickHouse/ClickHouse/pull/19959) ([PHO](https://github.com/depressed-pho)).
* BloomFilter 인덱스 크래시 수정. [#19757](https://github.com/ClickHouse/ClickHouse/issues/19757)를 수정했습니다. [#19884](https://github.com/ClickHouse/ClickHouse/pull/19884) ([Maksim Kita](https://github.com/kitaisreal)).
* system.text\_log가 활성화되어 있으면 교착 상태가 발생할 수 있었습니다. 이로써 [#19874](https://github.com/ClickHouse/ClickHouse/issues/19874)가 수정되었습니다. [#19875](https://github.com/ClickHouse/ClickHouse/pull/19875) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* dictGet()를 포함하는 기본 표현식이 있는 테이블로 server를 시작할 때 발생하던 문제를 수정했습니다. 딕셔너리를 로드하지 않고도 dictGet()의 반환 유형을 가져올 수 있도록 했습니다. [#19805](https://github.com/ClickHouse/ClickHouse/pull/19805) ([Vitaly Baranov](https://github.com/vitlibar)).
* `select`만 실행할 때 발생하던 clickhouse-client abort 예외를 수정했습니다. [#19790](https://github.com/ClickHouse/ClickHouse/pull/19790) ([taiyang-li](https://github.com/taiyang-li)).
* 여러 `clickhouse-copier`를 실행할 때 조각을 대상 테이블로 이동하는 작업이 실패할 수 있는 버그를 수정했습니다. [#19743](https://github.com/ClickHouse/ClickHouse/pull/19743) ([madianjun](https://github.com/mdianjun)).
* `ON CLUSTER` 쿼리를 실행하는 백그라운드 스레드가 삭제된 복제된 테이블이 작업을 진행하기를 기다리며 멈출 수 있었습니다. 수정되었습니다. [#19684](https://github.com/ClickHouse/ClickHouse/pull/19684) ([yiguolei](https://github.com/yiguolei)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* AVX-2를 전역으로 활성화하여 ClickHouse를 빌드할 수 있도록 했습니다. 최신 CPU에서는 성능이 소폭 향상됩니다. 프로덕션 환경에는 권장되지 않으며, 현재로서는 공식 빌드로 지원되지 않습니다. [#20180](https://github.com/ClickHouse/ClickHouse/pull/20180) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Coverity에서 발견한 일부 문제를 수정했습니다. [#19964](https://github.com/ClickHouse/ClickHouse/issues/19964)를 참조하십시오. [#20010](https://github.com/ClickHouse/ClickHouse/pull/20010) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* gdb에서 수정된 실행 파일(binary)로 시작할 수 있도록 했습니다. 이전 버전에서는 시작 전에 gdb에 중단점을 설정하면 무결성 검사 실패로 인해 서버가 시작을 거부했습니다. [#21258](https://github.com/ClickHouse/ClickHouse/pull/21258) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Kafka의 다양한 압축 방식에 대한 테스트를 추가했습니다. [#21111](https://github.com/ClickHouse/ClickHouse/pull/21111) ([filimonov](https://github.com/filimonov)).
* test\_storage\_kerberized\_hdfs 테스트에서 발생하던 포트 충돌을 수정했습니다. [#19974](https://github.com/ClickHouse/ClickHouse/pull/19974) ([Ilya Yatsishin](https://github.com/qoega)).
* 통합 테스트에서 Docker 시작에 실패하면 `stdout` 및 `stderr`를 로그에 출력하도록 했습니다. 이 PR 이전에는 이 경우 오류 메시지가 매우 짧아 문제를 조사하는 데 도움이 되지 않았습니다. [#20631](https://github.com/ClickHouse/ClickHouse/pull/20631) ([Vitaly Baranov](https://github.com/vitlibar)).

<div id="clickhouse-release-212">
  ## ClickHouse 21.2 릴리스
</div>

<div id="clickhouse-release-v21228-stable-2021-02-07">
  ### ClickHouse 릴리스 v21.2.2.8-안정, 2021-02-07
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* 비트 연산 함수(`bitAnd`, `bitOr` 등)는 부동소수점 인수에 사용할 수 없습니다. 이제 명시적으로 정수로 캐스팅해야 합니다. [#19853](https://github.com/ClickHouse/ClickHouse/pull/19853) ([Azat Khuzhin](https://github.com/azat)).
* `lcm`/`gcd`는 부동소수점 인수에 사용할 수 없도록 했습니다. [#19532](https://github.com/ClickHouse/ClickHouse/pull/19532) ([Azat Khuzhin](https://github.com/azat)).
* `OPTIMIZE TABLE`/머지에 대한 메모리 추적을 수정했습니다. `OPTIMIZE TABLE`/머지에 쿼리 메모리 제한과 샘플링이 반영되도록 했습니다. [#18772](https://github.com/ClickHouse/ClickHouse/pull/18772) ([Azat Khuzhin](https://github.com/azat)).
* 부동소수점 컬럼은 파티션 키로 사용할 수 없도록 했습니다. [#18421](https://github.com/ClickHouse/ClickHouse/issues/18421#event-4147046255)을 참조하십시오. [#18464](https://github.com/ClickHouse/ClickHouse/pull/18464) ([hexiaoting](https://github.com/hexiaoting)).
* 유형 정의에서 괄호를 과도하게 사용하는 방식은 더 이상 지원되지 않습니다. 예시: `Array((UInt8))`.

<div id="new-feature-3">
  #### 새 기능
</div>

* `PostgreSQL` 테이블 엔진이 추가되었습니다(select 및 삽입을 모두 지원하며, 다차원 배열도 지원). `PostgreSQL` 테이블 함수도 추가되었습니다. `PostgreSQL` 딕셔너리 소스가 추가되었습니다. `PostgreSQL` 데이터베이스 엔진이 추가되었습니다. [#18554](https://github.com/ClickHouse/ClickHouse/pull/18554) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 데이터 타입 `Nested`가 이제 임의 깊이의 중첩을 지원합니다. `Array`의 `size0`, `Nullable`의 `null`, `Tuple` 요소 이름과 같은 복합 타입의 서브컬럼이 도입되어, 전체 컬럼을 읽지 않고도 읽을 수 있습니다. [#17310](https://github.com/ClickHouse/ClickHouse/pull/17310) ([Anton Popov](https://github.com/CurtizJ)).
* `FlatDictionary`, `HashedDictionary`, `ComplexKeyHashedDictionary`, `DirectDictionary`, `ComplexKeyDirectDictionary`, `RangeHashedDictionary`에 대한 `Nullable` 지원이 추가되었습니다. [#18236](https://github.com/ClickHouse/ClickHouse/pull/18236) ([Maksim Kita](https://github.com/kitaisreal)).
* DDL worker 큐에 있는 쿼리를 표시하는 `system.distributed_ddl_queue`라는 새 테이블이 추가되었습니다. [#17656](https://github.com/ClickHouse/ClickHouse/pull/17656) ([Bharat Nallan](https://github.com/bharatnc)).
* LDAP 사용자 디렉터리의 사용자에 대해 LDAP 그룹 이름과 일반적인 속성 값을 로컬 역할에 매핑할 수 있도록 지원이 추가되었습니다. [#17211](https://github.com/ClickHouse/ClickHouse/pull/17211) ([Denis Glazachev](https://github.com/traceon)).
* 테이블 함수 `cluster`에 대한 삽입을 지원하며, 테이블 함수 `remote` 및 `cluster` 모두에서 세그먼트 분할 키를 지정해 데이터를 노드 간에 분산할 수 있도록 지원합니다. [#16752](https://github.com/ClickHouse/ClickHouse/issues/16752)를 해결했습니다. [#18264](https://github.com/ClickHouse/ClickHouse/pull/18264) ([flynn](https://github.com/ucasFL)).
* XML 문자를 디코딩하기 위한 함수 `decodeXMLComponent`를 추가했습니다. 예시: `SELECT decodeXMLComponent('Hello,&quot;world&quot;!')` [#17659](https://github.com/ClickHouse/ClickHouse/issues/17659). [#18542](https://github.com/ClickHouse/ClickHouse/pull/18542) ([nauta](https://github.com/nautaa)).
* `parseDateTimeBestEffortUSOrZero`, `parseDateTimeBestEffortUSOrNull` 함수가 추가되었습니다. [#19712](https://github.com/ClickHouse/ClickHouse/pull/19712) ([Maksim Kita](https://github.com/kitaisreal)).
* `sign` 수학 함수가 추가되었습니다. [#19527](https://github.com/ClickHouse/ClickHouse/pull/19527) ([flynn](https://github.com/ucasFL)).
* 사용된 기능(함수, 테이블 엔진 등) 정보를 system.query\_log에 추가합니다. [#18495](https://github.com/ClickHouse/ClickHouse/issues/18495). [#19371](https://github.com/ClickHouse/ClickHouse/pull/19371) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 함수 `formatDateTime`이 날짜를 분기로 포맷하는 `%Q` 수정자를 지원합니다. [#19224](https://github.com/ClickHouse/ClickHouse/pull/19224) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* 실행 UI에서 MetaKey+Enter 단축키를 지원합니다. [#19012](https://github.com/ClickHouse/ClickHouse/pull/19012) ([sundyli](https://github.com/sundy-li)).
* 맵 데이터 타입을 위한 세 가지 함수가 추가되었습니다: 1. `mapContains(map, key)`는 `map.keys`에 두 번째 매개변수인 `key`가 포함되어 있는지 확인합니다. 2. `mapKeys(map)`는 모든 키를 배열 형식으로 반환합니다. 3. `mapValues(map)`는 모든 값을 배열 형식으로 반환합니다. [#18788](https://github.com/ClickHouse/ClickHouse/pull/18788) ([hexiaoting](https://github.com/hexiaoting)).
* [#18494](https://github.com/ClickHouse/ClickHouse/issues/18494)와 관련해 `log_comment` 설정이 추가되었습니다. [#18549](https://github.com/ClickHouse/ClickHouse/pull/18549) ([Zijie Lu](https://github.com/TszKitLo40)).
* `argMin` 및 `argMax` 함수에 튜플 형태의 인수 지원을 추가했습니다. [#17359](https://github.com/ClickHouse/ClickHouse/pull/17359) ([Ildus Kurbangaliev](https://github.com/ildus)).
* `EXISTS VIEW` 구문을 지원합니다. [#18552](https://github.com/ClickHouse/ClickHouse/pull/18552) ([Du Chuan](https://github.com/spongedu)).
* `SELECT ALL` 구문을 추가했습니다. [#18706](https://github.com/ClickHouse/ClickHouse/issues/18706)을 해결했습니다. [#18723](https://github.com/ClickHouse/ClickHouse/pull/18723) ([flynn](https://github.com/ucasFL)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* `stat` syscall 수를 줄여 파트 제거 속도를 높였습니다. 이는 예전에 있던 최적화를 다시 적용한 것입니다. 또한 `IDisk` 인터페이스를 더 안전하게 개선했습니다. 이 변경으로 [#19065](https://github.com/ClickHouse/ClickHouse/issues/19065)가 해결되었습니다. [#19086](https://github.com/ClickHouse/ClickHouse/pull/19086) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `WITH` 구문에서 선언한 별칭이 인덱스 분석에 올바르게 사용되도록 했습니다. 이제 `WITH column AS alias SELECT ... WHERE alias = ...`와 같은 쿼리에서도 인덱스를 사용할 수 있습니다. [#18896](https://github.com/ClickHouse/ClickHouse/pull/18896) ([Amos Bird](https://github.com/amosbird)).
* `optimize_alias_column_prediction`을 추가했습니다(기본적으로 활성화됨). 이 설정은 다음을 수행합니다. - 파티션 프루닝과 보조 인덱스를 사용한 데이터 스키핑 시 WHERE 절의 별칭 컬럼을 반영합니다. - `optimize_trivial_count`를 위한 단순 count 쿼리에서 WHERE 절의 별칭 컬럼을 반영합니다. - `optimize_aggregation_in_order`/`optimize_read_in_order`를 위한 GROUP BY/ORDER BY에서 별칭 컬럼을 반영합니다. [#16995](https://github.com/ClickHouse/ClickHouse/pull/16995) ([sundyli](https://github.com/sundy-li)).
* 집계 함수 `sum`의 속도를 높였습니다. 이 개선은 합성 벤치마크에서만 눈에 띄며, 실용성은 크지 않습니다. [#19216](https://github.com/ClickHouse/ClickHouse/pull/19216) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* libc++를 업데이트하고 더 나은 성능을 위해 다른 ABI를 사용하도록 했습니다. [#18914](https://github.com/ClickHouse/ClickHouse/pull/18914) ([Danila Kutenin](https://github.com/danlark1)).
* 논리적으로 동등한 경우 `sumIf()` 및 `sum(if())` 함수를 `countIf()` 함수로 재작성합니다. [#17041](https://github.com/ClickHouse/ClickHouse/pull/17041) ([flynn](https://github.com/ucasFL)).
* `s3_max_connections` 설정으로 제어되는 S3 연결 풀을 사용합니다. [#13405](https://github.com/ClickHouse/ClickHouse/pull/13405) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 공간 절약을 위해 문자열 컬럼을 더 잘 압축할 수 있는 zstd long 옵션 지원을 추가했습니다. [#17184](https://github.com/ClickHouse/ClickHouse/pull/17184) ([ygrek](https://github.com/ygrek)).
* 각 연결마다 구성에 접근하던 동작을 제거해 서버 지연 시간을 약간 개선했습니다. [#19863](https://github.com/ClickHouse/ClickHouse/pull/19863) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Buffer` 엔진의 여러 레이어에서 잠금 경합을 줄였습니다. [#19379](https://github.com/ClickHouse/ClickHouse/pull/19379) ([Azat Khuzhin](https://github.com/azat)).
* 쿼리 계획의 `Filter` 단계를 `Expression + Filter` 쌍으로 분할할 수 있도록 지원합니다. `Expression + Expression` 병합 최적화([#17458](https://github.com/ClickHouse/ClickHouse/issues/17458))와 함께 사용하면 `Filter` 단계 이후 일부 표현식의 실행을 지연시킬 수 있습니다. [#19253](https://github.com/ClickHouse/ClickHouse/pull/19253) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).

<div id="improvement-3">
  #### 개선
</div>

* `SELECT count() FROM table`는 이제 `table`에서 임의의 컬럼 1개만 선택할 수 있어도 실행할 수 있습니다. 이 PR은 [#10639](https://github.com/ClickHouse/ClickHouse/issues/10639)을 수정합니다. [#18233](https://github.com/ClickHouse/ClickHouse/pull/18233) ([Vitaly Baranov](https://github.com/vitlibar)).
* 원격 MySQL server와 통신할 때 문자 집합을 `utf8mb4`로 설정하도록 했습니다. [#19795](https://github.com/ClickHouse/ClickHouse/issues/19795)를 해결합니다. [#19800](https://github.com/ClickHouse/ClickHouse/pull/19800) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `S3` 테이블 함수가 이제 `auto` 압축 모드(자동 감지)를 지원합니다. 이로써 [#18754](https://github.com/ClickHouse/ClickHouse/issues/18754) 문제가 해결되었습니다. [#19793](https://github.com/ClickHouse/ClickHouse/pull/19793) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `formatReadableTimeDelta` 함수에서 무한대 인수를 올바르게 출력합니다. 이전 버전에서는 구현별 정수 값으로 암시적으로 변환되었습니다. [#19791](https://github.com/ClickHouse/ClickHouse/pull/19791) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 테이블 함수 `S3`는 리전을 정확히 확인할 수 없을 경우 글로벌 리전을 사용합니다. 이로써 [#10998](https://github.com/ClickHouse/ClickHouse/issues/10998)가 해결되었습니다. [#19750](https://github.com/ClickHouse/ClickHouse/pull/19750) ([Vladimir Chebotarev](https://github.com/excitoon)).
* 분산 쿼리에서 설정 `async_socket_for_remote`가 활성화된 경우, 테이블에 매우 깊게 중첩된 데이터 타입(예: `Array(Array(Array(...more...)))`)을 사용하면 적어도 디버그 빌드 구성에서는 스택 오버플로우가 발생할 수 있었습니다. 이 변경으로 [#19108](https://github.com/ClickHouse/ClickHouse/issues/19108)가 수정되었습니다. 이 변경에는 경미한 하위 호환성 문제가 있습니다. 이제 타입 정의에서 과도한 괄호는 더 이상 지원되지 않습니다. 예시: `Array((UInt8))`. [#19736](https://github.com/ClickHouse/ClickHouse/pull/19736) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 메시지 브로커(RabbitMQ 및 Kafka)용으로 별도의 풀을 추가했습니다. [#19722](https://github.com/ClickHouse/ClickHouse/pull/19722) ([Azat Khuzhin](https://github.com/azat)).
* 드물게 `max_number_of_merges_with_ttl_in_pool` 제한을 초과하는 문제(TTL이 있는 머지를 더 많이 할당할 수 있음)를 비복제 MergeTree에서 수정했습니다. [#19708](https://github.com/ClickHouse/ClickHouse/pull/19708) ([alesapin](https://github.com/alesapin)).
* 딕셔너리: 속성 구문 분석 중 오류 메시지 개선. [#19678](https://github.com/ClickHouse/ClickHouse/pull/19678) ([Maksim Kita](https://github.com/kitaisreal)).
* 읽기 시 체크섬 검증을 비활성화하는 옵션을 추가했습니다. 프로덕션 환경에서는 절대 사용해서는 안 됩니다. 이를 비활성화해도 어떤 이점도 기대하지 마십시오. 실험과 벤치마크에만 사용할 수 있습니다. 이 설정은 MergeTree 엔진 계열의 테이블에만 적용됩니다. 다른 테이블 엔진에서는 물론 네트워크를 통해 데이터를 수신할 때도 항상 체크섬을 검증합니다. 제 관찰로는 성능 차이가 없거나 0.5% 미만입니다. [#19588](https://github.com/ClickHouse/ClickHouse/pull/19588) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 함수 `multiIf`에서 상수 결과를 지원하도록 했습니다. [#19533](https://github.com/ClickHouse/ClickHouse/pull/19533) ([Maksim Kita](https://github.com/kitaisreal)).
* Map 데이터 유형에서 length/empty/notEmpty 함수를 사용할 수 있도록 했으며, 이 함수들은 Map의 키 개수를 반환합니다. [#19530](https://github.com/ClickHouse/ClickHouse/pull/19530) ([taiyang-li](https://github.com/taiyang-li)).
* `clickhouse-benchmark`에 `--reconnect` 옵션을 추가했습니다. 이 옵션을 지정하면 각 요청 전에 다시 연결합니다. 이는 테스트에 필요합니다. [#19872](https://github.com/ClickHouse/ClickHouse/pull/19872) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `.debug` 파일의 새 위치 사용을 지원합니다. 이 변경으로 [#19348](https://github.com/ClickHouse/ClickHouse/issues/19348) 문제가 수정되었습니다. [#19520](https://github.com/ClickHouse/ClickHouse/pull/19520) ([Amos Bird](https://github.com/amosbird)).
* `toIPv6` 함수가 `IPv4` 주소를 파싱합니다. [#19518](https://github.com/ClickHouse/ClickHouse/pull/19518) ([Bharat Nallan](https://github.com/bharatnc)).
* `system.query_log`, `system.processes` 등에 `http_referer` 필드를 추가했습니다. 이로써 [#19389](https://github.com/ClickHouse/ClickHouse/issues/19389)가 해결되었습니다. [#19390](https://github.com/ClickHouse/ClickHouse/pull/19390) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 더 많은 함수에서 대소문자를 구분하지 않도록 하고 별칭을 추가해 MySQL 호환성을 개선했습니다. [#19387](https://github.com/ClickHouse/ClickHouse/pull/19387) ([Daniil Kondratyev](https://github.com/dankondr)).
* MergeTree 파트 유형(Wide/Compact/InMemory)용 메트릭을 추가했습니다. [#19381](https://github.com/ClickHouse/ClickHouse/pull/19381) ([Azat Khuzhin](https://github.com/azat)).
* 임의의 UID로 Docker를 실행할 수 있도록 합니다. [#19374](https://github.com/ClickHouse/ClickHouse/pull/19374) ([filimonov](https://github.com/filimonov)).
* Pretty 형식에서 `IPv4` 데이터 타입 값의 잘못된 정렬을 수정했습니다. 기존에는 왼쪽이 아니라 오른쪽으로 정렬되었습니다. 이로써 [#19184](https://github.com/ClickHouse/ClickHouse/issues/19184)가 해결되었습니다. [#19339](https://github.com/ClickHouse/ClickHouse/pull/19339) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 재시작 없이 `max_server_memory_usage`를 변경할 수 있게 되었습니다. 이로써 [#18154](https://github.com/ClickHouse/ClickHouse/issues/18154)가 해결되었습니다. [#19186](https://github.com/ClickHouse/ClickHouse/pull/19186) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이전 버전에서는 함수 `bar`가 특정 NaN 인수로 호출될 때 발생하는 예외가 다소 오해의 소지가 있을 수 있었습니다. 이 수정으로 [#19088](https://github.com/ClickHouse/ClickHouse/issues/19088) 문제가 해결되었습니다. [#19107](https://github.com/ClickHouse/ClickHouse/pull/19107) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* clickhouse-server 이미지에서 clickhouse 사용자 및 그룹의 uid / gid를 고정값(101)으로 명시적으로 설정했습니다. [#19096](https://github.com/ClickHouse/ClickHouse/pull/19096) ([filimonov](https://github.com/filimonov)).
* 매우 긴 문자열이 포함된 데이터를 삽입할 때 발생하던 `PeekableReadBuffer: Memory limit exceed` 오류를 수정했습니다. [#18690](https://github.com/ClickHouse/ClickHouse/issues/18690)을 해결합니다. [#18979](https://github.com/ClickHouse/ClickHouse/pull/18979) ([tavplubix](https://github.com/tavplubix)).
* Docker 이미지: clickhouse-server 엔트리포인트가 여러 면에서 개선되었습니다. [#18954](https://github.com/ClickHouse/ClickHouse/pull/18954) ([filimonov](https://github.com/filimonov)).
* 긴 이름을 `?`로 마스킹하지 않고도 쿼리를 정규화할 수 있도록 `normalizeQueryKeepNames`와 `normalizedQueryHashKeepNames`를 추가했습니다. 이를 통해 복잡한 쿼리 로그를 더욱 효과적으로 분석할 수 있습니다. [#18910](https://github.com/ClickHouse/ClickHouse/pull/18910) ([Amos Bird](https://github.com/amosbird)).
* 전송 전에 송신 측에서 분산 배치의 블록별 체크섬을 확인합니다(파일을 두 번 읽지 않고도, 읽는 동안 체크섬이 검증됩니다). 이렇게 하면 송신 측의 잘린 .bin 파일로 인해 수신 측에서 `INSERT`가 멈추는 현상을 방지할 수 있습니다. 또한 배치 `INSERT`를 위해 .bin 파일을 두 번 읽지 않도록 했습니다(이전에는 squashing을 고려해 행 수/바이트 수를 계산하기 위해 필요했지만, 이제 이 정보가 헤더에 포함되며 하위 호환성도 유지됩니다). [#18853](https://github.com/ClickHouse/ClickHouse/pull/18853) ([Azat Khuzhin](https://github.com/azat)).
* 집계 함수 상태를 가진 테이블의 RIGHT 및 FULL JOIN 문제를 수정했습니다. 이전 버전에서는 `cloneResized` 메서드와 관련된 예외가 발생했습니다. [#18818](https://github.com/ClickHouse/ClickHouse/pull/18818) ([templarzq](https://github.com/templarzq)).
* 접두사 기반 S3 엔드포인트 설정이 추가되었습니다. [#18812](https://github.com/ClickHouse/ClickHouse/pull/18812) ([Vladimir Chebotarev](https://github.com/excitoon)).
* bitmapTransform, bitmapSubsetInRange, bitmapSubsetLimit, bitmapContains 함수에서 \[UInt8, UInt16, UInt32, UInt64] 인수 타입을 지원하도록 추가했습니다. 이로써 [#18713](https://github.com/ClickHouse/ClickHouse/issues/18713)이 해결되었습니다. [#18791](https://github.com/ClickHouse/ClickHouse/pull/18791) ([sundyli](https://github.com/sundy-li)).
* CTE(공통 테이블 표현식)에 추가 별칭을 지정할 수 있도록 했습니다. `enable_global_with_statement = 1`일 때 같은 수준의 서브쿼리에도 CSE(공통 서브표현식 제거)가 전파되도록 했습니다. 이로써 [#17378](https://github.com/ClickHouse/ClickHouse/issues/17378)가 수정되었습니다. 이로써 [https://github.com/ClickHouse/ClickHouse/pull/16575#issuecomment-753416235](https://github.com/ClickHouse/ClickHouse/pull/16575#issuecomment-753416235) 도 수정되었습니다. [#18684](https://github.com/ClickHouse/ClickHouse/pull/18684) ([Amos Bird](https://github.com/amosbird)).
* librdkafka를 v1.6.0-RC2로 업데이트했습니다. [#18668](https://github.com/ClickHouse/ClickHouse/issues/18668) 문제를 수정했습니다. [#18671](https://github.com/ClickHouse/ClickHouse/pull/18671) ([filimonov](https://github.com/filimonov)).
* 예기치 않은 예외가 발생할 경우 분산 DDL 쿼리 실행을 담당하는 백그라운드 스레드를 자동으로 재시작합니다. [#17991](https://github.com/ClickHouse/ClickHouse/issues/17991)을 수정합니다. [#18285](https://github.com/ClickHouse/ClickHouse/pull/18285) ([徐炘](https://github.com/weeds085490)).
* S3에서 전역 리전을 활용할 수 있도록 AWS C++ SDK를 업데이트했습니다. [#17870](https://github.com/ClickHouse/ClickHouse/pull/17870) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `LIVE VIEW` 테이블 생성 시 `WITH ... [AND] [PERIODIC] REFRESH [interval_in_sec]` 절 지원이 추가되었습니다. [#14822](https://github.com/ClickHouse/ClickHouse/pull/14822) ([vzakaznikov](https://github.com/vzakaznikov)).
* 이전 구문으로 생성된 `MergeTree` 테이블에서는 `MODIFY TTL` 쿼리가 제한됩니다. 이전에는 이 쿼리가 성공하는 것처럼 보였지만 실제로는 아무런 효과가 없었습니다. [#19064](https://github.com/ClickHouse/ClickHouse/pull/19064) ([Anton Popov](https://github.com/CurtizJ)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 상수 인수를 사용하는 이항 함수의 인덱스 분석을 수정해 잘못된 쿼리 결과가 발생하던 문제를 해결했습니다. 이 수정으로 [#18364](https://github.com/ClickHouse/ClickHouse/issues/18364)가 해결되었습니다. [#18373](https://github.com/ClickHouse/ClickHouse/pull/18373) ([Amos Bird](https://github.com/amosbird)).
* `dictGet()`를 포함한 기본 표현식이 있는 테이블로 서버를 시작할 때 발생하던 문제를 수정했습니다. 이제 딕셔너리를 로드하지 않아도 `dictGet()`의 반환 유형을 확인할 수 있습니다. [#19805](https://github.com/ClickHouse/ClickHouse/pull/19805) ([Vitaly Baranov](https://github.com/vitlibar)).
* `if` 함수에서 then/else 분기 결과의 `Tuple` 유형을 사용하는 쿼리 실행 후 발생하던 서버 충돌을 수정했습니다. `Tuple` 유형에는 `Array` 또는 다른 복합 유형이 포함되어 있어야 합니다. [#18356](https://github.com/ClickHouse/ClickHouse/issues/18356)을 수정했습니다. [#20133](https://github.com/ClickHouse/ClickHouse/pull/20133) ([alesapin](https://github.com/alesapin)).
* `MaterializeMySQL` (실험적 기능): 여러 테이블을 업데이트하는 SQL 문의 복제 문제를 수정했습니다. [#20066](https://github.com/ClickHouse/ClickHouse/pull/20066) ([Håvard Kvålen](https://github.com/havardk)).
* 초기화 스크립트 실행 중 docker에서 발생하는 "Connection refused"를 방지합니다. [#20012](https://github.com/ClickHouse/ClickHouse/pull/20012) ([filimonov](https://github.com/filimonov)).
* `EmbeddedRocksDB`는 실험적 스토리지입니다. 적절한 타입 검사가 이루어지지 않던 문제를 수정했습니다. 코드를 단순화했습니다. 이 변경으로 [#19967](https://github.com/ClickHouse/ClickHouse/issues/19967)가 해결되었습니다. [#19972](https://github.com/ClickHouse/ClickHouse/pull/19972) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 인수 타입이 `Nullable(T)`이고 Int32를 제외한 다른 정수형 타입일 때 함수 `fromModifiedJulianDay`에서 발생하는 세그폴트를 수정했습니다. [#19959](https://github.com/ClickHouse/ClickHouse/pull/19959) ([PHO](https://github.com/depressed-pho)).
* 이전 버전에서 함수 `greatCircleAngle`는 부정확한 결과를 반환했습니다. 이로써 [#19769](https://github.com/ClickHouse/ClickHouse/issues/19769)가 해결되었습니다. [#19789](https://github.com/ClickHouse/ClickHouse/pull/19789) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 데이터 손상 이후 일부 복제된 작업(예: mutation)이 일부 파트를 처리하지 못하는 드문 버그를 수정했습니다. [#19593](https://github.com/ClickHouse/ClickHouse/issues/19593)를 해결합니다. [#19702](https://github.com/ClickHouse/ClickHouse/pull/19702) ([alesapin](https://github.com/alesapin)).
* `ON CLUSTER` 쿼리를 실행하는 백그라운드 스레드가 삭제된 복제된 테이블이 어떤 작업을 수행하기를 기다리다가 멈추는 문제가 있었습니다. 수정되었습니다. [#19684](https://github.com/ClickHouse/ClickHouse/pull/19684) ([yiguolei](https://github.com/yiguolei)).
* 컬럼 설명이 잘못 역직렬화되던 문제를 수정했습니다. 이로 인해 이름이 `\`인 컬럼이 있는 테이블(table)에 INSERT할 수 없었습니다. [#19479](https://github.com/ClickHouse/ClickHouse/pull/19479) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 파일 중 하나에 빈 데이터 블록이 있으면 분산 배치를 손상된 것으로 표시합니다. [#19449](https://github.com/ClickHouse/ClickHouse/pull/19449) ([Azat Khuzhin](https://github.com/azat)).
* `DROP/DETACH/REPLACE/MOVE PARTITION` 이후 mutation이 멈출 수 있는 매우 드문 버그를 수정했습니다. 이 문제는 대부분의 경우 [#15537](https://github.com/ClickHouse/ClickHouse/issues/15537)에서 부분적으로 수정되었습니다. [#19443](https://github.com/ClickHouse/ClickHouse/pull/19443) ([tavplubix](https://github.com/tavplubix)).
* 발생 가능한 오류 `Extremes transform was already added to pipeline`를 수정했습니다. [#14100](https://github.com/ClickHouse/ClickHouse/issues/14100). [#19430](https://github.com/ClickHouse/ClickHouse/pull/19430) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 0이 아닌 기본값(예: 일부 Enum)을 갖는 JOIN 타입의 기본값 처리를 수정했습니다. [#18197](https://github.com/ClickHouse/ClickHouse/issues/18197)를 해결합니다. [#19360](https://github.com/ClickHouse/ClickHouse/pull/19360) ([vdimir](https://github.com/vdimir)).
* EOF에서 분산 전송용 mark file을 손상된 것으로 표시하지 않도록 했습니다. [#19290](https://github.com/ClickHouse/ClickHouse/pull/19290) ([Azat Khuzhin](https://github.com/azat)).
* `async_socket_for_remote`의 파이프 fd 누수를 수정했습니다. [#19153](https://github.com/ClickHouse/ClickHouse/pull/19153) ([Azat Khuzhin](https://github.com/azat)).
* 파일에서 `ORC` 포맷을 무한히 읽는 문제를 수정했습니다([#10580](https://github.com/ClickHouse/ClickHouse/issues/10580)에서 도입됨). [#19095](https://github.com/ClickHouse/ClickHouse/issues/19095)를 해결했습니다. [#19134](https://github.com/ClickHouse/ClickHouse/pull/19134) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 마크 크기가 고정된 세분화 수준보다 커질 수 있는 MergeTree 데이터 작성기 문제를 수정했습니다. [#18913](https://github.com/ClickHouse/ClickHouse/issues/18913)을 수정합니다. [#19123](https://github.com/ClickHouse/ClickHouse/pull/19123) ([alesapin](https://github.com/alesapin)).
* ClickHouse가 `LowCardinality(Nullable(...))`에서 압축 코덱을 읽지 못하고 `Attempt to read after EOF` 예외를 발생시키던 시작 시 버그를 수정했습니다. [#18340](https://github.com/ClickHouse/ClickHouse/issues/18340)을 해결합니다. [#19101](https://github.com/ClickHouse/ClickHouse/pull/19101) ([alesapin](https://github.com/alesapin)).
* `tupleHammingDistance` 구현을 단순화했습니다. 길이가 같은 모든 튜플을 지원합니다. [#19029](https://github.com/ClickHouse/ClickHouse/issues/19029)를 수정했습니다. [#19084](https://github.com/ClickHouse/ClickHouse/pull/19084) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `groupUniqArray`가 Enum 유형의 인수에 대해 올바른 유형을 반환하도록 수정했습니다. 이로써 [#17875](https://github.com/ClickHouse/ClickHouse/issues/17875)가 해결되었습니다. [#19019](https://github.com/ClickHouse/ClickHouse/pull/19019) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `LowCardinality` 인수와 함께 함수 `ignore`를 사용할 때 발생할 수 있는 오류 `Expected single dictionary argument for function`를 수정했습니다. [#14275](https://github.com/ClickHouse/ClickHouse/issues/14275)를 해결했습니다. [#19016](https://github.com/ClickHouse/ClickHouse/pull/19016) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `TinyLog` 엔진을 사용하는 테이블에 `LowCardinality` 컬럼을 삽입할 때 발생하던 문제를 수정했습니다. 이 변경으로 [#18629](https://github.com/ClickHouse/ClickHouse/issues/18629)가 해결되었습니다. [#19010](https://github.com/ClickHouse/ClickHouse/pull/19010) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* JOIN의 사소한 문제를 수정했습니다. Join이 const 컬럼을 구체화하려고 시도하지만, 코드의 다른 부분에서는 이러한 컬럼이 그대로 남아 있기를 기대합니다. [#18982](https://github.com/ClickHouse/ClickHouse/pull/18982) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 최적화가 항상 올바르게 작동하는 것은 아니므로 `optimize_move_functions_out_of_any`를 비활성화합니다. 이 변경으로 [#18051](https://github.com/ClickHouse/ClickHouse/issues/18051)이 해결됩니다. 이 변경으로 [#18973](https://github.com/ClickHouse/ClickHouse/issues/18973)이 해결됩니다. [#18981](https://github.com/ClickHouse/ClickHouse/pull/18981) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 쿼리 계획의 `Expression` 단계가 병합될 때 발생할 수 있는 `QueryPipeline stream: different number of columns` 예외를 수정했습니다. [#18190](https://github.com/ClickHouse/ClickHouse/issues/18190)을 해결합니다. [#18980](https://github.com/ClickHouse/ClickHouse/pull/18980) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 종료 시 매우 드물게 발생하는 데드락을 수정했습니다. [#18977](https://github.com/ClickHouse/ClickHouse/pull/18977) ([tavplubix](https://github.com/tavplubix)).
* server의 메모리가 부족할 때 드물게 발생하던 충돌을 수정했습니다. [#18976](https://github.com/ClickHouse/ClickHouse/pull/18976) ([tavplubix](https://github.com/tavplubix)).
* `ALTER TABLE ... DROP PART 'part_name'` 쿼리가 전체 파티션의 모든 중복 제거 블록을 삭제하는 잘못된 동작을 수정했습니다. [#18874](https://github.com/ClickHouse/ClickHouse/issues/18874)를 수정합니다. [#18969](https://github.com/ClickHouse/ClickHouse/pull/18969) ([alesapin](https://github.com/alesapin)).
* 이슈 [#18894](https://github.com/ClickHouse/ClickHouse/issues/18894)를 수정했습니다. 긴 컬럼 별칭(alias)(`table.column` 형식으로, 보통 Looker와 같은 BI 도구에서 자동 생성됨)이 긴 테이블 이름과 같을 때 예외가 발생하지 않도록 검사를 추가했습니다. [#18968](https://github.com/ClickHouse/ClickHouse/pull/18968) ([Daniel Qin](https://github.com/mathfool)).
* `Task was not found in task queue` 오류를 수정했습니다(원격 쿼리에서만 발생 가능하며, `async_socket_for_remote = 1`인 경우). [#18964](https://github.com/ClickHouse/ClickHouse/pull/18964) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 일부 이스케이프된 텍스트가 포함된 mutation(예: `ALTER ... UPDATE e = CAST('foo', 'Enum8(\'foo\' = 1')`)의 직렬화가 잘못되던 버그를 수정했습니다. [#18878](https://github.com/ClickHouse/ClickHouse/issues/18878)를 해결했습니다. [#18944](https://github.com/ClickHouse/ClickHouse/pull/18944) ([alesapin](https://github.com/alesapin)).
* ATTACH PARTITION은 뮤테이션을 초기화합니다. [#18804](https://github.com/ClickHouse/ClickHouse/issues/18804). [#18935](https://github.com/ClickHouse/ClickHouse/pull/18935) ([fastio](https://github.com/fastio)).
* `bitmapOrCardinality`에서 널 포인터 역참조가 발생할 수 있는 문제를 수정했습니다. 이로써 [#18911](https://github.com/ClickHouse/ClickHouse/issues/18911)이 해결되었습니다. [#18912](https://github.com/ClickHouse/ClickHouse/pull/18912) ([sundyli](https://github.com/sundy-li)).
* `Nullable(String)`에서 `Nullable(Decimal(P, S))`로 `NULL`을 `CAST`하려고 할 때 발생하던 `Attempt to read after eof` 오류를 수정했습니다. 이제 함수 `CAST`는 널 허용 문자열에서 decimal을 파싱할 수 없으면 `NULL`을 반환합니다. [#7690](https://github.com/ClickHouse/ClickHouse/issues/7690)을 해결했습니다. [#18718](https://github.com/ClickHouse/ClickHouse/pull/18718) ([Winter Zhang](https://github.com/zhang2014)).
* MySQL engine의 데이터 타입 변환 문제를 해결했습니다. [#18124](https://github.com/ClickHouse/ClickHouse/pull/18124) ([bo zeng](https://github.com/mis98zb)).
* `select`만 실행할 때 clickhouse-client에서 발생하는 abort 예외를 수정했습니다. [#19790](https://github.com/ClickHouse/ClickHouse/pull/19790) ([taiyang-li](https://github.com/taiyang-li)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* CI에서 [SQLancer](https://twitter.com/RiggerManuel/status/1352345625480884228)(논리 SQL 퍼저)를 실행하도록 했습니다. [#19006](https://github.com/ClickHouse/ClickHouse/pull/19006) ([Ilya Yatsishin](https://github.com/qoega)).
* 쿼리 퍼저가 새로 추가된 테스트를 더 폭넓게 퍼징하도록 했습니다. 이로써 [#18916](https://github.com/ClickHouse/ClickHouse/issues/18916)이 해결됩니다. [#19185](https://github.com/ClickHouse/ClickHouse/pull/19185) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 더 나은 퍼징을 위해 [Big List of Naughty Strings](https://github.com/minimaxir/big-list-of-naughty-strings/)와 통합했습니다. [#19480](https://github.com/ClickHouse/ClickHouse/pull/19480) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* MSan으로 실행되는 통합 테스트를 추가했습니다. [#18974](https://github.com/ClickHouse/ClickHouse/pull/18974) ([alesapin](https://github.com/alesapin)).
* cyrus-sasl 및 musl의 MemorySanitizer 오류를 수정했습니다. [#19821](https://github.com/ClickHouse/ClickHouse/pull/19821) ([Ilya Yatsishin](https://github.com/qoega)).
* `positionCaseInsensitiveUTF8` 함수에서 인수 부족 검사 시 address sanitizer가 트리거되던 문제를 수정했습니다. [#19720](https://github.com/ClickHouse/ClickHouse/pull/19720) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 통합 테스트에서 docker-compose용 --project-directory를 제거했습니다. Docker 컨테이너의 로그 포맷도 수정했습니다. [#19706](https://github.com/ClickHouse/ClickHouse/pull/19706) ([Ilya Yatsishin](https://github.com/qoega)).
* 통합 테스트용 macros.xml을 더 쉽게 생성할 수 있도록 했습니다. dicttoxml의 과도한 로깅도 더 이상 발생하지 않습니다. dicttoxml 프로젝트는 5년 넘게 활발히 유지보수되지 않았습니다. [#19697](https://github.com/ClickHouse/ClickHouse/pull/19697) ([Ilya Yatsishin](https://github.com/qoega)).
* 환경 변수 `CLICKHOUSE_WATCHDOG_ENABLE`로 watchdog를 명시적으로 활성화하거나 비활성화할 수 있도록 했습니다. 기본적으로 server가 터미널에 연결되어 있지 않으면 활성화됩니다. [#19522](https://github.com/ClickHouse/ClickHouse/pull/19522) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* arm64에서 Kafka 지원을 포함해 ClickHouse를 빌드할 수 있도록 했습니다. [#19369](https://github.com/ClickHouse/ClickHouse/pull/19369) ([filimonov](https://github.com/filimonov)).
* ssl 없이 librdkafka를 빌드할 수 있도록 했습니다. [#19337](https://github.com/ClickHouse/ClickHouse/pull/19337) ([filimonov](https://github.com/filimonov)).
* FreeBSD 빌드에서 Kafka 입력을 복원했습니다. [#18924](https://github.com/ClickHouse/ClickHouse/pull/18924) ([Alexandre Snarskii](https://github.com/snar)).
* 테이블 함수 `VALUES`에서 발생할 수 있는 nullptr 역참조 문제를 수정했습니다. [#19357](https://github.com/ClickHouse/ClickHouse/pull/19357) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `arrayElement` 함수, `substring`, `arraySum`에서 UBSan 보고가 발생하지 않도록 했습니다. [#19305](https://github.com/ClickHouse/ClickHouse/issues/19305)를 수정했습니다. [#19287](https://github.com/ClickHouse/ClickHouse/issues/19287)를 수정했습니다. 이로써 [#19336](https://github.com/ClickHouse/ClickHouse/issues/19336)이 해결됩니다. [#19347](https://github.com/ClickHouse/ClickHouse/pull/19347) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="clickhouse-release-211">
  ## ClickHouse 릴리스 21.1
</div>

<div id="clickhouse-release-v211332-stable-2021-02-03">
  ### ClickHouse 릴리스 v21.1.3.32-안정, 2021-02-03
</div>

<div id="bug-fixes">
  #### 버그 수정
</div>

* BloomFilter 인덱스 크래시 수정. [#19757](https://github.com/ClickHouse/ClickHouse/issues/19757)를 해결했습니다. [#19884](https://github.com/ClickHouse/ClickHouse/pull/19884) ([Maksim Kita](https://github.com/kitaisreal)).
* 프레디케이트를 union distinct 서브쿼리에 푸시다운할 때 발생하던 크래시를 수정했습니다. 이 변경으로 [#19855](https://github.com/ClickHouse/ClickHouse/issues/19855)가 해결됩니다. [#19861](https://github.com/ClickHouse/ClickHouse/pull/19861) ([Amos Bird](https://github.com/amosbird)).
* UInt8 값이 127보다 큰 경우의 필터링을 수정했습니다. [#19799](https://github.com/ClickHouse/ClickHouse/pull/19799) ([Anton Popov](https://github.com/CurtizJ)).
* 이전 버전에서는 함수 `arrayEnumerateUniq`에 비정상적인 인수가 전달될 경우 충돌이 발생하거나 무한 루프에 빠질 수 있었습니다. 이로써 [#19787](https://github.com/ClickHouse/ClickHouse/issues/19787)가 해결되었습니다. [#19788](https://github.com/ClickHouse/ClickHouse/pull/19788) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 산술 타입과 String 타입 간의 정확한 비교를 사용할 때 발생하던 스택 오버플로우를 수정했습니다. [#19773](https://github.com/ClickHouse/ClickHouse/pull/19773) ([tavplubix](https://github.com/tavplubix)).
* 중첩된 컬럼 이름이 `WHERE` 또는 `PREWHERE`에서 사용될 때 발생하던 크래시를 수정했습니다. [#19755](https://github.com/ClickHouse/ClickHouse/issues/19755)를 해결한 변경입니다. [#19763](https://github.com/ClickHouse/ClickHouse/pull/19763) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `bitmapAndnot` 함수의 세그멘테이션 폴트를 수정했습니다. [#19668](https://github.com/ClickHouse/ClickHouse/issues/19668)를 수정했습니다. [#19713](https://github.com/ClickHouse/ClickHouse/pull/19713) ([Maksim Kita](https://github.com/kitaisreal)).
* 큰 정수와 관련된 일부 함수에서 세그멘테이션 오류가 발생할 수 있습니다. 큰 정수 기능은 실험적 기능입니다. 이 변경으로 [#19667](https://github.com/ClickHouse/ClickHouse/issues/19667)이 해결되었습니다. [#19672](https://github.com/ClickHouse/ClickHouse/pull/19672) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `LowCardinality` 인수에 대한 `neighbor` 함수의 잘못된 결과 문제를 수정했습니다. [#10333](https://github.com/ClickHouse/ClickHouse/issues/10333). [#19617](https://github.com/ClickHouse/ClickHouse/pull/19617) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 연결 해제 후 Connection에서 CompressedWriteBuffer를 해제한 뒤 다시 사용하는(use-after-free) 문제를 수정했습니다. [#19599](https://github.com/ClickHouse/ClickHouse/pull/19599) ([Azat Khuzhin](https://github.com/azat)).
* `DROP/DETACH TABLE table ON CLUSTER cluster SYNC` 쿼리가 멈출 수 있던 문제가 수정되었습니다. [#19568](https://github.com/ClickHouse/ClickHouse/issues/19568) 문제를 수정했습니다. [#19572](https://github.com/ClickHouse/ClickHouse/pull/19572) ([tavplubix](https://github.com/tavplubix)).
* CREATE DICTIONARY 쿼리의 id 표현식 수정. [#19571](https://github.com/ClickHouse/ClickHouse/pull/19571) ([Maksim Kita](https://github.com/kitaisreal)).
* merge\_tree\_min\_rows\_for\_concurrent\_read/merge\_tree\_min\_bytes\_for\_concurrent\_read가 0/UINT64\_MAX로 설정되었을 때 발생하는 SIGSEGV를 수정했습니다. [#19528](https://github.com/ClickHouse/ClickHouse/pull/19528) ([Azat Khuzhin](https://github.com/azat)).
* `addMonth` 함수가 특별히 조작된 인수로 호출되면 버퍼 오버플로우(메모리 읽기 시)가 발생할 수 있었습니다. 이 수정으로 [#19441](https://github.com/ClickHouse/ClickHouse/issues/19441)을 해결했습니다. 이 수정으로 [#19413](https://github.com/ClickHouse/ClickHouse/issues/19413)도 해결했습니다. [#19472](https://github.com/ClickHouse/ClickHouse/pull/19472) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* IV에 빈 문자열이 전달되면 encrypt/decrypt 함수에서 초기화되지 않은 메모리를 읽을 가능성이 있었습니다. 이로써 [#19391](https://github.com/ClickHouse/ClickHouse/issues/19391)이 해결되었습니다. [#19397](https://github.com/ClickHouse/ClickHouse/pull/19397) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* Uber H3 라이브러리의 잠재적인 버퍼 오버플로우 문제를 수정했습니다. [https://github.com/uber/h3/issues/392를](https://github.com/uber/h3/issues/392를) 참조하십시오. 이 변경으로 [#19219](https://github.com/ClickHouse/ClickHouse/issues/19219)가 해결되었습니다. [#19383](https://github.com/ClickHouse/ClickHouse/pull/19383) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* system.parts \_state 컬럼을 수정했습니다(잘못된 순서 때문에 이 컬럼을 쿼리하면 LOGICAL\_ERROR가 발생하던 문제). [#19346](https://github.com/ClickHouse/ClickHouse/pull/19346) ([Azat Khuzhin](https://github.com/azat)).
* materialized view와 대상 테이블의 구조가 서로 다를 때 집계에서 발생할 수 있는 잘못된 결과 또는 segfault를 수정했습니다. [#18063](https://github.com/ClickHouse/ClickHouse/issues/18063)를 해결했습니다. [#19322](https://github.com/ClickHouse/ClickHouse/pull/19322) ([tavplubix](https://github.com/tavplubix)).
* 오류 `Cannot convert column now64() because it is constant but values of constants are different in source and result`를 수정했습니다. [#7156](https://github.com/ClickHouse/ClickHouse/issues/7156)의 후속 작업입니다. [#19316](https://github.com/ClickHouse/ClickHouse/pull/19316) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 동시 `ALTER` 및 `DROP` 쿼리로 인해 ReplicatedMergeTree 테이블 처리 중 멈출 수 있던 버그를 수정했습니다. [#19237](https://github.com/ClickHouse/ClickHouse/pull/19237) ([alesapin](https://github.com/alesapin)).
* `Template` 또는 `CustomSeparated` 포맷을 사용해 HTTP 인터페이스로 데이터를 삽입할 때 발생하던 `There is no checkpoint` 오류를 수정했습니다. [#19021](https://github.com/ClickHouse/ClickHouse/issues/19021)을 해결했습니다. [#19072](https://github.com/ClickHouse/ClickHouse/pull/19072) ([tavplubix](https://github.com/tavplubix)).
* 결과를 계산할 수 없는 경우 분석 단계에서 서브쿼리의 상수 접기를 비활성화합니다. [#18446](https://github.com/ClickHouse/ClickHouse/pull/18446) ([Azat Khuzhin](https://github.com/azat)).
* `MOVE` 또는 `REPLACE PARTITION` 이후, 드물게는 `DETACH` 또는 `DROP PARTITION` 이후에 존재하지 않는 part를 기다리느라 mutation이 멈춘 상태로 남아 있을 수 있었습니다. 이 문제가 수정되었습니다. [#15537](https://github.com/ClickHouse/ClickHouse/pull/15537) ([tavplubix](https://github.com/tavplubix)).

<div id="clickhouse-release-v211215-stable-2021-01-18">
  ### ClickHouse 릴리스 v21.1.2.15-안정 2021-01-18
</div>

<div id="backward-incompatible-change">
  #### 하위 호환되지 않는 변경 사항
</div>

* 설정 `input_format_null_as_default`가 기본적으로 활성화됩니다. [#17525](https://github.com/ClickHouse/ClickHouse/pull/17525) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* config의 프로필 설정에 대한 제약 조건을 검사합니다. users.xml에 해당 제약 조건을 충족하지 않는 설정이 포함되어 있으면 server가 시작되지 않습니다. [#18486](https://github.com/ClickHouse/ClickHouse/pull/18486) ([tavplubix](https://github.com/tavplubix)).
* 데이터 파트에 영향을 미치는 스토리지 설정(`write_final_mark`, `enable_mixed_granularity_parts`)을 변경하지 못하도록 `ALTER MODIFY SETTING`을 제한합니다. [#18306](https://github.com/ClickHouse/ClickHouse/pull/18306) ([Amos Bird](https://github.com/amosbird)).
* 기본적으로 `insert_quorum_parallel`을 1로 설정합니다. 이는 "sequential" 쿼럼 삽입보다 훨씬 사용하기 편리합니다. 하지만 순차 일관성에 의존하는 경우 이 설정을 다시 0으로 되돌려야 합니다. [#17567](https://github.com/ClickHouse/ClickHouse/pull/17567) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `sumburConsistentHash` 함수를 제거했습니다. 이로써 [#18120](https://github.com/ClickHouse/ClickHouse/issues/18120)이 해결됩니다. [#18656](https://github.com/ClickHouse/ClickHouse/pull/18656) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 집계 함수 `timeSeriesGroupSum`, `timeSeriesGroupRateSum`을 제거했습니다. 지인의 말에 따르면 이 함수들은 한 번도 제대로 동작한 적이 없었기 때문입니다. 이로써 [#16869](https://github.com/ClickHouse/ClickHouse/issues/16869)가 수정됩니다. 이 함수들을 운 좋게 사용하고 있었다면 [feedback@clickhouse.com](mailto:feedback@clickhouse.com)으로 이메일을 보내십시오. [#17423](https://github.com/ClickHouse/ClickHouse/pull/17423) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `toUnixTimestamp(Date())` 사용을 금지했습니다(이전에는 단순히 `Date`의 `UInt16` 표현을 반환했습니다). [#17376](https://github.com/ClickHouse/ClickHouse/pull/17376) ([Azat Khuzhin](https://github.com/azat)).
* `avg` 및 `avgWeighted` 함수에서 확장 정수 타입(`Int128`, `Int256`, `UInt256`)을 사용할 수 있도록 허용합니다. 또한 `avgWeighted` 함수에서 값과 가중치에 서로 다른 타입(정수, decimal, 부동소수점)을 사용할 수 있도록 허용합니다. 이는 하위 호환되지 않는 변경 사항입니다. 이제 `avg` 및 `avgWeighted` 함수는 항상 `Float64`를 반환합니다(문서에 명시된 대로). 이 변경 전에는 `Decimal` 인수의 반환 타입도 `Decimal`이었습니다. [#15419](https://github.com/ClickHouse/ClickHouse/pull/15419) ([Mike](https://github.com/myrrc)).
* 표현식 `toUUID(N)`은 더 이상 동작하지 않습니다. 대신 `toUUID('00000000-0000-0000-0000-000000000000')`를 사용하십시오. 이 변경은 N이 0이 아닐 때 `toUUID(N)`의 결과가 직관적이지 않기 때문에 적용되었습니다.
* "key usage"가 올바르지 않은 SSL 인증서는 거부됩니다. 이전 버전에서는 이런 인증서도 사용할 수 있었습니다. [#19262](https://github.com/ClickHouse/ClickHouse/issues/19262)를 참조하십시오.
* 기본 config에서 substitutions 파일(`/etc/metrika.xml`)에 대한 `incl` 참조가 제거되었습니다(`<remote_servers>`, `<zookeeper>`, `<macros>`, `<compression>`, `<networks>`). substitutions 파일을 사용하고 있었고 이러한 암묵적 참조에 의존했다면, 업데이트 전에 해당 섹션을 `incl="..."` 속성과 함께 추가해 수동으로 명시적으로 다시 설정해야 합니다. [#18740](https://github.com/ClickHouse/ClickHouse/pull/18740) ([alexey-milovidov](https://github.com/alexey-milovidov)).

<div id="new-feature">
  #### 새로운 기능
</div>

* ClickHouse에 gRPC 프로토콜 지원을 구현했습니다. [#15111](https://github.com/ClickHouse/ClickHouse/pull/15111) ([Vitaly Baranov](https://github.com/vitlibar)).
* 여러 ZooKeeper 클러스터를 사용할 수 있도록 했습니다. [#17070](https://github.com/ClickHouse/ClickHouse/pull/17070) ([fastio](https://github.com/fastio)).
* `REPLACE TABLE` 및 `CREATE OR REPLACE TABLE` 쿼리를 구현했습니다. [#18521](https://github.com/ClickHouse/ClickHouse/pull/18521) ([tavplubix](https://github.com/tavplubix)).
* `UNION DISTINCT`를 구현하고, 일반 `UNION` 절은 기본적으로 `UNION DISTINCT`로 처리하도록 했습니다. 또한 이를 `UNION ALL`로 처리하거나 모드를 명시적으로 지정하도록 요구할 수 있는 `union_default_mode` 설정을 추가했습니다. [#16338](https://github.com/ClickHouse/ClickHouse/pull/16338) ([flynn](https://github.com/ucasFL)).
* 함수 `accurateCastOrNull`을 추가했습니다. 이로써 [#10290](https://github.com/ClickHouse/ClickHouse/issues/10290)이 해결되었습니다. `x IN (subquery)` 표현식에 형 변환을 추가했습니다. 이로써 [#10266](https://github.com/ClickHouse/ClickHouse/issues/10266)이 해결되었습니다. [#16724](https://github.com/ClickHouse/ClickHouse/pull/16724) ([Maksim Kita](https://github.com/kitaisreal)).
* IP 딕셔너리에서 `IPv4` / `IPv6` 타입을 직접 지원합니다. [#17571](https://github.com/ClickHouse/ClickHouse/pull/17571) ([vdimir](https://github.com/vdimir)).
* IP 딕셔너리에서 키 조회를 지원합니다. [#18241](https://github.com/ClickHouse/ClickHouse/issues/18241)을 해결했습니다. [#18480](https://github.com/ClickHouse/ClickHouse/pull/18480) ([vdimir](https://github.com/vdimir)).
* 데이터 가져오기 및 내보내기에 `*.zst` 압축/압축 해제 지원이 추가되었습니다. 이제 `file()` 함수에서 `*.zst`를 사용하고, HTTP 클라이언트에서 `Content-encoding: zstd`를 사용할 수 있습니다. 이로써 [#16791 ](https://github.com/ClickHouse/ClickHouse/issues/16791)가 해결되었습니다. [#17144](https://github.com/ClickHouse/ClickHouse/pull/17144) ([Abi Palagashvili](https://github.com/fibersel)).
* `mannWitneyUTest`, `studentTTest`, `welchTTest` 집계 함수를 추가했습니다. `rankCorr`도 일부 리팩터링했습니다. [#16883](https://github.com/ClickHouse/ClickHouse/pull/16883) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `countMatches`/`countMatchesCaseInsensitive` 함수를 추가했습니다. [#17459](https://github.com/ClickHouse/ClickHouse/pull/17459) ([Azat Khuzhin](https://github.com/azat)).
* `countSubstrings()`/`countSubstringsCaseInsensitive()`/`countSubstringsCaseInsensitiveUTF8()`를 구현했습니다(부분 문자열 출현 횟수 계산). [#17347](https://github.com/ClickHouse/ClickHouse/pull/17347) ([Azat Khuzhin](https://github.com/azat)).
* system.query\_log에 사용된 데이터베이스, 테이블, 컬럼 정보를 추가했습니다. `query_kind` 및 `normalized_query_hash` 필드를 추가했습니다. [#17726](https://github.com/ClickHouse/ClickHouse/pull/17726) ([Amos Bird](https://github.com/amosbird)).
* `optimize_on_insert` 설정이 추가되었습니다. 활성화되면, 해당 블록에서 머지가 수행된 경우와 동일한 변환(예: Replacing, Collapsing, Aggregating...)이 INSERT된 데이터 블록에 적용됩니다. 이 설정은 기본적으로 활성화되어 있습니다. 이로 인해 materialized view와 MaterializeMySQL의 동작에 영향을 줄 수 있습니다(자세한 설명 참조). 이 변경으로 [#10683](https://github.com/ClickHouse/ClickHouse/issues/10683)가 해결되었습니다. [#16954](https://github.com/ClickHouse/ClickHouse/pull/16954) ([Kruglov Pavel](https://github.com/Avogar)).
* HDFS용 Kerberos 인증. [#16621](https://github.com/ClickHouse/ClickHouse/pull/16621) ([Ilya Golshtein](https://github.com/ilejn)).
* `SHOW SETTINGS` 문을 지원하여 system.settings의 매개변수를 표시할 수 있습니다. `SHOW CHANGED SETTINGS`와 `LIKE/ILIKE` 절도 지원됩니다. [#18056](https://github.com/ClickHouse/ClickHouse/pull/18056) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* 함수 `position`은 이제 SQL 호환성을 위해 `POSITION(needle IN haystack)` 구문도 지원합니다. 이로써 [#18701](https://github.com/ClickHouse/ClickHouse/issues/18701) 문제가 해결되었습니다. ... [#18779](https://github.com/ClickHouse/ClickHouse/pull/18779) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* 이제 MergeTree 엔진 계열 테이블에 새로운 스토리지 설정 `max_partitions_to_read`가 도입되었습니다. 이 설정은 하나의 쿼리에서 액세스할 수 있는 최대 파티션 수를 제한합니다. 이 제한을 적용하기 위한 사용자 설정 `force_max_partition_limit`도 추가되었습니다. [#18712](https://github.com/ClickHouse/ClickHouse/pull/18712) ([Amos Bird](https://github.com/amosbird)).
* 삽입된 파트에 대한 `query_id` 컬럼을 `system.part_log`에 추가합니다. [#10097](https://github.com/ClickHouse/ClickHouse/issues/10097)를 해결합니다. [#18644](https://github.com/ClickHouse/ClickHouse/pull/18644) ([flynn](https://github.com/ucasFL)).
* 컬럼을 지정한 `CREATE TABLE ... AS SELECT`를 허용합니다. 예시 `CREATE TABLE t1 (x String) ENGINE = Memory AS SELECT 1;`. [#18060](https://github.com/ClickHouse/ClickHouse/pull/18060) ([Maksim Kita](https://github.com/kitaisreal)).
* `arrayMin`, `arrayMax`, `arrayAvg` 집계 함수가 추가되었습니다. [#18032](https://github.com/ClickHouse/ClickHouse/pull/18032) ([Maksim Kita](https://github.com/kitaisreal)).
* `ATTACH TABLE name FROM 'path/to/data/' (col1 Type1, ...` 쿼리를 구현했습니다. 이 쿼리는 지정된 구조로 새 테이블을 생성하고, `user_files` 아래의 지정된 디렉터리에서 테이블 데이터를 연결하여 등록합니다. [#17903](https://github.com/ClickHouse/ClickHouse/pull/17903) ([tavplubix](https://github.com/tavplubix)).
* StorageMemory에 mutation 지원이 추가되었습니다. 이로써 [#9117](https://github.com/ClickHouse/ClickHouse/issues/9117)이 해결되었습니다. [#15127](https://github.com/ClickHouse/ClickHouse/pull/15127) ([flynn](https://github.com/ucasFL)).
* `EXISTS DATABASE name` 구문을 지원합니다. [#18458](https://github.com/ClickHouse/ClickHouse/pull/18458) ([Du Chuan](https://github.com/spongedu)).
* [MySQL](https://github.com/ClickHouse/ClickHouse/compare/master...spongedu:support_is_ipv4?expand=1)처럼 내장 함수 `isIPv4String` 및 `isIPv6String`을 지원합니다. [#18349](https://github.com/ClickHouse/ClickHouse/pull/18349) ([Du Chuan](https://github.com/spongedu)).
* 분산 키가 없어도 여러 세그먼트로 이루어진 분산 테이블에 삽입할 수 있도록 새로운 설정 `insert_distributed_one_random_shard = 1`을 추가했습니다. [#18294](https://github.com/ClickHouse/ClickHouse/pull/18294) ([Amos Bird](https://github.com/amosbird)).
* `min_compress_block_size` 및 `max_compress_block_size` 설정이 MergeTreeSettings에 추가되었습니다. 이 설정은 전역 설정보다 우선순위가 높으며, 설정된 경우 적용됩니다. close [13890](https://github.com/ClickHouse/ClickHouse/issues/13890). [#17867](https://github.com/ClickHouse/ClickHouse/pull/17867) ([flynn](https://github.com/ucasFL)).
* 64비트 Roaring 비트맵 지원이 추가되었습니다. [#17858](https://github.com/ClickHouse/ClickHouse/pull/17858) ([Andy Yang](https://github.com/andyyzh)).
* 중복 검사에 사용할 컬럼 목록을 명시적으로(또는 별표/컬럼 변환기를 통해 암시적으로) 지정할 수 있도록 `OPTIMIZE ... DEDUPLICATE` 구문을 확장했습니다. ... [#17846](https://github.com/ClickHouse/ClickHouse/pull/17846) ([Vasily Nemkov](https://github.com/Enmk)).
* `toModifiedJulianDay`, `fromModifiedJulianDay`, `toModifiedJulianDayOrNull`, `fromModifiedJulianDayOrNull` 함수가 추가되었습니다. 이 함수들은 프로렙틱 그레고리력 날짜와 수정 율리우스일 번호 간 변환을 수행합니다. [#17750](https://github.com/ClickHouse/ClickHouse/pull/17750) ([PHO](https://github.com/depressed-pho)).
* 사용자 지정 TLD 목록을 사용할 수 있도록 기능을 추가했습니다. 함수 `firstSignificantSubdomainCustom`, `cutToFirstSignificantSubdomainCustom`를 추가했습니다. [#17748](https://github.com/ClickHouse/ClickHouse/pull/17748) ([Azat Khuzhin](https://github.com/azat)).
* 네이티브 TCP 인터페이스를 감싸는 `PROXYv1` 프로토콜 지원을 추가했습니다. 프록시가 전달한 IP 주소를 기준으로 쿼터를 적용할 수 있도록 했습니다(`PROXYv1` 주소와 HTTP 인터페이스의 `X-Forwarded-For`에 적용됨). 이는 ClickHouse에 신뢰할 수 있는 프록시(예: CloudFlare)를 통해서만 액세스를 제공하면서도, 원래 IP 주소를 기준으로 사용자 리소스 사용량을 집계하려는 경우에 유용합니다. 이 변경으로 [#17268](https://github.com/ClickHouse/ClickHouse/issues/17268)이 수정되었습니다. [#17707](https://github.com/ClickHouse/ClickHouse/pull/17707) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 clickhouse-client에서 명령을 편집할 때 `EDITOR`를 열 수 있습니다. `Alt-Shift-E`. [#17665](https://github.com/ClickHouse/ClickHouse/pull/17665) ([Amos Bird](https://github.com/amosbird)).
* 문자열을 XML 텍스트 노드 또는 속성에 넣을 때 문자를 이스케이프하는 함수 `encodeXMLComponent`를 추가했습니다. [#17659](https://github.com/ClickHouse/ClickHouse/pull/17659) ([nauta](https://github.com/nautaa)).
* `DETACH TABLE/VIEW ... PERMANENTLY` 구문을 도입하여, 재시작 후 테이블이 자동으로 다시 나타나지 않도록 했습니다(명시적으로 요청한 경우에만 다시 나타납니다). 테이블은 짧은 구문인 ATTACH TABLE을 사용해 다시 attach할 수 있습니다. [#5555](https://github.com/ClickHouse/ClickHouse/issues/5555)를 구현했습니다. [#13850](https://github.com/ClickHouse/ClickHouse/issues/13850)을 수정했습니다. [#17642](https://github.com/ClickHouse/ClickHouse/pull/17642) ([filimonov](https://github.com/filimonov)).
* MergeTree 테이블의 총 행 수, 바이트 수 및 파트 수에 대한 비동기 메트릭을 추가했습니다. 이 수정으로 [#11714](https://github.com/ClickHouse/ClickHouse/issues/11714)를 해결했습니다. [#17639](https://github.com/ClickHouse/ClickHouse/pull/17639) ([flynn](https://github.com/ucasFL)).
* SQL 외부에서 페이지네이션할 수 있도록 `limit` 및 `offset` 설정이 추가되었습니다: [#16176](https://github.com/ClickHouse/ClickHouse/issues/16176) 이 설정은 API를 구축할 때 유용합니다. 이 두 설정은 `select * from (your_original_select_query) t limit xxx offset xxx;`를 추가한 것과 같은 방식으로 SELECT 쿼리에 영향을 줍니다. [#17633](https://github.com/ClickHouse/ClickHouse/pull/17633) ([hexiaoting](https://github.com/hexiaoting)).
* 쿼리를 통해 `SimpleAggregateFunction` 타입을 만들 수 있도록 새로운 집계 함수 combinator인 `-SimpleState`를 추가했습니다. 이는 AggregatingMergeTree 엔진의 MaterializedView를 정의할 때 유용하며, 프로젝션에도 도움이 됩니다. [#16853](https://github.com/ClickHouse/ClickHouse/pull/16853) ([Amos Bird](https://github.com/amosbird)).
* `clickhouse-client`와 `clickhouse-local`에 `queries-file` 매개변수가 추가되었습니다. [#15930](https://github.com/ClickHouse/ClickHouse/pull/15930) ([Maksim Kita](https://github.com/kitaisreal)).
* `clickhouse-benchmark`에 `query` 매개변수를 추가했습니다. [#17832](https://github.com/ClickHouse/ClickHouse/pull/17832) ([Maksim Kita](https://github.com/kitaisreal)).
* `EXPLAIN AST`가 이제 `SELECT`뿐만 아니라 다른 쿼리도 지원합니다. [#18136](https://github.com/ClickHouse/ClickHouse/pull/18136) ([taiyang-li](https://github.com/taiyang-li)).

<div id="experimental-feature">
  #### 실험적 기능
</div>

* 텍스트 n-그램과 shingle의 minHash 및 simHash를 계산하는 함수가 추가되었습니다. 이 함수들은 유사 중복 검색에 사용됩니다. 또한 `bitHammingDistance` 및 `tupleHammingDistance` 함수도 추가되었습니다. [#7649](https://github.com/ClickHouse/ClickHouse/pull/7649) ([flynn](https://github.com/ucasFL)).
* 새로운 데이터 타입 `Map`이 추가되었습니다. [#1841](https://github.com/ClickHouse/ClickHouse/issues/1841)을 참조하십시오. `Map`의 첫 번째 버전은 키와 값에 `String` 타입만 지원합니다. [#15806](https://github.com/ClickHouse/ClickHouse/pull/15806) ([hexiaoting](https://github.com/hexiaoting)).
* ANTLR4 런타임을 기반으로 하고 EBNF 문법에서 생성된 대체 SQL 파서가 구현되었습니다. [#11298](https://github.com/ClickHouse/ClickHouse/pull/11298) ([Ivan](https://github.com/abyss7)).

<div id="performance-improvement">
  #### 성능 개선
</div>

* 메모리 사용량을 줄인 새로운 IP 딕셔너리 구현으로, 일부 경우 성능을 개선하고 버그를 수정했습니다. [#16804](https://github.com/ClickHouse/ClickHouse/pull/16804) ([vdimir](https://github.com/vdimir)).
* 데이터 내보내기용 병렬 포맷팅. [#11617](https://github.com/ClickHouse/ClickHouse/pull/11617) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* LDAP 통합: LDAP 서버 연결 구성에 `verification_cooldown` 매개변수를 추가하여, 성공한 "bind" 시도를 구성 가능한 기간 동안 캐싱할 수 있도록 했습니다. [#15988](https://github.com/ClickHouse/ClickHouse/pull/15988) ([Denis Glazachev](https://github.com/traceon)).
* `clickhouse-local`에 `--no-system-table` 옵션이 추가되어 시스템 테이블 없이 실행할 수 있습니다. 이렇게 하면 시작 시 수십 밀리초가 걸릴 수 있는 `DateLUT` 초기화를 방지할 수 있습니다. [#18899](https://github.com/ClickHouse/ClickHouse/pull/18899) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `windowFunnel` 함수의 성능 향상을 위해 `AggregateFunctionWindowFunnelData`에서 `PODArray`를 `PODArrayWithStackMemory`로 대체했습니다. [#18817](https://github.com/ClickHouse/ClickHouse/pull/18817) ([flynn](https://github.com/ucasFL)).
* 분산 테이블에 동기식 INSERT를 수행할 때 빈 블록을 세그먼트로 전송하지 않도록 했습니다. 이로써 [#14571](https://github.com/ClickHouse/ClickHouse/issues/14571)이 해결되었습니다. [#18775](https://github.com/ClickHouse/ClickHouse/pull/18775) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* StorageMemory 읽기 작업을 최적화했습니다. [#18052](https://github.com/ClickHouse/ClickHouse/pull/18052) ([Maksim Kita](https://github.com/kitaisreal)).
* float를 string으로 변환할 때 ryu 대신 Dragonbox 알고리즘을 사용합니다. 이에 따라 float를 string으로 변환하는 성능이 크게 향상됩니다. [#17831](https://github.com/ClickHouse/ClickHouse/pull/17831) ([Maksim Kita](https://github.com/kitaisreal)).
* `IPv6CIDRToRange` 구현 속도 개선. [#17569](https://github.com/ClickHouse/ClickHouse/pull/17569) ([vdimir](https://github.com/vdimir)).
* `remerge_sort_lowered_memory_bytes_ratio` 설정이 추가되었습니다(리머지 후 메모리 사용량이 이 비율만큼 감소하지 않으면 리머지가 비활성화됩니다). [#17539](https://github.com/ClickHouse/ClickHouse/pull/17539) ([Azat Khuzhin](https://github.com/azat)).
* PK의 `SimpleAggregateFunction(String)`을 사용하는 AggregatingMergeTree의 성능을 개선했습니다. [#17109](https://github.com/ClickHouse/ClickHouse/pull/17109) ([Azat Khuzhin](https://github.com/azat)).
* 이제 `-If` combinator가 디버추얼라이즈되었고, `count`도 올바르게 벡터화되었습니다. 이는 [이 PR](https://github.com/ClickHouse/ClickHouse/pull/17041)에 대한 변경입니다. [#17043](https://github.com/ClickHouse/ClickHouse/pull/17043) ([Amos Bird](https://github.com/amosbird)).
* 매우 많은 `MergeTree` 테이블에 걸친 `Merge` 테이블 읽기 성능을 개선했습니다. [#7748](https://github.com/ClickHouse/ClickHouse/issues/7748)을 수정했습니다. [#16988](https://github.com/ClickHouse/ClickHouse/pull/16988) ([Anton Popov](https://github.com/CurtizJ)).
* `repeat` 함수의 성능을 개선했습니다. [#16937](https://github.com/ClickHouse/ClickHouse/pull/16937) ([satanson](https://github.com/satanson)).
* 부동소수점 파싱 성능이 소폭 개선되었습니다. [#16809](https://github.com/ClickHouse/ClickHouse/pull/16809) ([Maksim Kita](https://github.com/kitaisreal)).
* `OPTIMIZE TABLE ... FINAL`에서 병합된 파티션을 건너뛸 수 있도록 했습니다. [#15939](https://github.com/ClickHouse/ClickHouse/pull/15939) ([Kruglov Pavel](https://github.com/Avogar)).
* 부동소수점 수를 파싱하기 위해 [Daniel Lemire의 fast\_float](https://github.com/lemire/fast_float)와 통합했습니다. [#16787](https://github.com/ClickHouse/ClickHouse/pull/16787) ([Maksim Kita](https://github.com/kitaisreal)). 하지만 아직 ClickHouse의 기존 부동소수점 파서보다 성능이 낮아 활성화되지는 않았습니다.
* max\_distributed\_connections를 수정했습니다(`prefer_localhost_replica = 1` 및 `max_threads != max_distributed_connections`에 영향을 줍니다). [#17848](https://github.com/ClickHouse/ClickHouse/pull/17848) ([Azat Khuzhin](https://github.com/azat)).
* S3로 데이터를 전송할 때 단일/다중 part 업로드를 자동으로 선택합니다. 단일 part 업로드는 새로운 설정 `max_single_part_upload_size`로 제어됩니다. [#17934](https://github.com/ClickHouse/ClickHouse/pull/17934) ([Pavel Kovalenko](https://github.com/Jokser)).
* `PipelineExecutor`에서 비동기 작업을 지원합니다. 원격 쿨리를 위한 비동기 소켓을 초기 지원합니다. [#17868](https://github.com/ClickHouse/ClickHouse/pull/17868) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 컬럼 크기를 알 수 없는 경우에도 compact 파트에서 `optimize_move_to_prewhere` 최적화를 사용할 수 있도록 허용했습니다. [#17330](https://github.com/ClickHouse/ClickHouse/pull/17330) ([Anton Popov](https://github.com/CurtizJ)).

<div id="improvement-3">
  #### 개선
</div>

* `TinyLog` 또는 `Log` 테이블 엔진을 사용하는 테이블에서 자기 자신을 대상으로 INSERT SELECT를 실행할 때 데드락이 발생하는 문제를 방지했습니다. 이로써 [#6802](https://github.com/ClickHouse/ClickHouse/issues/6802)가 해결되었습니다. 이로써 [#18691](https://github.com/ClickHouse/ClickHouse/issues/18691)가 해결되었습니다. 이로써 [#16812](https://github.com/ClickHouse/ClickHouse/issues/16812)가 해결되었습니다. 이로써 [#14570](https://github.com/ClickHouse/ClickHouse/issues/14570)가 해결되었습니다. [#15260](https://github.com/ClickHouse/ClickHouse/pull/15260) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* MySQL처럼 `SHOW CREATE VIEW name` 구문을 지원합니다. [MySQL](https://dev.mysql.com/doc/refman/5.7/en/show-create-view.html). [#18095](https://github.com/ClickHouse/ClickHouse/pull/18095) ([Du Chuan](https://github.com/spongedu)).
* `Decimal * Float` 유형의 모든 쿼리와 그 반대 조합도 허용되며, 집계 쿼리도 포함됩니다(예: `SELECT sum(decimal_field * 1.1)` 또는 `SELECT dec_col * float_col`). 결과 유형은 Float32 또는 Float64입니다. [#18145](https://github.com/ClickHouse/ClickHouse/pull/18145) ([Mike](https://github.com/myrrc)).
* 간소한 Web UI를 개선했습니다: 이력을 추가하고, 공유 기능을 지원하며, 서로 다른 요청 간 경쟁 상태를 방지하고, 요청 처리 중 및 준비 완료 표시기를 추가하고, 파비콘을 추가했으며, textarea에 포커스가 없을 때 Ctrl+Enter 입력을 감지하도록 했습니다. [#17293](https://github.com/ClickHouse/ClickHouse/pull/17293) [#17770](https://github.com/ClickHouse/ClickHouse/pull/17770) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* clickhouse-server가 ZooKeeper 서버에 `close` 요청을 보내지 않던 문제를 수정했습니다. [#16837](https://github.com/ClickHouse/ClickHouse/pull/16837) ([alesapin](https://github.com/alesapin)).
* 메모리 제한이 지나치게 낮은 경우(`max_memory_usage = 1` / `max_untracked_memory = 1`) server의 비정상 종료를 방지했습니다. [#17453](https://github.com/ClickHouse/ClickHouse/pull/17453) ([Azat Khuzhin](https://github.com/azat)).
* 서로 다른 이벤트의 timestamp가 동일한 경우 발생하던 `windowFunnel` 함수의 비결정적 결과를 수정했습니다. [#18884](https://github.com/ClickHouse/ClickHouse/pull/18884) ([Fuwang Hu](https://github.com/fuwhu)).
* Docker: clickhouse-server Docker 이미지에서 clickhouse 사용자 및 그룹의 uid / gid를 고정된 값(101)으로 명시적으로 설정했습니다. [#19096](https://github.com/ClickHouse/ClickHouse/pull/19096) ([filimonov](https://github.com/filimonov)).
* `Distributed` 테이블로의 비동기 INSERT: MergeTree 엔진 계열과 마찬가지로 두 개의 새로운 설정이 추가되었습니다: - `fsync_after_insert` - 삽입할 때마다 fsync를 수행합니다. 삽입 성능이 저하됩니다. - `fsync_directories` - 모든 작업(쓰기, 이름 변경 등) 후 임시 디렉터리(비동기 INSERT에만 사용됨)에 fsync를 수행합니다. [#18864](https://github.com/ClickHouse/ClickHouse/pull/18864) ([Azat Khuzhin](https://github.com/azat)).
* Docker에서 `SYSTEM KILL` 명령이 작동하게 되었습니다. 이로써 [#18847](https://github.com/ClickHouse/ClickHouse/issues/18847)가 해결되었습니다. [#18848](https://github.com/ClickHouse/ClickHouse/pull/18848) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `FETCH PARTITION` 실행 시 zk 경로 내 매크로를 확장합니다. [#18839](https://github.com/ClickHouse/ClickHouse/pull/18839) ([fastio](https://github.com/fastio)).
* 모든 레플리카에 `ALTER TABLE <replicated_table> ON CLUSTER MODIFY SETTING ...`를 적용하십시오. 이러한 ALTER 명령은 복제되지 않기 때문입니다. [#18789](https://github.com/ClickHouse/ClickHouse/pull/18789) ([Amos Bird](https://github.com/amosbird)).
* 컬럼 변환기 `EXCEPT`가 문자열을 정규식 매처로 받을 수 있도록 했습니다. 이로써 [#18685](https://github.com/ClickHouse/ClickHouse/issues/18685)가 해결되었습니다. [#18699](https://github.com/ClickHouse/ClickHouse/pull/18699) ([Amos Bird](https://github.com/amosbird)).
* SummingMergeTree에서 SimpleAggregateFunction 관련 문제를 수정했습니다. 이제 AggregateFunction처럼 동작합니다. 이전 버전에서는 집계 함수와 무관하게 값이 함께 합산되었습니다. 이 수정으로 [#18564](https://github.com/ClickHouse/ClickHouse/issues/18564)가 해결됩니다. [#8052](https://github.com/ClickHouse/ClickHouse/issues/8052). [#18637](https://github.com/ClickHouse/ClickHouse/pull/18637) ([Amos Bird](https://github.com/amosbird)). `SummingMergeTree`에서 `SimpleAggregateFunction`을 사용하는 또 다른 문제도 수정했습니다. 이 수정으로 [#18676](https://github.com/ClickHouse/ClickHouse/issues/18676)가 해결됩니다. [#18677](https://github.com/ClickHouse/ClickHouse/pull/18677) ([Amos Bird](https://github.com/amosbird)).
* 함수 bar의 마지막 인수가 NaN일 때 allocator 내부에서 발생하던 assertion 오류를 수정했습니다. 이제는 단순한 ClickHouse 예외가 발생합니다. 이 변경으로 [#17876](https://github.com/ClickHouse/ClickHouse/issues/17876)가 수정되었습니다. [#18520](https://github.com/ClickHouse/ClickHouse/pull/18520) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 사용성 문제를 수정했습니다. 일부 도구에서 예외 메시지 뒤에 줄바꿈이 없던 문제입니다. [#18444](https://github.com/ClickHouse/ClickHouse/pull/18444) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 프라이머리 키 및 파티션 키 컬럼의 유형을 `LowCardinality(Type)`에서 `Type`으로, 또는 그 반대로 변경할 수 있는 기능을 추가했습니다. 또한 프라이머리 키 컬럼의 유형을 `EnumX `에서 `IntX`로 변경할 수 있는 기능도 추가했습니다. [#5604](https://github.com/ClickHouse/ClickHouse/issues/5604)를 수정했습니다. [#18362](https://github.com/ClickHouse/ClickHouse/pull/18362) ([alesapin](https://github.com/alesapin)).
* `untuple` 필드 접근을 구현했습니다. [#18133](https://github.com/ClickHouse/ClickHouse/issues/18133). [#18309](https://github.com/ClickHouse/ClickHouse/pull/18309) ([hexiaoting](https://github.com/hexiaoting)).
* 중첩 CSV로 직렬화된 배열이 들어 있는 문자열로 표현된 경우, CSV의 배열(Array) 필드를 파싱할 수 있습니다. 예시: `"[""Hello"", ""world"", ""42"""" TV""]"`는 `['Hello', 'world', '42" TV']`로 파싱됩니다. CSV에서 배열을 감싸는 중괄호 없이 문자열 안에 있는 배열도 파싱할 수 있습니다. 예시: `"'Hello', 'world', '42"" TV'"`는 `['Hello', 'world', '42" TV']`로 파싱됩니다. [#18271](https://github.com/ClickHouse/ClickHouse/pull/18271) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* MergeTree 와이드 파트에 대한 적응형 세분화 수준 계산을 개선했습니다. [#18223](https://github.com/ClickHouse/ClickHouse/pull/18223) ([alesapin](https://github.com/alesapin)).
* 이제 Mac에서도 `clickhouse install`이 작동할 수 있게 되었습니다. 문제는 이 플랫폼에 procfs가 없다는 점이었습니다. [#18201](https://github.com/ClickHouse/ClickHouse/pull/18201) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `SHOW ...` 쿼리 구문에 대한 힌트가 개선되었습니다. [#18183](https://github.com/ClickHouse/ClickHouse/pull/18183) ([Du Chuan](https://github.com/spongedu)).
* 배열 집계 함수 `arrayMin`, `arrayMax`, `arraySum`, `arrayAvg`가 `Int128`, `Int256`, `UInt256`를 지원합니다. [#18147](https://github.com/ClickHouse/ClickHouse/pull/18147) ([Maksim Kita](https://github.com/kitaisreal)).
* Set 및 Join의 스토리지 설정에 `disk`를 추가했습니다. [#18112](https://github.com/ClickHouse/ClickHouse/pull/18112) ([Grigory Pervakov](https://github.com/GrigoryPervakov)).
* 접근 제어: 이제 테이블 함수 `merge()`를 사용하려면 데이터를 가져오는 각 테이블에 대해 현재 사용자에게 `SELECT` 권한이 있어야 합니다. 이 PR은 [#16964](https://github.com/ClickHouse/ClickHouse/issues/16964)를 수정합니다. [#18104](https://github.com/ClickHouse/ClickHouse/pull/18104) [#17983](https://github.com/ClickHouse/ClickHouse/pull/17983) ([Vitaly Baranov](https://github.com/vitlibar)).
* 이제 임시 테이블은 생성된 세션에서만 시스템 테이블 `system.tables` 및 `system.columns`에 표시됩니다. 내부 데이터베이스 `_temporary_and_external_tables`는 이제 해당 시스템 테이블에서 숨겨지며, 대신 임시 테이블은 데이터베이스가 비어 있고 `is_temporary` 플래그가 설정된 테이블로 표시됩니다. [#18014](https://github.com/ClickHouse/ClickHouse/pull/18014) ([Vitaly Baranov](https://github.com/vitlibar)).
* 터미널 창 크기 변경 시 clickhouse-client 렌더링 문제를 수정했습니다. [#18009](https://github.com/ClickHouse/ClickHouse/pull/18009) ([Amos Bird](https://github.com/amosbird)).
* 클라이언트가 연결을 종료할 때 발생하는 이벤트의 로그 수준을 Warning에서 Information으로 낮췄습니다. [#18005](https://github.com/ClickHouse/ClickHouse/pull/18005) ([filimonov](https://github.com/filimonov)).
* DiskS3의 파일 시스템에서 비어 있거나 손상된 메타데이터 파일을 강제로 제거합니다. S3는 실험적 기능입니다. [#17935](https://github.com/ClickHouse/ClickHouse/pull/17935) ([Pavel Kovalenko](https://github.com/Jokser)).
* 접근 제어: `allow_introspection_functions=0`은 인트로스펙션 함수의 사용을 금지하지만, 이제 더 이상 해당 함수에 대한 권한 부여를 막지는 않습니다(권한을 부여받은 사용자가 그 권한을 사용하려면 직접 `allow_introspection_functions=1`로 설정해야 합니다). 마찬가지로 `allow_ddl=0`은 DDL 명령의 사용을 금지하지만, 이제 더 이상 해당 명령에 대한 권한 부여를 막지는 않습니다. [#17908](https://github.com/ClickHouse/ClickHouse/pull/17908) ([Vitaly Baranov](https://github.com/vitlibar)).
* 사용성 개선: 컬럼 이름 힌트. [#17112](https://github.com/ClickHouse/ClickHouse/issues/17112). [#17857](https://github.com/ClickHouse/ClickHouse/pull/17857) ([fastio](https://github.com/fastio)).
* 두 개의 머지 테이블이 서로의 데이터를 읽으려고 할 때 진단 정보를 추가합니다. [#17854](https://github.com/ClickHouse/ClickHouse/pull/17854) ([徐炘](https://github.com/weeds085490)).
* ClickHouse Docker image를 사용해 스크립트를 실행할 때 timeout 값을 재정의할 수 있게 했습니다. [#17818](https://github.com/ClickHouse/ClickHouse/pull/17818) ([Guillaume Tassery](https://github.com/YiuRULE)).
* 일부 구성 오류를 방지하기 위해 시스템 로그 테이블의 엔진 정의 문법을 검사합니다. 이 문법 검사는 의미적 검사가 아니므로, 존재하지 않는 컬럼이나 표현식 함수와 같은 오류는 테이블이 생성되기 전까지 발견되지 않을 수 있습니다. [#17739](https://github.com/ClickHouse/ClickHouse/pull/17739) ([Du Chuan](https://github.com/spongedu)).
* 연결이 없더라도 `RabbitMQ` 테이블 초기화 시 예외를 발생시키지 않도록 변경했습니다(백그라운드에서 재연결을 시도합니다). [#17709](https://github.com/ClickHouse/ClickHouse/pull/17709) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Buffer 플러시 시 서버 메모리 제한을 무시하지 않습니다. [#17646](https://github.com/ClickHouse/ClickHouse/pull/17646) ([Azat Khuzhin](https://github.com/azat)).
* use-after-free 오류를 해결하기 위해 ClickHouse-Extras의 패치된 RocksDB 버전으로 전환했습니다. [#17643](https://github.com/ClickHouse/ClickHouse/pull/17643) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 병렬 parsing 시 예외 메시지에 오프셋을 추가했습니다. 이로써 [#17457](https://github.com/ClickHouse/ClickHouse/issues/17457)가 수정되었습니다. [#17641](https://github.com/ClickHouse/ClickHouse/pull/17641) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* INSERT 쿼리 중간에 "Too many parts" 오류가 발생하지 않도록 했습니다. [#17566](https://github.com/ClickHouse/ClickHouse/pull/17566) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* ALTER 쿼리의 UPDATE 문에서 쿼리 매개변수를 사용할 수 있도록 했습니다. [#10976](https://github.com/ClickHouse/ClickHouse/issues/10976)을 수정했습니다. [#17563](https://github.com/ClickHouse/ClickHouse/pull/17563) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 쿼리 난독화기: 식별자 이름으로 일부 SQL 키워드를 사용하지 않도록 했습니다. [#17526](https://github.com/ClickHouse/ClickHouse/pull/17526) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* DDLWorker가 실행한 현재 최대 DDL 엔트리를 서버 메트릭을 통해 내보냅니다. DDLWorker가 중간에 어디선가 멈췄는지 확인하는 데 유용합니다. [#17464](https://github.com/ClickHouse/ClickHouse/pull/17464) ([Amos Bird](https://github.com/amosbird)).
* 모든 서버의 현재 스레드에 대한 비동기 메트릭을 내보냅니다. [이와 같은](https://github.com/ClickHouse-Extras/poco/pull/28) 문제를 추적하는 데 유용합니다. [#17463](https://github.com/ClickHouse/ClickHouse/pull/17463) ([Amos Bird](https://github.com/amosbird)).
* 설정 `asterisk_include_materialized_columns` 및 `asterisk_include_alias_columns`가 활성화되면 와일드카드 쿼리에 MATERIALIZED / ALIAS와 같은 동적 컬럼이 포함됩니다. [#17462](https://github.com/ClickHouse/ClickHouse/pull/17462) ([Ken Chen](https://github.com/chenziliang)).
* `config.xml`에서 `<ttl>` 속성을 사용해 [시스템 로그 테이블](/ko/reference/system-tables/index)의 오래된 항목을 제거할 수 있도록 [TTL](/ko/reference/engines/table-engines/mergetree-family/mergetree#mergetree-table-ttl)을 지정할 수 있습니다. [#17438](https://github.com/ClickHouse/ClickHouse/pull/17438) ([Du Chuan](https://github.com/spongedu)).
* 이제 MySQL 및 PostgreSQL 프로토콜을 통해 서버에 들어오는 쿼리에는 각각 고유한 인터페이스 유형이 부여됩니다(이는 table`system.query_log`의 `interface` 컬럼에서 확인할 수 있습니다). MySQL은 `4`, PostgreSQL은 `5`이며, 이전에 사용되던 `1`은 이제 네이티브 프로토콜에만 사용됩니다. [#17437](https://github.com/ClickHouse/ClickHouse/pull/17437) ([Vitaly Baranov](https://github.com/vitlibar)).
* `INSERT ... SELECT ... SETTINGS` 쿼리의 SETTINGS 절 파싱을 수정했습니다. [#17414](https://github.com/ClickHouse/ClickHouse/pull/17414) ([Azat Khuzhin](https://github.com/azat)).
* RadixSort의 메모리를 올바르게 계산하도록 수정했습니다. [#17412](https://github.com/ClickHouse/ClickHouse/pull/17412) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `Attempt to read after eof` 예외 발생을 방지하기 위해 server의 `receiveHello`에 eof 검사를 추가합니다. [#17365](https://github.com/ClickHouse/ClickHouse/pull/17365) ([Kruglov Pavel](https://github.com/Avogar)).
* bigint 변환 중 발생할 수 있는 스택 오버플로우를 방지합니다. Big integer는 아직 실험적입니다. [#17269](https://github.com/ClickHouse/ClickHouse/pull/17269) ([flynn](https://github.com/ucasFL)).
* 이제 `set` 인덱스가 `GLOBAL IN`에서도 작동합니다. 이로써 [#17232](https://github.com/ClickHouse/ClickHouse/issues/17232) , [#5576](https://github.com/ClickHouse/ClickHouse/issues/5576) 문제가 해결되었습니다. [#17253](https://github.com/ClickHouse/ClickHouse/pull/17253) ([Amos Bird](https://github.com/amosbird)).
* S3 스토리지에 대한 요청의 HTTP 리디렉션 제한(`s3_max_redirects`)을 추가했습니다. [#17220](https://github.com/ClickHouse/ClickHouse/pull/17220) ([ianton-ru](https://github.com/ianton-ru)).
* `-OrNull` combinator를 `-If`, `-Merge`, `-MergeState`, `-State` combinator와 함께 사용할 때는 `-OrNull`을 앞에 배치해야 합니다. [#16935](https://github.com/ClickHouse/ClickHouse/pull/16935) ([flynn](https://github.com/ucasFL)).
* HTTP 프록시와 HTTPS S3 엔드포인트 구성을 지원합니다. [#16861](https://github.com/ClickHouse/ClickHouse/pull/16861) ([Pavel Kovalenko](https://github.com/Jokser)).
* 환경 변수, `~/.aws`, `AssumeRole`을 사용하는 S3 클라이언트에 올바른 authentication이 추가되었습니다. [#16856](https://github.com/ClickHouse/ClickHouse/pull/16856) ([Vladimir Chebotarev](https://github.com/excitoon)).
* OpenTelemetry 스팬을 추가로 더했습니다. 스팬 데이터를 Zipkin으로 내보내는 방법에 대한 예시를 추가했습니다. [#16535](https://github.com/ClickHouse/ClickHouse/pull/16535) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* 캐시 사전: 값을 가져올 때 필요한 콜백과 잠금을 완전히 제거했습니다. 키는 쿼리 수행 중 "찾을 수 없음"과 "만료됨"으로 구분하지 않고 동일한 맵에 저장합니다. [#14958](https://github.com/ClickHouse/ClickHouse/pull/14958) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `fsync_part_directory`/`fsync_after_insert`/`in_memory_parts_insert_sync`가 전혀 작동하지 않던 문제를 수정했습니다(실험적 기능). [#18845](https://github.com/ClickHouse/ClickHouse/pull/18845) ([Azat Khuzhin](https://github.com/azat)).
* `MaterializeMySQL` 엔진의 중첩된 데이터베이스에서 `Atomic` 엔진을 사용할 수 있게 했습니다. [#14849](https://github.com/ClickHouse/ClickHouse/pull/14849) ([tavplubix](https://github.com/tavplubix)).

<div id="bug-fixes">
  #### 버그 수정
</div>

* 매우 드문 경우에 server가 연결을 더 이상 수락하지 않을 수 있는 문제를 수정했습니다. [#17542](https://github.com/ClickHouse/ClickHouse/pull/17542) (Amos Bird, [alexey-milovidov](https://github.com/alexey-milovidov)).
* 잘못된 쿼리 결과를 초래하던 상수 인수가 있는 이항 함수의 인덱스 분석을 수정했습니다. 이 수정으로 [#18364](https://github.com/ClickHouse/ClickHouse/issues/18364)가 해결됩니다. [#18373](https://github.com/ClickHouse/ClickHouse/pull/18373) ([Amos Bird](https://github.com/amosbird)).
* 인덱스 비교에 사용되는 타입이 서로 다를 때 발생할 수 있는 잘못된 인덱스 분석을 수정했습니다. 이 변경으로 [#17122](https://github.com/ClickHouse/ClickHouse/issues/17122)가 해결됩니다. [#17145](https://github.com/ClickHouse/ClickHouse/pull/17145) ([Amos Bird](https://github.com/amosbird)).
* 머지 중 AIO 쓰기를 비활성화했습니다. 머지 과정에서 프라이머리 키 컬럼의 데이터가 극히 드물게 손상될 수 있기 때문입니다. [#18481](https://github.com/ClickHouse/ClickHouse/pull/18481) ([alesapin](https://github.com/alesapin)).
* wide 파트에서 compact 파트로의 머지를 제한했습니다. 수직 병합 시 결과 파트가 손상되는 문제가 있었습니다. [#18381](https://github.com/ClickHouse/ClickHouse/pull/18381) ([Anton Popov](https://github.com/CurtizJ)).
* 읽기 백오프(로그의 `<Debug> MergeTreeReadPool: Will lower number of threads` 메시지) 발생 시 `MergeTree*`에서 읽는 동안 쿼리 결과가 불완전해질 수 있는 문제를 수정했습니다. 이 문제는 [#16423](https://github.com/ClickHouse/ClickHouse/issues/16423)에서 처음 도입되었습니다. [#18137](https://github.com/ClickHouse/ClickHouse/issues/18137)을 해결했습니다. [#18216](https://github.com/ClickHouse/ClickHouse/pull/18216) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `rocksdb` 라이브러리의 use-after-free 버그를 수정했습니다. [#18862](https://github.com/ClickHouse/ClickHouse/pull/18862) ([sundyli](https://github.com/sundy-li)).
* `ORC` 포맷 파일에서 무한히 읽히던 문제가 수정되었습니다([#10580](https://github.com/ClickHouse/ClickHouse/issues/10580)에서 도입됨). [#19095](https://github.com/ClickHouse/ClickHouse/issues/19095)를 수정합니다. [#19134](https://github.com/ClickHouse/ClickHouse/pull/19134) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* MergeTree 데이터 작성기에서 고정된 세분화 수준 크기보다 큰 마크가 생성될 수 있는 버그를 수정했습니다. [#18913](https://github.com/ClickHouse/ClickHouse/issues/18913)을 해결합니다. [#19123](https://github.com/ClickHouse/ClickHouse/pull/19123) ([alesapin](https://github.com/alesapin)).
* `LowCardinality(Nullable(...))`에서 압축 코덱을 읽지 못해 시작 시 `Attempt to read after EOF` 예외가 발생하던 ClickHouse 버그를 수정했습니다. [#18340](https://github.com/ClickHouse/ClickHouse/issues/18340)을 해결합니다. [#19101](https://github.com/ClickHouse/ClickHouse/pull/19101) ([alesapin](https://github.com/alesapin)).
* 이전 구문으로 생성된 `MergeTree` 테이블에 대해서는 `MODIFY TTL` 쿼리가 제한됩니다. 이전에는 이 쿼리가 성공했지만, 실제로는 아무런 효과가 없었습니다. [#19064](https://github.com/ClickHouse/ClickHouse/pull/19064) ([Anton Popov](https://github.com/CurtizJ)).
* `groupUniqArray`가 Enum 유형의 인수에 대해 올바른 유형을 반환하도록 수정했습니다. 이로써 [#17875](https://github.com/ClickHouse/ClickHouse/issues/17875)가 해결되었습니다. [#19019](https://github.com/ClickHouse/ClickHouse/pull/19019) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 함수 `ignore`를 `LowCardinality` 인수와 함께 사용할 때 발생할 수 있는 `Expected single dictionary argument for function` 오류를 수정했습니다. [#14275](https://github.com/ClickHouse/ClickHouse/issues/14275)를 수정합니다. [#19016](https://github.com/ClickHouse/ClickHouse/pull/19016) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `TinyLog` 엔진을 사용하는 테이블에 `LowCardinality` 컬럼을 삽입할 때 발생하던 문제를 수정했습니다. [#18629](https://github.com/ClickHouse/ClickHouse/issues/18629)을 수정합니다. [#19010](https://github.com/ClickHouse/ClickHouse/pull/19010) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Join은 const 컬럼을 구체화하려고 하지만, 코드에서는 이를 다른 곳에서 사용합니다. [#18982](https://github.com/ClickHouse/ClickHouse/pull/18982) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 최적화가 항상 올바른 것은 아니므로 `optimize_move_functions_out_of_any`를 비활성화했습니다. 이로써 [#18051](https://github.com/ClickHouse/ClickHouse/issues/18051)이 해결되었습니다. 이로써 [#18973](https://github.com/ClickHouse/ClickHouse/issues/18973)이 해결되었습니다. [#18981](https://github.com/ClickHouse/ClickHouse/pull/18981) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 쿼리 계획의 `Expression` 단계 병합으로 인해 발생할 수 있는 `QueryPipeline stream: different number of columns` 예외를 수정했습니다. [#18190](https://github.com/ClickHouse/ClickHouse/issues/18190)을 해결했습니다. [#18980](https://github.com/ClickHouse/ClickHouse/pull/18980) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 종료 시 매우 드물게 발생하는 데드락을 수정했습니다. [#18977](https://github.com/ClickHouse/ClickHouse/pull/18977) ([tavplubix](https://github.com/tavplubix)).
* `ALTER TABLE ... DROP PART 'part_name'` 쿼리가 전체 파티션의 모든 중복 제거 블록을 삭제하던 잘못된 동작을 수정했습니다. [#18874](https://github.com/ClickHouse/ClickHouse/issues/18874)를 수정했습니다. [#18969](https://github.com/ClickHouse/ClickHouse/pull/18969) ([alesapin](https://github.com/alesapin)).
* 파티션을 ATTACH하면 mutation이 재설정되도록 했습니다. [#18804](https://github.com/ClickHouse/ClickHouse/issues/18804). [#18935](https://github.com/ClickHouse/ClickHouse/pull/18935) ([fastio](https://github.com/fastio)).
* `bitmapOrCardinality`에서 nullptr 역참조를 일으킬 수 있는 문제를 수정했습니다. 이로써 [#18911](https://github.com/ClickHouse/ClickHouse/issues/18911)이 해결되었습니다. [#18912](https://github.com/ClickHouse/ClickHouse/pull/18912) ([sundyli](https://github.com/sundy-li)).
* `clickhouse-local` 종료 시 발생할 수 있는 중단 현상을 수정했습니다. 이 수정으로 [#18891](https://github.com/ClickHouse/ClickHouse/issues/18891) 문제가 해결됩니다. [#18893](https://github.com/ClickHouse/ClickHouse/pull/18893) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 외부 데이터베이스(MySQL, ODBC, JDBC)에 대한 쿼리에서 `x IN table` 형태의 표현식이 있으면 쿼리가 잘못 재작성되던 문제를 수정했습니다. 이 수정은 [#9756](https://github.com/ClickHouse/ClickHouse/issues/9756)을 해결합니다. [#18876](https://github.com/ClickHouse/ClickHouse/pull/18876) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* \*If combinator의 단항 함수 및 널 허용 타입 관련 문제를 수정했습니다. [#18806](https://github.com/ClickHouse/ClickHouse/pull/18806) ([Azat Khuzhin](https://github.com/azat)).
* 설정 `network_compression_method`가 전역적으로 기본값이 아닌 값으로 설정된 경우, 비동기 분산 INSERT가 server에서 거부될 수 있는 문제를 수정했습니다. 이 수정으로 [#18741](https://github.com/ClickHouse/ClickHouse/issues/18741)이 해결됩니다. [#18776](https://github.com/ClickHouse/ClickHouse/pull/18776) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Nullable(String)`에서 `Nullable(Decimal(P, S))`로 `NULL`을 `CAST`할 때 발생하던 `Attempt to read after eof` 오류를 수정했습니다. 이제 함수 `CAST`는 널 허용 문자열에서 10진수를 파싱하지 못하면 `NULL`을 반환합니다. [#7690](https://github.com/ClickHouse/ClickHouse/issues/7690)을 해결했습니다. [#18718](https://github.com/ClickHouse/ClickHouse/pull/18718) ([Winter Zhang](https://github.com/zhang2014)).
* 로깅 관련 사소한 문제를 수정했습니다. [#18717](https://github.com/ClickHouse/ClickHouse/pull/18717) ([sundyli](https://github.com/sundy-li)).
* 이전 구문으로 생성된 `ReplicatedMergeTree` 테이블에서 빈 파트가 제거되지 않던 문제를 수정했습니다. [#18582](https://github.com/ClickHouse/ClickHouse/issues/18582). [#18614](https://github.com/ClickHouse/ClickHouse/pull/18614) ([Anton Popov](https://github.com/CurtizJ)).
* 서로 다른 값에서 날짜 오버플로우가 발생하던 기존 버그를 수정했습니다. Date 값의 엄격한 상한을 "2106-02-07"로 제한하고, "2106-02-07"보다 큰 날짜는 값 0으로 변환합니다. [#18565](https://github.com/ClickHouse/ClickHouse/pull/18565) ([hexiaoting](https://github.com/hexiaoting)).
* MySQL 복제를 위한 FixedString 데이터 타입 지원을 추가했습니다. MySQL 복제는 실험적 기능입니다. 이 패치에서는 [#18450](https://github.com/ClickHouse/ClickHouse/issues/18450)을 수정했습니다. 또한 [#6556](https://github.com/ClickHouse/ClickHouse/issues/6556)도 수정했습니다. [#18553](https://github.com/ClickHouse/ClickHouse/pull/18553) ([awesomeleo](https://github.com/awesomeleo)).
* `RIGHT` 또는 `FULL` 조인이 포함된 서브쿼리 뒤에 `ORDER BY`를 사용할 때 발생할 수 있는 `Pipeline stuck` 오류를 수정했습니다. [#18550](https://github.com/ClickHouse/ClickHouse/pull/18550) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 해당 mutation을 중단한 후 `ALTER` 쿼리가 멈출 수 있는 버그를 수정했습니다. thread fuzzer로 발견되었습니다. [#18518](https://github.com/ClickHouse/ClickHouse/pull/18518) ([alesapin](https://github.com/alesapin)).
* `parseDateTimeBestEffort` 함수에서 12AM을 올바르게 처리하도록 지원을 추가했습니다. 이로써 [#18402](https://github.com/ClickHouse/ClickHouse/issues/18402) 문제가 수정되었습니다. [#18449](https://github.com/ClickHouse/ClickHouse/pull/18449) ([vladimir-golovchenko](https://github.com/vladimir-golovchenko)).
* `Nullable(String)` 유형의 인수로 `toType(...)` 함수(`toDate`, `toUInt32` 등)를 실행할 때 발생하던 `value is too short` 오류를 수정했습니다. 이제 이러한 함수는 parsing 오류가 발생하면 예외를 발생시키는 대신 `NULL`을 반환합니다. [#7673](https://github.com/ClickHouse/ClickHouse/issues/7673)를 수정했습니다. [#18445](https://github.com/ClickHouse/ClickHouse/pull/18445) ([tavplubix](https://github.com/tavplubix)).
* `SHOW TABLES`의 예상치 못한 동작을 수정했습니다. [#18431](https://github.com/ClickHouse/ClickHouse/pull/18431) ([fastio](https://github.com/fastio)).
* 수정 -SimpleState combinator가 호환되지 않는 인수 유형 및 반환 유형을 생성하던 문제를 수정했습니다. [#18404](https://github.com/ClickHouse/ClickHouse/pull/18404) ([Amos Bird](https://github.com/amosbird)).
* `Set` 또는 `Join` 테이블을 동시에 사용하거나 `system.tables`에서 조회할 때 발생할 수 있는 경쟁 상태(race condition)를 수정했습니다. [#18385](https://github.com/ClickHouse/ClickHouse/pull/18385) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 테이블 `system.settings_profile_elements`이 채워지는 문제를 수정했습니다. 이 PR은 [#18231](https://github.com/ClickHouse/ClickHouse/issues/18231)을 수정합니다. [#18379](https://github.com/ClickHouse/ClickHouse/pull/18379) ([Vitaly Baranov](https://github.com/vitlibar)).
* 2단계 집계 사용 시 `Distinct` combinator가 적용된 집계 함수에서 발생할 수 있는 크래시를 수정했습니다. [#17682](https://github.com/ClickHouse/ClickHouse/issues/17682)를 해결했습니다. [#18365](https://github.com/ClickHouse/ClickHouse/pull/18365) ([Anton Popov](https://github.com/CurtizJ)).
* 듀얼 IPv4/IPv6 스택을 사용하는 시스템에서 서버가 `clickhouse-odbc-bridge` 프로세스에 연결할 수 없던 문제를 수정했습니다. ODBC 딕셔너리 업데이트 시 잘못된 쿼리가 사용되거나 `odbc-bridge` 프로세스가 충돌하던 문제를 수정했습니다. 아마도 [#14489](https://github.com/ClickHouse/ClickHouse/issues/14489)를 해결합니다. [#18278](https://github.com/ClickHouse/ClickHouse/pull/18278) ([Denis Glazachev](https://github.com/traceon)).
* 접근 제어: 이제 사용자가 해당 테이블의 컬럼 하나에라도 접근 권한이 있으면 `SELECT count() FROM table`를 실행할 수 있습니다. 이 PR은 [#10639](https://github.com/ClickHouse/ClickHouse/issues/10639)을 해결합니다. [#18233](https://github.com/ClickHouse/ClickHouse/pull/18233) ([Vitaly Baranov](https://github.com/vitlibar)).
* 접근 제어: 이제 `SELECT JOIN`을 사용하려면 조인되는 각 테이블에 대해 `SELECT` 권한이 필요합니다. 이 PR은 [#17654](https://github.com/ClickHouse/ClickHouse/issues/17654)를 수정합니다. [#18232](https://github.com/ClickHouse/ClickHouse/pull/18232) ([Vitaly Baranov](https://github.com/vitlibar)).
* Enum과 Int 타입 간 키 비교를 수정했습니다. 이로써 [#17989](https://github.com/ClickHouse/ClickHouse/issues/17989)가 해결되었습니다. [#18214](https://github.com/ClickHouse/ClickHouse/pull/18214) ([Amos Bird](https://github.com/amosbird)).
* MySQL로부터의 복제(실험적 기능). [#18186](https://github.com/ClickHouse/ClickHouse/issues/18186)을 수정했습니다. [#16372](https://github.com/ClickHouse/ClickHouse/issues/16372)을 수정했습니다. MaterializeMySQL 데이터베이스 엔진의 고유 키 변환 문제를 수정했습니다. [#18211](https://github.com/ClickHouse/ClickHouse/pull/18211) ([Winter Zhang](https://github.com/zhang2014)).
* `WITH FILL`과 `WITH TIES`를 함께 사용하는 쿼리에서 발생하던 불일치를 수정했습니다 [#17466](https://github.com/ClickHouse/ClickHouse/issues/17466). [#18188](https://github.com/ClickHouse/ClickHouse/pull/18188) ([hexiaoting](https://github.com/hexiaoting)).
* 마지막 컬럼에서 구문 분석 오류가 발생한 경우 기본값으로 행이 삽입되도록 수정했습니다. [#17712](https://github.com/ClickHouse/ClickHouse/issues/17712)를 수정했습니다. [#18182](https://github.com/ClickHouse/ClickHouse/pull/18182) ([Jianmei Zhang](https://github.com/zhangjmruc)).
* 설정 프로필을 지정하려고 할 때 발생하던 `Unknown setting profile` 오류를 수정했습니다. [#18167](https://github.com/ClickHouse/ClickHouse/pull/18167) ([tavplubix](https://github.com/tavplubix)).
* 쿼리 `MODIFY COLUMN ... REMOVE TTL`이 실제로 컬럼 TTL을 제거하지 않던 오류를 수정했습니다. [#18130](https://github.com/ClickHouse/ClickHouse/pull/18130) ([alesapin](https://github.com/alesapin)).
* S3 URL 파싱 중 발생하던 `std::out_of_range: basic_string` 문제를 수정했습니다. [#18059](https://github.com/ClickHouse/ClickHouse/pull/18059) ([Vladimir Chebotarev](https://github.com/excitoon)).
* `DateTime64`와 `Date` 비교를 수정했습니다. [#13804](https://github.com/ClickHouse/ClickHouse/issues/13804) 및 [#11222](https://github.com/ClickHouse/ClickHouse/issues/11222)를 수정했습니다. ... [#18050](https://github.com/ClickHouse/ClickHouse/pull/18050) ([Vasily Nemkov](https://github.com/Enmk)).
* MySQL 복제(실험적 기능): [#15187](https://github.com/ClickHouse/ClickHouse/issues/15187) 수정, [#17912](https://github.com/ClickHouse/ClickHouse/issues/17912) 수정, MaterializeMySQL에서 MySQL prefix 인덱스 변환을 지원합니다. [#17944](https://github.com/ClickHouse/ClickHouse/pull/17944) ([Winter Zhang](https://github.com/zhang2014)).
* `logger.size` 매개변수를 사용해 2^32보다 큰 숫자 값으로 server 로그 로테이션을 설정한 경우, 로그가 제대로 로테이션되지 않았습니다. 이 문제가 수정되었습니다. [#17905](https://github.com/ClickHouse/ClickHouse/pull/17905) ([Alexander Kuzmenkov](https://github.com/akuzm)).
* 쿼리에 ARRAY JOIN이 포함된 경우(즉, 실제로는 단순 쿼리가 아닌 경우), 단순 쿼리 최적화로 인해 잘못된 결과가 반환되던 문제가 있었습니다. [#17887](https://github.com/ClickHouse/ClickHouse/pull/17887) ([sundyli](https://github.com/sundy-li)).
* `topK` 집계 함수에서 발생할 수 있는 segfault를 수정했습니다. 이로써 [#17404](https://github.com/ClickHouse/ClickHouse/issues/17404)를 해결했습니다. [#17845](https://github.com/ClickHouse/ClickHouse/pull/17845) ([Maksim Kita](https://github.com/kitaisreal)).
* WAL (실험적 기능): `in_memory_parts_enable_wal`이 비활성화되어 있으면 WAL에서 파트를 복원하지 않습니다. [#17802](https://github.com/ClickHouse/ClickHouse/pull/17802) ([detailyang](https://github.com/detailyang)).
* 삭제 가능한 최대 테이블 크기에 관한 예외 메시지가 잘못 표시되었습니다. [#17764](https://github.com/ClickHouse/ClickHouse/pull/17764) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Distributed` 테이블에 삽입할 때 공간이 부족한 경우 발생할 수 있는 segfault를 수정했습니다. [#17737](https://github.com/ClickHouse/ClickHouse/pull/17737) ([tavplubix](https://github.com/tavplubix)).
* ClickHouse가 MySQL 서버와의 연결을 다시 복구하지 못하는 문제를 수정했습니다. [#17681](https://github.com/ClickHouse/ClickHouse/pull/17681) ([Alexander Kazakov](https://github.com/Akazz)).
* Windows: Windows Subsystem for Linux에서 실행되는 ClickHouse의 `Atomic` 데이터베이스에서 `RENAME` 쿼리 실행 시 발생하던 `Function not implemented` 오류를 수정했습니다. [#17661](https://github.com/ClickHouse/ClickHouse/issues/17661)을 해결합니다. [#17664](https://github.com/ClickHouse/ClickHouse/pull/17664) ([tavplubix](https://github.com/tavplubix)).
* `pool_size` > 1일 때 발생하는 race condition으로 인해 `ON CLUSTER` 쿼리 실행 시 클러스터가 순환 복제 또는 (교차) 복제되었는지 잘못 판단되는 문제가 있었습니다. 수정되었습니다. [#17640](https://github.com/ClickHouse/ClickHouse/pull/17640) ([tavplubix](https://github.com/tavplubix)).
* server가 데몬 모드로 실행될 때 `system.stack_trace` table이 비어 있던 문제를 수정했습니다. [#17630](https://github.com/ClickHouse/ClickHouse/pull/17630) ([Amos Bird](https://github.com/amosbird)).
* 예외 `fmt::v7::format_error`가 MergeTree 테이블에서 백그라운드로 로그에 기록될 수 있습니다. 이 수정으로 [#17613](https://github.com/ClickHouse/ClickHouse/issues/17613) 문제가 해결되었습니다. [#17615](https://github.com/ClickHouse/ClickHouse/pull/17615) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* clickhouse-client를 대화형 모드에서 여러 줄 쿼리와 함께 사용할 때 한 줄 주석이 쿼리 끝까지 잘못 이어지던 문제가 있었습니다. 이 변경으로 [#13654](https://github.com/ClickHouse/ClickHouse/issues/13654)가 수정되었습니다. [#17565](https://github.com/ClickHouse/ClickHouse/pull/17565) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 해당 mutation이 다른 레플리카에서 강제 종료되었을 때 ALTER 쿼리가 멈추는 문제를 수정했습니다. [#16953](https://github.com/ClickHouse/ClickHouse/issues/16953)을 해결했습니다. [#17499](https://github.com/ClickHouse/ClickHouse/pull/17499) ([alesapin](https://github.com/alesapin)).
* ClickHouse가 마크 캐시 크기를 과소추정할 때 메모리 사용량 계산에 발생하던 문제를 수정했습니다. 이 문제는 마크가 포함된 아주 작은 파일이 많을 때 발생할 수 있습니다. [#17496](https://github.com/ClickHouse/ClickHouse/pull/17496) ([alesapin](https://github.com/alesapin)).
* 설정 `optimize_redundant_functions_in_order_by`가 활성화된 경우의 `ORDER BY`를 수정했습니다. [#17471](https://github.com/ClickHouse/ClickHouse/pull/17471) ([Anton Popov](https://github.com/CurtizJ)).
* 잘못된 최적화로 인해 발생할 수 있었던 `DISTINCT` 이후의 중복 문제를 수정했습니다. [#17294](https://github.com/ClickHouse/ClickHouse/issues/17294)를 수정했습니다. [#17296](https://github.com/ClickHouse/ClickHouse/pull/17296) ([li chengxiang](https://github.com/chengxianglibra)). [#17439](https://github.com/ClickHouse/ClickHouse/pull/17439) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* \*MergeTree 테이블의 백그라운드 작업에서 발생하던 높은 CPU 사용량 문제를 수정했습니다. [#17416](https://github.com/ClickHouse/ClickHouse/pull/17416) ([tavplubix](https://github.com/tavplubix)).
* `LowCardinality` 타입이 있는 `JOIN` 테이블을 읽을 때 발생할 수 있는 크래시를 수정했습니다. [#17228](https://github.com/ClickHouse/ClickHouse/issues/17228)를 수정했습니다. [#17397](https://github.com/ClickHouse/ClickHouse/pull/17397) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* MySQL로부터의 복제(실험적 기능): MySQL SHOW 문과 헤더가 일치하지 않던 문제를 해결하는 [#16835](https://github.com/ClickHouse/ClickHouse/issues/16835)를 수정했습니다. [#17366](https://github.com/ClickHouse/ClickHouse/pull/17366) ([Winter Zhang](https://github.com/zhang2014)).
* 프레디케이트 옵티마이저에서 비결정적 함수 관련 문제를 수정했습니다. 이 변경으로 [#17244](https://github.com/ClickHouse/ClickHouse/issues/17244)가 해결되었습니다. [#17273](https://github.com/ClickHouse/ClickHouse/pull/17273) ([Winter Zhang](https://github.com/zhang2014)).
* `LIMIT`가 있는 분산 쿼리에서 클라이언트로부터 `Unexpected packet Data received from client` 오류가 발생할 수 있던 문제를 수정했습니다. [#17254](https://github.com/ClickHouse/ClickHouse/pull/17254) ([Azat Khuzhin](https://github.com/azat)).
* 서브쿼리에 const 컬럼이 있을 때 set 인덱스가 잘못 무효화되는 문제를 수정했습니다. 이로써 [#17246](https://github.com/ClickHouse/ClickHouse/issues/17246)가 해결됩니다. [#17249](https://github.com/ClickHouse/ClickHouse/pull/17249) ([Amos Bird](https://github.com/amosbird)).
* clickhouse-copier: 파티션되지 않은 테이블 수정 [#15235](https://github.com/ClickHouse/ClickHouse/issues/15235). [#17248](https://github.com/ClickHouse/ClickHouse/pull/17248) ([Qi Chen](https://github.com/kaka11chen)).
* S3 disk에 저장된 파트에서 뮤테이션이 작동하지 않을 수 있던 문제를 수정했습니다(실험적 기능). [#17227](https://github.com/ClickHouse/ClickHouse/pull/17227) ([Pavel Kovalenko](https://github.com/Jokser)).
* `fuzzBits` 함수의 버그 수정입니다. 관련 이슈: [#16980](https://github.com/ClickHouse/ClickHouse/issues/16980). [#17051](https://github.com/ClickHouse/ClickHouse/pull/17051) ([hexiaoting](https://github.com/hexiaoting)).
* OFFSET만 있는 쿼리에서 `optimize_distributed_group_by_sharding_key` 문제를 수정했습니다. [#16996](https://github.com/ClickHouse/ClickHouse/pull/16996) ([Azat Khuzhin](https://github.com/azat)).
* JOIN이 있는 `Distributed` 테이블 상의 `Merge` 테이블에 대한 쿼리를 수정했습니다. [#16993](https://github.com/ClickHouse/ClickHouse/pull/16993) ([Azat Khuzhin](https://github.com/azat)).
* 단조 함수 사용 시 ORDER BY 최적화 문제를 수정했습니다. [#16107](https://github.com/ClickHouse/ClickHouse/issues/16107)을 수정합니다. [#16956](https://github.com/ClickHouse/ClickHouse/pull/16956) ([Anton Popov](https://github.com/CurtizJ)).
* 서로 다른 소수 자릿수를 가진 `DateTime64` 타입 간의 잘못된 비교를 수정했습니다. [#16655](https://github.com/ClickHouse/ClickHouse/issues/16655) ... [#16952](https://github.com/ClickHouse/ClickHouse/pull/16952) ([Vasily Nemkov](https://github.com/Enmk)).
* 설정 `optimize_aggregators_of_group_by_keys`이 활성화된 상태에서 GROUP BY와 조인을 함께 사용할 때의 최적화를 수정했습니다. [#12604](https://github.com/ClickHouse/ClickHouse/issues/12604)를 수정했습니다. [#16951](https://github.com/ClickHouse/ClickHouse/pull/16951) ([Anton Popov](https://github.com/CurtizJ)).
* SHOW ACCESS 쿼리의 사소한 수정. [#16866](https://github.com/ClickHouse/ClickHouse/pull/16866) ([tavplubix](https://github.com/tavplubix)).
* 파티션 프레디케이트 사용 시 활성화된 `optimize_trivial_count_query` 설정의 동작을 수정했습니다. [#16767](https://github.com/ClickHouse/ClickHouse/pull/16767) ([Azat Khuzhin](https://github.com/azat)).
* MySQL wire protocol을 통한 INSERT 쿼리에서 영향받은 행 수를 반환합니다. 이전에는 ClickHouse가 항상 0을 반환했지만, 이제 수정되었습니다. [#16605](https://github.com/ClickHouse/ClickHouse/issues/16605)를 수정했습니다. [#16715](https://github.com/ClickHouse/ClickHouse/pull/16715) ([Winter Zhang](https://github.com/zhang2014)).
* 최적화된 단순 count 쿼리와 시스템 테이블에서 `select_sequential_consistency`로 인해 발생한 일관되지 않은 동작을 수정했습니다. [#16309](https://github.com/ClickHouse/ClickHouse/pull/16309) ([Hao Chen](https://github.com/haoch)).
* 존재하지 않는 컬럼에 `REPLACE` 컬럼 변환기가 적용되면 오류를 발생시키도록 수정했습니다. [#16183](https://github.com/ClickHouse/ClickHouse/pull/16183) ([hexiaoting](https://github.com/hexiaoting)).
* RIGH|FULL JOIN에서 ON 표현식이 equi-join이 아닌 경우 예외를 발생시킵니다. [#15162](https://github.com/ClickHouse/ClickHouse/pull/15162) ([Artem Zuikov](https://github.com/4ertus2)).

<div id="buildtestingpackaging-improvement">
  #### 빌드/테스트/패키징 개선
</div>

* ClickHouse 실행 파일에 대한 간단한 무결성 검사를 추가했습니다. 이를 통해 하드웨어 결함(저장 매체의 비트 손상 또는 RAM의 비트 반전)으로 인한 손상을 감지할 수 있습니다. [#18811](https://github.com/ClickHouse/ClickHouse/pull/18811) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `OpenSSL`을 `BoringSSL`로 변경했습니다. 이를 통해 sanitizers 관련 문제를 방지할 수 있습니다. 이 변경으로 [#12490](https://github.com/ClickHouse/ClickHouse/issues/12490)이 수정되었습니다. 이 변경으로 [#17502](https://github.com/ClickHouse/ClickHouse/issues/17502)이 수정되었습니다. 이 변경으로 [#12952](https://github.com/ClickHouse/ClickHouse/issues/12952)이 수정되었습니다. [#18129](https://github.com/ClickHouse/ClickHouse/pull/18129) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `Sys/V` init 스크립트를 간소화했습니다. Ubuntu 12.04 및 그 이전 버전에서는 작동하지 않았습니다. [#17428](https://github.com/ClickHouse/ClickHouse/pull/17428) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `./clickhouse install` 스크립트가 여러 면에서 개선되었습니다. [#17421](https://github.com/ClickHouse/ClickHouse/pull/17421) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 ClickHouse는 가짜 ZooKeeper처럼 동작할 수 있습니다. 현재 스토리지 구현은 메모리 내 hash table에만 저장되며, server는 ZooKeeper 프로토콜을 부분적으로 지원합니다. [#16877](https://github.com/ClickHouse/ClickHouse/pull/16877) ([alesapin](https://github.com/alesapin)).
* TestKeeperStorage(ZooKeeper용 모의 객체)에서 dead list watch 제거가 제대로 되지 않던 문제를 수정했습니다. [#18065](https://github.com/ClickHouse/ClickHouse/pull/18065) ([alesapin](https://github.com/alesapin)).
* 장애 주입을 위해 `SYSTEM SUSPEND` 명령을 추가했습니다. 이 명령은 페일오버 테스트를 쉽게 수행하는 데 사용할 수 있습니다. 이로써 [#15979](https://github.com/ClickHouse/ClickHouse/issues/15979)가 해결되었습니다. [#18850](https://github.com/ClickHouse/ClickHouse/pull/18850) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* ClickHouse를 `lld`로 링크할 때 build id를 생성합니다. 제 환경에서는 `lld`가 기본적으로 이를 생성하지 않는 것으로 확인되었습니다. build id는 충돌 보고서와 내부 검사에 사용됩니다. [#18808](https://github.com/ClickHouse/ClickHouse/pull/18808) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 스타일 검사에서 발생한 shellcheck 오류를 수정했습니다. [#18566](https://github.com/ClickHouse/ClickHouse/pull/18566) ([Ilya Yatsishin](https://github.com/qoega)).
* 시간대 정보를 2020e로 업데이트했습니다. [#18531](https://github.com/ClickHouse/ClickHouse/pull/18531) ([alesapin](https://github.com/alesapin)).
* codespell 경고를 수정했습니다. 스타일 검사를 별도 항목으로 분리했습니다. 스타일 검사용 Docker 이미지를 업데이트했습니다. [#18463](https://github.com/ClickHouse/ClickHouse/pull/18463) ([Ilya Yatsishin](https://github.com/qoega)).
* 문서에 남아 있는 충돌 마커를 자동으로 검사합니다. [#18332](https://github.com/ClickHouse/ClickHouse/pull/18332) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* stateless tests 플래키 검사에 Thread Fuzzer를 활성화했습니다. [#18299](https://github.com/ClickHouse/ClickHouse/pull/18299) ([alesapin](https://github.com/alesapin)).
* 스레드 안전하지 않은 `strerror` 함수는 사용하지 않습니다. [#18204](https://github.com/ClickHouse/ClickHouse/pull/18204) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* `anchore/scan-action@main` 워크플로 액션을 업데이트했습니다(`master`에서 `main`으로 변경됨). [#18192](https://github.com/ClickHouse/ClickHouse/pull/18192) ([Stig Bakken](https://github.com/stigsb)).
* 이제 `clickhouse-test`는 타임아웃을 적용해 데이터베이스에 대해 DROP/CREATE를 수행합니다. [#18098](https://github.com/ClickHouse/ClickHouse/pull/18098) ([alesapin](https://github.com/alesapin)).
* stateless 테스트를 위한 Pytest 프레임워크의 실험적 지원을 활성화했습니다. [#17902](https://github.com/ClickHouse/ClickHouse/pull/17902) ([Ivan](https://github.com/abyss7)).
* 이제 통합 테스트에서 최신 docker daemon 버전을 사용합니다. [#17671](https://github.com/ClickHouse/ClickHouse/pull/17671) ([alesapin](https://github.com/alesapin)).
* Sentry가 활성화된 경우 공식 빌드 정보, 메모리, CPU 및 사용 가능한 디스크 여유 공간 정보를 Sentry로 전송합니다. Sentry는 ClickHouse 개발자를 지원하기 위한 옵트인 기능입니다. 이로써 [#17279](https://github.com/ClickHouse/ClickHouse/issues/17279)가 해결되었습니다. [#17543](https://github.com/ClickHouse/ClickHouse/pull/17543) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* clickhouse-copier 코드에 초기화되지 않은 변수가 있었습니다. [#17363](https://github.com/ClickHouse/ClickHouse/pull/17363) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* [#17309](https://github.com/ClickHouse/ClickHouse/issues/17309)의 [MSan 보고서 1건](https://clickhouse-test-reports.s3.yandex.net/17309/065cd002578f2e8228f12a2744bd40c970065e0c/stress_test_\(memory\)/stderr.log)을 수정했습니다. [#17344](https://github.com/ClickHouse/ClickHouse/pull/17344) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Arrow Flight 라이브러리의 IPv6 관련 문제 수정. 자세한 내용은 [댓글](https://github.com/ClickHouse/ClickHouse/pull/16243#issuecomment-720830294)을 참조하십시오. [#16664](https://github.com/ClickHouse/ClickHouse/pull/16664) ([Zhanna](https://github.com/FawnD2)).
* 일부 `libc` 함수를 프로세스를 종료하는 트랩으로 대체하는 라이브러리를 추가했습니다. [#16366](https://github.com/ClickHouse/ClickHouse/pull/16366) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 스택 오버플로우가 발생할 경우 서버 로그에 진단 정보를 남기고, clickhouse-client로 오류 메시지를 보냅니다. 이로써 [#14840](https://github.com/ClickHouse/ClickHouse/issues/14840)이 해결되었습니다. [#16346](https://github.com/ClickHouse/ClickHouse/pull/16346) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* 이제 거의 모든 상태 비저장형 기능 테스트를 병렬로 실행할 수 있습니다. [#15236](https://github.com/ClickHouse/ClickHouse/pull/15236) ([alesapin](https://github.com/alesapin)).
* `librdkafka`의 snappy 압축 해제 중 발생하던 손상 문제를 수정했습니다(gcc10 빌드에서만 발생하던 문제였지만, 공식 빌드는 이미 clang을 사용하므로 적어도 최근 공식 릴리스는 영향을 받지 않습니다). [#18053](https://github.com/ClickHouse/ClickHouse/pull/18053) ([Azat Khuzhin](https://github.com/azat)).
* 서버가 OOM killer에 의해 종료되면 로그에 메시지를 출력합니다. [#13516](https://github.com/ClickHouse/ClickHouse/pull/13516) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* PODArray: `(nullptr, 0)` 인수로 `memcpy`를 호출하지 않도록 수정했습니다(UBSan 보고 수정). 이 수정으로 [#18525](https://github.com/ClickHouse/ClickHouse/issues/18525)가 해결되었습니다. [#18526](https://github.com/ClickHouse/ClickHouse/pull/18526) ([alexey-milovidov](https://github.com/alexey-milovidov)).
* DDLWorker 내부의 zookeeper 경로 연결이 소폭 개선되었습니다. [#17767](https://github.com/ClickHouse/ClickHouse/pull/17767) ([Bharat Nallan](https://github.com/bharatnc)).
* 디버그 파일에서 심볼을 다시 로드할 수 있게 했습니다. 이 PR에서는 build-id 문제도 수정했습니다. [#17637](https://github.com/ClickHouse/ClickHouse/pull/17637) ([Amos Bird](https://github.com/amosbird)).

<div id="changelog-for-2020">
  ## [2020년 변경 로그](/ko/resources/changelogs/oss/2020)
</div>
