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

v25.12 Cloud용 변경 내역

하위 호환성이 없는 변경사항

데이터 타입 변경

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

쿼리 및 함수 변경 사항

  • 널 허용(Nullable) 컬럼을 널 비허용(non-nullable) 타입으로 변환하는 경우, 이제 ALTER MODIFY COLUMN에서 명시적인 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).
  • bitShiftLeftbitShiftRight 함수가, 타입 크기와 정확히 같은 만큼 시프트하는 경우 0 또는 빈 값을 반환하도록 수정합니다. #91943 (Pablo Marcos).
  • Ngram 토크나이저는 설정된 길이 N보다 짧은 n그램을 더 이상 반환하지 않습니다. 검색 토큰이 비어 있는 경우 Text Search는 어떤 행도 반환하지 않습니다. #89757 (George Larionov).

Storage and index changes

  • 사용 중단된 LIVE VIEW 기능을 제거합니다. LIVE VIEW를 사용하는 경우 새 버전으로 업그레이드할 수 없습니다. #88706 (Alexey Milovidov).
  • 공유 객체 스토리지(shared object storage) 경로를 기반으로 여러 개의 plain-rewritable 디스크를 생성하는 것을 금지합니다. 이렇게 하면 서로 다른 메타데이터 저장 트랜잭션 간 충돌 시 동작이 정의되지 않을 수 있습니다. #89038 (Mikhail Artemenko).
  • 이제 특수 MergeTree 테이블(예: ReplacingMergeTree, CollapsingMergeTree 등)은 빈 ORDER BY 키로 생성할 수 없습니다. 이들 테이블에서 머지(merge) 동작이 정의되지 않기 때문입니다. 해당 테이블을 반드시 생성해야 하는 경우 allow_suspicious_primary_key 설정을 활성화하십시오. #91569 (Anton Popov).
  • 암묵적 인덱스를 둘러싼 여러 가지 수정 사항이 포함되었습니다. 표시되거나 저장되는 스키마(Keeper 메타데이터)에는 add_minmax_index_for_numeric_columns 또는 add_minmax_index_for_string_columns 설정에 의해 생성된 것과 같은 암묵적 인덱스가 포함되지 않습니다. 이로 인해 이전 릴리스에 레플리카가 남아 있는 상태에서 새 버전에서 ReplicatedMergeTree 테이블을 생성하거나 업데이트할 때 메타데이터 오류가 발생할 수 있습니다. #91429 (Raúl Marín).

설정 및 구성 변경 사항

  • 클라이언트가 예외를 보다 신뢰성 있게 파싱할 수 있도록 HTTP 응답 결과에 대한 예외 태깅을 지원합니다. #75175를 해결합니다. 설정 http_write_exception_in_output_format 은(는) 포맷 간 일관성을 위해 기본적으로 비활성화되어 있습니다. #88818 (Kaviraj Kanagaraj).
  • Kafka 스토리지 SASL 설정의 우선순위를 수정합니다. 이제 CREATE TABLE 쿼리에서 지정한 테이블 수준 SASL 설정이 설정 파일의 consumer/producer별 설정을 올바르게 재정의합니다. #89401 (János Benjamin Antal).
  • ACME 구성 파라미터 refresh_certificates_task_interval 을(를) refresh_certificates_task_interval_seconds 로, refresh_certificates_beforerefresh_certificates_before_seconds 로 이름을 변경했습니다. 이제 refresh_certificates_task_interval_seconds 파라미터는 초 단위 값을 기대합니다. #92211 (Konstantin Bogdanov).
  • 프로젝션에서 위치 기반(positional) 인수를 비활성화한 변경 사항을 하위 호환성이 없는 변경으로 표시합니다. 추가로, 프로젝션에 위치 기반 인수가 존재하는 경우에도 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 집계 함수는 다른 데이터 구조를 사용합니다. 널 허용 컬럼(nullable column)의 경우, 중첩된 uniq aggregator와 함께 AggregateFunctionNull을 사용합니다. AggregateFunctionNull은 추가적인 불리언(bool) 플래그를 직렬화합니다. 이로 인해 statistics 파일이 호환되지 않게 됩니다. Statistics의 포맷이 변경되었기 때문에, 이전 포맷으로 생성된 statistics가 있는 경우 서버가 비정상 종료됩니다. 예외를 방지하려면 ALTER TABLE [db.]table MATERIALIZE STATISTICS ALL을 실행하여 statistics를 재생성하십시오. #90311 (Han Fei).

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

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

