메인 콘텐츠로 건너뛰기

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

데이터 타입 변경 사항

  • Geometry 타입을 도입했습니다. 이 타입에 대해 WKBWKT 포맷 읽기를 지원합니다. 이전 버전에서는 Geometry 타입이 String의 별칭이었지만, 이제는 완전한 기능을 갖춘 타입입니다. #83344 (Konstantin Vedernikov).
  • 사용 중단된 Object 타입을 제거했습니다. #85718 (Pavel Kruglov).
  • MergeTree 테이블의 파트에서 Variant 타입 서브컬럼용으로 생성되는 파일 이름을 이스케이프하도록 변경했습니다. 이 변경으로 인해 Variant/Dynamic/JSON 데이터 타입을 사용하는 기존 테이블과의 호환성이 깨집니다. 또한 Variant 내부에 특수 기호가 포함된 타입(예: \가 포함된 특정 시간대를 사용하는 DateTime)을 저장할 때 발생하던 문제를 해결합니다. 이스케이프는 MergeTree setting escape_variant_subcolumn_filenames를 변경하여 비활성화할 수 있습니다(호환성을 유지하려면 MergeTree 구성에서 이 setting을 비활성화하거나, 업그레이드 전에 사용하던 이전 버전으로 compatibility setting을 설정하십시오). #69590을 해결합니다. #87300 (Pavel Kruglov).

쿼리 및 함수 변경 사항

  • 이제 ALTER MODIFY COLUMN으로 널 허용 컬럼을 non-nullable 타입으로 변환할 때는 DEFAULT를 명시적으로 지정해야 합니다. 이전에는 이러한 ALTER가 cannot convert null to not null 오류로 인해 중단될 수 있었지만, 이제 NULL은 해당 컬럼의 기본 표현식으로 대체됩니다. #5985를 해결합니다. #84770 (Vladimir Cherkasov).
  • 설정 allow_not_comparable_types_in_order_by/allow_not_comparable_types_in_comparison_functions를 제거했습니다. ORDER BY 또는 비교 함수에서 비교할 수 없는 타입을 허용하면 논리적 오류와 예기치 않은 결과가 발생할 수 있습니다. #90028를 해결합니다. #90527 (Pavel Kruglov).
  • bitShiftLeft 및 bitShiftRight 함수가 shift가 타입의 크기와 정확히 같은 경우 0 또는 빈 값을 반환하도록 수정했습니다. #91943 (Pablo Marcos).
  • Ngram 토크나이저는 이제 설정된 길이 N보다 짧은 ngram을 반환하지 않습니다. 검색 토큰이 비어 있으면 Text Search는 행을 반환하지 않습니다. #89757 (George Larionov).

스토리지 및 인덱스 변경 사항

  • 더 이상 사용되지 않는 LIVE VIEW 기능을 제거했습니다. LIVE VIEW를 사용 중이라면 새 버전으로 업그레이드할 수 없습니다. #88706 (Alexey Milovidov).
  • 공유 객체 스토리지 경로 위에 여러 개의 plain-rewritable 디스크를 생성하지 못하도록 했습니다. 서로 다른 메타데이터 스토리지 트랜잭션이 충돌할 경우 정의되지 않은 동작이 발생할 수 있기 때문입니다. #89038 (Mikhail Artemenko).
  • 이제 빈 ORDER BY 키로 특수한 MergeTree 테이블(ReplacingMergeTree, CollapsingMergeTree 등)을 생성할 수 없습니다. 이러한 테이블에서는 머지 동작이 정의되어 있지 않기 때문입니다. 그래도 이런 테이블을 생성해야 한다면 allow_suspicious_primary_key 설정을 활성화하십시오. #91569 (Anton Popov).
  • 암시적 인덱스와 관련해 여러 수정이 적용되었습니다. 표시되거나 저장되는 스키마(Keeper 메타데이터)에는 add_minmax_index_for_numeric_columns 또는 add_minmax_index_for_string_columns 설정으로 생성된 인덱스와 같은 암시적 인덱스가 포함되지 않습니다. 이로 인해 이전 release의 레플리카가 있는 상태에서 더 최신 버전에서 ReplicatedMergeTree 테이블을 생성하거나 업데이트하면 메타데이터 오류가 발생할 수 있습니다. #91429 (Raúl Marín).

설정 및 구성 변경 사항

  • 클라이언트가 예외를 더 안정적으로 파싱할 수 있도록 HTTP 결과 응답에 대한 예외 태깅을 지원합니다. #75175를 해결합니다. 포맷 간 일관성을 위해 http_write_exception_in_output_format 설정은 기본적으로 비활성화됩니다. #88818 (Kaviraj Kanagaraj).
  • Kafka storage SASL 설정의 우선순위를 수정했습니다. 이제 CREATE TABLE 쿼리에서 지정한 테이블 수준 SASL 설정이 설정 파일의 consumer/producer별 설정을 올바르게 재정의합니다. #89401 (János Benjamin Antal).
  • ACME 구성 매개변수 refresh_certificates_task_interval의 이름을 refresh_certificates_task_interval_seconds로, refresh_certificates_before의 이름을 refresh_certificates_before_seconds로 변경했습니다. 이제 refresh_certificates_task_interval_seconds 매개변수는 초 단위 값을 사용합니다. #92211 (Konstantin Bogdanov).
  • 프로젝션의 위치 인수 비활성화를 하위 호환되지 않는 변경 사항으로 표시합니다. 또한 프로젝션에 위치 인수가 있을 때 ClickHouse 클러스터를 안전하게 업그레이드할 수 있도록 enable_positional_arguments_for_projections 설정을 도입합니다. #92007 (Dmitry Novik).

클라이언트 변경 사항

  • receive_timeout으로 인해 쿼리가 시간 초과될 경우 clickhouse-client가 0이 아닌 종료 코드(159 - TIMEOUT_EXCEEDED)를 반환하도록 변경했습니다. 이전에는 시간 초과 시 종료 코드 0(성공)을 반환했기 때문에 스크립트와 자동화에서 시간 초과 실패를 감지하기 어려웠습니다. #91432 (Sav).

STATISTICS 포맷 변경

  • 컬럼을 String에서 Nullable(String)로 변경할 때 데이터에 대해서는 mutation을 수행하지 않습니다. 하지만 uniq 집계 함수는 서로 다른 데이터 구조를 사용합니다. 널 허용 컬럼에는 중첩된 uniq 집계기를 사용하는 AggregateFunctionNull이 사용됩니다. AggregateFunctionNull은 추가적인 bool 플래그를 직렬화합니다. 이로 인해 STATISTICS 파일이 호환되지 않게 됩니다. STATISTICS 포맷이 변경되었으므로, 이전 포맷의 STATISTICS가 있으면 server가 충돌합니다. 예외를 방지하려면 ALTER TABLE [db.]table MATERIALIZE STATISTICS ALL을 실행하여 STATISTICS를 다시 생성하십시오. #90311 (Han Fei).

기타 호환성이 깨지는 변경 사항

  • 요소 크기에 맞게 정렬되지 않은 크기의 데이터를 압축할 때 Fatal이 발생하던 문제를 수정했습니다(T64 코덱). #89282를 해결했습니다. #89432 (yanglongwei).

새 기능

