> ## 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.

# 2024 변경 이력

> 2024년 변경 이력

<div id="table-of-contents">
  ### 목차
</div>

**[ClickHouse 릴리스 v24.12, 2024-12-19](/ko/resources/changelogs/oss/2024#a-id2412a-clickhouse-release-2412-2024-12-19)**<br />
**[ClickHouse 릴리스 v24.11, 2024-11-26](/ko/resources/changelogs/oss/2024#a-id2411a-clickhouse-release-2411-2024-11-26)**<br />
**[ClickHouse 릴리스 v24.10, 2024-10-31](/ko/resources/changelogs/oss/2024#a-id2410a-clickhouse-release-2410-2024-10-31)**<br />
**[ClickHouse 릴리스 v24.9, 2024-09-26](/ko/resources/changelogs/oss/2024#a-id249a-clickhouse-release-249-2024-09-26)**<br />
**[ClickHouse 릴리스 v24.8 LTS, 2024-08-20](/ko/resources/changelogs/oss/2024#a-id248a-clickhouse-release-248-lts-2024-08-20)**<br />
**[ClickHouse 릴리스 v24.7, 2024-07-30](/ko/resources/changelogs/oss/2024#a-id247a-clickhouse-release-247-2024-07-30)**<br />
**[ClickHouse 릴리스 v24.6, 2024-07-01](/ko/resources/changelogs/oss/2024#a-id246a-clickhouse-release-246-2024-07-01)**<br />
**[ClickHouse 릴리스 v24.5, 2024-05-30](/ko/resources/changelogs/oss/2024#a-id245a-clickhouse-release-245-2024-05-30)**<br />
**[ClickHouse 릴리스 v24.4, 2024-04-30](/ko/resources/changelogs/oss/2024#a-id244a-clickhouse-release-244-2024-04-30)**<br />
**[ClickHouse 릴리스 v24.3 LTS, 2024-03-26](/ko/resources/changelogs/oss/2024#a-id243a-clickhouse-release-243-lts-2024-03-27)**<br />
**[ClickHouse 릴리스 v24.2, 2024-02-29](/ko/resources/changelogs/oss/2024#a-id242a-clickhouse-release-242-2024-02-29)**<br />
**[ClickHouse 릴리스 v24.1, 2024-01-30](/ko/resources/changelogs/oss/2024#a-id241a-clickhouse-release-241-2024-01-30)**<br />
**[2023년 변경 이력](/ko/resources/changelogs/oss/2023)**<br />

### <a id="2412" /> ClickHouse 릴리스 24.12, 2024-12-19. [발표](https://presentations.clickhouse.com/2024-release-24.12/), [비디오](https://www.youtube.com/watch?v=bv-ut-Q6vnc)

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

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

* 함수 `greatest`와 `least`는 이제 NULL 입력 값을 무시합니다. 이전에는 인수 중 하나가 NULL이면 NULL을 반환했습니다. 예를 들어, 이제 `SELECT greatest(1, 2, NULL)`은 2를 반환합니다. 이 변경으로 동작은 PostgreSQL과 호환되지만, NULL을 반환하는 MySQL과는 호환되지 않게 됩니다. 이전 동작을 유지하려면 설정 `least_greatest_legacy_null_behavior`(기본값: `false`)를 `true`로 설정하십시오. [#65519](https://github.com/ClickHouse/ClickHouse/pull/65519) [#73344](https://github.com/ClickHouse/ClickHouse/pull/73344) ([kevinyhzou](https://github.com/KevinyhZou)).
* 새로운 MongoDB 통합이 이제 기본으로 사용됩니다. 기존 MongoDB 드라이버(Poco 드라이버 기반)를 계속 사용하려는 사용자는 서버 설정 `use_legacy_mongodb_integration`를 활성화할 수 있습니다. [#73359](https://github.com/ClickHouse/ClickHouse/pull/73359) ([Kirill Nikiforov](https://github.com/allmazz).

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

* `JSON`/`Dynamic`/`Variant` 타입을 실험적 기능에서 베타로 전환했습니다. [#72294](https://github.com/ClickHouse/ClickHouse/pull/72294) ([Pavel Kruglov](https://github.com/Avogar)). 또한 모든 수정 사항과 이번 변경 사항도 24.11로 백포트했습니다.
* [Iceberg data storage](https://iceberg.apache.org/spec/#file-system-operations) 포맷의 스키마 진화는 테이블 스키마를 수정할 수 있는 다양한 옵션을 제공합니다. 컬럼 순서, 컬럼 이름, 그리고 단순한 유형 확장은 내부적으로 변경할 수 있습니다. [#69445](https://github.com/ClickHouse/ClickHouse/pull/69445) ([Daniil Ivanik](https://github.com/divanik)).
* Iceberg REST 카탈로그와 통합: 전체 카탈로그를 ClickHouse에 연결하는 Iceberg라는 새로운 데이터베이스 엔진이 추가되었습니다. [#71542](https://github.com/ClickHouse/ClickHouse/pull/71542) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `MergeTree` 테이블의 프라이머리 인덱스용 캐시가 추가되었습니다(테이블 설정 `use_primary_key_cache`로 활성화할 수 있습니다). 프라이머리 인덱스에 지연 로드와 캐시를 활성화하면, 이를 메모리에 계속 유지하는 대신 필요할 때 캐시에 로드합니다(마크 캐시와 유사함). 데이터 파트의 삽입/머지/fetch 시와 테이블 재시작 시 프라이머리 인덱스를 예열하는 기능도 추가되었습니다(설정 `prewarm_primary_key_cache`로 활성화할 수 있습니다). 이를 통해 공유 스토리지의 초대형 테이블에서 메모리 사용량을 줄일 수 있으며, 1000조 개가 넘는 레코드를 가진 테이블에서 테스트했습니다. [#72102](https://github.com/ClickHouse/ClickHouse/pull/72102) ([Anton Popov](https://github.com/CurtizJ)). [#72750](https://github.com/ClickHouse/ClickHouse/pull/72750) ([Alexander Gololobov](https://github.com/davenger)).
* 지정된 테이블의 모든 파트에 대해, 또는 테이블이 지정되지 않은 경우 모든 테이블에 대해 프라이머리 인덱스를 로드하는 `SYSTEM LOAD PRIMARY KEY` 명령을 구현했습니다. 이는 벤치마크에 유용하며 쿼리 실행 중 불필요한 추가 지연 시간을 방지하는 데 도움이 됩니다. [#66252](https://github.com/ClickHouse/ClickHouse/pull/66252) [#67733](https://github.com/ClickHouse/ClickHouse/pull/67733) ([ZAWA\_ll](https://github.com/Zawa-ll)).
* `MergeTree` 테이블을 `ReplicatedMergeTree`로, 또는 그 반대로 ATTACH할 수 있는 쿼리가 추가되었습니다: `ATTACH TABLE ... AS REPLICATED` 및 `ATTACH TABLE ... AS NOT REPLICATED`. [#65401](https://github.com/ClickHouse/ClickHouse/pull/65401) ([Kirill](https://github.com/kirillgarbar)).
* 새로운 설정인 `http_response_headers`가 추가되어 HTTP 응답 헤더를 맞춤 설정할 수 있습니다. 예를 들어, 데이터베이스에 저장된 이미지를 브라우저에서 렌더링하도록 지정할 수 있습니다. 이로써 [#59620](https://github.com/ClickHouse/ClickHouse/issues/59620)이 해결되었습니다. [#72656](https://github.com/ClickHouse/ClickHouse/pull/72656) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `DateTime64`를 초 단위 고정 정밀도의 `Int64` 값으로 변환하는 함수 `toUnixTimestamp64Second`를 추가했습니다. 이를 통해 날짜가 unix epoch 이전인 경우에도 음수 값을 반환할 수 있습니다. [#70597](https://github.com/ClickHouse/ClickHouse/pull/70597) ([zhanglistar](https://github.com/zhanglistar)). [#73146](https://github.com/ClickHouse/ClickHouse/pull/73146) ([Robert Schulze](https://github.com/rschu1ze)).
* 원본 테이블의 프로젝션과 보조 인덱스 집합이 대상 테이블에 있는 프로젝션과 보조 인덱스 집합의 부분집합인 경우 ATTACH를 허용하는 새로운 설정 `enforce_index_structure_match_on_partition_manipulation`을 추가했습니다. [#70602](https://github.com/ClickHouse/ClickHouse/issues/70602)를 종료했습니다. [#70603](https://github.com/ClickHouse/ClickHouse/pull/70603) ([zwy991114](https://github.com/zwy991114)).
* ALTER USER `{ADD|MODIFY|DROP SETTING}`, ALTER USER `{ADD|DROP PROFILE}` 구문이 추가되었으며, ALTER ROLE 및 ALTER PROFILE에도 동일하게 적용됩니다. 이제 전체 설정 집합을 통째로 교체하는 대신 개별적으로 수정할 수 있습니다. [#72050](https://github.com/ClickHouse/ClickHouse/pull/72050) ([pufit](https://github.com/pufit)).
* Precision-Recall 곡선의 AUC(Area Under the Curve)를 계산하는 `arrayPRAUC` 함수를 추가했습니다. [#72073](https://github.com/ClickHouse/ClickHouse/pull/72073) ([Emmanuel](https://github.com/emmanuelsdias)).
* 배열 타입에 `indexOfAssumeSorted` 함수를 추가했습니다. 비내림차순으로 정렬된 배열에서 검색을 최적화합니다. 이 효과는 매우 큰 배열(요소 수가 100,000개를 초과하는 경우)에서 나타납니다. [#72517](https://github.com/ClickHouse/ClickHouse/pull/72517) ([Eric Kurbanov](https://github.com/erickurbanov)).
* 집계 함수 `groupConcat`에서 선택적 두 번째 인수로 Delimiter를 사용할 수 있습니다. [#72540](https://github.com/ClickHouse/ClickHouse/pull/72540) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 함수 `translate`는 이제 `from` 인수에 `to` 인수보다 더 많은 문자가 포함된 경우 해당 문자를 삭제할 수 있습니다. 예시: `SELECT translate('clickhouse', 'clickhouse', 'CLICK')`는 이제 `CLICK`을 반환합니다. [#71441](https://github.com/ClickHouse/ClickHouse/pull/71441) ([shuai.xu](https://github.com/shuai-xu)).

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

* MergeTree 정렬 키에서 내림차순 정렬을 지원하는 새로운 MergeTree 설정 `allow_experimental_reverse_key`가 추가되었습니다. 이는 시계열 분석, 특히 TopN 쿼리에 유용합니다. 예시 사용법: `ENGINE = MergeTree ORDER BY (time DESC, key)` - `time` 필드를 내림차순으로 정렬합니다. [#71095](https://github.com/ClickHouse/ClickHouse/pull/71095) ([Amos Bird](https://github.com/amosbird)).

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

* JOIN 재정렬. JOIN에서 어느 쪽을 쿼리 계획의 inner (build) 테이블(table)로 사용할지 선택하는 옵션이 추가되었습니다. 이는 `query_plan_join_swap_table`로 제어되며 `auto`로 설정할 수 있습니다. 이 모드에서는 ClickHouse가 행 수가 가장 적은 테이블을 선택하려고 시도합니다. [#71577](https://github.com/ClickHouse/ClickHouse/pull/71577) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 이제 `join_algorithm` 설정이 `default`로 지정되면(해당하는 경우) `parallel_hash` 알고리즘이 사용됩니다. `parallel_hash`를 사용할 수 없는 경우에는 이전의 두 가지 대안인 `direct`와 `hash`도 계속 고려됩니다. [#70788](https://github.com/ClickHouse/ClickHouse/pull/70788) ([Nikita Taranov](https://github.com/nickitat)).
* 조인 중 사용되는 해시 테이블 수를 줄이기 위해 `WHERE` 및 `ON` 표현식에서 공통 표현식을 추출하는 옵션이 추가되었습니다. 이는 JOIN ON 조건의 서로 다른 OR 절 내 AND 조건에 공통 부분이 있을 때 유용합니다. `optimize_extract_common_expressions = 1`로 활성화할 수 있습니다. [#71537](https://github.com/ClickHouse/ClickHouse/pull/71537) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 인덱스가 지정된 컬럼이 `LowCardinality(String)`으로 CAST되더라도 `SELECT`에서 인덱스를 사용할 수 있게 되었습니다. 이는 일부 테이블은 `String`이고 일부는 `LowCardinality(String)`인 Merge 테이블에 대해 쿼리를 실행할 때 발생할 수 있습니다. [#71598](https://github.com/ClickHouse/ClickHouse/pull/71598) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 병렬 레플리카와 로컬 플랜이 활성화된 상태에서 쿼리를 실행할 때는 worker에서 인덱스 분석을 수행하지 않습니다. coordinator가 자체 측(쿼리 initiator)에서 수행한 인덱스 분석을 바탕으로 worker가 읽을 범위를 선택합니다. 이로써 병렬 레플리카를 사용하는 짧은 쿼리도 단일 노드 쿼리만큼 낮은 지연 시간을 달성할 수 있습니다. [#72109](https://github.com/ClickHouse/ClickHouse/pull/72109) ([Igor Nikonov](https://github.com/devcrafter)).
* 객체 스토리지 디스크에서 `clickhouse disks remove --recursive`의 메모리 사용량이 줄었습니다. [#67323](https://github.com/ClickHouse/ClickHouse/pull/67323) ([Kirill](https://github.com/kirillgarbar)).
* [#57631](https://github.com/ClickHouse/ClickHouse/pull/57631)의 compact 파트에서 단일 컬럼의 서브컬럼을 읽는 최적화를 복원했습니다. 이 최적화는 실수로 삭제되었습니다. [#72285](https://github.com/ClickHouse/ClickHouse/pull/72285) ([Pavel Kruglov](https://github.com/Avogar)).
* comparator의 호출을 디버추얼라이즈하여 `LowCardinality(String)` 컬럼 정렬 속도를 높였습니다. [#72337](https://github.com/ClickHouse/ClickHouse/pull/72337) ([Alexander Gololobov](https://github.com/davenger)).
* 일부 단순한 데이터 타입에서 함수 `argMin`/`argMax`를 최적화했습니다. [#72350](https://github.com/ClickHouse/ClickHouse/pull/72350) ([alesapin](https://github.com/alesapin)).
* memory tracker에서 공유 잠금을 활용하도록 잠금 방식을 최적화해 잠금 경합을 줄였으며, 그 결과 CPU 수가 매우 많은 시스템에서 성능이 향상되었습니다. [#72375](https://github.com/ClickHouse/ClickHouse/pull/72375) ([Jiebin Sun](https://github.com/jiebinn)).
* 새로운 설정 `use_async_executor_for_materialized_views`를 추가했습니다. materialized view 쿼리를 비동기 방식으로, 경우에 따라 멀티스레드로 실행할 수 있어 INSERT 중 뷰 처리 속도를 높일 수 있지만 메모리를 더 많이 사용합니다. [#72497](https://github.com/ClickHouse/ClickHouse/pull/72497) ([alesapin](https://github.com/alesapin)).
* 집계 함수 상태의 역직렬화 성능을 개선했습니다(`AggregateFunction` 데이터 타입과 분산 쿼리에서). `RowBinary` 포맷 파싱 성능도 소폭 개선했습니다. [#72818](https://github.com/ClickHouse/ClickHouse/pull/72818) ([Anton Popov](https://github.com/CurtizJ)).
* 읽기 시 메모리 사용량을 줄이기 위해 병렬 레플리카 읽기에서 테이블 키 순서대로 범위를 분할합니다. [#72173](https://github.com/ClickHouse/ClickHouse/pull/72173) ([JIaQi](https://github.com/JiaQiTang98)).
* 삽입 배치에 파티션 키 값이 하나만 있는 경우 MergeTree에 대한 삽입 속도를 향상합니다. [#72348](https://github.com/ClickHouse/ClickHouse/pull/72348) ([alesapin](https://github.com/alesapin)).
* 백업에서 복원하는 동안 테이블을 병렬로 생성할 수 있도록 구현했습니다. 이 PR 이전에는 `RESTORE` 명령이 항상 단일 스레드로 테이블을 생성했기 때문에, 테이블이 많은 백업에서는 속도가 느릴 수 있었습니다. [#72427](https://github.com/ClickHouse/ClickHouse/pull/72427) ([Vitaly Baranov](https://github.com/vitlibar)).
* 마크 캐시가 크면 이를 삭제하는 데 눈에 띄는 시간이 걸릴 수 있습니다. 이 과정에서 Context 뮤텍스를 잡고 있으면 다른 많은 작업이 차단되며, 뮤텍스가 해제될 때까지 새 클라이언트 연결조차 수립할 수 없습니다. 또한 동기화를 위해 이 뮤텍스를 반드시 잡고 있을 필요는 없으며, `shared ptr`를 통해 캐시에 대한 로컬 참조만 유지하면 충분합니다. [#72749](https://github.com/ClickHouse/ClickHouse/pull/72749) ([Alexander Gololobov](https://github.com/davenger)).

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

* 기본적으로 non-equi 조건이 허용되도록 `allow_experimental_join_condition` 설정을 제거했습니다. [#69910](https://github.com/ClickHouse/ClickHouse/pull/69910) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 서버 구성(users.xml)의 설정이 이제 클라이언트에도 적용됩니다. `date_time_output_format`와 같은 포맷 설정에 유용합니다. [#71178](https://github.com/ClickHouse/ClickHouse/pull/71178) ([Michael Kolupaev](https://github.com/al13n321)).
* 서버/사용자의 메모리 사용량에 따라 `GROUP BY`/`ORDER BY`를 자동으로 디스크 기반으로 전환합니다. `max_bytes_ratio_before_external_group_by`/`max_bytes_ratio_before_external_sort` 쿼리 설정으로 제어됩니다. [#71406](https://github.com/ClickHouse/ClickHouse/pull/71406) ([Azat Khuzhin](https://github.com/azat)).
* 새로운 취소 로직 추가: `CancellationChecker`는 시작된 모든 쿼리의 타임아웃을 확인하고, 타임아웃에 도달하면 쿼리를 중지합니다. [#69880](https://github.com/ClickHouse/ClickHouse/pull/69880) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `Object`에서 `JSON`으로의 ALTER를 지원하여, 더 이상 사용이 권장되지 않는 `Object` 유형에서 쉽게 마이그레이션할 수 있습니다. [#71784](https://github.com/ClickHouse/ClickHouse/pull/71784) ([Pavel Kruglov](https://github.com/Avogar)).
* Enum에 없는 미지의 값을 set에서 허용합니다. [#72662](https://github.com/ClickHouse/ClickHouse/issues/72662)를 수정했습니다. [#72686](https://github.com/ClickHouse/ClickHouse/pull/72686) ([zhanglistar](https://github.com/zhanglistar)).
* `Enum` 데이터 타입에서 문자열 검색 연산자(예: LIKE)를 지원하고, [#72661](https://github.com/ClickHouse/ClickHouse/issues/72661)을 구현했습니다. [#72732](https://github.com/ClickHouse/ClickHouse/pull/72732) ([zhanglistar](https://github.com/zhanglistar)).
* 의미가 없는 일부 ALTER USER 쿼리가 허용되던 문제가 있었습니다. [#71227](https://github.com/ClickHouse/ClickHouse/issues/71227)를 수정했습니다. [#71286](https://github.com/ClickHouse/ClickHouse/pull/71286) ([Arthur Passos](https://github.com/arthurpassos)).
* 분산 `INSERT ... SELECT`의 실행 계획을 수립할 때 `prefer_locahost_replica`를 반영합니다. [#72190](https://github.com/ClickHouse/ClickHouse/pull/72190) ([filimonov](https://github.com/filimonov)).
* Azure는 Iceberg 사양을 위반해 Iceberg v1에 Iceberg v2라는 레이블을 잘못 붙였습니다. 이 문제는 [여기](https://github.com/ClickHouse/ClickHouse/issues/72091)에 설명되어 있습니다. Azure Iceberg Writer는 사양을 위반하는 Iceberg metadata 파일(및 manifest 파일) 을 생성합니다. 이제 v1 Iceberg 포맷 metadata를 v2 리더로 읽으려고 시도하게 되었고(Azure가 이런 방식으로 기록하기 때문입니다), manifest 파일에 해당 필드를 만들지 않았을 때 발생하는 오류도 추가했습니다. [#72277](https://github.com/ClickHouse/ClickHouse/pull/72277) ([Daniil Ivanik](https://github.com/divanik)).
* 이제 쿼리에서 `UNION [ALL]`을 사용해 `CREATE MATERIALIZED VIEW`를 생성할 수 있습니다. 동작 방식은 `JOIN`을 사용하는 materialized view와 동일합니다. 즉, `SELECT` 표현식에서 첫 번째 `table`만 삽입의 트리거로 작동하며, 나머지 모든 `table`은 무시됩니다. 다만 첫 번째 `table`에 대한 참조가 여러 개인 경우(예: 자기 자신과의 UNION), 그 참조들은 모두 삽입된 데이터 `block`으로 처리됩니다. [#72347](https://github.com/ClickHouse/ClickHouse/pull/72347) ([alesapin](https://github.com/alesapin)).
* 딕셔너리의 소스로 ClickHouse를 사용할 때 소스 쿼리 유효성 검사 기능이 추가되었습니다. [#72548](https://github.com/ClickHouse/ClickHouse/pull/72548) ([Alexey Katsman](https://github.com/alexkats)).
* 구성 다시 로드 시 ClickHouse가 ZooKeeper 변경 사항을 감지하도록 합니다. [#72593](https://github.com/ClickHouse/ClickHouse/pull/72593) ([Azat Khuzhin](https://github.com/azat)).
* 캐시의 전체 메모리 사용량을 줄이기 위해 캐시된 마크의 메모리 사용량 추정을 개선했습니다. [#72630](https://github.com/ClickHouse/ClickHouse/pull/72630) ([Antonio Andelic](https://github.com/antonio2368)).
* 새로운 `StartupScriptsExecutionState` 메트릭을 추가했습니다. 이 메트릭은 3가지 값을 가질 수 있습니다. 0 = 시작 스크립트가 아직 완료되지 않음, 1 = 시작 스크립트가 성공적으로 실행됨, 2 = 시작 스크립트 실행 실패. 이 메트릭이 필요한 이유는 클라우드에서 시작 스크립트가 성공적으로 실행되고 있는지 확인해야 하기 때문이며, 특히 기본 구성 릴리스 이후에 더욱 중요합니다. [#72637](https://github.com/ClickHouse/ClickHouse/pull/72637) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* 새로운 `MergeTreeIndexGranularityInternalArraysTotalSize` 메트릭을 `system.metrics`에 추가합니다. 이 메트릭은 높은
  영향을 받을 수 있는 대규모 데이터셋 인스턴스를 찾는 데 필요합니다
* 복제된 테이블 생성 시 재시도를 추가했습니다. [#72682](https://github.com/ClickHouse/ClickHouse/pull/72682) ([Vitaly Baranov](https://github.com/vitlibar)).
* 비활성 파트의 총 바이트 수를 집계할 수 있도록 `system.tables`에 `total_bytes_with_inactive`를 추가했습니다. [#72690](https://github.com/ClickHouse/ClickHouse/pull/72690) ([Kai Zhu](https://github.com/nauu)).
* MergeTree 설정이 `system.settings_changes`에 추가되었습니다. [#72694](https://github.com/ClickHouse/ClickHouse/pull/72694) ([Raúl Marín](https://github.com/Algunenano)).
* `notEmpty` 함수에서 JSON 타입을 지원하도록 했습니다. [#72741](https://github.com/ClickHouse/ClickHouse/pull/72741) ([Pavel Kruglov](https://github.com/Avogar)).
* GCS S3 오류 `AuthenticationRequired` 파싱을 지원합니다. [#72753](https://github.com/ClickHouse/ClickHouse/pull/72753) ([Vitaly Baranov](https://github.com/vitlibar)).
* 함수 `ifNull` 및 `coalesce`에서 `Dynamic` 타입을 지원합니다. [#72772](https://github.com/ClickHouse/ClickHouse/pull/72772) ([Pavel Kruglov](https://github.com/Avogar)).
* `toFloat64`/`touInt32`/기타 함수에서 `Dynamic`을 지원합니다. [#72989](https://github.com/ClickHouse/ClickHouse/pull/72989) ([Pavel Kruglov](https://github.com/Avogar)).
* S3 요청 설정 `http_max_fields`, `http_max_field_name_size`, `http_max_field_value_size`를 추가하고, 백업 생성 또는 복원 시 S3 API 응답을 파싱할 때 이를 사용합니다. [#72778](https://github.com/ClickHouse/ClickHouse/pull/72778) ([Vitaly Baranov](https://github.com/vitlibar)).
* 이 메타데이터를 사용하는 마지막 테이블이 삭제된 후에만 Storage S3(Azure)Queue의 Keeper에 있는 테이블 메타데이터를 삭제합니다. [#72810](https://github.com/ClickHouse/ClickHouse/pull/72810) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `JoinBuildTableRowCount`/`JoinProbeTableRowCount/JoinResultRowCount` 프로필 이벤트가 추가되었습니다. [#72842](https://github.com/ClickHouse/ClickHouse/pull/72842) ([Vladimir Cherkasov](https://github.com/vdimir)).
* MergeTree 정렬 키와 스킵 인덱스에서 서브컬럼을 지원합니다. [#72644](https://github.com/ClickHouse/ClickHouse/pull/72644) ([Pavel Kruglov](https://github.com/Avogar)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* MergeTree에서 발생할 수 있는 파트 중첩 문제를 수정했습니다(객체 스토리지 작업으로 인해 파트를 분리된 디렉터리로 이동하는 작업이 실패한 후 발생할 수 있음). [#70476](https://github.com/ClickHouse/ClickHouse/pull/70476) ([Azat Khuzhin](https://github.com/azat)).
* 테이블 이름이 너무 길 때의 오류 감지를 수정했습니다. 최대 길이를 알려주는 진단 메시지를 제공합니다. 새 함수 `getMaxTableNameLengthForDatabase`를 추가했습니다. [#70810](https://github.com/ClickHouse/ClickHouse/pull/70810) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `clickhouse-library-bridge`가 비정상 종료된 후 남는 좀비 프로세스 문제를 수정했습니다(이 프로그램은 안전하지 않은 라이브러리를 실행할 수 있게 합니다). [#71301](https://github.com/ClickHouse/ClickHouse/pull/71301) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* `plain_rewritable` 디스크에서 디렉터리 생성에 실패할 때 트랜잭션 롤백 중 발생하는 NoSuchKey 오류를 수정했습니다. [#71439](https://github.com/ClickHouse/ClickHouse/pull/71439) ([Julia Kartseva](https://github.com/jkartseva)).
* `Pretty` JSON 포맷에서 `Dynamic` 값 직렬화 문제를 수정했습니다. [#71923](https://github.com/ClickHouse/ClickHouse/pull/71923) ([Pavel Kruglov](https://github.com/Avogar)).
* `File`/`S3`/`URL`/`HDFS`/`Azure` 엔진의 CREATE 쿼리에 추론된 포맷 이름을 추가합니다. 이전에는 서버를 재시작할 때마다 포맷 이름을 추론했기 때문에, 지정된 데이터 파일이 삭제되면 서버 시작 시 오류가 발생했습니다. [#72108](https://github.com/ClickHouse/ClickHouse/pull/72108) ([Pavel Kruglov](https://github.com/Avogar)).
* 기존 분석기에서 JOIN ON 표현식에 UDF를 사용할 때 발생하는 버그를 수정했습니다. [#72179](https://github.com/ClickHouse/ClickHouse/pull/72179) ([Raúl Marín](https://github.com/Algunenano)).
* `StorageObjectStorage`의 사소한 버그 몇 가지를 수정했습니다. 기본적으로 `use_hive_partitioning`이 활성화되도록 해야 합니다. [#72185](https://github.com/ClickHouse/ClickHouse/pull/72185) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `min_age_to_force_merge_on_partition_only`가 이미 단일 파트로 머지된 동일한 파티션을 반복해서 머지하려다 멈추고, 여러 파트가 있는 파티션은 머지하지 않던 버그를 수정했습니다. [#72209](https://github.com/ClickHouse/ClickHouse/pull/72209) ([Christoph Wurm](https://github.com/cwurm)).
* 희소 컬럼 처리 중 드물게 발생하던 `SimpleSquashingChunksTransform` 크래시를 수정했습니다. [#72226](https://github.com/ClickHouse/ClickHouse/pull/72226) ([Vladimir Cherkasov](https://github.com/vdimir)).
* `GraceHashJoin`의 데이터 레이스를 수정하여 일부 행이 JOIN 출력에서 누락될 수 있던 문제를 해결했습니다. [#72233](https://github.com/ClickHouse/ClickHouse/pull/72233) ([Nikita Taranov](https://github.com/nickitat)).
* 구체화된 `_block_number` 컬럼이 있는 `ALTER DELETE` 쿼리의 문제를 수정했습니다(설정 `enable_block_number_column`이 활성화된 경우). [#72261](https://github.com/ClickHouse/ClickHouse/pull/72261) ([Anton Popov](https://github.com/CurtizJ)).
* `ColumnDynamic::dumpStructure()`가 예를 들어 `ConcurrentHashJoin` 생성자에서 동시 호출될 때 발생하던 data race 문제를 수정했습니다. [#72278](https://github.com/ClickHouse/ClickHouse/pull/72278) ([Nikita Taranov](https://github.com/nickitat)).
* 중복된 컬럼이 있는 `ORDER BY ... WITH FILL`에서 발생할 수 있는 `LOGICAL_ERROR`를 수정했습니다. [#72387](https://github.com/ClickHouse/ClickHouse/pull/72387) ([Vladimir Cherkasov](https://github.com/vdimir)).
* `optimize_functions_to_subcolumns` 적용 후 여러 경우에서 발생하던 타입 불일치를 수정했습니다. [#72394](https://github.com/ClickHouse/ClickHouse/pull/72394) ([Anton Popov](https://github.com/CurtizJ)).
* `AWS_CONTAINER_AUTHORIZATION_TOKEN_PATH` 대신 `AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE`을 사용합니다. [#71074](https://github.com/ClickHouse/ClickHouse/issues/71074)를 해결합니다. [#72397](https://github.com/ClickHouse/ClickHouse/pull/72397) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `BACKUP DATABASE db EXCEPT TABLES db.table` 쿼리 파싱 시 발생하던 실패를 수정했습니다. [#72429](https://github.com/ClickHouse/ClickHouse/pull/72429) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 빈 `Variant`를 생성할 수 없도록 했습니다. [#72454](https://github.com/ClickHouse/ClickHouse/pull/72454) ([Pavel Kruglov](https://github.com/Avogar)).
* `system.merges`의 `result_part_path` 포맷 오류를 수정했습니다. [#72567](https://github.com/ClickHouse/ClickHouse/pull/72567) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 요소가 1개인 glob(예: `{file}`)을 파싱할 때 발생하던 문제를 수정했습니다. [#72572](https://github.com/ClickHouse/ClickHouse/pull/72572) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `ARRAY JOIN`이 포함된 분산 쿼리에서 팔로어 server의 쿼리 생성 문제를 수정했습니다. [#69276](https://github.com/ClickHouse/ClickHouse/issues/69276)를 해결합니다. [#72608](https://github.com/ClickHouse/ClickHouse/pull/72608) ([Dmitry Novik](https://github.com/novikd)).
* DateTime64 IN DateTime64가 아무 결과도 반환하지 않던 버그를 수정했습니다. [#72640](https://github.com/ClickHouse/ClickHouse/pull/72640) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `flatten_nested=0`로 생성한 테이블이 있는 복제된 데이터베이스에 새 레플리카를 추가할 때 발생하던 메타데이터 불일치 문제를 수정했습니다. [#72685](https://github.com/ClickHouse/ClickHouse/pull/72685) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Keeper 내부 통신용 고급 SSL 구성을 수정했습니다. [#72730](https://github.com/ClickHouse/ClickHouse/pull/72730) ([Antonio Andelic](https://github.com/antonio2368)).
* S3Queue unordered mode에서 `tracked_files_limit` 설정값이 S3 파일 생성 속도보다 작을 때 발생하던 "No such key" 오류를 수정했습니다. [#72738](https://github.com/ClickHouse/ClickHouse/pull/72738) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 로컬에 사용자가 없을 때 RemoteQueryExecutor에서 예외가 발생하던 문제를 수정했습니다. [#72759](https://github.com/ClickHouse/ClickHouse/pull/72759) ([Andrey Zvonov](https://github.com/zvonand)).
* 구체화된 `_block_number` 컬럼이 있는 경우의 뮤테이션 문제를 수정했습니다(`enable_block_number_column` 설정이 활성화된 경우). [#72854](https://github.com/ClickHouse/ClickHouse/pull/72854) ([Anton Popov](https://github.com/CurtizJ)).
* 백업에 빈 파일이 있을 때 일반적인 재기록 가능 디스크에서 발생하던 백업/복원 문제를 수정했습니다. [#72858](https://github.com/ClickHouse/ClickHouse/pull/72858) ([Kseniia Sumarokova](https://github.com/kssenii)).
* DistributedAsyncInsertDirectoryQueue에서 삽입 작업이 제대로 취소되도록 수정했습니다. [#72885](https://github.com/ClickHouse/ClickHouse/pull/72885) ([Antonio Andelic](https://github.com/antonio2368)).
* 잘못된 데이터를 희소 컬럼으로 파싱할 때 발생하던 크래시를 수정했습니다(설정 `enable_parsing_to_custom_serialization`이 활성화된 경우 발생할 수 있습니다). [#72891](https://github.com/ClickHouse/ClickHouse/pull/72891) ([Anton Popov](https://github.com/CurtizJ)).
* 백업 복원 중 발생할 수 있는 비정상 종료 문제를 수정했습니다. [#72947](https://github.com/ClickHouse/ClickHouse/pull/72947) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `parallel_hash` JOIN 메서드에서, 쿼리의 `ON` 절에 부등호 필터가 포함된 복잡한 조건이 있을 경우 발생할 수 있는 버그를 수정했습니다. [#72993](https://github.com/ClickHouse/ClickHouse/pull/72993) ([Nikita Taranov](https://github.com/nickitat)).
* 손상된 역직렬화를 방지하기 위해 JSON 파싱 시 기본 포맷 설정을 사용하도록 했습니다. [#73043](https://github.com/ClickHouse/ClickHouse/pull/73043) ([Pavel Kruglov](https://github.com/Avogar)).
* 지원되지 않는 스토리지에서 트랜잭션 처리 중 발생하던 크래시를 수정했습니다. [#73045](https://github.com/ClickHouse/ClickHouse/pull/73045) ([Raúl Marín](https://github.com/Algunenano)).
* 메모리 추적이 과대 추정될 수 있는 문제를 수정했습니다 (`MemoryTracking`과 `MemoryResident` 간 차이가 계속 증가하던 경우). [#73081](https://github.com/ClickHouse/ClickHouse/pull/73081) ([Azat Khuzhin](https://github.com/azat)).
* Tuple을 파싱할 때 중복된 JSON 키를 확인합니다. 이전에는 이로 인해 파싱 중 `Invalid number of rows in Chunk`라는 논리 오류가 발생할 수 있었습니다. [#73082](https://github.com/ClickHouse/ClickHouse/pull/73082) ([Pavel Kruglov](https://github.com/Avogar)).

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

* 이전에는 `/utils` 폴더에 있었고 소스에서 수동으로 컴파일해야 했던 모든 소규모 유틸리티가 이제 기본 ClickHouse 번들에 포함됩니다. 이로써 다음 이슈가 해결되었습니다: [#72404](https://github.com/ClickHouse/ClickHouse/issues/72404). [#72426](https://github.com/ClickHouse/ClickHouse/pull/72426) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 22.3에서 도입된 `/etc/systemd/system/clickhouse-server.service` 삭제 동작을 제거했습니다. [#39323](https://github.com/ClickHouse/ClickHouse/issues/39323). [#72259](https://github.com/ClickHouse/ClickHouse/pull/72259) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* 메모리/CPU 제한으로 인한 컴파일 실패를 방지하기 위해 큰 번역 단위(translation unit)를 분할했습니다. [#72352](https://github.com/ClickHouse/ClickHouse/pull/72352) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* OSX: ICU 지원을 포함해 빌드하며, 이를 통해 콜레이션, 문자 집합 변환 및 기타 현지화 기능을 사용할 수 있습니다. [#73083](https://github.com/ClickHouse/ClickHouse/pull/73083) ([Raúl Marín](https://github.com/Algunenano)).

### <a id="2411" /> ClickHouse 릴리스 24.11, 2024-11-26. [발표 자료](https://presentations.clickhouse.com/2024-release-24.11/), [비디오](https://www.youtube.com/watch?v=0hpTvtq__4g)

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

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

* 시스템 테이블 `generate_series` 및 `generateSeries`를 제거했습니다. 이 테이블들은 다음 이슈에서 실수로 추가되었습니다: [#59390](https://github.com/ClickHouse/ClickHouse/issues/59390). [#71091](https://github.com/ClickHouse/ClickHouse/pull/71091) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `StorageExternalDistributed`를 제거했습니다. [#70600](https://github.com/ClickHouse/ClickHouse/issues/70600)을 해결합니다. [#71176](https://github.com/ClickHouse/ClickHouse/pull/71176) ([flynn](https://github.com/ucasfl)).
* 이제 Kafka, NATS, RabbitMQ 테이블 엔진은 `SOURCES` 계층에서 각각의 권한으로 관리됩니다. 이러한 엔진 타입으로 테이블을 생성하는 기본이 아닌 데이터베이스 사용자에게 권한을 추가하십시오. [#71250](https://github.com/ClickHouse/ClickHouse/pull/71250) ([Christoph Wurm](https://github.com/cwurm)).
* 실행 전에 전체 뮤테이션 쿼리(서브쿼리 포함)를 검사합니다. 이렇게 하면 잘못된 쿼리가 실수로 실행되거나, 유효한 뮤테이션을 막는 무효 뮤테이션이 쌓이는 일을 방지할 수 있습니다. [#71300](https://github.com/ClickHouse/ClickHouse/pull/71300) ([Christoph Wurm](https://github.com/cwurm)).
* 파일 시스템 캐시 설정 `skip_download_if_exceeds_query_cache`의 이름을 `filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit`로 변경했습니다. [#71578](https://github.com/ClickHouse/ClickHouse/pull/71578) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `deltaSumTimestamp`에서 `Enum`, `UInt128`, `UInt256` 인수 지원을 제거했습니다. 또한 `deltaSumTimestamp`의 두 번째("timestamp") 인수에 대한 `Int8`, `UInt8`, `Int16`, `UInt16` 지원도 제거했습니다. [#71790](https://github.com/ClickHouse/ClickHouse/pull/71790) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이제 Dictionary 스토리지, 딕셔너리 테이블 함수 또는 딕셔너리 자체에 대한 직접 SELECT를 사용해 딕셔너리에서 데이터를 직접 가져오는 경우, 해당 딕셔너리에 대한 `SELECT` 권한 또는 `dictGet` 권한만 있으면 충분합니다. 이는 ACL 우회를 방지하려는 이전 변경 사항인 [https://github.com/ClickHouse/ClickHouse/pull/57362](https://github.com/ClickHouse/ClickHouse/pull/57362) 및 [https://github.com/ClickHouse/ClickHouse/pull/65359와](https://github.com/ClickHouse/ClickHouse/pull/65359와) 일관됩니다. 또한 후자의 변경 사항도 하위 호환되도록 합니다. [#72051](https://github.com/ClickHouse/ClickHouse/pull/72051) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).

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

* 모든 실험적/베타 기능을 비활성화할 수 있는 전역 스위치로 `allow_feature_tier`를 구현했습니다. [#71841](https://github.com/ClickHouse/ClickHouse/pull/71841) [#71145](https://github.com/ClickHouse/ClickHouse/pull/71145) ([Raúl Marín](https://github.com/Algunenano)).
* JSON 서브컬럼 파일에서 이스케이프되지 않은 특수 기호로 인해 발생할 수 있는 `No such file or directory` 오류를 수정했습니다. [#71182](https://github.com/ClickHouse/ClickHouse/pull/71182) ([Pavel Kruglov](https://github.com/Avogar)).
* String에서 JSON으로의 ALTER를 지원합니다. 이 PR은 JSON 및 Dynamic 타입의 직렬화도 새 버전 V2로 변경합니다. 이전 버전 V1은 설정 `merge_tree_use_v1_object_and_dynamic_serialization`을 활성화하면 계속 사용할 수 있습니다(업그레이드 중 문제 없이 버전을 롤백할 수 있도록 사용할 수 있습니다). [#70442](https://github.com/ClickHouse/ClickHouse/pull/70442) ([Pavel Kruglov](https://github.com/Avogar)).
* JSON 문자열로의 직렬화/역직렬화를 통해 Map/Tuple/Object에서 새 JSON 타입으로의 단순 CAST를 구현했습니다. [#71320](https://github.com/ClickHouse/ClickHouse/pull/71320) ([Pavel Kruglov](https://github.com/Avogar)).
* 예상치 못한 결과가 발생할 수 있으므로 기본적으로 ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY에서는 Variant/Dynamic 타입을 허용하지 않습니다. [#69731](https://github.com/ClickHouse/ClickHouse/pull/69731) ([Pavel Kruglov](https://github.com/Avogar)).
* 혼동을 방지하기 위해 min/max 함수에서는 Dynamic/Variant 타입을 금지합니다. [#71761](https://github.com/ClickHouse/ClickHouse/pull/71761) ([Pavel Kruglov](https://github.com/Avogar)).

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

* 워크로드 및 리소스 관리를 기술하는 SQL 구문이 추가되었습니다. [https://clickhouse.com/docs/operations/workload-scheduling](https://clickhouse.com/docs/operations/workload-scheduling). [#69187](https://github.com/ClickHouse/ClickHouse/pull/69187) ([Sergei Trifonov](https://github.com/serxa)).
* 새로운 데이터 타입 `BFloat16`이 추가되었습니다. 이 타입은 8비트 exponent, 부호, 7비트 가수를 사용하는 16비트 부동소수점 수를 나타냅니다. 이 변경으로 [#44206](https://github.com/ClickHouse/ClickHouse/issues/44206)이 해결되었습니다. 이 변경으로 [#49937](https://github.com/ClickHouse/ClickHouse/issues/49937)이 해결되었습니다. [#64712](https://github.com/ClickHouse/ClickHouse/pull/64712) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 현재 사용자/역할에 특정 권한이 부여되었는지, 그리고 해당 테이블/컬럼이 메모리에 존재하는지 확인하는 `CHECK GRANT` 쿼리가 추가되었습니다. [#68885](https://github.com/ClickHouse/ClickHouse/pull/68885) ([Unalian](https://github.com/Unalian)).
* `iceberg[S3;HDFS;Azure]Cluster`, `deltaLakeCluster`, `hudiCluster` 테이블 함수가 추가되었습니다. [#72045](https://github.com/ClickHouse/ClickHouse/pull/72045) ([Mikhail Artemenko](https://github.com/Michicosun)).
* http\_handlers에서 사용자 이름/비밀번호를 설정하는 기능이 추가되었습니다(`dynamic_query_handler`/`predefined_query_handler`용). [#70725](https://github.com/ClickHouse/ClickHouse/pull/70725) ([Azat Khuzhin](https://github.com/azat)).
* ORDER BY WITH FILL 연산자에서 staleness 절을 지원합니다. [#71151](https://github.com/ClickHouse/ClickHouse/pull/71151) ([Mikhail Artemenko](https://github.com/Michicosun)).
* 각 인증 메서드에 자체 만료일을 설정할 수 있게 하고, 사용자 엔터티에서는 이를 제거했습니다. [#70090](https://github.com/ClickHouse/ClickHouse/pull/70090) ([Arthur Passos](https://github.com/arthurpassos)).
* 새로운 함수 `parseDateTime64`, `parseDateTime64OrNull`, `parseDateTime64OrZero`가 추가되었습니다. 기존 함수 `parseDateTime`(및 그 변형)과 비교하면, 이 함수들은 `DateTime` 대신 `DateTime64` 타입의 값을 반환합니다. [#71581](https://github.com/ClickHouse/ClickHouse/pull/71581) ([kevinyhzou](https://github.com/KevinyhZou)).

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

* 파트의 세분화 수준이 일정한 경우 인덱스 세분화 수준 값의 메모리 사용량을 최적화했습니다. 파트에 대해 항상 일정한 세분화 수준을 선택할 수 있는 기능(`use_const_adaptive_granularity` 설정)을 추가했으며, 이를 통해 메모리 사용이 항상 최적화되도록 지원합니다. 이는 대규모 워크로드(공유 스토리지에서 수조 개의 행)에서 데이터 파트의 메타데이터(인덱스 세분화 수준 값)로 인해 메모리 사용량이 지속적으로 증가하는 것을 방지하는 데 도움이 됩니다. [#71786](https://github.com/ClickHouse/ClickHouse/pull/71786) ([Anton Popov](https://github.com/CurtizJ)).
* 이제 병렬 처리를 위해 스레드에 분배할 때 `join_algorithm = 'parallel_hash'`에서는 입력 블록의 컬럼을 복사하지 않습니다. [#67782](https://github.com/ClickHouse/ClickHouse/pull/67782) ([Nikita Taranov](https://github.com/nickitat)).
* 겹치지 않는 파트에 대한 `Replacing` 머지 알고리즘을 최적화했습니다. [#70977](https://github.com/ClickHouse/ClickHouse/pull/70977) ([Anton Popov](https://github.com/CurtizJ)).
* 읽기 전용 및 write-once 디스크의 분리된 파트는 메트릭과 system.detached\_parts에 나열하지 않습니다. [#71086](https://github.com/ClickHouse/ClickHouse/pull/71086) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 기본적으로 비용이 큰 비동기 메트릭은 계산하지 않도록 했습니다. 이 기능은 [#40332](https://github.com/ClickHouse/ClickHouse/issues/40332)에서 도입되었지만, 단 한 고객에게만 필요한 무거운 백그라운드 작업을 두는 것은 바람직하지 않습니다. [#71087](https://github.com/ClickHouse/ClickHouse/pull/71087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `plain_rewritable` 디스크의 경우: 디렉터리 목록을 조회할 때 객체 스토리지 API를 호출하지 마십시오. 비용 비효율적일 수 있기 때문입니다. 대신 파일 이름 목록을 메모리에 저장합니다. 이에 따른 절충점은 초기 적재 시간이 늘어나고 파일 이름을 저장하는 데 필요한 메모리도 증가한다는 점입니다. [#70823](https://github.com/ClickHouse/ClickHouse/pull/70823) ([Julia Kartseva](https://github.com/jkartseva)).
* 임계 영역을 줄여 `system.query_metric_log` 수집 주기의 성능과 정확도를 개선했습니다. [#71473](https://github.com/ClickHouse/ClickHouse/pull/71473) ([Pablo Marcos](https://github.com/pamarcos)).
* 가상 행을 생성해 read-in-order를 최적화함으로써 머지 정렬 중 읽는 데이터 양을 줄였으며, 특히 여러 파트가 있을 때 유용합니다. [#62125](https://github.com/ClickHouse/ClickHouse/pull/62125) ([Shichao Jin](https://github.com/jsc0218)).
* server 설정 `async_load_system_database`가 추가되어 system 데이터베이스가 완전히 로드되지 않은 상태에서도 server를 시작할 수 있게 되었습니다. system 테이블이 많은 경우 ClickHouse를 더 빠르게 시작하는 데 도움이 됩니다. [#69847](https://github.com/ClickHouse/ClickHouse/pull/69847) ([Sergei Trifonov](https://github.com/serxa)).
* 데이터를 병렬로 압축할 수 있도록 `clickhouse-compressor`에 `--threads` 매개변수가 추가되었습니다. [#70860](https://github.com/ClickHouse/ClickHouse/pull/70860) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 삽입, 머지, 파트 fetch 및 테이블 시작 시점에 마크를 마크 캐시에 로드할 수 있도록 하는 `prewarm_mark_cache` 설정이 추가되었습니다. [#71053](https://github.com/ClickHouse/ClickHouse/pull/71053) ([Anton Popov](https://github.com/CurtizJ)).
* 메모리에 있는 index\_granularity 배열의 크기를 줄여 MergeTree 테이블 엔진 계열의 메모리 사용량을 줄였습니다. [#71595](https://github.com/ClickHouse/ClickHouse/pull/71595) ([alesapin](https://github.com/alesapin)).
* 비디스크 읽기에서는 파일 시스템 캐시 설정 `boundary_alignment`를 비활성화하여, 캐싱을 사용하는 독립형 원격 파일의 읽기 성능을 개선했습니다. [#71827](https://github.com/ClickHouse/ClickHouse/pull/71827) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `SELECT * FROM table LIMIT ...` 같은 쿼리는 실제로 사용되지 않는데도 파트 인덱스를 로드하곤 했습니다. [#71866](https://github.com/ClickHouse/ClickHouse/pull/71866) ([Alexander Gololobov](https://github.com/davenger)).
* `parallel_replicas_local_plan`이 기본적으로 활성화됩니다. 쿼리 시작 노드에서 완전한 로컬 실행 계획을 구축하면 더 적은 리소스로 병렬 레플리카 성능이 향상되고, 추가적인 쿼리 최적화를 적용할 수 있습니다. [#70171](https://github.com/ClickHouse/ClickHouse/pull/70171) ([Igor Nikonov](https://github.com/devcrafter)).

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

* `ch queries.sql`처럼 파일 인수와 함께 ClickHouse를 사용할 수 있게 했습니다. [#71589](https://github.com/ClickHouse/ClickHouse/pull/71589) ([Raúl Marín](https://github.com/Algunenano)).
* `Vertical` 포맷(`\G`로 쿼리를 끝내면 활성화되기도 함)은 다음과 같은 Pretty 형식의 기능을 지원합니다. - 숫자에서 천 단위 구분을 강조 표시합니다. - 사람이 읽기 쉬운 숫자 힌트를 출력합니다. [#71630](https://github.com/ClickHouse/ClickHouse/pull/71630) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 쿼리 시작 노드에서 클러스터의 다른 노드로 외부 사용자 역할을 전파합니다. 외부 인증자(LDAP 등)에 대한 액세스 권한이 쿼리 시작 노드에만 있을 때 유용합니다. [#70332](https://github.com/ClickHouse/ClickHouse/pull/70332) ([Andrey Zvonov](https://github.com/zvonand)).
* 집계 함수 `any`의 별칭으로 `anyRespectNulls`, `firstValueRespectNulls`, `anyValueRespectNulls`를 추가했습니다. 또한 집계 함수 `anyLast`의 별칭으로 `anyLastRespectNulls`와 `lastValueRespectNulls`도 추가했습니다. 이제 camel-case와 underscore를 혼용한 구문 대신, 더 자연스러운 camel-case 전용 구문을 사용할 수 있습니다. 예를 들어 `anyLast_respect_nullsStateIf` 대신 `SELECT anyLastRespectNullsStateIf`를 사용할 수 있습니다. [#71403](https://github.com/ClickHouse/ClickHouse/pull/71403) ([Peter Nguyen](https://github.com/petern48)).
* 구성 `date_time_utc` 매개변수를 추가하여 JSON 로그 포맷팅이 RFC 3339/ISO8601 포맷의 UTC 날짜-시간을 지원하도록 했습니다. [#71560](https://github.com/ClickHouse/ClickHouse/pull/71560) ([Ali](https://github.com/xogoodnow)).
* 사용자 인증을 위한 S3 엔드포인트의 새로운 헤더 유형(`access_header`)이 추가되었습니다. 이를 통해 우선순위가 가장 낮은 access header를 사용할 수 있으며, 이 값은 다른 소스(예: 테이블 스키마 또는 명명된 컬렉션)의 `access_key_id`로 덮어써집니다. [#71011](https://github.com/ClickHouse/ClickHouse/pull/71011) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 상수 배열과 상수로 캡처된 인수를 사용하는 고차 함수는 상수 값을 반환합니다. [#58400](https://github.com/ClickHouse/ClickHouse/pull/58400) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 쿼리 계획 단계 이름(`EXPLAIN PLAN json=1`)과 파이프라인 프로세서 이름(`EXPLAIN PIPELINE compact=0,graph=1`)에는 이제 접미사로 고유한 id가 붙습니다. 이를 통해 프로세서 프로파일러 출력과 OpenTelemetry trace를 explain 출력에 대응시킬 수 있습니다. [#63518](https://github.com/ClickHouse/ClickHouse/pull/63518) ([qhsong](https://github.com/qhsong)).
* Azure Blob Storage에 쓴 후 객체가 존재하는지 확인하는 옵션이 추가되었습니다. 이 옵션은 `check_objects_after_upload` 설정으로 제어됩니다. [#64847](https://github.com/ClickHouse/ClickHouse/pull/64847) ([Smita Kulkarni](https://github.com/SmitaRKulkarni)).
* 기본값으로 `clickhouse-local`에서 `Atomic` 데이터베이스를 사용합니다. [#50647](https://github.com/ClickHouse/ClickHouse/issues/50647)의 1번 및 5번 항목을 해결했습니다. [#44817](https://github.com/ClickHouse/ClickHouse/issues/44817)을 종료합니다. [#68024](https://github.com/ClickHouse/ClickHouse/pull/68024) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 예외는 오류를 클라이언트에 알리기 위해 HTTP 프로토콜을 위반합니다. [#68800](https://github.com/ClickHouse/ClickHouse/pull/68800) ([Sema Checherinda](https://github.com/CheSema)).
* DDLWorker에서 replica\_dir를 생성하고 레플리카를 활성 상태로 표시하여, 분산 DDL 쿼리를 실행 중인 호스트를 보고하도록 했습니다. [#69658](https://github.com/ClickHouse/ClickHouse/pull/69658) ([tuanpach](https://github.com/tuanpach)).
* distributed\_ddl\_output\_mode가 \*\_only\_active로 설정된 경우, 데이터베이스 ON CLUSTER 쿼리에서는 활성 상태의 레플리카만 대기합니다. [#69660](https://github.com/ClickHouse/ClickHouse/pull/69660) ([tuanpach](https://github.com/tuanpach)).
* `ON CLUSTER` 백업 및 복원의 오류 처리와 취소 기능 개선: - 한 호스트에서 백업 또는 복원이 실패하면 다른 호스트에서도 자동으로 취소됩니다 - 일부 호스트에서 실패하고 다른 호스트에서는 작업이 계속되더라도 이상한 오류가 발생하지 않습니다 - 한 호스트에서 백업 또는 복원이 취소되면 다른 호스트에서도 자동으로 취소됩니다 - `test_disallow_concurrency` 관련 문제 수정 - 이제 concurrency 비활성화가 더 안정적으로 동작합니다 - 이제 백업과 복원은 ZooKeeper 연결 끊김에 훨씬 더 잘 견딥니다. [#70027](https://github.com/ClickHouse/ClickHouse/pull/70027) ([Vitaly Baranov](https://github.com/vitlibar)).
* 스토리지 S3Queue의 일부 설정에서 `ALTER TABLE ... MODIFY/RESET SETTING ...`을 지원합니다. [#70811](https://github.com/ClickHouse/ClickHouse/pull/70811) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 서버 인증서를 다시 로드하는 절차와 동일한 방식으로 클라이언트 인증서도 다시 로드할 수 있는 기능이 추가되었습니다. [#70997](https://github.com/ClickHouse/ClickHouse/pull/70997) ([Roman Antonov](https://github.com/Romeo58rus)).
* 클라이언트 이력 크기를 설정할 수 있도록 하고, 기본 크기도 늘렸습니다. [#71014](https://github.com/ClickHouse/ClickHouse/pull/71014) ([Jiří Kozlovský](https://github.com/jirislav)).
* Parquet 네이티브 리더에 Boolean 타입 지원이 추가되었습니다. [#71055](https://github.com/ClickHouse/ClickHouse/pull/71055) ([Arthur Passos](https://github.com/arthurpassos)).
* S3와 상호작용할 때 "Malformed message"와 같은 더 많은 오류에 대해서도 재시도합니다. [#71088](https://github.com/ClickHouse/ClickHouse/pull/71088) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* S3 관련 일부 메시지의 로그 수준을 낮췄습니다. [#71090](https://github.com/ClickHouse/ClickHouse/pull/71090) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 공백이 포함된 HDFS 파일에 대한 쓰기를 지원합니다. [#71105](https://github.com/ClickHouse/ClickHouse/pull/71105) ([exmy](https://github.com/exmy)).
* 복제된 테이블, 딕셔너리, 뷰의 개수를 제한하는 설정이 추가되었습니다. [#71179](https://github.com/ClickHouse/ClickHouse/pull/71179) ([Kirill](https://github.com/kirillgarbar)).
* 가능한 경우 `AWS_CONTAINER_AUTHORIZATION_TOKEN` 대신 `AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE`을 사용합니다. [#71074](https://github.com/ClickHouse/ClickHouse/issues/71074)를 해결합니다. [#71269](https://github.com/ClickHouse/ClickHouse/pull/71269) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* ReplicatedMergeTree 재시작 스레드에서 metadata\_version ZooKeeper 노드 생성 로직을 제거합니다. 이 노드를 생성해야 하는 유일한 경우는 사용자가 20.4 이전 버전에서 24.10 이후 버전으로 바로 업데이트한 경우입니다. ClickHouse는 1년을 초과하는 업그레이드를 지원하지 않으므로, 노드를 생성하는 대신 예외를 발생시켜 단계적으로 업데이트하도록 안내해야 합니다. [#71385](https://github.com/ClickHouse/ClickHouse/pull/71385) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* 호스트별 `Overview (host)` 및 `Cloud overview (host)` 대시보드를 고급 대시보드에 추가했습니다. [#71422](https://github.com/ClickHouse/ClickHouse/pull/71422) ([alesapin](https://github.com/alesapin)).
* `clickhouse-local`은 기본적으로 암시적 SELECT를 사용하므로 계산기처럼 사용할 수 있습니다. 암시적 SELECT 모드의 구문 강조를 개선했습니다. [#71620](https://github.com/ClickHouse/ClickHouse/pull/71620) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 명령줄 애플리케이션이 여러 SQL 문에서도 구문 강조를 지원합니다. [#71622](https://github.com/ClickHouse/ClickHouse/pull/71622) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 명령줄 애플리케이션은 오류가 발생하면 0이 아닌 종료 코드를 반환합니다. 이전 버전에서는 `disks` 애플리케이션이 오류 발생 시 0을 반환했으며, 다른 애플리케이션은 오류 256 (`PARTITION_ALREADY_EXISTS`) 및 512 (`SET_NON_GRANTED_ROLE`)에서도 0을 반환했습니다. [#71623](https://github.com/ClickHouse/ClickHouse/pull/71623) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 사용자/그룹을 ID로 지정하면 `clickhouse su`가 실패합니다. 이 패치는 `UID:GID`도 허용하도록 수정합니다. [#71626](https://github.com/ClickHouse/ClickHouse/pull/71626) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* 설정 `filesystem_cache_prefer_bigger_buffer_size`를 사용해 파일 시스템 캐시의 메모리 버퍼 크기 증가를 비활성화할 수 있습니다. [#71640](https://github.com/ClickHouse/ClickHouse/pull/71640) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 파일 시스템 캐시에서 백그라운드 다운로드의 최대 파일 세그먼트 크기를 위한 별도 설정 `background_download_max_file_segment_size`를 추가했습니다. [#71648](https://github.com/ClickHouse/ClickHouse/pull/71648) ([Kseniia Sumarokova](https://github.com/kssenii)).
* JSON 타입 파싱이 약간 개선되었습니다. JSON 경로의 현재 블록에 여러 타입의 값이 포함된 경우, 특수한 우선순위에 따라 타입을 시도해 가장 적합한 타입을 선택합니다. [#71785](https://github.com/ClickHouse/ClickHouse/pull/71785) ([Pavel Kruglov](https://github.com/Avogar)).
* 이전에는 `system.asynchronous_metrics`에서 읽기를 수행하면 동시 업데이트가 끝날 때까지 기다려야 했습니다. 시스템에 높은 부하가 걸리면 이 대기 시간이 길어질 수 있습니다. 이 변경으로 이제 이전에 수집된 값은 언제나 읽을 수 있습니다. [#71798](https://github.com/ClickHouse/ClickHouse/pull/71798) ([Alexander Gololobov](https://github.com/davenger)).
* S3Queue 및 AzureQueue: `polling_max_timeout_ms`는 10분으로, `polling_backoff_ms`는 30초로 설정했습니다. [#71817](https://github.com/ClickHouse/ClickHouse/pull/71817) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `history` 기간 동안 `HostResolver`를 3번 갱신합니다. [#71863](https://github.com/ClickHouse/ClickHouse/pull/71863) ([Sema Checherinda](https://github.com/CheSema)).
* Advanced dashboard HTML 페이지에 `system.dashboards` 테이블에서 dashboard를 선택할 수 있는 드롭다운 셀렉터를 추가했습니다. [#72081](https://github.com/ClickHouse/ClickHouse/pull/72081) ([Sergei Trifonov](https://github.com/serxa)).
* 인증 후 기본 데이터베이스의 존재 여부를 확인합니다. [#71097](https://github.com/ClickHouse/ClickHouse/issues/71097)를 수정했습니다. [#71140](https://github.com/ClickHouse/ClickHouse/pull/71140) ([Konstantin Bogdanov](https://github.com/thevar1able)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* `ATTACH PART` 쿼리 중에 중복 제거된 파트는 더 이상 `attaching_` 접두사가 붙은 채로 남아 있지 않습니다. [#65636](https://github.com/ClickHouse/ClickHouse/pull/65636) ([Kirill](https://github.com/kirillgarbar)).
* `IN` 함수에서 DateTime64의 정밀도가 손실되던 버그 수정. [#67230](https://github.com/ClickHouse/ClickHouse/pull/67230) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `ORDER BY ... WITH FILL`에서 `IGNORE/RESPECT NULLS`를 사용하는 함수와 함께 사용할 때 발생할 수 있는 논리적 오류를 수정하고 [#57609](https://github.com/ClickHouse/ClickHouse/issues/57609)을 해결했습니다. [#68234](https://github.com/ClickHouse/ClickHouse/pull/68234) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 메모리 한도에 도달했을 때 포맷 `Native`를 사용하는 비동기 삽입에서 드물게 발생하던 논리적 오류를 수정했습니다. [#68965](https://github.com/ClickHouse/ClickHouse/pull/68965) ([Anton Popov](https://github.com/CurtizJ)).
* EPHEMERAL 컬럼의 CREATE TABLE COMMENT를 수정했습니다. [#70458](https://github.com/ClickHouse/ClickHouse/pull/70458) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* LowCardinality(Nullable)를 사용할 때 JSONExtract에서 발생하던 논리 오류를 수정했습니다. [#70549](https://github.com/ClickHouse/ClickHouse/pull/70549) ([Pavel Kruglov](https://github.com/Avogar)).
* 같은 zk 경로를 사용하는 다른 레플리카가 있을 때 system drop replica zkpath를 허용합니다. [#70642](https://github.com/ClickHouse/ClickHouse/pull/70642) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* AggregateFunctionGroupArraySorted의 크래시와 메모리 누수를 수정했습니다. [#70820](https://github.com/ClickHouse/ClickHouse/pull/70820) ([Michael Kolupaev](https://github.com/al13n321)).
* URL 엔진에서 사용자 헤더로 Content-Type을 재정의할 수 있는 기능을 추가했습니다. [#70859](https://github.com/ClickHouse/ClickHouse/pull/70859) ([Artem Iurin](https://github.com/ortyomka)).
* `StorageS3Queue`의 "이미 존재하므로 /processed에 영구 노드를 생성할 수 없습니다" 논리 오류를 수정했습니다. [#70984](https://github.com/ClickHouse/ClickHouse/pull/70984) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 특정 상황에서 명명된 세션이 종료되지 않고 계속 멈춘 상태로 남아 있던 문제를 수정했습니다. [#70998](https://github.com/ClickHouse/ClickHouse/pull/70998) ([Márcio Martins](https://github.com/marcio-absmartly)).
* 프로젝션 경량한 삭제의 rebuild 옵션에서 \_row\_exists 컬럼을 고려하지 않던 버그를 수정했습니다. [#71089](https://github.com/ClickHouse/ClickHouse/pull/71089) ([Shichao Jin](https://github.com/jsc0218)).
* Oracle Linux UEK 6.10에서 실행 시 발생하는 `AT_* is out of range` 문제를 수정했습니다. [#71109](https://github.com/ClickHouse/ClickHouse/pull/71109) ([Örjan Fors](https://github.com/op)).
* 예기치 않은 경쟁 상태로 인해 system.query\_metric\_log에 잘못된 값이 기록되던 문제를 수정했습니다. [#71124](https://github.com/ClickHouse/ClickHouse/pull/71124) ([Pablo Marcos](https://github.com/pamarcos)).
* quantileExactWeightedInterpolated의 집계 함수 이름이 일치하지 않던 문제를 수정했습니다. 이 버그는 [https://github.com/ClickHouse/ClickHouse/pull/69619에서](https://github.com/ClickHouse/ClickHouse/pull/69619에서) 처음 발생했습니다. cc @Algunenano. [#71168](https://github.com/ClickHouse/ClickHouse/pull/71168) ([李扬](https://github.com/taiyang-li)).
* 함수 비교 시 Dynamic에서 발생하던 bad\_weak\_ptr 예외를 수정했습니다. [#71183](https://github.com/ClickHouse/ClickHouse/pull/71183) ([Pavel Kruglov](https://github.com/Avogar)).
* 읽는 7z 파일이 로컬 머신에 있는지 확인합니다. [#71184](https://github.com/ClickHouse/ClickHouse/pull/71184) ([Daniil Ivanik](https://github.com/divanik)).
* HTTP 및 Async Inserts에서 Native 형식의 포맷 설정이 무시되던 문제를 수정했습니다. [#71193](https://github.com/ClickHouse/ClickHouse/pull/71193) ([Pavel Kruglov](https://github.com/Avogar)).
* 설정 `use_query_cache = 1`을 사용해 실행되는 SELECT 쿼리는 시스템 테이블(system table) 이름이 리터럴로 포함된 경우에도 더 이상 거부되지 않습니다. 예를 들어 이제 `SELECT * FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true;`가 작동합니다. [#71254](https://github.com/ClickHouse/ClickHouse/pull/71254) ([Robert Schulze](https://github.com/rschu1ze)).
* `enable_filesystem_cache=1`이 활성화되어 있지만 스토리지 구성의 디스크에 캐시 구성이 없는 경우 메모리 사용량이 증가하던 버그를 수정했습니다. [#71261](https://github.com/ClickHouse/ClickHouse/pull/71261) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Dynamic 컬럼의 LowCardinality 딕셔너리를 역직렬화하는 중 발생할 수 있는 "Cannot read all data" 오류를 수정했습니다. [#71299](https://github.com/ClickHouse/ClickHouse/pull/71299) ([Pavel Kruglov](https://github.com/Avogar)).
* 클라이언트의 병렬 출력 형식 정리가 완전히 이루어지지 않던 문제를 수정했습니다. [#71304](https://github.com/ClickHouse/ClickHouse/pull/71304) ([Raúl Marín](https://github.com/Algunenano)).
* 이름이 지정된 컬렉션에서 누락된 이스케이프 해제 처리를 추가했습니다. 이 수정이 없으면 clickhouse-server가 시작되지 않습니다. [#71308](https://github.com/ClickHouse/ClickHouse/pull/71308) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 네이티브 프로토콜에서 빈 블록이 있는 async 삽입 문제를 수정했습니다. [#71312](https://github.com/ClickHouse/ClickHouse/pull/71312) ([Anton Popov](https://github.com/CurtizJ)).
* 잘못된 와일드카드 권한을 부여할 때 발생하던 AST 포맷 불일치를 수정했습니다 [#71309](https://github.com/ClickHouse/ClickHouse/issues/71309). [#71332](https://github.com/ClickHouse/ClickHouse/pull/71332) ([pufit](https://github.com/pufit)).
* std::terminate를 방지하기 위해 데이터 파트의 소멸자에 try/catch를 추가했습니다. [#71364](https://github.com/ClickHouse/ClickHouse/pull/71364) ([alesapin](https://github.com/alesapin)).
* JSON 타입 힌트에서 의심스러운 타입과 실험적 타입을 검사합니다. [#71369](https://github.com/ClickHouse/ClickHouse/pull/71369) ([Pavel Kruglov](https://github.com/Avogar)).
* Linux가 아닌 OS에서도 메모리 worker thread가 시작되도록 수정했습니다([#71051](https://github.com/ClickHouse/ClickHouse/issues/71051) 수정). [#71384](https://github.com/ClickHouse/ClickHouse/pull/71384) ([Alexandre Snarskii](https://github.com/snar)).
* Variant 컬럼이 있는 청크에서 「행 수가 잘못되었습니다」 오류를 수정했습니다. [#71388](https://github.com/ClickHouse/ClickHouse/pull/71388) ([Pavel Kruglov](https://github.com/Avogar)).
* 이전 PostgreSQL 버전에서 "attgenerated" 컬럼이 존재하지 않는 오류를 수정했습니다. [#60651](https://github.com/ClickHouse/ClickHouse/issues/60651). [#71396](https://github.com/ClickHouse/ClickHouse/pull/71396) ([0xMihalich](https://github.com/0xMihalich)).
* 서버 로그에 과도한 항목이 쌓이지 않도록, 인증 실패 시도는 이제 `ERROR`가 아니라 `DEBUG` 수준으로 기록됩니다. [#71405](https://github.com/ClickHouse/ClickHouse/pull/71405) ([Robert Schulze](https://github.com/rschu1ze)).
* 잘못된 인수(예: `NULL`)를 전달했을 때 `mongodb` 테이블 함수가 충돌하던 문제를 수정했습니다. [#71426](https://github.com/ClickHouse/ClickHouse/pull/71426) ([Vladimir Cherkasov](https://github.com/vdimir)).
* optimize\_rewrite\_array\_exists\_to\_has에서 발생하던 충돌 문제를 수정했습니다. [#71432](https://github.com/ClickHouse/ClickHouse/pull/71432) ([Raúl Marín](https://github.com/Algunenano)).
* 삽입 작업에서 설정 `max_insert_delayed_streams_for_parallel_write`의 사용을 수정했습니다. 이전에는 이 설정이 올바르게 동작하지 않아 여러 파티션에 데이터를 쓰는 삽입 작업에서 메모리 사용량이 높아질 수 있었습니다. [#71474](https://github.com/ClickHouse/ClickHouse/pull/71474) ([Anton Popov](https://github.com/CurtizJ)).
* arrayJoin이 겉보기에는 `WHERE` 조건에 나타날 수 있는 경우에 발생하던 `Argument for function must be constant` 오류(구 분석기)를 수정했습니다. [https://github.com/ClickHouse/ClickHouse/pull/65414](https://github.com/ClickHouse/ClickHouse/pull/65414) 이후 발생한 회귀입니다. [#71476](https://github.com/ClickHouse/ClickHouse/pull/71476) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 컬럼이 0개인 SortCursor에서 발생하는 비정상 종료를 방지합니다(이전 분석기). [#71494](https://github.com/ClickHouse/ClickHouse/pull/71494) ([Raúl Marín](https://github.com/Algunenano)).
* 초기화되지 않은 ORC 데이터로 인해 발생하는 Date32 범위 초과 문제를 수정했습니다. 자세한 내용은 [https://github.com/apache/incubator-gluten/issues/7823를](https://github.com/apache/incubator-gluten/issues/7823를) 참조하십시오. [#71500](https://github.com/ClickHouse/ClickHouse/pull/71500) ([李扬](https://github.com/taiyang-li)).
* Dynamic 및 JSON 타입의 wide part에서 컬럼 크기 계산 문제를 수정했습니다. [#71526](https://github.com/ClickHouse/ClickHouse/pull/71526) ([Pavel Kruglov](https://github.com/Avogar)).
* materialized view 내부 쿼리에서 CTE와 함께 IN을 사용할 때 발생하던 분석기 문제를 수정했습니다. [#65598](https://github.com/ClickHouse/ClickHouse/issues/65598)를 해결했습니다. [#71538](https://github.com/ClickHouse/ClickHouse/pull/71538) ([Maksim Kita](https://github.com/kitaisreal)).
* 제약 조건에서 UDF 사용 시 발생하던 충돌을 방지합니다. [#71541](https://github.com/ClickHouse/ClickHouse/pull/71541) ([Raúl Marín](https://github.com/Algunenano)).
* 범위를 벗어나면 bitShift 함수에서 오류를 발생시키는 대신 0 또는 기본 문자를 반환합니다. [#71580](https://github.com/ClickHouse/ClickHouse/pull/71580) ([Pablo Marcos](https://github.com/pamarcos)).
* 특정 엔진에서 materialized view 사용 시 서버 충돌이 발생하던 문제를 수정했습니다. [#71593](https://github.com/ClickHouse/ClickHouse/pull/71593) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* 상수 배열의 별칭을 포함한 중첩 데이터 구조에서 Array join 수행 시 널 포인터 역참조가 발생하던 문제를 수정했습니다. 이로써 [#71677](https://github.com/ClickHouse/ClickHouse/issues/71677)가 해결되었습니다. [#71678](https://github.com/ClickHouse/ClickHouse/pull/71678) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 빈 Tuple로 ALTER를 수행할 때 발생하는 LOGICAL\_ERROR를 수정했습니다. 이 변경으로 [#71647](https://github.com/ClickHouse/ClickHouse/issues/71647)도 해결됩니다. [#71679](https://github.com/ClickHouse/ClickHouse/pull/71679) ([Amos Bird](https://github.com/amosbird)).
* 파티션 컬럼에 대한 프레디케이트에서 `NOT IN` 연산자를 사용할 때 상수 Set을 변환하지 않도록 수정했습니다. [#71695](https://github.com/ClickHouse/ClickHouse/pull/71695) ([Eduard Karacharov](https://github.com/korowa)).
* 더 쉽게 이해할 수 있도록 docker init script 실패 로그 메시지를 개선했습니다. [#71734](https://github.com/ClickHouse/ClickHouse/pull/71734) ([Андрей](https://github.com/andreineustroev)).
* LowCardinality(Nullable)에서 Dynamic으로 변환하는 CAST를 수정했습니다. 이전에는 `Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable` 오류로 이어질 수 있었습니다. [#71742](https://github.com/ClickHouse/ClickHouse/pull/71742) ([Pavel Kruglov](https://github.com/Avogar)).
* DateTime64 유형의 기본 키(primary key)가 있는 WHERE 조건에서 발생하던 `toDayOfWeek` 예외를 수정했습니다. [#71849](https://github.com/ClickHouse/ClickHouse/pull/71849) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* 희소 컬럼에 파싱한 뒤 기본값이 채워지도록 수정했습니다. [#71854](https://github.com/ClickHouse/ClickHouse/pull/71854) ([Anton Popov](https://github.com/CurtizJ)).
* 분산 테이블에서 입력이 ALIAS인 경우 발생하는 GROUPING 함수 오류를 수정하고, [#68602](https://github.com/ClickHouse/ClickHouse/issues/68602)를 해결했습니다. [#71855](https://github.com/ClickHouse/ClickHouse/pull/71855) ([Vladimir Cherkasov](https://github.com/vdimir)).
* `allow_experimental_join_condition` 사용 시 발생할 수 있는 크래시를 수정했으며, [#71693](https://github.com/ClickHouse/ClickHouse/issues/71693)을 해결했습니다. [#71857](https://github.com/ClickHouse/ClickHouse/pull/71857) ([Vladimir Cherkasov](https://github.com/vdimir)).
* `WITH TIES` 절을 사용하는 select SQL 문이 충분한 행을 반환하지 못할 수 있던 문제를 수정했습니다. [#71886](https://github.com/ClickHouse/ClickHouse/pull/71886) ([wxybear](https://github.com/wxybear)).
* arrayWithConstant 평가에서 컬럼이 배열 크기 제한을 초과한 것으로 잘못 판단될 때 발생하는 TOO\_LARGE\_ARRAY\_SIZE 예외를 수정했습니다. [#71894](https://github.com/ClickHouse/ClickHouse/pull/71894) ([Udi](https://github.com/udiz)).
* `clickhouse-benchmark`가 1초를 초과하는 쿼리에 대해 잘못된 메트릭을 보고했습니다. [#71898](https://github.com/ClickHouse/ClickHouse/pull/71898) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* clickhouse-client에서 진행 표시기와 진행 테이블 사이의 경쟁 상태를 수정했습니다. 이 문제는 FROM INFILE을 사용할 때 나타납니다. INSERT 쿼리 중 키 입력을 감지해 진행 테이블 표시를 전환합니다. [#71901](https://github.com/ClickHouse/ClickHouse/pull/71901) ([Julia Kartseva](https://github.com/jkartseva)).
* 클러스터 자동 감지를 위해 보조 Keeper를 사용합니다. [#71911](https://github.com/ClickHouse/ClickHouse/pull/71911) ([Anton Ivashkin](https://github.com/ianton-ru)).
* 24.6에서 깨진 system.s3/azure\_queue\_log의 rows\_processed 컬럼을 수정합니다. [#69975](https://github.com/ClickHouse/ClickHouse/issues/69975)를 해결합니다. [#71946](https://github.com/ClickHouse/ClickHouse/pull/71946) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `s3`/`s3Cluster` 함수가 불완전한 결과를 반환하거나 예외를 발생시키던 문제를 수정했습니다. 이 문제는 s3 URI에서 glob pattern(예: `pattern/*`)을 사용할 때 키가 `pattern/`인 빈 객체가 존재하는 경우와 관련이 있었습니다(이러한 객체는 S3 Console에서 자동으로 생성됩니다). 또한 설정 `s3_skip_empty_files`의 기본값이 `false`에서 `true`로 변경되었습니다. [#71947](https://github.com/ClickHouse/ClickHouse/pull/71947) ([Nikita Taranov](https://github.com/nickitat)).
* clickhouse-client의 구문 강조에서 발생하던 충돌을 수정했습니다. [#71864](https://github.com/ClickHouse/ClickHouse/issues/71864)를 해결합니다. [#71949](https://github.com/ClickHouse/ClickHouse/pull/71949) ([Nikolay Degterinsky](https://github.com/evillique)).
* 첫 번째 인수가 상수인 경우 `ORDER BY`에 2항 단조 함수가 포함된 `MergeTree` 테이블에서 발생하는 `Illegal type` 오류를 수정했습니다. [#71941](https://github.com/ClickHouse/ClickHouse/issues/71941)을 해결합니다. [#71966](https://github.com/ClickHouse/ClickHouse/pull/71966) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 서브쿼리 내에서 사용하는 EXPLAIN AST에서는 SELECT 쿼리만 허용합니다. 다른 유형의 쿼리를 사용하면 'Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery' 또는 `Inconsistent AST formatting`과 같은 논리 오류가 발생합니다. [#71982](https://github.com/ClickHouse/ClickHouse/pull/71982) ([Pavel Kruglov](https://github.com/Avogar)).
* `clickhouse-client`로 레코드를 삽입할 때 클라이언트는 서버에서 컬럼 설명을 읽습니다. 하지만 설명을 잘못된 순서로 기록하는 버그가 있었으며, 올바른 순서는 \[statistics, TTL, 설정]입니다. [#71991](https://github.com/ClickHouse/ClickHouse/pull/71991) ([Han Fei](https://github.com/hanfei1991)).
* `format_alter_commands_with_parentheses`가 활성화된 경우 `MOVE PARTITION ... TO TABLE ...` ALTER 명령의 포맷팅을 수정했습니다. [#72080](https://github.com/ClickHouse/ClickHouse/pull/72080) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 병렬 레플리카를 사용하는 쿌리에서 RIGHT / FULL 조인 관련 문제를 수정했습니다. 이제 RIGHT 조인은 병렬 레플리카로 실행할 수 있습니다(오른쪽 테이블 읽기가 분산됨). FULL 조인은 노드 간 병렬화는 할 수 없으며 로컬에서 실행됩니다. [#71162](https://github.com/ClickHouse/ClickHouse/pull/71162) ([Igor Nikonov](https://github.com/devcrafter)).
* 제한된 시스템 호출 때문에 Docker 컨테이너의 ClickHouse가 stderr에 "get\_mempolicy: Operation not permitted"를 출력하던 문제를 해결했습니다. [#70900](https://github.com/ClickHouse/ClickHouse/pull/70900) ([filimonov](https://github.com/filimonov)).
* ZooKeeper의 metadata\_version 레코드는 attach 스레드가 아니라 재시작 스레드에서 수정되도록 합니다. [#70297](https://github.com/ClickHouse/ClickHouse/pull/70297) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* 이는 지원되지 않으며 향후 완전히 제거될 예정인 "zero-copy" 복제에 대한 수정입니다. zero-copy 복제가 적용된 ReplicatedMergeTree에서 이를 사용하는 노드가 있는 동안에는 blob을 삭제하지 않습니다. [#71186](https://github.com/ClickHouse/ClickHouse/pull/71186) ([Antonio Andelic](https://github.com/antonio2368)).
* 이는 지원되지 않으며 완전히 제거될 예정인 "zero-copy" 복제에 대한 수정입니다. Keeper를 사용할 수 없을 때 발생할 수 있는 데이터 손실을 방지하기 위해 part를 zero-copy 디스크로 이동하기 전에 zero-copy 공유 잠금을 먼저 획득하도록 했습니다. [#71845](https://github.com/ClickHouse/ClickHouse/pull/71845) ([Aleksei Filatov](https://github.com/aalexfvk)).

### <a id="2410" /> ClickHouse 릴리스 24.10, 2024-10-31. [발표 자료](https://presentations.clickhouse.com/2024-release-24.10/), [영상](https://www.youtube.com/watch?v=AamIAjURp4U)

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

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

* 서브쿼리가 괄호 안에 있는 `UNION` 쿼리 체인에서는 이제 `FORMAT` 앞에 `SETTINGS`를 작성할 수 있습니다. 이로써 [#39712](https://github.com/ClickHouse/ClickHouse/issues/39712)가 해결되었습니다. 또한 쿼리 시퀀스에서 SETTINGS 절이 두 번 지정된 경우의 동작이 변경되었습니다. 해당 서브쿼리에는 가장 가까운 SETTINGS 절이 우선 적용됩니다. 이전 버전에서는 가장 바깥쪽 SETTINGS 절이 안쪽 절보다 우선 적용될 수 있었습니다. [#68614](https://github.com/ClickHouse/ClickHouse/pull/68614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이제 `[PRE]WHERE` 절의 필터 조건 재정렬이 기본적으로 허용됩니다. `allow_reorder_prewhere_conditions`를 `false`로 설정하면 비활성화할 수 있습니다. [#70657](https://github.com/ClickHouse/ClickHouse/pull/70657) ([Nikita Taranov](https://github.com/nickitat)).
* 호환되지 않는 라이선스를 사용하는 `idxd-config` 라이브러리를 제거했습니다. 이에 따라 실험적 Intel DeflateQPL 코덱도 함께 제거되었습니다. [#70987](https://github.com/ClickHouse/ClickHouse/pull/70987) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* 와일드카드 프리픽스에 대한 접근 권한을 부여할 수 있게 되었습니다. `GRANT SELECT ON db.table_pefix_* TO user`. [#65311](https://github.com/ClickHouse/ClickHouse/pull/65311) ([pufit](https://github.com/pufit)).
* 쿼리 런타임 중에 스페이스바를 누르면 클라이언트에 자세한 메트릭이 포함된 실시간 표가 표시됩니다. clickhouse-client의 새로운 `--progress-table` 옵션으로 이를 전역적으로 활성화할 수 있습니다. 새로운 `--enable-progress-table-toggle`은 `--progress-table` 옵션과 함께 사용되며, 제어 키(Space)를 눌러 진행률 표 렌더링을 전환할 수 있습니다. [#63689](https://github.com/ClickHouse/ClickHouse/pull/63689) ([Maria Khristenko](https://github.com/mariaKhr)), [#70423](https://github.com/ClickHouse/ClickHouse/pull/70423) ([Julia Kartseva](https://github.com/jkartseva)).
* ETag + 파일 경로의 hash를 캐시 키로 사용하여 객체 스토리지 테이블 엔진 및 데이터 레이크에서 읽은 파일을 캐시할 수 있게 했습니다. [#70135](https://github.com/ClickHouse/ClickHouse/pull/70135) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 쿼리를 사용해 테이블을 생성하는 기능 지원: `CREATE TABLE ... CLONE AS ...`. 소스 테이블의 스키마(schema)를 복제한 다음 모든 파티션을 새로 생성된 테이블에 ATTACH합니다. 이 기능은 `MergeTree` 계열 테이블에서만 지원됩니다. [#65015](https://github.com/ClickHouse/ClickHouse/issues/65015)를 해결합니다. [#69091](https://github.com/ClickHouse/ClickHouse/pull/69091) ([tuanpach](https://github.com/tuanpach)).
* 개별 쿼리에 대한 `system.events` 테이블의 메모리 및 메트릭 값 이력을 포함하고, 주기적으로 디스크에 플러시되는 새로운 시스템 테이블 `system.query_metric_log`를 추가했습니다. [#66532](https://github.com/ClickHouse/ClickHouse/pull/66532) ([Pablo Marcos](https://github.com/pamarcos)).
* 계산기 스타일의 표현식을 사용할 수 있도록 간단한 SELECT 쿼리를 암시적 SELECT로 작성할 수 있습니다. 예를 들어 `ch "1 + 2"`와 같습니다. 이는 새로운 설정 `implicit_select`로 제어됩니다. [#68502](https://github.com/ClickHouse/ClickHouse/pull/68502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 포맷 변환을 위한 단축 기능으로 `clickhouse local`의 `--copy` 모드를 지원합니다 [#68503](https://github.com/ClickHouse/ClickHouse/issues/68503). [#68583](https://github.com/ClickHouse/ClickHouse/pull/68583) ([Denis Hananein](https://github.com/denis-hananein)).
* `/merges` 경로에서 사용할 수 있는 머지 시각화용 내장 HTML 페이지를 추가했습니다. [#70821](https://github.com/ClickHouse/ClickHouse/pull/70821) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `arrayUnion` 함수 지원이 추가되었습니다. [#68989](https://github.com/ClickHouse/ClickHouse/pull/68989) ([Peter Nguyen](https://github.com/petern48)).
* 매개변수를 받는 SQL 별칭을 허용합니다. [#50665](https://github.com/ClickHouse/ClickHouse/pull/50665) ([Anton Kozlov](https://github.com/tonickkozlov)).
* 새로운 집계 함수 `quantileExactWeightedInterpolated`가 추가되었습니다. 이는 `quantileExactWeighted`를 기반으로 한 보간 버전입니다. 이미 `quantileExactInterpolatedWeighted`가 있는데 왜 새로운 `quantileExactWeightedInterpolated`가 필요한지 의아할 수 있습니다. 이유는 새 함수가 기존 함수보다 더 정확하기 때문입니다. 이는 Spark와의 호환성을 위한 것입니다. [#69619](https://github.com/ClickHouse/ClickHouse/pull/69619) ([李扬](https://github.com/taiyang-li)).
* 새로운 함수 `arrayElementOrNull`입니다. 배열 인덱스가 범위를 벗어나거나 맵 키를 찾지 못한 경우 `NULL`을 반환합니다. [#69646](https://github.com/ClickHouse/ClickHouse/pull/69646) ([李扬](https://github.com/taiyang-li)).
* 사용자가 로깅 대상을 걸러낼 수 있도록 `config.xml` 파일의 새로운 `message_regexp` 및 `message_regexp_negative` 필드에서 정규식를 지정할 수 있습니다. 가장 직관적인 개발자 경험을 위해 로깅은 포맷된 비색상 텍스트에 적용됩니다. [#69657](https://github.com/ClickHouse/ClickHouse/pull/69657) ([Peter Nguyen](https://github.com/petern48)).
* 문자열의 RIPEMD-160 암호화 해시를 계산하는 `RIPEMD160` 함수를 추가했습니다. 예시: `SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))`는 `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`를 반환합니다. [#70087](https://github.com/ClickHouse/ClickHouse/pull/70087) ([Dergousov Maxim](https://github.com/m7kss1)).
* `HDFS`에서 `Iceberg` 테이블을 읽을 수 있도록 지원합니다. [#70268](https://github.com/ClickHouse/ClickHouse/pull/70268) ([flynn](https://github.com/ucasfl)).
* `WITH ... INSERT` 형태의 CTE를 지원합니다. 이전에는 `INSERT ... WITH ...`만 지원했습니다. [#70593](https://github.com/ClickHouse/ClickHouse/pull/70593) ([Shichao Jin](https://github.com/jsc0218)).
* MongoDB 통합: 모든 MongoDB 타입 지원, MongoDB 측 WHERE 및 ORDER BY SQL 문 지원, MongoDB에서 지원되지 않는 표현식에 대한 제한. 새로운 통합은 기본적으로 비활성화되어 있으므로, 사용하려면 서버 구성에서 `<use_legacy_mongodb_integration>`을 `false`로 설정하십시오. [#63279](https://github.com/ClickHouse/ClickHouse/pull/63279) ([Kirill Nikiforov](https://github.com/allmazz)).
* 현재 profile에서 사용자 지정 설정을 찾지 못한 경우 예외를 발생시키지 않고 기본값을 반환하는 새 함수 `getSettingOrDefault`가 추가되었습니다. [#69917](https://github.com/ClickHouse/ClickHouse/pull/69917) ([Shankar](https://github.com/shiyer7474)).

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

* 갱신 가능 구체화 뷰는 이제 프로덕션 환경에서 사용할 수 있습니다. [#70550](https://github.com/ClickHouse/ClickHouse/pull/70550) ([Michael Kolupaev](https://github.com/al13n321)). 이제 복제된 데이터베이스에서도 갱신 가능 구체화 뷰를 지원합니다. [#60669](https://github.com/ClickHouse/ClickHouse/pull/60669) ([Michael Kolupaev](https://github.com/al13n321)).
* 병렬 레플리카가 실험 단계에서 베타로 전환되었습니다. 병렬 레플리카 알고리즘의 동작을 제어하는 설정도 개편되었습니다. 간단히 요약하면, ClickHouse에는 여러 레플리카를 활용한 병렬 읽기를 위한 4가지 알고리즘이 있으며, 이는 `parallel_replicas_mode` 설정에 반영되어 있습니다. 기본값은 `read_tasks`입니다. 또한 토글 스위치 역할을 하는 `enable_parallel_replicas` 설정이 추가되었습니다. [#63151](https://github.com/ClickHouse/ClickHouse/pull/63151) ([Alexey Milovidov](https://github.com/alexey-milovidov)), ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 대부분의 함수에서 `Dynamic` 내부 타입에 대해 함수를 실행할 수 있게 되어 `Dynamic` 타입을 지원합니다. [#69691](https://github.com/ClickHouse/ClickHouse/pull/69691) ([Pavel Kruglov](https://github.com/Avogar)).
* `input_format_binary_read_json_as_string/output_format_binary_write_json_as_string` 설정을 사용하면 `RowBinary` 포맷에서 `JSON` 타입을 바이너리 문자열로 읽고 쓸 수 있습니다. [#70288](https://github.com/ClickHouse/ClickHouse/pull/70288) ([Pavel Kruglov](https://github.com/Avogar)).
* `JSON` 컬럼을 Native 형식에서 단일 `String` 컬럼으로 직렬화/역직렬화할 수 있도록 했습니다. 출력 시에는 `output_format_native_write_json_as_string` 설정을 사용하십시오. 입력 시에는 컬럼 데이터 앞에 직렬화 버전 `1`을 사용하십시오. [#70312](https://github.com/ClickHouse/ClickHouse/pull/70312) ([Pavel Kruglov](https://github.com/Avogar)).
* MergeTree 테이블용 특수한 (실험적) 머지 선택기 모드가 도입되었습니다. 이 모드는 파트 수 제한에 근접한 파티션에 대해 더 공격적으로 동작합니다. 이 동작은 MergeTree 수준 설정 `merge_selector_use_blurry_base`로 제어됩니다. [#70645](https://github.com/ClickHouse/ClickHouse/pull/70645) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Avro의 `Union` 타입과 ClickHouse의 `Variant` 타입 간 범용 직렬화/역직렬화가 구현되었습니다. [#69713](https://github.com/ClickHouse/ClickHouse/issues/69713)을 해결합니다. [#69712](https://github.com/ClickHouse/ClickHouse/pull/69712) ([Jiří Kozlovský](https://github.com/jirislav)).

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

* 성능 향상을 위해 `IDisk`와 `IObjectStorage`를 리팩터링했습니다. `plain` 및 `plain_rewritable` 객체 스토리지의 테이블이 더 빠르게 초기화됩니다. [#68146](https://github.com/ClickHouse/ClickHouse/pull/68146) ([Alexey Milovidov](https://github.com/alexey-milovidov), [Julia Kartseva](https://github.com/jkartseva)). 비용 효율이 떨어질 수 있으므로, plain rewritable 디스크에서 파일 또는 디렉터리가 존재하는지 확인할 때 LIST 객체 스토리지 API를 호출하지 않도록 했습니다. [#70852](https://github.com/ClickHouse/ClickHouse/pull/70852) ([Julia Kartseva](https://github.com/jkartseva)). plain\_rewritable 디스크에서 객체 스토리지 HEAD API 요청 수를 줄였습니다. [#70915](https://github.com/ClickHouse/ClickHouse/pull/70915) ([Julia Kartseva](https://github.com/jkartseva)).
* 데이터를 희소 컬럼에 직접 파싱할 수 있는 기능이 추가되었습니다. [#69828](https://github.com/ClickHouse/ClickHouse/pull/69828) ([Anton Popov](https://github.com/CurtizJ)).
* 누락된 값이 많은 포맷(예: `JSONEachRow`)의 파싱 성능을 개선했습니다. [#69875](https://github.com/ClickHouse/ClickHouse/pull/69875) ([Anton Popov](https://github.com/CurtizJ)).
* Parquet row group의 병렬 읽기와 단일 스레드 모드에서의 row group 프리페치를 지원합니다. [#69862](https://github.com/ClickHouse/ClickHouse/pull/69862) ([LiuNeng](https://github.com/liuneng1994)).
* `pointInPolygon`에 minmax 인덱스를 지원합니다. [#62085](https://github.com/ClickHouse/ClickHouse/pull/62085) ([JackyWoo](https://github.com/JackyWoo)).
* Parquet 파일을 읽을 때 블룸 필터를 활용합니다. [#62966](https://github.com/ClickHouse/ClickHouse/pull/62966) ([Arthur Passos](https://github.com/arthurpassos)).
* 파트 잠금으로 인해 INSERT가 SELECT에 영향을 주지 않도록 파트 이름 변경을 lock-free 방식으로 처리했습니다 (`fsync_part_directory`를 사용하는 일반적인 환경에서 INSERT를 병렬로 수행하면 SELECT의 QPS가 2배 증가했으며, 높은 부하에서는 그 효과가 더욱 큽니다). 참고로 현재는 `ReplicatedMergeTree`에만 적용됩니다. [#64955](https://github.com/ClickHouse/ClickHouse/pull/64955) ([Azat Khuzhin](https://github.com/azat)).
* `materialize ttl`에서 `ttl_only_drop_parts`를 적용합니다. TTL을 다시 계산하는 데 필요한 컬럼만 읽고, 파트를 빈 파트로 대체해 삭제합니다. [#65488](https://github.com/ClickHouse/ClickHouse/pull/65488) ([Andrey Zvonov](https://github.com/zvonand)).
* 잠금 경합을 최소화하기 위해 ThreadPool의 스레드 생성 방식을 최적화했습니다. 이제 높은 부하 시 작업 스케줄링과 스레드 관리가 지연되지 않도록 임계 구역 밖에서 스레드를 생성합니다. 그 결과, 높은 동시성 부하에서도 ClickHouse의 응답성이 훨씬 더 향상됩니다. [#68694](https://github.com/ClickHouse/ClickHouse/pull/68694) ([filimonov](https://github.com/filimonov)).
* `ORC`에서 `LowCardinality` 문자열 컬럼 읽기를 지원합니다. [#69481](https://github.com/ClickHouse/ClickHouse/pull/69481) ([李扬](https://github.com/taiyang-li)).
* `part_log`, `query_views_log`, `filesystem_cache_log`와 같은 시스템 로그의 `ProfileEvents`에 `LowCardinality`를 사용합니다. [#70152](https://github.com/ClickHouse/ClickHouse/pull/70152) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `fromUnixTimestamp`/`toUnixTimestamp` 함수 성능을 개선했습니다. [#71042](https://github.com/ClickHouse/ClickHouse/pull/71042) ([kevinyhzou](https://github.com/KevinyhZou)).
* 블로킹 I/O에서 읽을 때 페이지 캐시의 비차단 읽기를 서버 전체에서 비활성화하지 않도록 했습니다. 이전에는 단일 파일 시스템(예: tmpfs)만 `preadv2` 시스템 호출을 지원하지 않고 다른 파일 시스템은 지원하는 경우 성능이 저하되었습니다. [#70299](https://github.com/ClickHouse/ClickHouse/pull/70299) ([Antonio Andelic](https://github.com/antonio2368)).
* `ALTER TABLE .. REPLACE PARTITION`는 이제 다른 파티션에서 발생하는 뮤테이션/머지를 더 이상 기다리지 않습니다. [#59138](https://github.com/ClickHouse/ClickHouse/pull/59138) ([Vasily Nemkov](https://github.com/Enmk)).
* Keeper에서 ACL을 동기화할 때는 유효성 검사를 수행하지 않습니다. 생성 시 이미 유효성 검사가 이루어집니다. 큰 차이는 아닐 수 있지만, 생성된 사용자가 수만 명 또는 그 이상인 설치 환경도 있으며, 불필요한 hash 유효성 검사로 인해 server 시작 시 완료까지 오랜 시간이 걸릴 수 있습니다(Keeper에서 모든 항목을 동기화합니다). [#70644](https://github.com/ClickHouse/ClickHouse/pull/70644) ([Raúl Marín](https://github.com/Algunenano)).

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

* `CREATE TABLE AS`는 `PRIMARY KEY`, `ORDER BY`와 같은 절(`MergeTree` 테이블)을 복사합니다. [#69739](https://github.com/ClickHouse/ClickHouse/pull/69739) ([sakulali](https://github.com/sakulali)).
* Keeper에서 64비트 XID를 지원하도록 추가했습니다. `use_xid_64` 구성 값을 통해 활성화할 수 있습니다. [#69908](https://github.com/ClickHouse/ClickHouse/pull/69908) ([Antonio Andelic](https://github.com/antonio2368)).
* Bool 설정의 명령줄 인수는 인수에 값이 지정되지 않으면 true로 설정됩니다(예: `clickhouse-client --optimize_aggregation_in_order --query "SELECT 1"`). [#70459](https://github.com/ClickHouse/ClickHouse/pull/70459) ([davidtsuk](https://github.com/davidtsuk)).
* 거의 꽉 찬 디스크에서 삽입이 수행되지 않도록 사용자 수준 설정 `min_free_disk_bytes_to_perform_insert` 및 `min_free_disk_perform_to_throw_insert`가 추가되었습니다. [#69755](https://github.com/ClickHouse/ClickHouse/pull/69755) ([Marco Vilas Boas](https://github.com/marco-vb)).
* 설정에 대한 내장 문서는 웹사이트의 문서보다 훨씬 더 자세하고 완전해집니다. 이는 앞으로 웹사이트 문서를 항상 소스 코드에서 자동 생성하도록 하기 위한 첫 단계입니다. 이는 장기적으로 다음과 같은 의미를 갖습니다: - 모든 설정이 빠짐없이 포함됨이 보장됩니다; - 기본값 정보가 Obsolete 상태가 될 가능성이 없습니다; - 각 ClickHouse 버전에 대해 이 문서를 생성할 수 있습니다; - 인터넷에 연결되지 않은 환경에서도 server 자체가 문서를 표시할 수 있습니다. 웹사이트의 문서를 소스 코드에서 생성합니다. [#70289](https://github.com/ClickHouse/ClickHouse/pull/70289) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 함수 `replace`에서 빈 needle을 허용하여 PostgreSQL과 동일하게 동작하도록 했습니다. [#69918](https://github.com/ClickHouse/ClickHouse/pull/69918) ([zhanglistar](https://github.com/zhanglistar)).
* `replaceRegexp*` 함수에서 빈 검색 문자열도 허용합니다. [#70053](https://github.com/ClickHouse/ClickHouse/pull/70053) ([zhanglistar](https://github.com/zhanglistar)).
* 스토리지 정책에 따라, 기본 디스크의 `store/...` 디렉터리 대신 테이블 데이터의 실제 경로를 가리키는 테이블용 심볼릭 링크가 `data/database_name/` 디렉터리에 생성됩니다. [#61777](https://github.com/ClickHouse/ClickHouse/pull/61777) ([Kirill](https://github.com/kirillgarbar)).
* `JSON`에서 `Enum` field를 parsing할 때, 정수를 담은 문자열은 해당 `Enum` 요소로 해석됩니다. 이 변경으로 [#65119](https://github.com/ClickHouse/ClickHouse/issues/65119)가 해결되었습니다. [#66801](https://github.com/ClickHouse/ClickHouse/pull/66801) ([scanhex12](https://github.com/scanhex12)).
* `LEADING` 또는 `TRAILING` 빈 문자열에 대해 `TRIM`을 no-op으로 허용합니다. [#67792](https://github.com/ClickHouse/ClickHouse/issues/67792)를 해결합니다. [#68455](https://github.com/ClickHouse/ClickHouse/pull/68455) ([Peter Nguyen](https://github.com/petern48)).
* Spark와 `cast(timestamp as String)`의 호환성을 개선했습니다. [#69179](https://github.com/ClickHouse/ClickHouse/pull/69179) ([Wenzheng Liu](https://github.com/lwz9103)).
* `enable_analyzer`가 `true`로 설정된 경우, 상수 표현식 계산에 항상 새로운 분석기를 사용합니다. 또한 상수 표현식에 `SELECT` 쿼리를 사용하지 않고도 `executable` 테이블 함수 인수 계산을 지원합니다. [#69292](https://github.com/ClickHouse/ClickHouse/pull/69292) ([Dmitry Novik](https://github.com/novikd)).
* 특수 문자가 포함된 식별자를 허용하지 않도록 설정 `enable_secure_identifiers`를 추가했습니다. [#69411](https://github.com/ClickHouse/ClickHouse/pull/69411) ([tuanpach](https://github.com/tuanpach)).
* `SHOW CREATE TABLE` 쿼리 결과에서 식별자의 인용 규칙을 정의하는 `show_create_query_identifier_quoting_rule`이 추가되었습니다. 가능한 값: - `user_display`: 식별자가 키워드인 경우. - `when_necessary`: 식별자가 `{"distinct", "all", "table"}` 중 하나이거나, 모호함을 유발할 수 있는 경우(컬럼 이름, 딕셔너리 속성 이름). - `always`: 식별자를 항상 인용합니다. [#69448](https://github.com/ClickHouse/ClickHouse/pull/69448) ([tuanpach](https://github.com/tuanpach)).
* 액세스 엔터티의 종속성 복원 개선 [#69563](https://github.com/ClickHouse/ClickHouse/pull/69563) ([Vitaly Baranov](https://github.com/vitlibar)).
* `clickhouse-client` 또는 다른 CLI 애플리케이션을 실행할 때 서버 과부하로 시작이 느린 상태에서 `SELECT`와 같은 쿼리 입력을 시작하면, 이전 버전에서는 인사 메시지를 출력하기 전에 터미널 에코의 남은 내용이 표시되어 `ClickHouse local version 24.10.1.1.` 대신 `SELECTClickHouse local version 24.10.1.1.`처럼 나타났습니다. 이제 이 문제가 수정되었습니다. 이 변경으로 [#31696](https://github.com/ClickHouse/ClickHouse/issues/31696)이 해결되었습니다. [#69856](https://github.com/ClickHouse/ClickHouse/pull/69856) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `system.replicas` 테이블에 새 컬럼 `readonly_duration`을 추가했습니다. 알림에서 실제 읽기 전용 레플리카와 센티널 레플리카를 구분할 수 있도록 하기 위해 필요합니다. [#69871](https://github.com/ClickHouse/ClickHouse/pull/69871) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `join_output_by_rowlist_perkey_rows_threshold` 설정 유형을 부호 없는 정수로 변경했습니다. [#69886](https://github.com/ClickHouse/ClickHouse/pull/69886) ([kevinyhzou](https://github.com/KevinyhZou)).
* 쿼리 설정을 포함하도록 OpenTelemetry 스팬 로깅을 개선했습니다. [#70011](https://github.com/ClickHouse/ClickHouse/pull/70011) ([sharathks118](https://github.com/sharathks118)).
* 람다 결과 유형이 예상과 다를 때 고차 배열 함수에 대한 진단 정보를 추가합니다. [#70093](https://github.com/ClickHouse/ClickHouse/pull/70093) ([ttanay](https://github.com/ttanay)).
* Keeper 개선: 클러스터 변경 중 잠금 사용을 줄였습니다. [#70275](https://github.com/ClickHouse/ClickHouse/pull/70275) ([Antonio Andelic](https://github.com/antonio2368)).
* `SHOW GRANTS` 명령에 `WITH IMPLICIT` 및 `FINAL` 키워드를 추가했습니다. 암시적 권한과 관련된 사소한 버그를 수정했습니다: [#70094](https://github.com/ClickHouse/ClickHouse/issues/70094). [#70293](https://github.com/ClickHouse/ClickHouse/pull/70293) ([pufit](https://github.com/pufit)).
* MergeTree 설정에 `compatibility`를 반영합니다. `compatibility` 값은 서버 시작 시 `default` 프로필에서 가져오며, 이에 따라 기본 MergeTree 설정이 변경됩니다. 이후 `compatibility` 설정을 추가로 변경해도 MergeTree 설정에는 영향을 미치지 않습니다. [#70322](https://github.com/ClickHouse/ClickHouse/pull/70322) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 서버 간 통신 중 오류가 발생할 때 큰 HTTP 응답 본문이 로그에 과도하게 기록되지 않도록 했습니다. [#70487](https://github.com/ClickHouse/ClickHouse/pull/70487) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 한 번에 이동할 수 있는 최대 파트 수를 제어하는 새로운 설정 `max_parts_to_move`가 추가되었습니다. [#70520](https://github.com/ClickHouse/ClickHouse/pull/70520) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 일부 로그 메시지의 발생 빈도를 제한합니다. [#70601](https://github.com/ClickHouse/ClickHouse/pull/70601) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 클라이언트에서 `PART` 한정자가 포함된 `CHECK TABLE`이 잘못된 형식으로 표시되었습니다. [#70660](https://github.com/ClickHouse/ClickHouse/pull/70660) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Parquet 네이티브 writer를 사용한 컬럼 인덱스 및 오프셋 인덱스 쓰기를 지원합니다. [#70669](https://github.com/ClickHouse/ClickHouse/pull/70669) ([LiuNeng](https://github.com/liuneng1994)).
* Joda 문법에서 마이크로초와 시간대가 포함된 `DateTime64` 파싱을 지원합니다("joda"는 날짜와 시간을 다루는 널리 사용되는 Java 라이브러리이며, "Joda 문법"은 해당 라이브러리의 스타일입니다). [#70737](https://github.com/ClickHouse/ClickHouse/pull/70737) ([kevinyhzou](https://github.com/KevinyhZou)).
* 클라우드 스토리지가 [배치 삭제](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html)를 지원하는지 판별하는 방식을 변경했습니다. [#70786](https://github.com/ClickHouse/ClickHouse/pull/70786) ([Vitaly Baranov](https://github.com/vitlibar)).
* 네이티브 리더의 Parquet page v2 지원. [#70807](https://github.com/ClickHouse/ClickHouse/pull/70807) ([Arthur Passos](https://github.com/arthurpassos)).
* 테이블에 `storage_policy`와 `disk`가 모두 설정되어 있는지 확인합니다. `disk` 설정 사용 시 새 스토리지 정책이 기존 정책과 호환되는지 확인하는 검사가 추가되었습니다. [#70839](https://github.com/ClickHouse/ClickHouse/pull/70839) ([Kirill](https://github.com/kirillgarbar)).
* `system.s3_queue_settings` 및 `system.azure_queue_settings`가 추가되었습니다. [#70841](https://github.com/ClickHouse/ClickHouse/pull/70841) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 이제 `base58Encode` 및 `base58Decode` 함수는 `FixedString` 유형의 인수도 허용합니다. 예시: `SELECT base58Encode(toFixedString('plaintext', 9));`. [#70846](https://github.com/ClickHouse/ClickHouse/pull/70846) ([Faizan Patel](https://github.com/faizan2786)).
* 파트 로그의 모든 항목 유형에 `partition` 컬럼을 추가했습니다. 이전에는 일부 항목에만 설정되어 있었습니다. 이로써 [#70819](https://github.com/ClickHouse/ClickHouse/issues/70819)가 해결되었습니다. [#70848](https://github.com/ClickHouse/ClickHouse/pull/70848) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 머지 분석 및 시각화에 도움이 되도록 `system.part_log`에 `MergeStart` 및 `MutateStart` 이벤트가 추가되었습니다. [#70850](https://github.com/ClickHouse/ClickHouse/pull/70850) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 머지된 소스 파트 수를 나타내는 프로필 이벤트를 추가했습니다. 이를 통해 운영 환경에서 MergeTree의 팬아웃을 모니터링할 수 있습니다. [#70908](https://github.com/ClickHouse/ClickHouse/pull/70908) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 파일 시스템 캐시의 백그라운드 다운로드가 다시 활성화되었습니다. [#70929](https://github.com/ClickHouse/ClickHouse/pull/70929) ([Nikita Taranov](https://github.com/nickitat)).
* 전문가용으로만 사용되는 새 머지 선택기 알고리즘 `Trivial`이 추가되었습니다. 이 알고리즘은 `Simple` 머지 선택기보다 더 좋지 않습니다. [#70969](https://github.com/ClickHouse/ClickHouse/pull/70969) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `CREATE OR REPLACE VIEW`를 원자적으로 지원합니다. [#70536](https://github.com/ClickHouse/ClickHouse/pull/70536) ([tuanpach](https://github.com/tuanpach))
* 여러 조건에 일치하는 경우 동일한 이벤트가 여러 번 집계되는 것을 방지하기 위해 집계 함수 `windowFunnel`에 `strict_once` 모드를 추가했습니다. [#21835](https://github.com/ClickHouse/ClickHouse/issues/21835) 해결. [#69738](https://github.com/ClickHouse/ClickHouse/pull/69738) ([Vladimir Cherkasov](https://github.com/vdimir)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* 전역 Context 객체에 구성 업데이트를 적용합니다. 이를 통해 [#62308](https://github.com/ClickHouse/ClickHouse/issues/62308)과 같은 문제가 해결됩니다. [#62944](https://github.com/ClickHouse/ClickHouse/pull/62944) ([Amos Bird](https://github.com/amosbird)).
* 기본값만 적용되던 탓에 `ReadSettings`에서 사용자 설정값을 사용하지 않던 문제를 수정했습니다. [#65625](https://github.com/ClickHouse/ClickHouse/pull/65625) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `sumMapFiltered`에서 signed 인수 사용 시 발생하는 유형 불일치 문제를 수정했습니다. [#58408](https://github.com/ClickHouse/ClickHouse/pull/58408) ([Chen768959](https://github.com/Chen768959)).
* 선택적 시간대 인수가 전달될 때 `toHour`와 유사한 변환 함수의 단조성 문제를 수정했습니다. [#60264](https://github.com/ClickHouse/ClickHouse/pull/60264) ([Amos Bird](https://github.com/amosbird)).
* `Merge` 테이블에 대한 `supportsPrewhere` 검사를 완화했습니다. 이로써 [#61064](https://github.com/ClickHouse/ClickHouse/issues/61064) 문제가 해결되었습니다. 이 검사는 [#60082](https://github.com/ClickHouse/ClickHouse/issues/60082)에서 불필요하게 너무 엄격해졌습니다. [#61091](https://github.com/ClickHouse/ClickHouse/pull/61091) ([Amos Bird](https://github.com/amosbird)).
* `concurrent_threads_soft_limit_num` 제한이 올바르게 적용되도록 `use_concurrency_control` 설정 처리를 수정했습니다. 이전에는 이 기능이 제대로 작동하지 않았기 때문에, 이제 동시성 제어가 기본적으로 활성화됩니다. [#61473](https://github.com/ClickHouse/ClickHouse/pull/61473) ([Sergei Trifonov](https://github.com/serxa)).
* 다른 함수(예: `NOT`) 내부의 `IS NULL` 검사 때문에 `JOIN ON` 절 최적화가 잘못 적용되어 잘못된 결과가 발생할 수 있던 문제를 수정했습니다. [#67915](https://github.com/ClickHouse/ClickHouse/issues/67915)을 종료합니다. [#68049](https://github.com/ClickHouse/ClickHouse/pull/68049) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 테이블의 `CREATE` 쿼리를 무효화하는 `ALTER` 쿼리를 방지합니다. [#68574](https://github.com/ClickHouse/ClickHouse/pull/68574) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 튜플 및 배열에서 `negate` (`-`)와 `NOT` 함수의 AST 포맷이 일관되지 않던 문제를 수정했습니다. [#68600](https://github.com/ClickHouse/ClickHouse/pull/68600) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 역직렬화 중 불완전한 유형을 `Dynamic`에 삽입하던 문제를 수정했습니다. 이로 인해 `Parameter out of bound` 오류가 발생할 수 있었습니다. [#69291](https://github.com/ClickHouse/ClickHouse/pull/69291) ([Pavel Kruglov](https://github.com/Avogar)).
* 실험적 기능이며 프로덕션에서는 사용해서는 안 되는 zero-copy 복제: zero-copy가 적용된 복제된 MergeTree에서 `restore replica` 이후 발생하는 무한 루프를 수정했습니다. [#69293](https://github.com/CljmnickHouse/ClickHouse/pull/69293) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 스토리지 `S3Queue`에서 `processing_threads_num`의 기본값을 CPU 코어 수로 다시 설정했습니다. [#69384](https://github.com/ClickHouse/ClickHouse/pull/69384) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 중첩된 반복 protobuf를 중첩 컬럼으로 직렬화/역직렬화할 때 try/catch 흐름을 거치지 않도록 변경했습니다([#41971](https://github.com/ClickHouse/ClickHouse/issues/41971) 수정). [#69556](https://github.com/ClickHouse/ClickHouse/pull/69556) ([Eliot Hautefeuille](https://github.com/hileef)).
* PostgreSQL engine에서 FixedString 컬럼에 삽입할 때 발생하던 충돌을 수정했습니다. [#69584](https://github.com/ClickHouse/ClickHouse/pull/69584) ([Pavel Kruglov](https://github.com/Avogar)).
* `create view t as (with recursive 42 as ttt select ttt);` 실행 중 발생하던 충돌을 수정했습니다. [#69676](https://github.com/ClickHouse/ClickHouse/pull/69676) ([Han Fei](https://github.com/hanfei1991)).
* 값 유형이 DateTime64일 때 `maxMapState`에서 'Bad get' 예외가 발생하던 문제를 수정했습니다. [#69787](https://github.com/ClickHouse/ClickHouse/pull/69787) ([Michael Kolupaev](https://github.com/al13n321)).
* `useDefaultImplementationForLowCardinalityColumns`가 `true`를 반환하도록 재정의해 `LowCardinality` 컬럼의 `getSubcolumn` 문제를 수정했습니다. [#69831](https://github.com/ClickHouse/ClickHouse/pull/69831) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* 분산 테이블 삭제가 실패할 경우 분산 전송이 영구적으로 차단되던 문제를 수정했습니다. [#69843](https://github.com/ClickHouse/ClickHouse/pull/69843) ([Azat Khuzhin](https://github.com/azat)).
* NaN 키가 포함된 WITH FILL 쿼리가 취소되지 않던 문제를 수정했습니다. 이로써 [#69261](https://github.com/ClickHouse/ClickHouse/issues/69261) 문제가 해결되었습니다. [#69845](https://github.com/ClickHouse/ClickHouse/pull/69845) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이전 호환성 값을 사용하도록 분석기의 기본값을 수정했습니다. [#69895](https://github.com/ClickHouse/ClickHouse/pull/69895) ([Raúl Marín](https://github.com/Algunenano)).
* 기존 테이블을 DROP할 때 CREATE OR REPLACE VIEW에 대한 종속성을 확인하지 않도록 변경했습니다. 이전에는 다시 생성되는 뷰에 종속된 테이블이 있으면 CREATE OR REPLACE 쿼리가 실패했습니다. [#69907](https://github.com/ClickHouse/ClickHouse/pull/69907) ([Pavel Kruglov](https://github.com/Avogar)).
* Decimal 관련 수정입니다. [#69730](https://github.com/ClickHouse/ClickHouse/issues/69730)을 해결합니다. [#69978](https://github.com/ClickHouse/ClickHouse/pull/69978) ([Arthur Passos](https://github.com/arthurpassos)).
* 이제 매개변수화된 뷰에서도 DEFINER/INVOKER가 작동합니다. [#69984](https://github.com/ClickHouse/ClickHouse/pull/69984) ([pufit](https://github.com/pufit)).
* 뷰 정의자의 파싱을 수정했습니다. [#69985](https://github.com/ClickHouse/ClickHouse/pull/69985) ([pufit](https://github.com/pufit)).
* 시간대로 인해 `Date` 또는 `Date32` 인수가 있는 쿼리 결과가 달라질 수 있던 버그를 수정했습니다. [#70036](https://github.com/ClickHouse/ClickHouse/pull/70036) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 중첩된 뷰와 `WHERE` 조건이 포함된 쿼리에서 발생하던 `Block structure mismatch` 문제를 수정했습니다. [#66209](https://github.com/ClickHouse/ClickHouse/issues/66209)을 수정했습니다. [#70054](https://github.com/ClickHouse/ClickHouse/pull/70054) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `tuple` 함수를 평가할 때 서로 다른 이름이 지정된 Tuple 간에 컬럼을 재사용하지 않도록 했습니다. 이 변경으로 [#70022](https://github.com/ClickHouse/ClickHouse/issues/70022)가 수정되었습니다. [#70103](https://github.com/ClickHouse/ClickHouse/pull/70103) ([Amos Bird](https://github.com/amosbird)).
* 범위 내 리터럴을 대체할 때 발생하는 잘못된 LOGICAL\_ERROR를 수정했습니다. [#70122](https://github.com/ClickHouse/ClickHouse/pull/70122) ([Pablo Marcos](https://github.com/pamarcos)).
* 이러한 데이터 타입의 테이블이 생성되지 않도록 ALTER TABLE MODIFY COLUMN/QUERY 중 Nullable(Nothing) 데이터 타입을 검사합니다. [#70123](https://github.com/ClickHouse/ClickHouse/pull/70123) ([Pavel Kruglov](https://github.com/Avogar)).
* `JOIN ... ON *`와 같이 잘못된 쿼리에 대해 적절한 오류 메시지를 제공하도록 수정, [#68650](https://github.com/ClickHouse/ClickHouse/issues/68650) 해결. [#70124](https://github.com/ClickHouse/ClickHouse/pull/70124) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 스키핑 인덱스에서 잘못된 결과가 반환되던 문제를 수정했습니다. [#70127](https://github.com/ClickHouse/ClickHouse/pull/70127) ([Raúl Marín](https://github.com/Algunenano)).
* 해제 후 사용(use-after-free)을 유발할 수 있는 ColumnObject/ColumnTuple `decompress` 메서드의 데이터 경쟁 문제를 수정했습니다. [#70137](https://github.com/ClickHouse/ClickHouse/pull/70137) ([Pavel Kruglov](https://github.com/Avogar)).
* Dynamic type을 사용하는 ALTER COLUMN에서 발생할 수 있는 멈춤 문제를 수정했습니다. [#70144](https://github.com/ClickHouse/ClickHouse/pull/70144) ([Pavel Kruglov](https://github.com/Avogar)).
* 이제 ClickHouse는 더 많은 오류를 재시도 가능 오류로 간주하며, 이러한 오류가 발생해도 데이터 파트를 손상된 것으로 표시하지 않습니다. [#70145](https://github.com/ClickHouse/ClickHouse/pull/70145) ([alesapin](https://github.com/alesapin)).
* JSON 하위 컬럼의 Dynamic 타입 생성 시 올바른 `max_types` 매개변수를 사용합니다. [#70147](https://github.com/ClickHouse/ClickHouse/pull/70147) ([Pavel Kruglov](https://github.com/Avogar)).
* bcrypt 인증 메서드를 사용하는 사용자의 `system.query_log`에 비밀번호가 표시되던 문제를 수정했습니다. [#70148](https://github.com/ClickHouse/ClickHouse/pull/70148) ([Nikolay Degterinsky](https://github.com/evillique)).
* 네이티브 인터페이스(InterfaceNativeSendBytes)의 이벤트 카운터 문제를 수정했습니다. [#70153](https://github.com/ClickHouse/ClickHouse/pull/70153) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* JSON 컬럼과 관련해 발생할 수 있는 크래시를 수정했습니다. [#70172](https://github.com/ClickHouse/ClickHouse/pull/70172) ([Pavel Kruglov](https://github.com/Avogar)).
* arrayMin 및 arrayMax의 여러 문제를 해결했습니다. [#70207](https://github.com/ClickHouse/ClickHouse/pull/70207) ([Raúl Marín](https://github.com/Algunenano)).
* JSON 타입 파서에서 allow\_simdjson 설정이 적용되도록 수정했습니다. [#70218](https://github.com/ClickHouse/ClickHouse/pull/70218) ([Pavel Kruglov](https://github.com/Avogar)).
* 두 개의 SELECT와 `INTERSECT`가 포함된 materialized view를 생성할 때 발생하던 널 포인터 역참조 문제를 수정했습니다. 예: `CREATE MATERIALIZED VIEW v0 AS (SELECT 1) INTERSECT (SELECT 1);`. [#70264](https://github.com/ClickHouse/ClickHouse/pull/70264) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 시작 스크립트로 전역 설정을 수정하지 마십시오. 이전에는 시작 스크립트에서 설정을 변경하면 해당 변경이 전역에 적용되었습니다. [#70310](https://github.com/ClickHouse/ClickHouse/pull/70310) ([Antonio Andelic](https://github.com/antonio2368)).
* 서버 충돌로 이어질 수 있는 `Dynamic` 타입의 ALTER에서 max\_types 매개변수를 줄일 때 발생하던 문제를 수정했습니다. [#70328](https://github.com/ClickHouse/ClickHouse/pull/70328) ([Pavel Kruglov](https://github.com/Avogar)).
* WITH FILL을 잘못 사용했을 때 발생하던 충돌을 수정했습니다. [#70338](https://github.com/ClickHouse/ClickHouse/pull/70338) ([Raúl Marín](https://github.com/Algunenano)).
* `SYSTEM DROP FORMAT SCHEMA CACHE FOR Protobuf`에서 발생할 수 있는 use-after-free 문제를 수정했습니다. [#70358](https://github.com/ClickHouse/ClickHouse/pull/70358) ([Azat Khuzhin](https://github.com/azat)).
* JSON 하위 객체의 서브컬럼을 GROUP BY할 때 발생하던 충돌을 수정했습니다. [#70374](https://github.com/ClickHouse/ClickHouse/pull/70374) ([Pavel Kruglov](https://github.com/Avogar)).
* 파트에 행이 없을 경우 수직 병합 시 파트를 프리페치하지 않습니다. [#70452](https://github.com/ClickHouse/ClickHouse/pull/70452) ([Antonio Andelic](https://github.com/antonio2368)).
* 람다 함수가 포함된 WHERE 절에서 발생하던 충돌을 수정했습니다. [#70464](https://github.com/ClickHouse/ClickHouse/pull/70464) ([Raúl Marín](https://github.com/Algunenano)).
* 보조 레플리카에서 테이블 함수 소스를 사용할 수 없을 때 `Replicated` 데이터베이스의 `CREATE ... AS table_function(...)`를 이용한 테이블 생성 문제를 수정했습니다. [#70511](https://github.com/ClickHouse/ClickHouse/pull/70511) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `wait_for_async_insert=1`이 설정된 async insert의 모든 출력을 무시합니다. [#62644](https://github.com/ClickHouse/ClickHouse/issues/62644)를 해결합니다. [#70530](https://github.com/ClickHouse/ClickHouse/pull/70530) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* system.remote\_data\_paths에서 shadow 디렉터리를 순회하는 동안 frozen\_metadata.txt는 무시됩니다. [#70590](https://github.com/ClickHouse/ClickHouse/pull/70590) ([Aleksei Filatov](https://github.com/aalexfvk)).
* 메모리 정렬이 맞지 않을 때 상태 저장 윈도우 함수 생성이 잘못되던 문제를 수정했습니다. [#70631](https://github.com/ClickHouse/ClickHouse/pull/70631) ([Raúl Marín](https://github.com/Algunenano)).
* 비어 있지 않은 기본 표현식을 가진 `Array` 유형의 컬럼을 추가한 뒤 `SELECT`와 머지 중 드물게 발생하던 크래시를 수정했습니다. [#70695](https://github.com/ClickHouse/ClickHouse/pull/70695) ([Anton Popov](https://github.com/CurtizJ)).
* 테이블 함수 s3에 삽입할 때 쿼리 설정이 반영됩니다. [#70696](https://github.com/ClickHouse/ClickHouse/pull/70696) ([Vladimir Cherkasov](https://github.com/vdimir)).
* 지원되지 않는 필드를 스키핑하도록 활성화된 상태에서 protobuf 스키마를 추론할 때 발생하던 무한 재귀를 수정했습니다. [#70697](https://github.com/ClickHouse/ClickHouse/pull/70697) ([Raúl Marín](https://github.com/Algunenano)).
* 기본값으로 enable\_named\_columns\_in\_function\_tuple을 비활성화합니다. [#70833](https://github.com/ClickHouse/ClickHouse/pull/70833) ([Raúl Marín](https://github.com/Algunenano)).
* 서버의 CPU 코어 수를 바탕으로 결정된 경우 S3Queue 테이블 엔진 설정 processing\_threads\_num이 적용되지 않던 문제를 수정했습니다. [#70837](https://github.com/ClickHouse/ClickHouse/pull/70837) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 집계 상태의 named tuple 인수를 정규화합니다. 이 변경으로 [#69732](https://github.com/ClickHouse/ClickHouse/issues/69732) 문제가 수정되었습니다. [#70853](https://github.com/ClickHouse/ClickHouse/pull/70853) ([Amos Bird](https://github.com/amosbird)).
* 2단계 해시 테이블에서 음수 0으로 인해 발생한 논리 오류를 수정했습니다. 이로써 [#70973](https://github.com/ClickHouse/ClickHouse/issues/70973)가 해결되었습니다. [#70979](https://github.com/ClickHouse/ClickHouse/pull/70979) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 분산 및 병렬 레플리카에서 `limit by`, `limit with ties` 관련 문제를 수정했습니다. [#70880](https://github.com/ClickHouse/ClickHouse/pull/70880) ([Nikita Taranov](https://github.com/nickitat)).

### <a id="249" /> ClickHouse 릴리스 24.9, 2024-09-26. [발표 자료](https://presentations.clickhouse.com/2024-release-24.9/), [동영상](https://www.youtube.com/watch?v=ray6wJGCHbs)

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

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

* `a[b].c`와 같은 표현식이 이름이 지정된 Tuple에 대해 지원되며, `expr().name`처럼 임의의 표현식에 이름 기반 첨자를 사용하는 것도 지원됩니다. 이는 JSON 처리에 유용합니다. 이 변경으로 [#54965](https://github.com/ClickHouse/ClickHouse/issues/54965)가 해결되었습니다. 이전 버전에서는 `expr().name` 형태의 표현식이 `tupleElement(expr(), name)`으로 파싱되었고, 쿼리 분석기는 해당 Tuple 요소가 아니라 `name`이라는 컬럼을 찾았습니다. 새 버전에서는 이것이 `tupleElement(expr(), 'name')`으로 변경되었습니다. 대부분의 경우 이전 버전은 제대로 동작하지 않았지만, 이 변경으로 인해 비호환성이 발생할 수 있는 매우 이례적인 시나리오를 생각해 볼 수는 있습니다. 예를 들어 Tuple 요소의 이름과는 다른 이름을 가진 컬럼이나 별칭에 Tuple 요소 이름을 저장한 경우입니다: `SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a`. 이러한 쿼리를 사용했을 가능성은 매우 낮지만, 그래도 이 변경 사항은 잠재적으로 하위 호환되지 않을 수 있으므로 이렇게 표시합니다. [#68435](https://github.com/ClickHouse/ClickHouse/pull/68435) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 설정 `print_pretty_type_names`가 활성화되면 `SHOW CREATE TABLE` SQL 문, `formatQuery` 함수, 그리고 `clickhouse-client` 및 `clickhouse-local`의 대화형 모드에서 `Tuple` 데이터 타입을 보기 좋은 형식으로 출력합니다. 이전 버전에서는 이 설정이 `DESCRIBE` 쿼리와 `toTypeName`에만 적용되었습니다. 이 변경으로 [#65753](https://github.com/ClickHouse/ClickHouse/issues/65753)가 해결되었습니다. [#68492](https://github.com/ClickHouse/ClickHouse/pull/68492) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Replicated` 데이터베이스에서 테이블을 생성할 때 UUID를 명시적으로 지정하는 것은 허용되지 않습니다. 또한 Replicated 데이터베이스의 \*MergeTree 테이블에 대해 Keeper 경로와 레플리카 이름을 명시적으로 지정하는 것도 허용되지 않습니다. 이 변경으로 새로운 설정 `database_replicated_allow_explicit_uuid`가 도입되며, `database_replicated_allow_replicated_engine_arguments`의 유형도 Bool에서 UInt64로 변경됩니다 [#66104](https://github.com/ClickHouse/ClickHouse/pull/66104) ([Alexander Tokmakov](https://github.com/tavplubix)).

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

* 사용자가 하나가 아니라 여러 인증 메서드를 사용할 수 있도록 합니다. 인증 메서드를 가장 최근에 추가된 메서드로 재설정할 수 있도록 합니다. 한동안 24.8 인스턴스와 24.9 인스턴스 1개를 함께 실행하려는 경우, 잠재적인 비호환성을 방지하기 위해 해당 기간에는 `max_authentication_methods_per_user` = 1로 설정하는 것이 좋습니다. [#65277](https://github.com/ClickHouse/ClickHouse/pull/65277) ([Arthur Passos](https://github.com/arthurpassos)).
* `ATTACH PARTITION ALL FROM` 지원이 추가되었습니다. [#61987](https://github.com/ClickHouse/ClickHouse/pull/61987) ([Kirill Nikiforov](https://github.com/allmazz)).
* `input_format_json_empty_as_default` 설정을 추가했습니다. 이 설정을 활성화하면 JSON 입력의 빈 필드를 기본값으로 처리합니다. [#59339](https://github.com/ClickHouse/ClickHouse/issues/59339)을 해결합니다. [#66782](https://github.com/ClickHouse/ClickHouse/pull/66782) ([Alexis Arnaud](https://github.com/a-a-f)).
* 문자열의 일부를 다른 문자열로 바꾸는 함수 `overlay`와 `overlayUTF8`이 추가되었습니다. 예시: `SELECT overlay('Hello New York', 'Jersey', 11)`는 `Hello New Jersey`를 반환합니다. [#66933](https://github.com/ClickHouse/ClickHouse/pull/66933) ([李扬](https://github.com/taiyang-li)).
* 파티션 `DELETE FROM [db.]table [ON CLUSTER cluster] [IN PARTITION partition_expr] WHERE expr; `에서 경량한 삭제를 지원하도록 추가했습니다. [#67805](https://github.com/ClickHouse/ClickHouse/pull/67805) ([sunny](https://github.com/sunny19930321)).
* 서로 다른 도메인(예: 초와 분)의 `Interval` 데이터 타입 값에 대한 비교를 구현했으며, 이제 이 값들은 최소 공통 supertype으로 변환됩니다. [#68057](https://github.com/ClickHouse/ClickHouse/pull/68057) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* CREATE SQL 문에서 기본적으로 `IF NOT EXISTS` 동작이 적용되도록 `create_if_not_exists` 설정이 추가되었습니다. [#68164](https://github.com/ClickHouse/ClickHouse/pull/68164) ([Peter Nguyen](https://github.com/petern48)).
* Azure 및 로컬 환경에서 `Iceberg` 테이블을 읽을 수 있습니다. [#68210](https://github.com/ClickHouse/ClickHouse/pull/68210) ([Daniil Ivanik](https://github.com/divanik)).
* 이제 태그를 기준으로 쿼리 캐시 엔트리를 삭제할 수 있습니다. 예를 들어, `SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc'`로 생성된 쿼리 캐시 엔트리는 이제 `SYSTEM DROP QUERY CACHE TAG 'abc'`를 사용해 삭제할 수 있습니다. [#68477](https://github.com/ClickHouse/ClickHouse/pull/68477) ([Michał Tabaszewski](https://github.com/pinsvin00)).
* 이름이 지정된 컬렉션에 저장 암호화 기능을 추가했습니다. [#68615](https://github.com/ClickHouse/ClickHouse/pull/68615) ([Pablo Marcos](https://github.com/pamarcos)).
* `URL` 테이블 엔진에 가상 컬럼 `_headers`를 추가합니다. [#65026](https://github.com/ClickHouse/ClickHouse/issues/65026)를 해결합니다. [#68867](https://github.com/ClickHouse/ClickHouse/pull/68867) ([flynn](https://github.com/ucasfl)).
* 사용 가능한 프로젝션을 추적할 수 있도록 `system.projections` 테이블을 추가했습니다. [#68901](https://github.com/ClickHouse/ClickHouse/pull/68901) ([Jordi Villar](https://github.com/jrdi)).
* Spark 호환성을 위해 새로운 함수 `arrayZipUnaligned`를 추가했습니다(Spark에서는 `arrays_zip`라는 이름으로 제공됨). 이 함수는 기존 `arrayZip`를 기반으로 하며, 길이가 맞지 않는 배열도 허용합니다. [#69030](https://github.com/ClickHouse/ClickHouse/pull/69030) ([李扬](https://github.com/taiyang-li)).
* 노드를 원자적으로 복사하거나 이동하는 `cp`/`mv` 명령이 Keeper 클라이언트 명령줄 애플리케이션에 추가되었습니다. [#69034](https://github.com/ClickHouse/ClickHouse/pull/69034) ([Mikhail Artemenko](https://github.com/Michicosun)).
* 함수 `arrayAUC`에 인수 `scale`(기본값: `true`)을 추가해 정규화 단계를 건너뛸 수 있도록 했습니다(issue [#69609](https://github.com/ClickHouse/ClickHouse/issues/69609)). [#69717](https://github.com/ClickHouse/ClickHouse/pull/69717) ([gabrielmcg44](https://github.com/gabrielmcg44)).

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

* `input_format_try_infer_variants` 설정이 추가되어, 컬럼/배열 요소에 가능한 타입이 둘 이상인 경우 텍스트 형식의 스키마 추론 중 `Variant` 타입을 추론할 수 있습니다. [#63798](https://github.com/ClickHouse/ClickHouse/pull/63798) ([Shaun Struwig](https://github.com/Blargian)).
* JSON 컬럼 타입 콘텐츠의 내부 검사를 개선하기 위한 집계 함수 `distinctDynamicTypes`/`distinctJSONPaths`/`distinctJSONPathsAndTypes`를 추가했습니다. [#68463](https://github.com/ClickHouse/ClickHouse/pull/68463) ([Kruglov Pavel](https://github.com/Avogar)).
* consistent hash를 사용해 병렬 레플리카 간 마크 분배 단위를 결정하는 새 알고리즘을 도입했습니다. 성능 향상을 위해 읽기 패턴별로 서로 다른 수의 마크를 선택합니다. [#68424](https://github.com/ClickHouse/ClickHouse/pull/68424) ([Nikita Taranov](https://github.com/nickitat)).
* 이전에는 병렬 레플리카 announcement 처리에서 파트 중복 제거 로직의 알고리즘 복잡도가 O(n^2)였으며, 파트(또는 파티션)가 많은 테이블에서는 눈에 띄는 시간이 걸릴 수 있었습니다. 이번 변경으로 복잡도가 O(n\*log(n))으로 낮아졌습니다. [#69596](https://github.com/ClickHouse/ClickHouse/pull/69596) ([Alexander Gololobov](https://github.com/davenger)).
* 갱신 가능 구체화 뷰 개선: 전체 테이블을 덮어쓰는 대신 기존 테이블에 행을 추가하는 append 모드(`... REFRESH EVERY 1 MINUTE APPEND ...`), 재시도(기본적으로 비활성화되며 쿼리의 SETTINGS 섹션에서 구성), 현재 실행 중인 갱신이 끝날 때까지 대기하는 `SYSTEM WAIT VIEW <name>` 쿼리, 그리고 일부 수정 사항이 포함되었습니다. [#58934](https://github.com/ClickHouse/ClickHouse/pull/58934) ([Michael Kolupaev](https://github.com/al13n321)).
* 새로운 유형의 (실험적) 통계로 `min_max`를 추가했습니다. 이 기능은 숫자 컬럼에 대한 범위 프레디케이트(예: `x < 100`) 추정을 지원합니다. [#67013](https://github.com/ClickHouse/ClickHouse/pull/67013) ([JackyWoo](https://github.com/JackyWoo)).
* 내부 타입을 전혀 변환할 수 없는 경우에도 Variant/Dynamic 컬럼에서 castOrDefault가 동작하도록 개선했습니다. [#67150](https://github.com/ClickHouse/ClickHouse/pull/67150) ([Kruglov Pavel](https://github.com/Avogar)).
* 이제 MaterializedPostgreSQL을 통해 일부 컬럼의 복제를 사용할 수 있습니다. [#33748](https://github.com/ClickHouse/ClickHouse/issues/33748)을 해결했습니다. [#69092](https://github.com/ClickHouse/ClickHouse/pull/69092) ([Kruglov Kirill](https://github.com/1on)).

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

* Hive 파티셔닝에서 필요한 파일만 읽도록 구현했습니다. [#68963](https://github.com/ClickHouse/ClickHouse/pull/68963) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* LEFT 또는 INNER 해시 조인에서 테이블 키가 조밀한 경우, 오른쪽 테이블을 키 기준으로 재배열해 JOIN 성능을 개선했습니다. [#60341](https://github.com/ClickHouse/ClickHouse/pull/60341) ([kevinyhzou](https://github.com/KevinyhZou)).
* 행 목록을 지연 방식으로 추가해 ALL JOIN 성능을 개선했습니다. [#63677](https://github.com/ClickHouse/ClickHouse/pull/63677) ([kevinyhzou](https://github.com/KevinyhZou)).
* 재시작 속도를 높이기 위해 부팅 과정에서 파일 시스템 캐시 메타데이터를 비동기적으로 로드하도록 했습니다(`load_metadata_asynchronously` 설정으로 제어). [#65736](https://github.com/ClickHouse/ClickHouse/pull/65736) ([Daniel Pozo Escalona](https://github.com/danipozo)).
* 함수 `array`와 `map`이 일부 일반적인 사례를 훨씬 더 빠르게 처리하도록 최적화했습니다. [#67707](https://github.com/ClickHouse/ClickHouse/pull/67707) ([李扬](https://github.com/taiyang-li)).
* 특히 컬럼에 NULL이 없는 경우 ORC 문자열 읽기를 단순하게 최적화했습니다. [#67794](https://github.com/ClickHouse/ClickHouse/pull/67794) ([李扬](https://github.com/taiyang-li)).
* 머지 단계 스케줄링의 오버헤드를 줄여 머지의 전반적인 성능을 개선했습니다. [#68016](https://github.com/ClickHouse/ClickHouse/pull/68016) ([Anton Popov](https://github.com/CurtizJ)).
* profile이 설정되지 않고 자격 증명도 없으며 IMDS를 사용할 수 없는 경우(예: 클라우드 외부의 머신에서 공개 버킷을 쿼리하는 경우) S3 요청 속도를 높였습니다. 이 변경으로 [#52771](https://github.com/ClickHouse/ClickHouse/issues/52771)이 해결됩니다. [#68082](https://github.com/ClickHouse/ClickHouse/pull/68082) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 일부 성능 향상을 위해 `RowInputFormatWithNamesAndTypes`의 포맷 리더를 디버추얼라이즈했습니다. [#68437](https://github.com/ClickHouse/ClickHouse/pull/68437) ([李扬](https://github.com/taiyang-li)).
* CPU 활용도를 극대화하기 위해 키 기준으로 group by 집계를 수행할 때 `uniq` 집계 함수에 병렬 머지를 추가했습니다. [#68441](https://github.com/ClickHouse/ClickHouse/pull/68441) ([Jiebin Sun](https://github.com/jiebinn)).
* 사용자가 `ORC` 출력 형식에서 문자열 컬럼에 딕셔너리 인코딩을 활성화할 수 있도록 `output_format_orc_dictionary_key_size_threshold` 설정을 추가했습니다. 이를 통해 출력 `ORC` 파일 크기를 줄이고 읽기 성능을 크게 향상할 수 있습니다. [#68591](https://github.com/ClickHouse/ClickHouse/pull/68591) ([李扬](https://github.com/taiyang-li)).
* 노드와 그 하위 트리 전체를 제거하는 새로운 Keeper 요청 RemoveRecursive를 도입했습니다. [#69332](https://github.com/ClickHouse/ClickHouse/pull/69332) ([Mikhail Artemenko](https://github.com/Michicosun)).
* vector similarity index에 데이터를 병렬로 추가해 해당 인덱스가 있는 테이블에 대한 삽입 성능을 높였습니다. [#69493](https://github.com/ClickHouse/ClickHouse/pull/69493) ([flynn](https://github.com/ucasfl)).
* 적응형 쓰기 버퍼 크기를 사용해 JSON 삽입 시 메모리 사용량을 줄였습니다. wide 파트의 JSON 컬럼이 생성하는 많은 파일에는 데이터가 소량만 들어 있으므로, 이들에 1MB 버퍼를 할당하는 것은 비효율적입니다. [#69272](https://github.com/ClickHouse/ClickHouse/pull/69272) ([Kruglov Pavel](https://github.com/Avogar)).
* concurrent hash join 스레드 풀에서 스레드를 반환하지 않도록 해, 쿼리가 스레드를 과도하게 생성하는 문제를 방지했습니다. [#69406](https://github.com/ClickHouse/ClickHouse/pull/69406) ([Duc Canh Le](https://github.com/canhld94)).

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

* 이제 CREATE TABLE AS는 PRIMARY KEY, ORDER BY 및 이와 유사한 절도 복사합니다. 현재는 MergeTree 엔진 계열의 테이블 엔진에서만 지원됩니다. [#69076](https://github.com/ClickHouse/ClickHouse/pull/69076) ([sakulali](https://github.com/sakulali)).
* 작은 엔터티의 parsing과 관련된 코드베이스를 강화했습니다. 다음과 같은 (사소한) 버그를 발견하여 수정했습니다. - `DeltaLake` 테이블이 Bool로 파티션되어 있으면 파티션 값이 항상 false로 해석되던 문제; - `ExternalDistributed` 테이블이 제공된 주소에서 세그먼트 하나만 사용하던 문제; `max_threads` 설정 등의 값이 `auto(N)`가 아니라 `'auto(N)'`로 출력되던 문제를 수정했습니다. [#52503](https://github.com/ClickHouse/ClickHouse/pull/52503) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* CPU 사용량 산정에는 시스템 전체 메트릭 대신 cgroup별 메트릭을 사용합니다. [#62003](https://github.com/ClickHouse/ClickHouse/pull/62003) ([Nikita Taranov](https://github.com/nickitat)).
* 원격 S3 디스크의 IO 스케줄링이 이제 `bandwidth_limit` 스로틀링 문제를 해결하기 위해 전체 S3 요청이 아니라 HTTP 소켓 스트림 단위로 수행됩니다. [#65182](https://github.com/ClickHouse/ClickHouse/pull/65182) ([Sergei Trifonov](https://github.com/serxa)).
* 함수 `upperUTF8` 및 `lowerUTF8`는 이전까지는 키릴 문자만 대문자/소문자로 변환할 수 있었습니다. 이제 이 제한이 없어져, 모든 언어의 문자를 대문자/소문자로 변환할 수 있습니다. 예시: `SELECT upperUTF8('Süden')`는 이제 `SÜDEN`을 반환합니다. [#65761](https://github.com/ClickHouse/ClickHouse/pull/65761) ([李扬](https://github.com/taiyang-li)).
* 프로젝션이 있는 테이블에서 경량한 삭제가 발생하는 경우, 기존에는 경량한 삭제를 수행하려 할 때 예외를 발생시키거나(기본값) 프로젝션을 삭제하는 방법만 선택할 수 있었지만, 이제는 세 번째 옵션으로 경량한 삭제를 계속 수행한 뒤 프로젝션을 다시 빌드할 수 있습니다. [#66169](https://github.com/ClickHouse/ClickHouse/pull/66169) ([jsc0218](https://github.com/jsc0218)).
* 두 가지 옵션(`dns_allow_resolve_names_to_ipv4` 및 `dns_allow_resolve_names_to_ipv6`)이 추가되어, 연결에 사용할 IP 패밀리를 차단할 수 있게 되었습니다. [#66895](https://github.com/ClickHouse/ClickHouse/pull/66895) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* clickhouse-client에서 Ctrl-Z 무시(ignore\_shell\_suspend)를 설정할 수 있게 했습니다. [#67134](https://github.com/ClickHouse/ClickHouse/pull/67134) ([Azat Khuzhin](https://github.com/azat)).
* JSON 출력 형식에서 UTF-8 검증을 개선했습니다. 그에 따라 결과 데이터에 특정 바이트 시퀀스가 포함된 경우에도 유효한 JSON이 생성됩니다. [#67938](https://github.com/ClickHouse/ClickHouse/pull/67938) ([mwoenker](https://github.com/mwoenker)).
* 머지와 뮤테이션 관련 profile events를 추가해 내부 검사를 개선했습니다. [#68015](https://github.com/ClickHouse/ClickHouse/pull/68015) ([Anton Popov](https://github.com/CurtizJ)).
* ODBC: 서버 구성에서 http\_max\_tries를 가져오도록 했습니다. [#68128](https://github.com/ClickHouse/ClickHouse/pull/68128) ([Rodolphe Dugé de Bernonville](https://github.com/RodolpheDuge)).
* X.509 SubjectAltName 확장 기능에서 사용자 식별 시 와일드카드를 지원하도록 했습니다. [#68236](https://github.com/ClickHouse/ClickHouse/pull/68236) ([Marco Vilas Boas](https://github.com/marco-vb)).
* 날짜/시간에 대한 스키마 추론을 개선했습니다. 이제 `DateTime64`는 날짜/시간에 소수점 이하가 있을 때만 사용되며, 그렇지 않으면 일반 DateTime이 사용됩니다. 이제 Date/DateTime 추론은 더 엄격해졌으며, 특히 `date_time_input_format='best_effort'`일 때는 경계 사례에서 문자열을 날짜/시간으로 추론하지 않도록 했습니다. [#68382](https://github.com/ClickHouse/ClickHouse/pull/68382) ([Kruglov Pavel](https://github.com/Avogar)).
* 딕셔너리의 이름이 지정된 컬렉션 관련 기존 코드를 제거하고, DDL로 생성한 이름이 지정된 컬렉션을 딕셔너리에서 사용할 수 있는 새 코드로 교체했습니다. [#60936](https://github.com/ClickHouse/ClickHouse/issues/60936), [#36890](https://github.com/ClickHouse/ClickHouse/issues/36890)을 해결합니다. [#68412](https://github.com/ClickHouse/ClickHouse/pull/68412) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 외부 HTTP 인증기에는 기본값으로 설정된 HTTP/1.0 대신 HTTP/1.1을 사용합니다. [#68456](https://github.com/ClickHouse/ClickHouse/pull/68456) ([Aleksei Filatov](https://github.com/aalexfvk)).
* 스레드 풀 내부 검사를 위한 새로운 메트릭 세트를 추가하여 스레드 풀의 성능과 동작을 더 자세히 파악할 수 있게 되었습니다. [#68674](https://github.com/ClickHouse/ClickHouse/pull/68674) ([filimonov](https://github.com/filimonov)).
* 포맷이 `Values`인 async 삽입에서 쿼리 매개변수를 지원합니다. [#68741](https://github.com/ClickHouse/ClickHouse/pull/68741) ([Anton Popov](https://github.com/CurtizJ)).
* `dateTrunc` 및 `toStartOfInterval`에서 `Date32`를 지원하도록 추가했습니다. [#68874](https://github.com/ClickHouse/ClickHouse/pull/68874) ([LiuNeng](https://github.com/liuneng1994)).
* `system.processors_profile_log`에 `plan_step_name` 및 `plan_step_description` 컬럼이 추가되었습니다. [#68954](https://github.com/ClickHouse/ClickHouse/pull/68954) ([Alexander Gololobov](https://github.com/davenger)).
* 내장 사전에 스페인어 지원이 추가되었습니다. [#69035](https://github.com/ClickHouse/ClickHouse/pull/69035) ([Vasily Okunev](https://github.com/VOkunev)).
* 간단한 장애 정보 메시지에 CPU 아키텍처를 추가합니다. [#69037](https://github.com/ClickHouse/ClickHouse/pull/69037) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 재시도 중 새 Keeper 연결을 설정하지 못하면 쿼리가 더 빠르게 실패합니다. [#69148](https://github.com/ClickHouse/ClickHouse/pull/69148) ([Raúl Marín](https://github.com/Algunenano)).
* 사용자 정의 데이터베이스 엔진에서 인수, 설정, 테이블 오버라이드를 사용할 수 있도록 Database Factory를 업데이트했습니다(StorageFactory와 유사). [#69201](https://github.com/ClickHouse/ClickHouse/pull/69201) ([NikBarykin](https://github.com/NikBarykin)).
* 모든 외부 테이블 엔진과 함수를 `Null` 엔진으로 대체하는 복원 모드(`restore_replace_external_engines_to_null`, `restore_replace_external_table_functions_to_null` 설정)는 테이블에 SETTINGS가 있으면 실패하곤 했습니다. 이제는 이런 경우 테이블 정의에서 설정을 제거해 해당 테이블도 복원할 수 있습니다. [#69253](https://github.com/ClickHouse/ClickHouse/pull/69253) ([Ilya Yatsishin](https://github.com/qoega)).
* CLICKHOUSE\_PASSWORD가 clickhouse 이미지의 엔트리포인트에서 XML용으로 올바르게 이스케이프 처리됩니다. [#69301](https://github.com/ClickHouse/ClickHouse/pull/69301) ([aohoyd](https://github.com/aohoyd)).
* `arrayZip`/`arrayZipUnaligned`에서 [https://github.com/ClickHouse/ClickHouse/pull/65887의](https://github.com/ClickHouse/ClickHouse/pull/65887의) `concat`과 마찬가지로 빈 인수를 허용하도록 했습니다. 이는 Gluten CH Backend에서 Spark 호환성을 위한 것입니다. [#69576](https://github.com/ClickHouse/ClickHouse/pull/69576) ([李扬](https://github.com/taiyang-li)).
* Keeper의 내부 통신에서 더 고급 SSL 옵션(예: 패스프레이스가 설정된 개인 키)을 지원합니다. [#69582](https://github.com/ClickHouse/ClickHouse/pull/69582) ([Antonio Andelic](https://github.com/antonio2368)).
* 파트 또는 파티션이 많은 대형 테이블에서는 인덱스 분석에 상당한 시간이 걸릴 수 있습니다. 이 변경으로 해당 단계에서 부하가 큰 쿼리를 강제 종료할 수 있게 됩니다. [#69606](https://github.com/ClickHouse/ClickHouse/pull/69606) ([Alexander Gololobov](https://github.com/davenger)).
* `gcs` 테이블 함수에서 민감한 정보 마스킹 기능 추가. [#69611](https://github.com/ClickHouse/ClickHouse/pull/69611) ([Vitaly Baranov](https://github.com/vitlibar)).
* 행 수를 줄이는 머지 시 프로젝션을 다시 빌드합니다. [#62364](https://github.com/ClickHouse/ClickHouse/pull/62364) ([cangyin](https://github.com/cangyin)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* pg dbname에 "-"가 포함된 경우, 실험적이고 지원되지 않는 MaterializedPostgreSQL 엔진에서 테이블 ATTACH가 되지 않던 문제를 수정했습니다. [#62730](https://github.com/ClickHouse/ClickHouse/pull/62730) ([takakawa](https://github.com/takakawa)).
* 실험적이며 전혀 지원되지 않는 MaterializedPostgreSQL 엔진에서 adnum 순서가 잘못된 경우 생성 컬럼에서 발생하던 오류를 수정했습니다 [#63161](https://github.com/ClickHouse/ClickHouse/issues/63161). 실험적이며 전혀 지원되지 않는 MaterializedPostgreSQL에서 테이블에 생성 컬럼이 있을 때 기본값이 nextval 표현식인 id 컬럼에서 발생하던 오류를 수정했습니다. \[a-z1-9-] 이외의 기호가 포함된 publication을 삭제할 때 발생하던 오류를 수정했습니다. [#67664](https://github.com/ClickHouse/ClickHouse/pull/67664) ([Kruglov Kirill](https://github.com/1on)).
* 왼쪽 테이블의 널 허용 컬럼을 지원하도록 Storage Join을 개선해 [#61247](https://github.com/ClickHouse/ClickHouse/issues/61247)을 해결했습니다. [#66926](https://github.com/ClickHouse/ClickHouse/pull/66926) ([vdimir](https://github.com/vdimir)).
* `IN` 연산자에 Decimal() 변환이 포함되어 있을 때 병렬 레플리카(쿼리도 분산)에서 쿼리 결과가 잘못 반환되던 문제가 있었습니다. 이 버그는 새로운 분석기 도입과 함께 발생했습니다. [#67234](https://github.com/ClickHouse/ClickHouse/pull/67234) ([Igor Nikonov](https://github.com/devcrafter)).
* ALTER MODIFY ORDER BY로 인해 메타데이터 불일치가 발생하는 문제를 수정했습니다. [#67436](https://github.com/ClickHouse/ClickHouse/pull/67436) ([iceFireser](https://github.com/iceFireser)).
* 함수 `fromModifiedJulianDay`의 상한을 수정했습니다. 원래는 `9999-12-31`이어야 했지만, 잘못 `9999-01-01`로 설정되어 있었습니다. [#67583](https://github.com/ClickHouse/ClickHouse/pull/67583) ([PHO](https://github.com/depressed-pho)).
* `IN` 쿼리에서 인덱스가 Tuple 시작 부분에 없을 때 발생하는 문제를 수정했습니다. [#67626](https://github.com/ClickHouse/ClickHouse/pull/67626) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `RoleCache`의 만료 처리 문제를 수정했습니다. [#67748](https://github.com/ClickHouse/ClickHouse/pull/67748) ([Vitaly Baranov](https://github.com/vitlibar)).
* 뷰로 플러시가 지연되어 window view에서 블록이 누락되던 문제를 수정했습니다. [#67983](https://github.com/ClickHouse/ClickHouse/pull/67983) ([Raúl Marín](https://github.com/Algunenano)).
* 잘못된 날짜 포맷으로 인해 발생한 MSan 문제를 해결했습니다. [#68105](https://github.com/ClickHouse/ClickHouse/pull/68105) ([JackyWoo](https://github.com/JackyWoo)).
* 파일 내 데이터 타입이 요청된 타입과 크게 다를 때 Parquet 필터링 중 발생하던 충돌을 수정했습니다(예: `... FROM file('a.parquet', Parquet, 'x String')`를 요청했지만, 파일에는 `x Int64`가 있는 경우). 이 수정이 포함되지 않은 경우 우회책으로 `input_format_parquet_filter_push_down = 0`을 사용하십시오. [#68131](https://github.com/ClickHouse/ClickHouse/pull/68131) ([Michael Kolupaev](https://github.com/al13n321)).
* [#67091](https://github.com/ClickHouse/ClickHouse/issues/67091)에서 도입된 `lag`/`lead` 관련 충돌 문제를 수정했습니다. [#68262](https://github.com/ClickHouse/ClickHouse/pull/68262) ([lgbo](https://github.com/lgbo-ustc)).
* 쿼리 취소 시 postgres 충돌 문제를 수정했습니다. [#68288](https://github.com/ClickHouse/ClickHouse/pull/68288) ([Kseniia Sumarokova](https://github.com/kssenii)).
* [https://github.com/ClickHouse/ClickHouse/pull/61984](https://github.com/ClickHouse/ClickHouse/pull/61984) 이후 `schema_inference_make_columns_nullable=0`이어도 Parquet/Arrow 포맷에서는 여전히 컬럼이 `Nullable`로 추론될 수 있었습니다. 이 변경은 하위 호환되지 않았고, 사용자들도 동작 변화을 인지했습니다. 이 PR은 `schema_inference_make_columns_nullable=0`이 이전처럼 동작하도록(즉, 널 허용 컬럼이 추론되지 않도록) 복원하고, 데이터에 null 허용 여부 정보가 있을 때만 컬럼을 `Nullable`로 만드는 이 설정의 새 값 `auto`를 도입합니다. [#68298](https://github.com/ClickHouse/ClickHouse/pull/68298) ([Kruglov Pavel](https://github.com/Avogar)).
* [#50868](https://github.com/ClickHouse/ClickHouse/issues/50868)를 수정했습니다. 분산 쿼리 내부의 중첩된 하위 쿼리가 반환한 작은 DateTime64 상수값들이 잘못 NULL로 변환되어, 그 결과 오류가 발생하고 쿼리 결과가 잘못될 수 있었습니다. [#68323](https://github.com/ClickHouse/ClickHouse/pull/68323) ([Shankar](https://github.com/shiyer7474)).
* 쿼리 `SYSTEM SYNC REPLICA`에서 누락된 sync replica 모드 문제를 수정했습니다. [#68326](https://github.com/ClickHouse/ClickHouse/pull/68326) ([Duc Canh Le](https://github.com/canhld94)).
* 키 조건의 버그를 수정했습니다. [#68354](https://github.com/ClickHouse/ClickHouse/pull/68354) ([Han Fei](https://github.com/hanfei1991)).
* LDAP 외부 사용자 디렉터리에서 사용 중인 Role을 삭제하거나 이름을 변경할 때 발생하는 충돌을 수정했습니다. [#68355](https://github.com/ClickHouse/ClickHouse/pull/68355) ([Andrey Zvonov](https://github.com/zvonand)).
* system.view\_refreshes에서 Progress 컬럼 값이 1보다 크게 표시되던 문제를 수정했습니다 [#68377](https://github.com/ClickHouse/ClickHouse/issues/68377). [#68378](https://github.com/ClickHouse/ClickHouse/pull/68378) ([megao](https://github.com/jetgm)).
* regexp 플래그를 올바르게 처리하도록 수정했습니다. [#68389](https://github.com/ClickHouse/ClickHouse/pull/68389) ([Han Fei](https://github.com/hanfei1991)).
* PostgreSQL 스타일 CAST 연산자(`::`)는 SQL 스타일 16진수 및 바이너리 문자열 리터럴(예: `SELECT x'414243'::String`)에서도 올바르게 동작합니다. 이로써 [#68324](https://github.com/ClickHouse/ClickHouse/issues/68324)가 수정되었습니다. [#68482](https://github.com/ClickHouse/ClickHouse/pull/68482) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* [https://github.com/ClickHouse/ClickHouse/pull/68131에](https://github.com/ClickHouse/ClickHouse/pull/68131에) 대한 경미한 패치입니다. [#68494](https://github.com/ClickHouse/ClickHouse/pull/68494) ([Chang chen](https://github.com/baibaichen)).
* [#68239](https://github.com/ClickHouse/ClickHouse/issues/68239) n이 정수인 경우의 SAMPLE n 문제를 수정했습니다. [#68499](https://github.com/ClickHouse/ClickHouse/pull/68499) ([Denis Hananein](https://github.com/denis-hananein)).
* 두 분포의 크기가 서로 다를 때 `mann-whitney-utest`의 버그를 수정했습니다. [#68556](https://github.com/ClickHouse/ClickHouse/pull/68556) ([Han Fei](https://github.com/hanfei1991)).
* 예기치 않게 재시작된 후 covered-by-broken part가 비정상적으로 처리되어 ReplicatedMergeTree의 복제가 시작되지 않던 문제를 수정했습니다. [#68584](https://github.com/ClickHouse/ClickHouse/pull/68584) ([baolin](https://github.com/baolinhuang)).
* 함수 `sipHash64Keyed`, `sipHash128Keyed` 또는 `sipHash128ReferenceKeyed`를 빈 배열이나 튜플에 적용할 때 발생하던 `LOGICAL_ERROR`를 수정했습니다. [#68630](https://github.com/ClickHouse/ClickHouse/pull/68630) ([Robert Schulze](https://github.com/rschu1ze)).
* 텍스트 인덱스는 여러 컬럼에 인덱스를 생성할 때 잘못된 컬럼을 필터링할 수 있었는데, 이는 서로 다른 컬럼 사이에서 row\_id를 재설정하지 않았기 때문입니다. 재현 절차는 tests/queries/0\_stateless/03228\_full\_text\_with\_multi\_col.sql에 있습니다. 이 문제가 수정되었습니다. [#68644](https://github.com/ClickHouse/ClickHouse/pull/68644) ([siyuan](https://github.com/linkwk7)).
* Replicated 테이블을 생성할 때 replica\_name에 포함된 잘못된 문자 '\t' 및 '\n'를 수정했습니다. 이로 인해 LogEntry에서 'source replica'가 잘못 파싱되는 문제가 발생했습니다. 이 내용은 이슈 [#68640](https://github.com/ClickHouse/ClickHouse/issues/68640)에서 언급되었습니다. [#68645](https://github.com/ClickHouse/ClickHouse/pull/68645) ([Zhigao Hong](https://github.com/zghong)).
* 분산 테이블에 가상 컬럼 ` _table` 및 `_database`가 다시 추가되었습니다. 이 컬럼들은 24.3 버전까지 제공되었습니다. [#68672](https://github.com/ClickHouse/ClickHouse/pull/68672) ([Anton Popov](https://github.com/CurtizJ)).
* Variant 컬럼 순열 처리 중 발생할 수 있는 오류 `Size of permutation (0) is less than required (...)`를 수정했습니다. [#68681](https://github.com/ClickHouse/ClickHouse/pull/68681) ([Kruglov Pavel](https://github.com/Avogar)).
* 새 JSON 컬럼 사용 시 발생할 수 있는 오류 `DB::Exception: Block structure mismatch in joined block stream: different columns:`를 수정했습니다. [#68686](https://github.com/ClickHouse/ClickHouse/pull/68686) ([Kruglov Pavel](https://github.com/Avogar)).
* 함수 `sipHash(64/128)Keyed`에서 배열을 키로 사용하는 맵을 해시할 때 발생하던 구체화된 상수 키 관련 문제를 수정했습니다. [#68731](https://github.com/ClickHouse/ClickHouse/pull/68731) ([Salvatore Mesoraca](https://github.com/aiven-sal)).
* `ColumnsDescription::toString`이 동일한 `IAST::FormatState object`를 사용해 각 컬럼을 포맷하도록 변경했습니다. 이로써 일관된 컬럼 메타데이터가 디스크와 ZooKeeper에 기록됩니다. [#68733](https://github.com/ClickHouse/ClickHouse/pull/68733) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* grouping sets의 집계 데이터 병합 문제를 수정했습니다. [#68744](https://github.com/ClickHouse/ClickHouse/pull/68744) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 복제된 merge tree를 생성한 뒤 컬럼을 변경하고 modify statistics를 실행할 때 발생하는 논리 오류를 수정했습니다. [#68820](https://github.com/ClickHouse/ClickHouse/pull/68820) ([Han Fei](https://github.com/hanfei1991)).
* 분석기에서 서브쿼리의 동적 서브컬럼을 해석할 때 발생하던 문제를 수정했습니다. [#68824](https://github.com/ClickHouse/ClickHouse/pull/68824) ([Kruglov Pavel](https://github.com/Avogar)).
* DeltaLake의 복합 타입 메타데이터 파싱을 수정했습니다. [#68739](https://github.com/ClickHouse/ClickHouse/issues/68739)을 해결합니다. [#68836](https://github.com/ClickHouse/ClickHouse/pull/68836) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 삽입 후 테이블에 플러시되기 전에 `ALTER ADD/MODIFY COLUMN` 쿼리로 테이블 메타데이터가 변경되는 경우 발생하던 asynchronous inserts 문제를 수정했습니다. [#68837](https://github.com/ClickHouse/ClickHouse/pull/68837) ([Anton Popov](https://github.com/CurtizJ)).
* 배열에 빈 튜플을 전달할 때 발생하던 예기치 않은 예외를 수정했습니다. 이 수정으로 [#68618](https://github.com/ClickHouse/ClickHouse/issues/68618)이 해결되었습니다. [#68848](https://github.com/ClickHouse/ClickHouse/pull/68848) ([Amos Bird](https://github.com/amosbird)).
* 순수 메타데이터 뮤테이션 명령 파싱을 수정했습니다. [#68935](https://github.com/ClickHouse/ClickHouse/pull/68935) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* anyHeavy 상태 머지 시 발생할 수 있는 잘못된 결과 문제를 수정했습니다. [#68950](https://github.com/ClickHouse/ClickHouse/pull/68950) ([Raúl Marín](https://github.com/Algunenano)).
* `optimize_functions_to_subcolumns` 설정이 활성화된 상태에서 구체화된 뷰(Materialized View)에 쓰기 시 발생하던 문제가 수정되었습니다. [#68951](https://github.com/ClickHouse/ClickHouse/pull/68951) ([Anton Popov](https://github.com/CurtizJ)).
* const Dynamic 컬럼 메서드에서 serialization cache를 사용하지 않도록 했습니다. 이로 인해 집계 중 초기화되지 않은 값이 사용되거나 race condition이 발생할 수 있었습니다. [#68953](https://github.com/ClickHouse/ClickHouse/pull/68953) ([Kruglov Pavel](https://github.com/Avogar)).
* 일부 경우 JSON 타입을 파싱하는 동안 null이 기본값으로 삽입되어야 할 때 발생하던 파싱 오류를 수정했습니다. [#68955](https://github.com/ClickHouse/ClickHouse/pull/68955) ([Kruglov Pavel](https://github.com/Avogar)).
* 일부 압축 응답에서 `Content-Encoding` 헤더가 전송되지 않는 문제를 수정했습니다. [#64802](https://github.com/ClickHouse/ClickHouse/issues/64802). [#68975](https://github.com/ClickHouse/ClickHouse/pull/68975) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 경로가 잘못 이어져 `//`가 포함되는 경우가 있었는데, 경로 정규화를 통해 이 문제를 해결했습니다. [#69066](https://github.com/ClickHouse/ClickHouse/pull/69066) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 빈 async insert가 있는 경우 발생하는 논리 오류를 수정했습니다. [#69080](https://github.com/ClickHouse/ClickHouse/pull/69080) ([Han Fei](https://github.com/hanfei1991)).
* 쿼리 취소 중 clickhouse-client의 진행률 표시에서 발생하던 경쟁 상태를 수정했습니다. [#69081](https://github.com/ClickHouse/ClickHouse/pull/69081) ([Sergei Trifonov](https://github.com/serxa)).
* 거리 함수로 cosine distance를 사용할 때 현재 Experimental 상태인 벡터 유사도 인덱스가 사용되지 않던 버그를 수정했습니다. [#69090](https://github.com/ClickHouse/ClickHouse/pull/69090) ([flynn](https://github.com/ucasfl)).
* 이 변경은 초기 생성 과정에서 서버 장애가 발생한 후 복제된 데이터베이스를 다시 생성하려고 할 때 오류가 발생할 수 있는 문제를 해결합니다. [#69102](https://github.com/ClickHouse/ClickHouse/pull/69102) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* 문자열에서 bool 값을 읽는 것은 허용되지 않으므로, `input_format_csv_try_infer_numbers_from_strings = 1`일 때 CSV의 String에서 Bool 유형을 추론하지 않도록 했습니다. [#69109](https://github.com/ClickHouse/ClickHouse/pull/69109) ([Kruglov Pavel](https://github.com/Avogar)).
* `--multiquery`가 활성화된 경우 클라이언트에서 발생하던 explain ast insert 쿼리의 파싱 오류를 수정했습니다. [#69123](https://github.com/ClickHouse/ClickHouse/pull/69123) ([wxybear](https://github.com/wxybear)).
* 병렬 레플리카를 사용하는 쿼리에서 서브쿼리의 `UNION` 절이 제대로 처리되지 않아 LOGICAL\_ERROR `Duplicate announcement received for replica`가 발생했습니다. [#69146](https://github.com/ClickHouse/ClickHouse/pull/69146) ([Igor Nikonov](https://github.com/devcrafter)).
* s3Cluster에서 structure 인수가 올바르게 전파되지 않던 문제를 수정했습니다. 이전에는 s3Cluster에서 레플리카로 쿼리를 전송할 때 컬럼의 `DEFAULT` 표현식이 누락될 수 있었습니다. [#69147](https://github.com/ClickHouse/ClickHouse/pull/69147) ([Kruglov Pavel](https://github.com/Avogar)).
* 표현식에서 대상 유형으로 변환할 때 Values 형식의 포맷 설정을 준수하도록 했습니다. [#69149](https://github.com/ClickHouse/ClickHouse/pull/69149) ([Kruglov Pavel](https://github.com/Avogar)).
* 읽기 전용 사용자의 `clickhouse-client --queries-file` 문제를 수정했습니다(이전에는 `Cannot modify 'log_comment' setting in readonly mode` 오류로 실패했습니다). [#69175](https://github.com/ClickHouse/ClickHouse/pull/69175) ([Azat Khuzhin](https://github.com/azat)).
* 일찍 종료된 프로세스에 파이프로 연결될 때 clickhouse-client에서 발생하는 데이터 레이스 문제를 수정했습니다. [#69186](https://github.com/ClickHouse/ClickHouse/pull/69186) ([vdimir](https://github.com/vdimir)).
* JSON/Dynamic 타입에서 uniq 및 GROUP BY의 잘못된 결과를 수정했습니다. [#69203](https://github.com/ClickHouse/ClickHouse/pull/69203) ([Kruglov Pavel](https://github.com/Avogar)).
* 비동기 삽입에서 INFILE 포맷 감지 문제를 수정했습니다. FORMAT 절에서 포맷을 명시적으로 지정하지 않은 경우, INFILE 파일 확장자로 포맷을 감지할 수 있습니다. [#69237](https://github.com/ClickHouse/ClickHouse/pull/69237) ([Julia Kartseva](https://github.com/jkartseva)).
* [this issue](https://github.com/ClickHouse/ClickHouse/pull/59946#issuecomment-1943653197) 이후, 운영 환경에서 `metadata_version` 노드 값이 `0`이면서 해당 테이블의 `metadata` 노드 버전과도 일치하지 않는 테이블 레플리카가 상당수 존재합니다. 이로 인해 해당 레플리카에서 `alter` 쿼리가 실패합니다. [#69274](https://github.com/ClickHouse/ClickHouse/pull/69274) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* Fields 관련 문제를 방지하기 위해 Dynamic type을 프라이머리 키(primary key)로 사용하기에 안전한 유형이 아닌 것으로 표시합니다. [#69311](https://github.com/ClickHouse/ClickHouse/pull/69311) ([Kruglov Pavel](https://github.com/Avogar)).
* 액세스 엔터티 의존성 복원 기능을 개선했습니다. [#69346](https://github.com/ClickHouse/ClickHouse/pull/69346) ([Vitaly Baranov](https://github.com/vitlibar)).
* 삽입용 connection을 가져오는 과정에서 모든 connection 시도가 실패할 때 발생하던 정의되지 않은 동작을 수정했습니다. [#69390](https://github.com/ClickHouse/ClickHouse/pull/69390) ([Pablo Marcos](https://github.com/pamarcos)).
* [#69135](https://github.com/ClickHouse/ClickHouse/issues/69135)을 해결했습니다. `cross` join에 조인된 데이터를 재사용하려고 해도 현재 ClickHouse에서는 이런 상황이 발생할 수 없습니다. `reuseJoinedData`에 `have_compressed`를 그대로 유지하는 편이 더 낫습니다. [#69404](https://github.com/ClickHouse/ClickHouse/pull/69404) ([lgbo](https://github.com/lgbo-ustc)).
* `materialize()` 함수가 매개변수가 희소 컬럼인 경우 전체 컬럼을 반환하도록 수정했습니다. [#69429](https://github.com/ClickHouse/ClickHouse/pull/69429) ([Alexander Gololobov](https://github.com/davenger)).
* 함수 `sqidDecode`에서 발생하던 `LOGICAL_ERROR`를 수정했습니다 ([#69450](https://github.com/ClickHouse/ClickHouse/issues/69450)). [#69451](https://github.com/ClickHouse/ClickHouse/pull/69451) ([Robert Schulze](https://github.com/rschu1ze)).
* 24.6의 s3queue 문제 또는 Replicated 데이터베이스를 사용하는 CREATE 쿼리에 대한 빠른 수정입니다. [#69454](https://github.com/ClickHouse/ClickHouse/pull/69454) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `INSERT INTO ... SELECT` 또는 `CREATE TABLE AS SELECT` 쿼리에서 squashing 과정 때문에 메모리 사용량이 지나치게 높아지던 문제를 수정했습니다. [#69469](https://github.com/ClickHouse/ClickHouse/pull/69469) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* SQL 문 `SHOW COLUMNS`와 `SHOW INDEX`가 이제 테이블 이름에 점이 포함된 경우에도 올바르게 작동합니다. [#69514](https://github.com/ClickHouse/ClickHouse/pull/69514) ([Salvatore Mesoraca](https://github.com/aiven-sal)).
* 이제 오버플로우 모드가 != 'throw'인 쿼리에서는 쿼리 캐시를 사용할 수 없습니다. 이를 통해 잘리거나 잘못된 쿼리 결과가 쿼리 캐시에 저장될 수 있는 상황을 방지합니다. (이슈 [#67476](https://github.com/ClickHouse/ClickHouse/issues/67476)). [#69549](https://github.com/ClickHouse/ClickHouse/pull/69549) ([Robert Schulze](https://github.com/rschu1ze)).
* prewhere로 이동하는 동안 conditions의 원래 순서를 유지합니다. 이전에는 순서가 바뀔 수 있어, 순서가 중요한 경우 쿼리가 실패할 수 있었습니다. [#69560](https://github.com/ClickHouse/ClickHouse/pull/69560) ([Kruglov Pavel](https://github.com/Avogar)).
* ZNOAUTH 오류 발생 후 Keeper의 다중 요청 전처리를 수정했습니다. [#69627](https://github.com/ClickHouse/ClickHouse/pull/69627) ([Antonio Andelic](https://github.com/antonio2368)).
* 새 레플리카를 생성할 때 DatabaseReplicated에서 TTL의 WHERE 절로 인해 발생할 수 있는 METADATA\_MISMATCH를 수정했습니다. [#69736](https://github.com/ClickHouse/ClickHouse/pull/69736) ([Nikolay Degterinsky](https://github.com/evillique)).
* `StorageS3(Azure)Queue` 설정 `tracked_file_ttl_sec`를 수정했습니다. 이전에는 이 값을 `tracked_file_ttl_sec` 키로 Keeper에 기록했지만, `tracked_files_ttl_sec`로 읽고 있었으며, 이는 오타였습니다. [#69742](https://github.com/ClickHouse/ClickHouse/pull/69742) ([Kseniia Sumarokova](https://github.com/kssenii)).
* gethyperrectangleforrowgroup에서 tryconvertfieldtotype를 사용하도록 변경했습니다. [#69745](https://github.com/ClickHouse/ClickHouse/pull/69745) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* "컬럼도 없고 adaptive index granularity도 없는 prewhere 수정(사실상 아무것도 없음)"'을 되돌렸습니다. 이 변경을 되돌리면서 이전 CH 릴리스(아마 2021년 또는 그 이전)에서 생성된 데이터 파트를 읽을 때 일부 오류가 발생할 수 있습니다. [#68897](https://github.com/ClickHouse/ClickHouse/pull/68897) ([Alexander Gololobov](https://github.com/davenger)).

### <a id="248" /> ClickHouse 릴리스 24.8 LTS, 2024-08-20. [발표 자료](https://presentations.clickhouse.com/2024-release-24.8/), [동영상](https://www.youtube.com/watch?v=AeLmp2jc51k)

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

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

* 이제 `clickhouse-client`와 `clickhouse-local`은 기본적으로 단일 쿼리 모드가 아니라 다중 쿼리 모드로 동작합니다. 예를 들어 이제 `clickhouse-client -q "SELECT 1; SELECT 2"`가 동작하며, 이전에는 `--multiquery`(또는 `-n`)를 추가해야 했습니다. `--multiquery/-n` 스위치는 더 이상 사용되지 않습니다. 다중 쿼리 SQL 문에서 INSERT 쿼리는 FORMAT 절에 따라 특별히 처리됩니다. FORMAT이 `VALUES`인 경우(가장 일반적인 경우) INSERT 문의 끝은 쿼리 끝의 세미콜론 `;`으로 표시됩니다. 다른 모든 FORMAT(예: `CSV`, `JSONEachRow`)에서는 INSERT 문의 끝이 쿼리 끝의 두 개의 개행 문자 `\n\n`로 표시됩니다. [#63898](https://github.com/ClickHouse/ClickHouse/pull/63898) ([FFish](https://github.com/wxybear)).
* 이전 버전에서는 `LowCardinality` 데이터 타입 이름 뒤에 `WithDictionary`를 붙이는 대체 구문을 사용할 수 있었습니다. 이는 초기 구현 단계에서 동작하던 방식이었으며, 문서화되거나 공개된 적은 없습니다. 이제 이 구문은 더 이상 권장되지 않습니다. 이 구문을 사용했다면 테이블에 ALTER를 수행하여 데이터 타입 이름을 `LowCardinality`로 변경해야 합니다. [#66842](https://github.com/ClickHouse/ClickHouse/pull/66842) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 분산 대상 테이블과 함께 사용할 때 스토리지 `Buffer`의 논리 오류를 수정했습니다. 이는 하위 호환되지 않는 변경 사항입니다. 쿼리에서 해당 테이블이 두 번 이상 나타나는 경우(예: self-join) 분산 대상 테이블과 함께 `Buffer`를 사용하는 쿼리가 더 이상 동작하지 않을 수 있습니다. [#67015](https://github.com/ClickHouse/ClickHouse/pull/67015) ([vdimir](https://github.com/vdimir)).
* 이전 버전에서는 감마 함수 기반 난수 분포 함수(예: Chi-Squared, Student, Fisher)를 0에 가까운 음수 인수로 호출하면 계산이 오래 걸리거나 무한 루프에 빠질 수 있었습니다. 새 버전에서는 이러한 함수를 0 또는 음수 인수로 호출하면 예외가 발생합니다. 이 변경으로 [#67297](https://github.com/ClickHouse/ClickHouse/issues/67297)가 해결되었습니다. [#67326](https://github.com/ClickHouse/ClickHouse/pull/67326) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* system table \`text\_log\`\`가 기본적으로 활성화됩니다. 이는 이전 버전과 완전히 호환되지만, 로컬 디스크 사용량이 약간 증가할 수 있습니다(이 system table은 매우 적은 디스크 공간만 사용합니다). [#67428](https://github.com/ClickHouse/ClickHouse/pull/67428) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이전 버전에서는 `arrayWithConstant`가 매우 큰 배열을 생성할 때 느릴 수 있었습니다. 새 버전에서는 배열당 1 GB로 제한됩니다. 이 변경으로 [#32754](https://github.com/ClickHouse/ClickHouse/issues/32754)가 해결되었습니다. [#67741](https://github.com/ClickHouse/ClickHouse/pull/67741) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* REPLACE 수정자의 포맷팅을 수정했습니다(괄호 생략 금지). [#67774](https://github.com/ClickHouse/ClickHouse/pull/67774) ([Azat Khuzhin](https://github.com/azat)).
* [#68349](https://github.com/ClickHouse/ClickHouse/issues/68349)에 백포트됨: `Dynamic` 타입을 재구현했습니다. 이제 동적 데이터 타입 한도에 도달하면 새 타입은 String으로 캐스팅되지 않고, 바이너리 형식의 데이터와 바이너리 인코딩된 데이터 타입을 담는 특수 데이터 구조에 저장됩니다. 이제 `Dynamic` 컬럼에 한 번이라도 삽입된 모든 타입을 서브컬럼으로 읽을 수 있습니다. [#68132](https://github.com/ClickHouse/ClickHouse/pull/68132) ([Kruglov Pavel](https://github.com/Avogar)).

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

* 머지 중 프로젝션(특정 엔진용)과 `OPTIMIZE DEDUPLICATE` 쿼리에서의 동작을 제어하기 위해 새로운 `MergeTree` 설정 `deduplicate_merge_projection_mode`가 추가되었습니다. 지원되는 옵션은 다음과 같습니다. `throw`(프로젝션이 \*MergeTree 엔진에서 완전히 지원되지 않는 경우 예외를 발생시킴), `drop`(프로젝션 자체를 일관되게 머지할 수 없는 경우 머지 중에 프로젝션을 제거함), `rebuild`(프로젝션을 처음부터 다시 빌드하며, 비용이 큰 작업임). [#66672](https://github.com/ClickHouse/ClickHouse/pull/66672) ([jsc0218](https://github.com/jsc0218)).
* S3 테이블 엔진에 `_etag` 가상 컬럼을 추가했습니다. [#65312](https://github.com/ClickHouse/ClickHouse/issues/65312)를 수정합니다. [#65386](https://github.com/ClickHouse/ClickHouse/pull/65386) ([skyoct](https://github.com/skyoct)).
* 쿼리 캐시에 태깅(네임스페이스) 메커니즘이 추가되었습니다. 태그가 다르면 같은 쿼리라도 쿼리 캐시에서는 서로 다른 것으로 간주됩니다. 예시: `SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'abc'` 및 `SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'def'`는 이제 서로 다른 쿼리 캐시 엔트리를 생성합니다. [#68235](https://github.com/ClickHouse/ClickHouse/pull/68235) ([sakulali](https://github.com/sakulali)).
* 왼쪽 및 오른쪽 테이블의 컬럼이 모두 포함된 부등 조건에서 더 다양한 JOIN 엄격성(`LEFT/RIGHT SEMI/ANTI/ANY JOIN`)을 지원합니다. 예: `t1.y < t2.y` (`allow_experimental_join_condition` 설정 참조). [#64281](https://github.com/ClickHouse/ClickHouse/pull/64281) ([lgbo](https://github.com/lgbo-ustc)).
* 다양한 엔진(`File`, `URL`, `S3`, `AzureBlobStorage`, `HDFS`)에서 Hive 스타일 파티셔닝을 해석합니다. Hive 스타일 파티셔닝은 데이터를 파티션된 하위 디렉터리로 구성하므로, 대규모 데이터셋을 더 효율적으로 쿼리하고 관리할 수 있습니다. 현재는 적절한 이름과 데이터를 가진 가상 컬럼만 생성합니다. 후속 PR에서는 적절한 데이터 필터링(성능 향상)을 도입할 예정입니다. [#65997](https://github.com/ClickHouse/ClickHouse/pull/65997) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Spark와의 호환성을 위해 `printf` 함수를 추가했습니다(기존 `format` 함수도 사용할 수 있습니다). [#66257](https://github.com/ClickHouse/ClickHouse/pull/66257) ([李扬](https://github.com/taiyang-li)).
* 테스트에 유용하게 사용할 수 있도록 외부 엔진과 table\_engines를 `Null` 엔진으로 대체하는 옵션 `restore_replace_external_engines_to_null` 및 `restore_replace_external_table_functions_to_null`이 추가되었습니다. 이 옵션은 RESTORE와 명시적인 테이블 생성 모두에서 작동해야 합니다. [#66536](https://github.com/ClickHouse/ClickHouse/pull/66536) ([Ilya Yatsishin](https://github.com/qoega)).
* `readWKTLineString` 함수를 사용해 `WKT` 포맷의 `MULTILINESTRING` 지오메트리를 읽을 수 있도록 지원이 추가되었습니다. [#67647](https://github.com/ClickHouse/ClickHouse/pull/67647) ([Jacob Reckhard](https://github.com/jacobrec)).
* 새로운 테이블 함수 `fuzzQuery`가 추가되었습니다. 이 함수는 주어진 쿼리 문자열에 무작위 변형을 적용할 수 있습니다. 예시: `SELECT query FROM fuzzQuery('SELECT 1') LIMIT 5;`. [#67655](https://github.com/ClickHouse/ClickHouse/pull/67655) ([pufit](https://github.com/pufit)).
* 모든 분리된 파티션을 삭제하는 쿼리 `ALTER TABLE ... DROP DETACHED PARTITION ALL`를 추가했습니다. [#67885](https://github.com/ClickHouse/ClickHouse/pull/67885) ([Duc Canh Le](https://github.com/canhld94)).
* 새로운 설정인 `rows_before_aggregation`이 활성화되면 쿼리 응답에 `rows_before_aggregation_at_least` 통계를 추가합니다. 이 통계는 집계 전에 읽은 행 수를 나타냅니다. 분산 쿼리에서는 `limit` 없이 `group by` 또는 `max` 집계 함수를 사용할 경우 `rows_before_aggregation_at_least`가 쿼리가 읽은 행 수를 반영할 수 있습니다. [#66084](https://github.com/ClickHouse/ClickHouse/pull/66084) ([morning-color](https://github.com/morning-color)).
* `Join` 테이블의 메모리 사용량을 줄일 수 있도록 `OPTIMIZE` 쿼리 지원을 추가했습니다. [#67883](https://github.com/ClickHouse/ClickHouse/pull/67883) ([Duc Canh Le](https://github.com/canhld94)).
* URL에 `&run=1`을 추가하면 실행에서 쿼리를 즉시 실행할 수 있도록 했습니다 [#66457](https://github.com/ClickHouse/ClickHouse/pull/66457) ([Aleksandr Musorin](https://github.com/AVMusorin)).

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

* 새로운 `JSON` 데이터 타입을 구현했습니다. [#66444](https://github.com/ClickHouse/ClickHouse/pull/66444) ([Kruglov Pavel](https://github.com/Avogar)).
* 새로운 `TimeSeries` 테이블 엔진을 추가했습니다. [#64183](https://github.com/ClickHouse/ClickHouse/pull/64183) ([Vitaly Baranov](https://github.com/vitlibar)).
* 오프셋을 Kafka에 커밋하는 대신 Keeper에 저장하는 새로운 실험적 `Kafka` 스토리지 엔진을 추가했습니다. 이를 통해 큐에서 데이터를 소비하는 작업과 ClickHouse 테이블에 커밋하는 작업을 원자적으로 처리할 수 있습니다. [#57625](https://github.com/ClickHouse/ClickHouse/pull/57625) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 병렬 레플리카에 적응형 읽기 작업 크기 계산 메서드(즉, 읽는 컬럼 크기에 따라 달라지는 방식)를 사용합니다. [#60377](https://github.com/ClickHouse/ClickHouse/pull/60377) ([Nikita Taranov](https://github.com/nickitat)).
* `col = 'val'`과 같은 동등 프레디케이트에 대한 선택도 추정치를 제공하는 통계 유형 `count_min`(count-min sketches)을 추가했습니다. 지원되는 데이터 타입은 string, date, datetime 및 numeric 타입입니다. [#65521](https://github.com/ClickHouse/ClickHouse/pull/65521) ([JackyWoo](https://github.com/JackyWoo)).

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

* `optimize_functions_to_subcolumns` 설정이 기본적으로 활성화됩니다. [#68053](https://github.com/ClickHouse/ClickHouse/pull/68053) ([Anton Popov](https://github.com/CurtizJ)).
* `plain_rewritable` 디스크의 메타데이터를 객체 스토리지의 MergeTree 데이터와 분리해 `__meta` 레이아웃에 저장합니다. 또한 `plain_rewritable` 디스크를 평면 디렉터리 구조로 변경합니다. [#65751](https://github.com/ClickHouse/ClickHouse/pull/65751) ([Julia Kartseva](https://github.com/jkartseva)).
* 모든 서브컬럼에 필요한 메모리를 미리 예약해 `String`/`Array`/`Map`/`Variant`/`Dynamic` 타입의 컬럼 스쿼싱(INSERT 쿼리에서 발생하는 작업)을 개선했습니다. [#67043](https://github.com/ClickHouse/ClickHouse/pull/67043) ([Kruglov Pavel](https://github.com/Avogar)).
* `SYSTEM FLUSH LOGS`를 더 빠르게 수행하고, 종료 시 로그를 플러시합니다. [#67472](https://github.com/ClickHouse/ClickHouse/pull/67472) ([Sema Checherinda](https://github.com/CheSema)).
* 머지의 스케줄링 단계에서 발생하는 오버헤드를 줄여 전반적인 머지 성능을 개선했습니다. [#68016](https://github.com/ClickHouse/ClickHouse/pull/68016) ([Anton Popov](https://github.com/CurtizJ)).
* `DROP DATABASE` 쿼리에서 테이블 삭제 속도를 높이고, `database_catalog_drop_table_concurrency`의 기본값을 16으로 늘렸습니다. [#67228](https://github.com/ClickHouse/ClickHouse/pull/67228) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* ORC를 기록할 때 배열 컬럼에 과도한 용량을 할당하지 않도록 했습니다. Array 컬럼의 성능이 15% 향상됩니다. [#67879](https://github.com/ClickHouse/ClickHouse/pull/67879) ([李扬](https://github.com/taiyang-li)).
* non-replicated MergeTree의 뮤테이션 속도를 크게 높였습니다. [#66911](https://github.com/ClickHouse/ClickHouse/pull/66911) [#66909](https://github.com/ClickHouse/ClickHouse/pull/66909) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* Setting `allow_experimental_analyzer`의 이름이 `enable_analyzer`로 변경되었습니다. 이전 이름도 별칭(alias)으로 유지됩니다. 이는 분석기가 더 이상 베타가 아니며, 정식 프로덕션 환경에서 완전히 지원됨을 의미합니다. [#66438](https://github.com/ClickHouse/ClickHouse/pull/66438) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 날짜/시간 값에 대한 스키마 추론을 개선했습니다. 이제 날짜/시간 값에 소수점 이하가 있을 때만 DateTime64를 사용하고, 그렇지 않으면 일반 DateTime을 사용합니다. 이제 Date/DateTime 추론이 더 엄격해졌으며, 특히 `date_time_input_format='best_effort'`일 때는 예외적인 경우의 문자열을 날짜/시간으로 추론하지 않도록 했습니다. [#68382](https://github.com/ClickHouse/ClickHouse/pull/68382) ([Kruglov Pavel](https://github.com/Avogar)).
* ClickHouse 서버가 이제 새로운 설정 `max_keep_alive_requests`를 지원합니다. 서버와의 keep-alive HTTP 연결에서는 이 설정이 `keep_alive_timeout`과 함께 동작합니다. 유휴 시간 제한이 아직 만료되지 않았더라도, 해당 연결을 통해 처리된 요청 수가 이미 `max_keep_alive_requests`를 초과한 경우 서버가 해당 연결을 종료합니다. [#61793](https://github.com/ClickHouse/ClickHouse/pull/61793) ([Nikita Taranov](https://github.com/nickitat)).
* Advanced dashboard가 여러 면에서 개선되었습니다. 이로써 [#67697](https://github.com/ClickHouse/ClickHouse/issues/67697)가 해결되었습니다. 이로써 [#63407](https://github.com/ClickHouse/ClickHouse/issues/63407)가 해결되었습니다. 이로써 [#51129](https://github.com/ClickHouse/ClickHouse/issues/51129)가 해결되었습니다. 이로써 [#61204](https://github.com/ClickHouse/ClickHouse/issues/61204)가 해결되었습니다. [#67701](https://github.com/ClickHouse/ClickHouse/pull/67701) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 분산 테이블을 생성할 때는 REMOTE에 대한 권한이 필요하지 않으며, Distributed 엔진에 대한 권한만으로 충분합니다. [#65419](https://github.com/ClickHouse/ClickHouse/pull/65419) ([jsc0218](https://github.com/jsc0218)).
* 재정의할 수 있도록 Docker image에서 Keeper 로그를 명시적으로 지정하지 않도록 했습니다. [#65564](https://github.com/ClickHouse/ClickHouse/pull/65564) ([Azat Khuzhin](https://github.com/azat)).
* 암호로 보호된 아카이브에 대해 증분 백업을 생성하고 복원할 수 있도록 `BACKUP` 및 `RESTORE` 쿼리에 `use_same_password_for_base_backup` 설정이 추가되었습니다. [#66214](https://github.com/ClickHouse/ClickHouse/pull/66214) ([Samuele](https://github.com/sguerrini97)).
* `ATTACH` 쿼리에서는 `async_load_databases`를 무시합니다(이전에는 테이블이 attached 상태가 되기 전에 `ATTACH`가 반환될 수 있었습니다). [#66240](https://github.com/ClickHouse/ClickHouse/pull/66240) ([Azat Khuzhin](https://github.com/azat)).
* 리소스 부족으로 거부된 연결에 대한 로그와 메트릭이 추가되었습니다. [#66410](https://github.com/ClickHouse/ClickHouse/pull/66410) ([Alexander Tokmakov](https://github.com/tavplubix)).
* MongoDB 엔진에서 `UUID` 유형을 올바르게 지원합니다. [#66671](https://github.com/ClickHouse/ClickHouse/pull/66671) ([Azat Khuzhin](https://github.com/azat)).
* 복제 지연과 복구 시간 메트릭을 추가했습니다. [#66703](https://github.com/ClickHouse/ClickHouse/pull/66703) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* `DiskS3NoSuchKeyErrors` 메트릭이 추가되었습니다. [#66704](https://github.com/ClickHouse/ClickHouse/pull/66704) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
* 모든 테이블 엔진에서 `COMMENT` 절이 작동하도록 했습니다. [#66832](https://github.com/ClickHouse/ClickHouse/pull/66832) ([Joe Lynch](https://github.com/joelynch)).
* 이제 `mapFromArrays` 함수는 첫 번째 인수로 `Map(K, V)`를 받을 수 있습니다. 예시: 이제 `SELECT mapFromArrays(map('a', 4, 'b', 4), ['aa', 'bb'])`가 정상적으로 동작하며 `{('a',4):'aa',('b',4):'bb'}`를 반환합니다. 또한 첫 번째 인수가 배열인 경우, 실제 배열 값이 `NULL`이 아니기만 하면 `Array(Nullable(T))` 또는 `Array(LowCardinality(Nullable(T)))` 유형도 사용할 수 있습니다. [#67103](https://github.com/ClickHouse/ClickHouse/pull/67103) ([李扬](https://github.com/taiyang-li)).
* `clickhouse-local`이 `~/.clickhouse-local`에서 설정을 읽습니다. [#67135](https://github.com/ClickHouse/ClickHouse/pull/67135) ([Azat Khuzhin](https://github.com/azat)).
* 설정 `input_format_orc_read_use_writer_time_zone`의 이름을 `input_format_orc_reader_timezone`로 변경하고, 사용자가 reader 시간대를 설정할 수 있게 했습니다. [#67175](https://github.com/ClickHouse/ClickHouse/pull/67175) ([kevinyhzou](https://github.com/KevinyhZou)).
* 연결 직후 상대편에서 HTTP connection을 즉시 재설정하는 경우 발생하는 `Socket is not connected` 오류의 수준을 낮추고, [#34218](https://github.com/ClickHouse/ClickHouse/issues/34218)을 해결했습니다. [#67177](https://github.com/ClickHouse/ClickHouse/pull/67177) ([vdimir](https://github.com/vdimir)).
* config에서 `system.dashboards`용 대시보드를 로드할 수 있는 기능을 추가했습니다(설정하면 기본 대시보드 프리셋을 재정의합니다). [#67232](https://github.com/ClickHouse/ClickHouse/pull/67232) ([Azat Khuzhin](https://github.com/azat)).
* SQL의 윈도우 함수는 전통적으로 snake case를 사용합니다. ClickHouse는 `camelCase`를 사용하므로 새 별칭 `denseRank()`와 `percentRank()`가 추가되었습니다. 이 새 함수들은 기존 `dense_rank()` 및 `percent_rank()` 함수와 완전히 동일하게 호출할 수 있습니다. snake case와 camelCase 구문은 모두 계속 사용할 수 있습니다. 각 함수에 대한 새 테스트도 추가되었습니다. 이로써 [#67042](https://github.com/ClickHouse/ClickHouse/issues/67042)가 해결되었습니다. [#67334](https://github.com/ClickHouse/ClickHouse/pull/67334) ([Peter Nguyen](https://github.com/petern48)).
* `.xml`, `.yml` 또는 `.yaml`이 아닌 경우 설정 파일 포맷을 자동으로 감지합니다. 파일이 \<로 시작하면 XML일 가능성이 있고, 그렇지 않으면 YAML일 가능성이 있습니다. 파이프를 통해 설정 파일을 제공할 때 유용합니다: `clickhouse-server --config-file <(echo "hello: world")`. [#67391](https://github.com/ClickHouse/ClickHouse/pull/67391) ([sakulali](https://github.com/sakulali)).
* `formatDateTime` 및 `formatDateTimeInJodaSyntax` 함수는 이제 포맷 매개변수를 선택적으로 처리합니다. 이 매개변수를 지정하지 않으면 포맷 문자열 `%Y-%m-%d %H:%i:%s` 및 `yyyy-MM-dd HH:mm:ss`가 사용되는 것으로 간주합니다. 예시: 이제 `SELECT parseDateTime('2021-01-04 23:12:34')`는 DateTime 값 `2021-01-04 23:12:34`를 반환합니다(이전에는 예외가 발생했습니다). [#67399](https://github.com/ClickHouse/ClickHouse/pull/67399) ([Robert Schulze](https://github.com/rschu1ze)).
* timeout 또는 연결 손실로 발생한 KeeperMap의 Keeper 요청을 자동으로 재시도합니다. [#67448](https://github.com/ClickHouse/ClickHouse/pull/67448) ([Antonio Andelic](https://github.com/antonio2368)).
* Aarch64 Linux 빌드에 `-no-pie`를 추가하여 ClickHouse 재시작 후 올바른 내부 검사와 스택트레이스 심볼화가 가능하도록 합니다. [#67916](https://github.com/ClickHouse/ClickHouse/pull/67916) ([filimonov](https://github.com/filimonov)).
* 내부 검사를 강화하기 위해 머지 및 뮤테이션용 profile events를 추가했습니다. [#68015](https://github.com/ClickHouse/ClickHouse/pull/68015) ([Anton Popov](https://github.com/CurtizJ)).
* 복제되지 않은 `MergeTree`의 불필요한 로그를 제거했습니다. [#68238](https://github.com/ClickHouse/ClickHouse/pull/68238) ([Daniil Ivanik](https://github.com/divanik)).

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

* 테스트에서 더 많은 문제를 찾아내고 신뢰성을 높일 수 있도록, 통합 테스트의 flaky check가 이제 각 테스트 케이스를 여러 번 실행합니다. 동일한 환경에서 테스트 케이스를 반복 실행하기 위해 `pytest-repeat` 라이브러리를 사용합니다. 테스트를 통과하려면 테스트 케이스가 끝날 때 테이블(table)과 기타 엔터티를 정리하는 것이 중요합니다. 필요한 컨테이너를 한 번만 시작하므로, 여러 차례 pytest를 실행하는 것보다 반복 실행이 훨씬 빠릅니다. [#66986](https://github.com/ClickHouse/ClickHouse/pull/66986) ([Ilya Yatsishin](https://github.com/qoega)).
* ClickHouse에서 CLion을 사용할 수 있도록 했습니다. 이전 버전에서는 키를 누를 때마다 CLion이 1분 동안 멈췄습니다. 이로써 [#66994](https://github.com/ClickHouse/ClickHouse/issues/66994)가 해결됩니다. [#66995](https://github.com/ClickHouse/ClickHouse/pull/66995) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* getauxval: 최신 Linux 커널에서 ASLR 엔트로피가 높아 sanitizer 재실행 중 충돌이 발생하는 문제를 방지합니다. [#67081](https://github.com/ClickHouse/ClickHouse/pull/67081) ([Raúl Marín](https://github.com/Algunenano)).
* 클라이언트 코드의 일부를 단일 파일로 분리하고, 디버그 빌드에서도 해당 코드에 가능한 최고 수준의 최적화를 적용했습니다. 이로써 [#65745](https://github.com/ClickHouse/ClickHouse/issues/65745)가 해결됩니다. [#67215](https://github.com/ClickHouse/ClickHouse/pull/67215) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).

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

* 실험적 Variant 데이터 타입에만 적용됩니다. Variant + AggregateFunction 타입에서 발생하던 크래시를 수정했습니다. [#67122](https://github.com/ClickHouse/ClickHouse/pull/67122) ([Kruglov Pavel](https://github.com/Avogar)).
* connection이 비어 있는 경우 DistributedAsyncInsert가 충돌하던 문제를 수정했습니다. [#67219](https://github.com/ClickHouse/ClickHouse/pull/67219) ([Pablo Marcos](https://github.com/pamarcos)).
* `tuple()` 인수 사용 시 `uniq` 및 `uniqTheta `에서 발생하던 크래시를 수정했습니다. [#67303](https://github.com/ClickHouse/ClickHouse/issues/67303)를 해결합니다. [#67306](https://github.com/ClickHouse/ClickHouse/pull/67306) ([flynn](https://github.com/ucasfl)).
* [#66026](https://github.com/ClickHouse/ClickHouse/issues/66026)를 수정했습니다. `ReplaceTableNodeToDummyVisitor`에서 아직 해결되지 않은 테이블 함수 인수를 순회하지 않도록 했습니다. [#67522](https://github.com/ClickHouse/ClickHouse/pull/67522) ([Dmitry Novik](https://github.com/novikd)).
* `JSONMergePatch` 함수에서 발생할 수 있는 스택 오버플로우를 수정했습니다. 기존 이름이 잘못되어 이 함수의 이름을 `jsonMergePatch`에서 `JSONMergePatch`로 변경했습니다. 이전 이름도 호환성을 위해 계속 유지합니다. 함수의 오류 진단 기능을 개선했습니다. 이 변경으로 [#67304](https://github.com/ClickHouse/ClickHouse/issues/67304)가 해결되었습니다. [#67756](https://github.com/ClickHouse/ClickHouse/pull/67756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 특수하게 조작된 쿼리로 인해 발생하며 hopEnd, hopStart, tumbleEnd, tumbleStart를 통해 서버를 충돌시키던 NULL 포인터 역참조 문제를 수정했습니다. [#68098](https://github.com/ClickHouse/ClickHouse/pull/68098) ([Salvatore Mesoraca](https://github.com/aiven-sal)).
* 일부 시스템 테이블에서 서브쿼리로 필터링할 때 발생하던 `Not-ready Set` 문제를 수정했습니다. [#66018](https://github.com/ClickHouse/ClickHouse/pull/66018) ([Michael Kolupaev](https://github.com/al13n321)).
* `ALTER ADD COLUMN` 쿼리 이후 서브컬럼을 읽는 동작이 수정되었습니다. [#66243](https://github.com/ClickHouse/ClickHouse/pull/66243) ([Anton Popov](https://github.com/CurtizJ)).
* 외부 데이터베이스로 전송되는 쿼리의 불리언 리터럴을 수정했습니다(`PostgreSQL`과 같은 엔진). [#66282](https://github.com/ClickHouse/ClickHouse/pull/66282) ([vdimir](https://github.com/vdimir)).
* 별칭이 지정된 JOIN ON 표현식이 있는 쿼리의 포맷팅을 수정했습니다. 예를 들어 `... JOIN t2 ON (x = y) AS e ORDER BY x`는 `... JOIN t2 ON ((x = y) AS e) ORDER BY x`로 포맷되어야 합니다. [#66312](https://github.com/ClickHouse/ClickHouse/pull/66312) ([vdimir](https://github.com/vdimir)).
* 서버 간 시크릿용 cluster() 수정(기존과 같이 초기 사용자를 유지). [#66364](https://github.com/ClickHouse/ClickHouse/pull/66364) ([Azat Khuzhin](https://github.com/azat)).
* null 값이 포함된 배열 필드를 Array(Variant)로 변환할 때 발생할 수 있는 런타임 오류를 수정했습니다. [#66727](https://github.com/ClickHouse/ClickHouse/pull/66727) ([Kruglov Pavel](https://github.com/Avogar)).
* Context::getDDLWorker에서 간헐적으로 발생하던 교착 상태를 수정했습니다. [#66843](https://github.com/ClickHouse/ClickHouse/pull/66843) ([Alexander Gololobov](https://github.com/davenger)).
* 불완전하게 삭제된 후 KeeperMap 테이블이 생성되지 않던 문제를 수정했습니다. [#66865](https://github.com/ClickHouse/ClickHouse/pull/66865) ([Antonio Andelic](https://github.com/antonio2368)).
* `s3_plain_rewritable` 디스크로 복원하는 중 발생하던 손상된 part 오류를 수정했습니다. [#66881](https://github.com/ClickHouse/ClickHouse/pull/66881) ([Vitaly Baranov](https://github.com/vitlibar)).
* 드물게 디스크에 예기치 않은 프로젝션이 있으면 ClickHouse가 파트를 손상된 것으로 판단할 수 있었는데, 이제 수정되었습니다. [#66898](https://github.com/ClickHouse/ClickHouse/pull/66898) ([alesapin](https://github.com/alesapin)).
* 스키마 추론에서 잘못된 포맷 감지를 수정해 "Format {} doesn't support schema inference"라는 논리적 오류가 발생할 수 있던 문제를 해결했습니다. [#66899](https://github.com/ClickHouse/ClickHouse/pull/66899) ([Kruglov Pavel](https://github.com/Avogar)).
* 병렬 레플리카에서 쿼리 취소 시 발생할 수 있는 교착 상태를 수정했습니다. [#66905](https://github.com/ClickHouse/ClickHouse/pull/66905) ([Nikita Taranov](https://github.com/nickitat)).
* database\_replicated\_allow\_heavy\_create가 설정되어 있더라도 create as select를 금지합니다. 23.12에서는 무조건 금지되었고, 아직 릴리스되지 않은 24.7에서는 이 설정으로 인해 실수로 허용되었습니다. [#66980](https://github.com/ClickHouse/ClickHouse/pull/66980) ([vdimir](https://github.com/vdimir)).
* `numbers`에서 읽을 때 `max_rows_to_read` 제한이 설정되어 있으면 예외가 잘못 발생할 수 있었습니다. 이로써 [#66992](https://github.com/ClickHouse/ClickHouse/issues/66992)가 해결되었습니다. [#66996](https://github.com/ClickHouse/ClickHouse/pull/66996) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* lagInFrame 및 leadInFrame 윈도우 함수에 적절한 형 변환을 추가 - msan 테스트 문제를 수정합니다. [#67091](https://github.com/ClickHouse/ClickHouse/pull/67091) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* TRUNCATE DATABASE가 DROP DATABASE 쿼리처럼 복제를 중지하던 문제가 수정되었습니다. [#67129](https://github.com/ClickHouse/ClickHouse/pull/67129) ([Alexander Tokmakov](https://github.com/tavplubix)).
* `clickhouse-local`에서 별도의 클라이언트 Context를 사용하도록 했습니다. [#67133](https://github.com/ClickHouse/ClickHouse/pull/67133) ([Vitaly Baranov](https://github.com/vitlibar)).
* 세그먼트가 1개인 `Distriburted` 테이블 위에서 동작하는 `Merge` 테이블을 읽는 쿼리에서 발생하던 `Cannot convert column because it is non constant in source stream but must be constant in result.` 오류를 수정했습니다. [#67146](https://github.com/ClickHouse/ClickHouse/pull/67146) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `enable_order_by_all`이 비활성화된 상태와 병렬 레플리카 환경(분산 쿼리 포함)에서 `ORDER BY all`이 올바르게 동작하도록 수정했습니다. [#67153](https://github.com/ClickHouse/ClickHouse/pull/67153) ([Igor Nikonov](https://github.com/devcrafter)).
* schema cache에서 schema 추론용 input\_format\_max\_bytes\_to\_read\_for\_schema\_inference의 잘못된 사용을 수정했습니다. [#67157](https://github.com/ClickHouse/ClickHouse/pull/67157) ([Kruglov Pavel](https://github.com/Avogar)).
* 단일 널 허용 키에 대해 GROUP BY를 수행하는 중 예외가 발생할 때 `count distinct`에서 발생하던 메모리 누수를 수정했습니다. [#67171](https://github.com/ClickHouse/ClickHouse/pull/67171) ([Jet He](https://github.com/compasses)).
* OUTER JOIN을 INNER JOIN으로 변환하는 최적화 과정에서 발생한 오류를 수정했습니다. 이로써 [#67156](https://github.com/ClickHouse/ClickHouse/issues/67156)가 해결되었습니다. 이로써 [#66447](https://github.com/ClickHouse/ClickHouse/issues/66447)가 해결되었습니다. 이 버그는 [https://github.com/ClickHouse/ClickHouse/pull/62907에서](https://github.com/ClickHouse/ClickHouse/pull/62907에서) 도입되었습니다. [#67178](https://github.com/ClickHouse/ClickHouse/pull/67178) ([Maksim Kita](https://github.com/kitaisreal)).
* 오류 `Conversion from AggregateFunction(name, Type) to AggregateFunction(name, Nullable(Type)) is not supported`를 수정했습니다. 이 버그는 `optimize_rewrite_aggregate_function_with_if` 최적화 때문에 발생했습니다. [#67112](https://github.com/ClickHouse/ClickHouse/issues/67112)를 수정했습니다. [#67229](https://github.com/ClickHouse/ClickHouse/pull/67229) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* IN 함수의 좌변으로 빈 Tuple을 사용할 때 쿼리가 멈추는 문제를 수정했습니다. [#67295](https://github.com/ClickHouse/ClickHouse/pull/67295) ([Duc Canh Le](https://github.com/canhld94)).
* 알 수 없는 필드를 스키핑하는 과정에서 스택 오버플로우를 유발하는 매우 깊은 중첩 JSON 데이터를 생성할 수 있었습니다. 이로써 [#67292](https://github.com/ClickHouse/ClickHouse/issues/67292)가 해결되었습니다. [#67324](https://github.com/ClickHouse/ClickHouse/pull/67324) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 시작 중 예외가 발생한 뒤 ReplicatedMergeTree 테이블 ATTACH 문제를 수정했습니다. [#67360](https://github.com/ClickHouse/ClickHouse/pull/67360) ([Antonio Andelic](https://github.com/antonio2368)).
* `Aggregator`에서 스레드 그룹으로부터 잘못 분리되면서 발생하던 segfault를 수정했습니다. [#67385](https://github.com/ClickHouse/ClickHouse/pull/67385) ([Antonio Andelic](https://github.com/antonio2368)).
* PK에 비결정적 함수가 지정된 또 다른 경우를 수정했습니다. [#67395](https://github.com/ClickHouse/ClickHouse/pull/67395) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `bloom_filter` 인덱스로 인해 `(k=2)=(k=2)` 또는 `has([1,2,3], k)`처럼 다소 특이한 조건식에서 쿼리가 실패하던 문제를 수정했습니다. [#67423](https://github.com/ClickHouse/ClickHouse/pull/67423) ([Michael Kolupaev](https://github.com/al13n321)).
* 아카이브가 아닌 경우 `::`가 포함된 파일 이름/URI를 올바르게 파싱합니다. [#67433](https://github.com/ClickHouse/ClickHouse/pull/67433) ([Antonio Andelic](https://github.com/antonio2368)).
* WriteBuffer가 취소된 경우 \~WriteBufferFromS3의 작업 대기 문제를 수정했습니다. [#67459](https://github.com/ClickHouse/ClickHouse/pull/67459) ([Kseniia Sumarokova](https://github.com/kssenii)).
* RESTORE 중 임시 part 디렉터리가 삭제되는 것을 방지합니다. [#67491](https://github.com/ClickHouse/ClickHouse/pull/67491) ([Vitaly Baranov](https://github.com/vitlibar)).
* 중첩된 단락 평가(short-circuit) 함수의 실행 문제를 수정했습니다. [#67520](https://github.com/ClickHouse/ClickHouse/pull/67520) ([Kruglov Pavel](https://github.com/Avogar)).
* `Logical error: Expected the argument №N of type T to have X rows, but it has 0` 오류를 수정했습니다. 이 오류는 `GROUP BY`에 상수 표현식이 포함된 원격 쿼리에서(새 분석기 사용 시) 발생할 수 있었습니다. [#67536](https://github.com/ClickHouse/ClickHouse/pull/67536) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* NULL이 포함된 튜플에 대한 조인 수정: 새 분석기에서 `JOIN ON` 절의 튜플 내부에 `NULL`이 있는 일부 쿼리가 잘못된 결과를 반환하던 문제를 수정했습니다. [#67538](https://github.com/ClickHouse/ClickHouse/pull/67538) ([vdimir](https://github.com/vdimir)).
* 가득 차 있어 제거할 수 없는 cache에서 `FileCache::freeSpaceRatioKeepingThreadFunc()`가 중복으로 다시 예약되는 문제를 수정했습니다. [#67540](https://github.com/ClickHouse/ClickHouse/pull/67540) ([Kseniia Sumarokova](https://github.com/kssenii)).
* HTTP 인터페이스를 통해 스트림형 엔진(Kafka, RabbitMQ, NATS)에 데이터를 삽입할 때 발생하던 문제를 수정했습니다. [#67554](https://github.com/ClickHouse/ClickHouse/pull/67554) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 작은 `DateTime64` 값에서 잘못된 결과를 반환하던 `toStartOfWeek` 함수 수정. [#67558](https://github.com/ClickHouse/ClickHouse/pull/67558) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 재귀 CTE를 사용하는 뷰 생성 문제를 수정했습니다. [#67587](https://github.com/ClickHouse/ClickHouse/pull/67587) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* 파일 시스템 캐시에서 `Logical error: 'file_offset_of_buffer_end <= read_until_position'` 오류를 수정했습니다. [#57508](https://github.com/ClickHouse/ClickHouse/issues/57508)을 해결합니다. [#67623](https://github.com/ClickHouse/ClickHouse/pull/67623) ([Kseniia Sumarokova](https://github.com/kssenii)).
* [#62282](https://github.com/ClickHouse/ClickHouse/issues/62282)를 수정했습니다. `convertFieldToString()` 호출을 제거하고 데이터 타입별 직렬화 코드를 추가했습니다. 매개변수 값이 데이터 타입 인스턴스를 반환하는 함수나 표현식일 때, 여러 데이터 타입에서 매개변수화된 뷰 치환이 올바르게 동작하지 않았습니다. [#67654](https://github.com/ClickHouse/ClickHouse/pull/67654) ([Shankar](https://github.com/shiyer7474)).
* `percent_rank`에서 발생하던 충돌을 수정했습니다. `percent_rank`의 기본 frame 유형이 `range unbounded preceding and unbounded following`으로 변경되었습니다. `IWindowFunction`의 기본 윈도우 frame이 반영되어, 이제 SQL에서 윈도우 frame 정의가 없는 윈도우 함수를 서로 다른 `WindowTransfomer`에 올바르게 배치할 수 있습니다. [#67661](https://github.com/ClickHouse/ClickHouse/pull/67661) ([lgbo](https://github.com/lgbo-ustc)).
* UNION 사용 시 SQL UDF를 다시 로드하는 과정에서 발생하던 문제를 수정했습니다. 이전에는 server를 다시 시작하면 UDF가 유효하지 않게 될 수 있었습니다. [#67665](https://github.com/ClickHouse/ClickHouse/pull/67665) ([Antonio Andelic](https://github.com/antonio2368)).
* 실험적 Variant 유형과 활성화된 `use_variant_as_common_type ` 설정을 사용하는 `if` 함수에서 튜플과 맵에 대해 발생할 수 있는 논리 오류 "if의 예기치 않은 반환 유형"을 수정했습니다. [#67687](https://github.com/ClickHouse/ClickHouse/pull/67687) ([Kruglov Pavel](https://github.com/Avogar)).
* Linux Kernel의 버그로 인해 쿼리가 `TimerDescriptor::drain`에서 중단될 수 있습니다. 이로써 [#37686](https://github.com/ClickHouse/ClickHouse/issues/37686)가 해결됩니다. [#67702](https://github.com/ClickHouse/ClickHouse/pull/67702) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `RESTORE ON CLUSTER` 명령의 자동 완성을 수정했습니다. [#67720](https://github.com/ClickHouse/ClickHouse/pull/67720) ([Vitaly Baranov](https://github.com/vitlibar)).
* 로딩 중 CANNOT\_SCHEDULE\_TASK가 발생할 때 딕셔너리가 멈추는 문제를 수정했습니다. [#67751](https://github.com/ClickHouse/ClickHouse/pull/67751) ([Azat Khuzhin](https://github.com/azat)).
* `SELECT count() FROM t WHERE cast(c = 1 or c = 9999 AS Bool) SETTINGS use_skip_indexes=1`와 같은 쿼리가 이제 `c`에 블룸 필터 인덱스가 있을 때도 올바르게 작동합니다. [#67781](https://github.com/ClickHouse/ClickHouse/pull/67781) ([jsc0218](https://github.com/jsc0218)).
* 일부 쿼리에서 GROUP BY 키 없는 집계와 필터를 함께 사용할 때 잘못된 집계 결과가 나오던 문제를 수정하고, [#67419](https://github.com/ClickHouse/ClickHouse/issues/67419)를 해결했습니다. [#67804](https://github.com/ClickHouse/ClickHouse/pull/67804) ([vdimir](https://github.com/vdimir)).
* ALTER ADD/MODIFY COLUMN에서 실험적이거나 의심스러운 데이터 타입을 검증합니다. [#67911](https://github.com/ClickHouse/ClickHouse/pull/67911) ([Kruglov Pavel](https://github.com/Avogar)).
* 분산 쿼리에서 상수 폴딩 이후 DateTime64 파싱 문제를 수정하고, [#66773](https://github.com/ClickHouse/ClickHouse/issues/66773)을 해결했습니다. [#67920](https://github.com/ClickHouse/ClickHouse/pull/67920) ([vdimir](https://github.com/vdimir)).
* 프레디케이트에 비결정적 함수가 포함된 경우 잘못된 `count()` 결과가 반환되던 문제를 수정했습니다. [#67922](https://github.com/ClickHouse/ClickHouse/pull/67922) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 사용 가능한 CPU 수가 제한된 컨테이너 환경에서 최대 스레드 소프트 리밋 계산을 수정했습니다. [#67963](https://github.com/ClickHouse/ClickHouse/pull/67963) ([Robert Schulze](https://github.com/rschu1ze)).
* 이제 디스크에는 프로젝션이 없지만 `checksums.txt`에는 있는 경우에도, ClickHouse는 해당 part를 손상된 것으로 간주하지 않습니다. [#68003](https://github.com/ClickHouse/ClickHouse/pull/68003) ([alesapin](https://github.com/alesapin)).
* 새 분석기에서 뮤테이션 수행 시 변경되지 않은 파트가 스키핑되지 않던 문제가 수정되었습니다. 이전에는 분석기가 활성화된 경우, 프레디케이트에 따라 뮤테이션이 해당 파트에 영향을 주지 않더라도 파트의 데이터가 뮤테이션에 의해 다시 기록될 수 있었습니다. [#68052](https://github.com/ClickHouse/ClickHouse/pull/68052) ([Anton Popov](https://github.com/CurtizJ)).
* `OFFSET`를 사용하는 서브쿼리에서 정렬 제거를 수행하는 잘못된 최적화를 제거했습니다. [#67906](https://github.com/ClickHouse/ClickHouse/issues/67906)을 수정했습니다. [#68099](https://github.com/ClickHouse/ClickHouse/pull/68099) ([Graham Campbell](https://github.com/GrahamCampbell)).
* 집계 프로젝션 최적화를 위해 `Block structure mismatch in AggregatingStep stream: different types` 오류 수정 시도. [#68107](https://github.com/ClickHouse/ClickHouse/pull/68107) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 쿼리가 취소될 때 발생하는 postgres 충돌을 수정하려고 시도합니다. [#68288](https://github.com/ClickHouse/ClickHouse/pull/68288) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 쿼리 `SYSTEM SYNC REPLICA`에서 누락된 sync replica 모드 문제를 수정했습니다. [#68326](https://github.com/ClickHouse/ClickHouse/pull/68326) ([Duc Canh Le](https://github.com/canhld94)).

### <a id="247" /> ClickHouse 릴리스 24.7, 2024-07-30. [발표 자료](https://presentations.clickhouse.com/2024-release-24.7/), [동영상](https://www.youtube.com/watch?v=GerQFdJCk7A)

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

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

* 복제된 데이터베이스에서는 `CRATE MATERIALIZED VIEW ... ENGINE Replicated*MergeTree POPULATE AS SELECT ...`를 사용할 수 없도록 변경되었습니다. [#63963](https://github.com/ClickHouse/ClickHouse/pull/63963) ([vdimir](https://github.com/vdimir)).
* `clickhouse-keeper-client`는 이제 `ls '/hello/world'`와 같은 문자열 리터럴 형태의 경로만 허용하며, `ls /hello/world`와 같은 따옴표 없는 문자열은 허용하지 않습니다. [#65494](https://github.com/ClickHouse/ClickHouse/pull/65494) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 메트릭 `KeeperOutstandingRequets`의 이름이 `KeeperOutstandingRequests`로 변경되었습니다. [#66206](https://github.com/ClickHouse/ClickHouse/pull/66206) ([Robert Schulze](https://github.com/rschu1ze)).
* `system.functions` 테이블에서 `is_deterministic` 필드가 제거되었습니다. [#66630](https://github.com/ClickHouse/ClickHouse/pull/66630) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이제 함수 `tuple`은 쿼리에서 이름이 지정된 Tuple을 구성하려고 시도합니다(`enable_named_columns_in_function_tuple`로 제어됨). 또한 튜플에서 이름을 추출하는 함수 `tupleNames`가 도입되었습니다. [#54881](https://github.com/ClickHouse/ClickHouse/pull/54881) ([Amos Bird](https://github.com/amosbird)).
* 구체화된 뷰(Materialized View)의 중복 제거 동작 방식이 변경되었습니다. 다음과 같은 여러 경우가 수정되었습니다. - 대상 테이블: 데이터가 2개 이상의 블록으로 분할되고, 해당 블록이 병렬로 삽입될 때 중복으로 간주되던 경우. - MV 대상 테이블: 동일한 블록이 중복 제거되던 경우. 이는 MV가 집계를 수행하면서 서로 다른 입력 데이터에 대해서도 동일한 결과 데이터를 자주 생성할 수 있기 때문입니다. - MV 대상 테이블: 서로 다른 MV에서 온 동일한 블록이 중복 제거되던 경우. [#61601](https://github.com/ClickHouse/ClickHouse/pull/61601) ([Sema Checherinda](https://github.com/CheSema)).
* 함수 `bitShiftLeft`와 `bitShitfRight`는 범위를 벗어난 shift 위치에 대해 오류를 반환합니다. [#65838](https://github.com/ClickHouse/ClickHouse/pull/65838) ([Pablo Marcos](https://github.com/pamarcos)).

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

* `full_sorting_join` 알고리즘에 `ASOF JOIN` 지원을 추가했습니다. [#55051](https://github.com/ClickHouse/ClickHouse/pull/55051) ([vdimir](https://github.com/vdimir)).
* `clickhouse-client`에서 JWT 인증(authentication)을 지원합니다(ClickHouse Cloud에서만 사용 가능). [#62829](https://github.com/ClickHouse/ClickHouse/pull/62829) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* SQL 함수 `changeYear`, `changeMonth`, `changeDay`, `changeHour`, `changeMinute`, `changeSecond`를 추가했습니다. 예를 들어 `SELECT changeMonth(toDate('2024-06-14'), 7)`는 날짜 `2024-07-14`를 반환합니다. [#63186](https://github.com/ClickHouse/ClickHouse/pull/63186) ([cucumber95](https://github.com/cucumber95)).
* 시작 단계에서 미리 구성된 쿼리를 실행할 수 있는 시작 스크립트를 도입했습니다. [#64889](https://github.com/ClickHouse/ClickHouse/pull/64889) ([pufit](https://github.com/pufit)).
* 자체 서명 인증서를 사용하는 server에 클라이언트가 보안 TCP로 연결할 수 있도록, 클라이언트 설정의 `accept_invalid_certificate`를 지원합니다. 이는 해당 `openSSL` 클라이언트 설정 `verificationMode=none` + `invalidCertificateHandler.name=AcceptCertificateHandler`를 축약해서 사용할 수 있는 기능입니다. [#65238](https://github.com/ClickHouse/ClickHouse/pull/65238) ([peacewalker122](https://github.com/peacewalker122)).
* `system.errors` 테이블의 오류 값 이력을 포함하고 주기적으로 디스크에 플러시되는 `system.error_log`를 추가했습니다. [#65381](https://github.com/ClickHouse/ClickHouse/pull/65381) ([Pablo Marcos](https://github.com/pamarcos)).
* 집계 함수 `groupConcat`를 추가했습니다. 이는 `arrayStringConcat( groupArray(column), ',')`와 거의 같습니다. 문자열 구분자와 처리할 요소 수, 총 2개의 매개변수를 받을 수 있습니다. [#65451](https://github.com/ClickHouse/ClickHouse/pull/65451) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* AzureQueue 스토리지를 추가했습니다. [#65458](https://github.com/ClickHouse/ClickHouse/pull/65458) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Parquet 파일에 페이지 인덱스를 기록하는 기능을 비활성화하거나 활성화하는 새로운 설정을 추가했습니다. [#65475](https://github.com/ClickHouse/ClickHouse/pull/65475) ([lgbo](https://github.com/lgbo-ustc)).
* 콘솔 로그 레벨을 제어하는 `logger.console_log_level` server 구성을 도입했습니다(활성화된 경우). [#65559](https://github.com/ClickHouse/ClickHouse/pull/65559) ([Azat Khuzhin](https://github.com/azat)).
* 테이블 함수 `file`에서 디렉터리 경로 끝에 와일드카드 `*`를 자동으로 추가합니다. [#66019](https://github.com/ClickHouse/ClickHouse/pull/66019) ([Zhidong (David) Guo](https://github.com/Gun9niR)).
* 비대화형 모드의 클라이언트에 `--memory-usage` 옵션을 추가했습니다. [#66393](https://github.com/ClickHouse/ClickHouse/pull/66393) ([vdimir](https://github.com/vdimir)).
* `clickhouse-disks`용 대화형 클라이언트를 만들고, 로컬 디렉터리에서 로컬 디스크를 추가할 수 있게 했습니다. [#64446](https://github.com/ClickHouse/ClickHouse/pull/64446) ([Daniil Ivanik](https://github.com/divanik)).
* projection이 있는 테이블에서 경량한 삭제가 발생하면, 예외를 발생시키거나(기본값) projection을 삭제하도록 선택할 수 있습니다. [#65594](https://github.com/ClickHouse/ClickHouse/pull/65594) ([jsc0218](https://github.com/jsc0218)).
* 모든 분리된 테이블의 주요 정보를 담은 system tables를 추가했습니다. [#65400](https://github.com/ClickHouse/ClickHouse/pull/65400) ([Konstantin Morozov](https://github.com/k-morozov)).

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

* `Variant` 데이터 타입의 바이너리 직렬화를 변경했습니다. 단일 variant만 있거나 NULL 값만 있는 그래뉼에서 동일한 discriminator를 여러 번 기록하지 않도록 `compact` 모드를 추가했습니다. 기본적으로 활성화되는 MergeTree 설정 `use_compact_variant_discriminators_serialization`도 추가했습니다. Variant 타입은 여전히 실험적이므로, 직렬화의 하위 호환되지 않는 변경도 허용된다는 점에 유의하십시오. [#62774](https://github.com/ClickHouse/ClickHouse/pull/62774) ([Kruglov Pavel](https://github.com/Avogar)).
* ClickHouse Keeper에 대한 디스크 기반 백엔드 스토리지 지원을 추가했습니다. [#56626](https://github.com/ClickHouse/ClickHouse/pull/56626) ([Han Fei](https://github.com/hanfei1991)).
* JSONExtract 함수를 리팩터링하고, 실험적인 Dynamic 타입을 포함한 더 많은 타입을 지원합니다. [#66046](https://github.com/ClickHouse/ClickHouse/pull/66046) ([Kruglov Pavel](https://github.com/Avogar)).
* `Variant` 및 `Dynamic` 서브컬럼에 대해 null 맵 서브컬럼을 지원합니다. [#66178](https://github.com/ClickHouse/ClickHouse/pull/66178) ([Kruglov Pavel](https://github.com/Avogar)).
* 변경된 `Memory` 테이블에서 `Dynamic` 서브컬럼을 읽는 문제를 수정했습니다. 이전에는 `Memory` 테이블에서 ALTER를 통해 Dynamic 타입의 `max_types` 매개변수를 변경하면 이후 서브컬럼 읽기에서 잘못된 결과가 반환될 수 있었습니다. [#66066](https://github.com/ClickHouse/ClickHouse/pull/66066) ([Kruglov Pavel](https://github.com/Avogar)).
* 사용자 지정 키 병렬 레플리카를 사용할 때 `cluster_for_parallel_replicas` 지원을 추가했습니다. 이를 통해 MergeTree 테이블에서 사용자 지정 키와 함께 병렬 레플리카를 사용할 수 있습니다. [#65453](https://github.com/ClickHouse/ClickHouse/pull/65453) ([Antonio Andelic](https://github.com/antonio2368)).

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

* int를 string으로 변환하는 알고리즘을 더 빠른 알고리즘으로 대체했습니다(수정된 amdn/itoa에서 수정된 jeaiii/itoa로). [#61661](https://github.com/ClickHouse/ClickHouse/pull/61661) ([Raúl Marín](https://github.com/Algunenano)).
* join(`parallel_hash` 알고리즘)에서 생성되는 해시 테이블의 크기를 이제 수집해 캐시합니다. 이 정보는 이후 쿼리 실행 시 해시 테이블 공간을 미리 할당하는 데 사용되어, 해시 테이블 크기 재조정 시간을 줄여줍니다. [#64553](https://github.com/ClickHouse/ClickHouse/pull/64553) ([Nikita Taranov](https://github.com/nickitat)).
* 버퍼링을 사용해, 선택도가 높은 조건이 있는 `WHERE`와 프라이머리 키 기준 `ORDER BY`를 사용하는 쿼리를 최적화했습니다. 이 동작은 `read_in_order_use_buffering` 설정으로 제어되며(기본적으로 활성화), 쿼리의 메모리 사용량이 증가할 수 있습니다. [#64607](https://github.com/ClickHouse/ClickHouse/pull/64607) ([Anton Popov](https://github.com/CurtizJ)).
* `plain_rewritable` 메타데이터 로딩 성능을 개선했습니다. [#65634](https://github.com/ClickHouse/ClickHouse/pull/65634) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 읽기 전용 디스크에서 테이블을 ATTACH할 때 오래된 파트를 로드하지 않도록 해 리소스 사용량을 줄였습니다. [#65635](https://github.com/ClickHouse/ClickHouse/pull/65635) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Set 인덱스에 minmax hyperrectangle을 지원합니다. [#65676](https://github.com/ClickHouse/ClickHouse/pull/65676) ([AntiTopQuark](https://github.com/AntiTopQuark)).
* 전체 메모리 사용량을 줄이기 위해 오래된 파트의 프라이머리 인덱스를 언로드합니다. [#65852](https://github.com/ClickHouse/ClickHouse/pull/65852) ([Anton Popov](https://github.com/CurtizJ)).
* `replaceRegexpAll` 및 `replaceRegexpOne` 함수는 이제 pattern이 단순한 경우, 즉 메타문자, pattern class, 플래그, 그룹화 문자 등을 포함하지 않으면 훨씬 더 빠르게 동작합니다. (Taiyang Li에게 감사드립니다.) [#66185](https://github.com/ClickHouse/ClickHouse/pull/66185) ([Robert Schulze](https://github.com/rschu1ze)).
* S3 요청: 쿼리의 retry 시간을 줄이고 backups의 retries 횟수를 늘렸습니다. 쿼리는 8.5분에 100회 재시도, backup 복원은 1.2시간에 1000회 재시도입니다. [#65232](https://github.com/ClickHouse/ClickHouse/pull/65232) ([Sema Checherinda](https://github.com/CheSema)).
* 쿼리 계획 LIMIT 최적화를 지원합니다. PostgreSQL storage와 테이블 함수에 LIMIT pushdown을 지원합니다. [#65454](https://github.com/ClickHouse/ClickHouse/pull/65454) ([Maksim Kita](https://github.com/kitaisreal)).
* ZooKeeper 로드 밸런싱을 개선했습니다. `fallback_session_lifetime`에도 불구하고 최적의 노드를 사용할 수 있게 될 때까지 현재 session은 만료되지 않습니다. AZ 인식 밸런싱 지원도 추가했습니다. [#65570](https://github.com/ClickHouse/ClickHouse/pull/65570) ([Alexander Tokmakov](https://github.com/tavplubix)).
* DatabaseCatalog는 최대 `database_catalog_drop_table_concurrency`개의 thread를 사용해 테이블을 더 빠르게 삭제합니다. [#66065](https://github.com/ClickHouse/ClickHouse/pull/66065) ([Sema Checherinda](https://github.com/CheSema)).

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

* ZooKeeper 로드 밸런싱이 개선되었습니다. `fallback_session_lifetime`가 설정되어 있어도 현재 session은 최적의 노드를 사용할 수 있게 될 때까지 만료되지 않습니다. AZ를 고려한 밸런싱 지원이 추가되었습니다. [#65570](https://github.com/ClickHouse/ClickHouse/pull/65570) ([Alexander Tokmakov](https://github.com/tavplubix)).
* `optimize_trivial_insert_select` 설정은 기본적으로 비활성화되어 있습니다. 대부분의 경우 이 설정을 사용하면 이점이 있습니다. 다만 INSERT SELECT가 더 느려지거나 메모리 사용량이 증가하는 경우에는 이 설정을 다시 활성화하거나 `SET compatibility = '24.6'`를 설정할 수 있습니다. [#58970](https://github.com/ClickHouse/ClickHouse/pull/58970) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-client` 또는 `clickhouse-local`가 비정상 종료되면 스택 트레이스와 진단 정보를 출력합니다. [#61109](https://github.com/ClickHouse/ClickHouse/pull/61109) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 이전에는 `SHOW INDEX | INDEXES | INDICES | KEYS`의 결과가 프라이머리 키(primary key) 컬럼 이름 기준으로 정렬되었습니다. 이는 직관적이지 않았기 때문에, 이제는 결과가 프라이머리 키 내 각 컬럼의 위치를 기준으로 정렬됩니다. [#61131](https://github.com/ClickHouse/ClickHouse/pull/61131) ([Robert Schulze](https://github.com/rschu1ze)).
* Materialized View의 중복 제거 방식이 변경되었습니다. 다음과 같은 여러 사례가 수정되었습니다: - 대상 테이블에서: 데이터가 2개 이상의 block으로 분할될 때, 해당 block이 병렬로 삽입되면 중복으로 간주되던 문제입니다. - MV 대상 테이블에서: 집계를 수행하는 과정에서 서로 다른 입력 데이터에 대해서도 MV가 동일한 결과 데이터를 자주 생성해, 동일한 block이 중복 제거되던 문제입니다. - MV 대상 테이블에서: 서로 다른 MV에서 생성된 동일한 block이 중복 제거되던 문제입니다. [#61601](https://github.com/ClickHouse/ClickHouse/pull/61601) ([Sema Checherinda](https://github.com/CheSema)).
* 파티션된 DeltaLake 데이터 읽기를 지원합니다. 데이터가 아니라 메타데이터를 읽어 DeltaLake 스키마를 추론합니다. [#63201](https://github.com/ClickHouse/ClickHouse/pull/63201) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 조합형 프로토콜에서는 TLS 계층에서 `certificateFile` 및 `privateKeyFile` 매개변수만 허용되었습니다. [https://clickhouse.com/docs/operations/settings/composable-protocols](https://clickhouse.com/docs/operations/settings/composable-protocols). [#63985](https://github.com/ClickHouse/ClickHouse/pull/63985) ([Anton Ivashkin](https://github.com/ianton-ru)).
* WHERE 절 평가에 기본 키(primary key)를 사용하는 SELECT 쿼리 수를 나타내는 profile 이벤트 `SelectQueriesWithPrimaryKeyUsage`가 추가되었습니다. [#64492](https://github.com/ClickHouse/ClickHouse/pull/64492) ([0x01f](https://github.com/0xfei)).
* `StorageS3Queue` 관련 수정 및 개선 사항입니다. `s3queue_processing_threads_num`의 기본값이 기존의 1이 아니라 서버의 물리적 CPU 코어 수에 따라 결정되도록 변경했습니다. `s3queue_loading_retries`의 기본값을 10으로 설정했습니다. `system.s3queue`의 exception 컬럼에 모호한 "포착되지 않은 예외"가 표시될 수 있던 문제를 수정했습니다. `MEMORY_LIMIT_EXCEEDED` 예외가 발생한 경우 재시도 횟수를 증가시키지 않도록 했습니다. 파일이 테이블에 삽입되기 전에 커밋되는 상황을 방지하기 위해, 파일 커밋 시점을 테이블 삽입이 완전히 끝난 이후 단계로 옮겼습니다. 커밋 및 플러시 시점을 더 세밀하게 제어할 수 있도록 `s3queue_max_processed_files_before_commit`, `s3queue_max_processed_rows_before_commit`, `s3queue_max_processed_bytes_before_commit`, `s3queue_max_processing_time_sec_before_commit` 설정을 추가했습니다. [#65046](https://github.com/ClickHouse/ClickHouse/pull/65046) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 매개변수화된 view function에서 별칭 사용을 지원합니다(새 분석기에서만). [#65190](https://github.com/ClickHouse/ClickHouse/pull/65190) ([Kseniia Sumarokova](https://github.com/kssenii)).
* azureBlobStorage 로그에서 계정 키를 마스킹하도록 개선했습니다. [#65273](https://github.com/ClickHouse/ClickHouse/pull/65273) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* `IN` 프레디케이트에서, 필터 표현식이 `PARTITION BY` 표현식의 일부인 경우 파티션 프루닝을 지원합니다. [#65335](https://github.com/ClickHouse/ClickHouse/pull/65335) ([Eduard Karacharov](https://github.com/korowa)).
* `arrayMin`/`arrayMax`는 비교 가능한 모든 데이터 타입에 적용됩니다. [#65455](https://github.com/ClickHouse/ClickHouse/pull/65455) ([pn](https://github.com/chloro-pn)).
* 페이지 캐시가 차지하는 용량을 제외하도록 cgroups v2의 메모리 집계를 개선했습니다. [#65470](https://github.com/ClickHouse/ClickHouse/pull/65470) ([Nikita Taranov](https://github.com/nickitat)).
* 청크를 직렬화해 EmbeddedRocksDB 테이블에 삽입할 때 각 행마다 포맷 설정을 생성하지 않도록 개선했습니다. [#65474](https://github.com/ClickHouse/ClickHouse/pull/65474) ([Duc Canh Le](https://github.com/canhld94)).
* `clickhouse-local` 프롬프트를 `:)`만 표시하도록 줄였습니다. `getFQDNOrHostName()`는 macOS에서 실행 시 시간이 너무 오래 걸리고, `clickhouse-local` 프롬프트에는 호스트명을 표시할 필요도 없기 때문입니다. [#65510](https://github.com/ClickHouse/ClickHouse/pull/65510) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 저사양 가상 머신에서 CPU별 Arena 관련 jemalloc 메시지가 출력되지 않도록 했습니다. [#65532](https://github.com/ClickHouse/ClickHouse/pull/65532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 기본적으로 파일 시스템 캐시의 백그라운드 다운로드를 비활성화합니다. 백그라운드 다운로드 스레드를 사용할 때 메모리 해제가 쿼리 Context 외부에서 수행되고(buffer는 쿼리 Context 내부에서 할당됨), 이로 인해 "Memory limit exceeded" 문제가 발생할 수 있는데, 이 문제를 수정한 후 다시 활성화할 예정입니다. 또한 백그라운드 worker의 최대 다운로드 크기를 정의하는 별도의 setting도 추가해야 합니다(현재는 max\_file\_segment\_size로 제한되는데, 이 값이 너무 클 수 있습니다). [#65534](https://github.com/ClickHouse/ClickHouse/pull/65534) ([Kseniia Sumarokova](https://github.com/kssenii)).
* config `<config_reload_interval_ms>`에 ClickHouse가 config를 다시 로드하는 주기를 지정할 수 있는 새 옵션을 추가했습니다. [#65545](https://github.com/ClickHouse/ClickHouse/pull/65545) ([alesapin](https://github.com/alesapin)).
* ClickHouse 데이터 타입을 위한 바이너리 인코딩을 구현하고, 해당 명세를 문서에 추가했습니다. 이를 Dynamic 바이너리 직렬화에 사용하고, 설정을 통해 RowBinaryWithNamesAndTypes 및 Native 포맷에서도 사용할 수 있도록 했습니다. [#65546](https://github.com/ClickHouse/ClickHouse/pull/65546) ([Kruglov Pavel](https://github.com/Avogar)).
* 서버 설정 `compiled_expression_cache_size` 및 `compiled_expression_cache_elements_size`가 이제 `system.server_settings`에 표시됩니다. [#65584](https://github.com/ClickHouse/ClickHouse/pull/65584) ([Robert Schulze](https://github.com/rschu1ze)).
* x509 SubjectAltName 확장을 기반으로 사용자 식별을 지원하도록 추가했습니다. [#65626](https://github.com/ClickHouse/ClickHouse/pull/65626) ([Anton Kozlov](https://github.com/tonickkozlov)).
* `clickhouse-local`은 설정 파일의 `max_server_memory_usage` 및 `max_server_memory_usage_to_ram_ratio`를 따릅니다. 또한 `clickhouse-server`와 마찬가지로 기본적으로 최대 메모리 사용량을 시스템 메모리의 90%로 설정합니다. [#65697](https://github.com/ClickHouse/ClickHouse/pull/65697) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 파일을 ClickHouse에 백업하기 위한 스크립트를 추가했습니다. [#65699](https://github.com/ClickHouse/ClickHouse/pull/65699) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 쿼리 취소를 지원하도록 PostgreSQL 소스를 개선했습니다. [#65722](https://github.com/ClickHouse/ClickHouse/pull/65722) ([Maksim Kita](https://github.com/kitaisreal)).
* 분산 쿼리에서는 `allow_experimental_analyzer`를 initiator가 제어하도록 했습니다. 이를 통해 버전이 혼재된 클러스터에서 작업하는 동안 호환성과 정확성이 보장됩니다. [#65777](https://github.com/ClickHouse/ClickHouse/pull/65777) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Keeper에서 cgroup CPU 제한을 따르도록 했습니다. [#65819](https://github.com/ClickHouse/ClickHouse/pull/65819) ([Antonio Andelic](https://github.com/antonio2368)).
* 빈 인수로도 `concat` 함수를 사용할 수 있게 했습니다 `:) select concat();`. [#65887](https://github.com/ClickHouse/ClickHouse/pull/65887) ([李扬](https://github.com/taiyang-li)).
* `clickhouse-local`에서 이름이 지정된 컬렉션을 제어할 수 있습니다. [#65973](https://github.com/ClickHouse/ClickHouse/pull/65973) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Azure 관련 profile events를 개선했습니다. [#65999](https://github.com/ClickHouse/ClickHouse/pull/65999) ([alesapin](https://github.com/alesapin)).
* 작성자의 시간대(time zone)를 사용해 ORC 파일을 읽을 수 있도록 지원합니다. [#66025](https://github.com/ClickHouse/ClickHouse/pull/66025) ([kevinyhzou](https://github.com/KevinyhZou)).
* PostgreSQL 연결을 제어하는 설정이 추가되었습니다. 설정 `postgresql_connection_attempt_timeout`은 연결 URL의 `connect_timeout` 매개변수에 전달할 값을 지정합니다. 설정 `postgresql_connection_pool_retries`는 PostgreSQL 엔드포인트에 대한 연결을 설정할 때 재시도할 횟수를 지정합니다. [#66232](https://github.com/ClickHouse/ClickHouse/pull/66232) ([Dmitry Novik](https://github.com/novikd)).
* `system.processors_profile_log`의 `input_wait_elapsed_us`/`elapsed_us` 부정확도를 줄였습니다. [#66239](https://github.com/ClickHouse/ClickHouse/pull/66239) ([Azat Khuzhin](https://github.com/azat)).
* 파일 시스템 캐시의 ProfileEvents를 개선했습니다. [#66249](https://github.com/ClickHouse/ClickHouse/pull/66249) ([zhukai](https://github.com/nauu)).
* 복제 스토리지 사용 시 명명된 컬렉션 관리 쿼리에서 `ON CLUSTER` 절을 무시하도록 하는 설정을 추가했습니다. [#66288](https://github.com/ClickHouse/ClickHouse/pull/66288) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 이제 함수 `generateSnowflakeID`에서 대규모 클러스터의 충돌을 방지할 수 있도록 매개변수로 머신 ID를 지정할 수 있습니다. [#66374](https://github.com/ClickHouse/ClickHouse/pull/66374) ([ZAWA\_ll](https://github.com/Zawa-ll)).
* `Ctrl+Z`를 사용한 interactive mode에서의 일시 중단을 비활성화합니다. 이는 흔히 빠지기 쉬운 함정이며, 거의 모든 사용자에게 기대되는 동작이 아닙니다. 터미널 애플리케이션을 백그라운드로 보내는 기능을 반기는 극소수의 아주 숙련된 사용자도 있을 수 있겠지만, 저는 그런 사용자를 본 적이 없습니다. [#66511](https://github.com/ClickHouse/ClickHouse/pull/66511) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Dictionaries에서 기본 키(primary key) 유형을 검증하는 옵션이 추가되었습니다. 이 옵션이 없으면 단순 layout에서는 모든 컬럼 유형이 암묵적으로 UInt64로 변환됩니다. [#66595](https://github.com/ClickHouse/ClickHouse/pull/66595) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* CREATE/REPLACE/RENAME/EXCHANGE 쿼리의 순환 종속성을 검사하고, 순환 종속성이 있으면 예외를 발생시킵니다. 이전에는 이러한 순환 종속성으로 인해 server 시작 중 교착 상태가 발생할 수 있었습니다. 또한 종속성 생성 과정의 일부 버그도 수정했습니다. [#65405](https://github.com/ClickHouse/ClickHouse/pull/65405) ([Kruglov Pavel](https://github.com/Avogar)).
* 함수 호출에서 `LowCardinality` 컬럼의 크기가 예상과 다르게 처리되던 문제를 수정했습니다. [#65298](https://github.com/ClickHouse/ClickHouse/pull/65298) ([Raúl Marín](https://github.com/Algunenano)).
* maxIntersections의 비정상 종료 문제를 수정했습니다. [#65689](https://github.com/ClickHouse/ClickHouse/pull/65689) ([Raúl Marín](https://github.com/Algunenano)).
* 재시작 후 사용자 정의문에서 `VALID UNTIL` 절이 다시 초기화되는 문제를 수정했습니다. [#66409](https://github.com/ClickHouse/ClickHouse/pull/66409) ([Nikolay Degterinsky](https://github.com/evillique)).
* `SHOW MERGES`의 잔여 시간 컬럼을 수정했습니다. [#66735](https://github.com/ClickHouse/ClickHouse/pull/66735) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* clickhouse-client에서 `Query was cancelled`가 두 번 출력될 수 있었습니다. 이 동작은 수정되었습니다. [#66005](https://github.com/ClickHouse/ClickHouse/pull/66005) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* MySQL의 NULL 필드를 ClickHouse의 NOT NULL 필드로 매핑하는 TABLE OVERRIDE와 함께 `MaterializedMySQL`(지원되지 않는 실험적 기능)을 사용할 때 발생하던 충돌을 수정했습니다. [#54649](https://github.com/ClickHouse/ClickHouse/pull/54649) ([Filipp Ozinov](https://github.com/bakwc)).
* `PREWHERE` 표현식이 어떤 컬럼도 읽지 않고 테이블에 적응형 인덱스 세분화 수준이 없는 경우(매우 오래된 테이블)에 발생하는 논리 오류를 수정했습니다. [#59173](https://github.com/ClickHouse/ClickHouse/pull/59173) ([Alexander Gololobov](https://github.com/davenger)).
* 쿼리 취소 시 취소 버퍼 관련 버그를 수정했습니다. [#64478](https://github.com/ClickHouse/ClickHouse/pull/64478) ([Sema Checherinda](https://github.com/CheSema)).
* 메타데이터에서 파트 컬럼을 채우도록 수정했습니다 (`columns.txt`가 없을 때). [#64757](https://github.com/ClickHouse/ClickHouse/pull/64757) ([Azat Khuzhin](https://github.com/azat)).
* `ALTER TABLE ... ON CLUSTER ... MODIFY SQL SECURITY`에서 발생하던 크래시를 수정했습니다. [#64957](https://github.com/ClickHouse/ClickHouse/pull/64957) ([pufit](https://github.com/pufit)).
* AccessControl 제거 시 발생하는 충돌 수정: 명시적 종료를 추가했습니다. [#64993](https://github.com/ClickHouse/ClickHouse/pull/64993) ([Vitaly Baranov](https://github.com/vitlibar)).
* 함수 `uniq*`의 인수에 있는 injective 함수를 재귀적으로 제거합니다. 이전에는 올바르게 동작했지만 새 분석기에서 깨졌습니다. [#65140](https://github.com/ClickHouse/ClickHouse/pull/65140) ([Duc Canh Le](https://github.com/canhld94)).
* CTE가 포함된 쿼리에서 예기치 않은 프로젝션 이름 문제를 수정했습니다. [#65267](https://github.com/ClickHouse/ClickHouse/pull/65267) ([wudidapaopao](https://github.com/wudidapaopao)).
* 딕셔너리에 직접 쿼리하거나 `Dictionary` 테이블 엔진을 통해 접근할 때 `dictGet` 권한이 필요하도록 변경했습니다. [#65359](https://github.com/ClickHouse/ClickHouse/pull/65359) ([Joe Lynch](https://github.com/joelynch)).
* 증분 백업에서 발생하던 사용자별 S3 인증 문제 수정. [#65481](https://github.com/ClickHouse/ClickHouse/pull/65481) ([Antonio Andelic](https://github.com/antonio2368)).
* `read-in-order` 최적화가 활성화된 경우, `FINAL`이 포함된 쿼리에서는 `non-intersecting-parts` 최적화를 비활성화합니다. 이로 인해 잘못된 쿼리 결과가 발생할 수 있었습니다. 임시 해결책으로, 이 수정이 머지되기 전까지 `do_not_merge_across_partitions_select_final` 및 `split_parts_ranges_into_intersecting_and_non_intersecting_final`을 비활성화하십시오. [#65505](https://github.com/ClickHouse/ClickHouse/pull/65505) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 목록 배치에 포함된 모든 파일이 필터링된 경우 `Index out of bound for blob metadata` 예외가 발생하던 문제를 수정했습니다. [#65523](https://github.com/ClickHouse/ClickHouse/pull/65523) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 프로젝션 중복 제거 머지에서 발생하던 NOT\_FOUND\_COLUMN\_IN\_BLOCK를 수정했습니다. [#65573](https://github.com/ClickHouse/ClickHouse/pull/65573) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* MergeJoin의 버그를 수정했습니다. 희소 직렬화에서 필요한 변환이 수행되지 않았는데도 컬럼이 중첩 타입의 컬럼으로 처리될 수 있던 문제를 해결했습니다. [#65632](https://github.com/ClickHouse/ClickHouse/pull/65632) ([Nikita Taranov](https://github.com/nickitat)).
* 호환성 수준 '23.4'가 제대로 적용되지 않던 버그를 수정했습니다. [#65737](https://github.com/ClickHouse/ClickHouse/pull/65737) ([cw5121](https://github.com/cw5121)).
* 널 허용 필드가 있는 ODBC 테이블 관련 문제를 수정했습니다. [#65738](https://github.com/ClickHouse/ClickHouse/pull/65738) ([Rodolphe Dugé de Bernonville](https://github.com/RodolpheDuge)).
* 치명적 오류 발생 시 발생할 수 있던 `TCPHandler`의 데이터 경쟁 문제를 수정했습니다. [#65744](https://github.com/ClickHouse/ClickHouse/pull/65744) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 함수 `parseDateTime`에서 `%F` 및 `%D` 플레이스홀더와 관련된 잘못된 예외를 수정했습니다. [#65768](https://github.com/ClickHouse/ClickHouse/pull/65768) ([Antonio Andelic](https://github.com/antonio2368)).
* `PostgreSQL`에서 데이터를 읽는 쿼리에서는 ClickHouse 쿼리가 완료되면 내부 `PostgreSQL` 쿼리도 취소됩니다. 그렇지 않으면 내부 `PostgreSQL` 쿼리가 완료될 때까지 `ClickHouse` 쿼리를 취소할 수 없습니다. [#65771](https://github.com/ClickHouse/ClickHouse/pull/65771) ([Maksim Kita](https://github.com/kitaisreal)).
* 이전 분석기와 `dictGetOrDefault`를 사용할 때 단락 평가 로직에서 발생하는 버그를 수정했습니다. [#65802](https://github.com/ClickHouse/ClickHouse/pull/65802) ([jsc0218](https://github.com/jsc0218)).
* TTL 쓰기 과정에서 EmbeddedRocksDB가 손상된 SST 파일을 생성하던 버그를 수정했습니다. [#65816](https://github.com/ClickHouse/ClickHouse/pull/65816) ([Duc Canh Le](https://github.com/canhld94)).
* 함수 `bitTest`, `bitTestAll`, `bitTestAny`는 이제 지정한 비트 인덱스가 범위를 벗어나면 오류를 반환합니다 [#65818](https://github.com/ClickHouse/ClickHouse/pull/65818) ([Pablo Marcos](https://github.com/pamarcos)).
* `join_any_take_last_row` 설정은 해시 조인을 사용하는 모든 쿼리에서 지원됩니다. [#65820](https://github.com/ClickHouse/ClickHouse/pull/65820) ([vdimir](https://github.com/vdimir)).
* `IS NULL` 검사가 포함된 join 조건 처리 방식이 개선되었습니다(예: `ON (a = b AND (a IS NOT NULL) AND (b IS NOT NULL) ) OR ( (a IS NULL) AND (b IS NULL) )`는 `ON a <=> b`로 다시 작성됩니다). `IS NULL` 이외의 조건이 있을 때 발생하던 잘못된 최적화도 수정했습니다. [#65835](https://github.com/ClickHouse/ClickHouse/pull/65835) ([vdimir](https://github.com/vdimir)).
* S3Queue에서 증가하던 메모리 사용량 문제를 수정했습니다. [#65839](https://github.com/ClickHouse/ClickHouse/pull/65839) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `arrayAUC`의 동점 처리 방식이 sklearn과 일치하도록 수정했습니다. [#65840](https://github.com/ClickHouse/ClickHouse/pull/65840) ([gabrielmcg44](https://github.com/gabrielmcg44)).
* MySQL server 프로토콜의 TLS 연결에서 발생할 수 있는 문제를 수정했습니다. [#65917](https://github.com/ClickHouse/ClickHouse/pull/65917) ([Azat Khuzhin](https://github.com/azat)).
* MySQL 클라이언트 프로토콜의 TLS 연결에서 발생할 수 있는 문제를 수정했습니다. [#65938](https://github.com/ClickHouse/ClickHouse/pull/65938) ([Azat Khuzhin](https://github.com/azat)).
* timeout 값이 0일 때 `SSL_ERROR_WANT_READ`/`SSL_ERROR_WANT_WRITE` 처리 문제를 수정했습니다. [#65941](https://github.com/ClickHouse/ClickHouse/pull/65941) ([Azat Khuzhin](https://github.com/azat)).
* 결과 스키마를 변경할 수 있으므로, 스키마 추론 캐시에 누락된 설정 `input_format_csv_skip_first_lines/input_format_tsv_skip_first_lines/input_format_csv_try_infer_numbers_from_strings/input_format_csv_try_infer_strings_from_quoted_tuples`을 추가했습니다. 이를 통해 이러한 설정이 변경되었을 때 스키마 추론 결과가 잘못되는 것을 방지합니다. [#65980](https://github.com/ClickHouse/ClickHouse/pull/65980) ([Kruglov Pavel](https://github.com/Avogar)).
* S3 엔진 및 S3 테이블 함수에서 \_size 컬럼은 아카이브 자체의 크기가 아니라 아카이브 내부 파일의 크기를 나타냅니다. [#65993](https://github.com/ClickHouse/ClickHouse/pull/65993) ([Daniil Ivanik](https://github.com/divanik)).
* 분석기에서 동적 서브컬럼 해석 문제를 수정하고, 동적 서브컬럼을 읽을 때 전체 컬럼을 읽지 않도록 개선했습니다. [#66004](https://github.com/ClickHouse/ClickHouse/pull/66004) ([Kruglov Pavel](https://github.com/Avogar)).
* replace 재정의가 있을 때 from\_env 구성 병합을 수정했습니다. [#66034](https://github.com/ClickHouse/ClickHouse/pull/66034) ([Azat Khuzhin](https://github.com/azat)).
* 종료 중 `GRPCServer`에서 발생할 수 있는 멈춤 현상을 수정했습니다. [#66061](https://github.com/ClickHouse/ClickHouse/pull/66061) ([Vitaly Baranov](https://github.com/vitlibar)).
* 비상수 `LowCardinality` 인수를 사용하는 함수 `has`의 여러 사례를 수정했습니다. [#66088](https://github.com/ClickHouse/ClickHouse/pull/66088) ([Anton Popov](https://github.com/CurtizJ)).
* `groupArrayIntersect` 수정. `merge()` 함수에서 동작이 잘못되던 문제를 해결했습니다. 또한 숫자 데이터와 일반 데이터에 대한 `deserialise()` 동작도 수정했습니다. [#66103](https://github.com/ClickHouse/ClickHouse/pull/66103) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `unbin`/`unhex` 구현에서 발생하던 버퍼 오버플로우 버그를 수정했습니다. [#66106](https://github.com/ClickHouse/ClickHouse/pull/66106) ([Nikita Taranov](https://github.com/nickitat)).
* [#64760](https://github.com/ClickHouse/ClickHouse/issues/64760)에서 도입된 `merge-filters` 최적화를 비활성화했습니다. 이 최적화가 두 개의 필터 표현식을 머지하면서 단락 평가를 적용하지 않으면 예외가 발생할 수 있습니다. [#66126](https://github.com/ClickHouse/ClickHouse/pull/66126) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 이제 Avro 사양에서 허용되는 음수 block 크기로 인코딩된 배열이 포함된 Avro 파일을 서버가 파싱하지 못하던 문제를 수정했습니다. [#66130](https://github.com/ClickHouse/ClickHouse/pull/66130) ([Serge Klochkov](https://github.com/slvrtrn)).
* ZooKeeper 클라이언트의 버그를 수정했습니다. ZooKeeper에서 하드웨어 오류를 받은 후 session이 사용할 수 없는 상태에 멈출 수 있었습니다. 예를 들어, ClickHouse Keeper의 "soft memory limit" 때문에 이런 문제가 발생할 수 있습니다. [#66140](https://github.com/ClickHouse/ClickHouse/pull/66140) ([Alexander Tokmakov](https://github.com/tavplubix)).
* SumIfToCountIfVisitor와 부호 있는 정수 관련 문제를 수정했습니다. [#66146](https://github.com/ClickHouse/ClickHouse/pull/66146) ([Raúl Marín](https://github.com/Algunenano)).
* 분산 쿼리 결과에서 데이터가 누락되는 드문 경우를 수정했습니다. [#66174](https://github.com/ClickHouse/ClickHouse/pull/66174) ([vdimir](https://github.com/vdimir)).
* StorageDeltaLake에서 메타데이터 필드의 파싱 순서를 수정했습니다. [#66211](https://github.com/ClickHouse/ClickHouse/pull/66211) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `distributed_ddl_output_mode`의 `none_only_active` 모드에서는 `TIMEOUT_EXCEEDED`를 발생시키지 않도록 수정했습니다. [#66218](https://github.com/ClickHouse/ClickHouse/pull/66218) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 인덱스를 사용할 수 없을 때 `system.numbers_mt`의 LIMIT 처리 방식을 수정했습니다. [#66231](https://github.com/ClickHouse/ClickHouse/pull/66231) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Docker와 같은 컨테이너에서 서버가 실행될 때, ClickHouse 서버가 cgroups v2에 지정된 사용 가능한 최대 CPU 코어 수를 감지하는 방식을 수정했습니다. 구체적으로, 컨테이너는 이름이 비어 있는 루트 cgroup에서 프로세스를 실행하는 경우가 많습니다. 이런 경우 ClickHouse는 cgroups v2에서 설정된 CPU 제한을 무시했습니다. [#66237](https://github.com/ClickHouse/ClickHouse/pull/66237) ([filimonov](https://github.com/filimonov)).
* 제약 조건에 `IN`이 포함된 서브쿼리를 사용할 때 발생하던 `Not-ready set` 오류를 수정했습니다. [#66261](https://github.com/ClickHouse/ClickHouse/pull/66261) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* S3 또는 AzureBlobStorage로 복사하는 동안 오류 보고가 올바르게 이루어지도록 수정했습니다. [#66295](https://github.com/ClickHouse/ClickHouse/pull/66295) ([Vitaly Baranov](https://github.com/vitlibar)).
* watchdog가 unlink된(rotate된) 로그 파일의 파일 디스크립터를 유지하지 않도록 했습니다. [#66334](https://github.com/ClickHouse/ClickHouse/pull/66334) ([Aleksei Filatov](https://github.com/aalexfvk)).
* logicalexpressionoptimizerpass에서 상수의 논리 타입이 손실되던 버그를 수정했습니다. [#66344](https://github.com/ClickHouse/ClickHouse/pull/66344) ([pn](https://github.com/chloro-pn)).
* 새 분석기와 `group_by_use_nulls=true` 사용 시 발생하는 `Column identifier is already registered` 오류를 수정했습니다. [#66400](https://github.com/ClickHouse/ClickHouse/pull/66400) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 과도한 filter pushdown으로 인해 외부 테이블 engine(예: PostgreSQL)에서 join 및 filter를 수행하는 쿼리에서 잘못된 결과가 발생할 수 있던 문제를 수정했습니다. 이제 external table과 outer join하는 경우 where 절의 조건은 외부 데이터베이스로 전송되지 않습니다. [#66402](https://github.com/ClickHouse/ClickHouse/pull/66402) ([vdimir](https://github.com/vdimir)).
* cross join에 누락된 컬럼 머티리얼라이즈 처리를 추가했습니다. [#66413](https://github.com/ClickHouse/ClickHouse/pull/66413) ([lgbo](https://github.com/lgbo-ustc)).
* `GROUP BY` 키에 상수 표현식이 포함되고 새 분석기가 활성화된 쿼리에서 발생하던 `Cannot find column` 오류를 수정했습니다. [#66433](https://github.com/ClickHouse/ClickHouse/pull/66433) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Npy 포맷에서 가져오는 중 배열 중첩 수준이 잘못된 경우 발생할 수 있는 논리 오류를 방지하고, 다른 유형의 오류에 대한 테스트도 수정했습니다. [#66461](https://github.com/ClickHouse/ClickHouse/pull/66461) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 프레디케이트에 비결정적 함수가 있을 때 count() 결과가 잘못되던 문제를 수정했습니다. [#66510](https://github.com/ClickHouse/ClickHouse/pull/66510) ([Duc Canh Le](https://github.com/canhld94)).
* `Allocator::realloc`의 메모리 추적이 올바르게 이루어지도록 수정했습니다. [#66548](https://github.com/ClickHouse/ClickHouse/pull/66548) ([Antonio Andelic](https://github.com/antonio2368)).
* 빈 튜플을 해시할 때 초기화되지 않은 메모리를 읽던 문제를 수정했습니다. [#66562](https://github.com/ClickHouse/ClickHouse/pull/66562) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `WINDOW`를 사용하는 쿼리에서 잘못된 결과가 반환되는 문제를 수정했습니다. 이 문제는 `PARTITION` 컬럼에 희소 직렬화가 적용되어 있고 윈도우 함수가 병렬로 실행될 때 발생할 수 있었습니다. [#66579](https://github.com/ClickHouse/ClickHouse/pull/66579) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 로컬 스토리지에서 이름이 지정된 컬렉션을 삭제할 때 발생하던 문제를 수정했습니다. [#66599](https://github.com/ClickHouse/ClickHouse/pull/66599) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* `ColumnTuple::insertManyFrom`에서 `column_length`가 업데이트되지 않던 문제를 수정했습니다. [#66626](https://github.com/ClickHouse/ClickHouse/pull/66626) ([lgbo](https://github.com/lgbo-ustc)).
* 표현식 `(column IS NULL).`이 있는 쿼리에서 발생하는 `Unknown identifier` 및 `Column is not under aggregate function` 오류를 수정했습니다. 이 버그는 분석기가 비활성화된 경우에만 [#65088](https://github.com/ClickHouse/ClickHouse/issues/65088)으로 인해 발생했습니다. [#66654](https://github.com/ClickHouse/ClickHouse/pull/66654) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 스칼라 서브쿼리를 IN의 첫 번째 인수로 사용했을 때 발생하던 `Method getResultType is not supported for QUERY query node` 오류를 수정했습니다(새 분석기 사용 시). [#66655](https://github.com/ClickHouse/ClickHouse/pull/66655) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Variant 하위 컬럼을 읽는 중 발생할 수 있는 PARAMETER\_OUT\_OF\_BOUND 오류를 수정했습니다. [#66659](https://github.com/ClickHouse/ClickHouse/pull/66659) ([Kruglov Pavel](https://github.com/Avogar)).
* 드물게 발생하던 컬럼 삭제 후 머지가 멈추는 문제를 수정했습니다. [#66707](https://github.com/ClickHouse/ClickHouse/pull/66707) ([Raúl Marín](https://github.com/Algunenano)).
* 원격 소스에서 insert select를 수행할 때 발생하던 `isUniqTypes` assertion 문제를 수정했습니다. [#66722](https://github.com/ClickHouse/ClickHouse/pull/66722) ([Sema Checherinda](https://github.com/CheSema)).
* PrometheusRequestHandler의 논리적 오류를 수정했습니다. [#66621](https://github.com/ClickHouse/ClickHouse/pull/66621) ([Vitaly Baranov](https://github.com/vitlibar)).
* 퍼저가 발견한 `indexHint` 함수의 대소문자 처리 문제를 수정했습니다. [#66286](https://github.com/ClickHouse/ClickHouse/pull/66286) ([Anton Popov](https://github.com/CurtizJ)).
* 'create table b empty as a'의 AST 포맷을 수정했습니다. [#64951](https://github.com/ClickHouse/ClickHouse/pull/64951) ([Michael Kolupaev](https://github.com/al13n321)).

### <a id="246" /> ClickHouse 릴리스 24.6, 2024-07-01. [발표](https://presentations.clickhouse.com/2024-release-24.6/), [동영상](https://www.youtube.com/watch?v=BK-x8lpvOQw)

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

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

* 기본적으로 데이터베이스와 테이블의 비동기 로드를 활성화합니다. config.xml의 `async_load_databases`를 참조하십시오. 이 변경은 완전히 호환되지만 동작상의 차이를 일으킬 수 있습니다. 이전 버전처럼 `async_load_databases`가 false이면 모든 테이블이 로드될 때까지 서버가 연결을 수락하지 않습니다. 새 버전처럼 `async_load_databases`가 true이면 모든 테이블이 로드되기 전에도 서버가 연결을 수락할 수 있습니다. 아직 로드되지 않은 테이블에 쿼리가 수행되면 해당 테이블의 로딩이 완료될 때까지 대기하며, 이 과정에는 상당한 시간이 걸릴 수 있습니다. 서버가 로드 밸런서 뒤에 있는 대규모 분산 시스템의 일부인 경우, 이 변경으로 서버 동작이 달라질 수 있습니다. 첫 번째 경우에는 로드 밸런서가 연결 거부를 받고 빠르게 다른 서버로 장애 조치할 수 있습니다. 두 번째 경우에는 로드 밸런서가 아직 테이블을 로드 중인 서버에 연결할 수 있으며, 이 경우 쿼리 지연 시간이 더 길어집니다. 또한 대기 상태의 쿼리가 많이 누적되면 이들이 동시에 처리를 시작할 때 "thundering herd" 문제가 발생할 수 있습니다. 이 차이는 높은 부하의 분산 백엔드에서만 문제가 될 수 있습니다. 이 문제를 피하려면 `async_load_databases` 값을 false로 설정할 수 있습니다. [#57695](https://github.com/ClickHouse/ClickHouse/pull/57695) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `replace_long_file_name_to_hash` 설정은 `MergeTree` 테이블에서 기본적으로 활성화됩니다. [#64457](https://github.com/ClickHouse/ClickHouse/pull/64457) ([Anton Popov](https://github.com/CurtizJ)). 이 설정은 완전히 호환되며 업그레이드 중 별도의 조치는 필요하지 않습니다. 새로운 데이터 포맷은 23.9부터의 모든 버전에서 지원됩니다. 이 설정을 활성화한 후에는 23.8 이하 버전으로 더 이상 다운그레이드할 수 없습니다.
* 일부 잘못된 쿼리는 구문 분석 단계에서 더 일찍 실패합니다. 참고: 문자열 리터럴 없이 인라인 KQL 표현식(실험적인 Kusto 언어)을 `kql` 테이블 함수에 넣는 방식의 지원이 비활성화되었습니다. 예를 들어 `kql('garbage | trash')` 또는 `kql($$garbage | trash$$)` 대신 `kql(garbage | trash)`를 사용하는 경우입니다. 이 기능은 의도치 않게 도입되었으며 존재해서는 안 되는 기능입니다. [#61500](https://github.com/ClickHouse/ClickHouse/pull/61500) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* storage `S3Queue`의 `Ordered` 모드에서 병렬 처리를 재구성했습니다. 이 PR은 `s3queue_processing_threads_num` 또는 `s3queue_total_shards_num` 설정을 사용한 경우 Ordered 모드에서 하위 호환되지 않습니다. `s3queue_total_shards_num` 설정은 삭제되었으며, 이전에는 현재 더 이상 권장되지 않는 `s3queue_allow_experimental_sharded_mode`에서만 사용할 수 있었습니다. 새로운 설정 `s3queue_buckets`가 추가되었습니다. [#64349](https://github.com/ClickHouse/ClickHouse/pull/64349) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 새로운 함수 `snowflakeIDToDateTime`, `snowflakeIDToDateTime64`, `dateTimeToSnowflakeID`, `dateTime64ToSnowflakeID`가 추가되었습니다. 기존 함수 `snowflakeToDateTime`, `snowflakeToDateTime64`, `dateTimeToSnowflake`, `dateTime64ToSnowflake`와 달리, 새 함수는 `generateSnowflakeID` 함수와 호환됩니다. 즉, `generateSnowflakeID`가 생성한 Snowflake ID를 받아들이고 `generateSnowflakeID`와 동일한 유형(즉 `UInt64`)의 Snowflake ID를 생성합니다. 또한 새 함수는 `generateSnowflakeID`와 마찬가지로 기본적으로 UNIX epoch(즉 1970-01-01)를 사용합니다. 필요한 경우 다른 epoch를 전달할 수도 있으며, 예를 들어 Twitter/X의 epoch인 2010-11-04(즉 UNIX epoch 이후 1288834974657밀리초)를 사용할 수 있습니다. 기존 변환 함수는 더 이상 권장되지 않으며 전환 기간 후 제거될 예정입니다. 계속 사용하려면 `allow_deprecated_snowflake_conversion_functions` 설정을 활성화하십시오. [#64948](https://github.com/ClickHouse/ClickHouse/pull/64948) ([Robert Schulze](https://github.com/rschu1ze)).

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

* ClickHouse Keeper에 이름이 지정된 컬렉션을 저장할 수 있게 했습니다. [#64574](https://github.com/ClickHouse/ClickHouse/pull/64574) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 빈 튜플 지원. [#55061](https://github.com/ClickHouse/ClickHouse/pull/55061) ([Amos Bird](https://github.com/amosbird)).
* Hilbert Curve 인코딩 및 디코딩 함수를 추가했습니다. [#60156](https://github.com/ClickHouse/ClickHouse/pull/60156) ([Artem Mustafin](https://github.com/Artemmm91)).
* `hilbertEncode`에 대한 인덱스 분석 지원이 추가되었습니다. [#64662](https://github.com/ClickHouse/ClickHouse/pull/64662) ([Artem Mustafin](https://github.com/Artemmm91)).
* WKT 포맷의 `LINESTRING` geometry를 `readWKTLineString` 함수로 읽을 수 있는 지원이 추가되었습니다. [#62519](https://github.com/ClickHouse/ClickHouse/pull/62519) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 다른 디스크의 파트를 ATTACH할 수 있도록 허용합니다. [#63087](https://github.com/ClickHouse/ClickHouse/pull/63087) ([Unalian](https://github.com/Unalian)).
* Twitter 스타일의 Snowflake ID를 생성하는 새로운 SQL 함수 `generateSnowflakeID`가 추가되었습니다. [#63577](https://github.com/ClickHouse/ClickHouse/pull/63577) ([Danila Puzov](https://github.com/kazalika)).
* 머지, 뮤테이션 및 기타 워크로드 간의 리소스 사용 및 공유 방식을 조정할 수 있도록 `merge_workload` 및 `mutation_workload` 설정을 추가했습니다. [#64061](https://github.com/ClickHouse/ClickHouse/pull/64061) ([Sergei Trifonov](https://github.com/serxa)).
* `=` 연산자를 사용해 `IPv4`와 `IPv6` 타입을 비교할 수 있도록 지원이 추가되었습니다. [#64292](https://github.com/ClickHouse/ClickHouse/pull/64292) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* 이항 수학 함수(`pow`, `atan2`, `max2`, `min2`, `hypot`)에서 Decimal 인수를 지원합니다. [#64582](https://github.com/ClickHouse/ClickHouse/pull/64582) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
* SQL 함수 `parseReadableSize`가 추가되었습니다(`OrNull` 및 `OrZero` 버전 포함). [#64742](https://github.com/ClickHouse/ClickHouse/pull/64742) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* `CREATE` 쿼리에서 데이터베이스 또는 테이블의 수를 제한하는 서버 설정 `max_table_num_to_throw` 및 `max_database_num_to_throw`를 추가했습니다. [#64781](https://github.com/ClickHouse/ClickHouse/pull/64781) ([Xu Jia](https://github.com/XuJia0210)).
* 파일과 유사한 스토리지(s3/file/hdfs/url/azureBlobStorage)에 `_time` 가상 컬럼이 추가되었습니다. [#64947](https://github.com/ClickHouse/ClickHouse/pull/64947) ([Ilya Golshtein](https://github.com/ilejn)).
* 새로운 함수 `base64URLEncode`, `base64URLDecode`, `tryBase64URLDecode`가 추가되었습니다. [#64991](https://github.com/ClickHouse/ClickHouse/pull/64991) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
* 두 UTF8 문자열 간의 [편집 거리](https://en.wikipedia.org/wiki/Edit_distance)를 계산하는 새 함수 `editDistanceUTF8`를 추가했습니다. [#65269](https://github.com/ClickHouse/ClickHouse/pull/65269) ([LiuNeng](https://github.com/liuneng1994)).
* 사용자 지정 HTTP 핸들러에서 사용자 지정 응답 헤더를 지원할 수 있도록 `http_response_headers` 구성을 추가했습니다. [#63562](https://github.com/ClickHouse/ClickHouse/pull/63562) ([Grigorii](https://github.com/GSokol)).
* 쿼리 결과를 무한 반복으로 반환할 수 있도록 새로운 테이블 함수 `loop`가 추가되었습니다. [#63452](https://github.com/ClickHouse/ClickHouse/pull/63452) ([Sariel](https://github.com/sarielwxm)). 테스트에 유용합니다.
* `system.query_log`에 `used_privileges`와 `missing_privileges`라는 2개의 컬럼이 추가되었습니다. `used_privileges`에는 쿼리 실행 중 검사된 권한이 기록되며, `missing_privileges`에는 누락된 필수 권한이 포함됩니다. [#64597](https://github.com/ClickHouse/ClickHouse/pull/64597) ([Alexey Katsman](https://github.com/alexkats)).
* 설정 `output_format_pretty_display_footer_column_names`이 추가되었습니다. 이 설정을 활성화하면 긴 테이블(기본적으로 50행)에서 테이블 끝에 컬럼 이름이 표시되며, 표시할 최소 행 수의 임계값은 `output_format_pretty_display_footer_column_names_min_rows`로 제어됩니다. [#65144](https://github.com/ClickHouse/ClickHouse/pull/65144) ([Shaun Struwig](https://github.com/Blargian)).

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

* "고유값 개수" 유형의 통계를 도입했습니다. [#59357](https://github.com/ClickHouse/ClickHouse/pull/59357) ([Han Fei](https://github.com/hanfei1991)).
* ReplicatedMergeTree에서 통계를 지원합니다. [#64934](https://github.com/ClickHouse/ClickHouse/pull/64934) ([Han Fei](https://github.com/hanfei1991)).
* `Replicated` 데이터베이스에 "replica group"이 구성된 경우, 모든 그룹의 레플리카를 포함하는 클러스터를 자동으로 생성합니다. [#64312](https://github.com/ClickHouse/ClickHouse/pull/64312) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 범위 필터 사용 시 동적 세그먼트를 사용하는 병렬 레플리카가 쿼리를 병렬 처리하는 방식을 제어할 수 있도록 `parallel_replicas_custom_key_range_lower` 및 `parallel_replicas_custom_key_range_upper` 설정을 추가했습니다. [#64604](https://github.com/ClickHouse/ClickHouse/pull/64604) ([josh-hildred](https://github.com/josh-hildred)).

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

* `PRIMARY KEY`로 설정된 순서를 위반하지 않으면서 크기 최적화를 위해 삽입 시 행 순서를 재배열하는 기능이 추가되었습니다. 이 기능은 설정 `optimize_row_order`로 제어되며(기본적으로 비활성화됨), [#63578](https://github.com/ClickHouse/ClickHouse/pull/63578) ([Igor Markelov](https://github.com/ElderlyPassionFruit)).
* Parquet 바이너리를 ClickHouse 컬럼으로 직접 읽어들일 수 있는 네이티브 Parquet 리더를 추가했습니다. 이 기능은 설정 `input_format_parquet_use_native_reader`로 제어되며, 기본적으로는 비활성화되어 있습니다. [#60361](https://github.com/ClickHouse/ClickHouse/pull/60361) ([ZhiHong Zhang](https://github.com/copperybean)).
* 쿼리 filter가 MergeTree 테이블에서 정확한 범위를 선택할 수 있는 경우, 부분적인 단순 count 최적화를 지원합니다. [#60463](https://github.com/ClickHouse/ClickHouse/pull/60463) ([Amos Bird](https://github.com/amosbird)).
* 여러 스레드의 청크를 단일 변환에서 수집하도록 하여 다중 스레드 `INSERT`의 최대 메모리 사용량을 줄였습니다. [#61047](https://github.com/ClickHouse/ClickHouse/pull/61047) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 고정 메모리 할당을 사용해 추가 버퍼를 할당하지 않도록 함으로써 Azure 객체 스토리지 사용 시 메모리 사용량을 줄였습니다. [#63160](https://github.com/ClickHouse/ClickHouse/pull/63160) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* `ColumnNullable::size`에서 가상 함수 호출 횟수를 줄였습니다. [#60556](https://github.com/ClickHouse/ClickHouse/pull/60556) ([HappenLee](https://github.com/HappenLee)).
* 정규식 인수가 단일 문자일 때 `splitByRegexp`의 속도를 향상했습니다. [#62696](https://github.com/ClickHouse/ClickHouse/pull/62696) ([Robert Schulze](https://github.com/rschu1ze)).
* 사용된 최소 및 최대 키를 추적해 8비트 및 16비트 키의 집계 속도를 높였습니다. 이를 통해 검증해야 하는 셀 수를 줄일 수 있습니다. [#62746](https://github.com/ClickHouse/ClickHouse/pull/62746) ([Jiebin Sun](https://github.com/jiebinn)).
* 왼쪽 피연산자가 `LowCardinality`이고 오른쪽이 상수 집합인 경우 `IN` 연산자를 최적화했습니다. [#64060](https://github.com/ClickHouse/ClickHouse/pull/64060) ([Zhiguo Zhou](https://github.com/ZhiguoZh)).
* `ConcurrentHashJoin` 내부에서 해시 테이블의 초기화 및 제거에 스레드 풀을 사용합니다. [#64241](https://github.com/ClickHouse/ClickHouse/pull/64241) ([Nikita Taranov](https://github.com/nickitat)).
* 희소 컬럼이 있는 테이블의 수직 병합을 최적화했습니다. [#64311](https://github.com/ClickHouse/ClickHouse/pull/64311) ([Anton Popov](https://github.com/CurtizJ)).
* 수직 병합 중 원격 파일 시스템에서 데이터를 프리페치하도록 활성화했습니다. 이를 통해 원격 파일 시스템에 데이터가 저장된 테이블에서 수직 병합의 지연 시간이 개선됩니다. [#64314](https://github.com/ClickHouse/ClickHouse/pull/64314) ([Anton Popov](https://github.com/CurtizJ)).
* `ColumnSparse::filter`의 `isDefault`에 대한 중복 호출을 줄여 성능을 개선했습니다. [#64426](https://github.com/ClickHouse/ClickHouse/pull/64426) ([Jiebin Sun](https://github.com/jiebinn)).
* 여러 개의 비동기 `getChildren` 요청을 사용해 `find_super_nodes` 및 `find_big_family` keeper-client 명령의 속도를 개선했습니다. [#64628](https://github.com/ClickHouse/ClickHouse/pull/64628) ([Alexander Gololobov](https://github.com/davenger)).
* 널 허용 숫자형 인수에 대한 함수 `least`/`greatest`를 개선했습니다. [#64668](https://github.com/ClickHouse/ClickHouse/pull/64668) ([KevinyhZou](https://github.com/KevinyhZou)).
* 쿼리 계획(query plan)에서 연이어지는 두 개의 필터링 단계를 병합할 수 있도록 했습니다. 이렇게 하면 필터 조건을 상위 단계에서 푸시다운할 수 있을 때 필터 푸시다운(filter-push-down) 최적화가 개선됩니다. [#64760](https://github.com/ClickHouse/ClickHouse/pull/64760) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* vertical final 구현의 잘못된 최적화를 제거하고, vertical final 알고리즘이 기본적으로 다시 활성화되도록 했습니다. [#64783](https://github.com/ClickHouse/ClickHouse/pull/64783) ([Duc Canh Le](https://github.com/canhld94)).
* 필터 표현식에서 ALIAS 노드를 제거했습니다. 이로 인해 `PREWHERE`가 있는 쿼리(새 분석기 사용 시)의 성능이 약간 향상됩니다. [#64793](https://github.com/ClickHouse/ClickHouse/pull/64793) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* OpenSSL 세션 캐싱을 다시 활성화했습니다. [#65111](https://github.com/ClickHouse/ClickHouse/pull/65111) ([Robert Schulze](https://github.com/rschu1ze)).
* 삽입 시 스킵 인덱스와 통계를 구체화하지 않도록 하는 설정(`materialize_skip_indexes_on_insert` 및 `materialize_statistics_on_insert`)이 추가되었습니다. [#64391](https://github.com/ClickHouse/ClickHouse/pull/64391) ([Anton Popov](https://github.com/CurtizJ)).
* 할당된 메모리 크기를 바탕으로 row group 크기를 계산해, 단일 스레드 모드에서 Parquet writer의 최대 메모리 사용량을 줄였습니다. [#64424](https://github.com/ClickHouse/ClickHouse/pull/64424) ([LiuNeng](https://github.com/liuneng1994)).
* 희소 컬럼의 이터레이터를 개선하여 `size` 호출 횟수를 줄였습니다. [#64497](https://github.com/ClickHouse/ClickHouse/pull/64497) ([Jiebin Sun](https://github.com/jiebinn)).
* Azure blob storage 백업에 서버 측 복사를 사용하도록 조건을 수정했습니다. [#64518](https://github.com/ClickHouse/ClickHouse/pull/64518) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* 스킵 인덱스가 많은 테이블의 수직 병합에 대한 메모리 사용량을 최적화했습니다. [#64580](https://github.com/ClickHouse/ClickHouse/pull/64580) ([Anton Popov](https://github.com/CurtizJ)).

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

* `SHOW CREATE TABLE`을 system tables에서 실행하면 이제 각 테이블에 고유한 매우 유용한 comment가 표시되며, 이 comment를 통해 해당 테이블이 왜 필요한지 알 수 있습니다. [#63788](https://github.com/ClickHouse/ClickHouse/pull/63788) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 이제 `round()`, `roundBankers()`, `floor()`, `ceil()`, `trunc()` 함수의 두 번째 인수(`scale`)는 상수가 아니어도 됩니다. [#64798](https://github.com/ClickHouse/ClickHouse/pull/64798) ([Mikhail Gorshkov](https://github.com/mgorshkov)).
* 새 디스크를 추가할 때 `Distributed` 테이블의 스토리지 정책을 핫 리로드합니다. [#58285](https://github.com/ClickHouse/ClickHouse/pull/58285) ([Duc Canh Le](https://github.com/canhld94)).
* 서비스가 포화된 상태에서 스레드를 스케줄링할 때 MergeTree 인덱스 분석 중 발생할 수 있는 교착 상태를 방지합니다. [#59427](https://github.com/ClickHouse/ClickHouse/pull/59427) ([Sean Haynes](https://github.com/seandhaynes)).
* S3 프록시 지원 및 터널링 관련 여러 사소한 예외 상황을 수정했습니다. [#63427](https://github.com/ClickHouse/ClickHouse/pull/63427) ([Arthur Passos](https://github.com/arthurpassos)).
* io\_uring 재제출 동작의 가시성을 개선했습니다. 프로파일 이벤트 `IOUringSQEsResubmits`의 이름을 `IOUringSQEsResubmitsAsync`로 변경하고, 새 이벤트 `IOUringSQEsResubmitsSync`를 추가했습니다. [#63699](https://github.com/ClickHouse/ClickHouse/pull/63699) ([Tomer Shafir](https://github.com/tomershafir)).
* 메타데이터 저장소 디스크에 여유 공간을 유지하기 위한 새로운 설정 `metadata_keep_free_space_bytes`가 추가되었습니다. [#64128](https://github.com/ClickHouse/ClickHouse/pull/64128) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* `plain_rewritable` 메타데이터 저장소에서 생성되거나 제거된 디렉터리 수와 로컬-원격 간 인메모리 맵의 항목 수를 추적하는 메트릭을 추가했습니다. [#64175](https://github.com/ClickHouse/ClickHouse/pull/64175) ([Julia Kartseva](https://github.com/jkartseva)).
* 이제 쿼리 캐시는 설정이 다른 동일한 쿼리를 서로 다른 쿼리로 간주합니다. 이로써 서로 다른 설정(예: `limit` 또는 `additional_table_filters`)이 쿼리 결과에 영향을 미치는 경우에도 더 안정적으로 동작합니다. [#64205](https://github.com/ClickHouse/ClickHouse/pull/64205) ([Robert Schulze](https://github.com/rschu1ze)).
* 객체 스토리지에서 비표준 오류 코드 `QpsLimitExceeded`를 재시도 가능한 오류로 처리하도록 지원합니다. [#64225](https://github.com/ClickHouse/ClickHouse/pull/64225) ([Sema Checherinda](https://github.com/CheSema)).
* 이 테이블의 ZooKeeper 경로가 이미 존재하는 경우, MergeTree 테이블을 복제된 테이블로 변환하지 못하게 했습니다. [#64244](https://github.com/ClickHouse/ClickHouse/pull/64244) ([Kirill](https://github.com/kirillgarbar)).
* 평균 출력 블록 바이트 수를 제어하는 새로운 설정 `input_format_parquet_prefer_block_bytes`가 추가되었으며, `input_format_parquet_max_block_size`의 기본값은 65409로 변경되었습니다. [#64427](https://github.com/ClickHouse/ClickHouse/pull/64427) ([LiuNeng](https://github.com/liuneng1994)).
* `no_proxy` env variable 및 ClickHouse 프록시 구성에 지정된 호스트에서는 프록시를 우회할 수 있도록 허용합니다. [#63314](https://github.com/ClickHouse/ClickHouse/pull/63314) ([Arthur Passos](https://github.com/arthurpassos)).
* Keeper를 시작할 때는 항상 Global Thread 풀에 충분한 수의 스레드가 있도록 하십시오. [#64444](https://github.com/ClickHouse/ClickHouse/pull/64444) ([Duc Canh Le](https://github.com/canhld94)).
* 사용자 구성의 설정은 객체 스토리지 기반 `MergeTree`의 머지 및 뮤테이션에 영향을 주지 않습니다. [#64456](https://github.com/ClickHouse/ClickHouse/pull/64456) ([alesapin](https://github.com/alesapin)).
* 객체 스토리지에서 비표준 오류 코드 `TotalQpsLimitExceeded`를 재시도 가능한 오류로 처리하도록 지원합니다. [#64520](https://github.com/ClickHouse/ClickHouse/pull/64520) ([Sema Checherinda](https://github.com/CheSema)).
* 오픈소스 버전과 ClickHouse Cloud 버전 모두의 Advanced Dashboard에 '최대 동시 네트워크 연결' 차트를 추가했습니다. [#64610](https://github.com/ClickHouse/ClickHouse/pull/64610) ([Thom O'Connor](https://github.com/thomoco)).
* `zeros_mt` 및 `generateRandom`의 진행 상황 보고를 개선했습니다. [#64804](https://github.com/ClickHouse/ClickHouse/pull/64804) ([Raúl Marín](https://github.com/Algunenano)).
* 샘플링이 현재 활성화되어 있는지 표시하는 비동기 메트릭 `jemalloc.profile.active`를 추가합니다. 이는 prof.active에 더해진 활성화 메커니즘이며, 호출한 thread에서 샘플링이 수행되려면 둘 다 활성화되어 있어야 합니다. [#64842](https://github.com/ClickHouse/ClickHouse/pull/64842) ([Unalian](https://github.com/Unalian)).
* `allow_experimental_join_condition`의 중요 표시를 제거했습니다. 이 표시는 서로 다른 버전이 혼재된 클러스터에서 분산 쿼리가 성공적으로 실행되지 못하게 했을 수 있습니다. [#65008](https://github.com/ClickHouse/ClickHouse/pull/65008) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `DiskGetObjectThrottler*` 및 `DiskGetObjectThrottler*` 서버 비동기 메트릭이 추가되었습니다. 이 메트릭은 `s3_max_get_rps` 및 `s3_max_put_rps` 디스크 설정으로 정의된 초당 요청 수 제한과, 디스크에서 스로틀링 한도에 도달하지 않고 현재 전송할 수 있는 요청 수를 반영합니다. 이러한 메트릭은 제한이 구성된 각 디스크별로 정의됩니다. [#65050](https://github.com/ClickHouse/ClickHouse/pull/65050) ([Sergei Trifonov](https://github.com/serxa)).
* `Poco::ThreadPool`용 전역 trace collector를 초기화합니다(Keeper 등에 필요). [#65239](https://github.com/ClickHouse/ClickHouse/pull/65239) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `bcrypt_hash`로 사용자를 생성할 때 유효성 검사를 추가했습니다. [#65242](https://github.com/ClickHouse/ClickHouse/pull/65242) ([Raúl Marín](https://github.com/Algunenano)).
* `PREWHERE` 적용 중/후에 읽은 행 수를 위한 profile events를 추가했습니다. [#64198](https://github.com/ClickHouse/ClickHouse/pull/64198) ([Nikita Taranov](https://github.com/nickitat)).
* 병렬 레플리카 사용 시 `EXPLAIN PLAN`에 쿼리를 출력합니다. [#64298](https://github.com/ClickHouse/ClickHouse/pull/64298) ([vdimir](https://github.com/vdimir)).
* `allow_deprecated_functions`를 `allow_deprecated_error_prone_window_functions`로 이름 변경했습니다. [#64358](https://github.com/ClickHouse/ClickHouse/pull/64358) ([Raúl Marín](https://github.com/Algunenano)).
* `file` 테이블 함수에서도 파일 디스크립터에 `max_read_buffer_size` 설정이 적용되도록 했습니다. [#64532](https://github.com/ClickHouse/ClickHouse/pull/64532) ([Azat Khuzhin](https://github.com/azat)).
* 지원되지 않는 스토리지에서는 materialized view에도 트랜잭션을 비활성화합니다. [#64918](https://github.com/ClickHouse/ClickHouse/pull/64918) ([alesapin](https://github.com/alesapin)).
* 이전 분석기에서 `QUALIFY` 절 사용을 금지합니다. 이전 분석기는 `QUALIFY`를 무시했기 때문에, 뮤테이션에서 예기치 않게 데이터가 삭제될 수 있었습니다. [#65356](https://github.com/ClickHouse/ClickHouse/pull/65356) ([Dmitry Novik](https://github.com/novikd)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* Apache ORC 라이브러리의 버그가 수정되었습니다. 쓰기 시 모든 플랫폼의 부호 없는 타입과 ARM의 Int8에 대한 ORC 통계 계산 문제를 수정했습니다. [#64563](https://github.com/ClickHouse/ClickHouse/pull/64563) ([Michael Kolupaev](https://github.com/al13n321)).
* ClickHouse가 CSV 형식에서 튜플을 처리하고 해석하는 동작을 원래대로 되돌렸습니다. 이 변경은 사실상 [https://github.com/ClickHouse/ClickHouse/pull/60994를](https://github.com/ClickHouse/ClickHouse/pull/60994를) 되돌리는 것이며, 일부 설정에서만 사용할 수 있습니다: `output_format_csv_serialize_tuple_into_separate_columns`, `input_format_csv_deserialize_separate_columns_into_tuple`, `input_format_csv_try_infer_strings_from_quoted_tuples`. [#65170](https://github.com/ClickHouse/ClickHouse/pull/65170) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 특정 상황에서 사용자가 필요한 권한 부여 없이 기본 데이터베이스에서 자신의 권한을 상승시킬 수 있던 권한 오류를 수정했습니다. [#64769](https://github.com/ClickHouse/ClickHouse/pull/64769) ([pufit](https://github.com/pufit)).
* UniqInjectiveFunctionsEliminationPass와 uniqCombined에서 발생하던 크래시를 수정했습니다. [#65188](https://github.com/ClickHouse/ClickHouse/pull/65188) ([Raúl Marín](https://github.com/Algunenano)).
* 세션 종료 시 digest 불일치가 발생하는 ClickHouse Keeper 버그를 수정했습니다. [#65198](https://github.com/ClickHouse/ClickHouse/pull/65198) ([Aleksei Filatov](https://github.com/aalexfvk)).
* Distinct combinator에 올바른 메모리 정렬을 적용합니다. 이전에는 combinator를 사용할 때 잘못된 메모리 할당으로 인해 충돌이 발생할 수 있었습니다. [#65379](https://github.com/ClickHouse/ClickHouse/pull/65379) ([Antonio Andelic](https://github.com/antonio2368)).
* `DISTINCT` 및 윈도우 함수에서 발생하던 충돌을 수정했습니다. [#64767](https://github.com/ClickHouse/ClickHouse/pull/64767) ([Igor Nikonov](https://github.com/devcrafter)).
* 'set' 스킵 인덱스가 IN 및 indexHint()와 함께 동작하지 않던 문제를 수정했습니다. [#62083](https://github.com/ClickHouse/ClickHouse/pull/62083) ([Michael Kolupaev](https://github.com/al13n321)).
* 매개변수화된 뷰 값 할당 시 함수 실행을 지원합니다. [#63502](https://github.com/ClickHouse/ClickHouse/pull/63502) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* Parquet 메모리 추적 문제를 수정했습니다. [#63584](https://github.com/ClickHouse/ClickHouse/pull/63584) ([Michael Kolupaev](https://github.com/al13n321)).
* `Tuple(Map(LowCardinality(String), String), ...)` 유형의 컬럼을 읽을 때 발생하던 문제를 수정했습니다. [#63956](https://github.com/ClickHouse/ClickHouse/pull/63956) ([Anton Popov](https://github.com/CurtizJ)).
* 서로 다른 유형(표현식과 함수)의 순환 별칭에서 발생하던 `Cyclic aliases` 오류를 수정했습니다. [#63993](https://github.com/ClickHouse/ClickHouse/pull/63993) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 이 수정으로 쿼리 파이프라인의 각 개별 뷰에 올바른 정의자를 갖는 적절히 재정의된 Context가 사용됩니다. [#64079](https://github.com/ClickHouse/ClickHouse/pull/64079) ([pufit](https://github.com/pufit)).
* 분석기 수정: INTERPOLATE 사용 시 발생하던 "컬럼을 찾을 수 없음" 오류를 해결했습니다. [#64096](https://github.com/ClickHouse/ClickHouse/pull/64096) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* 파일이 저장된 디스크와 다른 자격 증명을 사용하는 S3 버킷으로 백업을 생성할 때 발생하던 문제를 수정했습니다. [#64153](https://github.com/ClickHouse/ClickHouse/pull/64153) ([Antonio Andelic](https://github.com/antonio2368)).
* 이제 쿼리 캐시는 서로 다른 데이터베이스에 대해 실행된 동일한 두 쿼리를 서로 다른 쿼리로 간주합니다. 이전 동작에서는 테이블 읽기 권한이 없어도 이를 우회할 수 있었습니다. [#64199](https://github.com/ClickHouse/ClickHouse/pull/64199) ([Robert Schulze](https://github.com/rschu1ze)).
* StatusFile의 \~WriteBufferFromFileDescriptor에서 포착되지 않은 예외로 인해 발생할 수 있는 비정상 종료를 수정했습니다. [#64206](https://github.com/ClickHouse/ClickHouse/pull/64206) ([Kruglov Pavel](https://github.com/Avogar)).
* `ARRAY JOIN`이 있는 분산 쿼리에서 발생하던 `duplicate alias` 오류를 해결했습니다. [#64226](https://github.com/ClickHouse/ClickHouse/pull/64226) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* string에서 integer로 변환할 때 발생하던 예상치 못한 accurateCast 문제를 수정했습니다. [#64255](https://github.com/ClickHouse/ClickHouse/pull/64255) ([wudidapaopao](https://github.com/wudidapaopao)).
* OR 그룹에 서로 배타적인 원자식이 포함된 경우 CNF 단순화가 올바르게 동작하도록 수정했습니다. [#64256](https://github.com/ClickHouse/ClickHouse/pull/64256) ([Eduard Karacharov](https://github.com/korowa)).
* Query Tree 크기 검증 문제를 수정했습니다. [#64377](https://github.com/ClickHouse/ClickHouse/pull/64377) ([Dmitry Novik](https://github.com/novikd)).
* `PREWHERE`를 사용하는 `Buffer` 테이블에서 발생하던 `Logical error: Bad cast`를 수정했습니다. [#64388](https://github.com/ClickHouse/ClickHouse/pull/64388) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 객체 스토리지에 저장된 `blob_storage_log`에서 재귀 로깅이 발생하지 않도록 했습니다. [#64393](https://github.com/ClickHouse/ClickHouse/pull/64393) ([vdimir](https://github.com/vdimir)).
* 기본값 표현식이 있는 테이블의 `CREATE TABLE AS` 쿼리를 수정했습니다. [#64455](https://github.com/ClickHouse/ClickHouse/pull/64455) ([Anton Popov](https://github.com/CurtizJ)).
* 널 허용 키를 사용하는 테이블에서 ORDER BY ... NULLS FIRST / LAST에 대한 `optimize_read_in_order` 동작을 수정했습니다. [#64483](https://github.com/ClickHouse/ClickHouse/pull/64483) ([Eduard Karacharov](https://github.com/korowa)).
* `GLOBAL IN.`의 별칭을 사용하는 쿼리에서 발생하던 `Expression nodes list expected 1 projection names` 및 `Unknown expression or identifier` 오류를 수정했습니다. [#64517](https://github.com/ClickHouse/ClickHouse/pull/64517) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `GROUP BY` 키에 상수 CTE가 포함된 분산 쿼리에서 발생하던 `Cannot find column` 오류를 수정했습니다. [#64519](https://github.com/ClickHouse/ClickHouse/pull/64519) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 아직 복원되지 않은 definer가 있는 MV 생성으로 인해 백업 복원이 막힐 때 발생하던 크래시 루프를 수정했습니다. [#64595](https://github.com/ClickHouse/ClickHouse/pull/64595) ([pufit](https://github.com/pufit)).
* Formatter가 홀수 개의 문자를 생성하고 마지막 문자가 `0`일 때 `formatDateTimeInJodaSyntax` 함수의 출력이 올바르게 수정되었습니다. 예를 들어, `SELECT formatDateTimeInJodaSyntax(toDate('2012-05-29'), 'D')`는 이제 이전의 `15`가 아니라 `150`을 올바르게 반환합니다. [#64614](https://github.com/ClickHouse/ClickHouse/pull/64614) ([LiuNeng](https://github.com/liuneng1994)).
* `-If` combinator가 이미 사용된 경우에는 집계를 재작성하지 않습니다. [#64638](https://github.com/ClickHouse/ClickHouse/pull/64638) ([Dmitry Novik](https://github.com/novikd)).
* float의 타입 추론을 수정했습니다(버퍼가 작은 경우, 즉 `--max_read_buffer_size 1`). [#64641](https://github.com/ClickHouse/ClickHouse/pull/64641) ([Azat Khuzhin](https://github.com/azat)).
* 표현식이 포함된 TTL이 정상적으로 작동하지 않을 수 있던 버그를 수정했습니다. [#64694](https://github.com/ClickHouse/ClickHouse/pull/64694) ([alesapin](https://github.com/alesapin)).
* 항상 참으로 평가되는 `WHERE` 및 `PREWHERE` 표현식이 제거되던 문제를 수정했습니다(새 분석기에서). [#64695](https://github.com/ClickHouse/ClickHouse/pull/64695) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `startsWith`, `endsWith`, `match`, `multiSearchAny`의 결과로 필터링할 때 토큰 기반 텍스트 인덱스(`ngrambf` , `full_text`)가 파트를 과도하게 제외하던 문제를 수정했습니다. [#64720](https://github.com/ClickHouse/ClickHouse/pull/64720) ([Eduard Karacharov](https://github.com/korowa)).
* `UTF8::computeWidth` 함수에서 ANSI CSI 이스케이프 처리의 비정상 동작을 수정했습니다. [#64756](https://github.com/ClickHouse/ClickHouse/pull/64756) ([Shaun Struwig](https://github.com/Blargian)).
* 서브쿼리 전반에 걸쳐 `ORDER BY` / `LIMIT BY`가 잘못 제거되는 문제를 수정했습니다. [#64766](https://github.com/ClickHouse/ClickHouse/pull/64766) ([Raúl Marín](https://github.com/Algunenano)).
* 혼합 join 조건에 포함된 Set에 대한 서브쿼리가 있는 비등가 join(실험적)을 수정했습니다. [#64775](https://github.com/ClickHouse/ClickHouse/pull/64775) ([lgbo](https://github.com/lgbo-ustc)).
* `plain_rewritable` 디스크의 로컬 캐시에서 발생하던 크래시를 수정했습니다. [#64778](https://github.com/ClickHouse/ClickHouse/pull/64778) ([Julia Kartseva](https://github.com/jkartseva)).
* Keeper 수정: `mntr` 명령에서 `zk_latest_snapshot_size`가 올바른 값을 반환하도록 했습니다. [#64784](https://github.com/ClickHouse/ClickHouse/pull/64784) ([Antonio Andelic](https://github.com/antonio2368)).
* 분산 쿼리에서 `Nested` 컬럼에 대해 `ARRAY JOIN`을 사용할 때 발생하는 `Cannot find column` 문제를 수정했습니다. [#64755](https://github.com/ClickHouse/ClickHouse/issues/64755)를 수정합니다. [#64801](https://github.com/ClickHouse/ClickHouse/pull/64801) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* slru 캐시 정책에서 발생하던 메모리 누수를 수정했습니다. [#64803](https://github.com/ClickHouse/ClickHouse/pull/64803) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 여러 유형의 쿼리에서 메모리 추적이 잘못될 수 있던 문제를 수정했습니다: S3에서 데이터를 읽는 쿼리, HTTP 프로토콜을 통한 쿼리, 비동기 삽입. [#64844](https://github.com/ClickHouse/ClickHouse/pull/64844) ([Anton Popov](https://github.com/CurtizJ)).
* materialized view에 원본 테이블과 타입이 다른 컬럼이 있을 때, materialized view에서 `PREWHERE`로 읽는 쿼리에서 발생하던 `Block structure mismatch` 오류를 수정했습니다. [#64611](https://github.com/ClickHouse/ClickHouse/issues/64611)을 해결합니다. [#64855](https://github.com/ClickHouse/ClickHouse/pull/64855) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 테이블에 TTL이 있고 서브쿼리 + 복제된 데이터베이스 + 병렬 레플리카 + 분석기를 함께 사용하는 경우 드물게 발생하던 충돌을 수정했습니다. 매우 드문 경우이지만, TTL을 서브쿼리와 함께 사용하지 마십시오. [#64858](https://github.com/ClickHouse/ClickHouse/pull/64858) ([alesapin](https://github.com/alesapin)).
* 삭제할 항목이 많은 배치에서 `blob_storage_log`에 `Delete` 이벤트가 중복 기록되던 문제를 수정했습니다. [#64924](https://github.com/ClickHouse/ClickHouse/pull/64924) ([vdimir](https://github.com/vdimir)).
* config에 \[Zoo]Keeper에서 가져오는 include가 있는 경우, 서버 시작 후 발생할 수 있는 \[Zoo]Keeper의 `Session moved to another server` 오류를 수정했습니다. [#64986](https://github.com/ClickHouse/ClickHouse/pull/64986) ([Alexander Tokmakov](https://github.com/tavplubix)).
* [https://github.com/ClickHouse/ClickHouse/pull/54211에서](https://github.com/ClickHouse/ClickHouse/pull/54211에서) 매개변수화된 VIEW에서 동작하지 않게 된 `ALTER MODIFY COMMENT` 쿼리를 수정했습니다. [#65031](https://github.com/ClickHouse/ClickHouse/pull/65031) ([Nikolay Degterinsky](https://github.com/evillique)).
* `cluster_secure_connection` 매개변수가 활성화된 경우 DatabaseReplicated의 `host_id`를 수정했습니다. 이전에는 이 매개변수가 활성화되어 있더라도 DatabaseReplicated가 생성한 클러스터 내의 모든 연결이 보안 연결로 설정되지 않았습니다. [#65054](https://github.com/ClickHouse/ClickHouse/pull/65054) ([Nikolay Degterinsky](https://github.com/evillique)).
* StorageMerge의 `PREWHERE` 최적화 후 발생하던 `Not-ready Set` 오류를 수정했습니다. [#65057](https://github.com/ClickHouse/ClickHouse/pull/65057) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* File 계열 스토리지에서 finalized buffer에 쓰지 않도록 합니다. [#65063](https://github.com/ClickHouse/ClickHouse/pull/65063) ([Kruglov Pavel](https://github.com/Avogar)).
* 순환 alias로 인해 쿼리 Duration이 무한대로 계산될 수 있는 문제를 수정했습니다. [#64849](https://github.com/ClickHouse/ClickHouse/issues/64849). [#65081](https://github.com/ClickHouse/ClickHouse/pull/65081) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `INTERPOLATE (alias)`(새 분석기)를 사용하는 원격 쿼리에서 `Unknown expression identifier` 오류를 수정합니다. [#64636](https://github.com/ClickHouse/ClickHouse/issues/64636)를 해결합니다. [#65090](https://github.com/ClickHouse/ClickHouse/pull/65090) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 집계 밖으로 산술 연산을 이동시키는 최적화를 수정했습니다. 새로운 분석기에서는 최적화가 한 번만 적용되었습니다. [#65104](https://github.com/ClickHouse/ClickHouse/pull/65104) ([Dmitry Novik](https://github.com/novikd)).
* 새 분석기에서 집계 함수 이름이 잘못 재작성되는 문제를 수정했습니다. [#65110](https://github.com/ClickHouse/ClickHouse/pull/65110) ([Dmitry Novik](https://github.com/novikd)).
* 클라이언트 socket에서 요청 본문(일부)을 읽는 중 수신 타임아웃이 발생하면 200 OK 대신 5xx로 응답합니다. [#65118](https://github.com/ClickHouse/ClickHouse/pull/65118) ([Julian Maicher](https://github.com/jmaicher)).
* 헤지드 요청으로 인해 발생할 수 있는 비정상 종료를 수정했습니다. [#65206](https://github.com/ClickHouse/ClickHouse/pull/65206) ([Azat Khuzhin](https://github.com/azat)).
* Hashed 및 Hashed\_Array 딕셔너리의 단락 평가에서 발생하던 버그를 수정해, 초기화되지 않은 숫자를 읽어 다양한 오류가 발생할 수 있던 문제를 해결했습니다. [#65256](https://github.com/ClickHouse/ClickHouse/pull/65256) ([jsc0218](https://github.com/jsc0218)).
* 이 PR은 IN 연산자의 형 변환 과정에서 상수(IN 연산자의 두 번째 매개변수)의 타입 정보가 항상 유지되도록 합니다. 그렇지 않으면 타입 정보가 손실되어 DateTime에서 Date로 변환하는 경우처럼 일부 변환이 실패할 수 있습니다. 이 변경으로 ([#64487](https://github.com/ClickHouse/ClickHouse/issues/64487)) 문제가 수정됩니다. [#65315](https://github.com/ClickHouse/ClickHouse/pull/65315) ([pn](https://github.com/chloro-pn)).

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

* LLVM XRay 지원을 추가했습니다. [#64592](https://github.com/ClickHouse/ClickHouse/pull/64592) [#64837](https://github.com/ClickHouse/ClickHouse/pull/64837) ([Tomer Shafir](https://github.com/tomershafir)).
* s3/hdfs/azure 스토리지 구현을 IObjectStorage와 함께 작동하는 단일 클래스로 통합했습니다. \*Cluster, 데이터 레이크 및 Queue 스토리지에도 동일하게 적용했습니다. [#59767](https://github.com/ClickHouse/ClickHouse/pull/59767) ([Kseniia Sumarokova](https://github.com/kssenii)).
* MergeTreeData와 DataPart에 대한 의존성을 제거하도록 data part writer를 리팩터링했습니다. [#63620](https://github.com/ClickHouse/ClickHouse/pull/63620) ([Alexander Gololobov](https://github.com/davenger)).
* PartitionPruner와 단순 count 최적화를 개선하기 위해 `KeyCondition` 및 키 분석을 리팩터링했습니다. 이는 [#60463](https://github.com/ClickHouse/ClickHouse/issues/60463)에서 분리된 작업입니다. [#61459](https://github.com/ClickHouse/ClickHouse/pull/61459) ([Amos Bird](https://github.com/amosbird)).
* 모든 함수가 올바른 크기의 컬럼으로 호출되는지 검증하는 assertion을 도입했습니다. [#63723](https://github.com/ClickHouse/ClickHouse/pull/63723) ([Raúl Marín](https://github.com/Algunenano)).
* `rc` init 스크립트로 ClickHouse 서버 데몬을 시작할 때 `network` service가 필수이도록 변경했습니다. [#60650](https://github.com/ClickHouse/ClickHouse/pull/60650) ([Chun-Sheng, Li](https://github.com/peter279k)).
* 일부 느린 테스트의 크기를 줄였습니다. [#64387](https://github.com/ClickHouse/ClickHouse/pull/64387) [#64452](https://github.com/ClickHouse/ClickHouse/pull/64452) ([Raúl Marín](https://github.com/Algunenano)).
* keeper-bench를 사용해 ZooKeeper 로그를 재생했습니다. [#62481](https://github.com/ClickHouse/ClickHouse/pull/62481) ([Antonio Andelic](https://github.com/antonio2368)).

### <a id="245" /> ClickHouse 릴리스 24.5, 2024-05-30. [발표 자료](https://presentations.clickhouse.com/2024-release-24.5/), [동영상](https://www.youtube.com/watch?v=dURnKjLuZLg)

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

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

* "inverted indexes"의 이름을, 더 덜 기술적인 표현이자 사용자 친화적인 이름인 "full-text indexes"로 변경했습니다. 이 변경은 내부 테이블 메타데이터에도 영향을 미치며, 기존의 (experimental) inverted indexes가 있는 테이블과의 호환성을 깨뜨립니다. 업그레이드 전에 이러한 인덱스를 반드시 삭제하고, 업그레이드 후 다시 생성하십시오. [#62884](https://github.com/ClickHouse/ClickHouse/pull/62884) ([Robert Schulze](https://github.com/rschu1ze)).
* `neighbor`, `runningAccumulate`, `runningDifferenceStartingWithFirstValue`, `runningDifference` 함수의 사용은 오류를 유발하기 쉬우므로 더 이상 권장되지 않습니다. 대신 적절한 윈도우 함수를 사용해야 합니다. 다시 활성화하려면 `allow_deprecated_error_prone_window_functions = 1`을 설정하거나, `compatibility = '24.4'` 이하로 설정하십시오. [#63132](https://github.com/ClickHouse/ClickHouse/pull/63132) ([Nikita Taranov](https://github.com/nickitat)).
* 컬럼 수가 매우 많고 `SHOW TABLES` 권한이 부여되지 않은 데이터베이스 또는 테이블도 많은 경우, `system.columns`에 대한 쿼리가 더 빠르게 동작합니다. 이전 버전에서는 해당 테이블에 `SHOW TABLES` 권한을 부여하지 않고 개별 컬럼에 `SHOW COLUMNS`만 부여한 경우에도 `system.columns` 테이블에 이러한 컬럼이 표시되었지만, 새 버전에서는 해당 테이블 전체를 건너뜁니다. 또한 쿼리를 느리게 만들던 trace 로그 메시지 "Access granted"와 "Access denied"를 제거했습니다. [#63439](https://github.com/ClickHouse/ClickHouse/pull/63439) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* 단일 레코드를 `application/x-www-form-urlencoded` 포맷으로 읽고 쓸 수 있는 `Form` 포맷이 추가되었습니다. [#60199](https://github.com/ClickHouse/ClickHouse/pull/60199) ([Shaun Struwig](https://github.com/Blargian)).
* CROSS JOIN에서 압축을 사용할 수 있게 되었습니다. [#60459](https://github.com/ClickHouse/ClickHouse/pull/60459) ([p1rattttt](https://github.com/p1rattttt)).
* 크기가 제한을 초과하면 임시 파일에서 `CROSS JOIN`을 수행할 수 있는 기능이 추가되었습니다. [#63432](https://github.com/ClickHouse/ClickHouse/pull/63432) ([p1rattttt](https://github.com/p1rattttt)).
* 왼쪽 테이블과 오른쪽 테이블의 컬럼을 모두 포함하는 부등 조건이 있는 join을 지원합니다. 예: `t1.y < t2.y`. 활성화하려면 `SET allow_experimental_join_condition = 1`을 설정하십시오. [#60920](https://github.com/ClickHouse/ClickHouse/pull/60920) ([lgbo](https://github.com/lgbo-ustc)).
* 이제 맵의 키로 `Float32`, `Float64`, `Array(T)`, `Map(K, V)`, `Tuple(T1, T2, ...)`를 사용할 수 있습니다. [#54537](https://github.com/ClickHouse/ClickHouse/issues/54537)을 해결했습니다. [#59318](https://github.com/ClickHouse/ClickHouse/pull/59318) ([李扬](https://github.com/taiyang-li)).
* rocksdb 내장 memtable에 의존하는 대신 SST 파일을 생성해 수집하는 방식으로 `EmbeddedRocksDB`에 대량 로딩 기능을 도입했습니다. 이를 통해 특히 StorageEmbeddedRocksDB 테이블에 대해 장시간 실행되는 삽입 쿼리의 가져오기 속도를 높일 수 있습니다. 또한 `EmbeddedRocksDB` 테이블 설정도 도입했습니다. [#59163](https://github.com/ClickHouse/ClickHouse/pull/59163) [#63324](https://github.com/ClickHouse/ClickHouse/pull/63324) ([Duc Canh Le](https://github.com/canhld94)).
* 이제 `input_format_tsv_crlf_end_of_line` 설정을 사용하면 TSV 포맷에서 CRLF를 파싱할 수 있습니다. [#56257](https://github.com/ClickHouse/ClickHouse/issues/56257)를 해결합니다. [#59747](https://github.com/ClickHouse/ClickHouse/pull/59747) ([Shaun Struwig](https://github.com/Blargian)).
* 누락된 필드에 NULL 값을 강제로 설정하는 새로운 설정 `input_format_force_null_for_omitted_fields`입니다. [#60887](https://github.com/ClickHouse/ClickHouse/pull/60887) ([Constantine Peresypkin](https://github.com/pkit)).
* 이전에는 S3 storage와 s3 테이블 함수에서 tarball, zip, 7z와 같은 아카이브 컨테이너 파일을 대상으로 `SELECT`를 수행할 수 없었습니다. 이제는 S3에 저장된 아카이브 내부 파일을 순회할 수 있습니다. [#62259](https://github.com/ClickHouse/ClickHouse/pull/62259) ([Daniil Ivanik](https://github.com/divanik)).
* 조건 함수 `clamp`를 지원합니다. [#62377](https://github.com/ClickHouse/ClickHouse/pull/62377) ([skyoct](https://github.com/skyoct)).
* `NPy` 출력 형식을 추가했습니다. [#62430](https://github.com/ClickHouse/ClickHouse/pull/62430) ([豪肥肥](https://github.com/HowePa)).
* `Raw` 포맷을 `TSVRaw`의 별칭으로 지원합니다. [#63394](https://github.com/ClickHouse/ClickHouse/pull/63394) ([Unalian](https://github.com/Unalian)).
* 버전 7 UUID, 즉 무작위 구성 요소가 포함된 timestamp 기반 UUID를 생성하는 새로운 SQL 함수 `generateUUIDv7`가 추가되었습니다. 또한 UUID에서 바이트를 추출하는 새로운 함수 `UUIDToNum`과 버전 7 UUID에서 timestamp 구성 요소를 추출하는 새로운 함수 `UUIDv7ToDateTime`도 추가되었습니다. [#62852](https://github.com/ClickHouse/ClickHouse/pull/62852) ([Alexey Petrunyaka](https://github.com/pet74alex)).
* Linux 및 MacOS에서 프로그램의 stdout이 압축 확장자가 있는 파일로 리디렉션된 경우, 아무것도 사용하지 않는 대신 해당 압축 방식을 사용하도록 했습니다(`INTO OUTFILE`와 비슷하게 동작함). [#63662](https://github.com/ClickHouse/ClickHouse/pull/63662) ([v01dXYZ](https://github.com/v01dXYZ)).
* attached 상태인 테이블 수가 많을 때 표시되는 경고를 변경해 테이블, 뷰, 딕셔너리를 구분하도록 했습니다. [#64180](https://github.com/ClickHouse/ClickHouse/pull/64180) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* ClickHouse 서버에서 `azureBlobStorage` 함수가 Azure Workload Identity를 사용해 Azure blob storage에 인증할 수 있도록 지원합니다. config에서 `use_workload_identity` 매개변수를 설정하면 인증에 [workload identity](https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/identity/azure-identity#authenticate-azure-hosted-applications)를 사용합니다. [#57881](https://github.com/ClickHouse/ClickHouse/pull/57881) ([Vinay Suryadevara](https://github.com/vinay92-ch)).
* `system.parts_columns` 테이블에 TTL 정보를 추가했습니다. [#63200](https://github.com/ClickHouse/ClickHouse/pull/63200) ([litlig](https://github.com/litlig)).

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

* 미리 모든 타입을 알지 못해도 내부에 임의의 타입 값을 저장할 수 있는 `Dynamic` 데이터 타입을 구현했습니다. `Dynamic` 타입은 `allow_experimental_dynamic_type` 설정을 통해 사용할 수 있습니다. 참고: [#54864](https://github.com/ClickHouse/ClickHouse/issues/54864). [#63058](https://github.com/ClickHouse/ClickHouse/pull/63058) ([Kruglov Pavel](https://github.com/Avogar)).
* MySQL에 연결하지 않아도 `MaterializedMySQL` 데이터베이스를 생성할 수 있도록 허용했습니다. [#63397](https://github.com/ClickHouse/ClickHouse/pull/63397) ([Kirill](https://github.com/kirillgarbar)).
* 일부 DDL 작업이 동일한 오류로 연속해서 `max_retries_before_automatic_recovery`(기본값 100)번보다 많이 실패하면, 복제된 데이터베이스의 레플리카를 자동으로 손실된 것으로 표시하고 복구를 시작합니다. 또한 entry 실행 초기 단계에서 예외가 발생할 경우 DDL entry가 스키핑될 수 있던 버그도 수정했습니다. [#63549](https://github.com/ClickHouse/ClickHouse/pull/63549) ([Alexander Tokmakov](https://github.com/tavplubix)).
* `StorageS3Queue`에서 실패한 파일도 `s3queue_tracked_file_ttl_sec` 및 `s3queue_traked_files_limit`에 포함되도록 했습니다. [#63638](https://github.com/ClickHouse/ClickHouse/pull/63638) ([Kseniia Sumarokova](https://github.com/kssenii)).

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

* 파일 시스템 캐시의 경합을 줄였습니다(4부). 백그라운드에서 추가 eviction을 수행해 파일 시스템 캐시가 한계까지 차지되지 않도록 유지할 수 있게 했습니다(`keep_free_space_size(elements)_ratio`로 제어). 이를 통해 쿼리의 공간 예약(`tryReserve` 메서드) 부담을 줄일 수 있습니다. 또한 가능한 한 lock-free 방식으로 처리되어, 일반적인 캐시 사용을 차단하지 않습니다. [#61250](https://github.com/ClickHouse/ClickHouse/pull/61250) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `INSERT` 중 새로 생성된 projection 블록의 머지를 건너뜁니다. [#59405](https://github.com/ClickHouse/ClickHouse/pull/59405) ([Nikita Taranov](https://github.com/nickitat)).
* 입력 문자열이 모두 ASCII 문자이면 `...UTF8` 문자열 함수를 ASCII 방식으로 처리합니다. [https://github.com/apache/doris/pull/29799](https://github.com/apache/doris/pull/29799) 에서 영감을 받았습니다. 전체적으로 1.07배\~1.62배 빨라졌습니다. 일부 경우에는 최대 메모리 사용량도 감소했습니다. [#61632](https://github.com/ClickHouse/ClickHouse/pull/61632) ([李扬](https://github.com/taiyang-li)).
* StorageS3에서 선택(`{}`) 글롭 패턴의 성능을 개선했습니다. [#62120](https://github.com/ClickHouse/ClickHouse/pull/62120) ([Andrey Zvonov](https://github.com/zvonand)).
* HostResolver는 각 IP 주소를 여러 번 보유합니다. 원격 호스트에 여러 IP가 있고, 어떤 이유로든(예: firewall 규칙) 일부 IP는 접근이 허용되고 다른 IP는 금지된 경우, 금지된 IP들 중 첫 번째 레코드만 실패로 표시되며 매번 시도할 때마다 해당 IP들이 다시 선택될 수 있습니다(그리고 다시 실패합니다). 이 문제를 수정하더라도 120초마다 DNS 캐시가 삭제되므로 해당 IP가 다시 선택될 수 있습니다. [#62652](https://github.com/ClickHouse/ClickHouse/pull/62652) ([Anton Ivashkin](https://github.com/ianton-ru)).
* 메모리 사용량을 제어하고 컬럼이 많을 때 머지 중 정렬 속도를 2배 높일 수 있도록 새 구성 `prefer_merge_sort_block_bytes`를 추가했습니다. [#62904](https://github.com/ClickHouse/ClickHouse/pull/62904) ([LiuNeng](https://github.com/liuneng1994)).
* `clickhouse-local`이 더 빠르게 시작됩니다. 이전 버전에서는 실수로 임시 디렉터리를 삭제하지 않았습니다. 이제는 삭제합니다. 이로써 [#62941](https://github.com/ClickHouse/ClickHouse/issues/62941)이 해결됩니다. [#63074](https://github.com/ClickHouse/ClickHouse/pull/63074) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 새 분석기에 대한 미세 최적화입니다. [#63429](https://github.com/ClickHouse/ClickHouse/pull/63429) ([Raúl Marín](https://github.com/Algunenano)).
* `DateTime`을 `DateTime64`와 비교하는 경우에도 인덱스 분석이 동작합니다. 이로써 [#63441](https://github.com/ClickHouse/ClickHouse/issues/63441)이 해결됩니다. [#63443](https://github.com/ClickHouse/ClickHouse/pull/63443) [#63532](https://github.com/ClickHouse/ClickHouse/pull/63532) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 불필요한 요소를 제거해 `set` 유형 인덱스를 약간(약 1.5배) 더 빠르게 만들었습니다. [#64098](https://github.com/ClickHouse/ClickHouse/pull/64098) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 파일 시스템 캐시에 쓸 때 데이터 복사를 제거했습니다. [#63401](https://github.com/ClickHouse/ClickHouse/pull/63401) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 이제 Azure blob storage를 사용하는 backups는 multicopy를 사용합니다. [#64116](https://github.com/ClickHouse/ClickHouse/pull/64116) ([alesapin](https://github.com/alesapin)).
* 서로 다른 Container에서도 Azure 네이티브 copy를 사용할 수 있습니다. [#64154](https://github.com/ClickHouse/ClickHouse/pull/64154) ([alesapin](https://github.com/alesapin)).
* 마침내 Azure 네이티브 copy를 활성화했습니다. [#64182](https://github.com/ClickHouse/ClickHouse/pull/64182) ([alesapin](https://github.com/alesapin)).

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

* `clickhouse-local`과 해당 축약 명령인 `clickhouse` 및 `ch`에서 쿼리 또는 쿼리 파일을 위치 인수로 사용할 수 있습니다. 예시: `ch "SELECT 1"`, `ch --param_test Hello "SELECT {test:String}"`, `ch query.sql`. 이 변경으로 [#62361](https://github.com/ClickHouse/ClickHouse/issues/62361)이 해결되었습니다. [#63081](https://github.com/ClickHouse/ClickHouse/pull/63081) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 로컬 및 Azure (azure\_blob\_storage) 객체 스토리지에서 plain\_rewritable 메타데이터를 활성화합니다. [#63365](https://github.com/ClickHouse/ClickHouse/pull/63365) ([Julia Kartseva](https://github.com/jkartseva)).
* 영문 스타일의 유니코드 따옴표를 지원합니다. 예: “Hello”, 'world'. 전반적으로는 다소 미묘한 기능이지만, Google Docs와 같은 워드 프로세서에서 쿼리를 입력할 때 유용합니다. 이로써 [#58634](https://github.com/ClickHouse/ClickHouse/issues/58634)가 해결되었습니다. [#63381](https://github.com/ClickHouse/ClickHouse/pull/63381) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* INSERT 쿼리의 컬럼 목록에서 끝에 오는 쉼표를 허용합니다. 예를 들어, `INSERT INTO test (a, b, c, ) VALUES ...`. [#63803](https://github.com/ClickHouse/ClickHouse/pull/63803) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Regexp` 포맷의 예외 메시지가 개선되었습니다. [#63804](https://github.com/ClickHouse/ClickHouse/pull/63804) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `Values` 포맷에서 후행 쉼표를 허용합니다. 예를 들어 다음 쿼리가 허용됩니다: `INSERT INTO test (a, b, c) VALUES (4, 5, 6,);`. [#63810](https://github.com/ClickHouse/ClickHouse/pull/63810) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 손상된 메시지에 대해 RabbitMQ가 nack를 보내도록 변경했습니다. [#45350](https://github.com/ClickHouse/ClickHouse/issues/45350)을 해결합니다. [#60312](https://github.com/ClickHouse/ClickHouse/pull/60312) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 디버그 정보를 해석하는 과정에서 비동기 스택 언와인딩(예: 샘플링 쿼리 프로파일러 사용 시) 중 발생하던 충돌을 수정했습니다. 이로써 [#60460](https://github.com/ClickHouse/ClickHouse/issues/60460)이 해결되었습니다. [#60468](https://github.com/ClickHouse/ClickHouse/pull/60468) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 디스크와 스토리지의 경우 S3 오류 'no key'에 대해 구분된 메시지를 제공합니다. [#61108](https://github.com/ClickHouse/ClickHouse/pull/61108) ([Sema Checherinda](https://github.com/CheSema)).
* 진행률 표시줄이 `system.zeros`, `system.zeros_mt`에서 `LIMIT`를 사용하는 간단한 쿼리와 `generateRandom` 테이블 함수에서도 작동합니다(`system.numbers`와 `system.numbers_mt`에서는 이미 작동함). 추가로, 전체 레코드 수가 `max_rows_to_read` 제한보다 크면 예외를 더 일찍 발생시킵니다. 이로써 [#58183](https://github.com/ClickHouse/ClickHouse/issues/58183)가 해결됩니다. [#61823](https://github.com/ClickHouse/ClickHouse/pull/61823) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* YAML 구성에서 "Merge Key"를 지원합니다(이것은 YAML의 다소 특이한 기능이므로, 무시하셔도 됩니다). [#62685](https://github.com/ClickHouse/ClickHouse/pull/62685) ([Azat Khuzhin](https://github.com/azat)).
* Replicated 소스에서 비결정적 함수를 사용할 때 발생하는 오류 메시지를 개선했습니다. [#62896](https://github.com/ClickHouse/ClickHouse/pull/62896) ([Grégoire Pineau](https://github.com/lyrixx)).
* `remote`의 Distributed over Distributed에 대한 서버 간 시크릿 수정. [#63013](https://github.com/ClickHouse/ClickHouse/pull/63013) ([Azat Khuzhin](https://github.com/azat)).
* YAML 파일에서 `include_from`을 지원합니다. 하지만 `config.d`를 사용하는 편이 더 좋습니다 [#63106](https://github.com/ClickHouse/ClickHouse/pull/63106) ([Eduard Karacharov](https://github.com/korowa)).
* skim 제안에서 항목을 선택한 후에도 터미널의 이전 데이터를 유지하도록 했습니다. [#63261](https://github.com/ClickHouse/ClickHouse/pull/63261) ([FlameFactory](https://github.com/FlameFactory)).
* 필드의 너비는(Pretty 형식 또는 `visibleWidth` 함수에서) 이제 ANSI 이스케이프 시퀀스를 올바르게 무시합니다. [#63270](https://github.com/ClickHouse/ClickHouse/pull/63270) ([Shaun Struwig](https://github.com/Blargian)).
* 적절한 경우 오류 코드 `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` 대신 더 정확한 오류 코드를 사용하도록 변경했습니다. [#63406](https://github.com/ClickHouse/ClickHouse/pull/63406) ([Yohann Jardin](https://github.com/yohannj)).
* 이제 clickhouse-client의 명령줄 자동 완성 제안용 쿼리에서 `os_user` 및 `client_hostname`이 올바르게 설정됩니다. 이로써 [#63430](https://github.com/ClickHouse/ClickHouse/issues/63430)이 해결되었습니다. [#63433](https://github.com/ClickHouse/ClickHouse/pull/63433) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `max_block_size`가 0인 경우 자동으로 기본값으로 보정합니다. [#63587](https://github.com/ClickHouse/ClickHouse/pull/63587) ([Antonio Andelic](https://github.com/antonio2368)).
* 바이너리 변경이 감지되면 자동으로 이름을 변경할 수 있도록 `trace_log`에 `build_id` ALIAS 컬럼을 추가합니다. 이는 [#52086](https://github.com/ClickHouse/ClickHouse/issues/52086)을 해결하기 위한 것입니다. [#63656](https://github.com/ClickHouse/ClickHouse/pull/63656) ([Zimu Li](https://github.com/woodlzm)).
* 객체 스토리지 디스크에서 TRUNCATE 작업을 사용할 수 있도록 했습니다. [#63693](https://github.com/ClickHouse/ClickHouse/pull/63693) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 키워드 목록 로딩은 이제 서버 리비전에 따라 결정되며, 구버전의 ClickHouse 서버에서는 비활성화됩니다. CC @azat. [#63786](https://github.com/ClickHouse/ClickHouse/pull/63786) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* ClickHouse 디스크는 실제 메타데이터 포맷 버전을 확인하기 위해 서버 설정을 읽어야 합니다. [#63831](https://github.com/ClickHouse/ClickHouse/pull/63831) ([Sema Checherinda](https://github.com/CheSema)).
* stdout가 TTY가 아닐 때 Pretty 형식 제한(`output_format_pretty_max_rows`/`output_format_pretty_max_value_width`)을 해제합니다. [#63942](https://github.com/ClickHouse/ClickHouse/pull/63942) ([Azat Khuzhin](https://github.com/azat)).
* 이제 ClickHouse를 AWS Lambda 환경에서 사용할 때도 예외 처리가 작동합니다. 작성자: [Alexey Coolnev](https://github.com/acoolnev). [#64014](https://github.com/ClickHouse/ClickHouse/pull/64014) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* HTTP를 통해 전달된 잘못된 압축 데이터에 대해 `CORRUPTED_DATA` 대신 `CANNOT_DECOMPRESS` 예외를 발생시킵니다. [#64036](https://github.com/ClickHouse/ClickHouse/pull/64036) ([vdimir](https://github.com/vdimir)).
* Pretty 형식의 단일 큰 숫자 표시가 이제 널 허용 및 LowCardinality에서도 작동합니다. 이로써 [#61993](https://github.com/ClickHouse/ClickHouse/issues/61993)가 해결되었습니다. [#64084](https://github.com/ClickHouse/ClickHouse/pull/64084) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 인덱스를 활용한 파트 필터링 시 메트릭, 로그 및 스레드 이름을 추가했습니다. [#64130](https://github.com/ClickHouse/ClickHouse/pull/64130) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `ATTACH`에서는 `allow_suspicious_primary_key`를 무시하고, `ALTER`에서는 검증합니다. [#64202](https://github.com/ClickHouse/ClickHouse/pull/64202) ([Azat Khuzhin](https://github.com/azat)).

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

* ClickHouse가 clang-18로 빌드되도록 변경했습니다. clang-tidy-18의 새로운 검사 다수가 활성화되었습니다. [#60469](https://github.com/ClickHouse/ClickHouse/pull/60469) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* ClickHouse의 새 플랫폼으로 loongarch64를 Experimental 단계로 지원합니다. [#63733](https://github.com/ClickHouse/ClickHouse/pull/63733) ([qiangxuhui](https://github.com/qiangxuhui)).
* Dockerfile이 [https://github.com/docker-library/official-images/pull/15846](https://github.com/docker-library/official-images/pull/15846) 에서 Docker 공식 라이브러리의 검토를 받았습니다. [#63400](https://github.com/ClickHouse/ClickHouse/pull/63400) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* 각 translation unit의 모든 symbol 정보가 CI의 모든 빌드마다 CI 데이터베이스에 수집됩니다. 이로써 [#63494](https://github.com/ClickHouse/ClickHouse/issues/63494)가 해결됩니다. [#63495](https://github.com/ClickHouse/ClickHouse/pull/63495) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Apache Datasketches 라이브러리를 업데이트했습니다. 이로써 [#63858](https://github.com/ClickHouse/ClickHouse/issues/63858)가 해결됩니다. [#63923](https://github.com/ClickHouse/ClickHouse/pull/63923) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 바이너리 크로스 컴파일 시 aarch64 Linux에 대한 GRPC 지원을 활성화했습니다. [#64072](https://github.com/ClickHouse/ClickHouse/pull/64072) ([alesapin](https://github.com/alesapin)).
* aarch64에서 SIGSEGV 발생 시 unwind를 수정했습니다(시그널용 스택이 작아서 발생). [#64058](https://github.com/ClickHouse/ClickHouse/pull/64058) ([Azat Khuzhin](https://github.com/azat)).

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

* 기본적으로 `enable_vertical_final` 설정을 비활성화했습니다. 버그가 있으므로 이 기능은 사용하지 마십시오: [#64543](https://github.com/ClickHouse/ClickHouse/issues/64543). [#64544](https://github.com/ClickHouse/ClickHouse/pull/64544) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 여러 세그먼트를 사용할 때 백업 생성 시 발생하는 문제 수정 [#57684](https://github.com/ClickHouse/ClickHouse/pull/57684) ([Vitaly Baranov](https://github.com/vitlibar)).
* CREATE 쿼리의 컬럼 목록에서 MV 내부 테이블로 프로젝션/인덱스/기본 키(primary key)가 전달되지 않던 문제를 수정 [#59183](https://github.com/ClickHouse/ClickHouse/pull/59183) ([Azat Khuzhin](https://github.com/azat)).
* boundRatio의 잘못된 머지 문제 수정 [#60532](https://github.com/ClickHouse/ClickHouse/pull/60532) ([Tao Wang](https://github.com/wangtZJU)).
* const 저카디널리티 컬럼에서 일부 함수를 호출할 때 발생하는 크래시 수정 [#61966](https://github.com/ClickHouse/ClickHouse/pull/61966) ([Michael Kolupaev](https://github.com/al13n321)).
* 테이블이 적응형 세분화 수준을 사용하지 않을 때 FINAL이 포함된 쿼리에서 잘못된 결과가 나오는 문제를 수정했습니다 [#62432](https://github.com/ClickHouse/ClickHouse/pull/62432) ([Duc Canh Le](https://github.com/canhld94)).
* 메모리 컨트롤러의 cgroups v2 지원 감지 개선 [#62903](https://github.com/ClickHouse/ClickHouse/pull/62903) ([Robert Schulze](https://github.com/rschu1ze)).
* 클라이언트에서 외부 테이블을 후속으로 사용할 때 발생하는 문제 수정 [#62964](https://github.com/ClickHouse/ClickHouse/pull/62964) ([Azat Khuzhin](https://github.com/azat)).
* untuple 및 미해결 람다와 관련된 충돌을 수정했습니다 [#63131](https://github.com/ClickHouse/ClickHouse/pull/63131) ([Raúl Marín](https://github.com/Algunenano)).
* 서버가 연결을 너무 일찍 수신 대기하기 시작하는 문제를 수정했습니다 [#63181](https://github.com/ClickHouse/ClickHouse/pull/63181) ([alesapin](https://github.com/alesapin)).
* DROP PART 명령 후 재시작할 때 발생하는 겹치는 파트 문제 수정 [#63202](https://github.com/ClickHouse/ClickHouse/pull/63202) ([Han Fei](https://github.com/hanfei1991)).
* 시작 시 SQL security 기본값을 올바르게 로드하도록 수정 [#63209](https://github.com/ClickHouse/ClickHouse/pull/63209) ([pufit](https://github.com/pufit)).
* JOIN filter push down filter join 문제 수정 [#63234](https://github.com/ClickHouse/ClickHouse/pull/63234) ([Maksim Kita](https://github.com/kitaisreal)).
* AzureObjectStorage::listObjects의 무한 루프를 수정 [#63257](https://github.com/ClickHouse/ClickHouse/pull/63257) ([Julia Kartseva](https://github.com/jkartseva)).
* CROSS join에서 join\_algorithm 설정을 무시하던 문제 [#63273](https://github.com/ClickHouse/ClickHouse/pull/63273) ([vdimir](https://github.com/vdimir)).
* WriteBufferToFileSegment 및 StatusFile의 finalize 문제를 수정했습니다 [#63346](https://github.com/ClickHouse/ClickHouse/pull/63346) ([vdimir](https://github.com/vdimir)).
* 드문 경우 ALTER 후 SELECT 쿼리에서 발생하는 논리 오류 수정 [#63353](https://github.com/ClickHouse/ClickHouse/pull/63353) ([alesapin](https://github.com/alesapin)).
* `session_timezone`에 맞게 `X-ClickHouse-Timezone` 헤더를 수정했습니다 [#63377](https://github.com/ClickHouse/ClickHouse/pull/63377) ([Andrey Zvonov](https://github.com/zvonand)).
* grouping WITH ROLLUP과 LowCardinality 타입을 사용할 때 발생하는 디버그 assert를 수정했습니다. [#63398](https://github.com/ClickHouse/ClickHouse/pull/63398) ([Raúl Marín](https://github.com/Algunenano)).
* group\_by\_use\_nulls 관련 소규모 수정 [#63405](https://github.com/ClickHouse/ClickHouse/pull/63405) ([vdimir](https://github.com/vdimir)).
* 테이블 메타데이터에서 프로젝션이 제거되었지만 파트에 여전히 프로젝션이 남아 있는 경우, 프로젝션 파트의 백업/복원 문제 수정 [#63426](https://github.com/ClickHouse/ClickHouse/pull/63426) ([Kseniia Sumarokova](https://github.com/kssenii)).
* mysql 딕셔너리 소스 문제 수정 [#63481](https://github.com/ClickHouse/ClickHouse/pull/63481) ([vdimir](https://github.com/vdimir)).
* 데이터가 없을 때 AsyncInsertFlush에 QueryFinish 삽입 [#63483](https://github.com/ClickHouse/ClickHouse/pull/63483) ([Raúl Marín](https://github.com/Algunenano)).
* 수정: system.query\_log의 used\_dictionaries가 비어 있는 문제 [#63487](https://github.com/ClickHouse/ClickHouse/pull/63487) ([Eduard Karacharov](https://github.com/korowa)).
* `MergeTreePrefetchedReadPool`의 안전성 강화 [#63513](https://github.com/ClickHouse/ClickHouse/pull/63513) ([Antonio Andelic](https://github.com/antonio2368)).
* sentry가 활성화된 상태에서 종료 시 발생하는 충돌을 수정했습니다(openssl이 sentry보다 먼저 제거되어 발생) [#63548](https://github.com/ClickHouse/ClickHouse/pull/63548) ([Azat Khuzhin](https://github.com/azat)).
* 키 기반 해싱의 배열 및 맵 지원 수정 [#63628](https://github.com/ClickHouse/ClickHouse/pull/63628) ([Salvatore Mesoraca](https://github.com/aiven-sal)).
* Parquet 및 StorageMerge의 filter pushdown을 수정 [#63642](https://github.com/ClickHouse/ClickHouse/pull/63642) ([Michael Kolupaev](https://github.com/al13n321)).
* Zookeeper 경로가 이미 존재하면 Replicated로 변환되지 않도록 방지 [#63670](https://github.com/ClickHouse/ClickHouse/pull/63670) ([Kirill](https://github.com/kirillgarbar)).
* 분석기: 뷰가 필요한 컬럼만 읽습니다 [#63688](https://github.com/ClickHouse/ClickHouse/pull/63688) ([Maksim Kita](https://github.com/kitaisreal)).
* 분석기: WINDOW 재정의 금지 [#63694](https://github.com/ClickHouse/ClickHouse/pull/63694) ([Dmitry Novik](https://github.com/novikd)).
* 실험적인 복제된 데이터베이스에서 flatten\_nested가 올바르게 동작하지 않았습니다. [#63695](https://github.com/ClickHouse/ClickHouse/pull/63695) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 수정 [#63653](https://github.com/ClickHouse/ClickHouse/issues/63653) [#63722](https://github.com/ClickHouse/ClickHouse/pull/63722) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Array(Nothing)에서 Map(Nothing, Nothing)으로의 형 변환 허용 [#63753](https://github.com/ClickHouse/ClickHouse/pull/63753) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* partial\_merge join에서 ILLEGAL\_COLUMN 문제 수정 [#63755](https://github.com/ClickHouse/ClickHouse/pull/63755) ([vdimir](https://github.com/vdimir)).
* 수정: 윈도우 함수 사용 시 불필요한 distinct 제거 [#63776](https://github.com/ClickHouse/ClickHouse/pull/63776) ([Igor Nikonov](https://github.com/devcrafter)).
* SYSTEM UNLOAD PRIMARY KEY 실행 시 발생할 수 있는 비정상 종료 문제 수정 [#63778](https://github.com/ClickHouse/ClickHouse/pull/63778) ([Raúl Marín](https://github.com/Algunenano)).
* 중복된 순환 별칭이 있는 쿼리 문제를 수정했습니다. [#63791](https://github.com/ClickHouse/ClickHouse/pull/63791) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `TokenIterator`가 원래 의도대로 지연 방식으로 동작하도록 변경 [#63801](https://github.com/ClickHouse/ClickHouse/pull/63801) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `endpoint_subpath` S3 URI 설정을 추가했습니다 [#63806](https://github.com/ClickHouse/ClickHouse/pull/63806) ([Julia Kartseva](https://github.com/jkartseva)).
* `ParallelReadBuffer`의 교착 상태 수정 [#63814](https://github.com/ClickHouse/ClickHouse/pull/63814) ([Antonio Andelic](https://github.com/antonio2368)).
* JOIN filter push down의 동등 컬럼 관련 수정 [#63819](https://github.com/ClickHouse/ClickHouse/pull/63819) ([Maksim Kita](https://github.com/kitaisreal)).
* Lazy 데이터베이스에서 DROP 후 모든 디스크에서 데이터를 삭제합니다. [#63848](https://github.com/ClickHouse/ClickHouse/pull/63848) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 병렬 레플리카와 새 분석기를 사용하는 MV에서 읽을 때 잘못된 결과가 반환되던 문제를 수정했습니다 [#63861](https://github.com/ClickHouse/ClickHouse/pull/63861) ([Nikita Taranov](https://github.com/nickitat)).
* `keeper-client`의 `find_super_nodes` 및 `find_big_family` 명령 수정 사항 [#63862](https://github.com/ClickHouse/ClickHouse/pull/63862) ([Alexander Gololobov](https://github.com/davenger)).
* 람다 실행 이름 업데이트 [#63864](https://github.com/ClickHouse/ClickHouse/pull/63864) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* CPU/Real 프로파일러로 인한 SIGSEGV 수정 [#63865](https://github.com/ClickHouse/ClickHouse/pull/63865) ([Azat Khuzhin](https://github.com/azat)).
* `EXPLAIN CURRENT TRANSACTION` 쿼리를 수정했습니다 [#63926](https://github.com/ClickHouse/ClickHouse/pull/63926) ([Anton Popov](https://github.com/CurtizJ)).
* 분석기 수정: 끝도 없이 거북이뿐입니다... [#63930](https://github.com/ClickHouse/ClickHouse/pull/63930) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* `plain_rewritable` 디스크에서 특정 ALTER TABLE 명령 허용 [#63933](https://github.com/ClickHouse/ClickHouse/pull/63933) ([Julia Kartseva](https://github.com/jkartseva)).
* 재귀 CTE 분산 관련 수정 [#63939](https://github.com/ClickHouse/ClickHouse/pull/63939) ([Maksim Kita](https://github.com/kitaisreal)).
* 분석기: COLUMNS 해석 문제를 수정했습니다 [#63962](https://github.com/ClickHouse/ClickHouse/pull/63962) ([Dmitry Novik](https://github.com/novikd)).
* 분석기에서 LIMIT BY 및 skip\_unused\_shards 지원 [#63983](https://github.com/ClickHouse/ClickHouse/pull/63983) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 일부 자잘한 문제(실험적 Kusto) 수정 [#63992](https://github.com/ClickHouse/ClickHouse/pull/63992) ([Yong Wang](https://github.com/kashwy)).
* 신뢰할 수 없는 바이너리 입력을 보다 안전하게 역직렬화합니다 [#64024](https://github.com/ClickHouse/ClickHouse/pull/64024) ([Robert Schulze](https://github.com/rschu1ze)).
* MergeTree 엔진 계열이 아닌 테이블을 기반으로 하는 분산 테이블에서 `final` = 1 설정이 적용된 쿼리의 분석을 수정했습니다. [#64037](https://github.com/ClickHouse/ClickHouse/pull/64037) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* recoverLostReplica에 누락되어 있던 설정을 추가했습니다 [#64040](https://github.com/ClickHouse/ClickHouse/pull/64040) ([Raúl Marín](https://github.com/Algunenano)).
* 분석기에서 SQL security 액세스 검사를 수정했습니다 [#64079](https://github.com/ClickHouse/ClickHouse/pull/64079) ([pufit](https://github.com/pufit)).
* 분석기 수정: DAG에는 보간 표현식만 사용되도록 합니다 [#64096](https://github.com/ClickHouse/ClickHouse/pull/64096) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Azure 백업에서 (네이티브가 아닌 복사 사례의 경우) `max_upload_part_size` 대신 1 MiB(읽기 버퍼 크기) 단위로 멀티파트 블록을 기록하던 문제를 수정했습니다 [#64117](https://github.com/ClickHouse/ClickHouse/pull/64117) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 백업 복사 시 올바르게 폴백되도록 수정 [#64153](https://github.com/ClickHouse/ClickHouse/pull/64153) ([Antonio Andelic](https://github.com/antonio2368)).
* materialized view로 CREATE TABLE할 때 발생하는 LOGICAL\_ERROR를 방지 [#64174](https://github.com/ClickHouse/ClickHouse/pull/64174) ([Raúl Marín](https://github.com/Algunenano)).
* 쿼리 캐시: 서로 다른 데이터베이스에 대해 실행된 동일한 쿼리를 서로 다른 쿼리로 간주합니다 [#64199](https://github.com/ClickHouse/ClickHouse/pull/64199) ([Robert Schulze](https://github.com/rschu1ze)).
* Keeper에서 `text_log`를 무시합니다 [#64218](https://github.com/ClickHouse/ClickHouse/pull/64218) ([Antonio Andelic](https://github.com/antonio2368)).
* 논리 오류 수정: prewhere가 있는 Buffer 테이블에서의 잘못된 형변환. [#64388](https://github.com/ClickHouse/ClickHouse/pull/64388) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).

### <a id="244" /> ClickHouse 릴리스 24.4, 2024-04-30. [발표](https://presentations.clickhouse.com/2024-release-24.4/), [동영상](https://www.youtube.com/watch?v=dtUqgcfOGmE)

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

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

* `clickhouse-odbc-bridge`와 `clickhouse-library-bridge`가 이제 별도 패키지로 분리되었습니다. 이 변경으로 [#61677](https://github.com/ClickHouse/ClickHouse/issues/61677)이 해결되었습니다. [#62114](https://github.com/ClickHouse/ClickHouse/pull/62114) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 의미가 없으므로 max\_parallel\_replicas(레플리카에서 실험적으로 병렬 읽기를 수행하기 위한 설정)를 `0`으로 설정할 수 없도록 변경했습니다. 이 변경으로 [#60140](https://github.com/ClickHouse/ClickHouse/issues/60140)이 해결되었습니다. [#61201](https://github.com/ClickHouse/ClickHouse/pull/61201) ([Kruglov Pavel](https://github.com/Avogar)).
* 사용 중단된 `LIVE VIEW` 기능의 일부인 `INSERT WATCH` 쿼리 지원을 제거했습니다. [#62382](https://github.com/ClickHouse/ClickHouse/pull/62382) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `optimize_monotonous_functions_in_order_by` 설정을 제거했습니다. [#63004](https://github.com/ClickHouse/ClickHouse/pull/63004) ([Raúl Marín](https://github.com/Algunenano)).
* `Replicated` 데이터베이스 엔진에서 Experimental 태그를 제거했습니다. 이제 베타 단계입니다. [#62937](https://github.com/ClickHouse/ClickHouse/pull/62937) ([Justin de Guzman](https://github.com/justindeguzman)).

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

* 재귀 CTE를 지원합니다. [#62074](https://github.com/ClickHouse/ClickHouse/pull/62074) ([Maksim Kita](https://github.com/kitaisreal)).
* `QUALIFY` 절을 지원합니다. [#47819](https://github.com/ClickHouse/ClickHouse/issues/47819)를 해결합니다. [#62619](https://github.com/ClickHouse/ClickHouse/pull/62619) ([Maksim Kita](https://github.com/kitaisreal)).
* 이제 테이블 엔진에 권한을 부여할 수 있으며, 기존 사용자 동작에는 영향을 주지 않습니다. [#60117](https://github.com/ClickHouse/ClickHouse/pull/60117) ([jsc0218](https://github.com/jsc0218)).
* `INSERT` 작업을 지원하고 로컬에 메타데이터를 저장할 필요가 없는, 재기록 가능한 S3 디스크를 추가했습니다. [#61116](https://github.com/ClickHouse/ClickHouse/pull/61116) ([Julia Kartseva](https://github.com/jkartseva)). 주된 사용 사례는 시스템 테이블입니다.
* 클라이언트에서 입력하는 동안의 구문 강조 표시가 이제 구문 수준에서 동작합니다(이전에는 렉서 수준에서 동작했습니다). [#62123](https://github.com/ClickHouse/ClickHouse/pull/62123) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `DROP TABLE a, b, c`와 같이 여러 테이블을 동시에 삭제할 수 있도록 지원합니다. [#58705](https://github.com/ClickHouse/ClickHouse/pull/58705) ([zhongyuankai](https://github.com/zhongyuankai)).
* 이제 `ALTER MODIFY SETTING`을 통해 Memory 테이블 설정을 수정할 수 있습니다. 예시: `ALTER TABLE memory MODIFY SETTING min_rows_to_keep = 100, max_rows_to_keep = 1000;`. [#62039](https://github.com/ClickHouse/ClickHouse/pull/62039) ([zhongyuankai](https://github.com/zhongyuankai)).
* HTTP 인터페이스에 `role` 쿼리 매개변수를 추가했습니다. 이 매개변수는 `SET ROLE x`와 비슷하게 동작하며, SQL 문이 실행되기 전에 역할을 적용합니다. 이를 통해 여러 SQL 문을 허용하지 않아 `SET ROLE x`와 SQL 문 자체를 동시에 보낼 수 없는 HTTP 인터페이스의 제한을 우회할 수 있습니다. 이 방식으로 여러 역할을 설정할 수도 있습니다. 예를 들어 `?role=x&role=y`는 `SET ROLE x, y`와 동일합니다. [#62669](https://github.com/ClickHouse/ClickHouse/pull/62669) ([Serge Klochkov](https://github.com/slvrtrn)).
* 테이블의 프라이머리 키가 사용하는 메모리 사용량을 해제할 수 있도록 `SYSTEM UNLOAD PRIMARY KEY`를 추가했습니다. [#62738](https://github.com/ClickHouse/ClickHouse/pull/62738) ([Pablo Marcos](https://github.com/pamarcos)).
* `system.text_log`에 `value1`, `value2`, ..., `value10` 컬럼을 추가했습니다. 이 컬럼에는 메시지 포맷에 사용된 값이 들어 있습니다. [#59619](https://github.com/ClickHouse/ClickHouse/pull/59619) ([Alexey Katsman](https://github.com/alexkats)).
* 삽입 시 block 내에서 할당된 원래 행 번호를 저장하는 영구 가상 컬럼 `_block_offset`을 추가했습니다. `_block_offset` 컬럼의 영속성은 MergeTree 설정 `enable_block_offset_column`으로 활성화할 수 있습니다. part의 최소 block 번호 또는 mutation 버전을 포함하는 가상 컬럼 `_part_data_version`도 추가했습니다. 영구 가상 컬럼 `_block_number`는 더 이상 Experimental로 간주되지 않습니다. [#60676](https://github.com/ClickHouse/ClickHouse/pull/60676) ([Anton Popov](https://github.com/CurtizJ)).
* `input_format_json_throw_on_bad_escape_sequence` 설정을 추가했습니다. 이 설정을 비활성화하면 JSON 입력 형식에서 잘못된 이스케이프 시퀀스를 저장할 수 있습니다. [#61889](https://github.com/ClickHouse/ClickHouse/pull/61889) ([Kruglov Pavel](https://github.com/Avogar)).

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

* 동등한 Set을 활용한 JOIN filter push down 개선. [#61216](https://github.com/ClickHouse/ClickHouse/pull/61216) ([Maksim Kita](https://github.com/kitaisreal)).
* JOIN 이후의 필터가 항상 기본값을 걸러내는 경우, OUTER JOIN을 INNER JOIN으로 변환하는 최적화가 적용됩니다. 이 최적화는 `query_plan_convert_outer_join_to_inner_join` 설정으로 제어할 수 있으며, 기본적으로 활성화되어 있습니다. [#62907](https://github.com/ClickHouse/ClickHouse/pull/62907) ([Maksim Kita](https://github.com/kitaisreal)).
* AWS S3 개선. 클라이언트는 서버에 헤더 'Keep-Alive: timeout=X'를 전송해야 합니다. 클라이언트가 서버로부터 해당 헤더가 포함된 응답을 받으면 서버의 값을 사용해야 합니다. 또한 connection close 경쟁 상태를 방지하려면 만료가 임박한 connection은 사용하지 않는 것이 좋습니다. [#62249](https://github.com/ClickHouse/ClickHouse/pull/62249) ([Sema Checherinda](https://github.com/CheSema)).
* SELECT 시 뮤테이션 오버헤드 감소 (v2). [#60856](https://github.com/ClickHouse/ClickHouse/pull/60856) ([Azat Khuzhin](https://github.com/azat)).
* PODArray에서 자주 호출되는 함수들이 이제 강제로 인라인되도록 변경되었습니다. [#61144](https://github.com/ClickHouse/ClickHouse/pull/61144) ([李扬](https://github.com/taiyang-li)).
* 필수 컬럼을 모두 읽은 뒤에는 객체의 나머지 부분을 스키핑하여 JSON 파싱 속도를 높였습니다. [#62210](https://github.com/ClickHouse/ClickHouse/pull/62210) ([lgbo](https://github.com/lgbo-ustc)).
* file/s3/hdfs/url/... 테이블 함수에서 파일로부터 수행하는 단순한 insert select를 개선했습니다. 병렬 파싱에 사용되는 스레드 수를 제어할 수 있도록 별도의 max\_parsing\_threads 설정을 추가했습니다. [#62404](https://github.com/ClickHouse/ClickHouse/pull/62404) ([Kruglov Pavel](https://github.com/Avogar)).
* 함수 `to_utc_timestamp` 및 `from_utc_timestamp`는 이제 약 2배 더 빠르게 동작합니다. [#62583](https://github.com/ClickHouse/ClickHouse/pull/62583) ([KevinyhZou](https://github.com/KevinyhZou)).
* 함수 `parseDateTimeOrNull`, `parseDateTimeOrZero`, `parseDateTimeInJodaSyntaxOrNull`, `parseDateTimeInJodaSyntaxOrZero`는 이제 입력에 파싱되지 않는 값이 대부분 포함되어 있을 때 훨씬 더 빠르게(10배\~1000배) 실행됩니다. [#62634](https://github.com/ClickHouse/ClickHouse/pull/62634) ([LiuNeng](https://github.com/liuneng1994)).
* `system.query_cache`에 대한 SELECT는 이제 쿼리 캐시에 엔트리가 매우 많을 때(예: 100,000개 초과) 눈에 띄게 더 빠르게 실행됩니다. [#62671](https://github.com/ClickHouse/ClickHouse/pull/62671) ([Robert Schulze](https://github.com/rschu1ze)).
* 파일 시스템 캐시 경합 감소(3부): 공간 예약 시도 시 잠금 없이 파일 시스템에서 삭제를 수행합니다. [#61163](https://github.com/ClickHouse/ClickHouse/pull/61163) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 파일 시스템 캐시의 동적 크기 조정 속도를 개선했습니다. [#61723](https://github.com/ClickHouse/ClickHouse/pull/61723) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `INVALIDATE_QUERY`가 있는 딕셔너리 소스는 시작 시 두 번 로드되지 않습니다. [#62050](https://github.com/ClickHouse/ClickHouse/pull/62050) ([vdimir](https://github.com/vdimir)).
* 프라이머리 키(primary key)가 포함된 불리언 표현식 뒤에 불필요한 `= 1` 또는 `= 0`이 추가되면, 프라이머리 인덱스를 사용할 수 있음에도 사용하지 않던 문제를 수정했습니다. 예를 들어 `SELECT * FROM <table> WHERE <primary-key> IN (<value>) = 1` 및 `SELECT * FROM <table> WHERE <primary-key> NOT IN (<value>) = 0`는 모두 프라이머리 인덱스를 사용할 수 있는데도 전체 테이블 스캔을 수행했습니다. [#62142](https://github.com/ClickHouse/ClickHouse/pull/62142) ([josh-hildred](https://github.com/josh-hildred)).
* 전체 결과를 하나의 큰 청크에 누적하는 대신 `system.remote_data_paths`에서 청크 스트림을 반환하도록 했습니다. 이렇게 하면 메모리 사용량을 줄이고, 중간 진행 상황을 표시하며, 쿼리를 취소할 수 있습니다. [#62613](https://github.com/ClickHouse/ClickHouse/pull/62613) ([Alexander Gololobov](https://github.com/davenger)).

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

* `azure_allow_parallel_part_upload` 설정으로 제어되는 Azure Blob Storage용 병렬 쓰기 버퍼를 지원합니다. [#62534](https://github.com/ClickHouse/ClickHouse/pull/62534) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* 이제 사용자 공간 페이지 캐시가 정적 웹 스토리지(`disk(type = web)`)에서도 작동합니다. 활성화하려면 클라이언트 설정 `use_page_cache_for_disks_without_file_cache=1`을 사용하세요. [#61911](https://github.com/ClickHouse/ClickHouse/pull/61911) ([Michael Kolupaev](https://github.com/al13n321)).
* `Variant` 유형에서 Bool 및 숫자 variant를 의심스러운 것으로 취급하지 않습니다. [#61999](https://github.com/ClickHouse/ClickHouse/pull/61999) ([Kruglov Pavel](https://github.com/Avogar)).
* 파싱을 사용해 String에서 `Variant`로의 변환을 개선했습니다. [#62005](https://github.com/ClickHouse/ClickHouse/pull/62005) ([Kruglov Pavel](https://github.com/Avogar)).
* JSONExtract 함수에서 `Variant`를 지원합니다. [#62014](https://github.com/ClickHouse/ClickHouse/pull/62014) ([Kruglov Pavel](https://github.com/Avogar)).
* `Variant` 유형을 비교 가능한 것으로 표시해 프라이머리 키(primary key)에서 사용할 수 있도록 했습니다. [#62693](https://github.com/ClickHouse/ClickHouse/pull/62693) ([Kruglov Pavel](https://github.com/Avogar)).

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

* 편의를 위해 `SELECT * FROM numbers() `는 제한 없이 `SELECT * FROM system.numbers`와 동일하게 동작합니다. [#61969](https://github.com/ClickHouse/ClickHouse/pull/61969) ([YenchangChan](https://github.com/YenchangChan)).
* Kafka 구성에 consumer/producer 태그를 분리해 도입합니다. 이렇게 하면 consumer 속성이 producer 인스턴스에 지정되었거나 그 반대로 지정되었다는 librdkafka(버그가 많고 좋지 않은 C 라이브러리)의 경고를 방지할 수 있습니다(예: `Configuration property session.timeout.ms is a consumer property and will be ignored by this producer instance`). 해결: [#58983](https://github.com/ClickHouse/ClickHouse/issues/58983). [#58956](https://github.com/ClickHouse/ClickHouse/pull/58956) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* 함수 `date_diff` 및 `age`는 이제 결과를 마이크로초 정밀도 대신 나노초 정밀도로 계산합니다. 또한 이제 `unit` 매개변수에 사용할 수 있는 값으로 `nanosecond`(또는 `nanoseconds` 또는 `ns`)를 지원합니다. [#61409](https://github.com/ClickHouse/ClickHouse/pull/61409) ([Austin Kothig](https://github.com/kothiga)).
* `date_trunc`에 나노초, 마이크로초, 밀리초 단위를 추가했습니다. [#62335](https://github.com/ClickHouse/ClickHouse/pull/62335) ([Misz606](https://github.com/Misz606)).
* 인증서를 다시 로드할 때 인증서 체인도 다시 로드합니다. [#61671](https://github.com/ClickHouse/ClickHouse/pull/61671) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* 해당 레플리카 경로에 활성 레플리카가 있으면 테이블을 ATTACH할 수 없도록 하여 오류 [#60432](https://github.com/ClickHouse/ClickHouse/issues/60432)를 방지하도록 했습니다. [#61876](https://github.com/ClickHouse/ClickHouse/pull/61876) ([Arthur Passos](https://github.com/arthurpassos)).
* `clickhouse-local`에서 `input`을 지원하도록 구현했습니다. [#61923](https://github.com/ClickHouse/ClickHouse/pull/61923) ([Azat Khuzhin](https://github.com/azat)).
* `ANY` 엄격성을 사용하는 `Join` 테이블 엔진은 다시 로드한 후에도 일관성이 유지됩니다. 동일한 키를 가진 여러 행이 삽입되면 첫 번째 행의 우선순위가 더 높아집니다(이전에는 테이블 로딩 시 무작위로 선택되었습니다). 해결 [#51027](https://github.com/ClickHouse/ClickHouse/issues/51027). [#61972](https://github.com/ClickHouse/ClickHouse/pull/61972) ([vdimir](https://github.com/vdimir)).
* Apache Arrow 스키마에서 널 허용 컬럼 타입을 자동 추론합니다. [#61984](https://github.com/ClickHouse/ClickHouse/pull/61984) ([Maksim Kita](https://github.com/kitaisreal)).
* 집계 중 aggregate states의 병렬 머지를 취소할 수 있도록 했습니다. 예시: `uniqExact`. [#61992](https://github.com/ClickHouse/ClickHouse/pull/61992) ([Maksim Kita](https://github.com/kitaisreal)).
* 제안 항목을 채우는 데 `system.keywords`를 사용하고, 내부 전반에서도 이를 사용합니다. [#62000](https://github.com/ClickHouse/ClickHouse/pull/62000) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `ReplicatedMergeTree`에서 `OPTIMIZE FINAL`은 이제 현재 진행 중인 머지가 완료될 때까지 기다린 다음, 최종 머지를 다시 예약합니다. 이로써 일반적인 `MergeTree` 동작에 더 가까워집니다. [#62067](https://github.com/ClickHouse/ClickHouse/pull/62067) ([Nikita Taranov](https://github.com/nickitat)).
* Hive Text File에서 데이터를 읽을 때 입력 필드 수를 조정하기 위해 첫 번째 줄을 사용했는데, 경우에 따라 첫 번째 줄의 필드 수가 정의된 Hive 테이블과 일치하지 않았습니다. 예를 들어 Hive 테이블이 `test_tbl(a Int32, b Int32, c Int32)`처럼 3개의 컬럼을 갖도록 정의되어 있지만 텍스트 파일의 첫 번째 줄에는 필드가 2개만 있을 수 있습니다. 이런 경우 입력 필드 수가 2개로 조정되며, 텍스트 파일의 다음 줄에 필드가 3개 있더라도 세 번째 필드는 읽히지 않고 기본값 0으로 설정되는데, 이는 올바르지 않습니다. [#62086](https://github.com/ClickHouse/ClickHouse/pull/62086) ([KevinyhZou](https://github.com/KevinyhZou)).
* `CREATE AS`는 테이블 comment를 복사합니다. [#62117](https://github.com/ClickHouse/ClickHouse/pull/62117) ([Pablo Marcos](https://github.com/pamarcos)).
* zookeeper 테이블에 쿼리 진행 정보가 추가되었습니다. [#62152](https://github.com/ClickHouse/ClickHouse/pull/62152) ([JackyWoo](https://github.com/JackyWoo)).
* 서버 전역에서 trace collector(Real 및 CPU)를 활성화할 수 있는 기능이 추가되었습니다. [#62189](https://github.com/ClickHouse/ClickHouse/pull/62189) ([alesapin](https://github.com/alesapin)).
* 설정 `lightweight_deletes_sync`를 추가했습니다(기본값: 2 - 모든 레플리카가 동기적으로 완료될 때까지 대기). 이 설정은 `mutations_sync` 설정과 유사하지만 경량한 삭제의 동작에만 영향을 줍니다. [#62195](https://github.com/ClickHouse/ClickHouse/pull/62195) ([Anton Popov](https://github.com/CurtizJ)).
* 사용자 지정 설정 값을 파싱할 때 Bool과 정수를 구분합니다: `SET custom_a = true; SET custom_b = 1;`. [#62206](https://github.com/ClickHouse/ClickHouse/pull/62206) ([Vitaly Baranov](https://github.com/vitlibar)).
* AWS Private Link Interface 엔드포인트를 통한 S3 액세스를 지원합니다. [#60021](https://github.com/ClickHouse/ClickHouse/issues/60021), [#31074](https://github.com/ClickHouse/ClickHouse/issues/31074) 및 [#53761](https://github.com/ClickHouse/ClickHouse/issues/53761)을 해결합니다. [#62208](https://github.com/ClickHouse/ClickHouse/pull/62208) ([Arthur Passos](https://github.com/arthurpassos)).
* clickhouse-client에서 UDF용 디렉터리가 없더라도 생성하지 않습니다. 이로써 [#59597](https://github.com/ClickHouse/ClickHouse/issues/59597)가 해결됩니다. [#62366](https://github.com/ClickHouse/ClickHouse/pull/62366) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이제 쿼리 캐시는 시스템 테이블(`system.*`, `information_schema.*`, `INFORMATION_SCHEMA.*`)에 대한 쿼리의 결과를 더 이상 캐시하지 않습니다. [#62376](https://github.com/ClickHouse/ClickHouse/pull/62376) ([Robert Schulze](https://github.com/rschu1ze)).
* `MOVE PARTITION TO TABLE` 쿼리는 파트 수 제한 초과를 방지하기 위해 지연될 수 있으며, `TOO_MANY_PARTS` 예외를 발생시킬 수도 있습니다. `INSERT` 쿼리와 동일한 설정 및 제한이 적용됩니다(`max_parts_in_total`, `parts_to_delay_insert`, `parts_to_throw_insert`, `inactive_parts_to_throw_insert`, `inactive_parts_to_delay_insert`, `max_avg_part_size_for_too_many_parts`, `min_delay_to_insert_ms`, `max_delay_to_insert` 설정 참조). [#62420](https://github.com/ClickHouse/ClickHouse/pull/62420) ([Sergei Trifonov](https://github.com/serxa)).
* macOS의 기본 설치 디렉터리를 `/usr/bin`에서 `/usr/local/bin`으로 변경했습니다. 이는 macOS El Capitan(2015)에서 도입된 Apple의 System Integrity Protection으로 인해 `sudo`를 사용하더라도 `/usr/bin`에 쓸 수 없기 때문입니다. [#62489](https://github.com/ClickHouse/ClickHouse/pull/62489) ([haohang](https://github.com/yokofly)).
* transform이 항상 첫 번째 일치 항목을 반환하도록 변경했습니다. [#62518](https://github.com/ClickHouse/ClickHouse/pull/62518) ([Raúl Marín](https://github.com/Algunenano)).
* system table `blob_storage_log`에 누락되어 있던 `hostname` 컬럼을 추가했습니다. [#62456](https://github.com/ClickHouse/ClickHouse/pull/62456) ([Jayme Bird](https://github.com/jaymebrd)).
* 다른 system tables와의 일관성을 위해 `system.backup_log`에 이제 `event_time` 컬럼이 추가되었습니다. [#62541](https://github.com/ClickHouse/ClickHouse/pull/62541) ([Jayme Bird](https://github.com/jaymebrd)).
* 테이블 `system.backup_log`은 이제 다른 `_log` 테이블 엔진과 마찬가지로 `event_date, event_time`인 "default" 정렬 키를 사용합니다. [#62667](https://github.com/ClickHouse/ClickHouse/pull/62667) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `RESTORE` 실행 중 테이블 DEFAULT 표현식을 평가하지 않도록 했습니다. [#62601](https://github.com/ClickHouse/ClickHouse/pull/62601) ([Vitaly Baranov](https://github.com/vitlibar)).
* S3 스토리지와 백업에도 s3 disk와 같은 기본 keep alive 설정이 필요합니다. [#62648](https://github.com/ClickHouse/ClickHouse/pull/62648) ([Sema Checherinda](https://github.com/CheSema)).
* 단일 테이블의 서로 다른 컨슈머가 남긴 로그 메시지를 구분할 수 있도록, 로그 메시지에 librdkafka(버그가 많은 것으로 악명 높은 그 C 라이브러리)의 클라이언트 식별자를 추가했습니다. [#62813](https://github.com/ClickHouse/ClickHouse/pull/62813) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 복제된 데이터베이스 ZooKeeper 경로에서 특수 매크로 `{uuid}` 및 `{database}`를 허용합니다. [#62818](https://github.com/ClickHouse/ClickHouse/pull/62818) ([Vitaly Baranov](https://github.com/vitlibar)).
* HTTP 요청에서 인증 방식이 달라도 quota 키를 허용합니다. [#62842](https://github.com/ClickHouse/ClickHouse/pull/62842) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `clickhouse client` 및 `clickhouse local`에서 명령줄 인수 `--help`의 출력 상세 수준을 낮췄습니다. 이전 출력은 이제 `--help --verbose`로 생성됩니다. [#62973](https://github.com/ClickHouse/ClickHouse/pull/62973) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* MySQL 8.3에서 `log_bin_use_v1_row_events`가 제거되어, 이에 맞게 실험적 `MaterializedMySQL` 엔진을 조정했습니다 [#60479](https://github.com/ClickHouse/ClickHouse/issues/60479). [#63101](https://github.com/ClickHouse/ClickHouse/pull/63101) ([Eugene Klimov](https://github.com/Slach)). 작성자: Nikolay Yankin.

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

* Rust 의존성을 벤더링하여, (재미 삼아 넣은 소소한 기능에 사용하는) Rust 코드를 C++와 비슷하게 무리 없이 빌드할 수 있게 했습니다. [#62297](https://github.com/ClickHouse/ClickHouse/pull/62297) ([Raúl Marín](https://github.com/Algunenano)).
* 이제 ClickHouse는 BoringSSL 대신 OpenSSL 3.2를 사용합니다. [#59870](https://github.com/ClickHouse/ClickHouse/pull/59870) ([Robert Schulze](https://github.com/rschu1ze)). OpenSSL은 전반적인 호환성은 더 뛰어나지만, 엔지니어링 측면에서는 대체로 더 미흡하다는 점에 유의하십시오(예를 들어, 패치가 필요했던 sanitizer 보고서가 있었고, 생성된 파일이 포함된 빌드 시스템도 복잡합니다).
* 스트레스 테스트에서는 1/2 확률로 DROP 쿼리를 무시하고, Memory/JOIN 테이블에 대한 업그레이드 검사에서는 DROP을 무시하는 대신 TRUNCATE를 사용합니다. [#61476](https://github.com/ClickHouse/ClickHouse/pull/61476) ([Kruglov Pavel](https://github.com/Avogar)).
* Keeper Docker image의 /etc/clickhouse-keeper 및 /var/log/clickhouse-keeper 볼륨을 제거합니다. [#61683](https://github.com/ClickHouse/ClickHouse/pull/61683) ([Tristan](https://github.com/Tristan971)).
* 분석기가 기본으로 활성화되면서 더 이상 해당되지 않는 모든 이슈에 대한 테스트를 추가합니다. Closes: [#55794](https://github.com/ClickHouse/ClickHouse/issues/55794) Closes: [#49472](https://github.com/ClickHouse/ClickHouse/issues/49472) Closes: [#44414](https://github.com/ClickHouse/ClickHouse/issues/44414) Closes: [#13843](https://github.com/ClickHouse/ClickHouse/issues/13843) Closes: [#55803](https://github.com/ClickHouse/ClickHouse/issues/55803) Closes: [#48308](https://github.com/ClickHouse/ClickHouse/issues/48308) Closes: [#45535](https://github.com/ClickHouse/ClickHouse/issues/45535) Closes: [#44365](https://github.com/ClickHouse/ClickHouse/issues/44365) Closes: [#44153](https://github.com/ClickHouse/ClickHouse/issues/44153) Closes: [#42399](https://github.com/ClickHouse/ClickHouse/issues/42399) Closes: [#27115](https://github.com/ClickHouse/ClickHouse/issues/27115) Closes: [#23162](https://github.com/ClickHouse/ClickHouse/issues/23162) Closes: [#15395](https://github.com/ClickHouse/ClickHouse/issues/15395) Closes: [#15411](https://github.com/ClickHouse/ClickHouse/issues/15411) Closes: [#14978](https://github.com/ClickHouse/ClickHouse/issues/14978) Closes: [#17319](https://github.com/ClickHouse/ClickHouse/issues/17319) Closes: [#11813](https://github.com/ClickHouse/ClickHouse/issues/11813) Closes: [#13210](https://github.com/ClickHouse/ClickHouse/issues/13210) Closes: [#23053](https://github.com/ClickHouse/ClickHouse/issues/23053) Closes: [#37729](https://github.com/ClickHouse/ClickHouse/issues/37729) Closes: [#32639](https://github.com/ClickHouse/ClickHouse/issues/32639) Closes: [#9954](https://github.com/ClickHouse/ClickHouse/issues/9954) Closes: [#41964](https://github.com/ClickHouse/ClickHouse/issues/41964) Closes: [#54317](https://github.com/ClickHouse/ClickHouse/issues/54317) Closes: [#7520](https://github.com/ClickHouse/ClickHouse/issues/7520) Closes: [#36973](https://github.com/ClickHouse/ClickHouse/issues/36973) Closes: [#40955](https://github.com/ClickHouse/ClickHouse/issues/40955) Closes: [#19687](https://github.com/ClickHouse/ClickHouse/issues/19687) Closes: [#23104](https://github.com/ClickHouse/ClickHouse/issues/23104) Closes: [#21584](https://github.com/ClickHouse/ClickHouse/issues/21584) Closes: [#23344](https://github.com/ClickHouse/ClickHouse/issues/23344) Closes: [#22627](https://github.com/ClickHouse/ClickHouse/issues/22627) Closes: [#10276](https://github.com/ClickHouse/ClickHouse/issues/10276) Closes: [#19687](https://github.com/ClickHouse/ClickHouse/issues/19687) Closes: [#4567](https://github.com/ClickHouse/ClickHouse/issues/4567) Closes: [#17710](https://github.com/ClickHouse/ClickHouse/issues/17710) Closes: [#11068](https://github.com/ClickHouse/ClickHouse/issues/11068) Closes: [#24395](https://github.com/ClickHouse/ClickHouse/issues/24395) Closes: [#23416](https://github.com/ClickHouse/ClickHouse/issues/23416) Closes: [#23162](https://github.com/ClickHouse/ClickHouse/issues/23162) Closes: [#25655](https://github.com/ClickHouse/ClickHouse/issues/25655) Closes: [#11757](https://github.com/ClickHouse/ClickHouse/issues/11757) Closes: [#6571](https://github.com/ClickHouse/ClickHouse/issues/6571) Closes: [#4432](https://github.com/ClickHouse/ClickHouse/issues/4432) Closes: [#8259](https://github.com/ClickHouse/ClickHouse/issues/8259) Closes: [#9233](https://github.com/ClickHouse/ClickHouse/issues/9233) Closes: [#14699](https://github.com/ClickHouse/ClickHouse/issues/14699) Closes: [#27068](https://github.com/ClickHouse/ClickHouse/issues/27068) Closes: [#28687](https://github.com/ClickHouse/ClickHouse/issues/28687) Closes: [#28777](https://github.com/ClickHouse/ClickHouse/issues/28777) Closes: [#29734](https://github.com/ClickHouse/ClickHouse/issues/29734) Closes: [#61238](https://github.com/ClickHouse/ClickHouse/issues/61238) Closes: [#33825](https://github.com/ClickHouse/ClickHouse/issues/33825) Closes: [#35608](https://github.com/ClickHouse/ClickHouse/issues/35608) Closes: [#29838](https://github.com/ClickHouse/ClickHouse/issues/29838) Closes: [#35652](https://github.com/ClickHouse/ClickHouse/issues/35652) Closes: [#36189](https://github.com/ClickHouse/ClickHouse/issues/36189) Closes: [#39634](https://github.com/ClickHouse/ClickHouse/issues/39634) Closes: [#47432](https://github.com/ClickHouse/ClickHouse/issues/47432) Closes: [#54910](https://github.com/ClickHouse/ClickHouse/issues/54910) Closes: [#57321](https://github.com/ClickHouse/ClickHouse/issues/57321) Closes: [#59154](https://github.com/ClickHouse/ClickHouse/issues/59154) Closes: [#61014](https://github.com/ClickHouse/ClickHouse/issues/61014) Closes: [#61950](https://github.com/ClickHouse/ClickHouse/issues/61950) Closes: [#55647](https://github.com/ClickHouse/ClickHouse/issues/55647) Closes: [#61947](https://github.com/ClickHouse/ClickHouse/issues/61947). [#62185](https://github.com/ClickHouse/ClickHouse/pull/62185) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 더 이상 관련이 없거나 분석기로 해결된 이슈의 테스트를 추가합니다. 해결: [#58985](https://github.com/ClickHouse/ClickHouse/issues/58985) 해결: [#59549](https://github.com/ClickHouse/ClickHouse/issues/59549) 해결: [#36963](https://github.com/ClickHouse/ClickHouse/issues/36963) 해결: [#39453](https://github.com/ClickHouse/ClickHouse/issues/39453) 해결: [#56521](https://github.com/ClickHouse/ClickHouse/issues/56521) 해결: [#47552](https://github.com/ClickHouse/ClickHouse/issues/47552) 해결: [#56503](https://github.com/ClickHouse/ClickHouse/issues/56503) 해결: [#59101](https://github.com/ClickHouse/ClickHouse/issues/59101) 해결: [#50271](https://github.com/ClickHouse/ClickHouse/issues/50271) 해결: [#54954](https://github.com/ClickHouse/ClickHouse/issues/54954) 해결: [#56466](https://github.com/ClickHouse/ClickHouse/issues/56466) 해결: [#11000](https://github.com/ClickHouse/ClickHouse/issues/11000) 해결: [#10894](https://github.com/ClickHouse/ClickHouse/issues/10894) 해결: [https://github.com/ClickHouse/ClickHouse/issues/448](https://github.com/ClickHouse/ClickHouse/issues/448) 해결: [#8030](https://github.com/ClickHouse/ClickHouse/issues/8030) 해결: [#32139](https://github.com/ClickHouse/ClickHouse/issues/32139) 해결: [#47288](https://github.com/ClickHouse/ClickHouse/issues/47288) 해결: [#50705](https://github.com/ClickHouse/ClickHouse/issues/50705) 해결: [#54511](https://github.com/ClickHouse/ClickHouse/issues/54511) 해결: [#55466](https://github.com/ClickHouse/ClickHouse/issues/55466) 해결: [#58500](https://github.com/ClickHouse/ClickHouse/issues/58500) 해결: [#39923](https://github.com/ClickHouse/ClickHouse/issues/39923) 해결: [#39855](https://github.com/ClickHouse/ClickHouse/issues/39855) 해결: [#4596](https://github.com/ClickHouse/ClickHouse/issues/4596) 해결: [#47422](https://github.com/ClickHouse/ClickHouse/issues/47422) 해결: [#33000](https://github.com/ClickHouse/ClickHouse/issues/33000) 해결: [#14739](https://github.com/ClickHouse/ClickHouse/issues/14739) 해결: [#44039](https://github.com/ClickHouse/ClickHouse/issues/44039) 해결: [#8547](https://github.com/ClickHouse/ClickHouse/issues/8547) 해결: [#22923](https://github.com/ClickHouse/ClickHouse/issues/22923) 해결: [#23865](https://github.com/ClickHouse/ClickHouse/issues/23865) 해결: [#29748](https://github.com/ClickHouse/ClickHouse/issues/29748) 해결: [#4222](https://github.com/ClickHouse/ClickHouse/issues/4222). [#62457](https://github.com/ClickHouse/ClickHouse/pull/62457) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* OpenSSL이 동적으로 링크될 때 발생하는 빌드 오류를 수정했습니다(참고: 이는 일반적으로 지원되지 않으며, IBM의 s390x 플랫폼에서만 필요합니다). [#62888](https://github.com/ClickHouse/ClickHouse/pull/62888) ([Harry Lee](https://github.com/HarryLeeIBM)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release-6">
  #### 버그 수정 (공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* quorum 삽입 트랜잭션을 롤백할 때 발생하는 논리 오류를 수정했습니다. [#61953](https://github.com/ClickHouse/ClickHouse/pull/61953) ([Han Fei](https://github.com/hanfei1991)).
* COUNT(\*)와 FILTER 절을 함께 사용할 때 발생하는 파서 오류를 수정했습니다 [#61357](https://github.com/ClickHouse/ClickHouse/pull/61357) ([Duc Canh Le](https://github.com/canhld94)).
* `group_by_use_nulls` + grouping sets + 분석기 + 구체화/상수 관련 논리 오류 수정 [#61567](https://github.com/ClickHouse/ClickHouse/pull/61567) ([Kruglov Pavel](https://github.com/Avogar)).
* 이동된 파트를 제거하기 전에 머지를 취소합니다 [#61610](https://github.com/ClickHouse/ClickHouse/pull/61610) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* Apache Arrow의 abort 문제 수정 [#61720](https://github.com/ClickHouse/ClickHouse/pull/61720) ([Kruglov Pavel](https://github.com/Avogar)).
* 특정 디스크에 해당하는 올바른 경로에서 `convert_to_replicated` 플래그를 검색하도록 수정했습니다 [#61769](https://github.com/ClickHouse/ClickHouse/pull/61769) ([Kirill](https://github.com/kirillgarbar)).
* distributed\_foreground\_insert/distributed\_background\_insert\_batch의 연결에서 발생할 수 있는 데이터 레이스 문제 수정 [#61867](https://github.com/ClickHouse/ClickHouse/pull/61867) ([Azat Khuzhin](https://github.com/azat)).
* CANNOT\_PARSE\_ESCAPE\_SEQUENCE 오류를 파싱 오류로 표시해 행 기반 입력 형식에서 건너뛸 수 있도록 개선 [#61883](https://github.com/ClickHouse/ClickHouse/pull/61883) ([Kruglov Pavel](https://github.com/Avogar)).
* `http_wait_end_of_query`를 사용할 때 HTTP에서 예외 메시지가 출력 형식으로 기록되는 문제를 수정했습니다 [#61951](https://github.com/ClickHouse/ClickHouse/pull/61951) ([Kruglov Pavel](https://github.com/Avogar)).
* JSONExtact 함수와 함께 사용할 때 발생하는 LowCardinality 문제를 올바르게 수정 [#61957](https://github.com/ClickHouse/ClickHouse/pull/61957) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* Row Policy에 표현식이 없을 경우 Engine Merge 충돌 [#61971](https://github.com/ClickHouse/ClickHouse/pull/61971) ([Ilya Golshtein](https://github.com/ilejn)).
* WriteBufferAzureBlobStorage 소멸자에서 발생하는 미처리 예외를 수정했습니다 [#61988](https://github.com/ClickHouse/ClickHouse/pull/61988) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* ReplicatedMergeTree에서 컬럼 정의 없는 CREATE TABLE 문제 수정 [#62040](https://github.com/ClickHouse/ClickHouse/pull/62040) ([Azat Khuzhin](https://github.com/azat)).
* 복합 세그먼트 분할 키에서 optimize\_skip\_unused\_shards\_rewrite\_in 관련 문제 수정 [#62047](https://github.com/ClickHouse/ClickHouse/pull/62047) ([Azat Khuzhin](https://github.com/azat)).
* 리디렉션될 때 ReadWriteBufferFromHTTP가 올바른 Host 헤더를 설정하도록 수정했습니다 [#62068](https://github.com/ClickHouse/ClickHouse/pull/62068) ([Sema Checherinda](https://github.com/CheSema)).
* 외부 테이블에서 Bool 데이터 타입을 파싱하지 못하던 문제 수정 [#62115](https://github.com/ClickHouse/ClickHouse/pull/62115) ([Duc Canh Le](https://github.com/canhld94)).
* 분석기: 쿼리 매개변수 해석 관련 문제 수정 [#62186](https://github.com/ClickHouse/ClickHouse/pull/62186) ([Dmitry Novik](https://github.com/novikd)).
* 읽기 전용 상태에서의 파트 복원 문제 수정 [#62207](https://github.com/ClickHouse/ClickHouse/pull/62207) ([Vitaly Baranov](https://github.com/vitlibar)).
* SQL UDF가 포함된 인덱스 정의의 충돌 문제 수정 [#62225](https://github.com/ClickHouse/ClickHouse/pull/62225) ([vdimir](https://github.com/vdimir)).
* 분석기에서 generateRandom의 NULL 랜덤 시드 문제를 수정했습니다. [#62248](https://github.com/ClickHouse/ClickHouse/pull/62248) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* Distinct Transfom에서 const 컬럼이 올바르게 처리되도록 수정 [#62250](https://github.com/ClickHouse/ClickHouse/pull/62250) ([Antonio Andelic](https://github.com/antonio2368)).
* FINAL 수정자를 사용하는 쿼리의 Parts Splitter 수정 [#62268](https://github.com/ClickHouse/ClickHouse/pull/62268) ([Nikita Taranov](https://github.com/nickitat)).
* 분석기: 매개변수화된 뷰에 대한 별칭 해석 수정 [#62274](https://github.com/ClickHouse/ClickHouse/pull/62274) ([Dmitry Novik](https://github.com/novikd)).
* 분석기: 상위 스코프에서의 이름 해석 문제 수정 [#62281](https://github.com/ClickHouse/ClickHouse/pull/62281) ([Dmitry Novik](https://github.com/novikd)).
* 널 허용 네이티브가 아닌 숫자 컬럼의 argMax 수정 [#62285](https://github.com/ClickHouse/ClickHouse/pull/62285) ([Raúl Marín](https://github.com/Algunenano)).
* Ordinary 데이터베이스에서 materialized view의 BACKUP 및 RESTORE 문제 수정 [#62295](https://github.com/ClickHouse/ClickHouse/pull/62295) ([Vitaly Baranov](https://github.com/vitlibar)).
* Context의 스칼라 값에서 발생하던 데이터 레이스를 수정했습니다 [#62305](https://github.com/ClickHouse/ClickHouse/pull/62305) ([Kruglov Pavel](https://github.com/Avogar)).
* materialized view의 primary key 수정 [#62319](https://github.com/ClickHouse/ClickHouse/pull/62319) ([Murat Khairulin](https://github.com/mxwell)).
* 지원되지 않는 테이블에 대해서는 멀티스레드 삽입 파이프라인을 빌드하지 않음 [#62333](https://github.com/ClickHouse/ClickHouse/pull/62333) ([vdimir](https://github.com/vdimir)).
* 분산 쿼리에서 위치 인수를 사용할 때 발생하는 분석기 문제 수정 [#62362](https://github.com/ClickHouse/ClickHouse/pull/62362) ([flynn](https://github.com/ucasfl)).
* 분석기에서 Merge 엔진의 additional\_table\_filters로부터의 filter pushdown 문제를 수정했습니다 [#62398](https://github.com/ClickHouse/ClickHouse/pull/62398) ([Kruglov Pavel](https://github.com/Avogar)).
* 분석기에서 테이블 쿼리의 GLOBAL IN 문제를 수정했습니다. [#62409](https://github.com/ClickHouse/ClickHouse/pull/62409) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 파티션별 쓰기 시 s3/hdfs/azure 엔진에서 설정 truncate\_on\_insert/create\_new\_file\_on\_insert를 준수하도록 수정 [#62425](https://github.com/ClickHouse/ClickHouse/pull/62425) ([Kruglov Pavel](https://github.com/Avogar)).
* AzureBlobStorage용 Backup 복원 경로 수정 [#62447](https://github.com/ClickHouse/ClickHouse/pull/62447) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* SimpleSquashingChunksTransform 문제 수정 [#62451](https://github.com/ClickHouse/ClickHouse/pull/62451) ([Nikita Taranov](https://github.com/nickitat)).
* 중첩 람다의 캡처 문제를 수정했습니다. [#62462](https://github.com/ClickHouse/ClickHouse/pull/62462) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 재귀 타입이 포함된 protobuf를 읽을 때 충돌이 발생하지 않도록 개선했습니다 [#62506](https://github.com/ClickHouse/ClickHouse/pull/62506) ([Raúl Marín](https://github.com/Algunenano)).
* 파티션을 자기 자신으로 이동할 때 발생하던 버그를 수정했습니다 [#62524](https://github.com/ClickHouse/ClickHouse/pull/62524) ([helifu](https://github.com/helifu)).
* LIMIT의 스칼라 서브쿼리 수정 [#62567](https://github.com/ClickHouse/ClickHouse/pull/62567) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 어차피 별로 권장하지도 않는 실험적이며 지원되지 않는 Hive 엔진의 세그폴트를 수정했습니다 [#62578](https://github.com/ClickHouse/ClickHouse/pull/62578) ([Nikolay Degterinsky](https://github.com/evillique)).
* groupArraySorted의 메모리 누수 문제를 수정했습니다 [#62597](https://github.com/ClickHouse/ClickHouse/pull/62597) ([Antonio Andelic](https://github.com/antonio2368)).
* largestTriangleThreeBuckets에서 발생하던 충돌 수정 [#62646](https://github.com/ClickHouse/ClickHouse/pull/62646) ([Raúl Marín](https://github.com/Algunenano)).
* 더 높은 해상도에서 tumble\[Start,End] 및 hop\[Start,End] 문제를 수정했습니다 [#62705](https://github.com/ClickHouse/ClickHouse/pull/62705) ([Jordi Villar](https://github.com/jrdi)).
* argMin/argMax 콤비네이터 상태 수정 [#62708](https://github.com/ClickHouse/ClickHouse/pull/62708) ([Raúl Marín](https://github.com/Algunenano)).
* 캐시 잠금 경합 최적화로 인해 캐시의 임시 데이터 처리가 실패하던 문제를 수정했습니다 [#62715](https://github.com/ClickHouse/ClickHouse/pull/62715) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 함수 `mergeTreeIndex`에서 발생하던 충돌을 수정했습니다 [#62762](https://github.com/ClickHouse/ClickHouse/pull/62762) ([Anton Popov](https://github.com/CurtizJ)).
* 수정: 업데이트: 중첩된 materialized 컬럼: 크기 검사 관련 수정 [#62773](https://github.com/ClickHouse/ClickHouse/pull/62773) ([Eliot Hautefeuille](https://github.com/hileef)).
* 분석기 사용 시 CTE에서 FINAL 수정자가 제대로 적용되지 않던 문제를 수정했습니다 [#62811](https://github.com/ClickHouse/ClickHouse/pull/62811) ([Duc Canh Le](https://github.com/canhld94)).
* `JSON` 포맷과 HTTP 인터페이스 사용 시 `formatRow` 함수에서 발생하던 충돌 수정 [#62840](https://github.com/ClickHouse/ClickHouse/pull/62840) ([Anton Popov](https://github.com/CurtizJ)).
* Azure: endpoint 객체로부터 최종 URL을 생성하는 문제 수정 [#62850](https://github.com/ClickHouse/ClickHouse/pull/62850) ([Daniel Pozo Escalona](https://github.com/danipozo)).
* GCD 코덱 수정 [#62853](https://github.com/ClickHouse/ClickHouse/pull/62853) ([Nikita Taranov](https://github.com/nickitat)).
* hyperrectangle의 LowCardinality(널 허용) 키 문제 수정 [#62866](https://github.com/ClickHouse/ClickHouse/pull/62866) ([Amos Bird](https://github.com/amosbird)).
* 입력 값이 UInt32 범위를 초과할 때 Joda 문법의 fromUnixtimestamp를 수정 [#62901](https://github.com/ClickHouse/ClickHouse/pull/62901) ([KevinyhZou](https://github.com/KevinyhZou)).
* sum(nullable)에서 optimize\_rewrite\_aggregate\_function\_with\_if를 비활성화합니다 [#62912](https://github.com/ClickHouse/ClickHouse/pull/62912) ([Raúl Marín](https://github.com/Algunenano)).
* 소스 테이블의 컬럼 타입이 서로 다른 경우 StorageBuffer의 PREWHERE를 수정했습니다. [#62916](https://github.com/ClickHouse/ClickHouse/pull/62916) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* cache의 임시 데이터에서 cache 키 디렉터리 생성 실패를 잘못 처리하던 문제 수정 [#62925](https://github.com/ClickHouse/ClickHouse/pull/62925) ([Kseniia Sumarokova](https://github.com/kssenii)).
* gRPC: IPv6 피어 연결 시 발생하는 크래시 수정 [#62978](https://github.com/ClickHouse/ClickHouse/pull/62978) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* 복제 fetch 중 발생할 수 있는 CHECKSUM\_DOESNT\_MATCH(및 기타 문제) 수정 [#62987](https://github.com/ClickHouse/ClickHouse/pull/62987) ([Azat Khuzhin](https://github.com/azat)).
* 캐시의 임시 데이터에서 포착되지 않은 예외로 종료되던 문제를 수정했습니다 [#62998](https://github.com/ClickHouse/ClickHouse/pull/62998) ([Kseniia Sumarokova](https://github.com/kssenii)).
* optimize\_rewrite\_aggregate\_function\_with\_if의 암시적 CAST 문제 수정 [#62999](https://github.com/ClickHouse/ClickHouse/pull/62999) ([Raúl Marín](https://github.com/Algunenano)).
* \~RestorerFromBackup에서 처리되지 않은 예외를 수정 [#63040](https://github.com/ClickHouse/ClickHouse/pull/63040) ([Vitaly Baranov](https://github.com/vitlibar)).
* 보조 쿼리의 `GROUP BY` 키에서 server 상수를 제거하지 않도록 했습니다. [#63047](https://github.com/ClickHouse/ClickHouse/pull/63047) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 함수 abs의 단조성에 대한 잘못된 판정 수정 [#63097](https://github.com/ClickHouse/ClickHouse/pull/63097) ([Duc Canh Le](https://github.com/canhld94)).
* MongoDB 엔진의 SSL 핸드셰이크에 사용할 서버 이름 설정 [#63122](https://github.com/ClickHouse/ClickHouse/pull/63122) ([Alexander Gololobov](https://github.com/davenger)).
* MongoDB wire 프로토콜 버전 확인 시 "config" 대신 사용자 지정 DB를 사용하도록 변경 [#63126](https://github.com/ClickHouse/ClickHouse/pull/63126) ([Alexander Gololobov](https://github.com/davenger)).

### <a id="243" /> ClickHouse 릴리스 24.3 LTS, 2024-03-27. [발표 자료](https://presentations.clickhouse.com/2024-release-24.3/), [동영상](https://www.youtube.com/watch?v=FGhdXXXTuTg)

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

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

* `allow_experimental_analyzer` 설정은 기본적으로 활성화되어 있으며, 더 나은 호환성과 더 완전한 기능을 제공하는 새로운 구현으로 쿌리 분석을 전환합니다. "분석기" 기능은 이제 experimental이 아니라 베타로 간주됩니다. `compatibility`를 `24.2`로 설정하거나 `allow_experimental_analyzer` 설정을 비활성화하면 이전 동작으로 되돌릴 수 있습니다. [YouTube 동영상](https://www.youtube.com/watch?v=zhrOYQpgvkk)을 시청하십시오.
* ClickHouse는 일반적으로 UTF-8로 간주되는 String 데이터 타입에서 임의의 binary 데이터를 허용합니다. Parquet/ORC/Arrow의 String은 UTF-8만 지원합니다. 따라서 ClickHouse의 String 데이터 타입에 대해 Arrow의 어떤 데이터 타입을 사용할지, 즉 String 또는 Binary를 선택할 수 있습니다. 이는 `output_format_parquet_string_as_string`, `output_format_orc_string_as_string`, `output_format_arrow_string_as_string` 설정으로 제어됩니다. Binary가 더 정확하고 호환성 측면에서도 더 적합하지만, 대부분의 경우 기본값으로 String을 사용하면 사용자 기대에 더 잘 부합합니다. Parquet/ORC/Arrow는 lz4와 zstd를 포함한 다양한 압축 방식(Compression method)을 지원합니다. ClickHouse는 이러한 모든 압축 방식을 지원합니다. 일부 성능이 떨어지는 도구는 더 빠른 `lz4` 압축 방식을 지원하지 않으므로, 기본값으로 `zstd`를 설정했습니다. 이는 `output_format_parquet_compression_method`, `output_format_orc_compression_method`, `output_format_arrow_compression_method` 설정으로 제어됩니다. Parquet와 ORC의 기본값은 `zstd`로 변경했지만 Arrow는 변경하지 않았습니다(Arrow는 저수준 사용에 중점을 두고 있기 때문입니다). [#61817](https://github.com/ClickHouse/ClickHouse/pull/61817) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 새 ClickHouse 버전에서는 `geoDistance`, `greatCircleDistance`, `greatCircleAngle` 함수의 모든 인수가 Float64인 경우, 내부 계산과 반환 타입에 64비트 배정밀도 부동소수점 데이터 타입을 사용합니다. 이로써 [#58476](https://github.com/ClickHouse/ClickHouse/issues/58476)가 해결되었습니다. 이전 버전에서는 이 함수들이 항상 Float32를 사용했습니다. `geo_distance_returns_float64_on_float64_arguments`를 `false`로 설정하거나 `compatibility`를 `24.2` 이하로 설정하면 이전 동작으로 전환할 수 있습니다. [#61848](https://github.com/ClickHouse/ClickHouse/pull/61848) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [Geet Patel](https://github.com/geetptl)과 공동 작성했습니다.
* 더 이상 사용되지 않는 인메모리 데이터 파트는 23.5 버전부터 Deprecated 상태였고, 23.10 버전부터는 지원이 중단되었습니다. 이제 남아 있던 관련 코드도 제거되었습니다. [#55186](https://github.com/ClickHouse/ClickHouse/issues/55186) 및 [#45409](https://github.com/ClickHouse/ClickHouse/issues/45409)의 후속 작업입니다. 인메모리 데이터 파트는 23.5 버전 이전에만 사용할 수 있었고, MergeTree 테이블에 해당 SETTINGS를 지정해 수동으로 활성화한 경우에만 사용 가능했으므로, 실제로 사용했을 가능성은 높지 않습니다. 인메모리 데이터 파트가 있는지 확인하려면 다음 쿼리를 실행하세요: `SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type`. 인메모리 데이터 파트 사용을 비활성화하려면 `ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT`를 실행하세요. 이전 ClickHouse 릴리스에서 업그레이드하기 전에 먼저 인메모리 데이터 파트가 없는지 확인하십시오. 인메모리 데이터 파트가 있다면 먼저 이를 비활성화하고, 인메모리 데이터 파트가 모두 없어질 때까지 기다린 다음 업그레이드를 계속하십시오. [#61127](https://github.com/ClickHouse/ClickHouse/pull/61127) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `system.zookeeper` 테이블에서 duration이 마이크로초 해상도임을 반영하여 컬럼 이름을 `duration_ms`에서 `duration_microseconds`로 변경했습니다. [#60774](https://github.com/ClickHouse/ClickHouse/pull/60774) ([Duc Canh Le](https://github.com/canhld94)).
* 쿼리 수준 설정 `async_insert`와 `deduplicate_blocks_in_dependent_materialized_views`가 함께 활성화된 경우 들어오는 INSERT 쿼리를 거부합니다. 이 동작은 `throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert` 설정으로 제어되며, 기본적으로 활성화되어 있습니다. 이는 [https://github.com/ClickHouse/ClickHouse/pull/59915의](https://github.com/ClickHouse/ClickHouse/pull/59915의) 차단을 해소하기 위해 필요한 [https://github.com/ClickHouse/ClickHouse/pull/59699의](https://github.com/ClickHouse/ClickHouse/pull/59699의) 후속 작업입니다. [#60888](https://github.com/ClickHouse/ClickHouse/pull/60888) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 유틸리티 `clickhouse-copier`가 GitHub의 별도 리포지토리로 이동되었습니다: [https://github.com/ClickHouse/copier](https://github.com/ClickHouse/copier). 더 이상 번들에 포함되지 않지만, 별도로 다운로드하여 계속 사용할 수 있습니다. 다음 이슈를 해결합니다: [#60734](https://github.com/ClickHouse/ClickHouse/issues/60734) 다음 이슈를 해결합니다: [#60540](https://github.com/ClickHouse/ClickHouse/issues/60540) 다음 이슈를 해결합니다: [#60250](https://github.com/ClickHouse/ClickHouse/issues/60250) 다음 이슈를 해결합니다: [#52917](https://github.com/ClickHouse/ClickHouse/issues/52917) 다음 이슈를 해결합니다: [#51140](https://github.com/ClickHouse/ClickHouse/issues/51140) 다음 이슈를 해결합니다: [#47517](https://github.com/ClickHouse/ClickHouse/issues/47517) 다음 이슈를 해결합니다: [#47189](https://github.com/ClickHouse/ClickHouse/issues/47189) 다음 이슈를 해결합니다: [#46598](https://github.com/ClickHouse/ClickHouse/issues/46598) 다음 이슈를 해결합니다: [#40257](https://github.com/ClickHouse/ClickHouse/issues/40257) 다음 이슈를 해결합니다: [#36504](https://github.com/ClickHouse/ClickHouse/issues/36504) 다음 이슈를 해결합니다: [#35485](https://github.com/ClickHouse/ClickHouse/issues/35485) 다음 이슈를 해결합니다: [#33702](https://github.com/ClickHouse/ClickHouse/issues/33702) 다음 이슈를 해결합니다: [#26702](https://github.com/ClickHouse/ClickHouse/issues/26702).
* MySQL과의 호환성을 높이기 위해 호환성 별칭 `locate`는 이제 기본적으로 `(needle, haystack[, start_pos])` 순서의 인수를 받습니다. 이전 동작인 `(haystack, needle[, start_pos])`는 `function_locate_has_mysql_compatible_argument_order = 0`을 설정하여 복원할 수 있습니다. [#61092](https://github.com/ClickHouse/ClickHouse/pull/61092) ([Robert Schulze](https://github.com/rschu1ze)).
* 기본적으로 `MergeTree` 테이블의 `ORDER BY`에서는 `SimpleAggregateFunction`을 사용할 수 없도록 합니다(`AggregateFunction`이 금지되는 것과 마찬가지로, 비교할 수 없기 때문에 금지됩니다). 허용하려면 `allow_suspicious_primary_key`를 사용하십시오. [#61399](https://github.com/ClickHouse/ClickHouse/pull/61399) ([Azat Khuzhin](https://github.com/azat)).
* `Ordinary` 데이터베이스 엔진은 더 이상 사용이 권장되지 않습니다. 서버에서 이를 사용 중인 경우 clickhouse-client에 경고가 표시됩니다. 이로써 [#52229](https://github.com/ClickHouse/ClickHouse/issues/52229)가 해결되었습니다. [#56942](https://github.com/ClickHouse/ClickHouse/pull/56942) ([shabroo](https://github.com/shabroo)).

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

* 백업을 `zip`뿐 아니라 `tar` 형식으로도 읽고 쓸 수 있도록 지원합니다. [#59535](https://github.com/ClickHouse/ClickHouse/pull/59535) ([josh-hildred](https://github.com/josh-hildred)).
* S3 Express 버킷 지원을 구현했습니다. [#59965](https://github.com/ClickHouse/ClickHouse/pull/59965) ([Nikita Taranov](https://github.com/nickitat)).
* 다른 디스크의 파트를 ATTACH할 수 있도록 지원합니다(하드 링크 대신 복사를 사용). [#60112](https://github.com/ClickHouse/ClickHouse/pull/60112) ([Unalian](https://github.com/Unalian)).
* 크기 제한이 있는 `Memory` 테이블을 추가했습니다. `min_bytes_to_keep`, `max_bytes_to_keep`, `min_rows_to_keep`, `max_rows_to_keep` 설정으로 제어합니다. [#60612](https://github.com/ClickHouse/ClickHouse/pull/60612) ([Jake Bamrah](https://github.com/JakeBamrah)).
* 대기 중인 쿼리 수와 실행 중인 쿼리 수에 별도의 제한을 적용합니다. `async_load_databases`로 인해 대기하는 쿼리 수를 제한하는 새로운 서버 설정 `max_waiting_queries`를 추가했습니다. 기존의 실행 중인 쿼리 수 제한에는 이제 대기 중인 쿼리가 포함되지 않습니다. [#61053](https://github.com/ClickHouse/ClickHouse/pull/61053) ([Sergei Trifonov](https://github.com/serxa)).
* parser의 모든 키워드를 포함하는 테이블 `system.keywords`를 추가했습니다. 주로 더 나은 퍼징과 구문 강조를 위해 필요하며, 해당 용도로 사용될 예정입니다. [#51808](https://github.com/ClickHouse/ClickHouse/pull/51808) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `ATTACH PARTITION ALL` 지원을 추가했습니다. [#61107](https://github.com/ClickHouse/ClickHouse/pull/61107) ([Kirill Nikiforov](https://github.com/allmazz)).
* 새 함수 `getClientHTTPHeader`를 추가했습니다. 이로써 [#54665](https://github.com/ClickHouse/ClickHouse/issues/54665)가 해결되었습니다. @lingtaolf와 공동 작성했습니다. [#61820](https://github.com/ClickHouse/ClickHouse/pull/61820) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `generate_series`를 테이블 함수로 추가했습니다(기존 `numbers` 함수에 대한 PostgreSQL 호환 alias). 이 함수는 자연수의 등차수열로 이루어진 테이블을 생성합니다. [#59390](https://github.com/ClickHouse/ClickHouse/pull/59390) ([divanik](https://github.com/divanik)).
* 값의 개수와 오차를 반환하는 `topK`/`topkWeighed` 지원 모드를 추가했습니다. [#54508](https://github.com/ClickHouse/ClickHouse/pull/54508) ([UnamedRus](https://github.com/UnamedRus)).
* `DateTime` 또는 `DateTime64` 유형 값에서 밀리초 component를 반환하는 함수 `toMillisecond`를 추가했습니다. [#60281](https://github.com/ClickHouse/ClickHouse/pull/60281) ([Shaun Struwig](https://github.com/Blargian)).
* clickhouse-server에서 HTTP 리디렉션 handler를 구성할 수 있도록 지원합니다. 예를 들어 `/`를 Play UI로 리디렉션되도록 설정할 수 있습니다. [#60390](https://github.com/ClickHouse/ClickHouse/pull/60390) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* 불필요하고 비용이 많이 드는 메모리 복사를 생략할 수 있도록 `dotProduct` 함수를 최적화했습니다. [#60928](https://github.com/ClickHouse/ClickHouse/pull/60928) ([Robert Schulze](https://github.com/rschu1ze)).
* 256비트 정수 출력 속도가 30배 빨라졌습니다. [#61100](https://github.com/ClickHouse/ClickHouse/pull/61100) ([Raúl Marín](https://github.com/Algunenano)).
* 테이블의 기본 키(primary key)에 사실상 불필요한 컬럼이 대부분 포함되어 있다면, 이를 메모리에 유지하지 마십시오. 이는 기본값이 `0.9`인 새로운 설정 `primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns`으로 제어되며, 의미는 다음과 같습니다. 복합 기본 키에서 어떤 컬럼의 값이 전체 경우의 90% 이상에서 변경되면, 그 뒤의 컬럼들은 로드되지 않습니다. [#60255](https://github.com/ClickHouse/ClickHouse/pull/60255) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 여러 `Nullable` 컬럼이 포함된 경우 직렬화된 집계 메서드의 성능을 개선했습니다. [#55809](https://github.com/ClickHouse/ClickHouse/pull/55809) ([Amos Bird](https://github.com/amosbird)).
* JSON 출력을 지연 생성해 ALL JOIN 성능을 개선합니다. [#58278](https://github.com/ClickHouse/ClickHouse/pull/58278) ([LiuNeng](https://github.com/liuneng1994)).
* AWS S3와 같은 외부 서비스와의 HTTP/HTTPS 연결을 모든 사용 사례에서 재사용할 수 있도록 개선했습니다. 응답이 3xx 또는 4xx인 경우에도 마찬가지입니다. [#58845](https://github.com/ClickHouse/ClickHouse/pull/58845) ([Sema Checherinda](https://github.com/CheSema)).
* 집계 함수 `argMin` / `argMax` / `any` / `anyLast` / `anyHeavy` 및 `ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1` 쿼리가 개선되었습니다. [#58640](https://github.com/ClickHouse/ClickHouse/pull/58640) ([Raúl Marín](https://github.com/Algunenano)).
* 컬럼 필터에 대한 소규모 최적화입니다. 일부 경우 최대 메모리 사용량을 원래의 44% 수준까지 줄일 수 있습니다. [#59698](https://github.com/ClickHouse/ClickHouse/pull/59698) ([李扬](https://github.com/taiyang-li)).
* 결과 유형의 내부 타입이 숫자인 경우 `multiIf` 함수를 열 지향 방식으로 실행합니다. [#60384](https://github.com/ClickHouse/ClickHouse/pull/60384) ([李扬](https://github.com/taiyang-li)).
* 뮤텍스 성능이 향상되었습니다(거의 2배). [#60823](https://github.com/ClickHouse/ClickHouse/pull/60823) ([Azat Khuzhin](https://github.com/azat)).
* 분산 쿼리가 종료될 때 여러 연결을 병렬로 정리합니다. [#60845](https://github.com/ClickHouse/ClickHouse/pull/60845) ([lizhuoyu5](https://github.com/lzydmxy)).
* 널 허용 숫자형 또는 널 허용 문자열형의 컬럼 간 데이터 이동을 최적화해 일부 마이크로 벤치마크가 개선되었습니다. [#60846](https://github.com/ClickHouse/ClickHouse/pull/60846) ([李扬](https://github.com/taiyang-li)).
* 파일 시스템 캐시 작업은 lock 경합의 영향을 덜 받습니다. [#61066](https://github.com/ClickHouse/ClickHouse/pull/61066) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 잘못된 컴파일러 최적화를 방지해 array join 및 기타 JOIN을 최적화했습니다. [#61074](https://github.com/ClickHouse/ClickHouse/issues/61074)를 해결했습니다.  [#61075](https://github.com/ClickHouse/ClickHouse/pull/61075) ([李扬](https://github.com/taiyang-li)).
* 구문 오류가 있는 쿼리에 정규식이 포함된 `COLUMNS` 매처가 있으면, 정규식은 한 번만 컴파일되는 대신 parser가 역추적하는 동안 매번 컴파일되었습니다. 이는 근본적인 오류였습니다. 컴파일된 정규식은 AST에 저장되었습니다. 하지만 AST의 A는 "abstract"를 의미하므로, 무거운 객체를 포함해서는 안 됩니다. AST의 일부는 parsing 중에 생성되었다가 버려질 수 있으며, 여기에는 대량의 역추적도 포함됩니다. 이로 인해 parsing 성능이 저하되고, 결과적으로 읽기 전용 사용자가 DoS를 일으킬 수 있게 됩니다. 하지만 가장 큰 문제는 이것이 퍼저의 진행을 막는다는 점입니다. [#61543](https://github.com/ClickHouse/ClickHouse/pull/61543) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 단일 값에 대한 IN 연산자를 최적화하는 새 분석기 패스를 추가했습니다. [#61564](https://github.com/ClickHouse/ClickHouse/pull/61564) ([LiuNeng](https://github.com/liuneng1994)).
* DNSResolver는 AWS S3의 여러 엔드포인트를 고르게 활용할 수 있도록, 확인된 IP 집합의 순서를 섞습니다. [#60965](https://github.com/ClickHouse/ClickHouse/pull/60965) ([Sema Checherinda](https://github.com/CheSema)).

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

* Azure Blob Storage의 병렬 읽기를 지원합니다. 이를 통해 실험적 Azure 객체 스토리지의 성능이 향상됩니다. [#61503](https://github.com/ClickHouse/ClickHouse/pull/61503) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* S3와 유사한 Azure Blob Storage용 비동기 WriteBuffer를 추가합니다. 이를 통해 실험적 Azure 객체 스토리지의 성능이 향상됩니다. [#59929](https://github.com/ClickHouse/ClickHouse/pull/59929) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* Azure Blob Storage를 사용할 때 Backup IO에 관리형 아이덴티티를 사용합니다. 또한 존재하지 않는 컨테이너를 ClickHouse가 생성하려고 시도하지 않도록 하는 설정을 추가했습니다. 이러한 작업에는 스토리지 계정 수준의 권한이 필요합니다. [#61785](https://github.com/ClickHouse/ClickHouse/pull/61785) ([Daniel Pozo Escalona](https://github.com/danipozo)).
* IN 절의 서브쿼리가 병렬 레플리카와 함께 동작할 수 있도록 하는 설정 `parallel_replicas_allow_in_with_subquery = 1`을 추가했습니다. [#60950](https://github.com/ClickHouse/ClickHouse/pull/60950) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* "zero-copy" 복제에 대한 변경 사항입니다. table이 삭제되면 해당 table과 관련된 모든 zero-copy 잠금도 함께 삭제되어야 합니다. 이 잠금이 들어 있는 디렉터리도 제거해야 합니다. [#57575](https://github.com/ClickHouse/ClickHouse/pull/57575) ([Sema Checherinda](https://github.com/CheSema)).

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

* 기본 테이블 엔진으로 `MergeTree`를 사용하도록 합니다. [#60524](https://github.com/ClickHouse/ClickHouse/pull/60524) ([Alexey Milovidov](https://github.com/alexey-milovidov))
* 기본적으로 `output_format_pretty_row_numbers`를 활성화했습니다. 사용성이 더 좋아집니다. [#61791](https://github.com/ClickHouse/ClickHouse/pull/61791) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이전 버전에서는 Pretty 형식의 일부 숫자 표시가 충분히 보기 좋지 않았습니다. [#61794](https://github.com/ClickHouse/ClickHouse/pull/61794) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Pretty 형식에서는 결과 집합에 값이 하나만 있는 경우(예: `SHOW CREATE TABLE` 쿼리 결과) 긴 값이 잘리지 않습니다. [#61795](https://github.com/ClickHouse/ClickHouse/pull/61795) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `clickhouse-local`과 마찬가지로 `clickhouse-client`에서도 `--output-format` 옵션을 `--format` 옵션의 동의어로 사용할 수 있습니다. 이로써 [#59848](https://github.com/ClickHouse/ClickHouse/issues/59848)가 해결되었습니다. [#61797](https://github.com/ClickHouse/ClickHouse/pull/61797) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* stdout가 터미널이고 출력 형식이 지정되지 않은 경우, `clickhouse-client`와 유사한 도구는 대화형 모드와 마찬가지로 기본적으로 `PrettyCompact`를 사용합니다. `clickhouse-client`와 `clickhouse-local`은 입력 및 출력 형식의 명령줄 인수를 일관된 방식으로 처리합니다. 이로써 [#61272](https://github.com/ClickHouse/ClickHouse/issues/61272)가 해결되었습니다. [#61800](https://github.com/ClickHouse/ClickHouse/pull/61800) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 가독성을 높이기 위해 Pretty 형식에서 숫자 그룹 사이를 밑줄로 구분합니다. 이는 새로운 설정 `output_format_pretty_highlight_digit_groups`로 제어됩니다. [#61802](https://github.com/ClickHouse/ClickHouse/pull/61802) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `SYSTEM FLUSH DISTRIBUTED`를 통해 초기 INSERT 설정을 재정의하는 기능이 추가되었습니다. [#61832](https://github.com/ClickHouse/ClickHouse/pull/61832) ([Azat Khuzhin](https://github.com/azat)).
* 정렬, 집계 등의 processor 프로파일링(소요 시간, 입출력 바이트)을 기본으로 활성화합니다. [#61096](https://github.com/ClickHouse/ClickHouse/pull/61096) ([Azat Khuzhin](https://github.com/azat)).
* Filesystem 데이터베이스에서 포맷 확장자가 없는 파일도 지원합니다. [#60795](https://github.com/ClickHouse/ClickHouse/pull/60795) ([Kruglov Pavel](https://github.com/Avogar)).
* 모든 포맷 이름이 대소문자를 구분하지 않도록 변경했습니다. 예를 들어 Tsv, TSV, tsv, 심지어 rowbinary도 모두 사용할 수 있습니다. [#60420](https://github.com/ClickHouse/ClickHouse/pull/60420) ([豪肥肥](https://github.com/HowePa)). 예를 들어 `JSON` 😇처럼 계속 올바르게 표기해 주시면 감사하겠습니다. 다만 `Json` 🤮처럼 표기하셔도 문제 삼지는 않습니다.
* `distributed_ddl_output_mode` 설정에 `none_only_active` 모드가 추가되었습니다. [#60340](https://github.com/ClickHouse/ClickHouse/pull/60340) ([Alexander Tokmakov](https://github.com/tavplubix)).
* Advanced dashboard에서 다중 선 그래프의 색상이 약간 더 개선되었습니다. [#60391](https://github.com/ClickHouse/ClickHouse/pull/60391) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 이제 Advanced dashboard에서 스크롤하는 동안에도 컨트롤이 항상 표시됩니다. 따라서 위로 스크롤하지 않고도 새 차트를 추가할 수 있습니다. [#60692](https://github.com/ClickHouse/ClickHouse/pull/60692) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* materialized view에 대해 `MODIFY COLUMN` 쿼리를 실행할 때 모든 컬럼이 존재하는지 확인하기 위해 내부 테이블 구조를 검사합니다. [#47427](https://github.com/ClickHouse/ClickHouse/pull/47427) ([sunny](https://github.com/sunny19930321)).
* String 타입과 Enum은 배열, UNION 쿼리, 조건부 표현식 등 동일한 컨텍스트에서 함께 사용할 수 있습니다. 이 변경으로 [#60726](https://github.com/ClickHouse/ClickHouse/issues/60726)가 해결되었습니다. [#60727](https://github.com/ClickHouse/ClickHouse/pull/60727) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 쿼리 처리를 위해 외부 데이터 구조에서 Enum을 선언할 수 있도록 지원합니다(이는 쿼리에 제공할 수 있는 즉시 생성 임시 테이블입니다). [#57857](https://github.com/ClickHouse/ClickHouse/pull/57857) ([Duc Canh Le](https://github.com/canhld94)).
* 머지할 파트를 선택할 때 경량한 삭제가 적용된 행도 고려하여, 결과 파트의 디스크 크기를 더 정확하게 추정할 수 있도록 했습니다. [#58223](https://github.com/ClickHouse/ClickHouse/pull/58223) ([Zhuo Qiu](https://github.com/jewelzqiu)).
* 더 많은 시스템 테이블에 컬럼 설명이 추가되었습니다. [https://github.com/ClickHouse/ClickHouse/pull/58356의](https://github.com/ClickHouse/ClickHouse/pull/58356의) 후속 작업입니다. [#59016](https://github.com/ClickHouse/ClickHouse/pull/59016) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 이제 `PREWHERE`에서 가상 컬럼(virtual columns)을 사용할 수 있습니다. `_part_offset`와 같은 non-const 가상 컬럼에 특히 유용합니다. [#59033](https://github.com/ClickHouse/ClickHouse/pull/59033) ([Amos Bird](https://github.com/amosbird)). 가상 컬럼의 전반적인 사용성이 개선되었습니다. 이제 `PREWHERE`에서 가상 컬럼을 사용할 수 있으며(`_part_offset`와 같은 non-const 가상 컬럼에 특히 유용합니다), `describe_include_virtual_columns` 설정이 활성화된 경우 `DESCRIBE` 쿼리에서 컬럼 주석(comment)으로 가상 컬럼에 대한 내장 문서를 확인할 수 있습니다. [#60205](https://github.com/ClickHouse/ClickHouse/pull/60205) ([Anton Popov](https://github.com/CurtizJ)).
* 상수 키를 사용하는 대신, 이제 객체 스토리지에서는 객체 삭제 가능 여부를 판단하기 위한 키를 생성합니다. [#59495](https://github.com/ClickHouse/ClickHouse/pull/59495) ([Sema Checherinda](https://github.com/CheSema)).
* "local\_blob\_storage" 대신 객체 스토리지 유형으로 "local"을 사용할 수 있습니다. [#60165](https://github.com/ClickHouse/ClickHouse/pull/60165) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `DETACH`/서버 종료 시 및 `SYSTEM FLUSH DISTRIBUTED`에서 Distributed 엔진의 대기 중인 INSERT 블록을 병렬로 플러시합니다(병렬 처리는 테이블에 다중 디스크 정책이 있을 때만 작동하며, 현재는 Distributed 엔진의 모든 항목이 그렇습니다). [#60225](https://github.com/ClickHouse/ClickHouse/pull/60225) ([Azat Khuzhin](https://github.com/azat)).
* 머지 시 리드스루 캐시를 강제하는 설정이 추가되었습니다. [#60308](https://github.com/ClickHouse/ClickHouse/pull/60308) ([Kseniia Sumarokova](https://github.com/kssenii)).
* MySQL 호환성 프로토콜이 개선되었습니다. 이슈 [#57598](https://github.com/ClickHouse/ClickHouse/issues/57598)에서는 트랜잭션 처리와 관련된 동작 차이를 언급합니다. 활성 트랜잭션이 없을 때 COMMIT/ROLLBACK을 실행하면 MySQL의 동작과 달리 오류로 보고됩니다. [#60338](https://github.com/ClickHouse/ClickHouse/pull/60338) ([PapaToemmsn](https://github.com/PapaToemmsn)).
* `substring` 함수에 새 alias `byteSlice`가 추가되었습니다. [#60494](https://github.com/ClickHouse/ClickHouse/pull/60494) ([Robert Schulze](https://github.com/rschu1ze)).
* 모호함을 줄이기 위해 서버 설정 `dns_cache_max_size`의 이름을 `dns_cache_max_entries`로 변경했습니다. [#60500](https://github.com/ClickHouse/ClickHouse/pull/60500) ([Kirill Nikiforov](https://github.com/allmazz)).
* `SHOW INDEX | INDEXES | INDICES | KEYS`는 더 이상 기본 키 컬럼 기준으로 정렬되지 않습니다(직관적이지 않았기 때문입니다). [#60514](https://github.com/ClickHouse/ClickHouse/pull/60514) ([Robert Schulze](https://github.com/rschu1ze)).
* Keeper 개선: 데이터 손실을 방지하기 위해 시작 시 유효하지 않은 스냅샷이 감지되면 중단하도록 개선했습니다. [#60537](https://github.com/ClickHouse/ClickHouse/pull/60537) ([Antonio Andelic](https://github.com/antonio2368)).
* tzdata를 2024a로 업데이트했습니다. [#60768](https://github.com/ClickHouse/ClickHouse/pull/60768) ([Raúl Marín](https://github.com/Algunenano)).
* Keeper 개선: Keeper 설정에 `leadership_expiry_ms` 지원을 추가했습니다. [#60806](https://github.com/ClickHouse/ClickHouse/pull/60806) ([Brokenice0415](https://github.com/Brokenice0415)).
* 설정 `input_format_try_infer_exponent_floats`와 관계없이 JSON 포맷에서 지수 표기 숫자를 항상 추론합니다. JSON 객체에서 이름이 지정된 Tuple을 추론할 때, 예외를 발생시키는 대신 모호한 경로에 String 유형을 사용할 수 있도록 하는 설정 `input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects`를 추가했습니다. [#60808](https://github.com/ClickHouse/ClickHouse/pull/60808) ([Kruglov Pavel](https://github.com/Avogar)).
* MySQL 구문에서 일반적으로 사용되는 `START TRANSACTION` 구문 지원을 추가하여 [https://github.com/ClickHouse/ClickHouse/discussions/60865를](https://github.com/ClickHouse/ClickHouse/discussions/60865를) 해결했습니다. [#60886](https://github.com/ClickHouse/ClickHouse/pull/60886) ([Zach Naimon](https://github.com/ArctypeZach)).
* full-sorting 머지 조인 알고리즘에서 NULL을 가장 큰값/가장 작은값으로 처리할 수 있는 플래그를 추가했습니다. 이를 통해 Apache Spark와 같은 다른 SQL 시스템과 호환되는 동작을 할 수 있습니다. [#60896](https://github.com/ClickHouse/ClickHouse/pull/60896) ([loudongfeng](https://github.com/loudongfeng)).
* `clickhouse-client` 및 `clickhouse-local`에서 파일 확장자를 기반으로 출력 형식을 감지할 수 있도록 지원합니다. [#61036](https://github.com/ClickHouse/ClickHouse/pull/61036) ([豪肥肥](https://github.com/HowePa)).
* Linux의 CGroups 값이 변경되었을 때 런타임의 메모리 제한을 업데이트합니다. [#61049](https://github.com/ClickHouse/ClickHouse/pull/61049) ([Han Fei](https://github.com/hanfei1991)).
* 실수로 누락된 함수 `toUInt128OrZero`를 추가했습니다(이 실수는 [https://github.com/ClickHouse/ClickHouse/pull/945와](https://github.com/ClickHouse/ClickHouse/pull/945와) 관련이 있습니다). 호환성 별칭 `FROM_UNIXTIME` 및 `DATE_FORMAT`은(SQL 호환성 별칭에 기대되는 대로) 대소문자를 구분하지 않도록 변경되었습니다(이들은 ClickHouse 네이티브가 아니며 MySQL 호환성을 위해서만 존재합니다). [#61114](https://github.com/ClickHouse/ClickHouse/pull/61114) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 액세스 검사가 개선되어, 대상 사용자가 해당 권한을 회수할 수 있는 권한 부여를 갖고 있지 않은 경우에도 보유하지 않은 권한을 회수할 수 있게 되었습니다. 예시: `GRANT SELECT ON *.* TO user1; REVOKE SELECT ON system.* FROM user1;`. [#61115](https://github.com/ClickHouse/ClickHouse/pull/61115) ([pufit](https://github.com/pufit)).
* `Nullable` 컬럼의 `has()` 함수 관련 문제를 수정했습니다([#60214](https://github.com/ClickHouse/ClickHouse/issues/60214) 해결). [#61249](https://github.com/ClickHouse/ClickHouse/pull/61249) ([Mikhail Koviazin](https://github.com/mkmkme)).
* 이제 하위 트리 `<include from_zk="/path" merge="true">`의 구성 substitutions에서 속성 `merge="true"`를 지정할 수 있습니다. 이 속성을 지정하면 ClickHouse가 하위 트리를 기존 구성과 머지하며, 그렇지 않으면 기본적으로 새 내용을 구성에 추가합니다. [#61299](https://github.com/ClickHouse/ClickHouse/pull/61299) ([alesapin](https://github.com/alesapin)).
* 가상 메모리 매핑용 비동기 메트릭 `VMMaxMapCount` 및 `VMNumMaps`를 추가합니다. [#60662](https://github.com/ClickHouse/ClickHouse/issues/60662)를 해결합니다. [#61354](https://github.com/ClickHouse/ClickHouse/pull/61354) ([Tuan Pham Anh](https://github.com/tuanpavn)).
* 임시 데이터를 생성하는 모든 경우에 `temporary_files_codec` 설정이 사용되도록 변경했습니다. 예를 들어 외부 메모리 정렬과 외부 메모리 GROUP BY가 여기에 해당합니다. 이전에는 `partial_merge` JOIN 알고리즘에서만 작동했습니다. [#61456](https://github.com/ClickHouse/ClickHouse/pull/61456) ([Maksim Kita](https://github.com/kitaisreal)).
* 쿼리 파싱의 복잡도를 제한할 수 있는 새로운 설정 `max_parser_backtracks`를 추가했습니다. [#61502](https://github.com/ClickHouse/ClickHouse/pull/61502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 파일 시스템 캐시를 동적으로 크기 조정하는 동안의 경합이 감소했습니다. [#61524](https://github.com/ClickHouse/ClickHouse/pull/61524) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 향후 재작성될 예정이므로 StorageS3 큐의 세그먼트 모드를 허용하지 않습니다. [#61537](https://github.com/ClickHouse/ClickHouse/pull/61537) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 오타를 `use_leagcy_max_level`에서 `use_legacy_max_level`로 수정했습니다. [#61545](https://github.com/ClickHouse/ClickHouse/pull/61545) ([William Schoeffel](https://github.com/wiledusc)).
* `system.blob_storage_log`에서 일부 중복된 항목을 제거했습니다. [#61622](https://github.com/ClickHouse/ClickHouse/pull/61622) ([YenchangChan](https://github.com/YenchangChan)).
* MySQL과의 호환성을 위한 별칭으로 `current_user` 함수를 추가했습니다. [#61770](https://github.com/ClickHouse/ClickHouse/pull/61770) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 혼합 x86-64 / ARM 클러스터에서 일관되지 않던 부동소수점 집계 함수 상태 수정 [#60610](https://github.com/ClickHouse/ClickHouse/pull/60610) ([Harry Lee](https://github.com/HarryLeeIBM)).

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

* 이제 실시간 쿼리 프로파일러가 AArch64에서도 작동합니다. 이전 버전에서는 프로그램이 syscall 내부에서 시간을 보내지 않을 때만 작동했습니다. [#60807](https://github.com/ClickHouse/ClickHouse/pull/60807) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Docker 레이블에 ClickHouse 버전이 추가되었습니다. [#54224](https://github.com/ClickHouse/ClickHouse/issues/54224)가 해결되었습니다. [#60949](https://github.com/ClickHouse/ClickHouse/pull/60949) ([Nikolay Monkov](https://github.com/nikmonkov)).
* `prqlc`를 0.11.3으로 업그레이드했습니다. [#60616](https://github.com/ClickHouse/ClickHouse/pull/60616) ([Maximilian Roos](https://github.com/max-sixty)).
* `clickhouse-local`에 범용 쿼리 텍스트 퍼저를 추가했습니다. [#61508](https://github.com/ClickHouse/ClickHouse/pull/61508) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* MergeTree의 finished\_mutations\_to\_keep=0 문제를 수정했습니다(문서에는 0이 모두 유지됨을 의미한다고 되어 있습니다) [#60031](https://github.com/ClickHouse/ClickHouse/pull/60031) ([Azat Khuzhin](https://github.com/azat)).
* FINAL 최적화에 문제가 있었습니다. 작성자는 이를 다음과 같이 설명합니다: "같은 파트에 대한 PartsSplitter의 잘못된 범위". [#60041](https://github.com/ClickHouse/ClickHouse/pull/60041) ([Maksim Kita](https://github.com/kitaisreal)).
* 실험적이며 지원되지 않는 Apache Hive에 문제가 있었습니다. [#60262](https://github.com/ClickHouse/ClickHouse/pull/60262) ([shanfengp](https://github.com/Aed-p)).
* 실험적 병렬 레플리카 개선: 병렬 레플리카가 변경되면 재분석을 강제하도록 개선했습니다 [#60362](https://github.com/ClickHouse/ClickHouse/pull/60362) ([Raúl Marín](https://github.com/Algunenano)).
* 새 disks 구성 옵션에서 일반 메타데이터 유형을 사용하는 문제 수정 [#60396](https://github.com/ClickHouse/ClickHouse/pull/60396) ([Kseniia Sumarokova](https://github.com/kssenii)).
* mapContainsKeyLike의 논리 오류 '타입이 호환되지 않아 컬럼을 캡처할 수 없습니다' 수정 시도 [#60451](https://github.com/ClickHouse/ClickHouse/pull/60451) ([Kruglov Pavel](https://github.com/Avogar)).
* CREATE TABLE에서 스칼라 서브쿼리를 계산하지 않도록 했습니다. [#60464](https://github.com/ClickHouse/ClickHouse/pull/60464) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 오류로 인해 많은 행이 건너뛰어지는 경우 병렬 parsing에서 발생하는 데드락을 수정했습니다 [#60516](https://github.com/ClickHouse/ClickHouse/pull/60516) ([Kruglov Pavel](https://github.com/Avogar)).
* 실험적 KQL(Kusto) 지원에 문제가 있어 `max_query_size_for_kql_compound_operator`를 수정했습니다: [#60534](https://github.com/ClickHouse/ClickHouse/pull/60534) ([Yong Wang](https://github.com/kashwy)).
* Keeper 수정: 커밋 로그를 기다릴 때 타임아웃 추가 [#60544](https://github.com/ClickHouse/ClickHouse/pull/60544) ([Antonio Andelic](https://github.com/antonio2368)).
* 날짜 타입에는 숫자 팁을 출력하지 않음 [#60577](https://github.com/ClickHouse/ClickHouse/pull/60577) ([Raúl Marín](https://github.com/Algunenano)).
* filter에 비결정적 함수가 있을 때 MergeTree에서 읽는 문제를 수정 [#60586](https://github.com/ClickHouse/ClickHouse/pull/60586) ([Kruglov Pavel](https://github.com/Avogar)).
* compatibility setting 값 유형이 잘못되었을 때 발생하는 논리 오류를 수정했습니다 [#60596](https://github.com/ClickHouse/ClickHouse/pull/60596) ([Kruglov Pavel](https://github.com/Avogar)).
* 수정(prql): 더욱 안정적인 패닉 처리기 [#60615](https://github.com/ClickHouse/ClickHouse/pull/60615) ([Maximilian Roos](https://github.com/max-sixty)).
* Decimal 및 날짜 인수에 대한 `intDiv` 수정 [#60672](https://github.com/ClickHouse/ClickHouse/pull/60672) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 수정: alter modify 쿼리에서 CTE 확장 처리 [#60682](https://github.com/ClickHouse/ClickHouse/pull/60682) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* non-Atomic/Ordinary 데이터베이스 엔진(즉, Memory)용 system.parts 수정 [#60689](https://github.com/ClickHouse/ClickHouse/pull/60689) ([Azat Khuzhin](https://github.com/azat)).
* 매개변수화된 뷰에서 "Invalid storage definition in metadata file" 오류를 수정했습니다 [#60708](https://github.com/ClickHouse/ClickHouse/pull/60708) ([Azat Khuzhin](https://github.com/azat)).
* CompressionCodecMultiple의 버퍼 오버플로우 문제를 수정했습니다 [#60731](https://github.com/ClickHouse/ClickHouse/pull/60731) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* SQL/JSON의 불필요한 요소 제거 [#60738](https://github.com/ClickHouse/ClickHouse/pull/60738) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 집계 함수 quantileGK의 잘못된 assertion 제거 [#60740](https://github.com/ClickHouse/ClickHouse/pull/60740) ([李扬](https://github.com/taiyang-li)).
* streams를 1로 설정하여 insert-select + insert\_deduplication\_token 버그를 수정 [#60745](https://github.com/ClickHouse/ClickHouse/pull/60745) ([Jordi Villar](https://github.com/jrdi)).
* 지원되지 않는 멀티파트 업로드 작업에서는 사용자 지정 메타데이터 헤더를 설정할 수 없도록 했습니다 [#60748](https://github.com/ClickHouse/ClickHouse/pull/60748) ([Francisco J. Jurado Moreno](https://github.com/Beetelbrox)).
* toStartOfInterval 문제 수정 [#60763](https://github.com/ClickHouse/ClickHouse/pull/60763) ([Andrey Zvonov](https://github.com/zvonand)).
* arrayEnumerateRanked에서 발생하던 충돌을 수정했습니다 [#60764](https://github.com/ClickHouse/ClickHouse/pull/60764) ([Raúl Marín](https://github.com/Algunenano)).
* INSERT SELECT JOIN에서 `input()` 사용 시 발생하던 충돌을 수정했습니다 [#60765](https://github.com/ClickHouse/ClickHouse/pull/60765) ([Kruglov Pavel](https://github.com/Avogar)).
* 서브쿼리에서 allow\_experimental\_analyzer 값이 서로 다를 때 발생하던 비정상 종료 수정 [#60770](https://github.com/ClickHouse/ClickHouse/pull/60770) ([Dmitry Novik](https://github.com/novikd)).
* S3에서 읽을 때 재귀 처리를 제거했습니다 [#60849](https://github.com/ClickHouse/ClickHouse/pull/60849) ([Antonio Andelic](https://github.com/antonio2368)).
* HashedDictionaryParallelLoader에서 오류 발생 시 멈춰 있을 수 있는 문제를 수정했습니다 [#60926](https://github.com/ClickHouse/ClickHouse/pull/60926) ([vdimir](https://github.com/vdimir)).
* 복제된 데이터베이스의 비동기 RESTORE(실험적 기능) 문제 수정 [#60934](https://github.com/ClickHouse/ClickHouse/pull/60934) ([Antonio Andelic](https://github.com/antonio2368)).
* 네이티브 프로토콜을 통해 `Log` 테이블에 async 삽입하는 과정에서 발생하는 교착 상태를 수정 [#61055](https://github.com/ClickHouse/ClickHouse/pull/61055) ([Anton Popov](https://github.com/CurtizJ)).
* RangeHashedDictionary에서 dictGetOrDefault의 기본 인수에 대한 지연 실행 문제를 수정했습니다 [#61196](https://github.com/ClickHouse/ClickHouse/pull/61196) ([Kruglov Pavel](https://github.com/Avogar)).
* groupArraySorted의 여러 버그를 수정 [#61203](https://github.com/ClickHouse/ClickHouse/pull/61203) ([Raúl Marín](https://github.com/Algunenano)).
* 독립 실행형 바이너리에서 Keeper 재구성 문제를 수정 [#61233](https://github.com/ClickHouse/ClickHouse/pull/61233) ([Antonio Andelic](https://github.com/antonio2368)).
* S3 engine에서 session\_token 사용 문제 수정 [#61234](https://github.com/ClickHouse/ClickHouse/pull/61234) ([Kruglov Pavel](https://github.com/Avogar)).
* 집계 함수 `uniqExact`가 잘못된 결과를 반환할 수 있는 문제를 수정했습니다 [#61257](https://github.com/ClickHouse/ClickHouse/pull/61257) ([Anton Popov](https://github.com/CurtizJ)).
* show database 관련 버그를 수정했습니다 [#61269](https://github.com/ClickHouse/ClickHouse/pull/61269) ([Raúl Marín](https://github.com/Algunenano)).
* RabbitMQ 스토리지에서 MATERIALIZED 컬럼 관련 논리 오류 수정 [#61320](https://github.com/ClickHouse/ClickHouse/pull/61320) ([vdimir](https://github.com/vdimir)).
* CREATE OR REPLACE DICTIONARY 관련 문제 수정 [#61356](https://github.com/ClickHouse/ClickHouse/pull/61356) ([Vitaly Baranov](https://github.com/vitlibar)).
* external ON CLUSTER가 포함된 ATTACH 쿼리를 수정했습니다 [#61365](https://github.com/ClickHouse/ClickHouse/pull/61365) ([Nikolay Degterinsky](https://github.com/evillique)).
* 널 허용 키의 연속 키 최적화 문제를 수정했습니다 [#61393](https://github.com/ClickHouse/ClickHouse/pull/61393) ([Anton Popov](https://github.com/CurtizJ)).
* actions DAG split 관련 문제 수정 [#61458](https://github.com/ClickHouse/ClickHouse/pull/61458) ([Raúl Marín](https://github.com/Algunenano)).
* 실패한 RESTORE를 완료할 때 발생하는 문제 수정 [#61466](https://github.com/ClickHouse/ClickHouse/pull/61466) ([Vitaly Baranov](https://github.com/vitlibar)).
* 호환성 설정에서 async\_insert\_use\_adaptive\_busy\_timeout를 올바르게 비활성화합니다 [#61468](https://github.com/ClickHouse/ClickHouse/pull/61468) ([Raúl Marín](https://github.com/Algunenano)).
* 복원 풀에서 대기열 사용 허용 [#61475](https://github.com/ClickHouse/ClickHouse/pull/61475) ([Nikita Taranov](https://github.com/nickitat)).
* UUID를 사용해 system.parts를 읽을 때의 불일치를 수정했습니다. [#61479](https://github.com/ClickHouse/ClickHouse/pull/61479) ([Dan Wu](https://github.com/wudanzy)).
* ALTER QUERY MODIFY SQL SECURITY 관련 문제 수정 [#61480](https://github.com/ClickHouse/ClickHouse/pull/61480) ([pufit](https://github.com/pufit)).
* 윈도우 뷰(window view) 실험 기능에서 발생하던 충돌을 수정했습니다 [#61526](https://github.com/ClickHouse/ClickHouse/pull/61526) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 네이티브가 아닌 정수형에서 `repeat` 수정 [#61527](https://github.com/ClickHouse/ClickHouse/pull/61527) ([Antonio Andelic](https://github.com/antonio2368)).
* 클라이언트의 `-s` 인수를 수정했습니다 [#61530](https://github.com/ClickHouse/ClickHouse/pull/61530) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
* arrayPartialReverseSort에서 발생하는 충돌 수정 [#61539](https://github.com/ClickHouse/ClickHouse/pull/61539) ([Raúl Marín](https://github.com/Algunenano)).
* const 위치를 사용하는 문자열 검색 문제 수정 [#61547](https://github.com/ClickHouse/ClickHouse/pull/61547) ([Antonio Andelic](https://github.com/antonio2368)).
* DateTime64와 함께 사용할 때 addDays에서 오류가 발생하던 문제를 수정했습니다 [#61561](https://github.com/ClickHouse/ClickHouse/pull/61561) ([Shuai li](https://github.com/loneylee)).
* JSONExtract에서 LowCardinality 입력 유형을 허용하지 않도록 변경 [#61617](https://github.com/ClickHouse/ClickHouse/pull/61617) ([Julia Kartseva](https://github.com/jkartseva)).
* 중복 제거가 적용된 async insert의 `system.part_log` 문제 수정 [#61620](https://github.com/ClickHouse/ClickHouse/pull/61620) ([Antonio Andelic](https://github.com/antonio2368)).
* system.parts 관련 `Non-ready set` 예외를 수정했습니다. [#61666](https://github.com/ClickHouse/ClickHouse/pull/61666) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* REPLACE\_RANGE의 actual\_part\_name을 수정 (`Entry actual part isn't empty yet`) [#61675](https://github.com/ClickHouse/ClickHouse/pull/61675) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 잘못된 UTF-8로 인해 발생한 `multiSearchAllPositionsCaseInsensitiveUTF8`의 sanitizer 보고 문제를 수정했습니다 [#61749](https://github.com/ClickHouse/ClickHouse/pull/61749) ([pufit](https://github.com/pufit)).
* 널 허용 컬럼에서 RANGE frame을 지원하지 않던 문제를 수정했습니다. [#61766](https://github.com/ClickHouse/ClickHouse/pull/61766) ([YuanLiu](https://github.com/ditgittube)).

### <a id="242" /> ClickHouse 릴리스 24.2, 2024-02-29. [발표 자료](https://presentations.clickhouse.com/2024-release-24.2/), [동영상](https://www.youtube.com/watch?v=iN2y-TK8f3A)

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

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

* 중첩 타입에서 의심스럽거나 실험적(Experimental)인 타입을 검증하도록 변경했습니다. 이전에는 Array/Tuple/Map 같은 중첩 타입 안에서 이러한 타입을 검증하지 않았습니다(JSON 제외). [#59385](https://github.com/ClickHouse/ClickHouse/pull/59385) ([Kruglov Pavel](https://github.com/Avogar)).
* 스레드 수와 블록 크기에 대한 sanity check를 추가했습니다. [#60138](https://github.com/ClickHouse/ClickHouse/pull/60138) ([Raúl Marín](https://github.com/Algunenano)).
* 기본적으로 지수 표기법의 부동소수점을 추론하지 않도록 변경했습니다. 이전 동작을 복원하는 설정인 `input_format_try_infer_exponent_floats`를 추가했습니다(기본적으로 비활성화). [#59476](https://github.com/ClickHouse/ClickHouse/issues/59476)을 해결합니다. [#59500](https://github.com/ClickHouse/ClickHouse/pull/59500) ([Kruglov Pavel](https://github.com/Avogar)).
* alter 연산을 괄호로 감쌀 수 있도록 했습니다. 괄호 출력은 `format_alter_operations_with_parentheses` 설정으로 제어할 수 있습니다. 기본적으로는 일부 위치에서 포맷된 alter 연산을 메타데이터로 저장하므로(예: 뮤테이션) 포맷된 쿼리에 괄호가 출력됩니다. 새 구문은 alter 연산이 목록으로 끝나는 일부 쿼리를 더 명확하게 보여줍니다. 예를 들어 `ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c`는 기존 구문으로는 올바르게 파싱할 수 없습니다. 새 구문에서는 `ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c)` 쿼리의 의미가 분명합니다. 이전 버전은 새 구문을 읽을 수 없으므로, 하나의 cluster에서 최신 버전과 이전 버전의 ClickHouse를 함께 사용하는 경우 새 구문 사용 시 문제가 발생할 수 있습니다. [#59532](https://github.com/ClickHouse/ClickHouse/pull/59532) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* materialized view 보안 문제를 수정했습니다. 이 문제로 인해 필요한 권한 없이도 사용자가 테이블에 삽입할 수 있었습니다. 이번 수정에서는 사용자가 materialized view뿐 아니라 그 기반이 되는 모든 테이블에도 삽입 권한이 있는지 검증합니다. 따라서 이전에는 동작하던 일부 쿼리가 이제 `Not enough privileges` 오류로 실패할 수 있습니다. 이 문제를 해결하기 위해 이번 릴리스에서는 뷰를 위한 SQL security의 새 기능을 도입합니다 [https://clickhouse.com/docs/sql-reference/statements/create/view#sql\&#95;security](https://clickhouse.com/docs/sql-reference/statements/create/view#sql\&#95;security). [#54901](https://github.com/ClickHouse/ClickHouse/pull/54901) [#60439](https://github.com/ClickHouse/ClickHouse/pull/60439) ([pufit](https://github.com/pufit)).

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

* view/materialized view에서 definer USER를 지정할 수 있는 새 구문이 추가되었습니다. 이를 통해 기반 테이블에 대한 명시적인 권한 부여 없이도 view에서 SELECT/INSERT를 실행할 수 있습니다. 즉, View가 권한을 캡슐화합니다. [#54901](https://github.com/ClickHouse/ClickHouse/pull/54901) [#60439](https://github.com/ClickHouse/ClickHouse/pull/60439) ([pufit](https://github.com/pufit)).
* `file/s3/hdfs/url/azureBlobStorage` 엔진에서 스키마 추론 시 파일 포맷을 알 수 없으면 자동으로 감지하도록 개선했습니다. [#50576](https://github.com/ClickHouse/ClickHouse/issues/50576)을 해결합니다. [#59092](https://github.com/ClickHouse/ClickHouse/pull/59092) ([Kruglov Pavel](https://github.com/Avogar)).
* 비동기 삽입 timeout 자동 조정을 구현했습니다. 다음 설정이 도입되었습니다: async\_insert\_poll\_timeout\_ms, async\_insert\_use\_adaptive\_busy\_timeout, async\_insert\_busy\_timeout\_min\_ms, async\_insert\_busy\_timeout\_max\_ms, async\_insert\_busy\_timeout\_increase\_rate, async\_insert\_busy\_timeout\_decrease\_rate. [#58486](https://github.com/ClickHouse/ClickHouse/pull/58486) ([Julia Kartseva](https://github.com/jkartseva)).
* 최대 연속 로그인 실패 횟수에 대한 쿼터를 설정할 수 있도록 했습니다. [#54737](https://github.com/ClickHouse/ClickHouse/pull/54737) ([Alexey Gerasimchuck](https://github.com/Demilivor)).
* 새 집계 함수 `groupArrayIntersect`가 추가되었습니다. 관련 이슈: [#49862](https://github.com/ClickHouse/ClickHouse/issues/49862). [#59598](https://github.com/ClickHouse/ClickHouse/pull/59598) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* `AzureBlobStorage`에 대한 Backup 및 복원 지원이 추가되었습니다. [#50747](https://github.com/ClickHouse/ClickHouse/issues/50747)을 해결합니다. [#56988](https://github.com/ClickHouse/ClickHouse/pull/56988) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* 이제 쿼리에서 `format_template_row` 대신 `format_schema_rows_template`를 사용해 템플릿 문자열을 직접 지정할 수 있습니다. [#31363](https://github.com/ClickHouse/ClickHouse/issues/31363)를 해결했습니다. [#59088](https://github.com/ClickHouse/ClickHouse/pull/59088) ([Shaun Struwig](https://github.com/Blargian)).
* 서로 다른 종류의 MergeTree 테이블을 복제된 엔진으로 자동 변환하는 기능이 구현되었습니다. 테이블의 데이터 디렉터리(`/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/`)에 비어 있는 `convert_to_replicated` 파일을 생성하면 다음 서버 시작 시 해당 테이블이 자동으로 변환됩니다. [#57798](https://github.com/ClickHouse/ClickHouse/pull/57798) ([Kirill](https://github.com/kirillgarbar)).
* 빈 파티션과 관련된 ZooKeeper 노드를 제거하는 쿼리 `ALTER TABLE table FORGET PARTITION partition`이 추가되었습니다. [#59507](https://github.com/ClickHouse/ClickHouse/pull/59507) ([Sergei Trifonov](https://github.com/serxa)). 이 기능은 전문가용 기능입니다.
* NATS 테이블 엔진에서 JWT 자격 증명 파일을 지원합니다. [#59543](https://github.com/ClickHouse/ClickHouse/pull/59543) ([Nickolaj Jepsen](https://github.com/nickolaj-jepsen)).
* DNS 문제 디버깅에 유용한 `system.dns_cache` 테이블이 구현되었습니다. [#59856](https://github.com/ClickHouse/ClickHouse/pull/59856) ([Kirill Nikiforov](https://github.com/allmazz)).
* 코덱 `LZ4HC`는 새 레벨 2를 지원하며, 압축률이 다소 낮아지는 대신 기존 최소 레벨 3보다 더 빠릅니다. 이전 버전에서는 `LZ4HC(2)` 이하는 `LZ4HC(3)`와 동일하게 처리되었습니다. 작성자: [Cyan4973](https://github.com/Cyan4973). [#60090](https://github.com/ClickHouse/ClickHouse/pull/60090) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* DNS 문제 디버깅에 유용한 `system.dns_cache` 테이블을 구현했습니다. 새로운 서버 설정 dns\_cache\_max\_size가 추가되었습니다. [#60257](https://github.com/ClickHouse/ClickHouse/pull/60257) ([Kirill Nikiforov](https://github.com/allmazz)).
* `merge` 테이블 함수에서 `merge(['db_name', ] 'tables_regexp')` 형태의 단일 인수 버전을 지원합니다. [#60372](https://github.com/ClickHouse/ClickHouse/pull/60372) ([豪肥肥](https://github.com/HowePa)).
* 음수 위치 인수를 지원합니다. [#57736](https://github.com/ClickHouse/ClickHouse/issues/57736)을 종료합니다. [#58292](https://github.com/ClickHouse/ClickHouse/pull/58292) ([flynn](https://github.com/ucasfl)).
* config에서 `user` 키를 사용해 특정 S3 설정별로 허용된 사용자 집합을 지정할 수 있도록 지원합니다. [#60144](https://github.com/ClickHouse/ClickHouse/pull/60144) ([Antonio Andelic](https://github.com/antonio2368)).
* 테이블 함수 `mergeTreeIndex`가 추가되었습니다. 이 함수는 `MergeTree` 테이블의 인덱스 및 마크 파일 내용을 나타냅니다. 내부 검사에 사용할 수 있습니다. 구문: `mergeTreeIndex(database, table, [with_marks = true])` 여기서 `database.table`은 `MergeTree` 엔진을 사용하는 기존 테이블입니다. [#58140](https://github.com/ClickHouse/ClickHouse/pull/58140) ([Anton Popov](https://github.com/CurtizJ)).

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

* Tukey's fences 알고리즘을 사용해 series data의 이상치를 탐지하는 함수 `seriesOutliersDetectTukey`를 추가했습니다. [#58632](https://github.com/ClickHouse/ClickHouse/pull/58632) ([Bhavna Jindal](https://github.com/bhavnajindal)). 다음 패치 릴리스에서 동작이 변경될 예정이므로 유의하십시오.
* 각 행에 대해 variant type name이 포함된 Enum을 반환하는 함수 `variantType`를 추가했습니다. [#59398](https://github.com/ClickHouse/ClickHouse/pull/59398) ([Kruglov Pavel](https://github.com/Avogar)).
* 병렬 레플리카(분석기 사용 시에만)에서 `LEFT JOIN`, `ALL INNER JOIN`, 그리고 단순한 서브쿼리를 지원합니다. 새로운 설정 `parallel_replicas_prefer_local_join`은 로컬 `JOIN` 실행(기본값)과 `GLOBAL JOIN` 중 어느 방식을 사용할지 선택합니다. 모든 테이블은 `cluster_for_parallel_replicas`의 모든 레플리카에 존재해야 합니다. 새로운 설정 `min_external_table_block_size_rows` 및 `min_external_table_block_size_bytes`는 임시 테이블로 전송되는 작은 블록을 더 큰 블록으로 합치는 데 사용됩니다(분석기 사용 시에만). [#58916](https://github.com/ClickHouse/ClickHouse/pull/58916) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* 새 레플리카를 추가하거나 복구하는 동안 `Replicated` 데이터베이스에서 테이블을 동시에 생성할 수 있도록 허용합니다. [#59277](https://github.com/ClickHouse/ClickHouse/pull/59277) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* `Variant` 값에 대한 비교 연산자와 `Variant` 컬럼에 `Field`를 올바르게 삽입하는 기능을 구현했습니다. 기본적으로는 유사한 variant 타입으로 `Variant` 타입을 생성할 수 없으며, 설정 `allow_suspicious_variant_types`를 사용하면 허용할 수 있습니다. [#59996](https://github.com/ClickHouse/ClickHouse/issues/59996)를 해결했습니다. [#59850](https://github.com/ClickHouse/ClickHouse/issues/59850)를 해결했습니다. [#60198](https://github.com/ClickHouse/ClickHouse/pull/60198) ([Kruglov Pavel](https://github.com/Avogar)).
* CTE와 함께 사용하는 병렬 레플리카 JOIN을 비활성화했습니다(분석기 미사용 시). [#59239](https://github.com/ClickHouse/ClickHouse/pull/59239) ([Raúl Marín](https://github.com/Algunenano)).

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

* 기본 키(primary key)의 메모리 사용량이 줄어듭니다. [#60049](https://github.com/ClickHouse/ClickHouse/pull/60049) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 기본 키(primary key) 및 일부 기타 작업의 메모리 사용량을 개선했습니다. [#60050](https://github.com/ClickHouse/ClickHouse/pull/60050) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 테이블의 프라이머리 키(primary key)는 처음 접근할 때 메모리에 지연 로드됩니다. 이는 기본적으로 활성화되어 있는 새로운 MergeTree setting `primary_key_lazy_load`로 제어됩니다. 이 방식에는 여러 장점이 있습니다: - 사용되지 않는 테이블에는 로드되지 않습니다; - 메모리가 충분하지 않은 경우, server 시작 시점이 아니라 처음 사용할 때 예외가 발생합니다. 반면 몇 가지 단점도 있습니다: - 프라이머리 키 로드에 따른 지연 시간은 연결을 수락하기 전에 발생하는 것이 아니라 첫 번째 쿼리 시점에 발생합니다; 이로 인해 이론적으로는 thundering-herd 문제가 생길 수 있습니다. 이 변경은 [#11188](https://github.com/ClickHouse/ClickHouse/issues/11188)를 해결합니다. [#60093](https://github.com/ClickHouse/ClickHouse/pull/60093) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 벡터 검색용 벡터화 거리 함수. [#58866](https://github.com/ClickHouse/ClickHouse/pull/58866) ([Robert Schulze](https://github.com/rschu1ze)).
* 벡터 검색에 유용한 벡터화 함수 `dotProduct`. [#60202](https://github.com/ClickHouse/ClickHouse/pull/60202) ([Robert Schulze](https://github.com/rschu1ze)).
* `dictGetOrDefault` 함수에 단락 평가를 지원하도록 했습니다. [#52098](https://github.com/ClickHouse/ClickHouse/issues/52098)를 해결합니다. [#57767](https://github.com/ClickHouse/ClickHouse/pull/57767) ([jsc0218](https://github.com/jsc0218)).
* Keeper 개선: `latest_logs_cache_size_threshold` 및 `commit_logs_cache_size_threshold`로 제어하여 메모리 내에는 일정량의 로그만 캐시하도록 했습니다. [#59460](https://github.com/ClickHouse/ClickHouse/pull/59460) ([Antonio Andelic](https://github.com/antonio2368)).
* Keeper 개선: 데이터 노드 크기를 한층 더 줄였습니다. [#59592](https://github.com/ClickHouse/ClickHouse/pull/59592) ([Antonio Andelic](https://github.com/antonio2368)).
* 결과 유형이 `Float*/Decimal*/*Int*`인 경우 `if` 함수의 브랜치 미스를 추가로 최적화했습니다. [https://github.com/ClickHouse/ClickHouse/pull/57885의](https://github.com/ClickHouse/ClickHouse/pull/57885의) 후속 작업입니다. [#59148](https://github.com/ClickHouse/ClickHouse/pull/59148) ([李扬](https://github.com/taiyang-li)).
* 입력 유형이 `Map`일 때 `if` 함수를 최적화해 최대 약 10배까지 빨라집니다. [#59413](https://github.com/ClickHouse/ClickHouse/pull/59413) ([李扬](https://github.com/taiyang-li)).
* `Int8` 타입에 엄격한 별칭 규칙(strict aliasing)을 구현해 성능을 개선했습니다(`UInt8` 및 다른 모든 정수 타입에는 이미 적용되어 있습니다). [#59485](https://github.com/ClickHouse/ClickHouse/pull/59485) ([Raúl Marín](https://github.com/Algunenano)).
* 분기 미스를 줄여 bigint 및 big decimal 타입에서 조건부 sum/avg 성능을 최적화했습니다. [#59504](https://github.com/ClickHouse/ClickHouse/pull/59504) ([李扬](https://github.com/taiyang-li)).
* 활성 뮤테이션이 있을 때 SELECT 성능을 개선합니다. [#59531](https://github.com/ClickHouse/ClickHouse/pull/59531) ([Azat Khuzhin](https://github.com/azat)).
* AVX2를 사용해 `isNotNull` 함수를 최적화했습니다. [#59621](https://github.com/ClickHouse/ClickHouse/pull/59621) ([李扬](https://github.com/taiyang-li)).
* 정렬되었거나 거의 정렬된 데이터에서 ASOF JOIN 성능을 개선했습니다. [#59731](https://github.com/ClickHouse/ClickHouse/pull/59731) ([Maksim Kita](https://github.com/kitaisreal)).
* 이전 `async_insert_max_data_size`의 기본값 1 MB는 너무 작은 것으로 판단되었습니다. 새 기본값은 10 MiB입니다. [#59536](https://github.com/ClickHouse/ClickHouse/pull/59536) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* RESTORE 명령 실행 중 백업에서 테이블 메타데이터를 읽을 때 여러 스레드를 사용합니다. [#60040](https://github.com/ClickHouse/ClickHouse/pull/60040) ([Vitaly Baranov](https://github.com/vitlibar)).
* 이제 `StorageBuffer`에 세그먼트가 2개 이상(`num_layers` > 1) 있으면 모든 세그먼트에 대한 백그라운드 플러시가 여러 스레드에서 동시에 수행됩니다. [#60111](https://github.com/ClickHouse/ClickHouse/pull/60111) ([alesapin](https://github.com/alesapin)).

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

* 출력 형식이 `Pretty` 포맷이고 블록이 100만을 초과하는 단일 숫자 값으로만 이루어진 경우, 읽기 쉬운 숫자가 테이블 오른쪽에 출력됩니다. [#60379](https://github.com/ClickHouse/ClickHouse/pull/60379) ([rogeryk](https://github.com/rogeryk)).
* 설정 `split_parts_ranges_into_intersecting_and_non_intersecting_final` 및 `split_intersecting_parts_ranges_into_layers_final`이 추가되었습니다. 이 설정은 `FINAL`이 포함된 쿼리의 최적화를 비활성화할 때 필요하며, 디버깅 용도로만 사용해야 합니다. [#59705](https://github.com/ClickHouse/ClickHouse/pull/59705) ([Maksim Kita](https://github.com/kitaisreal)). 다만 실제로는 그 용도에만 국한되지 않으며, 성능 저하를 감수하는 대신 메모리 사용량을 줄이는 데에도 사용할 수 있습니다.
* 설정 `extract_kvp_max_pairs_per_row`의 이름을 `extract_key_value_pairs_max_pairs_per_row`로 변경했습니다. 이 문제(설정 이름에 불필요한 약어가 들어간 점)는 [https://github.com/ClickHouse/ClickHouse/pull/43606에서](https://github.com/ClickHouse/ClickHouse/pull/43606에서) 발생했습니다. 이 설정에 대한 문서를 수정했습니다. [#59683](https://github.com/ClickHouse/ClickHouse/pull/59683) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#59960](https://github.com/ClickHouse/ClickHouse/pull/59960) ([jsc0218](https://github.com/jsc0218)).
* `DEFAULT` 또는 `MATERIALIZED` 표현식이 있는 컬럼에서 `ALTER COLUMN MATERIALIZE`를 실행하면 이제 의미론에 맞게 정확히 동작합니다. [#58023](https://github.com/ClickHouse/ClickHouse/pull/58023) ([Duc Canh Le](https://github.com/canhld94)).
* 뮤테이션 중 오류 발생 시 지수 백오프 로직을 활성화했습니다. 이를 통해 CPU 사용량, 메모리 사용량 및 로그 파일 크기를 줄입니다. [#58036](https://github.com/ClickHouse/ClickHouse/pull/58036) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* `InitialQuery` Profile Event가 집계되도록 개선했습니다. [#58195](https://github.com/ClickHouse/ClickHouse/pull/58195) ([Unalian](https://github.com/Unalian)).
* `storage_configuration`에서 `volume_priority`를 지정할 수 있게 되었습니다. [#58533](https://github.com/ClickHouse/ClickHouse/pull/58533) ([Andrey Zvonov](https://github.com/zvonand)).
* `T64` 코덱에서 `Date32` 유형을 지원하도록 추가했습니다. [#58738](https://github.com/ClickHouse/ClickHouse/pull/58738) ([Hongbin Ma](https://github.com/binmahone)).
* 여러 항목으로 이루어진 타입에서 후행 쉼표를 허용합니다. [#59119](https://github.com/ClickHouse/ClickHouse/pull/59119) ([Aleksandr Musorin](https://github.com/AVMusorin)).
* 이제 분산 테이블 엔진의 설정을 서버 설정 파일에서 지정할 수 있습니다(MergeTree 설정과 유사). 예: `<distributed> <flush_on_detach>false</flush_on_detach> </distributed>`. [#59291](https://github.com/ClickHouse/ClickHouse/pull/59291) ([Azat Khuzhin](https://github.com/azat)).
* `system.zookeeper`를 읽는 중 연결이 끊기거나 세션이 만료되면 재시도합니다. 이는 특히 장애 주입으로 연결 끊김이 발생하는 환경에서 `system.zookeeper` 테이블(table)에서 많은 행(row)을 읽을 때 유용합니다. [#59388](https://github.com/ClickHouse/ClickHouse/pull/59388) ([Alexander Gololobov](https://github.com/davenger)).
* `input_format_values_interpret_expressions=0`일 때 앞에 0이 붙은 숫자를 8진수로 해석하지 않도록 했습니다. [#59403](https://github.com/ClickHouse/ClickHouse/pull/59403) ([Joanna Hulboj](https://github.com/jh0x)).
* 시작 시와 구성 파일이 변경될 때마다 ClickHouse는 전체 메모리 트래커의 하드 메모리 한도를 업데이트합니다. 이러한 한도는 다양한 서버 설정과 cgroups 한도(Linux에서)를 기반으로 계산됩니다. 이전에는 `/sys/fs/cgroup/memory.max` 설정(cgroups v2용)이 하드코딩되어 있었습니다. 그 결과, 예를 들어 `/sys/fs/cgroup/my/nested/group/memory.max`처럼 중첩된 그룹(계층)에 대해 구성된 cgroup v2 메모리 한도는 무시되었습니다. 이제 이 문제가 수정되었습니다. v1 메모리 한도의 동작은 그대로 유지됩니다. [#59435](https://github.com/ClickHouse/ClickHouse/pull/59435) ([Robert Schulze](https://github.com/rschu1ze)).
* `INSERT` 중 PK/프로젝션/보조 인덱스 계산에 소요되는 시간을 확인할 수 있도록 새로운 프로파일 이벤트가 추가되었습니다. [#59436](https://github.com/ClickHouse/ClickHouse/pull/59436) ([Nikita Taranov](https://github.com/nickitat)).
* 생성 시 `s3queue_last_processed_path` 설정을 사용해 Ordered 모드의 S3Queue 시작 지점을 지정할 수 있게 되었습니다. [#59446](https://github.com/ClickHouse/ClickHouse/pull/59446) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 시스템 테이블의 comment도 `clickhouse-local`의 `system.tables`에서 확인할 수 있게 했습니다. [#59493](https://github.com/ClickHouse/ClickHouse/pull/59493) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `system.zookeeper` 테이블: 이전에는 전체 결과를 메모리에 누적한 후 하나의 큰 청크로 반환했습니다. 이번 변경으로 `system.zookeeper`에서 많은 행을 읽을 때 메모리 사용량을 줄이는 데 도움이 되며, 중간 진행 상황(지금까지 몇 개의 행을 읽었는지)을 표시할 수 있고, 결과 집합이 클 경우 연결 타임아웃이 발생하는 것을 방지할 수 있습니다. [#59545](https://github.com/ClickHouse/ClickHouse/pull/59545) ([Alexander Gololobov](https://github.com/davenger)).
* 이제 대시보드는 URL의 #hash에 대해 압축된 상태와 비압축 상태를 모두 인식합니다(하위 호환성). [#59124](https://github.com/ClickHouse/ClickHouse/issues/59124)의 후속 작업입니다. [#59548](https://github.com/ClickHouse/ClickHouse/pull/59548) ([Amos Bird](https://github.com/amosbird)).
* Intel QPL(`DEFLATE_QPL` 코덱에 사용)을 v1.3.1에서 v1.4.0으로 올렸습니다. 또한 폴링 timeout 메커니즘의 버그도 수정했습니다. 일부 경우에는 timeout이 제대로 동작하지 않아, timeout이 발생하면 IAA와 CPU가 버퍼를 동시에 처리할 수 있는 것으로 확인되었습니다. 현재로서는 IAA 코덱 상태가 QPL\_STS\_BEING\_PROCESSED가 아닌지 확인한 뒤 SW 코덱으로 폴백하도록 했습니다. [#59551](https://github.com/ClickHouse/ClickHouse/pull/59551) ([jasperzhu](https://github.com/jinjunzh)).
* ClickHouse Cloud에서는 원활한 업그레이드가 자동으로 처리되므로 서버 버전에 대한 경고를 표시하지 않습니다. [#59657](https://github.com/ClickHouse/ClickHouse/pull/59657) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 자체 추출 후에는 임시 바이너리를 복사하지 않고 이동합니다. [#59661](https://github.com/ClickHouse/ClickHouse/pull/59661) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* Apple macOS에서 스택 언와인딩을 수정했습니다. 이로써 [#53653](https://github.com/ClickHouse/ClickHouse/issues/53653)가 해결되었습니다. [#59690](https://github.com/ClickHouse/ClickHouse/pull/59690) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* 사용자가 `max_parser_depth` 설정을 지나치게 큰 값으로 잘못 구성한 경우에도 파서의 스택 오버플로우를 점검합니다. 이로써 [#59622](https://github.com/ClickHouse/ClickHouse/issues/59622)가 해결됩니다. [#59697](https://github.com/ClickHouse/ClickHouse/pull/59697) ([Alexey Milovidov](https://github.com/alexey-milovidov)). [#60434](https://github.com/ClickHouse/ClickHouse/pull/60434)
* Kafka 스토리지에서 XML과 SQL로 생성한 명명된 컬렉션의 동작을 통일했습니다. [#59710](https://github.com/ClickHouse/ClickHouse/pull/59710) ([Pervakov Grigorii](https://github.com/GrigoryPervakov)).
* `merge_max_block_size_bytes`가 충분히 작고 테이블에 wide 행(문자열 또는 튜플)이 포함된 경우, 백그라운드 머지가 무한 루프에 갇힐 수 있습니다. 이 문제는 수정되었습니다. [https://github.com/ClickHouse/ClickHouse/pull/59340에](https://github.com/ClickHouse/ClickHouse/pull/59340에) 대한 후속 조치입니다. [#59812](https://github.com/ClickHouse/ClickHouse/pull/59812) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* CREATE TABLE에 uuid가 명시적으로 지정된 경우 replica\_path에서 uuid를 허용합니다. [#59908](https://github.com/ClickHouse/ClickHouse/pull/59908) ([Azat Khuzhin](https://github.com/azat)).
* `system.tables` 시스템 테이블에 ReplicatedMergeTree 테이블의 `metadata_version` 컬럼이 추가되었습니다. [#59942](https://github.com/ClickHouse/ClickHouse/pull/59942) ([Maksim Kita](https://github.com/kitaisreal)).
* Keeper 개선: Prometheus용으로 Keeper 관련 메트릭/이벤트만 전송합니다. [#59945](https://github.com/ClickHouse/ClickHouse/pull/59945) ([Antonio Andelic](https://github.com/antonio2368)).
* 대시보드는 업그레이드 후 시스템 테이블의 구조가 변경되었더라도 서로 다른 ClickHouse 버전의 메트릭을 표시합니다. [#59967](https://github.com/ClickHouse/ClickHouse/pull/59967) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 파일에서 AZ 정보를 로드할 수 있도록 허용합니다. [#59976](https://github.com/ClickHouse/ClickHouse/pull/59976) ([Konstantin Bogdanov](https://github.com/thevar1able)).
* Keeper 개선: Disk 관련 작업이 실패할 경우 재시도하도록 했습니다. [#59980](https://github.com/ClickHouse/ClickHouse/pull/59980) ([Antonio Andelic](https://github.com/antonio2368)).
* `backups.remove_backup_files_after_failure` 새 config 설정을 추가했습니다: `<clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>`. [#60002](https://github.com/ClickHouse/ClickHouse/pull/60002) ([Vitaly Baranov](https://github.com/vitlibar)).
* GCP가 `GATEWAY_TIMEOUT` HTTP 오류 코드와 함께 `Internal Error`를 반환하면, S3 파일 복사 시 GCP 폴백 대신 버퍼 복사를 사용합니다. [#60164](https://github.com/ClickHouse/ClickHouse/pull/60164) ([Maksim Kita](https://github.com/kitaisreal)).
* `ULIDStringToDateTime`에 단락 실행을 적용했습니다. [#60211](https://github.com/ClickHouse/ClickHouse/pull/60211) ([Juan Madurga](https://github.com/jlmadurga)).
* 테이블 `system.backups` 및 `system.backup_log`에 `query_id` 컬럼이 추가되었습니다. `error` 컬럼에 오류 스택 트레이스가 추가되었습니다. [#60220](https://github.com/ClickHouse/ClickHouse/pull/60220) ([Maksim Kita](https://github.com/kitaisreal)).
* 이제 MySQL 포트를 통한 연결에서는 QuickSight를 별도 설정 없이 지원할 수 있도록 `prefer_column_name_to_alias = 1` 설정이 자동으로 적용됩니다. 또한 `mysql_map_string_to_text_in_show_columns` 및 `mysql_map_fixed_string_to_text_in_show_columns` 설정도 이제 기본적으로 활성화되며, 이들 역시 MySQL 연결에만 영향을 줍니다. 이에 따라 더 많은 BI 도구와의 호환성이 향상됩니다. [#60365](https://github.com/ClickHouse/ClickHouse/pull/60365) ([Robert Schulze](https://github.com/rschu1ze)).
* JavaScript 코드의 race condition을 수정해 차트가 서로 위에 중복으로 겹쳐 표시되던 문제를 해결했습니다. [#60392](https://github.com/ClickHouse/ClickHouse/pull/60392) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

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

* 내부 검사와 함께 커버리지를 수집하는 빌드와 테스트를 추가했습니다. [#56102](https://github.com/ClickHouse/ClickHouse/issues/56102)의 후속 작업입니다. [#58792](https://github.com/ClickHouse/ClickHouse/pull/58792) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* CMake 크로스 컴파일 toolchain 변수가 설정된 경우 `corrosion-cmake`의 Rust toolchain을 업데이트합니다. [#59309](https://github.com/ClickHouse/ClickHouse/pull/59309) ([Aris Tritas](https://github.com/aris-aiven)).
* ASTLiterals에 퍼징을 일부 추가했습니다. [#59383](https://github.com/ClickHouse/ClickHouse/pull/59383) ([Raúl Marín](https://github.com/Algunenano)).
* ClickHouse 컨테이너가 시작될 때마다 initdb 스크립트를 실행하려면 환경 변수 `CLICKHOUSE_ALWAYS_RUN_INITDB_SCRIPTS`를 설정해야 합니다. [#59808](https://github.com/ClickHouse/ClickHouse/pull/59808) ([Alexander Nikolaev](https://github.com/AlexNik)).
* 일반적인 ClickHouse 구성 요소(예: server/client/...)를 비활성화하는 기능은 제거하고, 추가 라이브러리가 필요한 일부 항목(예: ODBC 또는 Keeper)은 유지합니다. [#59857](https://github.com/ClickHouse/ClickHouse/pull/59857) ([Azat Khuzhin](https://github.com/azat)).
* 쿼리 퍼저가 쿼리 내부의 SETTINGS도 퍼징합니다. [#60087](https://github.com/ClickHouse/ClickHouse/pull/60087) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* clang-19(master)로 ClickHouse를 빌드할 수 있도록 지원을 추가했습니다. [#60448](https://github.com/ClickHouse/ClickHouse/pull/60448) ([Alexey Milovidov](https://github.com/alexey-milovidov)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* TTL WHERE에서 발생하던 "Non-ready set" 오류를 수정했습니다. [#57430](https://github.com/ClickHouse/ClickHouse/pull/57430) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
* `quantilesGK` 함수의 버그를 수정했습니다 [#58216](https://github.com/ClickHouse/ClickHouse/pull/58216) ([李扬](https://github.com/taiyang-li)).
* Decimal 인수에서 `intDiv`가 잘못 동작하던 문제를 수정했습니다 [#59243](https://github.com/ClickHouse/ClickHouse/pull/59243) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* FixedString 입력에 대한 `translate` 수정 [#59356](https://github.com/ClickHouse/ClickHouse/pull/59356) ([Raúl Marín](https://github.com/Algunenano)).
* Keeper에서 다이제스트 계산을 수정 [#59439](https://github.com/ClickHouse/ClickHouse/pull/59439) ([Antonio Andelic](https://github.com/antonio2368)).
* 디버그 심볼이 없는 바이너리의 스택트레이스 문제 수정 [#59444](https://github.com/ClickHouse/ClickHouse/pull/59444) ([Azat Khuzhin](https://github.com/azat)).
* 컬럼별 설정이 있는 경우 `ASTAlterCommand::formatImpl` 수정... [#59445](https://github.com/ClickHouse/ClickHouse/pull/59445) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 분석기에서 `SELECT * FROM [...] ORDER BY ALL` 문제 수정 [#59462](https://github.com/ClickHouse/ClickHouse/pull/59462) ([zhongyuankai](https://github.com/zhongyuankai)).
* 분산 쿼리 취소 중 발생할 수 있는 미처리 예외를 수정했습니다 [#59487](https://github.com/ClickHouse/ClickHouse/pull/59487) ([Azat Khuzhin](https://github.com/azat)).
* 복합 타입에서 MAX가 permutation과 동일한 규칙을 사용하도록 했습니다 [#59498](https://github.com/ClickHouse/ClickHouse/pull/59498) ([Raúl Marín](https://github.com/Algunenano)).
* `update_insert_deduplication_token_in_dependent_materialized_views`를 전달할 때 발생하는 예외적인 경우를 수정했습니다 [#59544](https://github.com/ClickHouse/ClickHouse/pull/59544) ([Jordi Villar](https://github.com/jrdi)).
* 빈 값에 대한 arrayElement / map의 잘못된 결과 수정 [#59594](https://github.com/ClickHouse/ClickHouse/pull/59594) ([Raúl Marín](https://github.com/Algunenano)).
* 빈 상태 병합 시 topK 크래시 수정 [#59603](https://github.com/ClickHouse/ClickHouse/pull/59603) ([Raúl Marín](https://github.com/Algunenano)).
* 상수 sharding key를 사용하는 분산 테이블 문제 수정 [#59606](https://github.com/ClickHouse/ClickHouse/pull/59606) ([Vitaly Baranov](https://github.com/vitlibar)).
* WingFuzz가 발견한 KQL 관련 문제를 수정했습니다 [#59626](https://github.com/ClickHouse/ClickHouse/pull/59626) ([Yong Wang](https://github.com/kashwy)).
* AsynchronousBoundedReadBuffer의 "Read beyond last offset" 오류를 수정했습니다 [#59630](https://github.com/ClickHouse/ClickHouse/pull/59630) ([Vitaly Baranov](https://github.com/vitlibar)).
* RewriteSumFunctionWithSumAndCountVisitor에서 함수 별칭 유지 [#59658](https://github.com/ClickHouse/ClickHouse/pull/59658) ([Raúl Marín](https://github.com/Algunenano)).
* 초기 쿼리가 아닌 쿼리의 시작 시간 문제 수정 [#59662](https://github.com/ClickHouse/ClickHouse/pull/59662) ([Raúl Marín](https://github.com/Algunenano)).
* `minmax` 스키핑 인덱스 인수의 타입 검증 [#59733](https://github.com/ClickHouse/ClickHouse/pull/59733) ([Anton Popov](https://github.com/CurtizJ)).
* FixedString 입력 처리 시 leftPad / rightPad 함수를 수정했습니다 [#59739](https://github.com/ClickHouse/ClickHouse/pull/59739) ([Raúl Marín](https://github.com/Algunenano)).
* `countMatches` 함수의 AST 퍼저 관련 문제 수정 [#59752](https://github.com/ClickHouse/ClickHouse/pull/59752) ([Robert Schulze](https://github.com/rschu1ze)).
* RabbitMQ: ack도 nack도 되지 않은 메시지가 발생하는 문제 수정 [#59775](https://github.com/ClickHouse/ClickHouse/pull/59775) ([Kseniia Sumarokova](https://github.com/kssenii)).
* StorageURL이 쿼리 실행의 일부를 단일 스레드에서 수행하던 문제를 수정했습니다 [#59833](https://github.com/ClickHouse/ClickHouse/pull/59833) ([Michael Kolupaev](https://github.com/al13n321)).
* S3Queue: 초기화되지 않은 값 문제 수정 [#59897](https://github.com/ClickHouse/ClickHouse/pull/59897) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 괄호로 둘러싸인 파티션 표현식의 구문 분석 문제 수정 [#59901](https://github.com/ClickHouse/ClickHouse/pull/59901) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* HTTP를 통해 JSONColumnsWithMetadata 포맷에서 발생하는 충돌 수정 [#59925](https://github.com/ClickHouse/ClickHouse/pull/59925) ([Kruglov Pavel](https://github.com/Avogar)).
* 분석기에서 반환값이 달라지는 경우 `sum`을 `count`로 재작성하지 않도록 수정했습니다 [#59926](https://github.com/ClickHouse/ClickHouse/pull/59926) ([Azat Khuzhin](https://github.com/azat)).
* UniqExactSet 읽기 중 크래시 수정 [#59928](https://github.com/ClickHouse/ClickHouse/pull/59928) ([Maksim Kita](https://github.com/kitaisreal)).
* ReplicatedMergeTree의 잘못된 metadata\_version 문제 수정 [#59946](https://github.com/ClickHouse/ClickHouse/pull/59946) ([Maksim Kita](https://github.com/kitaisreal)).
* `StorageDistributed`의 데이터 레이스 문제 수정 [#59987](https://github.com/ClickHouse/ClickHouse/pull/59987) ([Nikita Taranov](https://github.com/nickitat)).
* Docker: 옵션이 비활성화되었을 때가 아니라 활성화되었을 때 init 스크립트를 실행하도록 변경 [#59991](https://github.com/ClickHouse/ClickHouse/pull/59991) ([jktng](https://github.com/jktng)).
* `SQLite`에 작은따옴표가 포함된 값을 INSERT할 때의 문제를 수정했습니다(작은따옴표를 백슬래시 대신 작은따옴표로 이스케이프하도록 변경) [#60015](https://github.com/ClickHouse/ClickHouse/pull/60015) ([Azat Khuzhin](https://github.com/azat)).
* `arrayFold`의 논리적 오류 여러 건 수정 [#60022](https://github.com/ClickHouse/ClickHouse/pull/60022) ([Raúl Marín](https://github.com/Algunenano)).
* `optimize&#95;uniq&#95;to&#95;count`에서 컬럼 별칭이 제거되는 문제를 수정했습니다 [#60026](https://github.com/ClickHouse/ClickHouse/pull/60026) ([Raúl Marín](https://github.com/Algunenano)).
* 삭제 시 S3Queue 테이블에서 발생할 수 있는 예외를 수정 [#60036](https://github.com/ClickHouse/ClickHouse/pull/60036) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 단일 리터럴에 대한 NOT 포맷팅 수정 [#60042](https://github.com/ClickHouse/ClickHouse/pull/60042) ([Raúl Marín](https://github.com/Algunenano)).
* DDLLogEntry에서 하드코딩된 4096 대신 Context의 max\_query\_size를 사용하도록 변경 [#60083](https://github.com/ClickHouse/ClickHouse/pull/60083) ([Kruglov Pavel](https://github.com/Avogar)).
* `table`이라는 이름의 테이블이 포함된 쿼리에서 일관되지 않던 서식을 수정했습니다. 구조가 선형적이지 않은 경우 `UNION ALL`, `INTERSECT`, `EXCEPT`가 포함된 쿌리의 잘못된 서식을 수정했습니다. 이로써 #52349가 해결되었습니다. `SYSTEM ... DROP FILESYSTEM CACHE`, `SYSTEM ... REFRESH/START/STOP/CANCEL/TEST VIEW`, `SYSTEM ENABLE/DISABLE FAILPOINT`를 포함한 `SYSTEM` 쿼리의 잘못된 서식을 수정했습니다. 매개변수화된 DDL 쿼리의 서식을 수정했습니다. `DESCRIBE FILESYSTEM CACHE` 쿼리의 서식을 수정했습니다. `SET param_...`(매개변수를 설정하는 쿼리)의 잘못된 서식을 수정했습니다. `CREATE INDEX` 쿼리의 잘못된 서식을 수정했습니다. `CREATE USER` 및 유사한 쿼리에서 일관되지 않던 서식을 수정했습니다. `CREATE SETTINGS PROFILE`의 일관되지 않은 서식을 수정했습니다. `ALTER ... MODIFY REFRESH`의 잘못된 서식을 수정했습니다. 프레임 오프셋이 표현식인 경우 윈도우 함수의 일관되지 않은 서식을 수정했습니다. 연산자를 구현하는 함수(예: `plus`) 뒤에 사용된 `RESPECT NULLS`와 `IGNORE NULLS`의 일관되지 않은 서식을 수정했습니다. `SYSTEM SYNC REPLICA ... LIGHTWEIGHT FROM ...`의 터무니없는 서식을 수정했습니다. `GROUP BY GROUPING SETS ... WITH ROLLUP/CUBE/TOTALS`가 포함된 잘못된 쿼리에서 일관되지 않던 서식을 수정했습니다. `GRANT CURRENT GRANTS`의 일관되지 않은 서식을 수정했습니다. `CREATE TABLE (... COLLATE)`의 일관되지 않은 서식을 수정했습니다. 추가로, 서브쿼리에서 `EXPLAIN`의 잘못된 서식도 수정했습니다(#60102). 람다 함수의 잘못된 서식을 수정했습니다(#60012). 앞으로는 이런 끔찍한 사례를 놓치지 않도록 검사를 추가했습니다. [#60095](https://github.com/ClickHouse/ClickHouse/pull/60095) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 서브쿼리에서 explain 포맷이 일관되지 않던 문제 수정 [#60102](https://github.com/ClickHouse/ClickHouse/pull/60102) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 널 허용 타입에서 발생하는 cosineDistance 충돌 수정 [#60150](https://github.com/ClickHouse/ClickHouse/pull/60150) ([Raúl Marín](https://github.com/Algunenano)).
* 문자열로 표현된 bool을 실제 bool로 CAST할 수 있도록 허용 [#60160](https://github.com/ClickHouse/ClickHouse/pull/60160) ([Robert Schulze](https://github.com/rschu1ze)).
* `system.s3queue_log` 문제 수정 [#60166](https://github.com/ClickHouse/ClickHouse/pull/60166) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 널 허용 집계 함수 이름에서 발생하던 arrayReduce 문제를 수정했습니다 [#60188](https://github.com/ClickHouse/ClickHouse/pull/60188) ([Raúl Marín](https://github.com/Algunenano)).
* `S3Queue`의 민감한 정보가 숨겨지도록 했습니다 [#60233](https://github.com/ClickHouse/ClickHouse/pull/60233) ([Kseniia Sumarokova](https://github.com/kssenii)).
* HTTP 예외 코드를 수정했습니다. [#60252](https://github.com/ClickHouse/ClickHouse/pull/60252) ([Austin Kothig](https://github.com/kothiga)).
* S3Queue: 버그 수정(간헐적으로 실패하던 test\_storage\_s3\_queue/test.py::test\_shards\_distributed도 함께 수정) [#60282](https://github.com/ClickHouse/ClickHouse/pull/60282) ([Kseniia Sumarokova](https://github.com/kssenii)).
* IPv6 해시 함수에서 초기화되지 않은 값 사용 및 잘못된 결과 문제를 수정했습니다 [#60359](https://github.com/ClickHouse/ClickHouse/pull/60359) ([Kruglov Pavel](https://github.com/Avogar)).
* null 인수가 있는 OptimizeDateOrDateTimeConverterWithPreimageVisitor 문제 수정 [#60453](https://github.com/ClickHouse/ClickHouse/pull/60453) ([Raúl Marín](https://github.com/Algunenano)).
* KQL 또는 PRQL 방언 클라이언트에서 전송한 분산 테이블 쿼리가 레플리카에서 실행되지 않던 경미한 버그를 수정했습니다. [#59674](https://github.com/ClickHouse/ClickHouse/issues/59674). [#60470](https://github.com/ClickHouse/ClickHouse/pull/60470) ([Alexey Milovidov](https://github.com/alexey-milovidov)) [#59674](https://github.com/ClickHouse/ClickHouse/pull/59674) ([Austin Kothig](https://github.com/kothiga)).

### <a id="241" /> ClickHouse 릴리스 24.1, 2024-01-30. [발표 자료](https://presentations.clickhouse.com/2024-release-24.1/), [동영상](https://www.youtube.com/watch?v=pBF9g0wGAGs)

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

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

* `print_pretty_type_names` 설정이 기본적으로 활성화됩니다. 이전 동작을 유지하려면 이 설정을 끄거나 `SET compatibility = '23.12'`를 설정하십시오. [#57726](https://github.com/ClickHouse/ClickHouse/pull/57726) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* MergeTree 설정 `clean_deleted_rows`는 Deprecated 상태이며, 이제는 더 이상 아무 효과가 없습니다. `OPTIMIZE`의 `CLEANUP` 키워드는 기본적으로 허용되지 않습니다(`allow_experimental_replacing_merge_with_cleanup`가 활성화된 경우는 예외). [#58316](https://github.com/ClickHouse/ClickHouse/pull/58316) ([Alexander Tokmakov](https://github.com/tavplubix)).
* `reverseDNSQuery` 함수는 더 이상 사용할 수 없습니다. 이 변경으로 [#58368](https://github.com/ClickHouse/ClickHouse/issues/58368)이 종료되었습니다. [#58369](https://github.com/ClickHouse/ClickHouse/pull/58369) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 설정 파일의 access control을 개선하기 위한 여러 변경 사항이 활성화되었습니다. 이러한 변경 사항은 동작에 영향을 미치므로 `access_control_improvements` 섹션의 `config.xml`을 확인하십시오. 확실하지 않다면 설정 파일의 값을 이전 버전과 동일하게 유지하십시오. [#58584](https://github.com/ClickHouse/ClickHouse/pull/58584) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* NaN 값이 있을 때 `sumMapFiltered`의 동작이 개선되었습니다. 이제 NaN 값은 임의의 위치가 아니라 끝에 배치되며, 어떤 값과도 다른 값으로 간주됩니다. 또한 이제 `-0`은 `0`과 같은 값으로 처리됩니다. 0 값은 버려지므로 `-0` 값도 버려집니다. [#58959](https://github.com/ClickHouse/ClickHouse/pull/58959) ([Raúl Marín](https://github.com/Algunenano)).
* `visibleWidth` 함수는 이제 문서에 설명된 대로 동작합니다. 이전 버전에서는 `lengthUTF8` 함수처럼 문자열 직렬화 후 코드 포인트 수만 단순히 계산했으며, 너비가 0인 문자와 결합 문자, 전각 문자, 탭, 삭제 문자는 고려하지 않았습니다. 이제 이에 맞게 동작이 변경되었습니다. 이전 동작을 유지하려면 `function_visible_width_behavior`를 `0`으로 설정하거나 `compatibility`를 `23.12` 이하로 설정하십시오. [#59022](https://github.com/ClickHouse/ClickHouse/pull/59022) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 다음 두 버그가 수정될 때까지 `Kusto` 방언은 비활성화됩니다: [#59037](https://github.com/ClickHouse/ClickHouse/issues/59037) 및 [#59036](https://github.com/ClickHouse/ClickHouse/issues/59036). [#59305](https://github.com/ClickHouse/ClickHouse/pull/59305) ([Alexey Milovidov](https://github.com/alexey-milovidov)). `Kusto`를 사용하려고 하면 예외가 발생합니다.
* `FINAL` 수정자의 더 효율적인 구현에서는 이제 `max_threads = 1`인 경우에도 순서가 유지된다고 보장하지 않습니다. 이전 동작에 의존했다면 `enable_vertical_final`을 0으로 설정하거나 `compatibility`를 `23.12`로 설정하십시오.

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

* 다른 데이터 타입의 union을 나타내는 Variant 데이터 타입을 구현했습니다. 타입 `Variant(T1, T2, ..., TN)`은 이 타입의 각 행이 `T1` 또는 `T2` 또는 ... 또는 `TN` 타입의 값을 가지거나, 어느 타입에도 속하지 않는 값(`NULL` 값)을 가질 수 있음을 의미합니다. Variant 타입은 설정 `allow_experimental_variant_type`을 통해 사용할 수 있습니다. 참고: [#54864](https://github.com/ClickHouse/ClickHouse/issues/54864). [#58047](https://github.com/ClickHouse/ClickHouse/pull/58047) ([Kruglov Pavel](https://github.com/Avogar)).
* 특정 설정(현재 `min_compress_block_size` 및 `max_compress_block_size`)은 이제 컬럼 수준에서도 지정할 수 있으며, 이 경우 해당 테이블 수준 설정보다 우선합니다. 예시: `CREATE TABLE tab (col String SETTINGS (min_compress_block_size = 81920, max_compress_block_size = 163840)) ENGINE = MergeTree ORDER BY tuple();`. [#55201](https://github.com/ClickHouse/ClickHouse/pull/55201) ([Duc Canh Le](https://github.com/canhld94)).
* `quantileDD` 집계 함수와 여기에 대응하는 `quantilesDD` 및 `medianDD`를 추가합니다. 이는 DDSketch [https://www.vldb.org/pvldb/vol12/p2195-masson.pdf를](https://www.vldb.org/pvldb/vol12/p2195-masson.pdf를) 기반으로 합니다. ### 사용자 대상 변경 사항에 대한 문서 항목입니다. [#56342](https://github.com/ClickHouse/ClickHouse/pull/56342) ([Srikanth Chekuri](https://github.com/srikanthccv)).
* 모든 유형의 메타데이터 타입에 대해 모든 유형의 객체 스토리지를 구성할 수 있도록 지원합니다. [#58357](https://github.com/ClickHouse/ClickHouse/pull/58357) ([Kseniia Sumarokova](https://github.com/kssenii)).
* 비활성 레플리카를 기다리지 않아도 되도록 `distributed_ddl_output_mode`에 `null_status_on_timeout_only_active` 및 `throw_only_active` 모드가 추가되었습니다. [#58350](https://github.com/ClickHouse/ClickHouse/pull/58350) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 부분 배열을 생성하는 함수 `arrayShingles`를 추가했습니다. 예를 들어 `arrayShingles([1, 2, 3, 4, 5], 3)`는 `[[1,2,3],[2,3,4],[3,4,5]]`를 반환합니다. [#58396](https://github.com/ClickHouse/ClickHouse/pull/58396) ([Zheng Miao](https://github.com/zenmiao7)).
* IDNA 표준에 따라 국제화 도메인 이름을 ASCII 표현으로 변환하는 데 유용한 함수 `punycodeEncode`, `punycodeDecode`, `idnaEncode`, `idnaDecode`가 추가되었습니다. [#58454](https://github.com/ClickHouse/ClickHouse/pull/58454) ([Robert Schulze](https://github.com/rschu1ze)).
* 문자열 유사도 함수 `dramerauLevenshteinDistance`, `jaroSimilarity`, `jaroWinklerSimilarity`가 추가되었습니다. [#58531](https://github.com/ClickHouse/ClickHouse/pull/58531) ([Robert Schulze](https://github.com/rschu1ze)).
* 출력 압축 수준을 변경하는 두 가지 설정 `output_format_compression_level`과, 출력 압축 포맷이 `zstd`인 경우 압축 윈도우 크기를 명시적으로 설정하고 zstd 압축의 장거리 모드를 활성화하는 `output_format_compression_zstd_window_log`가 추가되었습니다. 이는 `INTO OUTFILE`과 테이블 함수 `file`, `url`, `hdfs`, `s3`, `azureBlobStorage`에 쓸 때 적용됩니다. [#58539](https://github.com/ClickHouse/ClickHouse/pull/58539) ([Duc Canh Le](https://github.com/canhld94)).
* 출력이 터미널이 아닐 경우 Pretty 형식에서 ANSI 이스케이프 시퀀스를 자동으로 비활성화합니다. `output_format_pretty_color` 설정에 새 `auto` 모드를 추가합니다. [#58614](https://github.com/ClickHouse/ClickHouse/pull/58614) ([Shaun Struwig](https://github.com/Blargian)).
* [Sqids](https://sqids.org/)를 디코드하는 `sqidDecode` 함수를 추가했습니다. [#58544](https://github.com/ClickHouse/ClickHouse/pull/58544) ([Robert Schulze](https://github.com/rschu1ze)).
* JSON 입력 형식에서 Bool 값을 String으로 읽는 기능이 추가되었습니다. 이 기능은 기본적으로 활성화된 `input_format_json_read_bools_as_strings` 설정을 통해 제공됩니다. [#58561](https://github.com/ClickHouse/ClickHouse/pull/58561) ([Kruglov Pavel](https://github.com/Avogar)).
* 시계열을 계절성, 추세 및 잔차 성분으로 분해하는 함수 `seriesDecomposeSTL`이 추가되었습니다. [#57078](https://github.com/ClickHouse/ClickHouse/pull/57078) ([Bhavna Jindal](https://github.com/bhavnajindal)).
* MaterializedMySQL용 MySQL Binlog Client 도입: 여러 데이터베이스에 대해 하나의 binlog 연결을 사용합니다. [#57323](https://github.com/ClickHouse/ClickHouse/pull/57323) ([Val Doroshchuk](https://github.com/valbok)).
* Intel QuickAssist Technology (QAT)는 하드웨어 가속 압축 및 암호화를 제공합니다. ClickHouse에 zstd 압축에 QAT를 활용하는 새로운 압축 코덱 `ZSTD_QAT`가 추가되었습니다. 이 코덱은 [Intel's QATlib](https://github.com/intel/qatlib)와 [Inte's QAT ZSTD Plugin](https://github.com/intel/QAT-ZSTD-Plugin)을 사용합니다. 현재는 압축만 하드웨어 가속할 수 있으며(QAT를 초기화하지 못하는 경우 소프트웨어 폴백이 수행됨), 압축 해제는 항상 소프트웨어로 처리됩니다. [#57509](https://github.com/ClickHouse/ClickHouse/pull/57509) ([jasperzhu](https://github.com/jinjunzh)).
* s3 디스크용 객체 스토리지 키를 생성하는 새로운 방식을 구현했습니다. 이제 디스크 설명에서 `key_template` 옵션을 사용해 포맷을 `re2` 정규식 구문으로 정의할 수 있습니다. [#57663](https://github.com/ClickHouse/ClickHouse/pull/57663) ([Sema Checherinda](https://github.com/CheSema)).
* 테이블 system.dropped\_tables\_parts에는 system.dropped\_tables 테이블(삭제되었지만 아직 제거되지 않은 테이블)의 파트가 포함됩니다. [#58038](https://github.com/ClickHouse/ClickHouse/pull/58038) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* 테이블에 attached 상태인 materialized view의 수를 제한하는 `max_materialized_views_size_for_table` 설정을 추가했습니다. [#58068](https://github.com/ClickHouse/ClickHouse/pull/58068) ([zhongyuankai](https://github.com/zhongyuankai)).
* `clickhouse-format` 개선: `VALUES`를 사용하는 INSERT 쿼리를 지원하고, 주석도 지원합니다(출력하려면 `--comments` 사용). 또한 여러 줄로 포맷할 때 긴 쿼리만 대상으로 하도록 `--max_line_length` 옵션을 지원합니다. [#58246](https://github.com/ClickHouse/ClickHouse/pull/58246) ([vdimir](https://github.com/vdimir)).
* `clickhouse-local`에서 `system.parts`를 포함한 모든 시스템 테이블(system tables)을 ATTACH할 수 있게 했습니다. 이로써 [#58312](https://github.com/ClickHouse/ClickHouse/issues/58312)가 해결됩니다. [#58359](https://github.com/ClickHouse/ClickHouse/pull/58359) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 함수 `transform`에서 `Enum` 데이터 타입 지원이 추가되었습니다. 이로써 [#58241](https://github.com/ClickHouse/ClickHouse/issues/58241)가 해결되었습니다. [#58360](https://github.com/ClickHouse/ClickHouse/pull/58360) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 테이블 `system.database_engines`가 추가되었습니다. [#58390](https://github.com/ClickHouse/ClickHouse/pull/58390) ([Bharat Nallan](https://github.com/bharatnc)). 코드베이스에서 데이터베이스 엔진을 독립적으로 등록할 수 있게 되었습니다. [#58365](https://github.com/ClickHouse/ClickHouse/pull/58365) ([Bharat Nallan](https://github.com/bharatnc)). Interpreters를 독립적으로 등록할 수 있게 되었습니다. [#58443](https://github.com/ClickHouse/ClickHouse/pull/58443) ([Bharat Nallan](https://github.com/bharatnc)).
* `SYSTEM SYNC REPLICA LIGHTWEIGHT` 쿼리에 `FROM <Replicas>` 수정자가 추가되었습니다. `FROM` 수정자를 사용하면 지정된 소스 레플리카에 대해서만 fetch 작업과 drop-range를 기다리며, ZooKeeper에 없거나 source\_replica가 비어 있는 모든 레플리카도 대기 대상에 포함됩니다. [#58393](https://github.com/ClickHouse/ClickHouse/pull/58393) ([Jayme Bird](https://github.com/jaymebrd)).
* 설정 `update_insert_deduplication_token_in_dependent_materialized_views`이 추가되었습니다. 이 설정을 사용하면 종속 구체화된 뷰(materialized view)에 삽입할 때 테이블 식별자로 삽입 중복 제거 토큰을 업데이트할 수 있습니다. [#59165](https://github.com/ClickHouse/ClickHouse/issues/59165)를 해결합니다. [#59238](https://github.com/ClickHouse/ClickHouse/pull/59238) ([Maksim Kita](https://github.com/kitaisreal)).
* 비동기 메트릭을 갱신하는 `SYSTEM RELOAD ASYNCHRONOUS METRICS` 문을 추가했습니다. 주로 테스트 및 개발에 유용합니다. [#53710](https://github.com/ClickHouse/ClickHouse/pull/53710) ([Robert Schulze](https://github.com/rschu1ze)).

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

* 병렬 레플리카를 위한 조정 로직이 더 나은 병렬성과 캐시 지역성을 위해 재작성되었습니다. 수백 개의 레플리카에서 선형적으로 확장되는 것으로 테스트되었습니다. 또한 순서대로 읽기를 지원하게 되었습니다. [#57968](https://github.com/ClickHouse/ClickHouse/pull/57968) ([Nikita Taranov](https://github.com/nickitat)).
* HTTP 아웃고잉 버퍼링 기반을 네이티브 ClickHouse 버퍼로 대체합니다. 인터페이스별 바이트 수 집계 메트릭을 추가합니다. [#56064](https://github.com/ClickHouse/ClickHouse/pull/56064) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* 분산 쿼리에서는 `uniqExact`의 큰 집계 상태가 병렬로 머지됩니다. [#59009](https://github.com/ClickHouse/ClickHouse/pull/59009) ([Nikita Taranov](https://github.com/nickitat)).
* `MergeTree` 테이블에서 읽은 후 메모리 사용량이 감소했습니다. [#59290](https://github.com/ClickHouse/ClickHouse/pull/59290) ([Anton Popov](https://github.com/CurtizJ)).
* 수직 병합에서 메모리 사용량을 줄였습니다. [#59340](https://github.com/ClickHouse/ClickHouse/pull/59340) ([Anton Popov](https://github.com/CurtizJ)).
* 더 많은 상황에서 Keeper 시작 시 과도한 메모리 사용을 방지합니다. [#58455](https://github.com/ClickHouse/ClickHouse/pull/58455) ([Antonio Andelic](https://github.com/antonio2368)).
* Keeper 개선: 저장된 노드에 대한 Keeper의 메모리 사용량을 감소시켰습니다. [#59002](https://github.com/ClickHouse/ClickHouse/pull/59002) ([Antonio Andelic](https://github.com/antonio2368)).
* 더 캐시 친화적인 `FINAL` 구현이 적용되었습니다. 동작 변경에 유의하십시오. 이전에는 단일 스트림(예: `max_threads = 1`)으로 읽는 `FINAL` 수정자가 포함된 쿼리는 `ORDER BY` 절을 명시적으로 지정하지 않아도 정렬된 결과를 반환했습니다. 이제 `enable_vertical_final = true`일 때는(기본값도 true입니다) 이러한 동작이 더 이상 보장되지 않습니다. [#54366](https://github.com/ClickHouse/ClickHouse/pull/54366) ([Duc Canh Le](https://github.com/canhld94)).
* 예를 들어 S3에서 읽을 때 사용되는 `ReadBufferFromIStream`에서 불필요한 추가 복사를 생략합니다. [#56961](https://github.com/ClickHouse/ClickHouse/pull/56961) ([Nikita Taranov](https://github.com/nickitat)).
* 입력이 Array(Map)/Array(Array(Num)/Array(Array(String))/Array(BigInt)/Array(Decimal)인 경우 배열 요소 함수를 최적화했습니다. 이전 구현은 필요 이상으로 많은 할당을 수행했습니다. 이번 최적화로 최대 약 6배까지 성능이 향상되었으며, 특히 입력 유형이 Array(Map)일 때 효과가 큽니다. [#56403](https://github.com/ClickHouse/ClickHouse/pull/56403) ([李扬](https://github.com/taiyang-li)).
* compact 파트에서 둘 이상의 하위 컬럼을 읽을 때 컬럼을 한 번만 읽도록 개선했습니다. [#57631](https://github.com/ClickHouse/ClickHouse/pull/57631) ([Kruglov Pavel](https://github.com/Avogar)).
* `sum(column + constant)` 함수의 AST를 재작성합니다. 이는 분석기용 최적화 패스로 제공됩니다 [#57853](https://github.com/ClickHouse/ClickHouse/pull/57853) ([Jiebin Sun](https://github.com/jiebinn)).
* 이제 함수 `match`를 평가할 때 스킵 인덱스 `ngrambf_v1` 및 `tokenbf_v1`을 활용합니다. [#57882](https://github.com/ClickHouse/ClickHouse/pull/57882) ([凌涛](https://github.com/lingtaolf)).
* 이제 함수 `match`를 평가할 때 역인덱스를 사용합니다. [#58284](https://github.com/ClickHouse/ClickHouse/pull/58284) ([凌涛](https://github.com/lingtaolf)).
* MergeTree `FINAL`은 동일한 non-L0 파트 내의 행은 비교하지 않습니다. [#58142](https://github.com/ClickHouse/ClickHouse/pull/58142) ([Duc Canh Le](https://github.com/canhld94)).
* iota 호출 속도 개선(배열을 연속된 숫자로 채우는 작업). [#58271](https://github.com/ClickHouse/ClickHouse/pull/58271) ([Raúl Marín](https://github.com/Algunenano)).
* 숫자가 아닌 타입의 MIN/MAX 성능 향상. [#58334](https://github.com/ClickHouse/ClickHouse/pull/58334) ([Raúl Marín](https://github.com/Algunenano)).
* BMI2/SSE 내장 함수를 활용해 필터 조합(예: 다단계 PREWHERE)을 최적화했습니다 [#58800](https://github.com/ClickHouse/ClickHouse/pull/58800) ([Zhiguo Zhou](https://github.com/ZhiguoZh)).
* `clickhouse-local`에서 사용하는 스레드 수를 1개 줄였습니다. [#58968](https://github.com/ClickHouse/ClickHouse/pull/58968) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Nullable 타입에서 `multiIf` 함수 성능을 개선했습니다. [#57745](https://github.com/ClickHouse/ClickHouse/pull/57745) ([KevinyhZou](https://github.com/KevinyhZou)).
* 사용하지 않는 jemalloc 페이지를 정리하기 위한 `SYSTEM JEMALLOC PURGE`와, 프로파일러가 활성화된 경우 jemalloc 프로파일을 제어하기 위한 `SYSTEM JEMALLOC [ ENABLE | DISABLE | FLUSH ] PROFILE`를 추가했습니다. Keeper에도 jemalloc 관련 4LW 명령을 추가했습니다. `jmst`는 jemalloc 통계를 덤프하는 명령이며, `jmfp`, `jmep`, `jmdp`는 프로파일러가 활성화된 경우 jemalloc 프로파일을 제어하는 명령입니다. [#58665](https://github.com/ClickHouse/ClickHouse/pull/58665) ([Antonio Andelic](https://github.com/antonio2368)).
* S3 백업 시 메모리 사용량 감소. [#58962](https://github.com/ClickHouse/ClickHouse/pull/58962) ([Vitaly Baranov](https://github.com/vitlibar)).

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

* 모든 system table의 모든 컬럼에 주석(간단한 설명)을 추가했습니다. 여기에는 몇 가지 이유가 있습니다: - system table을 자주 사용하는데, 때로는 개발자가 특정 컬럼의 용도와 의미를 이해하기가 매우 어려울 수 있습니다. - system table은 자주 변경되며(새 컬럼을 추가하거나 기존 컬럼을 수정), 관련 문서는 항상 최신 상태를 따라가지 못합니다. 예를 들어 [`system.parts`](/ko/reference/system-tables/parts) 문서 페이지를 살펴보십시오. 많은 컬럼이 누락되어 있습니다 - 궁극적으로는 ClickHouse에서 직접 문서를 생성하고자 합니다. [#58356](https://github.com/ClickHouse/ClickHouse/pull/58356) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).
* `PASTE JOIN`에서 서브쿼리에 alias가 없는 쿼리도 허용합니다. [#58654](https://github.com/ClickHouse/ClickHouse/pull/58654) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* macOS에서 `MySQL`/`MariaDB` 통합을 사용할 수 있도록 했습니다. 이 변경으로 [#21191](https://github.com/ClickHouse/ClickHouse/issues/21191)이 해결되었습니다. [#46316](https://github.com/ClickHouse/ClickHouse/pull/46316) ([Alexey Milovidov](https://github.com/alexey-milovidov)) ([Robert Schulze](https://github.com/rschu1ze)).
* 이제 `max_rows_in_set_to_optimize_join`는 기본적으로 비활성화됩니다. [#56396](https://github.com/ClickHouse/ClickHouse/pull/56396) ([vdimir](https://github.com/vdimir)).
* ON CLUSTER DDL 쿼리와 Replicated 데이터베이스 엔진에서 호스트명 해석을 피할 수 있도록 하는 `<host_name>` 설정 매개변수를 추가했습니다. 이를 통해 클러스터 정의가 변경될 때 큐가 멈출 수 있는 가능성을 완화합니다. [#57573](https://github.com/ClickHouse/ClickHouse/issues/57573)를 해결합니다. [#57603](https://github.com/ClickHouse/ClickHouse/pull/57603) ([Nikolay Degterinsky](https://github.com/evillique)).
* 파일 시스템 캐시용 `load_metadata_threads`를 16으로 늘렸습니다. 서버 시작 속도가 더 빨라집니다. [#57732](https://github.com/ClickHouse/ClickHouse/pull/57732) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 머지/뮤테이션의 속도를 제한할 수 있는 기능이 추가되었습니다 (`max_mutations_bandwidth_for_server`/`max_merges_bandwidth_for_server`). [#57877](https://github.com/ClickHouse/ClickHouse/pull/57877) ([Azat Khuzhin](https://github.com/azat)).
* 문서화되지 않은 불리언(boolean) 컬럼 `is_hot_reloadable`을 system 테이블(system table) `system.server_settings`에서 가능한 값이 `No`, `Yes`, `IncreaseOnly`, `DecreaseOnly`인 (Enum8) 컬럼 `changeable_without_restart`로 대체했습니다. 또한 이 컬럼도 문서화했습니다. [#58029](https://github.com/ClickHouse/ClickHouse/pull/58029) ([skyoct](https://github.com/skyoct)).
* 클러스터 디스커버리에서 사용자 이름과 비밀번호 설정을 지원하고, [#58063](https://github.com/ClickHouse/ClickHouse/issues/58063)를 해결했습니다. [#58123](https://github.com/ClickHouse/ClickHouse/pull/58123) ([vdimir](https://github.com/vdimir)).
* `ALTER TABLE ... PART`에서 쿼리 매개변수 지원이 추가되었습니다. [#58297](https://github.com/ClickHouse/ClickHouse/pull/58297) ([Azat Khuzhin](https://github.com/azat)).
* Kafka 테이블용 컨슈머를 필요할 때 즉시 생성하되, 마지막 사용 이후 일정 기간(`kafka_consumers_pool_ttl_ms`) 동안 유지합니다. 이렇게 하면 `system.kafka_consumers`의 통계 관련 문제(Kafka 테이블을 읽는 쪽이 없으면 consume가 일어나지 않아 실시간 메모리 누수와 테이블 detach 지연으로 이어지는 문제)가 해결되며, 이 PR에서는 `system.kafka_consumers` 통계도 다시 기본적으로 활성화됩니다. [#58310](https://github.com/ClickHouse/ClickHouse/pull/58310) ([Azat Khuzhin](https://github.com/azat)).
* `sparkBar`를 `sparkbar`의 별칭으로 추가했습니다. [#58335](https://github.com/ClickHouse/ClickHouse/pull/58335) ([凌涛](https://github.com/lingtaolf)).
* `GCS`에 업로드한 후에는 `ComposeObject` 요청을 보내지 않도록 했습니다. [#58343](https://github.com/ClickHouse/ClickHouse/pull/58343) ([Azat Khuzhin](https://github.com/azat)).
* 구성 XML에서 이름에 점(.)이 포함된 키를 올바르게 처리합니다. [#58354](https://github.com/ClickHouse/ClickHouse/pull/58354) ([Azat Khuzhin](https://github.com/azat)).
* 함수 `format`이 상수 인수에 대해 상수를 반환하게 합니다. 이로써 [#58355](https://github.com/ClickHouse/ClickHouse/issues/58355)가 해결됩니다. [#58358](https://github.com/ClickHouse/ClickHouse/pull/58358) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `max_execution_time`와 `max_estimated_execution_time`를 분리하기 위해 `max_estimated_execution_time` 설정을 추가했습니다. [#58402](https://github.com/ClickHouse/ClickHouse/pull/58402) ([Zhang Yifan](https://github.com/zhangyifan27)).
* 유효하지 않은 데이터베이스 엔진 이름을 사용하면 힌트가 제공됩니다. [#58444](https://github.com/ClickHouse/ClickHouse/pull/58444) ([Bharat Nallan](https://github.com/bharatnc)).
* Arrow 딕셔너리에서 인덱스 유형을 더욱 세밀하게 제어할 수 있도록 설정을 추가했습니다. Arrow 권장 사항에 따라 기본적으로 인덱스에 부호 있는 정수 유형을 사용합니다. [#57401](https://github.com/ClickHouse/ClickHouse/issues/57401)을 해결했습니다. [#58519](https://github.com/ClickHouse/ClickHouse/pull/58519) ([Kruglov Pavel](https://github.com/Avogar)).
* 구현 [#58575](https://github.com/ClickHouse/ClickHouse/issues/58575) docker image 실행 시 `CLICKHOUSE_PASSWORD_FILE ` 환경 변수를 지원합니다. [#58583](https://github.com/ClickHouse/ClickHouse/pull/58583) ([Eyal Halpern Shalev](https://github.com/Eyal-Shalev)).
* 데이터를 읽기 위해 많은 스트림이 필요한 일부 쿼리를 실행할 때, 이전에는 `"Paste JOIN requires sorted tables only"` 오류가 발생했습니다. 이제는 이런 경우 스트림 수를 1로 조정합니다. [#58608](https://github.com/ClickHouse/ClickHouse/pull/58608) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* INVALID\_IDENTIFIER 오류 메시지 개선. [#58703](https://github.com/ClickHouse/ClickHouse/pull/58703) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* normalizeQuery에서 부호가 있는 숫자 리터럴을 더 잘 처리하도록 개선했습니다. [#58710](https://github.com/ClickHouse/ClickHouse/pull/58710) ([Salvatore Mesoraca](https://github.com/aiven-sal)).
* MySQL의 Point 데이터 타입 지원. [#58721](https://github.com/ClickHouse/ClickHouse/pull/58721) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Float32 컬럼과 상수 문자열을 비교할 때 문자열을 Float64가 아니라 Float32로 읽습니다. [#58724](https://github.com/ClickHouse/ClickHouse/pull/58724) ([Raúl Marín](https://github.com/Algunenano)).
* S3 호환성을 개선하고 ECloud EOS 스토리지 지원을 추가했습니다. [#58786](https://github.com/ClickHouse/ClickHouse/pull/58786) ([xleoken](https://github.com/xleoken)).
* `KILL QUERY`로 백업 / 복원을 취소할 수 있도록 했습니다. 이 PR에서는 실행 중인 백업과 복원이 `system.processes`에 표시되도록 했습니다. 또한 이제 서버 구성에 새로운 설정인 `shutdown_wait_backups_and_restores`(`default=true`)가 추가되었습니다. 이 설정은 서버 종료 시 실행 중인 모든 백업과 복원이 완료될 때까지 대기할지, 아니면 바로 취소할지를 결정합니다. [#58804](https://github.com/ClickHouse/ClickHouse/pull/58804) ([Vitaly Baranov](https://github.com/vitlibar)).
* Avro 포맷에서 ZSTD 코덱을 지원합니다. [#58735](https://github.com/ClickHouse/ClickHouse/issues/58735)를 해결했습니다. [#58805](https://github.com/ClickHouse/ClickHouse/pull/58805) ([flynn](https://github.com/ucasfl)).
* MySQL interface에서 `net_write_timeout` 및 `net_read_timeout` 설정을 지원합니다. `net_write_timeout`은 ClickHouse 네이티브 `send_timeout` 설정으로 매핑되며, 마찬가지로 `net_read_timeout`은 `receive_timeout`으로 매핑됩니다. 전체 SQL statement가 모두 대문자인 경우에만 MySQL `sql_select_limit` 설정을 지정할 수 있던 문제를 수정했습니다. [#58835](https://github.com/ClickHouse/ClickHouse/pull/58835) ([Serge Klochkov](https://github.com/slvrtrn)).
* 딕셔너리와 테이블을 같은 이름으로 생성할 때 발생하는 충돌에 대해 예외 메시지가 개선되었습니다. [#58841](https://github.com/ClickHouse/ClickHouse/pull/58841) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 사용자 지정(SQL에서 생성된) 디스크의 경우, 서버 구성에서 `filesystem_caches_path`(모든 파일 시스템 캐시에 대한 공통 디렉터리 경로 접두사) 또는 `custom_cached_disks_base_directory`(사용자 지정 디스크에서 생성된 파일 시스템 캐시에만 적용되는 공통 디렉터리 경로 접두사) 중 하나를 지정해야 합니다. 사용자 지정 디스크에서는 `custom_cached_disks_base_directory`가 `filesystem_caches_path`보다 우선하며, 전자가 없을 경우 후자가 사용됩니다. 파일 시스템 캐시 설정 `path`는 해당 디렉터리 내부에 있어야 하며, 그렇지 않으면 예외가 발생하여 디스크가 생성되지 않습니다. 이는 이전 버전에서 생성된 디스크에는 영향을 주지 않으며, 서버를 업그레이드한 경우에는 서버가 정상적으로 시작될 수 있도록 예외가 발생하지 않습니다. `custom_cached_disks_base_directory`는 기본 서버 구성에 `/var/lib/clickhouse/caches/`로 추가되었습니다. [#57825](https://github.com/ClickHouse/ClickHouse/issues/57825)를 닫습니다. [#58869](https://github.com/ClickHouse/ClickHouse/pull/58869) ([Kseniia Sumarokova](https://github.com/kssenii)).
* MySQL 인터페이스에서 `SHOW WARNINGS`/`SHOW COUNT(*) WARNINGS` 쿼리와 호환되도록 개선되었지만, 반환되는 결과는 항상 빈 집합입니다. [#58929](https://github.com/ClickHouse/ClickHouse/pull/58929) ([Serge Klochkov](https://github.com/slvrtrn)).
* 병렬 분산 `INSERT SELECT` 실행 시 사용할 수 없는 레플리카를 건너뜁니다. [#58931](https://github.com/ClickHouse/ClickHouse/pull/58931) ([Alexander Tokmakov](https://github.com/tavplubix)).
* json에서 구조화된 로그 포맷을 활성화하면 로그 수준을 텍스트 설명으로 표시합니다. [#58936](https://github.com/ClickHouse/ClickHouse/pull/58936) ([Tim Liou](https://github.com/wheatdog)).
* MySQL interface에서 데이터 타입 별칭(alias)을 통해 `CAST(x AS SIGNED)` 및 `CAST(x AS UNSIGNED)` SQL 문을 지원합니다. 여기서 `SIGNED`는 Int64의 별칭이고 `UNSIGNED`는 UInt64의 별칭입니다. 이를 통해 Looker Studio와 같은 BI 도구와의 호환성이 향상됩니다. [#58954](https://github.com/ClickHouse/ClickHouse/pull/58954) ([Serge Klochkov](https://github.com/slvrtrn)).
* Docker 컨테이너에서 작업 디렉터리를 데이터 경로로 변경합니다. [#58975](https://github.com/ClickHouse/ClickHouse/pull/58975) ([cangyin](https://github.com/cangyin)).
* Azure Blob Storage용 설정 `azure_max_unexpected_write_error_retries`가 추가되었으며, azure 섹션의 config에서도 설정할 수 있습니다. [#59001](https://github.com/ClickHouse/ClickHouse/pull/59001) ([SmitaRKulkarni](https://github.com/SmitaRKulkarni)).
* 손상된 데이터 레이크 테이블이 있어도 서버를 시작할 수 있도록 허용합니다. [#58625](https://github.com/ClickHouse/ClickHouse/issues/58625)를 해결합니다. [#59080](https://github.com/ClickHouse/ClickHouse/pull/59080) ([Kseniia Sumarokova](https://github.com/kssenii)).
* `Iceberg` 테이블 엔진에서 스키마(schema) 변경을 무시하고, 테이블 생성 시 사용자가 지정한 스키마 또는 테이블 생성 시 메타데이터에서 파싱한 최신 스키마를 사용해 모든 데이터를 읽을 수 있도록 했습니다. 이는 기본적으로 비활성화되어 있는 `iceberg_engine_ignore_schema_evolution` 설정으로 제어됩니다. 이 설정을 활성화하면, 스키마가 변경된 경우 모든 데이터 파일을 동일한 스키마로 읽게 되므로 잘못된 결과가 나올 수 있다는 점에 유의하십시오. [#59133](https://github.com/ClickHouse/ClickHouse/pull/59133) ([Kruglov Pavel](https://github.com/Avogar)).
* 적절한 `TABLE_IS_READ_ONLY` 오류를 반환하여 읽기 전용/단일 쓰기 스토리지에서 변경 가능한 작업(`INSERT`/`ALTER`/`OPTIMIZE`/...)을 금지합니다(잔여물 방지 목적). `CREATE`/`ATTACH` 시 단일 쓰기 디스크에 잔여물(`format_version.txt`)이 남지 않도록 합니다. `ReplicatedMergeTree`에서는 `DROP`을 무시합니다(`MergeTree`도 동일). `s3_plain` 순회 처리(`MetadataStorageFromPlainObjectStorage::iterateDirectory`)를 수정합니다. 읽기 전용은 `web` 디스크이고 단일 쓰기는 `s3_plain`이라는 점에 유의하십시오. [#59170](https://github.com/ClickHouse/ClickHouse/pull/59170) ([Azat Khuzhin](https://github.com/azat)).
* 복잡한 `ALTER`와 `merge` 작업이 결합될 때 논리 오류를 일으킬 수 있었던 실험적 `_block_number` 컬럼의 버그를 수정합니다. [#56202](https://github.com/ClickHouse/ClickHouse/issues/56202)를 해결합니다. [#58601](https://github.com/ClickHouse/ClickHouse/issues/58601)을 대체합니다. [#59295](https://github.com/ClickHouse/ClickHouse/pull/59295) ([alesapin](https://github.com/alesapin)).
* 실행 UI는 JSON 내부에서 예외가 반환되면 이를 인식합니다. [#52853](https://github.com/ClickHouse/ClickHouse/issues/52853)에 대한 수정입니다. [#59303](https://github.com/ClickHouse/ClickHouse/pull/59303) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `/binary` HTTP 핸들러에서 쿼리 문자열로 사용자, 호스트, 선택적으로 비밀번호를 지정할 수 있습니다. [#59311](https://github.com/ClickHouse/ClickHouse/pull/59311) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 압축된 인메모리 테이블의 백업을 지원합니다. 이로써 [#57893](https://github.com/ClickHouse/ClickHouse/issues/57893)가 해결되었습니다. [#59315](https://github.com/ClickHouse/ClickHouse/pull/59315) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* `BACKUP` 및 `RESTORE` 쿼리에서 `FORMAT` 절을 지원합니다. [#59338](https://github.com/ClickHouse/ClickHouse/pull/59338) ([Vitaly Baranov](https://github.com/vitlibar)).
* 함수 `concatWithSeparator`가 이제 `String` 및 `FixedString`뿐 아니라 임의의 타입 인수도 지원합니다. 예를 들어 `SELECT concatWithSeparator('.', 'number', 1)`는 이제 `number.1`을 반환합니다. [#59341](https://github.com/ClickHouse/ClickHouse/pull/59341) ([Robert Schulze](https://github.com/rschu1ze)).

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

* ClickHouse 바이너리의 alias를 개선하고(이제 `ch`/`clickhouse`는 인수에 따라 `clickhouse-local` 또는 `clickhouse`를 가리킴) 새 alias에 대한 bash 자동 완성을 추가합니다. [#58344](https://github.com/ClickHouse/ClickHouse/pull/58344) ([Azat Khuzhin](https://github.com/azat)).
* 모든 설정 변경 사항이 설정 변경 이력에 반영되는지 확인할 수 있도록 CI에 설정 변경 검사 기능을 추가합니다. [#58555](https://github.com/ClickHouse/ClickHouse/pull/58555) ([Kruglov Pavel](https://github.com/Avogar)).
* stateful 테스트에서 S3에서 직접 ATTACH한 테이블을 사용합니다. [#58791](https://github.com/ClickHouse/ClickHouse/pull/58791) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* 마지막 10만 줄 대신 전체 `fuzzer.log`를 아카이브로 저장합니다. `tail -n 100000`은 테이블 정의가 포함된 줄을 자주 잘라냅니다. 예시:. [#58821](https://github.com/ClickHouse/ClickHouse/pull/58821) ([Dmitry Novik](https://github.com/novikd)).
* Aarch64 macOS에서 Rust를 활성화합니다(skim을 사용한 클라이언트 퍼지 검색과 PRQL 언어가 추가되지만, darwin에서 ClickHouse를 호스팅하는 경우는 많지 않으므로 주로 클라이언트 퍼지 검색을 위한 변경이라고 볼 수 있습니다). [#59272](https://github.com/ClickHouse/ClickHouse/pull/59272) ([Azat Khuzhin](https://github.com/azat)).
* x86\_64와 ARM이 혼합된 클러스터에서 발생하는 집계 문제를 수정합니다 [#59132](https://github.com/ClickHouse/ClickHouse/pull/59132) ([Harry Lee](https://github.com/HarryLeeIBM)).

<div id="bug-fix-user-visible-misbehavior-in-an-official-stable-release">
  #### 버그 수정(공식 안정 릴리스에서 사용자에게 드러나는 오동작)
</div>

* 중첩된 LowCardinality용 join 키 변환 추가 [#51550](https://github.com/ClickHouse/ClickHouse/pull/51550) ([vdimir](https://github.com/vdimir)).
* flatten\_nested=1일 때는 모든 Array(Tuple)가 아니라 실제 Nested 유형만 평탄화 [#56132](https://github.com/ClickHouse/ClickHouse/pull/56132) ([Kruglov Pavel](https://github.com/Avogar)).
* 삽입 시 프로젝션과 `aggregate_functions_null_for_empty` 설정에서 발생하던 버그를 수정했습니다. [#56944](https://github.com/ClickHouse/ClickHouse/pull/56944) ([Amos Bird](https://github.com/amosbird)).
* 오래된 프로필 UUID로 인해 발생할 수 있는 예외를 해결했습니다 [#57263](https://github.com/ClickHouse/ClickHouse/pull/57263) ([Vasily Nemkov](https://github.com/Enmk)).
* StreamingFormatExecutor에서 읽기 buffer 작업 관련 문제 수정 [#57438](https://github.com/ClickHouse/ClickHouse/pull/57438) ([Kruglov Pavel](https://github.com/Avogar)).
* 뷰로 푸시하는 동안 대상 테이블이 삭제된 MV는 무시하도록 수정 [#57520](https://github.com/ClickHouse/ClickHouse/pull/57520) ([Kruglov Pavel](https://github.com/Avogar)).
* ALTER\_METADATA와 MERGE\_PARTS 사이에서 발생할 수 있는 경쟁 상태를 해소했습니다 [#57755](https://github.com/ClickHouse/ClickHouse/pull/57755) ([Azat Khuzhin](https://github.com/azat)).
* ROLLUP이 포함된 GROUP BY의 표현식 순서 버그 수정 [#57786](https://github.com/ClickHouse/ClickHouse/pull/57786) ([Chen768959](https://github.com/Chen768959)).
* 사용 중단된 "zero-copy" 복제 기능 관련 수정: 손상된 분리된 파트가 있는 레플리카를 삭제한 후 blob이 손실되는 문제를 수정했습니다 [#58333](https://github.com/ClickHouse/ClickHouse/pull/58333) ([Alexander Tokmakov](https://github.com/tavplubix)).
* 사용자가 user\_files\_path에서 심볼릭 링크를 사용할 수 있도록 지원 [#58447](https://github.com/ClickHouse/ClickHouse/pull/58447) ([Duc Canh Le](https://github.com/canhld94)).
* graphite 테이블에 agg 함수가 없을 때 발생하던 크래시를 수정했습니다 [#58453](https://github.com/ClickHouse/ClickHouse/pull/58453) ([Duc Canh Le](https://github.com/canhld94)).
* materialized view에서 여러 차례 읽을 수 있도록 StorageKafka의 읽기를 지연 [#58477](https://github.com/ClickHouse/ClickHouse/pull/58477) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* 비정상적으로 겹치는 파트 문제 수정 [#58482](https://github.com/ClickHouse/ClickHouse/pull/58482) ([Alexander Tokmakov](https://github.com/tavplubix)).
* LIMIT 절만 있는 쿼리에서는 MergeTreePrefetchedReadPool 비활성화 [#58505](https://github.com/ClickHouse/ClickHouse/pull/58505) ([Maksim Kita](https://github.com/kitaisreal)).
* 복원 중 Ordinary 데이터베이스를 활성화합니다 [#58520](https://github.com/ClickHouse/ClickHouse/pull/58520) ([Jihyuk Bok](https://github.com/tomahawk28)).
* Apache Hive에서 ORC/Parquet/...을 읽을 때의 스레드 풀 문제 수정 [#58537](https://github.com/ClickHouse/ClickHouse/pull/58537) ([sunny](https://github.com/sunny19930321)).
* `system.backup_log`의 `base_backup_name` 컬럼에서 자격 증명 숨기기 [#58550](https://github.com/ClickHouse/ClickHouse/pull/58550) ([Daniel Pozo Escalona](https://github.com/danipozo)).
* 밀리초 및 마이크로초 값의 반올림을 위한 `toStartOfInterval` [#58557](https://github.com/ClickHouse/ClickHouse/pull/58557) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* ConcurrentHashJoin에서 `max_joined_block_rows`를 비활성화 [#58595](https://github.com/ClickHouse/ClickHouse/pull/58595) ([vdimir](https://github.com/vdimir)).
* 기존 분석기에서 널 허용을 사용하는 join 관련 문제 수정 [#58596](https://github.com/ClickHouse/ClickHouse/pull/58596) ([vdimir](https://github.com/vdimir)).
* `makeDateTime64`: 상수가 아닌 fraction 인수를 허용 [#58597](https://github.com/ClickHouse/ClickHouse/pull/58597) ([Robert Schulze](https://github.com/rschu1ze)).
* 인라인 프레임을 심볼화하는 과정에서 발생할 수 있는 NULL 역참조를 수정했습니다 [#58607](https://github.com/ClickHouse/ClickHouse/pull/58607) ([Azat Khuzhin](https://github.com/azat)).
* 재생성된 사용자 또는 역할 전환 시에도 쿼리 캐시 엔트리의 격리가 더 잘 유지되도록 개선했습니다 [#58611](https://github.com/ClickHouse/ClickHouse/pull/58611) ([Robert Schulze](https://github.com/rschu1ze)).
* 프로젝션 최적화 수행 시 파티션 키 분석이 잘못되는 문제 수정 [#58638](https://github.com/ClickHouse/ClickHouse/pull/58638) ([Amos Bird](https://github.com/amosbird)).
* 쿼리 캐시: 사용자별 할당량 수정 [#58731](https://github.com/ClickHouse/ClickHouse/pull/58731) ([Robert Schulze](https://github.com/rschu1ze)).
* 병렬 윈도우 함수의 스트림 파티셔닝을 수정했습니다 [#58739](https://github.com/ClickHouse/ClickHouse/pull/58739) ([Dmitry Novik](https://github.com/novikd)).
* addBatchLookupTable8에서 예외가 발생할 때 destroy가 두 번 호출되는 문제를 수정했습니다 [#58745](https://github.com/ClickHouse/ClickHouse/pull/58745) ([Raúl Marín](https://github.com/Algunenano)).
* 종료 중에는 Keeper에서 요청을 처리하지 않도록 변경 [#58765](https://github.com/ClickHouse/ClickHouse/pull/58765) ([Antonio Andelic](https://github.com/antonio2368)).
* `SlabsPolygonIndex::find`에서 널 포인터 역참조 문제를 수정했습니다 [#58771](https://github.com/ClickHouse/ClickHouse/pull/58771) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* LowCardinality(Nullable) 컬럼용 JSONExtract 함수 수정 [#58808](https://github.com/ClickHouse/ClickHouse/pull/58808) ([vdimir](https://github.com/vdimir)).
* CREATE 및 DROP으로 대량의 테이블을 생성하는 동안 메모리 사용량이 예기치 않게 누적되던 문제를 수정했습니다. [#58831](https://github.com/ClickHouse/ClickHouse/pull/58831) ([Maksim Kita](https://github.com/kitaisreal)).
* mv에서 FileLog 스토리지 다중 읽기 [#58877](https://github.com/ClickHouse/ClickHouse/pull/58877) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
* S3 액세스 키 ID 제한. [#58900](https://github.com/ClickHouse/ClickHouse/pull/58900) ([MikhailBurdukov](https://github.com/MikhailBurdukov)).
* 제안 로딩 중 clickhouse-local에서 발생할 수 있는 비정상 종료를 수정 [#58907](https://github.com/ClickHouse/ClickHouse/pull/58907) ([Kruglov Pavel](https://github.com/Avogar)).
* `indexHint` 사용 시 발생하던 충돌을 수정했습니다 [#58911](https://github.com/ClickHouse/ClickHouse/pull/58911) ([Dmitry Novik](https://github.com/novikd)).
* 서버 재시작 시 StorageURL에서 헤더가 유지되지 않는 문제를 수정했습니다 [#58933](https://github.com/ClickHouse/ClickHouse/pull/58933) ([Michael Kolupaev](https://github.com/al13n321)).
* 분석기: 삽입 블록으로 스토리지를 대체하던 문제 수정 [#58958](https://github.com/ClickHouse/ClickHouse/pull/58958) ([Yakov Olkhovskiy](https://github.com/yakov-olkhovskiy)).
* ReadBufferFromZipArchive의 seek 수정 [#58966](https://github.com/ClickHouse/ClickHouse/pull/58966) ([Michael Kolupaev](https://github.com/al13n321)).
* 실험적 역인덱스(프로덕션에서는 사용하지 마십시오)에 대한 수정: 이제 역인덱스에 `DROP INDEX`를 수행하면 영구 저장소에서 관련 파일이 모두 삭제됩니다 [#59040](https://github.com/ClickHouse/ClickHouse/pull/59040) ([mochi](https://github.com/MochiXu)).
* query\_factories\_info에서 발생하는 data race 문제 수정 [#59049](https://github.com/ClickHouse/ClickHouse/pull/59049) ([Kseniia Sumarokova](https://github.com/kssenii)).
* "Too many redirects" 오류에 대한 재시도 비활성화 [#59099](https://github.com/ClickHouse/ClickHouse/pull/59099) ([skyoct](https://github.com/skyoct)).
* 시작되지 않은 데이터베이스를 종료할 때 발생하는 교착 상태 수정 [#59137](https://github.com/ClickHouse/ClickHouse/pull/59137) ([Sergei Trifonov](https://github.com/serxa)).
* 수정: 분산 쿼리에서 LIMIT BY 및 LIMIT [#59153](https://github.com/ClickHouse/ClickHouse/pull/59153) ([Igor Nikonov](https://github.com/devcrafter)).
* 널 허용 시간대 사용 시 `toString` 충돌 수정 [#59190](https://github.com/ClickHouse/ClickHouse/pull/59190) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* 잘못된 파일 경로로 인해 Iceberg 메타데이터 처리 중 발생하는 중단 문제 수정 [#59275](https://github.com/ClickHouse/ClickHouse/pull/59275) ([Kruglov Pavel](https://github.com/Avogar)).
* Rust 대상 select에서 아키텍처 이름 수정 [#59307](https://github.com/ClickHouse/ClickHouse/pull/59307) ([p1rattttt](https://github.com/p1rattttt)).
* IN 절의 서브쿼리를 사용해 `system.tables`를 쿼리할 때 발생하던 "not-ready set" 관련 논리 오류를 수정했습니다. [#59351](https://github.com/ClickHouse/ClickHouse/pull/59351) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).

<div id="changelog-for-2023">
  ## [2023년 변경 이력](/ko/resources/changelogs/oss/2023)
</div>