신규 기능

Functions

  • 사용자 가장(user impersonation)을 지원하기 위해 새로운 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 함수가 구현되었습니다. 이 함수는 반복 조회를 가속하기 위해 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() 함수 지원이 추가되었습니다. #90980 종료. #91023 (Nihal Z. Miaji).

System tables

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

Table engines and storage

  • Prometheus HTTP Query API의 일부를 지원합니다. 이를 활성화하려면 설정 파일의 <prometheus> 섹션에 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(nested loop) 조인을 지원합니다. 이를 사용하려면 설정에서 단일 옵션으로 join_algorithm = 'direct'를 지정해야 합니다. #89920 (Vladimir Cherkasov).
  • 이 PR은 ALTER TABLE ... ADD PROJECTION에서 새로운 WITH SETTINGS 절을 통해 노출되는 프로젝션 수준 설정을 도입합니다. 이러한 설정을 사용하면 각 프로젝션별로 특정 MergeTree 저장소 매개변수(예: index_granularity, index_granularity_bytes)를 재정의할 수 있습니다. #90158 (Amos Bird).

Iceberg 및 데이터 레이크

SQL and query features

  • windowFunnel 집계 함수에 allow_reentry 옵션을 추가합니다. strict_order와 함께 활성화하면 퍼널 분석을 중단하는 대신 순서를 위반하는 이벤트를 무시합니다. 이를 통해 새로고침(A->A->B)이나 뒤로 가기(A->B->A->C)가 포함된 사용자 여정을 처리하면서 전환율이 과소 집계되는 것을 방지할 수 있습니다. #86916 (Lee ChaeRok).
  • 텍스트 인덱스 구성 시 새로운 인자 preprocessor를 추가할 수 있습니다. 이 인자는 토큰화 전에 각 문서를 변환하는 임의의 표현식입니다. #88272 (Jimmy Aguilar Mena).
  • 테이블의 일부 비율을 선택하기 위한 소수(fractional) LIMITOFFSET을 지원합니다. #81892를 종료합니다. #88755 (Ahmed Gouda).
  • INTO OUTFILE 사용 시 상위 디렉터리를 자동으로 생성하여, 출력 경로가 존재하지 않을 때 발생하는 오류를 방지하는 설정 into_outfile_create_parent_directories를 추가합니다. #88610를 해결합니다. #88795 (Saksham).
  • 입력 JSON이 JSON 타입에서 명시적으로 지정된 typed path로 캐스팅될 수 없을 때, JSON 타입으로의 INSERT/형 변환에 대한 예외를 비활성화하는 설정 type_json_skip_invalid_typed_paths를 추가합니다. 대신 해당 typed path의 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).
  • 프로파일 이벤트가 사용되지 않을 때 클라이언트가 네트워크 트래픽을 줄일 수 있도록 하는 send_profile_events 설정을 추가했습니다. #89588 (Kaviraj Kanagaraj).

Keeper

