본문으로 바로가기
본문으로 바로가기

변경 내역 2026

ClickHouse 26.1 릴리스, 2026-01-29. 발표 자료, 발표 영상

하위 호환되지 않는 변경 사항

  • formatter에서 별칭(alias)을 잘못 치환하여 발생한 일관성 없는 서식을 수정합니다. 이 변경으로 #82833이(가) 해결됩니다. #82832도 해결됩니다. #68296도 해결됩니다. 이 변경으로 인해 잠재적인 하위 호환성 문제가 발생할 수 있습니다. analyzer가 비활성화된 경우, IN 절에서 별칭을 참조하는 일부 CREATE VIEW 쿼리는 처리되지 않습니다. 이러한 비호환성을 방지하려면 analyzer를 활성화해야 합니다(24.3부터 기본값으로 활성화되어 있습니다). #82838 (Alexey Milovidov).
  • 코덱 DEFLATE_QPLZSTD_QAT가 제거되었습니다. 업그레이드하기 전에 DEFLATE_QPL 또는 ZSTD_QAT로 압축된 기존 데이터를 다른 코덱으로 변환할 것을 권장합니다. 이 코덱들을 사용하려면 enable_deflate_qpl_codecenable_zstd_qat_codec 설정을 활성화해야 했다는 점에 유의하십시오. #92150 (Robert Schulze).
  • system.query_log.exception에서 stderr 캡처를 활성화하여 UDF 디버깅이 개선되었습니다. 이전에는 UDF stderr가 파일에만 기록되고 쿼리 로그에는 노출되지 않아 디버깅이 불가능했습니다. 이제 stderr가 기본적으로 예외를 발생시키며, 예외를 던지기 전에 완전히 수집(최대 1MB)되므로, system.query_log.exception에 전체 Python traceback과 오류 메시지가 표시되어 효과적인 문제 해결이 가능합니다. #92209 (Xu Jia).
  • JOIN USING () 절에서 컬럼 목록이 비어 있는 경우 이제 구문 오류로 간주됩니다. 이전에는 쿼리 실행 중 INVALID_JOIN_ON_EXPRESSION이어야 했습니다. 그러나 Join 스토리지와 조인하는 경우와 같이 일부 상황에서는 LOGICAL_ERROR로 이어졌으며, 이 문제를 해결하여 #82502를 닫습니다. #92371 (Vladimir Cherkasov).
  • 기본적으로 JSON 타입에서 SKIP REGEXP에 부분 일치를 사용합니다. 관련 이슈 #79250를 종료합니다. #92847 (Pavel Kruglov).
  • "단순 ALIAS 컬럼에 INSERT를 허용" 기능을 되돌립니다 (ClickHouse/ClickHouse#84154 변경 사항 되돌림). 이 기능은 사용자 정의 포맷에서는 동작하지 않고, 설정으로 제어되지 않습니다. #92849 (Azat Khuzhin).
  • 데이터 레이크 카탈로그가 객체 스토리지에 대한 액세스 권한이 없으면 오류를 발생하도록 하는 설정. #93606 (Konstantin Vedernikov).
  • Lazy 데이터베이스 엔진이 제거되어 더 이상 사용할 수 없습니다. 이 변경으로 #91231 이슈가 종료되었습니다. #93627 (Alexey Milovidov).
  • 버그로 인해 사용할 수 없어 metric_logtransposed_with_wide_view 모드를 제거했습니다. 이제 이 모드로 system.metric_log를 정의하는 것은 불가능합니다. 이는 #78412의 변경 사항을 부분적으로 되돌립니다. #93867 (Alexey Milovidov).
  • 워크로드용 CPU 스케줄링은 이제 기본적으로 선점형으로 동작합니다. cpu_slot_preemption 서버 설정을 참조하십시오. #94060 (Sergei Trifonov).
  • 손상된 파트가 생기지 않도록 인덱스 파일 이름을 이스케이프합니다. 이 변경으로 인해 이전 버전에서 생성된 인덱스 중 이름에 비-ASCII 문자가 포함된 것은 ClickHouse가 로드하지 못하게 됩니다. 이를 처리하려면 MergeTree 설정 escape_index_filenames을(를) 사용할 수 있습니다. #94079 (Raúl Marín).
  • 포맷용 SETTING이던 exact_rows_before_limit, rows_before_aggregation, cross_to_inner_join_rewrite, regexp_dict_allow_hyperscan, regexp_dict_flag_case_insensitive, regexp_dict_flag_dotall, dictionary_use_async_executor는 이제 일반적인(포맷 전용이 아닌) SETTING으로 변경되었습니다. 이는 전적으로 내부적인 변경으로서, Iceberg, DeltaLake, Kafka, S3, S3Queue, Azure, Hive, RabbitMQ, Set, FileLog 또는 NATS 테이블 엔진 정의에서 이러한 SETTING을 명시적으로 지정한 (드문) 경우를 제외하면 사용자에게 보이는 영향은 없습니다. 이러한 경우, 이전에는 이 SETTING들이 무시되었지만 이제는 해당 정의가 오류를 발생시킵니다. #94106 (Robert Schulze).
  • joinGet/joinGetOrNull 함수는 이제 기반이 되는 Join 테이블에 대해 SELECT 권한을 요구합니다. 이 변경 이후에는 joinGet('db.table', 'column', key)를 실행하려면 Join 테이블에 정의된 키 컬럼과 조회되는 속성 컬럼 모두에 대해 SELECT 권한이 있어야 합니다. 이러한 권한이 없는 쿼리는 ACCESS_DENIED 오류와 함께 실패합니다. 마이그레이션을 위해 전체 테이블 단위 접근 권한이 필요하면 GRANT SELECT ON db.join_table TO user를, 컬럼 단위 접근 권한이 필요하면 GRANT SELECT(key_col, attr_col) ON db.join_table TO user를 사용하여 필요한 권한을 부여하십시오. 이 변경은 이전에 명시적인 SELECT 권한이 설정되지 않았던 joinGet/joinGetOrNull에 의존하는 모든 사용자와 애플리케이션에 영향을 줍니다. #94307 (Vladimir Cherkasov).
  • 이제 CREATE TABLE ... AS ... 쿼리에 대해 SHOW COLUMNS 권한을 확인합니다. 이전에는 SHOW TABLES 권한을 확인했는데, 이 유형의 권한 검사에는 올바르지 않은 grant였습니다. #94556 (pufit).
  • Hash 출력 형식이 블록 크기와 무관하게 동작하도록 변경되었습니다. #94503 (Alexey Milovidov). 이로 인해 이전 버전과 비교했을 때 출력되는 해시 값이 달라진다는 점에 유의하십시오.

새 기능

  • ClickHouse Keeper용 HTTP API 및 내장 웹 UI. #78181 (pufitspeeedmaster).
  • 비동기 INSERT 중복 제거가 이제 의존하는 materialized view와 함께 동작합니다. block_id 충돌이 발생하면, 원래 블록에서 해당 block_id와 연결된 행을 제거하도록 필터링하고, 남은 행에 관련된 모든 materialized view의 SELECT 쿼리를 적용합니다. 이를 통해 충돌하는 행이 없는 원래 블록이 다시 생성됩니다. #89140 (Sema Checherinda). materialized view가 관련된 경우에도 비동기 INSERT와 함께 중복 제거를 사용할 수 있습니다. #93957 (Sema Checherinda).
  • projection 인덱스 기능을 단순화하고 확장하기 위한 새로운 구문과 프레임워크를 도입했습니다. https://github.com/ClickHouse/ClickHouse/pull/81021의 후속 변경입니다. #91844 (Amos Bird).
  • Array 컬럼에 대한 텍스트 인덱스 지원을 추가했습니다. #89895 (Jimmy Aguilar Mena).
  • 기본적으로 use_variant_as_common_type를 활성화해 Array 내부, UNION 쿼리, 그리고 if/multiIf/case 분기에서 서로 호환되지 않는 타입도 사용할 수 있도록 했습니다. #90677 (Alexey Milovidov).
  • 새 시스템 테이블 zookeeper_info를 도입했습니다. #88014를 구현했습니다. #90809 (Smita Kulkarni).
  • 모든 함수에서 Variant 타입을 지원합니다. #90900 (Bharat Nallan).
  • Prometheus /metrics 엔드포인트에 주로 버전 정보를 담는 ClickHouse_Info 메트릭을 추가하여, 시간 경과에 따른 상세한 버전 정보를 추적하는 차트를 생성할 수 있도록 합니다. #91125 (Christoph Wurm).
  • 클러스터 구성을 변경할 수 있도록 하는 Keeper용 새로운 네 글자 명령 rcfg를 도입합니다. 이 명령은 표준 reconfigure 요청보다 더 폭넓은 구성 변경을 지원합니다. 이 명령은 인자로 json 문자열을 받습니다. TCP 인터페이스로 전송되는 전체 바이트 시퀀스는 다음과 같은 형식이어야 합니다: rcfg{json_string_length_big_endian}{json_string}. 명령 예시는 다음과 같습니다: {"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}. #91354 (alesapin).
  • 지정한 구분 기호로 분리된 문자열에서 각 부분 문자열의 순서를 뒤집는 reverseBySeparator FUNCTION을 추가합니다. #91463를 해결합니다. #91780 (Xuewei Wang).
  • 삽입되는 블록의 구성을 더 세밀하게 제어할 수 있도록 하는 새로운 설정 max_insert_block_size_bytes가 추가되었습니다. #92833 (Kirill Kopnev).
  • ignore_on_cluster_for_replicated_database 설정이 활성화된 경우, 복제된 데이터베이스(Replicated database)에 대해 ON CLUSTER 절을 포함한 DDL 쿼리를 실행할 수 있습니다. 이때 클러스터 이름은 무시됩니다. #92872 (Kirill).
  • mergeTreeAnalyzeIndexes 함수를 구현했습니다. #92954 (Azat Khuzhin).
  • 새로운 설정 use_primary_key를 추가했습니다. 기본 키를 기반으로 한 granule 프루닝을 비활성화하려면 false로 설정하십시오. #93319 (Nihal Z. Miaji).
  • icebergLocalCluster 테이블 함수를 추가합니다. #93323 (Anton Ivashkin).
  • 두 점 사이의 코사인 거리를 근사 계산하는 cosineDistanceTransposed FUNCTION을 추가했습니다. #93621 (Raufs Dunamalijevs).
  • 각 데이터 파트에 포함된 파일 수를 보여주는 files 컬럼을 system.parts 테이블에 추가합니다. #94337 (Match).
  • 동시성 제어를 위해 max-min fair 스케줄러를 추가합니다. 많은 쿼리가 제한된 CPU 슬롯을 두고 경쟁하는 리소스 과할당 상태에서 더 나은 공정성을 제공합니다. 장시간 실행되는 쿼리가 시간이 지나며 더 많은 슬롯을 축적하더라도, 짧게 실행되는 쿼리가 불이익을 받지 않습니다. concurrent_threads_scheduler 서버 SETTING을 max_min_fair 값으로 설정하면 활성화됩니다. #94732 (Sergei Trifonov).
  • 서버에 연결할 때 ClickHouse 클라이언트가 TLS SNI를 재정의할 수 있도록 했습니다. #89761 (Matt Klein).
  • joinGet 함수 호출에서 임시 테이블을 지원합니다. #92973 (Eduard Karacharov).
  • DeltaLake 테이블 엔진에서 삭제 벡터를 지원하도록 했습니다. #93852 (Kseniia Sumarokova).
  • deltaLakeCluster에서 deletion vector를 지원합니다. #94365 (Kseniia Sumarokova).
  • 데이터 레이크용 Google Cloud Storage 지원. #93866 (Konstantin Vedernikov).

실험적 기능

성능 개선

  • use_skip_indexes_on_data_read 설정이 이제 기본값으로 활성화되었습니다. 이 설정은 데이터를 스트리밍 방식으로 읽으면서 동시에 필터링을 수행하여 쿼리 성능과 시작 시간을 향상시킵니다. #93407 (Shankar Iyer).
  • LowCardinality 컬럼에서 DISTINCT 연산의 성능을 개선했습니다. #5917을(를) 종료했습니다. #91639 (Nihal Z. Miaji).
  • distinctJSONPaths 집계 함수를 최적화하여 JSON 컬럼 전체가 아니라 데이터 파트에서 JSON 경로만 읽도록 했습니다. #92196 (Pavel Kruglov).
  • 조인으로 더 많은 필터가 푸시다운되도록 개선했습니다. #85556 (Nikita Taranov).
  • 조인 ON 조건에서 필터가 한쪽 입력만 사용하는 경우에 대한 푸시다운을 더 많은 경우에 지원합니다. ANY, SEMI, ANTI 조인을 지원합니다. #92584 (Dmitry Novik).
  • SEMI JOIN에 대한 필터를 푸시다운할 수 있도록 동등한 Set을 사용할 수 있게 했습니다. #85239를 해결합니다. #92837 (Dmitry Novik).
  • 해시 조인에서 오른쪽 입력이 비어 있는 경우 이제 왼쪽 입력 읽기를 건너뜁니다. 이전에는 비어 있지 않은 첫 번째 블록을 찾을 때까지 왼쪽 입력을 계속 읽었기 때문에, 필터링이나 집계가 많이 이루어지는 경우 불필요한 작업이 많이 발생할 수 있었습니다. #94062 (Alexander Gololobov).
  • 쿼리 파이프라인 내부에서 데이터를 파티션으로 분할하기 위해 "fastrange" (Daniel Lemire) 방법을 사용합니다. 이를 통해 병렬 정렬 및 조인 작업이 개선될 수 있습니다. #93080 (Alexey Milovidov).
  • PARTITION BY 절이 정렬 키와 일치하거나 정렬 키의 접두사인 경우 윈도 함수 성능을 향상합니다. #87299 (Nikita Taranov).
  • 외부 필터를 뷰로 푸시다운하여 로컬 및 원격 노드에서 PREWHERE를 적용할 수 있도록 했습니다. #88189를 해결합니다. #88316 (Igor Nikonov).
  • 더 많은 함수에 JIT 컴파일을 적용했습니다. #73509 이슈를 해결했습니다. #88770 (Alexey Milovidov, Taiyang Li와 함께).
  • FINAL 쿼리에서 사용되는 skip 인덱스가 기본 키의 일부인 컬럼에 설정되어 있는 경우, 다른 파트에서 기본 키 교집합을 확인하는 추가 단계를 수행할 필요가 없으므로 이제 수행되지 않습니다. #85897이(가) 해결되었습니다. #93899 (Shankar Iyer).
  • 소수 LIMITOFFSET의 성능 및 메모리 사용량을 최적화했습니다. #91167 (Ahmed Gouda).
  • Parquet Reader V3 prefetcher에서 더 빠른 랜덤 읽기 로직 사용 방식을 수정했습니다. #90890 이슈를 해결했습니다. #91435 (Arsen Muk).
  • icebergCluster의 성능을 향상합니다. #91462 이슈를 종료합니다. #91537 (Yang Jiang).
  • 상수 필터에서는 virtual 컬럼으로 필터링하지 않습니다. #91588 (c-end).
  • adaptive write buffer를 활성화하여 매우 많은 열을 가진 테이블에서 wide 파트를 사용할 때 INSERT/merge 작업의 메모리 사용량을 줄입니다. 암호화된 디스크에서도 adaptive write buffer를 지원합니다. #92250 (Azat Khuzhin).
  • 텍스트 인덱스와 sparseGrams 토크나이저를 사용하는 전문 검색에서 인덱스에 대해 검색되는 토큰 수를 줄여 성능을 개선했습니다. #93078 (Anton Popov).
  • 함수 isValidASCII는 모든 문자가 ASCII인 입력 값과 같이 검사가 통과하는 경우에 최적화되었습니다. #93347 (Robert Schulze).
  • read-in-order 최적화 기능이 이제 WHERE 조건으로 인해 ORDER BY 컬럼의 값이 상수임을 인식하여, 데이터를 역순으로 효율적으로 읽을 수 있습니다. 이로 인해 WHERE tenant='42' ORDER BY tenant, event_time DESC와 같은 멀티 테넌트 쿼리는 전체 정렬이 필요하지 않고 InReverseOrder를 사용한 역순 읽기를 활용할 수 있습니다. #94103 (matanper).
  • Enum AST 전용 클래스를 도입하여 값 파라미터를 ASTLiteral 자식 노드 대신 (문자열, 정수) 쌍으로 저장해 메모리 사용량을 최적화합니다. #94178 (Ilya Yatsishin).
  • 여러 레플리카에 걸쳐 분산 인덱스 분석을 수행합니다. 공유 스토리지를 사용하는 클러스터에서 방대한 양의 데이터를 처리할 때 유용합니다. SharedMergeTree(ClickHouse Cloud)에 적용되며, 공유 스토리지를 사용하는 다른 유형의 MergeTree 테이블에도 적용될 수 있습니다. #86786 (Azat Khuzhin).
  • 다음과 같은 경우 조인 런타임 필터를 비활성화하여 오버헤드를 줄입니다. - 블룸 필터에서 설정된 비트가 너무 많은 경우 - 런타임에 필터링되는 행 수가 너무 적은 경우. #91578 (Alexander Gololobov).
  • 상관 서브쿼리 입력에 인메모리 버퍼를 사용하여 여러 번 평가되는 것을 방지합니다. #79890의 일부입니다. #91205 (Dmitry Novik).
  • 병렬 레플리카 읽기에서 모든 레플리카가 고아 범위(orphaned range)를 선점할 수 있도록 허용합니다. 이렇게 하면 부하 분산이 개선되고 롱테일 지연 시간이 감소합니다. #91374 (zoomxi).
  • 외부 집계/정렬/조인이 이제 모든 컨텍스트에서 쿼리 설정 temporary_files_codec를 따르도록 동작합니다. grace 해시 조인에서 누락되던 프로파일링 이벤트를 수정했습니다. #92388 (Vladimir Cherkasov).
  • 집계/정렬 중 디스크로 스필링이 필요할 때를 판단하기 위한 쿼리 메모리 사용량 감지를 보다 견고하게 만들었습니다. #92500 (Azat Khuzhin).
  • 집계 키 컬럼의 전체 행 수와 NDV(서로 다른 값 개수) 통계를 추정합니다. #92812 (Alexander Gololobov).
  • simdcomp를 사용하여 postings list의 압축을 최적화합니다. #92871 (Peng Jian).
  • 버킷을 사용하도록 S3Queue Ordered 모드 처리를 리팩터링했습니다. 이를 통해 Keeper 요청 수를 줄여 성능을 향상합니다. #92889 (Kseniia Sumarokova).
  • 이제 mapContainsKeyLikemapContainsValueLike 함수는 각각 mapKeys() 또는 mapValues()에 대한 텍스트 인덱스를 활용할 수 있습니다. #93049 (Michael Jarrett).
  • Linux가 아닌 시스템에서 메모리 사용량을 줄입니다(jemalloc dirty 페이지를 즉시 해제하도록 설정). #93360 (Eduard Karacharov).
  • max_server_memory_usage 대비 더티 페이지 크기 비율이 memory_worker_purge_dirty_pages_threshold_ratio를 초과하면 jemalloc arena를 강제로 정리(purge)합니다. #93500 (Eduard Karacharov).
  • AST의 메모리 사용량을 줄였습니다. #93601 (Nikolai Kochetov).
  • 일부 경우 ClickHouse가 테이블을 읽을 때 메모리 제한을 준수하지 않는 문제가 있었습니다. 이 문제가 수정되었습니다. #93715 (Nikita Mikhaylov).
  • 기본적으로 CHECK_STATTRY_REMOVE Keeper 확장을 활성화합니다. #93886 (Mikhail Artemenko).
  • Iceberg 매니페스트 파일 엔트리에서 position delete에 해당하는 파일 이름의 하한과 상한을 파싱하여, 해당 데이터 파일을 보다 정확하게 선택할 수 있도록 했습니다. #93980 (Daniil Ivanik).
  • JSON 컬럼에서 동적 서브컬럼의 최대 개수를 제어하기 위한 두 가지 설정이 추가되었습니다. 첫 번째는 MergeTree 설정인 merge_max_dynamic_subcolumns_in_compact_part로, 이미 추가된 merge_max_dynamic_subcolumns_in_wide_part와 유사하며 Compact 파트로 머지하는 동안 생성되는 동적 서브컬럼의 개수를 제한합니다. 두 번째는 쿼리 수준 설정인 max_dynamic_subcolumns_in_json_type_parsing으로, JSON 데이터를 파싱하는 동안 생성되는 동적 서브컬럼의 개수를 제한하며, 이를 통해 INSERT 시 한도를 지정할 수 있습니다. #94184 (Pavel Kruglov).
  • 일부 경우 JSON 컬럼 압축(squashing) 동작을 약간 최적화했습니다. #94247 (Pavel Kruglov).
  • 프로덕션 환경 운영 경험을 바탕으로 스레드 풀 대기열 크기를 줄였습니다. MergeTree에서 어떤 데이터를 읽기 전에 메모리 사용량을 명시적으로 확인하는 검사를 추가했습니다. #94692 (Nikita Mikhaylov).
  • CPU 리소스 부족 상황에서 스케줄러가 ClickHouse 프로세스를 치명적인 위협으로부터 보호하는 MemoryWorker 스레드를 우선적으로 스케줄링하도록 했습니다. #94864 (Nikita Mikhaylov).
  • jemalloc의 dirty 페이지 정리를 MemoryWorker의 메인 스레드와는 별도의 스레드에서 실행하도록 했습니다. 정리 작업이 느리면 RSS 사용량 업데이트가 지연되고, 이로 인해 프로세스가 메모리 부족(out of memory)으로 종료될 수 있습니다. 전체 메모리 사용량 비율에 따라 dirty 페이지 정리를 시작하도록 하는 새로운 설정 memory_worker_purge_total_memory_threshold_ratio를 도입했습니다. #94902 (Antonio Andelic).

개선 사항

  • system.blob_storage_log가 이제 Azure Blob Storage용으로 제공됩니다. #93105 (Alexey Milovidov).
  • Local 및 HDFS용 blob_storage_log를 구현합니다. S3Queueblob_storage_log에 로깅할 때 디스크 이름이 아닌 다른 값을 사용하는 경우 발생하던 오류를 수정합니다. blob_storage_logerror_code 컬럼을 추가합니다. 로컬 테스트를 단순화하기 위해 테스트용 구성 파일을 분리합니다. #93106 (Alexey Milovidov).
  • clickhouse-clientclickhouse-local은(는) 입력하는 동안 숫자 리터럴 내의 자리수 구분(천 단위, 백만 단위 등)을 강조 표시합니다. 이로써 #93100이(가) 해결되었습니다. #93108 (Alexey Milovidov).
  • clickhouse-client에서 등호(=) 양쪽에 공백이 있는 커맨드라인 인수를 지원하도록 했습니다. #93077 이슈를 해결합니다. #93174 (Cole Smith).
  • <interactive_history_legacy_keymap>true</interactive_history_legacy_keymap>로 설정하면 CLI 클라이언트에서 이전과 마찬가지로 일반 검색에 Ctrl-R을 다시 사용할 수 있고, Ctrl-T는 퍼지(fuzzy) 검색을 수행합니다. #87785 (Larry Snizek).
  • 캐시를 비우는 구문인 SYSTEM DROP [...] CACHE는 캐시를 비활성화하는 명령으로 오해를 불러일으켰습니다. 이제 ClickHouse는 더 명확한 구문인 SYSTEM CLEAR [...] CACHE를 지원합니다. 기존 구문도 계속 사용할 수 있습니다. #93727 (Pranav Tiwari).
  • EmbeddedRocksDB에서 여러 컬럼을 기본 키(primary key)로 사용할 수 있도록 지원합니다. #32819를 해결합니다. #33917 (usurai).
  • 이제 스칼라 값에 대해 상수가 아닌 IN 조건(non-constant IN)을 사용할 수 있습니다(예: val1 NOT IN if(cond, val2, val3) 형태의 쿼리). #93495 (Yarik Briukhovetskyi).
  • 지원되지 않는 x-amz-server-side-encryption 헤더가 HeadObject, UploadPartCompleteMultipartUpload S3 요청으로 전달되지 않도록 했습니다. #64577 (Francisco J. Jurado Moreno).
  • S3Queue에서 ordered 모드의 hive 파티셔닝을 추적하도록 했습니다. #71161을(를) 해결했습니다. #81040 (Anton Ivashkin).
  • 파일 시스템 캐시의 공간 예약을 최적화합니다. FileCache::collectCandidatesForEviction는 unique lock 없이 실행됩니다. #82764 (Kseniia Sumarokova).
  • 서버 로그에 크기 및 시간 기준의 복합 로그 로테이션 전략을 지원합니다. #87620 (Jianmei Zhang).
  • CLI 클라이언트에서 이제 명령줄 --no-warnings 대신 <warnings>false</warnings>를 지정할 수 있게 되었습니다. #87783 (Larry Snizek).
  • avg 집계 FUNCTION이 인자로 Date, DateTime 및 Time 값을 지원하도록 기능을 추가합니다. #82267 이슈를 종료합니다. #87845 (Yarik Briukhovetskyi).
  • use_join_disjunctions_push_down 최적화는 기본적으로 활성화되어 있습니다. #89313 (Alexey Milovidov).
  • 상관 서브쿼리에서 더 많은 테이블 엔진과 데이터 소스 유형을 지원하도록 개선했습니다. #80775 이슈를 종료합니다. #90175 (Dmitry Novik).
  • 파라미터화된 VIEW의 스키마를 명시적으로 지정한 경우, 해당 스키마가 표시되도록 했습니다. #88875, #81385 이슈를 해결했습니다. #90220 (Grigorii Sokolik).
  • Keeper 로그 엔트리가 마지막으로 커밋된 인덱스보다 이전인 경우, 해당 로그 엔트리 사이의 누락 구간을 올바르게 처리합니다. #90403 (Antonio Andelic).
  • min_free_disk_bytes_to_perform_insert 설정이 JBOD 볼륨에서 올바르게 작동하도록 개선했습니다. #90878 (Aleksandr Musorin).
  • S3 테이블 엔진과 s3 테이블 함수용 명명된 컬렉션에서 storage_class_name 설정을 지정할 수 있도록 했습니다. #91926 (János Benjamin Antal).
  • system.zookeeper를 통해 보조 ZooKeeper 인스턴스를 추가하는 기능을 지원합니다. #92092 (RinChanNOW).
  • Keeper에 새로운 메트릭을 추가했습니다. KeeperChangelogWrittenBytes, KeeperChangelogFileSyncMicroseconds, KeeperSnapshotWrittenBytes, KeeperSnapshotFileSyncMicroseconds를 프로파일 이벤트로 추가했으며, KeeperBatchSizeElementsKeeperBatchSizeBytes를 히스토그램 메트릭으로 추가했습니다. #92149 (Miсhael Stetsyuk).
  • 새로운 설정인 trace_profile_events_list를 추가하여 trace_profile_event 추적을 지정된 이벤트 이름 목록으로만 제한합니다. 이를 통해 대규모 워크로드에서 더 정밀한 데이터 수집이 가능합니다. #92298 (Alexey Milovidov).
  • 일시 중지 가능한 failpoint에서 SYSTEM NOTIFY FAILPOINT를 지원합니다. - SYSTEM WAIT FAILPOINT fp PAUSE/RESUME를 지원합니다. #92368 (Shaohua Wang).
  • system.data_skipping_indicescreation 컬럼(암시적/명시적)을 추가합니다. #92378 (Raúl Marín).
  • YTsaurus 동적 테이블의 컬럼 설명을 딕셔너리 소스에 전달할 수 있게 되었습니다. #92391 (MikhailBurdukov).
  • #63985에서 포트별로 TLS 구성을 위해 필요한 모든 매개변수를 지정할 수 있도록 개선하여(자세한 내용은 composable protocols 참고), 전역 TLS 구성에 의존하지 않아도 되도록 했습니다. 그러나 구현 상 여전히 전역 openSSL.server 구성 섹션이 존재해야 한다는 암묵적인 요구 사항이 있어, 포트마다 서로 다른 TLS 구성이 필요한 환경과 충돌합니다. 예를 들어 keeper-in-server 배포에서는 Keeper 간 통신과 ClickHouse 클라이언트 연결을 위해 서로 다른 TLS 구성이 필요합니다. #92457 (Miсhael Stetsyuk).
  • 이진 형식으로 디코딩될 수 있는 타입 노드의 총 개수를 제한하여 악의적인 페이로드를 방지하기 위한 새로운 설정 input_format_binary_max_type_complexity를 추가했습니다. #92519 (Raufs Dunamalijevs).
  • 실행 중인 작업을 system.background_schedule_pool{,_log}에 반영했습니다. 관련 문서를 추가했습니다. #92587 (Azat Khuzhin).
  • 히스토리에서 일치 항목을 찾지 못한 경우 클라이언트의 Ctrl+R 검색 시 현재 쿼리를 실행하도록 했습니다. #92749 (Azat Khuzhin).
  • EXPLAIN indexes = 1의 별칭으로 EXPLAIN indices = 1를 지원합니다. #92483를 해결합니다. #92774 (Pranav Tiwari).
  • Parquet 리더는 이제 Tuple 또는 맵 컬럼을 JSON으로 읽을 수 있습니다. 따라서 f.parquet에서 컬럼 x의 타입이 tuple 또는 map이어도 select x from file(f.parquet, auto, 'x JSON') 쿼리가 정상적으로 동작합니다. #92864 (Michael Kolupaev).
  • Parquet 리더에서 빈 튜플을 지원하도록 했습니다. #92868 (Michael Kolupaev).
  • Azure Blob Storage에서 네이티브 copy가 BadRequest(예: 잘못된 block list)로 실패할 경우 read-write copy로 폴백하도록 했습니다. 이전에는 서로 다른 storage account로 blob을 복사하는 동안 발생하는 Unauthorized 오류에 대해서만 이 동작을 수행했습니다. 하지만 때때로 「The specified block list is invalid」 오류도 발생합니다. 그래서 이제는 모든 네이티브 copy 실패에 대해 read & write로 폴백하도록 조건을 업데이트했습니다. #92888 (Smita Kulkarni).
  • EC2 인스턴스 프로파일 자격 증명을 사용하여 다수의 동시 S3 쿼리를 실행할 때 발생하던 EC2 메타데이터 엔드포인트 스로틀링 문제를 수정합니다. 이전에는 각 쿼리가 자체 AWSInstanceProfileCredentialsProvider 를 생성하여 EC2 메타데이터 서비스에 대한 동시 요청을 발생시켜, 이로 인해 타임아웃과 HTTP response code: 403 오류가 발생할 수 있었습니다. 이제 자격 증명 프로바이더는 캐시되어 모든 쿼리에서 공유됩니다. #92891 (Sav).
  • 하위 호환성을 유지할 수 있도록 insert_select_deduplicate SETTING을 재작업했습니다. #92951 (Sema Checherinda).
  • 과도한 작업 로깅을 방지하기 위해 평균보다 느린 백그라운드 작업만 로깅합니다 (background_schedule_pool_log.duration_threshold_milliseconds=30). #92965 (Azat Khuzhin).
  • 이전 버전에서는 일부 C++ 함수 이름이 system.trace_logsystem.symbols에서 맹글링된 이름(「mangled」)으로 올바르지 않게 표시되었고, demangle 함수가 이를 제대로 처리하지 못했습니다. #93074 이슈를 해결합니다. #93075 (Alexey Milovidov).
  • backup_data_from_refreshable_materialized_view_targets 백업 설정을 도입하여 갱신 가능 구체화 뷰(refreshable materialized view)를 백업에서 제외할 수 있도록 했습니다. APPEND 갱신 전략을 사용하는 RMV는 항상 백업됩니다. #93076 (Julia Kartseva). #93658 (Julia Kartseva)
  • 함수와 같은 무거운 translation unit에 대해서는 디버그 정보를 완전히 제거하는 대신 최소한의 디버그 정보를 사용하도록 했습니다. #93079 (Alexey Milovidov).
  • MinIO 특화 오류에 대한 오류 코드 매핑을 구현하여 AWS S3 C++ SDK에 MinIO 호환성 지원을 추가했습니다. 이 변경으로 MinIO 배포를 AWS S3 대신 사용할 때 ClickHouse가 MinIO 서버 오류를 적절히 처리하고 재시도할 수 있게 되어, 자체 호스팅 MinIO 클러스터에서 객체 스토리지를 운영하는 환경의 신뢰성이 향상됩니다. #93082 (XiaoBinMu).
  • 기호화된 jemalloc 프로파일을 기록하여 힙 프로파일을 생성할 때 바이너리 파일이 필요 없도록 했습니다. #93099 (Azat Khuzhin).
  • 대형 커밋이나 잘못된 커밋에서 동작이 깨져 있던 clickhouse git-import 도구를 복구했습니다. 자세한 내용은 https://presentations.clickhouse.com/2020-matemarketing/를 참조하십시오. #93202 (Alexey Milovidov).
  • URL storage에 저장된 비밀번호를 쿼리 로그에 표시하지 않습니다. #93245 (Konstantin Vedernikov).
  • flipCoordinates에서 Geometry 타입을 지원하도록 했습니다. #93303 (Bharat Nallan).
  • SYSTEM INSTRUMENT ADD/REMOVE의 UX를 개선했습니다. FUNCTION 이름에는 String 리터럴을 사용하고, 일치하는 모든 FUNCTION에 패치를 적용하며, REMOVE에서 function_name을 사용할 수 있도록 했습니다. #93345 (Pablo Marcos).
  • 머지 중 통계를 구체화할지 여부를 제어하는 새로운 설정 materialize_statistics_on_merge가 추가되었습니다. 기본값은 1입니다. #93379 (Han Fei).
  • ClickHouse는 이제 DESCRIBE SELECT 쿼리에서 SELECT 주변에 괄호를 쓰지 않고도 파싱할 수 있습니다. #58382 이슈를 해결했습니다. #93429 (Yarik Briukhovetskyi).
  • 확률 기반으로 캐시 정확성 검사에 무작위화를 도입했습니다. #93439 (Kseniia Sumarokova).
  • JSON에서 하나는 리터럴이고 다른 하나는 중첩 객체인 경우(예: {"a" : 42, "a" : {"b" : 42}}) 중복된 경로를 허용하기 위한 설정 type_json_allow_duplicated_key_with_literal_and_nested_object가 추가되었습니다. 일부 데이터는 중복된 경로에 대한 이 제한이 https://github.com/ClickHouse/ClickHouse/pull/79317 에 도입되기 이전에 생성되었을 수 있으며, 이러한 데이터에 대해 후속 처리를 수행하면 현재는 오류가 발생할 수 있습니다. 이 설정을 사용하면 이러한 기존 데이터도 오류 없이 계속 사용할 수 있습니다. #93604 (Pavel Kruglov).
  • Pretty JSON 형식에서 단순 타입 값은 별도의 줄에 출력되지 않습니다. #93836 (Pavel Kruglov).
  • alter table ... modify setting ... SQL 문이 여러 개일 경우 5초 이내에 잠금을 획득하지 못할 수 있습니다. 이때 logical error 대신 timeout을 반환하는 것이 더 좋습니다. #93856 (Han Fei).
  • 구문 오류 발생 시 과도한 출력이 되지 않도록 변경했습니다. 이 변경 이전에는 SQL 스크립트 전체를 출력했으며, 여기에 많은 수의 쿼리가 포함될 수 있었습니다. #93876 (Alexey Milovidov).
  • Keeper에서 통계가 포함된 check 요청의 바이트 크기를 정확하게 계산하도록 했습니다. #93907 (Mikhail Artemenko).
  • 조인 재정렬 시 런타임 해시 테이블 크기 통계를 사용할지 여부를 제어하는 use_hash_table_stats_for_join_reordering 설정을 추가했습니다. 이 설정은 기본적으로 활성화되어 있으며, collect_hash_table_stats_during_joins의 기존 동작을 유지합니다. #93912 (Vladimir Cherkasov).
  • 이제 system.server_settings 테이블에서 중첩된 전역 서버 설정(예: logger.level)을 일부까지 조회할 수 있습니다. 이는 고정된 구조를 가진 설정에만 적용되며, 목록, 열거형, 반복 등이 포함된 설정은 제외됩니다. #94001 (Hechem Selmi).
  • QBit은(는) 이제 동등 비교를 지원합니다. #94078 (Raufs Dunamalijevs).
  • Keeper가 손상된 스냅샷 또는 불일치하는 변경 로그를 감지하면, 프로세스를 수동으로 중단하거나 파일을 자동으로 정리하는 대신 예외를 발생시킵니다. 이를 통해 수동 개입을 전제로 하는 Keeper의 동작이 더 안전해집니다. #94168 (Antonio Andelic).
  • CREATE TABLE이 실패할 때 잔여물이 남을 수 있는 문제를 수정했습니다. #94174 (Azat Khuzhin).
  • 암호로 보호된 TLS 키 사용 시 발생하는 OpenSSL의 초기화되지 않은 메모리 접근 버그를 수정합니다. #94182 (Konstantin Bogdanov).
  • chdig를 v26.1.1로 업데이트했습니다. #94290 (Azat Khuzhin).
  • S3Queue ordered 모드에서 보다 범용적인 파티션 방식을 지원합니다. #94321 (Bharat Nallan).
  • allow_statistics_optimize 설정에 대한 별칭인 use_statistics를 추가했습니다. 이는 기존 설정인 use_primary_keyuse_skip_indexes와 더 일관됩니다. #94366 (Robert Schulze).
  • 숫자(Number) 타입에서 Enum 타입으로 변환할 때 요소가 존재하는지 확인하도록 input_format_numbers_enum_on_conversion_error 설정을 활성화했습니다. #94384 (Elmi Ahmadov).
  • S3(Azure)Queue 정렬(Ordered) 모드에서 제한을 기준으로 실패한 노드를 정리하도록 했습니다(이전에는 실패 및 처리된 노드 모두에 대해 비정렬(Unordered) 모드에서만 정리가 수행되었으나, 이제는 정렬 모드에서도 실패한 노드에 대해서만 정리가 수행됩니다). #94412 (Kseniia Sumarokova).
  • clickhouse-local에서 default USER에 대한 액세스 관리를 사용 가능하도록 했습니다. clickhouse-local의 기본 USER에는 access_management 권한이 없어, USER에 제한이 없어야 함에도 불구하고 DROP ROW POLICY IF EXISTS와 같은 작업이 ACCESS_DENIED 오류와 함께 실패했습니다. #94501 (Alexey Milovidov).
  • YTsaurus 딕셔너리와 테이블에서 named collection을 활성화했습니다. #94582 (MikhailBurdukov).
  • S3 및 Azure Blob Storage용 BACKUP/RESTORE에서 SQL로 정의된 이름이 지정된 컬렉션(named collection)을 지원하도록 기능을 추가합니다. #94604를 해결합니다. #94605 (Pablo Marcos).
  • 정렬 모드 S3Queue에서 파티션 키 기반 버킷화를 지원합니다. #94698 (Bharat Nallan).
  • 가장 오래 실행 중인 머지 작업의 경과 시간을 나타내는 비동기 메트릭을 추가합니다. #94825 (Raúl Marín).
  • IcebergBitmapPositionDeleteTransform를 사용해 position delete를 적용하기 전에 position delete가 해당 파일에 속하는지 확인하는 검사를 추가했습니다. #94897 (Yang Jiang).
  • 이제 view_duration_ms는 그룹 내 스레드 지속 시간의 합이 아니라, 그룹이 활성 상태였던 시간을 보여줍니다. #94966 (Sema Checherinda).
  • hasAnyTokenshasAllTokens 함수에서 검색 토큰의 최대 개수 제한(기존 64개)을 제거했습니다. 예시: SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]); 이 쿼리는 검색 토큰이 65개이므로 BAD_ARGUMENTS 오류가 발생했습니다. 이번 PR로 해당 제한이 완전히 제거되어, 동일한 쿼리가 오류 없이 실행됩니다. #95152 (Elmi Ahmadov).
  • Numbers에서 Enums로의 변환 시 요소가 존재하는지 확인하기 위한 설정 input_format_numbers_enum_on_conversion_error를 추가합니다. Closes: #56144. #56240 (Nikolay Degterinsky).
  • Iceberg 테이블에서 데이터 파일과 position delete 파일을 읽을 때 포맷 파서 리소스를 공유하여 메모리 할당량을 줄였습니다. #94701 (Yang Jiang).