함수

  • 사용자 가장 기능을 지원하기 위해 새로운 SQL 문 EXECUTE AS를 추가했습니다. #39048을 해결합니다. #70775 (Shankar).
  • 배열에서 필요한 수의 차원을 펼치고 Tuple 컬럼 내부의 포인터를 스왑하는 flipCoordinates 함수를 추가했습니다. #79469을 해결합니다. #79634 (Sachin Kumar Singh).
  • IS NOT DISTINCT FROM (<=>) 연산자를 개선했습니다. 역연산인 IS DISTINCT FROM을 추가하고, 서로 다른 타입의 호환 가능한 숫자 피연산자(예: Nullable(UInt32)Nullable(Int64))를 지원합니다. #87581 (yanglongwei).
  • cume_dist 윈도 함수 지원을 추가했습니다. #86920을 수정합니다. #88102 (Manuel).
  • geometry 타입의 면적과 둘레를 계산하는 함수를 추가했습니다. #89047 (Konstantin Vedernikov).
  • 지정한 값과 속성이 같은 딕셔너리 키를 반환하는 dictGetKeys 함수를 구현했습니다. 반복 조회 속도를 높이기 위해 쿼리별 역방향 lookup 캐시를 사용하며, 이는 max_reverse_dictionary_lookup_cache_size_bytes 설정으로 조정할 수 있습니다. #89197 (Nihal Z. Miaji).
  • 배열 arr에서 elem과 같은 모든 요소를 제거하는 arrayRemove(arr, elem) 지원을 추가했습니다. #52099을 해결합니다. #89585 (tiwarysaurav).
  • 평균을 계산하는 midpoint 스칼라 함수를 도입했습니다. #89029을 해결합니다. #89679 (simonmichal).
  • 이제 새로운 argAndMinargAndMax 함수를 사용해 인수와 해당 최소값 또는 최대값을 함께 가져올 수 있습니다. #89884 (AbdAlRahman Gad).
  • #73900#38775의 일부로 HMAC(algorithm, message, key) SQL 함수를 추가했습니다. #90837 (Mikhail f. Shiryaev).
  • 첫 번째 인수가 상수 배열일 때 has() 함수가 프라이머리 키(primary key)와 데이터 스키핑 인덱스를 사용할 수 있도록 지원을 추가했습니다. #90980을 닫습니다. #91023 (Nihal Z. Miaji).

시스템 테이블

  • 유니코드 문자와 해당 속성 목록을 포함하는 system.unicode 테이블을 추가했습니다. #80055를 해결합니다. #80857 (wxybear).
  • shared_merge_tree_outdated_parts와 유사한 새 시스템 테이블 shared_merge_tree_condemned_parts를 추가했습니다. 이 테이블은 PartsKillerThread에 의해 곧 제거될 폐기 대상으로 지정된 파트를 나열합니다. (Smita Kulkarni).

테이블 엔진 및 스토리지

  • Prometheus HTTP Query API의 일부를 지원합니다. 이를 활성화하려면 설정 파일의 <prometheus> 섹션에 type이 query_api인 규칙을 추가하십시오. 지원되는 핸들러는 /api/v1/query_range/api/v1/query입니다. #86132 (Nikita Mikhaylov).
  • 이제 사용자는 S3/Azure Queue 테이블에서 처리된 파일을 유지하거나 제거하는 기존 옵션에 더해, 처리된 파일을 이동하거나 태그하도록 구성할 수 있습니다. #72944를 해결합니다. #86907 (Murat Khairulin).
  • 데이터 타입에 지정된 매개변수와 관계없이, 머지 후 Wide 파트의 동적 서브컬럼 수를 제한할 수 있도록 새로운 MergeTree 설정 merge_max_dynamic_subcolumns_in_wide_part를 추가했습니다. #87646 (Pavel Kruglov).
  • Microsoft OneLake 카탈로그 통합. #89366 (Konstantin Vedernikov).
  • 임시 테이블에 대해 CREATE OR REPLACE 구문을 지원합니다. #35888를 해결합니다. #89450 (Aleksandr Musorin).
  • MergeTree 테이블에 대해 direct(중첩 루프) 조인을 지원합니다. 사용하려면 설정에서 이를 유일한 옵션으로 지정하십시오: join_algorithm = 'direct'. #89920 (Vladimir Cherkasov).
  • 이 PR에서는 ALTER TABLE ... ADD PROJECTION의 새로운 WITH SETTINGS 절을 통해 사용할 수 있는 프로젝션 수준 설정을 도입합니다. 이 설정을 사용하면 프로젝션별로 특정 MergeTree 스토리지 매개변수(예: index_granularity, index_granularity_bytes)를 재정의할 수 있습니다. #90158 (Amos Bird).

Iceberg 및 데이터 레이크

SQL 및 쿼리 기능

  • windowFunnel 집계 함수에 allow_reentry 옵션을 추가했습니다. strict_order와 함께 활성화하면 순서를 위반하는 이벤트가 발생해도 퍼널 분석을 중단하지 않고 해당 이벤트를 무시합니다. 이를 통해 새로고침이 포함된 사용자 여정(A->A->B)이나 뒤로 이동하는 탐색(A->B->A->C)도 전환율을 과소 집계하지 않고 처리할 수 있습니다. #86916 (Lee ChaeRok).
  • 이제 텍스트 인덱스 구성 시 새 인수 preprocessor를 추가할 수 있습니다. 이 인수는 토큰화 전에 각 문서를 변환하는 임의의 표현식입니다. #88272 (Jimmy Aguilar Mena).
  • table의 일부를 선택할 수 있도록 소수형 LIMITOFFSET을 지원합니다. #81892를 해결합니다. #88755 (Ahmed Gouda).
  • INTO OUTFILE용 상위 디렉터리를 자동으로 생성하는 설정 into_outfile_create_parent_directories를 추가하여 출력 경로가 없을 때 발생하는 오류를 방지합니다. #88610을 해결합니다. #88795 (Saksham).
  • 입력 JSON을 JSON 타입의 명시적으로 타입이 지정된 경로로 캐스팅할 수 없는 경우, JSON 타입에 대한 삽입/타입 캐스트에서 예외를 비활성화하는 설정 type_json_skip_invalid_typed_paths를 추가했습니다. 이 경우 해당 타입 지정 경로의 NULL/0 값으로 대체됩니다. #86917를 해결합니다. #89886 (Max Justus Spransy).

클라이언트 및 CLI 기능

  • 이제 CLI 클라이언트에서 --no-server-client-version-message 또는 false를 지정하면 ‘ClickHouse server version is older than ClickHouse client. It may indicate that the server is out of date and can be upgraded.’ 메시지를 숨길 수 있습니다. #87784 (Larry Snizek).
  • 이제 --login을 사용해 Cloud 자격 증명으로 ClickHouse Cloud 인스턴스에 접속할 수 있습니다. #89261 (Krishna Mannem).
  • 이제 Web UI에 다운로드 버튼이 제공됩니다. UI에 결과의 일부만 표시되더라도 전체 결과를 다운로드합니다. #89768 (Alexey Milovidov).