입력/출력 포맷

  • 새로운 입력/출력 포맷 Buffers를 구현합니다. 이 포맷은 Native와 유사하지만, Native와는 달리 컬럼 이름, 컬럼 타입, 추가 메타데이터를 저장하지 않습니다. #84017 이슈를 해결합니다. #91156 (Nihal Z. Miaji).
  • command 스타일 descriptor를 요구하는 Dremio 및 기타 Arrow Flight 서버를 지원하기 위해 arrow_flight_request_descriptor_type 설정을 추가합니다. #89523 이슈를 해결합니다. #89826 (Shreyas Ganesh).
  • 메시지 페이로드를 파싱하기 전에 envelope 헤더 바이트(예: 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).
  • 쿼리 단위로 인접 파트 데이터의 백그라운드 다운로드를 비활성화할 수 있습니다. #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).
  • 전문 검색(Full-text search)은 이제 비공개 프리뷰 단계에 있으며, 이전에는 실험적 단계에 있었습니다. #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).
  • 해시 테이블을 순회하는 동안 키를 사전 가져오기(prefetch)하여 캐시 미스를 최소화합니다. #84708 (lgbo).
  • 코드를 단순화하고 선택 알고리즘을 조정하여 LZ4 디컴프레션(압축 해제) 속도를 향상합니다. #88360 (Raúl Marín).
  • JOIN 및 ARRAY JOIN에서 컬럼 지연 복제(lazy columns replication)를 구현합니다. Sparse 및 Replicated와 같은 특수 컬럼 표현을 일부 출력 포맷에서 전체 컬럼으로 변환하지 않도록 하여, 메모리 내 불필요한 데이터 복사를 방지합니다. #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).
  • 동적 디스패치를 통해 단일 숫자형 블록의 정렬을 가속합니다. #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 런타임 필터를 지원합니다. 또한 잠금 경합을 줄이기 위해 런타임 필터 구현을 리팩터링했습니다. #89710 (Dmitry Novik).
  • 이후 단계에서 활용할 수 있도록 LEFT/INNER JOIN 연산에서 왼쪽 테이블의 읽기 순서를 유지하는 기능을 지원합니다. #89815 (Vladimir Cherkasov).

MergeTree 및 스토리지 최적화

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

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

  • ClickHouse는 이제 ANDOR가 혼합된 필터 조건을 가진 WHERE 절에 대해 skip 인덱스를 사용하여 인덱스 분석을 수행합니다. 이전에는 skip 인덱스를 사용하려면 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).
  • 가능한 키 값 집합을 미리 계산해 두고 그 안에서 더 빠른 조회를 수행하여 반복적인 역방향 딕셔너리 조회를 최적화했습니다. #7968을(를) 해결합니다. #88971 (Nihal Z. Miaji).
  • skip 인덱스와 동적 임계값 필터를 사용하여 처리되는 행 수를 크게 줄임으로써 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는 내부적으로 키 이름 접두사(prefix)에 따라 객체를 파티션하고, 파티션당 높은 요청률로 자동으로 스케일링합니다. 이 변경 사항으로 두 개의 새로운 BACKUP 설정 data_file_name_generatordata_file_name_prefix_length가 도입되었습니다. data_file_name_generator=checksum일 때 백업 데이터 파일은 내용의 해시를 사용한 이름으로 생성됩니다. #88418 (Julia Kartseva).
  • 글롭(glob) 패턴을 사용해 생성된 S3 테이블에 대해 _path 필터 값을 푸시다운하여 S3 listing 작업을 피함으로써 쿼리 성능을 개선했습니다. 이 동작은 s3_path_filter_limit 설정으로 제어됩니다. #91165 (Eduard Karacharov).

데이터 레이크 최적화

  • 분산 실행: 작업을 파일 단위가 아니라 행 그룹 ID 단위로 분할하도록 최적화되었습니다. #87508 (Konstantin Vedernikov).
  • Paimon 함수에 대한 파티션 프루닝 지원이 추가되었습니다. #90253 (JIaQi Tang).

개선 사항