버그 수정(공식 안정 릴리스에서 사용자에게 노출되는 오동작)

  • 미리 정의된 쿼리 핸들러에서 삽입 시 끝에 오는 공백이 데이터로 해석되던 버그를 수정합니다. #83604 (Fabian Ponce).
  • Join storage에서 outer join을 inner join으로 변환하는 최적화가 적용될 때 발생하던 INCOMPATIBLE_TYPE_OF_JOIN 오류를 수정합니다. #80794를 해결합니다. #84292 (Vladimir Cherkasov).
  • 해시 조인을 사용할 때 allow_experimental_join_right_table_sorting가 활성화된 경우 발생하는 예외 "Invalid number of rows in Chunk"를 수정합니다. #86440 (yanglongwei).
  • 파일 시스템이 대소문자를 구분하지 않는 경우에는 MergeTree에서 파일 이름을 항상 해시로 대체하도록 했습니다. 이전에는 macOS와 같이 대소문자를 구분하지 않는 파일 시스템에서 여러 컬럼/서브컬럼 이름이 대소문자만 다른 경우 데이터 손상이 발생할 수 있었습니다. #86559 (Pavel Kruglov).
  • materialized view 내부의 기본 쿼리에 대해 CREATE 단계에서 전체 권한 검사를 수행하도록 합니다. #89180 (pufit).
  • 상수 인자를 사용할 때 icebergHash 함수가 크래시 나는 문제를 수정했습니다. #90335 (Michael Kolupaev).
  • 트랜잭션 없이 수행되는 mutation이 진행 중인 트랜잭션의 파트를 변경하고, 해당 트랜잭션이 최종적으로 롤백될 때 발생하던 논리 오류를 수정합니다. #90469 (Shaohua Wang).
  • 일반 데이터베이스를 atomic 데이터베이스로 변환한 후 system.warnings가 정확하게 업데이트되도록 수정했습니다. #90473 (sdk2).
  • Parquet 파일에서 읽을 때, 쿼리의 다른 위치에서 prewhere 표현식의 일부를 사용할 경우 발생하던 assertion 실패를 수정합니다. #90635 (Max Kainov).
  • Iceberg를 split-by-buckets 모드로 읽을 때 단일 노드 클러스터에서 발생하던 크래시를 수정합니다. 이로써 #90913을(를) 해결합니다. #91553 (Konstantin Vedernikov).
  • 서브컬럼을 읽을 때 Log 엔진에서 발생할 수 있는 논리 오류를 수정합니다. #91710 이슈를 해결합니다. #91711 (Pavel Kruglov).
  • ATTACH AS REPLICATED 작업 중 발생하는 논리적 오류 「Storage does not support transaction」를 수정했습니다. #91772 (Shaohua Wang).
  • LEFT ANTI JOIN에 post-condition이 추가로 있는 경우 runtime filter가 올바르게 동작하지 않던 문제를 수정했습니다. #91824 (Alexander Gololobov).
  • Nothing 타입이 포함된 null-safe 비교에서 발생하던 오류를 수정합니다. #91834를 해결합니다. #84870를 해결합니다. #91821를 해결합니다. #91884 (Yarik Briukhovetskyi).
  • 반복 패턴이 매우 많은 문자열 데이터에 영향을 미치던 네이티브 Parquet 리더의 DELTA_BYTE_ARRAY 디코딩 버그를 수정합니다. #91929 (Daniel Muino).
  • 스키마 추론 시 모든 파일에 대해 캐시하지 않고, glob 패턴으로 찾은 파일 중 스키마를 추론한 해당 파일에 대해서만 스키마를 캐시하도록 했습니다. #91745를 해결합니다. #92006 (Pavel Kruglov).
  • 잘못된 아카이브 엔트리 크기 헤더로 인해 발생하는 Couldn't pack tar archive: Failed to write all bytes 오류를 수정합니다. 이 수정은 #89075를 해결합니다. #92122 (Julia Kartseva).
  • INSERT SELECT에서 HTTP 연결이 닫히는 것을 방지하기 위해 request 스트림을 해제하도록 했습니다. #92175 (Sema Checherinda).
  • USING 절과 join_use_nulls를 사용하는 다중 조인 쿼리에서 발생하는 논리적 오류를 수정합니다. #92251 (Vladimir Cherkasov).
  • join_use_nulls 사용 시 조인 재정렬 과정에서 발생하던 논리 오류를 수정합니다. https://github.com/clickhouse/clickhouse/issues/90795 이슈를 해결합니다. #92289 (Vladimir Cherkasov).
  • 음수 리터럴이 있는 arrayElement의 AST 포맷팅이 일관되지 않은 문제를 수정합니다. #92288 해결 #92212 해결 #91832 해결 #91789 해결 #91735 해결 #88495 해결 #92386 해결. #92293 (Pavel Kruglov).
  • join_on_disk_max_files_to_merge 설정으로 인해 발생할 수 있는 비정상 종료 문제를 수정했습니다. #92335 (Bharat Nallan).
  • 관련 이슈: https://github.com/ClickHouse/support-escalation/issues/6365. #92339 (Tuan Pham Anh).
  • SYSTEM SYNC FILE CACHE에서 누락되어 있던 접근 권한 검사를 수정했습니다. #92101 이슈를 해결했습니다. #92372 (Kseniia Sumarokova).
  • count_distinct_optimization 패스가 윈도우 함수 및 여러 인자에 대해 동작하는 방식을 수정합니다. #92376 (Raúl Marín).
  • 일부 윈도 함수와 함께 특정 집계 함수를 사용할 때 발생하는 "Cannot write to finalized buffer" 오류를 수정합니다. #91415을(를) 해결합니다. #92395 (Jimmy Aguilar Mena).
  • CREATE TABLE ... AS urlCluster() 및 데이터베이스 엔진 Replicated를 함께 사용할 때 발생하는 논리 오류를 수정합니다. #92216을(를) 해결합니다. #92418 (Kseniia Sumarokova).
  • MergeTree에서 mutation 수행 시 소스 파트의 직렬화 정보 설정을 상속합니다. 이로써 데이터 타입의 직렬화가 변경된 이후 mutation이 적용된 파트에 대한 쿼리 결과가 잘못 나올 수 있던 문제를 수정합니다. #92419 (Pavel Kruglov).
  • 동일한 이름을 가진 컬럼과 서브컬럼 간에 발생할 수 있는 충돌을 수정하여 잘못된 직렬화 방식이 사용되거나 쿼리가 실패하는 문제를 해결했습니다. #90219를 해결합니다. #85161를 해결합니다. #92453 (Pavel Kruglov).
  • 외부 조인을 내부 조인으로 변환하는 과정에서 쿼리 플랜이 의도치 않게 수정되어 발생하던 LOGICAL_ERROR를 수정합니다. 또한 조인 과정에서 집계 키에 단사 함수(injective function)가 적용되는 경우에도 이 최적화를 적용할 수 있도록 최적화 조건을 완화합니다. #92503 (János Benjamin Antal).
  • 빈 튜플 컬럼을 정렬하는 동안 발생할 수 있는 SIZES_OF_COLUMNS_DOESNT_MATCH 오류를 수정하여 #92422를 해결했습니다. #92520 (Pavel Kruglov).
  • JSON 타입에서 호환되지 않는 typed path를 확인합니다. #91577 이슈를 해결합니다. #92539 (Pavel Kruglov).
  • Backup 데이터베이스에 대한 SHOW CREATE DATABASE 실행 시 교착 상태가 발생하던 문제를 수정했습니다. #92541 (Azat Khuzhin).
  • hypothesis 인덱스를 검증할 때 올바른 오류 코드를 사용하도록 수정했습니다. #92559 (Raúl Marín).
  • analyzer에서 컬럼 별칭의 동적 서브컬럼(dynamic subcolumn) 해석 문제를 수정했습니다. 이전에는 컬럼 별칭의 동적 서브컬럼이 getSubcolumn으로 래핑되었으며, 일부 상황에서 전혀 해석되지 않는 문제가 있었습니다. #91434 이슈를 해결합니다. #92583 (Pavel Kruglov).
  • 두 번째 인수가 null일 때 tokens()에서 발생하던 크래시를 방지합니다. #92586 (Raúl Marín).
  • 기반이 되는 const PREWHERE 컬럼을 제자리에서(in-place) 변경하면서 발생할 수 있던 잠재적인 크래시를 수정합니다. 이 문제는 컬럼 축소(IColumn::shrinkToFit) 또는 필터링(IColumn::filter) 시에, 여러 스레드에서 동시에 호출되는 경우 발생할 수 있었습니다. #92588 (Arsen Muk).
  • 대용량 파트(4,294,967,295행을 초과하는 파트)를 포함하는 테이블에서 텍스트 인덱스를 생성하고 구체화하는 기능이 일시적으로 비활성화되었습니다. 현재 인덱스 구현이 이러한 대용량 파트를 아직 지원하지 않기 때문에, 잘못된 쿼리 결과를 방지하기 위한 제한입니다. #92644 (Anton Popov).
  • 조인을 실행하는 동안 발생하는 Too large size (A) passed to allocator 논리 오류를 수정합니다. #92043를 해결합니다. #92667 (Yarik Briukhovetskyi).
  • ngrambf_v1 인덱스에서 ngram 길이(첫 번째 파라미터)가 8보다 크면 예외가 발생하던 버그를 수정했습니다. #92672 (Robert Schulze).
  • ZooKeeper 스토리지를 사용할 때 백그라운드에서 named collection을 다시 로드하는 과정에서 발생하는 처리되지 않은 예외를 수정합니다. https://github.com/ClickHouse/clickhouse-private/issues/44180 이슈를 해결합니다. #92717 (Kseniia Sumarokova).
  • 와일드카드 권한 부여에 대한 접근 권한 검사 로직의 오류를 수정합니다. 이전 시도인 https://github.com/ClickHouse/ClickHouse/pull/90928 는 치명적인 취약점을 해결했지만, 결과적으로 동작이 지나치게 제한적이어서 관련 없는 권한 회수로 인해 일부 와일드카드 GRANT SQL 문이 실패하는 문제가 발생했습니다. #92725 (pufit).
  • WHERE 절에서 not match(...)를 사용할 때 잘못된 결과를 유발하던 데이터 스키핑 로직의 버그를 수정합니다. #92492를 해결합니다. #92726 (Nihal Z. Miaji).
  • 읽기 전용 디스크에 MergeTree 테이블이 생성된 경우에는 시작 시 임시 디렉터리를 삭제하려고 시도하지 않습니다. #92748 (Alexey Milovidov).
  • ALTER TABLE REWRITE PARTS (v2)에서 "Cannot add action to empty ExpressionActionsChain" 오류를 수정합니다. #92754 (Azat Khuzhin).
  • 연결이 끊어진 Connection에서 읽을 때 발생할 수 있는 크래시를 방지합니다. #92807 (Raufs Dunamalijevs).
  • Ordered 모드의 storage S3Queue에서 발생하던 논리적 오류 Failed to set file processing within 100 retries를 수정했습니다. 이제 이 오류는 경고로 대체됩니다. 이 오류는 25.10 버전 이전에는 keeper 세션이 만료된 경우 발생할 수 있었으며, 25.10+ 버전에서도 Ordered 모드에서 처리 동시성이 매우 높은 경우 이 오류가 이론적으로 여전히 발생할 수 있으므로 계속해서 경고로 유지됩니다. #92814 (Kseniia Sumarokova).
  • 이전에 거짓 조건을 사용하는 PK sharding 쿼리 일부가 실패하던 문제가 있었습니다. 이제는 실패하지 않습니다. https://github.com/ClickHouse/ClickHouse/pull/89313 에 필요했습니다. #92815 (Yarik Briukhovetskyi).
  • system.parts 테이블에서 텍스트 인덱스의 비압축 크기(uncompressed size) 계산을 수정했습니다. #92832 (Anton Popov).
  • WHERE 절의 조건에서 서브쿼리가 포함된 IN 절을 사용하는 경량 업데이트에서 기본 인덱스가 올바르게 사용되도록 수정했습니다. #92838 (Anton Popov).
  • JSON에서 경로 'skip'에 대한 타입 힌트 생성 오류를 수정했습니다. 관련 이슈 #92731를 종료합니다. #92842 (Pavel Kruglov).
  • S3 테이블 엔진에서는 비결정적 함수가 포함된 경우 파티션 키를 캐시하지 않도록 해야 합니다. #92844 (Miсhael Stetsyuk).
  • ratio_of_defaults_for_sparse_serialization=0.0으로 설정된 희소 컬럼에 대한 뮤테이션(mutation) 이후 발생할 수 있는 FILE_DOESNT_EXIST 오류를 수정합니다. #92633 이슈를 해결합니다. #92860 (Pavel Kruglov).
  • 기본값으로 사용되지 않는 이전 Parquet 리더에서 Tuple 컬럼 뒤에 JSON 컬럼이 오는 경우 Parquet 스키마 추론 문제를 수정했습니다. 또한 이 리더가 비어 있는 Tuple을 처리할 때 실패하던 문제를 수정했습니다. #92867 (Michael Kolupaev).
  • 상수 조건을 사용하는 다중 조인에서 join_use_nulls 설정과 관련해 발생하던 논리 오류를 수정하여 #92640 이슈를 해결했습니다. #92892 (Vladimir Cherkasov).
  • 파티션 표현식에 서브컬럼이 있는 테이블에 데이터를 삽입할 때 발생할 수 있는 NOT_FOUND_COLUMN_IN_BLOCK 오류를 수정했습니다. #93210 이슈를 해결했습니다. #83406 이슈를 해결했습니다. #92905 (Pavel Kruglov).
  • 별칭이 있는 테이블에서 Merge engine을 사용할 때 발생하던 NO_SUCH_COLUMN_IN_TABLE 오류를 수정합니다. #88665 이슈를 해결합니다. #92910 (Pavel Kruglov).
  • LowCardinality(Nullable(T)) 컬럼에서 full_sorting_join 연산 시 NULL != NULL로 처리되던 문제를 수정했습니다. #92924 (Vladimir Cherkasov).
  • MergeTree 테이블에서 텍스트 인덱스 merge 중에 발생하던 여러 비정상 종료 문제를 수정했습니다. #92925 (Anton Popov).
  • TTL 집계 중 필요한 경우 Set 표현식 결과의 LowCardinality 래퍼를 복원하여 테이블 최적화 과정에서 예외가 발생하는 것을 방지합니다. #92971 (Seva Potapov).
  • has 함수에서 빈 배열이 사용될 때 인덱스 분석 시 발생하는 논리 오류를 수정합니다. #92906를 해결합니다. #92995 (Nihal Z. Miaji).
  • 백그라운드 스케줄 풀 종료 시 발생할 수 있는 정지(hang) 문제를 수정했습니다(서버 종료 시 서버가 정지 상태에 빠질 수 있음). #93008 (Azat Khuzhin).
  • 희소 컬럼 mutation 이후 ALTER를 통해 설정인 ratio_of_defaults_for_sparse_serialization1.0으로 변경했을 때 발생할 수 있는 FILE_DOESNT_EXIST 오류를 수정했습니다. #93016 (Pavel Kruglov).
  • WHERE 절에서 not materialize(...) 또는 not CAST(...)가 사용될 때 잘못된 결과를 초래하던 data skipping 로직의 버그를 수정합니다. #88536을(를) 해결합니다. #93017 (Nihal Z. Miaji).
  • 공유 파트에서 발생하는 TOCTOU 경쟁 상태로 인해 오래된 파트가 사용될 수 있는 문제를 수정합니다. #93022 (Azat Khuzhin).
  • 범위를 벗어난 오프셋을 포함하는 잘못된 형식의 groupConcat 집계 상태를 역직렬화할 때 발생하던 크래시를 수정합니다. #93028 (Raufs Dunamalijevs).
  • 분산 쿼리를 사전 취소한 뒤 연결이 손상된 상태로 남는 문제를 수정했습니다. #93029 (Azat Khuzhin).
  • 오른쪽 조인 키가 희소 컬럼일 때의 조인 결과를 수정합니다. 이는 #92920를 해결합니다. 이 버그는 set compatibility='23.3' 설정에서만 재현됩니다. 백포트할지 여부는 확실하지 않습니다. #93038 (Amos Bird).
  • estimateCompressionRatio()에서 취소 이후 Cannot finalize buffer after cancellation 오류가 발생할 수 있었던 문제를 수정합니다. 해결: #87380. #93068 (Azat Khuzhin).
  • concat(col1, col2)와 같은 복합 표현식을 기반으로 구축된 텍스트 인덱스의 병합 동작을 수정했습니다. #93073 (Anton Popov).
  • 필터에 서브컬럼이 포함된 경우 프로젝션 적용을 수정했습니다. #92882 이슈를 해결합니다. #93141 (Pavel Kruglov).
  • 쿼리 플랜에 조인 런타임 필터가 추가될 때 일부 경우에 발생할 수 있던 논리적 오류를 수정했습니다. 이는 조인 한쪽에서 중복된 상수(const) 컬럼을 잘못 반환하던 문제 때문에 발생했습니다. #93144 (Alexander Gololobov).
  • 조인 런타임 필터에서 사용되는 특수 함수 __applyFilter가 일부 유효한 경우에도 ILLEGAL_TYPE_OF_ARGUMENT 오류를 반환했습니다. #93187 (Alexander Gololobov).
  • 보간된 컬럼들이 실질적으로 동일한 컬럼의 별칭인 경우, 서로 다른 보간된 컬럼들이 하나의 블록 내에서 동일한 컬럼로 취급되어 병합(collapse)되지 않도록 합니다. #93197 (Yakov Olkhovskiy).
  • 이미 데이터가 채워진 오른쪽 테이블과 JOIN할 때 runtime filter를 추가하지 않습니다. #93211 (Alexander Gololobov).
  • 세션 종료 후 Keeper persistent watch가 정리되지 않던 문제를 수정합니다. 이 수정으로 #92480이(가) 해결됩니다. #93213 (Konstantin Vedernikov).
  • Iceberg에서 ORDER BY 튜플 처리를 수정합니다. 이로써 #92977이 해결되었습니다. #93225 (Konstantin Vedernikov).
  • S3Queue 설정 s3queue_migrate_old_metadata_to_buckets 관련 버그를 수정했습니다. #93392, #93196, #81739를 해결했습니다. #93232 (Kseniia Sumarokova).
  • 머지 작업 중 프로젝션을 다시 빌드할 때 사용되지 않는 컬럼을 제거합니다. 이렇게 하면 메모리 사용량이 줄어들고 생성되는 임시 파트의 개수가 줄어듭니다. #93233 (Nikolai Kochetov).
  • 스칼라 상관 서브쿼리가 존재하는 경우, 서브쿼리에서 사용되지 않는 컬럼을 제거하는 로직을 수정합니다. 수정 이전에는 컬럼이 상관 서브쿼리에서만 사용되는 경우에도 제거될 수 있었고, 그 결과 쿼리가 NOT_FOUND_COLUMN_IN_BLOCK 오류로 실패했습니다. #93273 (Dmitry Novik).
  • 소스 테이블에 대한 ALTER 작업 중 구체화된 뷰(Materialized View, MV)에서 서브컬럼이 누락될 수 있는 문제를 수정합니다. #93231 이슈를 해결합니다. #93276 (Pavel Kruglov).
  • 로컬 테이블과 원격/Distributed 테이블을 병합할 때 hostName()에 대해 ILLEGAL_COLUMN 오류가 발생할 수 있던 분석기 문제를 해결하여 Merge 테이블 엔진의 쿼리 계획 수립을 수정했습니다. 이를 통해 #92059 이슈를 해결했습니다. #93286 (Jinlin).
  • 상수가 아닌 배열 인수를 사용하는 NOT IN이 잘못된 값을 반환하던 문제를 수정하고, 상수가 아닌 Array 함수에 대한 지원을 추가했습니다. 관련 이슈 #14980을(를) 해결합니다. #93314 (Yarik Briukhovetskyi).
  • use_top_k_dynamic_filtering 최적화 사용 시 발생하던 Not found column 오류를 수정합니다. #93186을(를) 해결합니다. #93316 (Nikolai Kochetov).
  • 서브컬럼을 대상으로 생성된 텍스트 인덱스의 재구성 동작을 수정했습니다. #93326 (Anton Popov).
  • hasAllTokenshasAnyTokens 함수에서 두 번째 인자가 빈 배열일 때의 처리를 수정했습니다. #93328 (Anton Popov).
  • 오른쪽 테이블에 대한 totals 옵션이 있는 쿼리에서 runtime filter를 사용할 때 발생하던 논리 오류를 수정했습니다. #93330 (Alexander Gololobov).
  • 이제 함수 tokens가 상수가 아닌 토크나이저 매개변수(두 번째, 세 번째, 네 번째 매개변수)와 함께 호출되는 경우, 예를 들어 SELECT tokens(NULL, 1, materialize(1))와 같이 호출되더라도 서버가 더 이상 충돌하지 않습니다. #93383 (Robert Schulze).
  • 특정 방식으로 조작된 집계 상태로 인해 메모리 안전성 문제가 발생할 수 있었던 groupConcat 상태 역직렬화의 정수 오버플로우 취약점을 수정했습니다. #93426 (Raufs Dunamalijevs).
  • 인덱스에 토큰이 없는 경우(모든 배열이 비어 있거나 토크나이저에 의해 모든 토큰이 건너뛰어진 경우) 배열 컬럼에서의 텍스트 인덱스 분석 동작을 수정했습니다. #93457 (Anton Popov).
  • 연결 문자열에 사용자 이름과 비밀번호가 포함되어 있으면 ClickHouse Client에서 OAuth 로그인을 시도하지 않습니다. #93459 (Krishna Mannem).
  • DataLakeCatalog에서 Azure ADLS Gen2 발급 자격 증명 지원을 수정했습니다 - Iceberg REST 카탈로그에서 adls.sas-token.* 키를 파싱하고 ABFSS URL 파싱을 바로잡았습니다. #93477 (Karun Anantharaman).
  • analyzer에서 GLOBAL IN 지원을 수정하여 Set이 원격 노드에서 다시 생성되지 않도록 했습니다. #93507 (Azat Khuzhin).
  • 역직렬화 중 서브컬럼을 Sparse 컬럼으로 직접 추출하던 동작을 수정했습니다. #93512 (Pavel Kruglov).
  • 텍스트 인덱스에서 중복된 검색 쿼리를 사용할 때 발생하던 직접 읽기 동작을 수정했습니다. #93516 (Anton Popov).
  • runtime filter가 활성화되어 있고 조인된 테이블에서 동일한 컬럼이 여러 번 선택되어 반환되는 경우(예: SELECT a, a, a FROM t)에 발생하던 NOT_FOUND_COLUMN_IN_BLOCK 오류를 수정했습니다. #93526 (Alexander Gololobov).
  • SSH를 사용하여 연결할 때 clickhouse-client가 비밀번호를 두 번 입력하라고 요청하던 버그를 수정했습니다. #93547 (Isak Ellmer).
  • 종료 시 ZooKeeper가 완전히 종료되도록 보장합니다(매우 드문 경우에 종료 시 발생할 수 있는 정지(hang) 문제를 수정). #93602 (Azat Khuzhin).
  • 중복 제거 과정에서의 경쟁 상태로 인해 ReplicatedMergeTree를 복원할 때 발생하던 LOGICAL_ERROR를 수정합니다. #93612 (Pablo Marcos).
  • 일부 입력 포맷에서 Sparse 컬럼으로 직접 역직렬화할 때 TTL 업데이트에 Sparse 컬럼을 사용하는 동작을 수정했습니다. 이를 통해 Unexpected type of result TTL column 논리 오류가 발생할 수 있던 문제를 해결했습니다. #93619 (Pavel Kruglov).
  • 유효하지 않은 입력에 대해 호출될 때 h3 인덱스 함수가 가끔 충돌하거나 멈추던 문제를 수정했습니다. #93657 (Michael Kolupaev).
  • UTF-8이 아닌 데이터에서 ngram_bf 인덱스를 사용할 경우 초기화되지 않은 메모리를 읽게 되어, 그 값이 생성된 인덱스 구조 내에 남아 있을 수 있었습니다. #92576을(를) 해결했습니다. #93663 (Alexey Milovidov).
  • 압축 해제된 버퍼 크기가 예상한 크기인지 검증합니다. #93690 (Raúl Marín).
  • merge 테이블 엔진을 사용할 때 SHOW COLUMNS 권한 확인 없이 테이블의 컬럼 목록을 조회할 수 없도록 했습니다. #93695 (János Benjamin Antal).
  • 서브컬럼에 대해 생성된 skip 인덱스의 구체화 동작을 수정했습니다. #93708 (Anton Popov).
  • PipelineExecutor가 생존하는 동안 IStorage 객체가 소멸되지 않도록 QueryPipeline::resources::storage_holders에 스토리지의 shared pointer들을 저장합니다. #93746 (Miсhael Stetsyuk).
  • 재시작 후 interserver 호스트가 변경된 경우 Replicated DB를 ATTACH하는 동작을 수정했습니다. #93779 (Tuan Pham Anh).
  • 캐시가 활성화되어 있을 때 발생하던 ReadBufferFromS3!read_until_position assert 실패 문제를 수정했습니다. #93809 (Kseniia Sumarokova).
  • 드물게 Map 컬럼에서 빈 튜플이 사용될 때 발생하는 논리 오류를 수정합니다. #93784를 해결합니다. #93814 (Nihal Z. Miaji).
  • 머지 작업 중 프로젝션이 재구축될 때 발생하던 _part_offset 손상 문제를 수정하고, _part_offset 컬럼에 대한 불필요한 읽기를 피하고 프로젝션 계산에서 불필요한 컬럼을 건너뛰어 프로젝션 처리 성능을 최적화했습니다. 이는 #93233에서 도입된 최적화를 이어 가는 변경입니다. #93827 (Amos Bird).
  • 'Bad version' 처리 로직을 제거합니다. #93843 (Anton Ivashkin).
  • 키가 부호 있는 정수형일 때 분산 쿼리에서 optimize_inverse_dictionary_lookup가 작동하지 않던 문제를 수정합니다. #93259를 해결합니다. #93848 (Nihal Z. Miaji).
  • 분산 remote() 쿼리에서 lag/lead가 작동하지 않던 문제를 수정합니다. #90014를 해결합니다. #93858 (Nihal Z. Miaji).
  • 시스템 인스트루먼트 디스패치 버그를 수정합니다. #93937 (Pablo Marcos).
  • https://github.com/ClickHouse/ClickHouse/pull/89173 에서 TraceSender가 내부 파이프를 통해 전송하는 구조체에 필드를 하나 더 추가했습니다. 하지만 버퍼 크기는 업데이트되지 않았습니다(여기 참조). 이로 인해 buffer_size보다 더 많은 데이터를 버퍼에 기록하게 되었고, 그 결과 버퍼가 여러 번 flush됩니다. 그리고 TraceSender::send가 서로 다른 스레드에서 호출되기 때문에, 서로 다른 스레드에서의 flush가 서로 섞일 수 있으며, 이는 수신 측(TraceCollector)이 의존하는 불변 조건을 깨뜨리게 됩니다. #93966 (Miсhael Stetsyuk).
  • 스토리지 Join에서 USING 절을 사용하는 조인 연산 중 super type으로의 형 변환을 수정합니다. #91672#78572를 수정합니다. #94000 (Dmitry Novik).
  • Merge 테이블에 join runtime filter를 적용할 때 FilterStep이 제대로 추가되지 않던 문제를 수정했습니다. #94021 (Alexander Gololobov).
  • 여러 컬럼에 대한 조건식을 포함하고 블룸 필터 스킵 인덱스를 사용하며 ORNOT 조건이 모두 포함된 SELECT 쿼리에서 일관되지 않은 결과가 반환될 수 있는 문제가 있었습니다. 이제 수정되었습니다. #94026 (Shankar Iyer).
  • 종속 인덱스가 있는 컬럼에서의 CLEAR 동작을 수정합니다. #94057 (Raúl Marín).
  • ReadWriteBufferFromHTTP에서 초기화되지 않은 값의 사용 문제를 수정합니다. #94058 (Alexey Milovidov).
  • JSON에서 typed path에 대한 잘못된 검사 로직을 수정했습니다. 이 검사는 https://github.com/ClickHouse/ClickHouse/pull/92842에서 도입되었으며, 기존 테이블을 시작할 때 오류를 유발할 수 있습니다. #94070 (Pavel Kruglov).
  • OUTER JOIN이 있는 경우 필터 분석 중 발생하던 크래시를 수정합니다. 관련 이슈 #90979를 수정합니다. #94080 (Dmitry Novik).
  • 병렬 환경에서(max_threads > 1 - 기본값) UInt8 집계 키를 사용할 때 uniqTheta의 정확성을 수정합니다. #94095 (Azat Khuzhin).
  • SCOPE_EXIT 내부에서 호출되는 socket.setBlocking(true)에서 예외가 발생하여 크래시가 일어나던 문제를 수정합니다. #94100 (Miсhael Stetsyuk).
  • ReplicatedMergeTree에서 DROP PARTITION이 이후 로그 항목에 의해 생성된 파트까지 삭제하던 동작으로 인해 발생하던 데이터 손실을 수정합니다. #94123 (Tuan Pham Anh).
  • 페이지 경계를 넘는 배열을 잘못 처리하던 Parquet reader v3를 수정했습니다. 예를 들어, Arrow가 page statistics 또는 page index를 활성화하지 않고 생성한 파일에서 발생합니다. Array 데이터 타입의 컬럼에만 영향을 줍니다. 전형적인 증상은 약 1 MB의 데이터마다 배열 하나가 잘리는 현상입니다. 이 수정 이전에는 다음 설정을 우회책으로 사용해야 했습니다: input_format_parquet_use_native_reader_v3 = 0. #94125 (Michael Kolupaev).
  • 로그 엔트리를 기다리는 동안 ReplicatedMergeTree에서 너무 많은 watch가 생성되던 문제를 수정합니다. #94133 (Azat Khuzhin).
  • 함수 arrayShuffle, arrayPartialShufflearrayRandomSample가 상수 컬럼을 구체화하여 각 행이 서로 다른 결과를 얻도록 합니다. #94134 (Joanna Hulboj).
  • materialized view에서 table functions를 평가하는 과정에서 발생하는 데이터 레이스를 수정합니다. #94171 (Alexey Milovidov).
  • PostgreSQL 데이터베이스 엔진에서 (쿼리가 유효하지 않은 경우) 발생하던 nullptr 역참조를 수정했습니다. #92887 이슈를 종료합니다. #94180 (Alexey Milovidov).
  • 여러 서브쿼리가 포함된 SELECT 쿼리를 사용하는 갱신 가능 구체화 뷰에서 발생하던 메모리 누수를 수정했습니다. #94200 (Antonio Andelic).
  • DataPartStorageOnDiskBase::removesystem.parts 간의 데이터 레이스를 수정합니다. #49076 이슈를 종료합니다. #94262 (Alexey Milovidov).
  • 메모리 예외가 발생할 경우 std::terminate 크래시로 이어질 수 있는 HashTable 복사 대입 연산자의 잘못된 noexcept 지정자를 제거합니다. #94275 (Nikita Taranov).
  • 이전에 GROUP BY에 중복된 컬럼이 있는 프로젝션을 생성한 후(예: GROUP BY c0, c0) 데이터를 삽입하면, optimize_row_order가 활성화되어 있을 때 std::length_error가 발생하던 문제가 있었습니다. #94065를 수정했습니다. #94277 (Alexey Milovidov).
  • 연결 시 ZooKeeper 클라이언트에서 잘 드러나지 않던 버그로 인해 멈춤 및 충돌이 발생하던 문제를 수정했습니다. #94320 (Azat Khuzhin).
  • 서브컬럼에 function-to-subcolumns 최적화가 적용되지 않았던 문제를 수정했습니다. #94323 (Pavel Kruglov).
  • enable_lazy_columns_replication이 활성화된 상태에서 중첩된 RIGHT JOIN에서 잘못된 결과가 반환될 수 있던 문제를 수정합니다. 이 버그로 인해 복제된 컬럼의 모든 행이 서로 다른 값이 아니라 동일한 값으로 잘못 반환되는 현상이 발생했습니다. #93891 이슈를 종료합니다. #94339 (Vladimir Cherkasov).
  • 동치 집합을 사용하는 SEMI JOIN에서 필터 푸시다운 동작을 수정했습니다. 인자 타입이 변경된 경우에는 필터를 푸시다운하지 않도록 했습니다. #93264를 수정합니다. #94340 (Dmitry Novik).
  • DeltaLake CDF를 DataLake database 엔진과 함께 사용할 때의 동작(Delta Lake 카탈로그 통합)을 수정했습니다. #94122 이슈를 해결했습니다. #94342 (Kseniia Sumarokova).
  • SLRU 캐시 정책을 사용할 때 현재 메트릭 FilesystemCacheSizeLimit의 잘못된 값을 수정했습니다. #94363 (Kseniia Sumarokova).
  • 두 개 미만의 인수로 Backup 데이터베이스 엔진을 생성하면 이제 std::out_of_range: InlinedVector::at(size_type) const failed bounds check. 대신 Wrong number of arguments라는 더 구체적인 오류 메시지가 반환됩니다. #94374 (Robert Schulze).
  • grant option이 있는 권한의 데이터베이스 수준 global grant에 대해, 수행될 수 없는 REVOKE를 무시합니다. #94386 (pufit).
  • 컴팩트 파트에서 희소 오프셋을 읽는 기능을 수정합니다. #94385를 해결합니다. #94399 (Pavel Kruglov).
  • alter_column_secondary_index_modethrow 모드로 설정되어 있더라도, 암시적 인덱스를 사용하는 컬럼에 대한 ALTER를 방지하지 않습니다. #94425 (Raúl Marín).
  • receivePacketsExpectQuery를 여러 번 호출하여 Protocol::Client::IgnoredPartUUIDs를 읽을 때 TCPHandler에서 발생하던 크래시를 수정합니다. #94434 (Miсhael Stetsyuk).
  • system.functions에서 민감한 데이터의 마스킹을 수정했습니다. #94436 (Vitaly Baranov).
  • 비활성화된 send_profile_events 설정에서 발생하던 nullptr 역참조 문제를 수정합니다. 이 기능은 최근 ClickHouse Python 드라이버에 도입되었습니다. #92488 이슈를 해결합니다. #94466 (Alexey Milovidov).
  • 머지 과정에서 텍스트 인덱스 .mrk의 비호환성을 수정했습니다. #94494 (Peng Jian).
  • read_in_order_use_virtual_row가 활성화된 경우, 코드가 인덱스가 잘려 있었는지(truncated) 여부를 확인하지 않고 전체 기본 키 크기를 기준으로 인덱스 컬럼에 접근하여 use-after-free / 초기화되지 않은 메모리 접근이 발생할 수 있었습니다. #85596 이슈를 해결합니다. #94500 (Alexey Milovidov).
  • 타입이 널 허용(Nullable)인 경우 GLOBAL IN이 있는 서브쿼리에서 외부 테이블을 전송할 때 타입 불일치로 인해 발생하던 오류를 수정합니다. #94097를 해결합니다. #94511 (Alexey Milovidov).
  • 이전 버전에서는 동일한 표현식에 여러 인덱스 조건을 사용하는 쿼리가 오류로 인해 Not found column 예외를 잘못 던질 수 있었습니다. #60660을(를) 수정합니다. #94515 (Alexey Milovidov).
  • 런타임 필터에서 조인에 사용되는 널 허용 컬럼을 잘못 처리하던 문제를 수정합니다. #94555 (Alexander Gololobov).
  • 현재 사용 중인 다른 workload 내부에서 workload를 생성해도 이제 더 이상 크래시가 발생하지 않습니다. #94599 (Sergei Trifonov).
  • isNotNull이 누락된 컬럼에 대해 평가될 때 발생하던 ANY LEFT JOIN 최적화 중 크래시를 수정했습니다. #94600 (Molly).
  • 계산된 기본값(computed default)을 사용하는 다른 컬럼을 참조할 때 기본(default) 표현식 평가가 올바르게 동작하도록 수정했습니다. #94615 (Alexey Milovidov).
  • BACKUP/RESTORE 작업에서의 권한 문제를 수정합니다. #94617 (Pablo Marcos).
  • 데이터 타입이 Nullable(DateTime64)일 때의 잘못된 형 변환으로 인한 크래시를 수정합니다. #94627 (Miсhael Stetsyuk).
  • ORDER BY가 포함된 특정 분산 쿼리에서 ALIAS 컬럼의 값이 서로 뒤바뀐 상태로 반환될 수 있던 버그를 수정합니다(예: 컬럼 a에 컬럼 b의 데이터가 표시되거나 그 반대의 경우). #94644 (filimonov).
  • keeper-bench 결과를 파일에 저장하는 동작을 수정했습니다. #94654 (Antonio Andelic).
  • 컬럼에 음수 부동소수점 값이 포함되어 있을 때 MinMax 유형 통계의 잘못된 추정치를 수정합니다. #94665 (zoomxi).
  • 맵의 키가 struct인 경우 Parquet 파일을 읽는 동작을 수정했습니다. #94670 (Konstantin Vedernikov).
  • 복잡한 ON 조건을 사용할 때 RIGHT JOIN 결과가 잘못 나올 수 있던 문제를 수정했습니다. #92913 이슈를 종료했습니다. #94680 (Vladimir Cherkasov).
  • Vertical merge 후에도 상수 인덱스 그래뉼러리티(use_const_adaptive_granularity)를 보존합니다. #94725 (Azat Khuzhin).
  • 스칼라 서브쿼리와 테이블 종속성 간의 뮤테이션 버그를 수정합니다. 테이블에 특정 컬럼에 대한 종속성(인덱스 또는 프로젝션)이 있는 경우, 스칼라 서브쿼리가 데이터 없이 평가된 결과가 캐시되어 잘못된 변경으로 이어질 수 있었습니다. #94731 (Raúl Marín).
  • 오류 발생 시 AsynchronousMetrics의 cpu_pressure 폴백 동작을 수정합니다. #94827 (Raúl Marín).
  • getURLHostRFC 함수는 포인터를 역참조하기 전에 경계 검사를 수행하지 않았습니다. 빈 문자열이 domainRFC에 전달될 때 초기화되지 않은 메모리를 읽어 MSan 오류를 발생시켰습니다. #94851 (Alexey Milovidov).
  • 암호화된 디스크의 읽기 전용 문제를 수정합니다. #94852 (Azat Khuzhin).
  • 기존 analyzer에서 분산 테이블과 함께 소수 LIMIT/OFFSET를 사용할 때 발생하던 논리 오류를 수정합니다. #94712를 닫습니다. #94999 (Ahmed Gouda).
  • 조인 런타임 필터가 기본 설정으로 활성화되어 있을 때 특정 조건에서 충돌이 발생하던 문제를 수정했습니다. #95000 (Alexander Gololobov).
  • 테이블 엔진 URL() 및 테이블 함수 url()에서 사용되는 URL에 포함된 비밀번호 마스킹을 개선합니다. #95006 (Vitaly Baranov).
  • 이제 enable_extended_results_for_datetime_functions 설정이 켜져 있을 때 FUNCTION toStartOfIntervaltoStartOfX와 동일하게 동작하며, 이때 XDay, Week, Month, Quarter, Year입니다. #95011 (Kirill Kopnev).
  • 상수 문자열 비교에서 cast_string_to_date_time_mode, bool_true_representation, bool_false_representation, input_format_null_as_default 설정을 준수하지 않던 동작을 수정합니다. #91681를 해결합니다. #95040 (Nihal Z. Miaji).
  • 파일 시스템 캐시의 데이터 레이스(data race)를 수정했습니다. #95064 (Alexey Milovidov).
  • Parquet 리더에서 드물게 발생할 수 있는 경쟁 상태(race condition)를 수정합니다. #95068 (Alexey Milovidov).
  • LIMIT가 0일 때 top K 최적화에서 발생하던 크래시를 수정했습니다. #93893 이슈를 해결했습니다. #95072 (Alexey Milovidov).
  • DateTime/정수에서 Time64로 변환할 때 toTime을 사용해 시각(time-of-day) 구성 요소를 추출하는데, 이 함수는 단조(monotonic)가 아닙니다. ToDateTimeMonotonicity 템플릿이 이 변환이 단조라고 잘못 표시하여 디버그 빌드에서 "Invalid binary search result in MergeTreeSetIndex" 예외가 발생했습니다. #95125 (Alexey Milovidov).
  • 필요한 경우에만 manifest 파일 항목 목록을 다시 생성하도록 변경했습니다(이전에는 각 반복 시마다 다시 생성했습니다). #95162 (Daniil Ivanik).

빌드/테스트/패키징 개선