서버 구성 및 모니터링

  • X-ClickHouse-ProgressX-ClickHouse-Summarymemory_usage 필드를 추가했습니다. 이를 통해 클라이언트 측에서 쿼리의 메모리 사용량을 실시간으로 수집할 수 있습니다. #88393 (Christoph Wurm).
  • profile events를 사용하지 않는 경우 클라이언트가 네트워크 트래픽을 줄일 수 있도록 send_profile_events 설정을 추가했습니다. #89588 (Kaviraj Kanagaraj).

Keeper

입력/출력 포맷

  • 새로운 입력/출력 포맷 Buffers를 구현했습니다. 이 포맷은 Native와 유사하지만, Native와 달리 컬럼 이름, 컬럼 타입, 추가 메타데이터를 저장하지 않습니다. #84017을 해결했습니다. #91156 (Nihal Z. Miaji).
  • 명령형 디스크립터가 필요한 Dremio 및 기타 Arrow Flight 서버를 지원하기 위해 arrow_flight_request_descriptor_type 설정을 추가했습니다. #89523를 수정했습니다. #89826 (Shreyas Ganesh).
  • 메시지 페이로드를 파싱하기 전에 엔벌로프 헤더 바이트(예: AWS Glue Schema Registry의 19바이트 접두사)를 건너뛸 수 있도록 Kafka 테이블 엔진에 kafka_schema_registry_skip_bytes 설정을 추가했습니다. #89621 (Taras Polishchuk).

기타 새 기능

  • Cluster 테이블 함수에서 파일을 병렬로 읽을 때 사용할 스트림 수를 제어하는 설정 max_streams_for_files_processing_in_cluster_functions을 추가합니다. #90223를 해결합니다. #91323 (Pavel Kruglov).
  • 쿼리별로 인접한 part 데이터의 백그라운드 다운로드를 비활성화할 수 있도록 합니다. #89524를 해결합니다. #89668 (tanner-bruce).
  • ClickHouse의 새로운 플랫폼으로 e2k (Elbrus-2000)를 실험적으로 지원합니다. #90159 (Ramil Sattarov).

실험적 기능

  • ACME 서비스 제공업체로부터 TLS 인증서를 가져오는 기능을 지원합니다. RFC 8555. #66315 (Konstantin Bogdanov).
  • automatic_parallel_replicas_mode 설정으로 제어되며, 병렬 레플리카를 사용해 쿼리를 자동으로 실행하는 새로운 로직이 도입되었습니다. #87541 (Nikita Taranov).
  • 전문 검색은 이제 비공개 프리뷰 상태입니다(이전에는 실험 단계였음). #88928 (Robert Schulze).
  • Alias는 이제 실험적 기능으로 전환되었으며, allow_experimental_alias_table_engine=1로 활성화할 수 있습니다. #89712 (Kai Zhu).

성능 개선

쿼리 실행 및 최적화

  • 쿼리가 행 제한에 도달하면 즉시 실패하도록 개선했습니다. #61872을 해결했습니다. #62804 (Sean Haynes).
  • 쿼리 계획에서 사용되지 않는 컬럼을 제거하는 최적화를 추가했습니다. #75152을 해결했습니다. #76487 (János Benjamin Antal).
  • ConstantNode의 큰 값에 대한 최적화를 추가했습니다. #72880을 종료했습니다. #81104 (Yakov Olkhovskiy).
  • 해시 테이블을 반복 처리하는 동안 키를 프리페치하여 캐시 미스를 최소화했습니다. #84708 (lgbo).
  • 코드를 단순화하고 선택 알고리즘을 조정하여 LZ4 압축 해제 속도를 개선했습니다. #88360 (Raúl Marín).
  • JOIN 및 ARRAY JOIN에서 지연 컬럼 복제를 구현했습니다. 일부 출력 형식에서 Sparse 및 Replicated 같은 특수 컬럼 표현을 full column으로 변환하지 않도록 했습니다. 이를 통해 메모리에서 불필요한 데이터 복사를 방지합니다. #88752 (Pavel Kruglov).
  • 동적 디스패치를 통해 논리 함수에 고급 SIMD 연산을 사용합니다. #90432 (Raúl Marín).
  • 결과 컬럼을 불필요하게 0으로 초기화하지 않도록 하여 JIT 함수의 실행 성능을 개선했습니다. #90449 (Raúl Marín).
  • 동적 디스패치를 통해 T64 압축 해제 속도를 높였습니다. #90610 (Raúl Marín).
  • 동적 디스패치를 통해 컬럼을 bool로 변환하는 속도(WHERE 절에서)를 높였습니다. #91203 (Raúl Marín).
  • 동적 디스패치를 통해 단일 숫자 block의 정렬 속도를 높였습니다. #91213 (Raúl Marín).