쿼리 최적화 및 실행

  • 복제된 MergeTree 테이블에서 손상된 디스크가 있는 경우에도 FETCH PARTITION을 허용합니다. #58663 (Duc Canh Le).
  • h3PolygonToCells FUNCTION을 추가하여 h3 육각형으로 기하 도형(geometry)을 채울 수 있도록 했습니다. #33991을 해결했습니다. #66262 (Zacharias Knudsen).
  • 이제 모든 DDL ON CLUSTER 쿼리가 보다 나은 접근 권한 검증을 위해 원래 쿼리 USER의 컨텍스트로 실행됩니다. #71334 (pufit).
  • ALTER TABLE ... FREEZE 쿼리에 병렬 실행이 추가되었습니다. #71743 (Kirill).
  • IN의 두 번째 인수에 비상수 값을 사용할 수 있게 되었습니다. 또한 두 번째 인수로 튜플도 지원합니다. #77906 (Yarik Briukhovetskyi).
  • 이 PR은 일반 프로젝션을 보조 인덱스로도 사용할 수 있도록 합니다. 이 기능을 활성화하면 특정 쿼리 프레디케이트를 사용하여 프로젝션 파트에서 데이터를 읽고, PREWHERE 단계에서 행을 효율적으로 필터링하기 위한 비트맵을 생성할 수 있습니다. #81021 (Amos Bird).
  • 더 강력한 일관성 보장을 위해 enable_shared_storage_snapshot_in_query를 기본적으로 활성화합니다. #82634 (Alexey Milovidov).
  • UNION은 필요한 경우 Variant를 사용해 타입을 통합합니다. #82772를 해결합니다. #83246 (Mithun p).
  • 사전, 갱신 가능 구체화 뷰(refreshable materialized view) 등에서 내부적으로 실행되는 쿼리를 로그에 기록하고, system.query_log에 새로운 is_internal 컬럼을 추가합니다. #83277 (Miсhael Stetsyuk).
  • ALIAS 컬럼(식 없이 물리적 컬럼을 단순 참조하는 컬럼)에 대한 INSERT를 허용합니다. #80060를 해결합니다. #84154 (Shaurya Mohan).
  • SELECT를 사용하는 CREATE OR REPLACE TABLE 쿼리에 대해 clickhouse-client에서 진행률 표시줄, 로그 및 성능 통계를 확인할 수 있게 되었습니다. #38416을(를) 해결했습니다. #87247 (Diskein).
  • 해시 함수에서 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 설정을 활성화하여 조인 옵티마이저가 컬럼 통계를 사용하도록 합니다. #89332 (Alexey Milovidov).
  • create_table_empty_primary_key_by_default를 기본적으로 활성화합니다. 이는 사용성이 더 좋습니다. #89333 (Alexey Milovidov).
  • enable_time_time64_type SETTING이 이제 기본값으로 활성화되어 있습니다. #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).

Storage and MergeTree improvements

  • 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의 타임존 미지정 timestamp(isAdjustedToUTC=false)는 DateTime64(...) 대신 DateTime64(..., 'UTC')로 읽힙니다. #87872 (Michael Kolupaev).
  • SQL로 정의된 롤(role)을 이제 users.xml에 정의된 사용자에게 부여할 수 있습니다. #88139 (c-end).
  • FINAL 쿼리에서 사용되는 스킵 인덱스가 기본 키의 일부인 컬럼에 있는 경우, 다른 파트에서 기본 키 교차 여부를 확인하는 추가 단계는 불필요하므로 더 이상 수행되지 않습니다. #85897를 해결합니다. #88368 (Shankar Iyer).
  • disable_insertion_and_mutation이 활성화된 경우에도 원격 테이블과 데이터 레이크 테이블에 데이터를 삽입할 수 있도록 허용합니다. #88549 (Alexander Tokmakov).
  • 테이블 수준 통계를 캐시하고, 두 개의 설정을 추가합니다: MergeTree 설정 refresh_statistics_interval과 세션 설정 use_statistics_cache. #88670 (Han Fei).
  • 뮤테이션 동안 인덱스를 어떻게 처리할지 제어하기 위한 MergeTree 설정 alter_column_secondary_index_mode를 추가합니다. 가능한 값: throw, drop, rebuild, compatibility입니다. #77797를 종료합니다. #89335 (Raúl Marín).
  • 파트에 대해 ColumnsDescription의 테이블별 캐시를 도입하여, 테이블에 많은 파트와 많은 컬럼이 있을 때 메모리 사용량을 줄입니다. #89352 (Azat Khuzhin).

시스템 테이블 및 모니터링

  • Keeper 요청 실행 단계의 소요 시간을 계측하기 위해 서버와 Keeper에 여러 개의 히스토그램 메트릭을 추가했습니다. #88158 (Miсhael Stetsyuk).
  • 이 테이블에 구축된 통계 유형을 나타내기 위해 system.columns에 새로운 컬럼 statistics를 추가했습니다. #89086 (Han Fei).
  • 쿼리 결과 캐시가 사용될 때 HTTP 인터페이스가 AgeExpires 헤더를 제공하도록 했습니다. 새로운 프로파일 이벤트 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).
  • system.part_logs에 중복 제거 블록 ID를 저장하도록 했습니다. #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).
  • 프로파일 이벤트 FailedInitialQueryFailedInitialSelectQuery를 추가했습니다. #91172 (RinChanNOW).
  • dangling 파트(dangling parts) 메트릭을 위해 system.tables에 세 개의 컬럼을 추가했습니다. (Han Fei).
  • distributed_cache_client.connection_pool_size 값을 메트릭으로 노출하도록 했습니다. (Francesco Ciocchetti).

클라이언트 및 UI 개선

  • 이제 페이저가 실행 중일 때 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의 타입 힌트가 더 이상 테이블 헤더 영역을 침범하여 표시되지 않습니다. #89753 (Alexey Milovidov).
  • 이제 Web UI 쿼리 편집기에서 선택한 줄을 Ctrl+/(Mac에서는 Cmd+/)로 빠르게 주석 처리하거나 해제할 수 있습니다. #91160 (Samuel K.).
  • XDG Base Directory 경로에서 ClickHouse Client 구성을 불러오는 기능을 추가했습니다. 이 문제를 해결합니다: #89882. #90306 (Wujun Jiang).

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

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

데이터 레이크 관련 개선 사항

  • delta_lake_snapshot_start_version, delta_lake_snapshot_end_version 설정과 함께 deltaLake 테이블 함수(table function)를 통해 DeltaLake CDF를 읽는 기능을 지원합니다. #90431 (Kseniia Sumarokova).
  • SELECT과의 일관성을 위해 insert into table function에서 storage settings를 지원합니다. #89386를 해결합니다. #91707 (Kseniia Sumarokova).
  • 아무 동작도 하지 않고 조용히 넘어가는 대신 데이터 레이크에 대한 TRUNCATE 쿼리에 대해 "not implemented" 오류를 발생시키도록 합니다. #86604를 해결합니다. #91713 (Kseniia Sumarokova).

Kafka 개선 사항

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

Keeper 개선 사항

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

입력/출력 포맷 개선

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

텍스트 인덱스 개선

  • 텍스트 인덱스를 이제 ReplacingMergeTree 테이블에서도 사용할 수 있습니다. #90908 (Elmi Ahmadov).
  • PREWHERE 절에서 inverted index를 사용할 수 있도록 했습니다. #89975 이슈를 해결합니다. #89977 (Peng Jian).
  • 이제 Ngrams tokenizer를 ngram_length = 1로 빌드할 수 있습니다. #91529 (George Larionov).
  • 텍스트 인덱스의 역직렬화된 헤더에 대한 캐시를 도입하여 I/O를 줄이고 쿼리 성능을 개선했습니다. #89513 (Elmi Ahmadov).