JOIN 최적화

  • RIGHTFULL JOIN이 이제 ConcurrentHashJoin을 사용합니다. 즉, 이러한 조인 유형이 더 높은 병렬성으로 실행됩니다. 다양한 RIGHTFULL JOIN` 사례에서 성능이 최대 2배까지 향상됩니다. #78027을 해결합니다. #78462 (Yarik Briukhovetskyi).
  • 일부 경우 ANY LEFT JOIN 또는 ANY RIGHT JOINALL INNER JOIN으로 다시 작성할 수 있도록 지원합니다. #89403 (Dmitry Novik).
  • ANTI JOIN에 대한 JOIN 런타임 필터를 지원합니다. 또한 잠금 경합을 줄이기 위해 런타임 필터 구현을 리팩터링했습니다. #89710 (Dmitry Novik).
  • LEFT/INNER JOIN 작업에서 왼쪽 테이블을 순서대로 계속 읽는 기능을 지원하며, 후속 단계에서 이를 활용할 수 있습니다. #89815 (Vladimir Cherkasov).

MergeTree 및 스토리지 최적화

  • 10K개 이상의 파트를 가진 테이블에서 강력한 파티션 프루닝이 적용되는 SELECT 쿼리가 최대 8배 빨라졌습니다. #85535 (James Morrison).
  • 쿼리가 집계 상태(작은 정수에 대한 group by)에 고정 hash map을 사용하는 경우, ClickHouse는 쿼리 속도를 높이기 위해 집계 상태를 병렬로 머지합니다. #63666를 해결합니다. #87366 (Jianfei Hu).
  • Parquet 리더 v3가 기본적으로 활성화됩니다. #88827 (Michael Kolupaev).
  • 이제 쿼리는 optimize_read_in_order와 query_plan_optimize_lazy_materialization의 이점을 동시에 활용할 수 있습니다. #88767를 해결합니다. #88866 (Manuel).
  • DISTINCT가 있는 쿼리에 집계 프로젝션을 사용합니다. #86925를 종료합니다. #88894 (Nihal Z. Miaji).
  • 입력 정렬 순서가 LIMIT BY 키와 일치하는 경우 streaming LIMIT BY 변환을 실행합니다. #88969 (Eduard Karacharov).
  • 널 허용 타입 컬럼에 대해 희소 serialization 지원이 추가되었습니다. #88999 (Amos Bird).
  • MergeTree 리더의 인플레이스 필터링을 최적화합니다. #87119를 해결합니다. #90630 (Xiaozhe Yu).
  • 선택된 머지 후보의 너비를 줄이기 위한 추가 휴리스틱을 도입합니다. #91163 (Mikhail Artemenko).

인덱스 및 텍스트 검색 최적화

  • ClickHouse는 이제 ANDOR가 혼합된 필터 조건으로 연결된 WHERE 절에서도 스킵 인덱스를 사용해 인덱스 분석을 수행합니다. 이전에는 스킵 인덱스를 활용하려면 WHERE 절이 필터 조건의 논리곱(AND) 형태여야 했습니다. 이 기능은 새로운 설정 use_skip_indexes_for_disjunctions(기본값: on)으로 제어됩니다. #87781 (Shankar Iyer).
  • 텍스트 인덱스에서 만든 추가 사전 필터를 활용해 like, equals, has 등의 함수를 사용하는 프레디케이트의 필터링 성능을 개선했습니다. 이 최적화는 query_plan_text_index_add_hint 설정으로 활성화됩니다. #88550 (Anton Popov).
  • 딕셔너리 블록을 캐시하고, 토큰 조회 시 이진 검색 대신 해시 테이블을 사용해 텍스트 인덱스 성능을 개선했습니다. #88786 (Elmi Ahmadov).
  • 포스팅 리스트는 데이터 크기 측면에서 가장 큰 부분을 차지하므로, 이를 캐시하면 연속 실행 시 성능이 향상됩니다. #88912 (Elmi Ahmadov).
  • 미리 계산된 가능한 키 값 집합에 더 빠르게 lookup하여 반복적인 역방향 딕셔너리 조회를 최적화했습니다. #7968을 닫습니다. #88971 (Nihal Z. Miaji).
  • 스킵 인덱스와 동적 임계값 필터를 사용해 처리되는 행 수를 크게 줄임으로써 ORDER BY...LIMIT N 쿼리를 최적화했습니다. #89835 (Shankar Iyer).
  • 대규모 minmax 인덱스(수백만 개의 그래뉼)가 있는 경우 인덱스 분석의 지연 시간이 더 낮아집니다. #90428 (Shankar Iyer).

집계 최적화

  • 점 배열의 끝부분만 정렬하고 단조 입력의 경우 정렬을 건너뛰도록 AggregateFunctionHistogram을 최적화하여 약 10%의 속도 향상을 달성했습니다. #85760 (MakarDev).
  • HashSetTable::merge의 오버헤드를 줄여 일부 countDistinct 연산의 속도를 소폭 높였습니다. #89727 (Raúl Marín).
  • topK의 성능과 동작 방식을 개선했습니다. #90091 (Raúl Marín).
  • Decimal 비교 연산의 성능을 개선했습니다. #28192를 해결했습니다. #90153 (Konstantin Bogdanov).

S3 및 백업 최적화

  • S3는 키 이름 프리픽스를 기준으로 내부적으로 객체를 파티션하고, 각 파티션에서 높은 요청 처리율에 맞춰 자동으로 확장됩니다. 이번 변경으로 두 개의 새로운 BACKUP 설정인 data_file_name_generator와 data_file_name_prefix_length가 도입되었습니다. data_file_name_generator=checksum인 경우, 백업 데이터 파일의 이름은 내용의 해시를 사용해 지정됩니다. #88418 (Julia Kartseva).
  • 글롭 패턴으로 생성된 S3 테이블의 쿼리 성능을 개선하기 위해 _path filter 값을 푸시다운하여 S3 listing 작업을 피할 수 있게 했습니다. 이는 s3_path_filter_limit 설정으로 제어됩니다. #91165 (Eduard Karacharov).

데이터 레이크 최적화

  • 분산 실행: 파일이 아니라 row group ID를 기준으로 작업을 더 효율적으로 분할합니다. #87508 (Konstantin Vedernikov).
  • Paimon 함수에서 파티션 프루닝을 지원합니다. #90253 (JIaQi Tang).

개선 사항

쿼리 최적화 및 실행

  • 복제된 MergeTree 테이블에 손상된 디스크가 있더라도 FETCH PARTITION을 허용합니다. #58663 (Duc Canh Le).
  • 지오메트리를 h3 육각형으로 채울 수 있는 h3PolygonToCells 함수를 추가했습니다. #33991을 해결합니다. #66262 (Zacharias Knudsen).
  • 이제 모든 DDL ON CLUSTER 쿼리는 접근 권한을 더 정확하게 검증할 수 있도록 원래 쿼리를 실행한 사용자의 컨텍스트로 실행됩니다. #71334 (pufit).
  • ALTER TABLE ... FREEZE 쿼리에 병렬 처리가 추가되었습니다. #71743 (Kirill).
  • IN에서 두 번째 인수로 상수가 아닌 값을 사용할 수 있습니다. 또한 두 번째 인수로 tuple도 지원합니다. #77906 (Yarik Briukhovetskyi).
  • 이 PR을 통해 일반 프로젝션을 보조 인덱스(secondary index)로 사용할 수 있습니다. 이 기능을 활성화하면 특정 쿼리 프레디케이트를 기반으로 프로젝션 파트에서 데이터를 읽어 비트맵을 생성하고, 이를 통해 PREWHERE 단계에서 행을 효율적으로 필터링할 수 있습니다. #81021 (Amos Bird).
  • 일관성을 더 잘 보장하기 위해 enable_shared_storage_snapshot_in_query를 기본적으로 활성화합니다. #82634 (Alexey Milovidov).
  • 필요한 경우 UNION은 Variant를 사용해 타입을 통합해야 합니다. #82772를 해결합니다. #83246 (Mithun p).
  • 내부 쿼리(딕셔너리, 갱신 가능 구체화 뷰 등에서 실행되는 쿼리)를 로깅하고 system.query_log에 새 is_internal 컬럼을 추가합니다. #83277 (Miсhael Stetsyuk).
  • 표현식 없이 물리적 컬럼만 참조하는 ALIAS 컬럼에 INSERT할 수 있습니다. #80060을 종료합니다. #84154 (Shaurya Mohan).
  • clickhouse-client에서 SELECT를 포함하는 CREATE OR REPLACE TABLE 쿼리에 대한 진행률 표시줄, logs 및 성능 통계를 확인할 수 있습니다. #38416를 해결했습니다. #87247 (Diskein).
  • hash 함수에서 JSON 및 Dynamic 타입을 지원합니다. #87734 문제를 해결했습니다. #87791 (Pavel Kruglov).
  • query_plan_optimize_join_order_limit의 기본값이 10으로 변경됩니다. #89312 (Alexey Milovidov).
  • 최적화 enable_lazy_columns_replication이 이제 기본적으로 활성화되어, 조인 시 메모리 사용량을 줄일 수 있습니다. #89316 (Alexey Milovidov).
  • 기본적으로 allow_statistics_optimize 설정을 활성화하여 조인 최적화기가 컬럼 통계(column statistics)를 사용하도록 했습니다. #89332 (Alexey Milovidov).
  • 기본적으로 create_table_empty_primary_key_by_default를 활성화했습니다. 이는 사용성 측면에서 더 낫습니다. #89333 (Alexey Milovidov).
  • 설정 enable_time_time64_type이 이제 기본적으로 활성화됩니다. #89345 (Yarik Briukhovetskyi).
  • 설정 allow_special_serialization_kinds_in_output_formats이 기본적으로 활성화됩니다. #89402 (Pavel Kruglov).
  • Shared Catalog을 통해 실행되는 쿼리에서는 ON CLUSTER가 무시됩니다. (Nikolay Degterinsky).
  • Shared Catalog에서 ALTER DATABASE MODIFY COMMENT를 지원하도록 했습니다. (Nikolay Degterinsky).
  • Shared 데이터베이스의 SharedSet/SharedJoin에서 CREATE OR REPLACE를 지원합니다. (Tuan Pham Anh).
  • SharedMergeTree에서 SYNC REPLICA를 실행할 때 다른 쿼리를 기다리지 않도록 했습니다. (Raúl Marín).

스토리지 및 MergeTree 개선 사항

  • S3의 blob과 연결된 모든 태그를 포함하는 새 가상 컬럼 _tags (Map(String, String))을 추가했습니다. #72945를 해결합니다. #77773 (Zicong Qu).
  • 파트가 중복 제거되었음을 알리는 오류 메시지를 추가했습니다. #80264 (Aleksandr Musorin).
  • OpenSSL 3.5.4를 사용하도록 변경했습니다. #81389 (Konstantin Bogdanov).
  • bcrypt 인증용 캐시를 추가했습니다. #87115 (Nikolay Degterinsky).
  • 이제 시간대가 없는 Parquet 타임스탬프(isAdjustedToUTC=false)는 DateTime64(…)가 아니라 DateTime64(…, ‘UTC’)로 읽습니다. #87872 (Michael Kolupaev).
  • 이제 SQL에서 정의한 역할을 users.xml에 정의된 사용자에게 부여할 수 있습니다. #88139 (c-end).
  • FINAL 쿼리에서 사용되는 스킵 인덱스가 프라이머리 키의 일부인 컬럼에 있는 경우, 다른 파트에서 프라이머리 키 교집합을 확인하는 추가 단계는 불필요하므로 더 이상 수행하지 않습니다. #85897를 해결합니다. #88368 (Shankar Iyer).
  • disable_insertion_and_mutation이 활성화된 경우에도 원격 및 데이터 레이크 테이블에 삽입할 수 있도록 허용합니다. #88549 (Alexander Tokmakov).
  • 테이블 수준 STATISTICS를 캐시하고, 두 가지 설정을 추가했습니다. MergeTree 설정 refresh_statistics_interval과 세션 설정 use_statistics_cache입니다. #88670 (Han Fei).
  • 뮤테이션 중 인덱스를 어떻게 처리할지 제어하는 MergeTree 설정 alter_column_secondary_index_mode를 추가했습니다. Possible values: throw, drop, rebuild, and compatibility. #77797를 종료합니다. #89335 (Raúl Marín).
  • 파트용 ColumnsDescription의 테이블별 캐시를 도입해, 테이블에 파트와 컬럼이 많은 경우 메모리 사용량을 줄였습니다. #89352 (Azat Khuzhin).

시스템 테이블 및 모니터링

  • server와 Keeper에 대해 여러 히스토그램 메트릭을 추가하여 Keeper 요청 실행 단계의 소요 시간을 계측합니다. #88158 (Miсhael Stetsyuk).
  • system.columns에 이 테이블에 대해 생성된 통계의 타입을 나타내는 새로운 컬럼 통계(column statistics)를 추가합니다. #89086 (Han Fei).
  • 쿼리 결과 캐시가 사용되면 HTTP 인터페이스가 AgeExpires 헤더를 제공합니다. 새로운 profile events인 QueryCacheAgeSeconds, QueryCacheReadRows, QueryCacheReadBytes, QueryCacheWrittenRows, QueryCacheWrittenBytes를 도입합니다. #89759 (Alexey Milovidov).
  • Web UI에 테이블 속성을 표시합니다. 행 수나 바이트 수를 클릭하면 system.tables의 쿼리가 표시됩니다. #89771 (Alexey Milovidov).
  • system.error_log 테이블에 last_error_time, last_error_message, last_error_query_id, last_error_trace 필드를 추가했습니다. #89879 (Narasimha Pakeer).
  • 중복 제거 블록 ID를 system.part_logs에 저장합니다. #89928 (Sema Checherinda).
  • check_query_single_value_result 설정의 기본값을 true에서 false로 변경했습니다. 이에 따라 CHECK TABLE은 집계된 결과 대신 파트별 상세 결과를 반환합니다. #90150 (Robert Schulze).
  • 진단 기능을 개선하기 위해 system.mutations에 새로운 컬럼 parts_in_progress_names를 추가합니다. #90155 (Shaohua Wang).
  • 백그라운드 작업에 대한 내부 검사를 개선하기 위해 system.background_schedule_pool{,_log}를 도입합니다. #91157 (Azat Khuzhin).
  • profile events FailedInitialQueryFailedInitialSelectQuery를 추가합니다. #91172 (RinChanNOW).
  • system.tables에 dangling parts 메트릭용 컬럼 3개를 추가합니다. (Han Fei).
  • distributed_cache_client.connection_pool_size 값을 메트릭으로 노출합니다. (Francesco Ciocchetti).

클라이언트 및 UI 개선 사항

  • 이제 pager가 실행 중일 때 Ctrl-C를 눌러 쿼리를 취소할 수 있습니다. #80778을 해결했습니다. #88935 (Grigorii Sokolik).
  • Web UI에서 값이 음수인 경우에도 테이블에 막대가 표시됩니다. #89016 (Alexey Milovidov).
  • 공백으로 시작하는 쿼리는 더 이상 이력에 저장되지 않습니다. #89116 (Konstantin Bogdanov).
  • 대화형 모드의 clickhouse-clientclickhouse-local은 이제 명령줄에서 커서 아래의 현재 식별자와 같은 이름을 가진 식별자를 강조 표시합니다. #89689 (Alexey Milovidov).
  • Web UI에서 쿼리 텍스트 영역의 크기 조절 핸들을 전체 너비로 확장했습니다. #89457 (Alexey Milovidov).
  • Web UI에서 type hints가 더 이상 테이블 헤더까지 오버플로우되지 않습니다. #89753 (Alexey Milovidov).
  • 이제 Web UI 쿼리 편집기에서 Ctrl+/(Mac에서는 Cmd+/)를 사용해 현재 선택한 줄을 빠르게 주석 처리하거나 주석 해제할 수 있습니다. #91160 (Samuel K.).
  • XDG Base Directory 경로에서 ClickHouse Client 구성을 로드하는 기능을 추가했습니다. #89882를 해결했습니다. #90306 (Wujun Jiang).

S3 및 클라우드 스토리지 개선 사항

  • 엔드포인트에 Region이 지정되지 않은 경우, S3에서 opt-in AWS Region을 자동으로 사용할 수 있도록 지원합니다. #88930 (Andrey Zvonov).
  • S3 리파티셔닝이 발생하더라도 백업이 성공하도록 25.6에서 기본 s3_retry_attempts 값을 500으로 설정합니다. #89051 (Nikita Mikhaylov).
  • 서로 다른 함수 호출에서 재사용할 수 있도록 STS 엔드포인트와 상호 작용하는 S3 자격 증명을 캐시합니다. #89734 (Antonio Andelic).
  • 이제 사전 서명 URL이 S3에서 작동합니다. #65032를 해결합니다. #90827 (Yarik Briukhovetskyi).

데이터 레이크 개선 사항

  • delta_lake_snapshot_start_version, delta_lake_snapshot_end_version 설정을 사용해 deltaLake 테이블 함수로 DeltaLake CDF를 읽을 수 있도록 지원합니다. #90431 (Kseniia Sumarokova).
  • select와의 일관성을 위해 테이블 함수에 삽입할 때 스토리지 설정을 지원합니다. #89386을 해결합니다. #91707 (Kseniia Sumarokova).
  • 아무 작업도 하지 않고 조용히 넘어가는 대신, 데이터 레이크에 대한 TRUNCATE 쿼리에서는 “구현되지 않음” 오류를 발생시킵니다. #86604을 해결합니다. #91713 (Kseniia Sumarokova).

Kafka 개선 사항

  • 이제 kafka_compression_codeckafka_compression_level 설정을 사용해 Kafka 프로듀서의 압축 방식을 지정할 수 있습니다. #89073 (János Benjamin Antal).
  • kafka_consumer_reschedule_ms를 조정 가능한 Kafka 테이블 엔진 설정으로 추가했습니다. #89204를 해결합니다. #90112 (Jeremy Aguilon).

Keeper 개선 사항

  • Keeper의 append 요청 배치에 대한 바이트 크기 제한을 추가했습니다. 이 제한은 keeper_server.coordination_settings.max_requests_append_bytes_size로 제어됩니다. #90342 (Antonio Andelic).
  • 핸드셰이크 중, 클라이언트가 제공한 last_zxid_seenlast_processed_zxid보다 큰 경우 클라이언트를 거부하는 Keeper 서버 측 검사를 추가했습니다. #90016 (Miсhael Stetsyuk).
  • S3Queue 정리 중 RemoveRecursive Keeper 요청에 더 낮은 노드 제한을 사용하도록 했습니다. #90201 (Antonio Andelic).

입력/출력 포맷 개선 사항

  • 논리 유형이 UUID인 FixedString(16)으로 표현된 경우, Parquet에서 UUID를 지원하도록 추가되었습니다. #74484 (alekseev-maksim).
  • hasAnyTokens 또는 hasAllTokens 함수의 입력으로 문자열 배열을 지원합니다. #89124 (Elmi Ahmadov).
  • Pretty 형식에서 이름이 지정된 Tuple이 이제 Pretty JSON으로 표시됩니다. 이로써 #65022가 해결되었습니다. #91779 (Mostafa Mohamed Salah).
  • CapnProto 메시지 크기 제한이 추가되었습니다. 이 값은 format_capn_proto_max_message_size로 변경할 수 있습니다. #91888 (Antonio Andelic).

텍스트 인덱스 개선 사항

  • 이제 텍스트 인덱스가 ReplacingMergeTree 테이블에서도 작동합니다. #90908 (Elmi Ahmadov).
  • PREWHERE에서 역인덱스를 사용할 수 있도록 했습니다. #89975를 해결합니다. #89977 (Peng Jian).
  • 이제 ngram_length = 1로 Ngrams 토크나이저를 생성할 수 있습니다. #91529 (George Larionov).
  • I/O를 줄이고 쿼리 성능을 개선하기 위해 텍스트 인덱스의 역직렬화된 헤더용 캐시를 도입했습니다. #89513 (Elmi Ahmadov).

기타 개선 사항

  • 크기 제한을 검증할 때 ArrayMap의 바이너리 역직렬화에 max_binary_string_size 대신 max_binary_array_size 설정을 사용하도록 수정했습니다. #88744 (Raufs Dunamalijevs).
  • 시스템 메모리가 5GB 미만이면 기본적으로 실행 파일을 mlock하지 않도록 변경했습니다. #89751 (Alexey Milovidov).
  • min_bytes_for_wide_partvertical_merge_algorithm_min_bytes_to_activate를 128MB로 설정해 system.metric_log 테이블 머지 중 메모리 사용량을 줄였습니다. #89811 (filimonov).
  • S3 라이브러리가 XML 응답을 파싱할 때 발생하는 네트워크 오류를 재시도하도록 했습니다. #90216 (Sema Checherinda).
  • 가드레일 한도에 가까워질 때의 경고 메시지를 업데이트해 현재 값과 throw 값을 표시하도록 했습니다. #90438 (Nikita Fomichev).
  • 모든 캐시 상태를 담은 단일 청크를 생성하는 대신 system.filesystem_cache 테이블에서 청크를 스트리밍하도록 했습니다. #90508 (Kseniia Sumarokova).
  • 이제 벡터 유사도 인덱스 캐시의 항목은 테이블 파트가 삭제되거나 더 새로운 파트로 대체될 때 제거됩니다. #90750 (Shankar Iyer).
  • authentication 이전에 반환되는 HTTP 오류 응답에서 ClickHouse 서버 버전이 노출되지 않도록 했습니다. #91003 (filimonov).
  • FINAL 처리 후 row policies 및 PREWHERE 조건을 적용할 수 있도록 apply_row_policy_after_finalapply_prewhere_after_final 설정을 추가했습니다. #90986을 수정했습니다. #91065 (Yarik Briukhovetskyi).
  • tupleElement에서 JSON 타입을 지원합니다. #81630을 해결했습니다. #91327 (Pavel Kruglov).
  • 튜플 요소 접근에 음수 인덱스(예: tuple.-1)를 지원합니다. #91665 (Amos Bird).
  • ArrayQBit로 CAST할 때 암시적 타입 변환을 허용합니다. #91846 (Raufs Dunamalijevs).
  • system.blob_storage_log에 새 컬럼 elapsed_time_microseconds를 추가했습니다. #92322 (Alexey Milovidov).
  • Shared 데이터베이스에서 테이블 삭제 지연을 제어할 수 있도록 database_shared_drop_table_delay_seconds 설정을 추가했습니다. (Nikolay Degterinsky).
  • 명명된 컬렉션의 암호화된 키를 지연 로드하도록 했습니다. (Pablo Marcos).
  • Distributed Cache에서 버퍼별로 클라이언트 캐시를 비활성화할 수 있도록 했습니다. (Kseniia Sumarokova).
  • Distributed Cache 연결에 대한 공유 한도를 추가했습니다. (Kseniia Sumarokova).

버그 수정

이 섹션에는 중요한 버그 수정 중 일부만 선별해 수록했습니다. 이번 릴리스의 모든 버그 수정 전체 목록은 전체 changelog를 참조하십시오.

쿼리 실행 수정 사항

  • 분산 머지 집계에서 여러 원격 세그먼트가 관련될 때 rows_before_limit_at_least가 잘못 계산되던 문제를 수정했습니다. #63511 (Amos Bird).
  • INSERT INTO ... SELECT 쿼리 후 0 rows in set가 표시되던 문제를 수정했습니다. #47800을 해결했습니다. #79462 (Engel Danila).
  • 상수 인수와 단락 평가를 사용할 때 multiIf에서 발생하던 문제를 수정했습니다. #72714를 해결했습니다. #84546 (Yakov Olkhovskiy).
  • 서브쿼리 제약 조건이 있는 테이블을 조회할 때 발생하던 LogicalError를 수정했습니다. #84190를 해결했습니다. #85575 (Pervakov Grigorii).
  • query_plan_optimize_join_order_limit > 1일 때 cross join 재정렬에서 발생하던 논리 오류를 수정했습니다. #89409를 해결했습니다. #88286 (Vladimir Cherkasov).
  • 오른쪽 테이블 키가 고유한 경우 OR 조건을 사용할 때 잘못된 JOIN 결과가 발생하던 문제를 수정했습니다. #89391를 해결했습니다. #89512 (Vladimir Cherkasov).
  • 중복 컬럼이 있는 full_sorting_merge join에서 발생하던 논리 오류를 수정했습니다. #86957를 해결했습니다. #89495 (Vladimir Cherkasov).
  • 중복 컬럼이 있는 JOIN에서 발생할 수 있는 Invalid number of rows in Chunk 오류를 수정했습니다. #89411를 해결했습니다. #90053 (Vladimir Cherkasov).
  • 병렬 레플리카가 활성화된 상태에서 분산 테이블에 대한 RIGHT JOIN 시 중복 데이터가 발생하던 문제를 수정했습니다. #90806 (zoomxi).
  • join_use_nulls, 여러 조인, 그리고 cross join을 함께 사용할 때 발생하던 논리 오류를 수정했습니다. #91853 (Vladimir Cherkasov).

데이터 타입 및 JSON 수정 사항

  • 일부 경우 이름에 점이 포함된 컬럼에서 서브컬럼을 읽지 못하던 문제를 수정했습니다. #81261, #82058, #88169을 해결합니다. #87205 (Pavel Kruglov).
  • JSON에서 Float와 Bool이 혼합된 배열을 읽는 문제를 수정했습니다. 이전에는 이러한 데이터를 삽입하면 예외가 발생했습니다. #88008 (Pavel Kruglov).
  • LowCardinality(Nullable(T))에서 Dynamic으로 CAST할 때 발생하던 문제를 수정했습니다. #86365 (Pavel Kruglov).
  • 고급 JSON 공유 데이터 직렬화에서 경로와 해당 서브컬럼을 읽는 중 발생할 수 있는 논리 오류를 수정했습니다. #89805를 해결합니다. #89819 (Pavel Kruglov).
  • 데이터 타입의 바이너리 역직렬화 중 발생할 수 있는 스택 오버플로우를 수정했습니다. #88710을 해결합니다. #89822 (Pavel Kruglov).
  • 논리 오류와 예기치 않은 결과를 초래할 수 있는 JSON의 공유 데이터와 동적 경로 간 불일치 상태 문제를 수정했습니다. #90816 (Pavel Kruglov).
  • Summing/Aggregating/Coalescing MergeTree에서 JSON 컬럼을 머지하는 문제를 수정했습니다. #91151 (Pavel Kruglov).

MergeTree 및 스토리지 수정 사항

  • TTL에서 컬럼이 너무 일찍 제거되어 발생하던 여러 문제를 수정했습니다. #88002을 해결합니다. #88860 (Amos Bird).
  • PK가 역순으로 정렬된 경우 잘못된 min(PK)/max(PK) 결과를 수정했습니다. 이 변경으로 #83619를 해결합니다. #88796 (Amos Bird).
  • 프라이머리 키가 내림차순으로 정렬된 경우 JOIN 최적화에서 잘못된 세그먼트 분할을 수정했습니다. #88512를 해결합니다. #88794 (Amos Bird).
  • 프로젝션 인덱스 읽기 경로의 레이스 컨디션을 수정했습니다. #89497를 해결합니다. #89762 (Peng Jian).
  • deduplicate_merge_projection_mode='ignore'를 사용할 때 비어 있지 않은 프로젝션을 가진 TTL로 비워진 파트에 대한 잘못된 머지 처리를 수정했습니다. #89430을 해결합니다. #89458 (Amos Bird).
  • 일부 ALTER 쿼리 이후 compact 파트에서 발생할 수 있었던 TOO_MANY_MARKS 오류를 수정했습니다. #91980 (alesapin).

Parquet 및 포맷 수정 사항

  • input_format_parquet_local_file_min_bytes_for_seek가 0으로 설정된 경우 Parquet 리더에서 발생하던 세그멘테이션 오류를 수정했습니다. #78456을 해결합니다. #88784 (Animesh).
  • Parquet writer가 created_by 문자열을 올바른 포맷으로 출력하도록 수정했습니다. #87735 (Michael Kolupaev).
  • 네이티브 writer를 사용한 단일 스레드 쓰기에서 Parquet 쓰기가 원래 순서를 유지하지 않던 문제를 수정했습니다. #90126 (Arthur Passos).
  • DICTIONARY_V2로 인코딩되어 있고 NULL 값만 포함하는 string 컬럼을 읽을 때 발생하던 ORC 리더 버그를 수정했습니다. #91889 (Peng Jian).
  • ORC 포맷에서 Date 및 DateTime64 타입을 읽는 중 발생하던 오버플로우를 수정했습니다. #70976을 닫습니다. #91572 (Yarik Briukhovetskyi).

Iceberg 및 데이터 레이크 수정 사항

  • icebergS3Cluster protocol을 수정했습니다. iceberg cluster function에서 스키마 진화, 위치 기반 삭제, 동등성 삭제를 지원하기 시작했습니다. #88287을 해결합니다. #88919 (Yang Jiang).
  • Glue catalog 사용 시 timestamp 컬럼이 있는 Iceberg 테이블에서 발생하는 JSON Exception을 수정했습니다. #90210을 해결합니다. #90209 (Alsu Giliazova).
  • 이제 manifest 파일에 정렬 순서가 지정되지 않은 경우 ClickHouse는 Iceberg에 read-in-order 최적화를 사용하지 않습니다. #89178을 수정했습니다. #90304 (alesapin).

함수 수정

  • reverseUTF8 함수의 버그를 수정했습니다. 이전 버전에서는 길이가 4인 UTF-8 코드 포인트의 바이트 순서를 잘못 뒤집었습니다. 이로써 #88913이 해결되었습니다. #88914 (Alexey Milovidov).
  • cramersV, cramersVBiasCorrected, theilsU, contingency에서 잘못된 결과를 유발하던 phi-squared 계산 문제를 수정했습니다. #87831 (Nihal Z. Miaji).
  • 단일 인수로 호출할 때 top_k가 임계값 매개변수를 올바르게 반영하도록 수정했습니다. #88757이 해결되었습니다. #88867 (Manuel).
  • countIf(*)의 인수가 잘리는 문제를 수정했습니다. #89372이 해결되었습니다. #89373 (Manuel).
  • trim, ltrim, rtrim 함수가 인수 2개와 함께 사용할 때 동작하지 않던 문제를 수정했습니다. #90170이 해결되었습니다. #90305 (Nihal Z. Miaji).
  • 빈 배열과 isNull 함수를 사용할 때 arrayFilter 함수가 동작하지 않던 문제를 수정했습니다. #73849이 해결되었습니다. #91105 (Nihal Z. Miaji).

메모리 및 크래시 수정

  • IN 내부에 ARRAY JOIN이 있고 enable_lazy_columns_replication 설정이 활성화된 원격 쿼리에서 발생할 수 있는 크래시를 수정했습니다. #90361을 해결합니다. #89997 (Pavel Kruglov).
  • 잘못된 소멸 순서로 인해 서버를 정상 종료하는 중 발생하던 크래시를 수정했습니다. #82420을 해결합니다. #90076 (Nikita Mikhaylov).
  • 집계 함수의 상태에 LowCardinality(String) 컬럼의 직렬화된 값이 포함된 경우 발생하는 크래시를 수정했습니다. #89550 (Pavel Kruglov).
  • 잘못된 세그먼트 디렉터리 이름을 파싱할 때 StorageDistributed에서 발생하는 크래시를 수정했습니다. #90243 (Aleksandr Musorin).
  • 사용자 공간 페이지 캐시가 활성화된 경우 잘못 발생하던 메모리 제한 오류를 수정했습니다. #91361 (Michael Kolupaev).
  • MEMORY_LIMIT_EXCEEDED 이후 집계 함수에서 발생할 수 있는 크래시를 수정했습니다. #92390 (Azat Khuzhin).
  • 해시 조인 결과 생성 시 메모리 추적을 개선했습니다. #89560 (Azat Khuzhin).

보안 및 접근 제어 수정 사항

  • 존재하지 않는 역할이 할당된 사용자가 clusterAllReplicas를 실행하려고 할 때 발생하는 ACCESS_ENTITY_NOT_FOUND 오류를 수정했습니다. #87670을 해결합니다. #89068 (pufit).
  • 대상 호스트로 localhost를 사용하는 remote 테이블 함수와 함께 ALTER UPDATE 쿼리를 사용할 때의 접근 검증 문제를 수정했습니다. #90761 (pufit).
  • 부분 revoke에 대한 와일드카드 권한 부여 검사 문제를 수정했습니다. #90922 (pufit).
  • 와일드카드 revoke와 함께 전역 권한 부여를 처리하는 문제를 수정했습니다. #90928 (pufit).

복제된 데이터베이스 수정 사항

  • 복구 후 Failed to marked query-0004647339 as finished와 같은 메시지를 출력한 채 복제된 데이터베이스 레플리카가 장시간 멈춰 있던 문제를 수정했습니다. #88671 (Alexander Tokmakov).
  • shutdown과 백그라운드 INSERTs 사이의 경쟁 상태로 인해 분산에서 발생하던 use-after-free를 수정했습니다. #88640을 해결했습니다. #89136 (Azat Khuzhin).
  • 갱신 가능 구체화 뷰: 갱신 중 원본 테이블이 완전히 삭제되면 드물게 서버가 충돌하던 문제를 수정했습니다. #89203 (Michael Kolupaev).

Keeper 수정 사항

  • 회전 과정에서 changelog의 이름이 제대로 변경되지 않은 경우, Keeper 시작 시 changelog를 읽지 못하던 문제를 수정했습니다. #89496 (Antonio Andelic).

그 밖의 주요 수정 사항

  • 스키핑 인덱스 분석에서 발생하던 성능 저하를 수정했습니다. #89004 (Anton Popov).
  • 25.8에서 원활한 업그레이드를 가로막던 Hive 파티셔닝 비호환성 문제를 수정했습니다. #90202 (Kseniia Sumarokova).
  • 무한 nan/inf WITH FILL 쿼리 문제를 수정했습니다. #69261을 해결합니다. #90255 (Konstantin Bogdanov).
  • 이제 Time 및 Time64는 DateTime 및 DateTime64에서 변환할 때 시간대를 올바르게 반영합니다. #89896를 해결했습니다. #90310 (Yarik Briukhovetskyi).
  • 쿼리 조건 캐시가 활성화된 상태에서 SELECT 쿼리의 경량 업데이트 후 잘못된 쿨리 결과가 반환될 수 있던 문제를 수정했습니다. #90176를 해결합니다. #90204 (Anton Popov).
  • String 집계 상태의 인메모리 직렬화 호환성을 수정했습니다. #90880 (Antonio Andelic).
  • Nested LowCardinality 컬럼에 대한 SummingMergeTree 집계 문제를 수정했습니다. #90927 (Ivan Babrou).
  • No macro 'replica' in config 오류로 system.view_refreshes가 실패하던 문제를 수정했습니다. #92203 (Michael Kolupaev).
  • Shared Catalog에서 ALTER로 MV에 간접적으로 컬럼을 추가할 때 발생하던 복제 문제를 수정했습니다. (Nikolay Degterinsky).
  • 실패한 MV commit으로 인해 Shared Catalog 상태 적용이 중단되던 문제를 수정했습니다. (Nikolay Degterinsky).
  • Shared Catalog를 사용하는 보조 레플리카에서 ALTER 시 제약 조건 검사 설정 문제를 수정했습니다. (Nikolay Degterinsky).
  • SharedCatalog 마이그레이션 중 데이터베이스 주석이 유지되도록 했습니다. (Alexander Tokmakov).
  • Shared Catalog에서 보조 레플리카의 구체화된 뷰(Materialized View)가 잘못 교체되던 문제를 수정했습니다. (Nikolay Degterinsky).
  • system.distributed_cache_usage 카운터 문제를 수정했습니다. (Kseniia Sumarokova).
  • Shared Catalog에서 ILLEGAL_COLUMN 예외로 생성에 실패한 테이블의 진행되지 않던 DROP 문제를 수정했습니다. (Nikolay Degterinsky).
  • 복제된 데이터베이스에서 SharedSet/SharedJoin의 CREATE OR REPLACE를 비활성화했습니다. (Tuan Pham Anh).
  • Shared 데이터베이스에서 RMV 갱신 시 발생하던 UNFINISHED 예외를 수정했습니다. (Nikolay Degterinsky).
  • Shared 데이터베이스에서 발생하던 TABLE_ALREADY_EXISTS 충돌을 수정했습니다. (Nikolay Degterinsky).
  • Shared Catalog에서 CREATE 쿼리가 손상된 테이블의 마이그레이션 문제를 수정했습니다. (Nikolay Degterinsky).
  • getStatus에서는 항상 메모리에 있는 가상 파트를 사용합니다. (Mikhail Artemenko).
  • 시작 시 Shared Catalog 상태 적용에 재시도를 추가했습니다. (Nikolay Degterinsky).
  • 테이블 생성 중 예외 발생 후 DROP DATABASE가 중단되는 문제를 수정했습니다. (Nikolay Degterinsky).
  • Distributed Cache의 논리 오류를 수정했습니다. (Kseniia Sumarokova).
  • Distributed Cache의 잘못된 오류를 바로잡았습니다. (Kseniia Sumarokova).
  • Shared Catalog의 ~TemporaryLockForUUIDDirectory에서 발생하는 LOGICAL_ERROR를 수정했습니다. (Nikolay Degterinsky).
  • 데이터베이스 이름 변경 후 메타데이터 캐시가 잘못된 종속성을 반환하던 문제를 수정했습니다. (Nikolay Degterinsky).
  • Shared Catalog: 보조 레플리카에서 대용량 테이블을 삭제(DROP)할 때 발생하던 문제를 수정했습니다. (Raúl Marín).
  • Distributed Cache의 processWriteRequest에서 발생하던 논리 오류를 수정했습니다. (Kseniia Sumarokova).
  • 보조 레플리카에서 MV ALTER에 대한 검사를 제거했습니다. (Nikolay Degterinsky).
마지막 수정일 2026년 6월 10일