기타 개선 사항

  • 크기 제한을 검증할 때 max_binary_string_size 대신 max_binary_array_size 설정을 사용하도록 ArrayMap의 바이너리 역직렬화를 수정했습니다. #88744 (Raufs Dunamalijevs).
  • 시스템 메모리가 5GB 미만인 경우 기본적으로 실행 파일에 mlock을 사용하지 않도록 했습니다. #89751 (Alexey Milovidov).
  • system.metric_log 테이블에서 병합 중에 min_bytes_for_wide_partvertical_merge_algorithm_min_bytes_to_activate 값을 128MB로 설정하여 메모리 사용량을 줄였습니다. #89811 (filimonov).
  • S3 라이브러리가 XML 응답을 파싱할 때 네트워크 오류를 재시도하도록 했습니다. #90216 (Sema Checherinda).
  • 가드레일 제한값에 가까워질 때 표시되는 경고 메시지를 업데이트하여 현재 값과 예외를 발생시키는 값을 모두 보여주도록 했습니다. #90438 (Nikita Fomichev).
  • system.filesystem_cache 테이블에서 전체 캐시 상태를 단일 청크로 생성하는 대신 청크를 스트리밍 방식으로 전달하도록 했습니다. #90508 (Kseniia Sumarokova).
  • 벡터 유사도 인덱스 캐시의 항목은 테이블 파트가 삭제되거나 더 새로운 파트로 교체될 때 제거되도록 했습니다. #90750 (Shankar Iyer).
  • 인증 이전에 반환되는 HTTP 오류 응답에서 ClickHouse 서버 버전을 노출하지 않도록 했습니다. #91003 (filimonov).
  • FINAL 처리 이후에 행 정책과 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으로 캐스팅할 때 암시적 타입 변환을 허용했습니다. #91846 (Raufs Dunamalijevs).
  • system.blob_storage_log에 새로운 컬럼 elapsed_time_microseconds를 추가했습니다. #92322 (Alexey Milovidov).
  • Shared 데이터베이스에서 DROP TABLE 지연 시간을 제어할 수 있도록 새로운 설정 database_shared_drop_table_delay_seconds를 추가했습니다. (Nikolay Degterinsky).
  • 명명된 컬렉션에 대해 암호화된 키를 지연 로드하도록 했습니다. (Pablo Marcos).
  • 분산 캐시에 대해 버퍼별로 클라이언트 캐시를 비활성화할 수 있도록 했습니다. (Kseniia Sumarokova).
  • 분산 캐시 연결에 대한 공유 제한값을 추가했습니다. (Kseniia Sumarokova).

버그 수정

참고

이 섹션에는 중요한 버그 수정 사항 중 선별된 일부만 포함되어 있습니다. 이 릴리스에 포함된 모든 버그 수정의 전체 목록은 전체 변경 로그를 참고하십시오.

Query execution fixes

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

데이터 타입 및 JSON 수정

  • 일부 경우 이름에 점이 포함된 컬럼에서 서브컬럼을 읽는 문제를 수정합니다. #81261, #82058, #88169를 해결합니다. #87205 (Pavel Kruglov).
  • JSON에서 Float와 Bool이 혼합된 배열을 읽는 문제를 수정합니다. 이전에는 이러한 데이터를 삽입하면 예외가 발생했습니다. #88008 (Pavel Kruglov).
  • LowCardinality(Nullable(T))에서 Dynamic으로의 캐스팅 문제를 수정합니다. #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 and storage fixes

  • 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 쿼리 실행 후 발생할 수 있던 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 값만 포함하는 문자열 컬럼을 읽을 때 발생하던 ORC 리더 버그를 수정했습니다. #91889 (Peng Jian).
  • ORC 포맷에서 Date 및 DateTime64 타입을 읽는 동안 발생하던 오버플로 문제를 수정했습니다. #70976를 해결했습니다. #91572 (Yarik Briukhovetskyi).

Iceberg 및 데이터 레이크(data lake) 관련 수정

  • icebergS3Cluster 프로토콜을 수정했습니다. 이제 iceberg 클러스터 함수에서 스키마 진화(schema evolution), 위치 기반 삭제(positional deletes), 동등성 기반 삭제(equality deletes)를 지원합니다. #88287 문제를 해결했습니다. #88919 (Yang Jiang).
  • Glue 카탈로그를 사용할 때 timestamp 컬럼이 있는 iceberg 테이블에서 발생하던 JSON 예외(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가 단일 인자로 호출될 때 threshold 파라미터를 올바르게 반영하도록 수정합니다. #88757을(를) 해결합니다. #88867 (Manuel).
  • countIf(*)의 인자가 잘려 나가는 문제를 수정합니다. #89372을(를) 해결합니다. #89373 (Manuel).
  • trim, ltrim, rtrim 함수가 두 개의 인자를 사용할 때 동작하지 않던 문제를 수정합니다. #90170을(를) 해결합니다. #90305 (Nihal Z. Miaji).
  • 빈 배열과 isNull 함수를 함께 사용할 때 arrayFilter 함수가 동작하지 않던 문제를 수정합니다. #73849을(를) 해결합니다. #91105 (Nihal Z. Miaji).

메모리 및 크래시 관련 수정

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

보안 및 액세스 관련 수정

  • 존재하지 않는 역할이 부여된 사용자로 clusterAllReplicas를 실행하려 할 때 발생하는 ACCESS_ENTITY_NOT_FOUND 오류를 수정합니다. #87670 문제를 해결합니다. #89068 (pufit).
  • 대상 호스트가 localhostremote 테이블 함수와 함께 ALTER UPDATE 쿼리를 사용할 때의 액세스 검증을 수정합니다. #90761 (pufit).
  • 부분적인 권한 회수 시 와일드카드 grant 검사 동작을 수정합니다. #90922 (pufit).
  • 와일드카드 revoke와 함께 사용되는 전역 grant 처리 방식을 수정합니다. #90928 (pufit).

Replicated 데이터베이스 수정 사항

  • 복구 후 Replicated 데이터베이스 레플리카가 Failed to marked query-0004647339 as finished와 같은 메시지를 오랫동안 출력하며 멈춰 있는 경우가 있었는데, 이 문제가 수정되었습니다. #88671 (Alexander Tokmakov).
  • 종료(shutdown) 과정과 백그라운드 INSERT 간 경쟁 상태로 인해 Distributed에서 발생하던 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).
  • SummingMergeTree에서 Nested LowCardinality 컬럼에 대한 집계가 올바르게 동작하도록 수정했습니다. #90927 (Ivan Babrou).
  • system.view_refreshes에서 No macro 'replica' in config 오류로 인해 실패하던 문제를 수정했습니다. #92203 (Michael Kolupaev).
  • Shared Catalog를 사용하는 MV에서 ALTER를 통해 컬럼이 간접적으로 추가될 때 복제가 올바르게 수행되도록 수정했습니다. (Nikolay Degterinsky).
  • 실패한 MV 커밋으로 인해 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 예외로 인해 생성(CREATE)에 실패한 테이블의 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).
  • 분산 캐시의 논리적 오류를 수정했습니다. (Kseniia Sumarokova).
  • 분산 캐시에서 잘못된 오류가 발생하던 문제를 수정했습니다. (Kseniia Sumarokova).
  • Shared Catalog에서 ~TemporaryLockForUUIDDirectory와 관련된 LOGICAL_ERROR를 수정했습니다. (Nikolay Degterinsky).
  • 데이터베이스 이름 변경 이후 메타데이터 캐시가 잘못된 종속성 정보를 반환하던 문제를 수정합니다. (Nikolay Degterinsky).
  • Shared Catalog: 보조 레플리카에서 대용량 테이블을 DROP하는 경우 발생하던 문제를 수정했습니다. (Raúl Marín).
  • 분산 캐시에서 processWriteRequest의 논리 오류를 수정했습니다. (Kseniia Sumarokova).
  • 보조 레플리카에서 MV ALTER에 대한 검사를 제거합니다. (Nikolay Degterinsky).