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

Cloud용 v26.2 변경 로그

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

쿼리 및 구문 변경 사항

  • 잘못된 별칭 치환으로 인해 발생하던 쿼리 형식 불일치 문제가 수정되었습니다. 참고: analyzer가 비활성화된 경우, 별칭 참조와 함께 IN을 사용하는 일부 CREATE VIEW 쿼리는 더 이상 처리되지 않을 수 있습니다. 이를 방지하려면 analyzer가 활성화되어 있는지 확인하십시오(analyzer는 24.3부터 기본적으로 활성화되어 있습니다). #82838 (Alexey Milovidov).
  • 이제 JOIN USING ()의 빈 컬럼 목록은 구문 오류로 처리됩니다. 이전에는 이 문제가 쿼리 실행 시점에 INVALID_JOIN_ON_EXPRESSION으로 보고되었으며, 일부 경우(예: Join 스토리지와 조인하는 경우)에는 LOGICAL_ERROR를 유발할 수 있었습니다. #92371 (Vladimir Cherkasov).
  • 이제 ORDER BY 및 기타 테이블 키 표현식에서는 서브쿼리를 사용할 수 없습니다. #96847 (Alexey Milovidov).

데이터 타입 변경 사항

  • Nullable(Tuple) 지원이 추가되었습니다. 이를 활성화하려면 allow_experimental_nullable_tuple_type = 1로 설정하십시오. #89643 (Nihal Z. Miaji).
  • JSON 타입의 고급 공유 데이터가 이제 기본적으로 활성화됩니다. 이전 버전은 새 JSON 형식으로 작성된 데이터 파트를 읽을 수 없으므로, 25.8보다 이전 버전으로 다운그레이드할 수 없습니다. 안전하게 업그레이드하려면 compatibility 설정을 이전 버전으로 지정하거나, MergeTree 설정 dynamic_serialization_version='v2'object_serialization_version='v2'를 설정하십시오. #92511 (Pavel Kruglov).
  • JSON 타입의 SKIP REGEXP는 이제 기본적으로 부분 일치를 사용합니다. #92847 (Pavel Kruglov).
  • Variant 타입 불일치 시 발생하던 논리 오류를 수정했습니다. #95811 (Bharat Nallan).
  • PostgreSQL의 DATE 컬럼은 이제 ClickHouse에서 Date32로 추론됩니다(이전에는 Date로 추론되었으며, 이 경우 범위가 좁아 해당 범위를 벗어나는 값에서 오버플로가 발생할 수 있었습니다). 이제 Date32 값을 다시 PostgreSQL에 삽입하는 것도 지원됩니다. #95999 (Alexey Milovidov).

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

  • 객체 스토리지에서 더 효율적으로 읽을 수 있도록 역방향 텍스트 인덱스의 스토리지 레이아웃을 개선했으며, 역방향 텍스트 인덱스가 있는 테이블의 병합 성능도 개선했습니다. 25.12 버전 이전에 실험적 텍스트 인덱스를 사용한 경우, 업그레이드 전에 해당 인덱스를 삭제한 뒤 새 버전에서 다시 빌드해야 합니다. #91518 (Anton Popov).
  • 통계의 스토리지 형식이 변경되었습니다 — 이제 모든 통계가 단일 파일에 저장됩니다. #93414 (Anton Popov).
  • 손상된 파트를 방지하기 위해 이제 인덱스 파일 이름이 이스케이프됩니다. 이전 버전에서 생성된, 이름에 ASCII 이외의 문자가 포함된 인덱스는 ClickHouse가 로드하지 못합니다. 이를 처리하려면 MergeTree 설정 escape_index_filenames를 사용하십시오. #94079 (Raúl Marín).

제거된 기능

  • DEFLATE_QPLZSTD_QAT 코덱이 제거되었습니다. 업그레이드하기 전에 이 코덱으로 압축된 기존 데이터를 다른 코덱으로 변환하십시오. 참고로, 이전에는 이 코덱을 사용하려면 enable_deflate_qpl_codec 또는 enable_zstd_qat_codec를 활성화해야 했습니다. #92150 (Robert Schulze).
  • 단순 ALIAS 컬럼에 대한 INSERT는 더 이상 지원되지 않습니다(#84154를 되돌림). 이 기능은 사용자 지정 형식에서는 작동하지 않았으며 setting으로 제어되지도 않았습니다. #92849 (Azat Khuzhin).
  • Lazy 데이터베이스 엔진이 제거되어 더 이상 사용할 수 없습니다. #93627 (Alexey Milovidov).
  • 사용할 수 없게 되는 버그로 인해 metric_logtransposed_with_wide_view 모드가 제거되었습니다. 이제 system.metric_log를 이 모드로 정의할 수 없습니다. #93867 (Alexey Milovidov).

설정 및 구성 변경 사항

  • 데이터 레이크 카탈로그가 객체 스토리지에 액세스할 수 없으면 이제 새로운 설정에서 오류를 발생시킵니다. #93606 (Konstantin Vedernikov).
  • 워크로드에 대한 CPU 스케줄링은 이제 기본적으로 선점형입니다. cpu_slot_preemption 서버 설정을 참조하십시오. #94060 (Sergei Trifonov).
  • 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 설정이 형식 설정에서 일반 설정으로 재분류되었습니다. 이는 대부분 내부 변경이며, 사용자에게 보이는 부작용은 없습니다. 다만 이러한 설정 중 하나라도 Iceberg, DeltaLake, Kafka, S3, S3Queue, Azure, Hive, RabbitMQ, Set, FileLog 또는 NATS 테이블 엔진 정의에 지정한 경우는 예외입니다. 이제 이러한 정의는 조용히 무시되지 않고 오류를 발생시킵니다. #94106 (Robert Schulze).
  • do_not_merge_across_partitions_select_final의 동작 의미가 단순화되었습니다. 이전에는 이 기능이 명시적으로 설정되지 않았더라도 자동으로 활성화될 수 있었고, 이로 인해 혼란과 프로덕션 환경 문제가 발생했습니다. 이제 1로 설정하면 기능이 무조건 활성화되며, 0으로 설정하면 새 설정 enable_automatic_decision_for_merging_across_partitions_for_final(기본값 1)을 따릅니다. #96110 (Nikita Taranov).
  • S3 스키마 검증이 추가되었습니다. #96194 (Konstantin Vedernikov).
  • 이제 apply_row_policy_after_final 설정이 기본적으로 활성화되어 ROW POLICY가 원래와 같이 FINAL을 따르도록 보장합니다. 이전에 FINAL 전에 행 정책을 적용하기 위해 optimize_move_to_prewhere_if_final=1에 의존했다면, 대신 apply_row_policy_after_final=0을 사용하십시오. #97279 (Nikolai Kochetov).

보안 및 액세스 제어 변경 사항

  • joinGet/joinGetOrNull는 이제 기반이 되는 Join 테이블에 대해 SELECT 권한을 적용합니다. joinGet('db.table', 'column', key)를 실행하려면 키 컬럼과 조회할 속성 컬럼 모두에 대한 SELECT 권한이 필요합니다. 이러한 권한이 없으면 쿼리가 ACCESS_DENIED와 함께 실패합니다. 마이그레이션하려면 전체 테이블 액세스에는 GRANT SELECT ON db.join_table TO user로 권한을 부여하고, 컬럼 수준 액세스에는 GRANT SELECT(key_col, attr_col) ON db.join_table TO user로 권한을 부여하십시오. #94307 (Vladimir Cherkasov).
  • CREATE TABLE ... AS ... 쿼리는 이제 SHOW TABLES가 아니라 SHOW COLUMNS 권한이 필요합니다. 이전에는 SHOW TABLES 권한을 잘못 검사하고 있었습니다. #94556 (pufit).

삽입 및 중복 제거 변경 사항

  • 이제 모든 삽입에 대해 기본적으로 중복 제거가 활성화됩니다. 이전에는 비동기 삽입과 materialized view에는 비활성화되어 있었고, 동기 삽입에는 활성화되어 있었습니다. 이전 동작을 유지하려면 deduplicate_insert='backward_compatible_choice'를 명시적으로 설정하십시오(deduplicate_blocks_in_dependent_materialized_views도 동일). #95970 (Sema Checherinda).

시스템 테이블 변경 사항

  • 이제 S3Queue 및 AzureQueue의 인메모리 메타데이터가 제한됩니다. 시스템 테이블 이름이 변경되었습니다. system.s3queue는 이제 system.s3queue_metadata_cache로, system.azure_queue는 이제 system.azure_queue_metadata_cache로 변경되었습니다. #95809 (Kseniia Sumarokova).

기타 호환성에 영향을 주는 변경 사항

  • 잘못된 입력으로 호출될 경우 충돌하거나 멈출 수 있던 h3 인덱스 함수를 수정했습니다. #93657 (Michael Kolupaev).

새로운 기능

인증

함수

  • 지정된 구분자로 분리된 문자열에서 부분 문자열의 순서를 뒤집는 reverseBySeparator 함수를 추가했습니다. #91780 (Xuewei Wang).
  • sRGB와 OKLAB 색 공간 간 변환을 위한 colorOKLABToSRGBcolorSRGBToOKLAB 함수를 추가했습니다. #93361 (Pranav Tiwari).
  • 두 점 사이의 코사인 거리를 근사하는 cosineDistanceTransposed 함수를 추가했습니다. #93621 (Raufs Dunamalijevs).
  • xxh3_128 해시 함수를 추가했습니다. #96055 (Raúl Marín).
  • MergeTree 인덱스 사용을 분석하는 mergeTreeAnalyzeIndex() 함수를 추가했습니다. #92954 (Azat Khuzhin).
  • 이제 함수는 새로운 FunctionVariantAdaptor를 통해 Variant 타입을 지원합니다. #90900 (Bharat Nallan).
  • 이제 일부 함수는 SQL에서 괄호 없이 호출할 수 있습니다. #94678 (Aly Kafoury).

시스템 테이블

  • UDF 로딩 상태와 구성 정보를 모니터링하기 위한 system.user_defined_functions 테이블이 추가되었습니다. #90340 (Xu Jia).
  • system.zookeeper_info 테이블이 추가되었습니다. #90809 (Smita Kulkarni).
  • 소수를 오름차순으로 포함하는 system.primes 테이블과 primes 테이블 함수가 추가되었습니다. #92776 (Nihal Z. Miaji).
  • 각 데이터 파트의 파일 수를 표시하는 files 컬럼이 system.parts 테이블에 추가되었습니다. #94337 (Match).
  • 기존 failpoint와 해당 항목의 활성화 여부를 확인할 수 있는 system.fail_points 테이블이 추가되었습니다. #96762 (Pedro Ferreira).

테이블 엔진 및 스토리지

  • Array 컬럼에 대한 텍스트 인덱스 지원이 추가되었습니다. #89895 (Jimmy Aguilar Mena).
  • Paimon REST 카탈로그 지원이 추가되었습니다. #92011 (JIaQi Tang).
  • icebergLocalCluster 테이블 함수가 추가되었습니다. #93323 (Anton Ivashkin).
  • lazy_load_tables 데이터베이스 설정이 추가되었습니다. 이 설정을 활성화하면 데이터베이스 시작 시 테이블을 로드하지 않고, 대신 경량 StorageTableProxy를 생성하며 실제 테이블 엔진은 처음 접근할 때 구체화됩니다. #96283 (xiaohuanlin).
  • DatabaseReplicated에 대한 보조 ZooKeeper 지원이 추가되었습니다. #91683 (RinChanNOW).
  • 이제 캐시에 있는 데이터 파일과 시스템 파일을 별도의 세그먼트로 분할할 수 있습니다. #87834 (MikhailBurdukov).
  • 중복 파일 다운로드를 방지해 읽기 성능을 개선하는 Parquet 메타데이터용 새로운 SLRU 캐시가 추가되었습니다. 이 캐시는 SYSTEM DROP PARQUET METADATA CACHE로 비울 수 있습니다. #89750 (Grant Holly).
  • 이제 데이터 레이크 테이블은 Parquet reader v3에서 PREWHERE 및 다단계 PREWHERE를 지원합니다. #93542 (Konstantin Vedernikov).
  • 여러 레플리카에 걸친 분산 인덱스 분석 기능이 추가되어 공유 스토리지 및 대용량 데이터 환경에서 유용합니다. #86786 (Azat Khuzhin).

Insert 및 중복 제거

  • 이제 비동기 insert의 중복 제거가 종속 materialized view와도 함께 작동합니다. block_id 충돌이 발생하면 원본 블록을 필터링하여 충돌한 block_id와 연결된 행을 제거하고, 남은 행은 관련된 모든 materialized view 쿼리를 거쳐 변환됩니다. #89140 (Sema Checherinda).
  • 이제 비동기 insert가 병렬 quorum을 지원합니다. 삽입된 데이터는 quorum에 복제되며, 중복이 발견되면 이전에 삽입된 데이터도 복제될 때까지 쿼리가 대기합니다. #93356 (Sema Checherinda).
  • 통합된 중복 제거 해시로의 마이그레이션을 활성화하기 위해 insert_deduplication_version 서버 설정이 추가되었습니다. #95409 (Sema Checherinda).
  • 중복 제거 해시 마이그레이션이 시작되었습니다. #97562 (Sema Checherinda).

SQL 및 쿼리 기능

  • 기존 SYSTEM DROP [...] CACHE의 더 명확한 대안으로 SYSTEM CLEAR [...] CACHE 구문이 추가되었습니다. 기존 구문도 계속 사용할 수 있습니다. #93727 (Pranav Tiwari).
  • 결과 파트를 커밋하지 않고 머지를 시뮬레이션하는 OPTIMIZE <table> DRY RUN PARTS <part names> 쿼리가 추가되었습니다. 머지의 정확성을 확인하고, 머지 관련 버그를 재현하며, 머지 성능을 벤치마킹하는 데 유용합니다. #96122 (Anton Popov).
  • 이제 ignore_on_cluster_for_replicated_database 설정이 활성화된 경우 Replicated 데이터베이스에서 ON CLUSTER가 포함된 DDL 쿼리를 실행할 수 있습니다. 이때 클러스터 이름은 무시됩니다. #92872 (Kirill).
  • 프로젝션 인덱스 기능을 단순화하고 확장하기 위한 새로운 구문과 프레임워크가 도입되었습니다. #91844 (Amos Bird).

설정 및 구성

  • 삽입 블록이 생성되는 방식을 더 세밀하게 제어할 수 있도록 max_insert_block_size_bytes 설정이 추가되었습니다. #92833 (Kirill Kopnev).
  • use_primary_key 설정이 추가되었습니다. 기본 키(primary key)를 기반으로 한 그래뉼 가지치기를 비활성화하려면 이 값을 false로 설정하십시오. #93319 (Nihal Z. Miaji).
  • default_dictionary_database 설정이 추가되었습니다. 이 설정을 사용하면 데이터베이스 한정자 없이 참조되는 외부 딕셔너리(external dictionaries)를 지정된 기본 데이터베이스에서 ClickHouse가 조회할 수 있습니다. 이를 통해 XML로 정의된 전역 딕셔너리에서 SQL로 정의된 데이터베이스별 딕셔너리로의 마이그레이션이 간소화됩니다. #91412 (Dmitrii Plotnikov).
  • 테이블에서 사용 중인 named collection이 삭제되지 않도록 check_named_collection_dependencies 설정이 추가되었습니다(기본적으로 활성화됨). #96181 (Pablo Marcos).
  • 동시성 제어를 위한 max-min 공정 스케줄러가 추가되었습니다. 이에 따라 많은 쿼리가 제한된 CPU 슬롯을 두고 경쟁하는 높은 과구독 상황에서 공정성이 더욱 향상됩니다. 이제 concurrent_threads_scheduler 서버 설정의 기본값이 fair_round_robin 대신 max_min_fair이므로, 짧게 실행되는 쿼리가 오래 실행되는 쿼리 때문에 더 이상 불이익을 받지 않습니다. #94732 #95300 (Sergei Trifonov).
  • ClickHouse 시작 및 종료 시 콘솔 로그 레벨을 각각 재정의할 수 있도록 logger.startup_console_levellogger.shutdown_console_level 구성 옵션이 추가되었습니다. #95919 (Garrett Thomas).

모니터링

  • 버전 정보가 포함된 ClickHouse_Info 메트릭이 Prometheus /metrics 엔드포인트에 추가되어, 시간 경과에 따른 상세 버전 정보를 추적하는 차트를 생성할 수 있게 되었습니다. #91125 (Christoph Wurm).

실험적 기능

  • 이제 벡터 검색은 클러스터의 레플리카 전체에 부하를 분산할 수 있으므로, 단일 VM의 메모리 용량을 초과하는 대규모 벡터 인덱스도 지원할 수 있습니다. #95876 (Shankar Iyer).
  • ast_fuzzer_runsast_fuzzer_any_query 설정으로 제어되는 서버 측 AST 퍼저가 추가되었습니다. 이 설정을 활성화하면 서버는 각 쿼리를 정상적으로 실행한 후 무작위 뮤테이션을 수행하고, 그 결과는 폐기합니다. #97568 (Alexey Milovidov).

개선 사항

쿼리 및 SQL

  • 상관 서브쿼리가 이제 더 많은 테이블 엔진과 데이터 소스 유형을 지원합니다. #90175 (Dmitry Novik).
  • 이제 스칼라 값에 대해서도 상수가 아닌 IN을 지원합니다(예: val1 NOT IN if(cond, val2, val3)). #93495 (Yarik Briukhovetskyi).
  • 조인에서 확장 테이블 별칭을 지원하도록 추가되었습니다(예: SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b). #95331 (Yarik Briukhovetskyi).
  • EXPLAIN indices = 1이 이제 EXPLAIN indexes = 1의 별칭으로 지원됩니다. #92774 (Pranav Tiwari).
  • numbersprimes 테이블 함수의 필터 푸시다운이 개선되었습니다 — 이제 ClickHouse는 WHERE 조건에서 보수적인 값 범위를 도출해 시퀀스 생성을 제한함으로써, 범위가 제한되지 않은 스캔을 방지할 수 있습니다. #96115 (Nihal Z. Miaji).
  • 이제 Equivalent sets 최적화가 여러 개의 연속된 INNER JOIN 연산 전반에서 작동하므로, 체인 내 어느 테이블에 적용된 필터든 관련된 모든 테이블에 자동으로 푸시다운됩니다. #96596 (Vladimir Cherkasov).
  • 이제 FROM의 단일 서브쿼리에는 자동 클러스터 테이블 함수가 사용됩니다. #96332 (phulv94).
  • 접두사에 ASCII 문자만 포함된 경우, startsWithUTF8로 필터링할 때 이제 기본 키 인덱스가 사용됩니다. #97055 (vkcku).
  • assumeNotNull, coalesce, 및 ifNull은 이제 키 컬럼이 이러한 함수로 감싸진 경우 범위 조건에 대해 기본 키 및 스킵 인덱스 프루닝을 가능하게 합니다. #94754 (Nihal Z. Miaji).
  • 사용되지 않는 컬럼은 이제 MergeTree에서 읽을 때 읽기 단계에서 함께 제거되며, 이는 특히 필터가 PREWHERE로 푸시다운될 때 유용합니다. #89982 (János Benjamin Antal).
  • use_join_disjunctions_push_down 최적화가 이제 기본적으로 활성화되었습니다. #89313 (Alexey Milovidov).
  • enable_join_runtime_filters 최적화는 이제 기본적으로 활성화됩니다. #89314 (Alexey Milovidov).
  • JOIN 런타임 필터 오버헤드는 이제 블룸 필터에서 설정된 비트 수가 너무 많거나 걸러지는 행 수가 너무 적을 때 필터를 자동으로 비활성화하여 줄였습니다. #91578 (Alexander Gololobov).
  • 조인 재정렬 시 런타임 해시 테이블 크기 통계를 사용할지 여부를 제어하는 use_hash_table_stats_for_join_reordering 설정(기본적으로 활성화)을 추가했습니다. #93912 (Vladimir Cherkasov).
  • 인덱스 분석은 이제 쿼리가 로컬에서 실행되든 병렬 레플리카를 사용해 실행되든 관계없이 한 번만 수행됩니다. #94854 (Nikita Taranov).
  • FINAL 쿼리에서 skip 인덱스가 기본 키에 포함된 컬럼에 대한 경우, 이제 다른 파트에서 수행되는 추가 기본 키 교차 검사를 건너뜁니다. #93899 (Shankar Iyer).
  • DROP DATABASE는 이제 역방향 종속성 순서로 테이블을 삭제하므로, 데이터베이스에 로드 종속성이 있는 테이블이 포함된 경우 크래시 안전성이 향상됩니다. #97057 (Alexey Milovidov).
  • 뮤테이션을 동기식으로 대기할 때 이제 쿼리 취소 및 시간 제한이 적용됩니다. #96756 (Alexey Milovidov).
  • DROP COLUMN 뮤테이션 후 빠르게 ADD COLUMN을 실행할 경우 삭제된 데이터가 되살아나는 현상을 방지했습니다. #96713 (Alexey Milovidov).
  • UPDATERENAME COLUMN이 포함된 상충하는 ALTER 식은 이제 논리 오류 대신 적절한 예외를 발생시킵니다. #96022 (Alexey Milovidov).
  • 이제 집계 키 컬럼에 대해서도 추정 총 행 수와 NDV(고유 값 개수) 통계가 수집됩니다. #92812 (Alexander Gololobov).
  • 이제 모든 레플리카가 병렬 레플리카 읽기 시 orphaned range를 병렬로 가져올 수 있게 되어, 부하 분산이 개선되고 롱테일 지연 시간이 감소합니다. #91374 (zoomxi).
  • 선택도가 매우 높은 PREWHERE 필터를 사용하는 자동 병렬 레플리카의 추정 정확도가 개선되었습니다. #97231 (Nikita Taranov).
  • joinGet이 이제 임시 테이블도 지원합니다. #92973 (Eduard Karacharov).
  • 이제 외부 집계, 정렬, 조인은 모든 컨텍스트에서 temporary_files_codec 쿼리 설정이 적용됩니다. #92388 (Vladimir Cherkasov).
  • 벡터 유사도 검색 계획 최적화는 이제 검색 대상 컬럼에 인덱스가 있는 경우에만 적용됩니다. #94998 (Eduard Karacharov).

테이블 엔진 및 스토리지

  • StorageEmbeddedRocksDB가 이제 여러 컬럼을 기본 키로 지원합니다. #33917 (usurai).
  • ALTER TABLE <table> ATTACH PART <part_name> FROM <directory_name> 구문이 추가되어, 파일시스템에서 이름을 수동으로 바꾸지 않아도 detached/의 임의의 하위 디렉터리(예: broken-on-start 또는 unexpected 접두사가 있는 파트)에서 파트를 attach할 수 있습니다. #74816 (Anton Popov).
  • min_free_disk_bytes_to_perform_insert가 이제 JBOD 볼륨에서 올바르게 동작합니다. #90878 (Aleksandr Musorin).
  • 이제 TTL drop-part 머지 중에도 max_parts_to_merge_at_once가 적용됩니다. #95315 (Kseniia Sumarokova).
  • 백그라운드 작업(mutate, merge)은 이제 default 프로필을 통해 일반 쿼리와 설정을 공유하지 않고, background 프로필을 통해 별도로 구성할 수 있습니다. #93905 (Arsen Muk).
  • 크기를 정확히 계산하도록 서브컬럼 읽기를 개선해 메모리 사용량을 줄이고 속도를 높였습니다. #96251 (Pavel Kruglov).
  • 과도한 메모리 사용을 방지하기 위해 split_intersecting_parts_ranges_into_layers로 생성되는 파이프라인 스트림 수를 제한했습니다. #96478 (Nikita Taranov).
  • 텍스트 인덱스가 이제 GA가 되었습니다. #96794 (Robert Schulze).
  • QBit가 이제 GA가 되었습니다. #95358 (Raufs Dunamalijevs).
  • 이제 QBit에 대해 동등 비교를 수행할 수 있습니다. #94078 (Raufs Dunamalijevs).
  • enable_positional_arguments_for_projections를 사용해 테이블 스키마를 저장할 때 이제 위치 인수 대신 표현식이 치환되므로, 해당 설정을 비활성화한 상태에서도 서버를 재시작할 수 있습니다. #96372 (Alexey Milovidov).
  • Replicated 데이터베이스에서는 이제 더미 쿼리가 실행될 때마다 캐시된 클러스터가 업데이트되지 않습니다. #96897 (Tuan Pham Anh).
  • DDLWorker 상태를 재설정하는 SYSTEM RESET DDL WORKER [ON CLUSTER] 쿼리가 추가되었습니다. 이 쿼리는 호스트 ID가 업데이트될 때 레플리카 활동을 새로 고치는 데 유용합니다. #93780 (Tuan Pham Anh).

데이터 레이크

  • DeltaLake 삭제 벡터 지원이 추가되었습니다. #93852 (Kseniia Sumarokova).
  • 이제 deltaLakeCluster에서도 삭제 벡터를 지원합니다. #94365 (Kseniia Sumarokova).
  • 이제 macOS에서 DeltaLake를 사용할 수 있습니다. #95985 (Alexey Milovidov).
  • 이제 DeltaLake는 메타데이터의 count() 결과를 사용하여 system.tables에 올바른 테이블 통계(총 바이트 수/행 수)를 표시합니다. #96190 (Kseniia Sumarokova).
  • system.tables에서 DeltaLake 테이블을 쿼리할 때 객체 스토리지 읽기를 건너뛰도록 개선되었습니다. #95899 (Antonio Andelic).
  • delta-kernel 로깅을 디버깅하기 위한 SYSTEM RELOAD DELTA KERNEL TRACING <level> 명령이 추가되었습니다. #96763 (Kseniia Sumarokova).
  • Glue 메타데이터에 metadata_location이 지정되지 않은 경우 Iceberg 테이블 메타데이터 위치를 이제 자동으로 추론합니다. #91994 (Andrey Zvonov).
  • 이제 Iceberg manifest 파일 엔트리는 position delete 파일 이름의 하한과 상한을 파싱하여 데이터 파일 선택을 개선합니다. #93980 (Daniil Ivanik).
  • Iceberg 테이블에서 PREWHERE 최적화가 활성화되었습니다. #95476 (Konstantin Vedernikov).
  • 이제 Iceberg 테이블에서 데이터 파일 리더와 position delete 파일 리더가 스레드 및 메모리 제한을 공유합니다. #94701 (Yang Jiang).
  • Iceberg 테이블에 ALTER TABLE RENAME COLUMN 지원이 추가되었습니다. #97455 (murphy-4o).
  • 데이터 레이크에 Google Cloud Storage 지원이 추가되었습니다. #93866 (Konstantin Vedernikov).
  • 이제 Unity Catalog를 사용하는 장시간 실행 쿼리 중에 S3 액세스 토큰이 동적으로 새로 고쳐집니다. #95069 (Konstantin Vedernikov).
  • aws_role_arnaws_role_session_name 설정을 통해 Glue catalog에 대한 역할 기반 액세스가 추가되었습니다. #90825 (Antonio Andelic).

S3Queue

  • S3Queue가 이제 ordered mode에서 hive 파티셔닝을 추적합니다. #81040 (Anton Ivashkin).
  • S3Queue의 ordered mode 처리를 버킷 기반으로 리팩터링하여 Keeper 요청 수를 줄이고 성능을 개선했습니다. #92889 (Kseniia Sumarokova).
  • S3Queue ordered mode에 보다 범용적인 파티셔닝 지원을 추가했습니다. #94321 (Bharat Nallan).
  • ordered mode의 S3Queue에 파티션 키 기반 버킷팅을 추가했습니다. #94698 (Bharat Nallan).
  • keeper_path 설정을 통해 S3Queue의 보조 ZooKeeper를 지원합니다. #95203 (Diego Nieto).
  • 이제 S3(Azure)Queue의 ordered mode는 제한을 추적하여 실패한 노드를 정리합니다. #94412 (Kseniia Sumarokova).

S3 및 객체 스토리지

  • S3 x-amz-server-side-encryption 헤더가 더 이상 HeadObject, UploadPart, CompleteMultipartUpload 요청에 전달되지 않습니다. #64577 (Francisco J. Jurado Moreno).
  • 이제 S3 테이블 엔진과 s3 테이블 함수의 명명된 컬렉션(named collections)에서 storage_class_name을 지정할 수 있습니다. #91926 (János Benjamin Antal).
  • 인스턴스 프로필 자격 증명을 사용해 다수의 S3 쿼리를 동시에 실행할 때 발생하던 EC2 메타데이터 엔드포인트의 스로틀링 문제를 수정했습니다. 이제 자격 증명 공급자가 캐시되며 모든 쿼리에서 공유됩니다. #92891 (Sav).
  • MinIO 전용 오류에 대한 오류 코드 매핑을 포함해 AWS S3 C++ SDK에 MinIO 호환성 지원을 추가하여, 자체 호스팅 MinIO 클러스터의 안정성을 개선했습니다. #93082 (XiaoBinMu).
  • 자격 증명을 검사하라는 안내를 추가해 S3 인증 오류 메시지를 개선했습니다. #95648 (Gerald Latkovic).
  • 이제 Azure Blob Storage는 기본 복사가 어떤 오류로든 실패하면 읽기-쓰기 복사로 대체됩니다(이전에는 Unauthorized 오류에서만 대체됨). #92888 (Smita Kulkarni).

함수

  • avg()가 이제 Date, DateTime, Time 값을 인수로 지원합니다. #87845 (Yarik Briukhovetskyi).
  • mapContainsKeyLikemapContainsValueLike가 이제 mapKeys() 또는 mapValues()에 대한 텍스트 인덱스를 활용할 수 있습니다. #93049 (Michael Jarrett).
  • flipCoordinates가 이제 Geometry 타입을 지원합니다. #93303 (Bharat Nallan).
  • hasAnyTokenshasAllTokens 함수의 64개 토큰 제한을 제거했습니다. #95152 (Elmi Ahmadov).
  • 다른 거리 함수와의 일관성을 위해 cosineDistance의 별칭으로 distanceCosine을 추가했습니다. #96065 (Raufs Dunamalijevs).
  • ClickHouse KQL에 iif 함수를 추가했습니다. #94790 (happyso).
  • use_variant_as_common_type가 이제 기본적으로 활성화되어, Array, UNION 쿼리 및 if/multiIf/case 분기 내에서 서로 호환되지 않는 타입을 허용합니다. #90677 (Alexey Milovidov).

설정 및 구성

  • use_skip_indexes_on_data_read가 이제 기본적으로 활성화되었습니다. #93407 (Shankar Iyer).
  • add_minmax_index_for_time_columns 설정이 추가되었습니다 — 이 설정을 활성화하면 모든 Date, Date32, Time, Time64, DateTime, DateTime64 컬럼에 대해 minmax 인덱스가 자동으로 생성됩니다. #93355 (Michael Jarrett).
  • 머지 중 통계를 구체화할지 여부를 제어하는 materialize_statistics_on_merge 설정(기본적으로 활성화됨)이 추가되었습니다. #93379 (Han Fei).
  • 악의적인 페이로드를 방지할 수 있도록, 바이너리 형식에서 디코딩할 수 있는 총 타입 노드 수를 제한하는 input_format_binary_max_type_complexity 설정이 추가되었습니다. #92519 (Raufs Dunamalijevs).
  • trace_profile_event를 사용한 추적을 특정 이벤트 이름으로만 제한할 수 있도록 trace_profile_events_list 설정을 추가했습니다. #92298 (Alexey Milovidov).
  • 경로 중 하나는 리터럴이고 다른 하나는 중첩 객체인 JSON에서 중복 경로를 허용하는 type_json_allow_duplicated_key_with_literal_and_nested_object 설정을 추가했습니다. 이는 경로 중복 제거가 강제되기 전에 생성된 데이터와의 하위 호환성을 위한 것입니다. #93604 (Pavel Kruglov).
  • 머지 및 파싱 과정에서 JSON 컬럼의 동적 서브컬럼을 제한하기 위해 merge_max_dynamic_subcolumns_in_compact_part MergeTree 설정과 max_dynamic_subcolumns_in_json_type_parsing 쿼리 수준 설정이 추가되었습니다. #94184 (Pavel Kruglov).
  • use_primary_keyuse_skip_indexes와의 일관성을 위해 allow_statistics_optimize의 별칭으로 use_statistics를 추가했습니다. #94366 (Robert Schulze).
  • 숫자를 Enum으로 변환할 때 요소 존재 여부를 검사할 수 있도록 input_format_numbers_enum_on_conversion_error를 활성화했습니다. #94384 (Elmi Ahmadov).
  • 테이블에 행 정책이 있지만 현재 사용자에게 적용되는 정책이 없는 경우 예외를 발생시켜 잠재적인 구성 오류를 감지하는 설정이 추가되었습니다. #95014 (Vitaly Baranov).
  • 호환성 버전 26.2 이상에서는 enable_max_bytes_limit_for_min_age_to_force_merge가 이제 기본적으로 활성화되었습니다. #95917 (Christoph Wurm).
  • core_dump.size_limit은 이제 서버를 재시작하지 않아도 핫 리로드가 가능합니다. #96524 (Miсhael Stetsyuk).
  • 이제 구성을 다시 로드할 때도 명령줄 재정의가 적용됩니다. #80295 (Alexey Milovidov).
  • 서버 로그에 크기와 시간을 조합한 회전 전략이 추가되었습니다. #87620 (Jianmei Zhang).
  • 이제 파트 수(distributed_index_analysis_min_parts_to_activate)와 인덱스 크기(distributed_index_analysis_min_indexes_size_to_activate)를 기준으로 분산 인덱스 분석을 활성화할 수 있게 되었습니다. #95216 (Azat Khuzhin).
  • 통계 캐시가 이제 기본적으로 활성화되며, 업데이트 주기는 300초입니다. #95841 (Han Fei).
  • 이제 path 구성 매개변수는 시작 시 작업 디렉터리를 기준으로 조회되며, 데이터 디렉터리가 비정상적인 위치에 배치되는 것을 방지합니다. #96305 (Alexey Milovidov).

시스템 테이블 및 모니터링

  • 진단 기능을 개선하기 위해 system.mutationsparts_postpone_reasons 컬럼이 추가되었습니다. #92206 (Shaohua Wang).
  • system.data_skipping_indicescreation(implicit/explicit) 컬럼이 추가되었습니다. #92378 (Raúl Marín).
  • 이제 실행 중인 작업이 system.background_schedule_pool 및 해당 로그 테이블에 반영됩니다. #92587 (Azat Khuzhin).
  • 실행 중인 비내부 쿼리 수를 추적하는 QueryNonInternal 메트릭이 추가되었습니다. 이를 통해 max_concurrent_queries 제한에 대한 동시성을 모니터링할 수 있습니다. #94284 (Ashwath Singh).
  • 가장 오래 실행 중인 머지의 경과 시간을 나타내는 비동기 메트릭이 추가되었습니다. #94825 (Raúl Marín).
  • 물리적 연결 정보를 반영하도록 query_logconnection_addressconnection_port가 추가되었습니다(프록시를 통해 연결된 경우에 유용합니다). #95471 (Yakov Olkhovskiy).
  • system.crash_log에 더 많은 정보가 추가되었습니다. #94112 (Miсhael Stetsyuk).
  • system.aggregated_zookeeper_log에 구성 요소 이름이 추가되었습니다. #95882 (Antonio Andelic).
  • 사용 가능한 모든 토크나이저를 보여주는 system.tokenizers 테이블이 추가되었습니다. #96753 (Robert Schulze).
  • jemalloc 메모리 할당자 통계를 대화형으로 시각화할 수 있도록 system.jemalloc_stats 테이블과 /jemalloc.html HTTP 엔드포인트가 추가되었습니다. #97077 (Antonio Andelic).
  • raw, symbolized, collapsed 출력 형식을 지원하며 jemalloc 힙 프로파일을 읽고 분석할 수 있는 system.jemalloc_profile_text 테이블이 추가되었습니다. #97218 (Antonio Andelic).
  • MUTATE_PARTMUTATE_PART_START 이벤트에 대해 system.part_logmutation_ids가 추가되었습니다. #93811 (Shaohua Wang).
  • 중첩된 전역 서버 설정(예: logger.level)이 이제 system.server_settings에 일부 표시됩니다. #94001 (Hechem Selmi).
  • 이제 view_duration_ms는 스레드 지속 시간의 합이 아니라 그룹이 활성 상태였던 시간을 표시합니다. #94966 (Sema Checherinda).
  • 이제 system.blob_storage_log를 Azure Blob Storage, Local, HDFS에서 사용할 수 있습니다. 또한 error_code 컬럼이 추가되었습니다. #93105 (Alexey Milovidov).
  • 평균보다 느린 백그라운드 작업이 이제 구성 가능한 임계값(background_schedule_pool_log.duration_threshold_milliseconds, 기본값 30ms)에 따라 로그에 기록됩니다. #92965 (Azat Khuzhin).
  • URL 저장소의 비밀번호가 더 이상 쿼리 로그에 표시되지 않습니다. #93245 (Konstantin Vedernikov).

ClickHouse Keeper

  • 로그가 마지막으로 커밋된 인덱스보다 앞선 경우 Keeper 로그 엔트리의 간격을 올바르게 처리합니다. #90403 (Antonio Andelic).
  • Keeper 요청에 대한 OpenTelemetry 추적을 추가했습니다. #91332 (Miсhael Stetsyuk).
  • 새로운 Keeper 메트릭 KeeperChangelogWrittenBytes, KeeperChangelogFileSyncMicroseconds, KeeperSnapshotWrittenBytes, KeeperSnapshotFileSyncMicroseconds, KeeperBatchSizeElements, KeeperBatchSizeBytes를 추가했습니다. #92149 (Miсhael Stetsyuk).
  • 이제 CHECK_STATTRY_REMOVE Keeper 확장이 기본적으로 활성화됩니다. #93886 (Mikhail Artemenko).
  • Keeper는 손상된 스냅샷 또는 일관되지 않은 변경 로그를 감지하면 중단하는 대신 예외를 발생시키며, 더 안전한 복구를 위해 수동 개입이 필요합니다. #94168 (Antonio Andelic).
  • getChildren Keeper 요청에 with_datawith_stat 확장을 추가하여 단일 작업으로 하위 항목과 해당 데이터 및 상태 정보를 함께 가져올 수 있습니다. #94826 (Nikolay Degterinsky).
  • 클러스터 구성 실패로 이어질 수 있는 Keeper 오구성에 대한 검사를 추가했습니다. #94682 (Konstantin Bogdanov).
  • Database Replicated에서 테이블 조회를 개선하기 위해 with_data Keeper 확장 지원을 추가했습니다. #96090 (Nikolay Degterinsky).
  • 이제 system.zookeeper를 통해 보조 ZooKeeper에 삽입할 수 있습니다. #92092 (RinChanNOW).

메모리 관리

  • 파일 시스템 캐시 공간 예약을 최적화했습니다. 이제 축출 후보는 배타 잠금을 유지하지 않은 상태로 수집됩니다. #82764 (Kseniia Sumarokova).
  • 원격 테이블 엔진/함수에 대해 파일 시스템 캐시 읽기 버퍼에서 병렬 읽기를 활성화했습니다. #71781 (Kseniia Sumarokova).
  • jemalloc 더티 페이지의 즉시 제거를 활성화하여 Linux 이외의 시스템에서 메모리 사용량을 줄였습니다. #93360 (Eduard Karacharov).
  • 이제 jemalloc 더티 페이지 제거는 메인 MemoryWorker 스레드와 분리된 별도 스레드에서 실행됩니다. 또한 총 메모리 사용 비율을 기준으로 제거를 수행하기 위한 memory_worker_purge_total_memory_threshold_ratio 구성도 추가했습니다. #94902 (Antonio Andelic).
  • ClickHouse가 지속적인 메모리 압박 상태에 있을 때 jemalloc 더티 페이지 decay가 동적으로 비활성화되도록 했습니다. #95145 (Antonio Andelic).
  • MergeTree에서 데이터를 읽기 전에 명시적인 메모리 사용량 검사를 추가했으며, 운영 경험을 바탕으로 스레드 풀 큐 크기도 줄였습니다. #94692 (Nikita Mikhaylov).
  • 이제 사용자 인증 전에 총 메모리 제한을 검사하며, 제한을 초과하면 memory limit exceeded 예외를 발생시킵니다. #95003 (Nikolai Kochetov).
  • 쿼리 조건 캐시의 잘못된 메모리 사용량 계산을 수정했습니다. #95478 (Nikita Mikhaylov).
  • 집계/정렬 중 디스크로 스필할 때 쿼리 메모리 사용량을 감지하는 로직을 더욱 견고하게 개선했습니다. #92500 (Azat Khuzhin).
  • 이제 스케줄러는 CPU 자원 부족 상태에서 프로세스를 보호하기 위해 MemoryWorker 스레드를 우선 처리합니다. #94864 (Nikita Mikhaylov).
  • 테이블에서 읽을 때 일부 경우 ClickHouse가 메모리 제한을 준수하지 않던 문제를 수정했습니다. #93715 (Nikita Mikhaylov).

데이터 형식

  • 이제 Parquet 리더가 Tuple 또는 Map 컬럼을 JSON으로 읽을 수 있습니다. #92864 (Michael Kolupaev).
  • 이제 Parquet 리더가 빈 튜플을 지원합니다. #92868 (Michael Kolupaev).
  • 이제 Date 타입은 Arrow/ArrowStream 형식에서 Arrow의 네이티브 date32 타입으로 직렬화됩니다(이전에는 uint16). 기존 동작은 output_format_arrow_date_as_uint16 설정으로 복원할 수 있습니다. #96860 (Alexey Milovidov).
  • 이제 Hash 출력 형식은 블록 크기와 관계없이 동일하게 동작합니다. #94503 (Alexey Milovidov).
  • Pretty JSON 형식에서는 단순 타입이 더 이상 별도 줄에 출력되지 않습니다. #93836 (Pavel Kruglov).
  • 이제 스키마 추론에서 allow_experimental_nullable_tuple_type 설정이 반영됩니다. 이 설정을 활성화하면 누락된 중첩 객체는 NULL 요소로 이루어진 튜플 대신 NULL이 될 수 있습니다. #95525 (Nihal Z. Miaji).
  • 이제 SQL 서식 지정자는 SELECT를 괄호로 감싸는 대신 AS SELECT 앞에 COMMENT를 출력합니다. #96293 (Alexey Milovidov).
  • simdcomp를 사용해 postings list 압축을 최적화했습니다. #92871 (Peng Jian).

백업 및 복원

  • 갱신 가능 구체화 뷰의 데이터를 백업할지 여부를 제어하는 backup_data_from_refreshable_materialized_view_targets 백업 설정이 추가되었습니다. APPEND 갱신 전략을 사용하는 RMV의 대상은 항상 백업됩니다. #93658 (Julia Kartseva).
  • S3 및 Azure Blob Storage에 대해 SQL로 정의된 명명된 컬렉션(named collections)을 BACKUP/RESTORE에서 지원합니다. #94605 (Pablo Marcos).

명명된 컬렉션 및 딕셔너리

  • 이제 MongoDB 테이블 함수에서 명명된 컬렉션의 매개변수 재정의를 허용합니다. #89616 (vanchaklar).
  • YTsaurus 딕셔너리 및 테이블에서 명명된 컬렉션을 사용할 수 있도록 했습니다. #94582 (MikhailBurdukov).
  • 이제 YTsaurus 동적 테이블 딕셔너리 소스에 컬럼 설명을 전달할 수 있습니다. #92391 (MikhailBurdukov).
  • 명시적으로 지정한 경우 이제 매개변수화된 뷰 스키마가 표시됩니다. #90220 (Grigorii Sokolik).

중복 제거

  • insert_select_deduplicate 설정에 이전 버전과의 호환성 옵션을 추가하도록 개편했습니다. #92951 (Sema Checherinda).
  • 이제 materialized view가 관련된 경우 비동기 삽입과 함께 중복 제거를 사용할 수 있습니다. #93957 (Sema Checherinda).

기타 개선 사항

  • SYSTEM INSTRUMENT ADD/REMOVE의 UX를 개선했습니다. 이제 함수 이름에 문자열 리터럴을 사용하고, 일치하는 모든 함수에 패치를 적용하며, REMOVE에서 function_name도 지원합니다. #93345 (Pablo Marcos).
  • 일시 중지 가능한 failpoint용 SYSTEM NOTIFY FAILPOINT와 PAUSE/RESUME용 SYSTEM WAIT FAILPOINT를 추가했습니다. #92368 (Shaohua Wang).
  • 이제 system.trace_log, system.symbols, demangle 함수에서 C++ 함수 이름이 올바르게 표시됩니다. #93075 (Alexey Milovidov).
  • 이제 jemalloc 프로파일이 심볼과 함께 기록되므로, 힙 프로파일 생성 시 바이너리가 필요하지 않습니다. #93099 (Azat Khuzhin).
  • 스택 언와인딩 중 dropReplicationSlot에서 예외가 발생할 때 MaterializedPostgreSQL 데이터베이스에 테이블을 attach하면 발생하던 충돌을 수정했습니다. #96871 (Alexey Milovidov).
  • CREATE TABLE이 실패할 때 남을 수 있는 잔여물이 정리되지 않는 문제를 수정했습니다. #94174 (Azat Khuzhin).
  • 비밀번호로 보호된 TLS 키를 사용할 때 초기화되지 않은 메모리에 접근하던 문제를 수정했습니다. #94182 (Konstantin Bogdanov).
  • alter table ... modify setting ...이 잠금을 획득하는 도중 시간 초과되면, 이제 논리 오류 대신 시간 초과 오류를 반환합니다. #93856 (Han Fei).
  • 소켓 시간 초과와 함께 사용할 때 CPU 및 실시간 프로파일러의 상호운용성을 개선했습니다. #96601 (Sergei Trifonov).
  • 릴리스 빌드에서 빠른 libcxx 하드닝(주로 범위 초과 검사)을 활성화했으며, 눈에 띄는 성능 저하가 없습니다. #94757 (Miсhael Stetsyuk).

성능 향상

JOIN 성능

  • ColumnVector::replicate에 동적 디스패치를 구현하여 일부 hash join 작업의 성능을 개선했습니다. #79573 (Raúl Marín).
  • 이제 더 많은 필터를 JOIN으로 푸시다운할 수 있습니다. #85556 (Nikita Taranov).
  • 필터가 한쪽 입력만 사용하는 경우, ANY, SEMI, ANTI 조인에 대해 JOIN ON 조건의 필터 푸시다운을 확장했습니다. #92584 (Dmitry Novik).
  • 이제 동등한 Set을 사용해 SEMI JOIN의 필터를 푸시다운할 수 있습니다. #92837 (Dmitry Novik).
  • 복잡한 조건식에 대해 ParallelHashJoin에서 조인되지 않은 행 처리의 병렬화를 지원하며, 이는 parallel_non_joined_rows_processing 설정으로 제어됩니다(기본적으로 활성화). #92068 (Yarik Briukhovetskyi).
  • 이제 오른쪽이 비어 있으면 hash join이 왼쪽 전체를 읽는 작업을 건너뛰어, 과도한 필터링이나 집계로 인한 불필요한 작업을 방지합니다. #94062 (Alexander Gololobov).
  • 이제 RIGHT OUTER JOIN에서 JOIN 런타임 필터를 지원합니다. #96183 (Hechem Selmi).
  • 이제 PREWHERE 최적화를 JOIN 런타임 필터 최적화 이후로 연기하여, 런타임 필터도 PREWHERE로 푸시다운할 수 있습니다. #95838 (Alexander Gololobov).

쿼리 최적화

  • 파티션 키가 정렬 키와 같거나 그 접두사인 경우, 윈도 함수에 대한 정렬 순서 최적화를 비활성화하여 병렬 실행 성능을 개선했습니다. #87299 (Nikita Taranov).
  • 이제 외부 필터가 뷰까지 푸시다운되어 로컬 및 원격 노드 모두에서 PREWHERE를 적용할 수 있습니다. #88316 (Igor Nikonov).
  • 소수 LIMITOFFSET에 대한 성능과 메모리 사용량을 최적화했습니다. #91167 (Ahmed Gouda).
  • 가상 컬럼에 대한 상수 필터를 더 이상 중복해서 평가하지 않습니다. #91588 (c-end).
  • 이제 기본 키의 모든 결정적 표현식(예: ORDER BY cityHash64(user_id))을 데이터 스키핑에 사용할 수 있습니다. ClickHouse는 쿼리 상수에 해당 표현식을 적용하고, 그 결과를 =, IN, has를 사용하는 기본 키 인덱스 조회에 활용합니다. 단사 표현식의 경우 부정 형태(!=, NOT IN, NOT has)도 지원됩니다. #92952 (Nihal Z. Miaji).
  • 이제 read-in-order 최적화는 WHERE 조건으로 인해 ORDER BY 컬럼이 상수인 경우를 인식하여 역순 읽기를 효율적으로 수행할 수 있습니다. 이는 WHERE tenant='42' ORDER BY tenant, event_time DESC와 같은 멀티테넌트 쿼리에 유용합니다. #94103 (matanper).
  • 기본 키 조건 다음에 스킵 인덱스가 이어지는 FINAL 쿼리의 경우, 이제 PrimaryKeyExpand 단계는 초기에 추려진 기본 키 범위만 검사합니다. #94903 (Shankar Iyer).
  • 이제 지연 구체화 최적화가 UNION ALL 쿼리의 첫 번째 분기뿐 아니라 모든 분기에 적용되어, 서로 다른 MergeTree 테이블에서 정렬된 읽기와 제한된 읽기를 여러 개 결합하는 쿼리의 I/O를 줄입니다. #96832 (Federico Ginosa).

함수 및 집계 성능

  • 이제 JIT 컴파일이 더 많은 함수를 지원합니다. #88770 (Alexey Milovidov).
  • distinctJSONPaths 집계 함수를 최적화하여 전체 JSON 컬럼 대신 데이터 파트에서 JSON 경로만 읽도록 했습니다. #92196 (Pavel Kruglov).
  • 동일한 요소가 연속으로 자주 나타나는 경우 uniqExact를 최적화했습니다. #93268 (Alexey Milovidov).
  • 모든 입력값이 ASCII인 경우 isValidASCII를 최적화했습니다. #93347 (Robert Schulze).
  • 가능한 경우(널이 아니고, -If를 사용하지 않으며, GROUP BY가 없고, IPv6 또는 String이 아닌 경우) 삽입을 일괄 처리하여 숫자 타입에서의 uniq를 더 빠르게 만들었습니다. #95904 (Raúl Marín).

스토리지 및 I/O 성능

  • Parquet Reader V3 Prefetcher가 더 빠른 임의 읽기 로직을 사용하도록 수정했습니다. #91435 (Arsen Muk).
  • icebergCluster의 성능을 개선했습니다. #91537 (Yang Jiang).
  • 적응형 쓰기 버퍼를 활성화해 Wide 파트가 있는 매우 넓은 테이블의 INSERT 및 머지 메모리 사용량을 줄였습니다. 또한 암호화된 디스크에 대한 적응형 쓰기 버퍼 지원도 추가했습니다. #92250 (Azat Khuzhin).
  • 검색할 토큰 수를 줄여 텍스트 인덱스와 sparseGrams 토크나이저를 사용하는 전체 텍스트 검색 성능을 개선했습니다. #93078 (Anton Popov).
  • x86에서 동적 디스패치를 사용해 T64 코덱 압축 속도를 높였습니다. #95881 (Raúl Marín).
  • x86에서 32바이트 블록의 LZ4 압축 해제 속도를 높였습니다. #96778 (Raúl Marín).
  • 텍스트 인덱스 직접 읽기 최적화가 이제 부분적으로 작동합니다 — 구체화된 텍스트 인덱스가 있는 파트는 이를 사용하고, 없는 파트는 기존 필터 표현식을 대신 사용합니다. #96411 (Anton Popov).
  • 불필요한 데이터 복사를 제거하고 숫자 컬럼에 대한 벡터화된 최소/최대 계산을 활성화해 INSERTminmax 스킵 인덱스 계산을 최적화했습니다. #97392 (Raúl Marín).
  • 더 빠른 필터링을 위해 시스템 로그 테이블의 시간 컬럼에 minmax 보조 인덱스를, query_id/initial_query_id 컬럼에 bloom_filter 인덱스를 추가했습니다. #96712 (Alexey Milovidov).
  • 중복 제거가 활성화되지 않은 경우 INSERT 시 메모리 사용량 회귀 현상을 방지했습니다. #96503 (Alexey Milovidov).

메모리 최적화

  • highlighting 및 VALUES 파싱이 활성화되지 않은 경우, 사용되지 않는 필드를 제거해 ASTLiteral의 메모리 사용량을 줄였습니다. #93974 (Ilya Yatsishin).
  • 일반적인 ASTLiteral 하위 노드 대신 값 매개변수를 문자열/정수 쌍으로 저장하는 전용 Enum AST 클래스를 도입하여 메모리 사용량을 줄였습니다. #94178 (Ilya Yatsishin).
  • 컬럼 이름을 일반 AST 리터럴 노드가 아닌 문자열로 직접 저장하도록 하여 이름 있는 튜플 AST 객체의 메모리 사용량을 최적화했습니다. #94704 (Ilya Yatsishin).
  • CachedOnDiskReadBufferFromFile 구조체의 크기를 약 50배 줄였습니다. #96098 (Azat Khuzhin).
  • 이제 테이블이 비어 있으면 HashTable::resize는 기존 데이터를 복사하지 않습니다. #96180 (Raúl Marín).

내부 최적화

  • 쿼리 파이프라인 내부에서 데이터를 파티셔닝하기 위해 "fastrange" (Daniel Lemire) 방식을 도입하여 병렬 정렬과 JOIN을 개선했습니다. #93080 (Alexey Milovidov).
  • 추가 링커 옵션으로 디버추얼라이제이션을 개선했습니다. #94737 (Nikita Taranov).
  • ZooKeeper 요청을 일괄 처리하여 파트가 많은 ReplicatedMergeTree 테이블의 복제본 클론 성능을 개선했습니다. #94847 (c-end).
  • 더 빠른 해싱과 lock-free 카운터로 전환하여 observeOperations의 ZooKeeper 수신 스레드 CPU 사용량을 20% 이상 줄였습니다. #95962 (Miсhael Stetsyuk).

버그 수정 사항

모든 버그 수정 사항 (클릭하여 펼치기)

조인(JOIN) 버그 수정

  • outer-to-inner 조인 최적화가 적용될 때 Join 스토리지에서 발생하던 INCOMPATIBLE_TYPE_OF_JOIN 오류를 수정했습니다. #84292 (Vladimir Cherkasov).
  • USING 절과 join_use_nulls를 사용하는 여러 조인이 포함된 쿼리의 논리 오류를 수정했습니다. #92251 (Vladimir Cherkasov).
  • join_use_nulls를 사용한 조인 재정렬 시 발생하던 논리 오류를 수정했습니다. #92289 (Vladimir Cherkasov).
  • join_on_disk_max_files_to_merge 설정으로 인해 발생할 수 있는 충돌을 수정했습니다. #92335 (Bharat Nallan).
  • 외부 조인을 내부 조인으로 변환할 때 쿼리 계획이 의도치 않게 수정되어 발생하던 LOGICAL_ERROR를 해결했습니다. 또한 조인 시 집계 키에 injective 함수가 사용되는 경우에도 적용될 수 있도록 최적화 요구 사항을 완화했습니다. #92503 (János Benjamin Antal).
  • 상수 조건에서 여러 조인과 join_use_nulls를 사용할 때 발생하던 논리 오류를 수정했습니다. #92892 (Vladimir Cherkasov).
  • LowCardinality(Nullable(T)) 컬럼의 full_sorting_join에서 발생하던 NULL != NULL 문제를 수정했습니다. #92924 (Vladimir Cherkasov).
  • 오른쪽 조인 키가 희소 컬럼일 때 조인 결과가 올바르게 나오지 않던 문제를 수정했습니다. #93038 (Amos Bird).
  • LEFT ANTI JOIN에 추가적인 post-condition이 있을 때 런타임 필터가 잘못 동작하던 문제를 수정했습니다. #91824 (Alexander Gololobov).
  • 우측 테이블에 대한 totals가 포함된 쿼리에서 런타임 필터를 사용할 때 발생하던 논리 오류를 수정했습니다. #93330 (Alexander Gololobov).
  • 잘못 중복 반환된 const 컬럼으로 인해 조인 런타임 필터가 쿼리 계획에 추가될 때 일부 경우에 발생하던 논리 오류를 수정했습니다. #93144 (Alexander Gololobov).
  • 일부 정상적인 경우에도 ILLEGAL_TYPE_OF_ARGUMENT를 반환하던 조인 런타임 필터에서 사용되는 __applyFilter 함수를 수정했습니다. #93187 (Alexander Gololobov).
  • 이미 채워진 오른쪽 테이블과 조인할 때 런타임 필터가 추가되지 않던 문제를 수정했습니다. #93211 (Alexander Gololobov).
  • 런타임 필터가 활성화된 상태에서 조인된 테이블이 동일한 컬럼을 여러 번 반환할 때 발생하던 NOT_FOUND_COLUMN_IN_BLOCK 오류를 수정했습니다. #93526 (Alexander Gololobov).
  • Merge 테이블에서 조인 런타임 필터가 적용될 때 FilterStep이 올바르게 추가되지 않던 문제를 수정했습니다. #94021 (Alexander Gololobov).
  • USING 절이 있는 Join 스토리지의 조인 작업 중 슈퍼타입으로의 타입 변환 문제를 수정했습니다. #94000 (Dmitry Novik).
  • 병렬 레플리카 및 non-MergeTree 테이블과의 JOIN이 포함된 쿼리 문제를 수정했습니다. #93902 (Igor Nikonov).
  • 런타임 필터에서 널 허용 조인 컬럼의 경쟁 상태 문제를 수정했습니다. #95775 (Hechem Selmi).
  • 빈 문자열이 Nullable(String) 키를 사용하는 Join 테이블에서 NULL로 변환되던 문제가 수정되었습니다. #96002 (Alexey Milovidov).
  • 비어 있는 MergeTree 테이블에서 direct 조인 알고리즘을 사용할 때 발생하던 NOT_SUPPORTED 오류를 수정했습니다. #95935 (Vladimir Cherkasov).
  • 외부 조인과 여러 개의 INNER JOIN이 함께 사용된 쿼리에서, 외부 조인의 ON 조건이 앞서 조인된 여러 테이블의 컬럼을 참조할 때 발생하던 잘못된 조인 재정렬로 인한 오답 결과를 수정했습니다. #96193 (Vladimir Cherkasov).
  • 널 허용 하위 필드가 있는 Tuple 컬럼의 런타임 필터 예외를 수정했습니다. #96509 (Alexey Milovidov).
  • CROSS 조인 및 병렬 레플리카가 활성화된 환경에서 잘못된 결과를 반환하던 쿼리를 수정했습니다. #96848 (Igor Nikonov).
  • INNER JOIN 및 WHERE 절과 함께 사용할 때 arrayJoin이 중복 행을 생성하던 문제를 수정했습니다. 이 문제는 부분 술어 푸시다운에서 arrayJoin이 포함된 필터를 JOIN 아래로 잘못 푸시하면서 발생했습니다. #96989 (Alexey Milovidov).
  • WHERE 절에서 arrayJoin이 JOIN 양쪽의 컬럼을 참조하는 경우 발생하던 LOGICAL_ERROR를 수정했습니다. #97239 (Alexey Milovidov).
  • USING을 사용하는 JOIN의 VALUES 절 내 람다 함수에서 매처(*)를 사용할 때 발생하는 논리 오류를 수정했습니다. #95661 (Vladimir Cherkasov).
  • USING 컬럼의 타입이 서로 다를 때 matcher (*, table.*) 및 analyzer_compatibility_join_using_top_level_identifier에서 발생할 수 있는 논리적 오류를 수정했습니다. #95808 (Vladimir Cherkasov).
  • analyzer_compatibility_join_using_top_level_identifier 및 ALIAS 컬럼에서 발생하던 논리 오류를 수정했습니다. #97297 (Vladimir Cherkasov).
  • 기존 분석기에서 중복된 별칭이 있는 JOIN 사용 시 발생하던 충돌을 수정했습니다. #96405 (Ilya Golshtein).

쿼리 및 분석기 버그 수정

  • 사전 정의된 쿼리 핸들러에서 INSERT 중 후행 공백이 데이터로 해석되던 버그를 수정했습니다. #83604 (Fabian Ponce).
  • Enum 요소 확장과 같은 메타데이터 전용 ALTER 이후 프로젝션을 사용하는 집계에서 예외가 발생하던 문제가 수정되었습니다. #84143 (Alexey Milovidov).
  • 윈도우 함수와 여러 인수에 대한 count_distinct_optimization 패스 문제를 수정했습니다. #92376 (Raúl Marín).
  • 부정 리터럴이 있는 arrayElement의 AST 포맷이 일관되지 않던 문제를 수정했습니다. #92293 (Pavel Kruglov).
  • 비상수 배열 인수에서 잘못된 값을 반환하던 NOT IN 문제가 수정되었습니다. #93314 (Yarik Briukhovetskyi).
  • Nothing 타입에서 발생하던 null-safe 비교 오류를 수정했습니다. #91884 (Yarik Briukhovetskyi).
  • use_top_k_dynamic_filtering 최적화에서 발생하던 Not found column 오류를 수정했습니다. #93316 (Nikolai Kochetov).
  • 스칼라 상관 서브쿼리가 있는 경우, 서브쿼리에서 사용되지 않는 컬럼이 제거되던 문제를 수정했습니다. #93273 (Dmitry Novik).
  • 키가 부호 있는 정수 타입인 경우 optimize_inverse_dictionary_lookup이 분산 쿼리에서 작동하지 않던 문제를 수정했습니다. #93848 (Nihal Z. Miaji).
  • 분산 remote() 쿼리에서 lag/lead가 작동하지 않는 문제를 수정했습니다. #93858 (Nihal Z. Miaji).
  • WHERE 절에서 not match(...)를 사용했을 때 잘못된 결과가 발생하던 데이터 스키핑 로직의 버그를 수정했습니다. #92726 (Nihal Z. Miaji).
  • WHERE에서 not materialize(...) 또는 not CAST(...)를 사용할 때 데이터 스키핑 로직이 잘못된 결과를 초래하던 버그를 수정했습니다. #93017 (Nihal Z. Miaji).
  • has 함수에 빈 배열을 사용했을 때 발생하던 인덱스 분석 중의 논리 오류를 수정했습니다. #92995 (Nihal Z. Miaji).
  • 드물게 빈 튜플을 Map 컬럼과 함께 사용한 경우 발생하던 논리 오류를 수정했습니다. #93814 (Nihal Z. Miaji).
  • 거짓 조건이 포함된 PK 샤딩 사용 쿼리가 실패하던 문제를 수정했습니다. #92815 (Yarik Briukhovetskyi).
  • 로컬 및 원격/분산 테이블을 머지할 때 hostName()에서 ILLEGAL_COLUMN이 발생하던 Merge 테이블 엔진의 쿼리 계획 수립 문제를 수정했습니다. #93286 (Jinlin).
  • 별칭이 있는 테이블을 대상으로 하는 Merge 엔진에서 발생하던 NO_SUCH_COLUMN_IN_TABLE 오류를 수정했습니다. #92910 (Pavel Kruglov).
  • 여러 컬럼에 대한 조건자, 블룸 필터 스킵 인덱스, 그리고 ORNOT 조건이 모두 포함된 SELECT 쿼리에서 일관되지 않은 결과가 반환되던 문제를 수정했습니다. #94026 (Shankar Iyer).
  • 필터에 서브컬럼이 포함된 경우 projection 적용 시 발생하던 문제가 수정되었습니다. #93141 (Pavel Kruglov).
  • 프로젝션이 머지 과정에서 다시 빌드될 때 발생하던 _part_offset 손상을 수정하고, 불필요한 읽기를 피하여 프로젝션 처리를 최적화했습니다. #93827 (Amos Bird).
  • 사실상 동일한 컬럼의 별칭이었던 경우, 서로 다른 보간된 컬럼이 블록 내에서 같은 컬럼으로 합쳐지는 문제를 방지했습니다. #93197 (Yakov Olkhovskiy).
  • 머지 중 프로젝션이 다시 빌드될 때 사용되지 않는 컬럼을 제거해 메모리 사용량을 줄이고 임시 파트 생성 수를 줄였습니다. #93233 (Nikolai Kochetov).
  • 분산 쿼리에서 음수 LIMIT/OFFSET을 사용한 일부 경우에 발생하던 논리 오류를 수정했습니다. #95357 (Nihal Z. Miaji).
  • 분산 쿼리에서 소수점이 있는 LIMIT/OFFSET를 사용한 일부 경우에 발생하던 논리 오류를 수정했습니다. #96475 (Nihal Z. Miaji).
  • transform_null_in이 활성화된 상태에서 NULL 값에 대해 잘못된 결과를 반환하던 IN 함수를 수정했습니다. #95674 (Nihal Z. Miaji).
  • 단일 컬럼 참조가 포함된 IN (col)UNSUPPORTED_METHOD 오류와 함께 실패하던 문제가 수정되었습니다. #97646 (Alexey Milovidov).
  • optimize_syntax_fuse_functions가 집계 함수 인수가 LowCardinality(Nullable)일 때 sum/count/avgsumCount()로 재작성하던 문제를 수정했습니다. #96239 (Nihal Z. Miaji).
  • not INnot has 함수에서 잘못된 파티션 가지치기 동작을 수정했습니다. #96241 (Nihal Z. Miaji).
  • prewhere 내 lambda 식으로 인해 발생하던 prewhere 필터 오류를 수정했습니다. #95395 (Xiaozhe Yu).
  • 람다 식이 구체적인 값이 필요한 위치에 전달되었을 때 쿼리 분석기에서 발생하던 LOGICAL_ERROR를 수정했습니다. #96892 (Alexey Milovidov).
  • 람다 함수를 사용하는 특정 표현식에서 발생하던 널 포인터 역참조를 수정했습니다. #96479 (Alexey Milovidov).
  • CTE 및 서브쿼리에서 file과 같은 테이블 함수에 서브쿼리별 SETTINGS가 적용되지 않던 문제를 수정했습니다. #96882 (Alexey Milovidov).
  • CTE로 접힌 상수에 대한 쿼리 조건 캐시의 해시 충돌을 수정했습니다. 이 문제로 인해 잘못된 쿼리 결과가 발생할 수 있었습니다. #96172 (Alexey Milovidov).
  • analyzer가 활성화된 상태에서 merge() 테이블 함수를 통해 ALIAS 컬럼 내 lambda 표현식이 포함된 테이블을 쿼리할 때 발생하던 BAD_ARGUMENTS 오류를 수정했습니다. #97551 (Alexey Milovidov).
  • EXCEPT ALLINTERSECT ALL이 행 다중도를 무시하고 DISTINCT 버전처럼 동작하던 문제가 수정되었습니다. #96876 (Alexey Milovidov).
  • PRECEDING 오프셋에서 발생하던 WindowTransform의 assertion failure를 수정했습니다. #96026 (Alexey Milovidov).
  • group_by_use_nulls = 1CUBE/ROLLUP/GROUPING SETS를 사용할 때 윈도우 함수 사용 중 발생하던 예외를 수정했습니다. #96878 (Alexey Milovidov).
  • GROUPING SETS, group_by_use_nulls, LowCardinality를 사용하는 Tuple의 상호작용으로 인해 예기치 않은 블록 구조가 생성되던 문제가 수정되었습니다. #96358 (Alexey Milovidov).
  • Nullable(Tuple(...)) 내부에 LowCardinality(Nullable(...))를 포함한 키를 사용할 때 GROUP BY ... WITH ROLLUP/CUBE 수행 중 발생하던 논리 오류를 수정했습니다. #97647 (Alexey Milovidov).
  • if 또는 transformNullable(String)을 반환할 때 IfTransformStringsToEnumPass에서 발생하던 assertion failure 오류를 수정했습니다. #97002 (Alexey Milovidov).
  • optimize_inverse_dictionary_lookupdictGet(...) 조건자를 재작성할 때, CREATE TEMPORARY TABLE 권한이 없는 사용자에게 발생하던 ACCESS_DENIED 문제가 수정되었습니다. #97484 (Nihal Z. Miaji).
  • PREWHERE 및 타입 추론이 결합된 분산 쿼리의 드문 사례에서 UInt64Int32if 함수의 타입 불일치를 수정했습니다. #96012 (Alexey Milovidov).
  • Bool 타입과 관련된 JIT 컴파일 쿼리 문제를 수정했습니다. #96013 (Alexey Milovidov).
  • JIT 컴파일된 식이 DateTimeDateTime64로 변환할 때(예: CASE/if/multiIf에서 DateTime 타입이 혼합된 경우) 잘못된 결과가 발생하던 문제를 수정했습니다. #96879 (Alexey Milovidov).
  • formatDateTime에서 고정 폭이 아닌 서식 지정자를 사용할 때 발생하던 미초기화 값 사용 문제가 수정되었습니다. #96133 (Alexey Milovidov).
  • indexOfAssumeSorted가 호환되지 않는 타입으로 호출될 때 발생하던 std::terminate를 수정했습니다. #96877 (Alexey Milovidov).
  • Geometry 함수는 이제 Geometry variant 타입 외에도 각 Geometry 하위 타입을 허용합니다. #97571 (Alexey Milovidov).
  • 인덱스가 ROW POLICY/PREWHERE 및 FINAL이 포함된 쿼리 결과에 영향을 주던 경우를 수정했습니다. #97076 (Yarik Briukhovetskyi).
  • read-in-order 최적화가 행 정책을 사용할 수 있도록 했습니다. #97538 (Janos Benjamin Antal).
  • 텍스트 인덱스가 있는 컬럼을 QUALIFY 절과 함께 사용할 때 발생하던 LOGICAL_ERROR를 수정했습니다. #97313 (Alexey Milovidov).
  • WHERE 절에 AND/OR가 포함된 표현식이 32개를 초과할 때 발생할 수 있던 비정상 종료 문제를 수정했습니다. #97698 (Shankar Iyer).
  • FINAL이 있는 테이블에서 스타 확장과 함께 indexHint를 사용할 때 removeUnusedColumns 최적화에서 발생하던 블록 구조 불일치 문제를 수정했습니다. #97622 (Alexey Milovidov).
  • 괄호 안의 별칭이 지정된 튜플 리터럴에 대한 AST 포맷팅 왕복 일관성 문제를 수정했습니다. #97418 (Alexey Milovidov).
  • NOT (1, 1, 1)에 대한 AST 형식 지정 불일치를 수정했습니다. #97653 (Alexey Milovidov).

MergeTree 및 스토리지 버그 수정

  • 파일 시스템이 대소문자를 구분하지 않는 경우, MergeTree에서 파일 이름을 항상 해시로 대체합니다. 이전에는 macOS에서 컬럼/하위 컬럼 이름이 대소문자만 다를 경우 데이터 손상으로 이어질 수 있었습니다. #86559 (Pavel Kruglov).
  • materialized view는 이제 생성된 데이터베이스를 실행 컨텍스트로 사용하므로, 뷰의 SELECT 쿼리에서 명시적인 데이터베이스 지정을 생략할 수 있습니다. #88193 (Dmitry Kovalev).
  • materialized view 내부의 기반 쿼리에 대해 CREATE 단계에서 전체 권한 검사를 추가했습니다. #89180 (pufit).
  • 트랜잭션 없이 수행된 뮤테이션이 이후 롤백된 활성 트랜잭션의 파트를 변경하던 경우 발생하던 논리 오류를 수정했습니다. #90469 (Shaohua Wang).
  • 일반 데이터베이스를 Atomic 데이터베이스로 변환한 후 system.warnings가 올바르게 업데이트되지 않던 문제를 수정했습니다. #90473 (sdk2).
  • ATTACH AS REPLICATED 실행 중 발생하던 LOGICAL_ERROR: Storage does not support transaction 문제가 수정되었습니다. #91772 (Shaohua Wang).
  • ratio_of_defaults_for_sparse_serialization=0.0이 설정된 희소 컬럼의 뮤테이션 이후 발생할 수 있던 FILE_DOESNT_EXIST 오류를 수정했습니다. #92860 (Pavel Kruglov).
  • ALTER를 통해 ratio_of_defaults_for_sparse_serialization1.0으로 변경했을 때, 희소 컬럼 뮤테이션 이후 발생할 수 있는 FILE_DOESNT_EXIST 오류를 수정했습니다. #93016 (Pavel Kruglov).
  • 공유 파트에서 발생하는 TOCTOU 경쟁 상태로 인해 오래된 파트가 사용될 수 있던 문제를 수정했습니다. #93022 (Azat Khuzhin).
  • MergeTree에서 뮤테이션 중 원본 파트의 직렬화 정보 설정을 상속하도록 하여, 데이터 타입 직렬화가 변경된 후 뮤테이션된 파트에서 잘못된 쿼리 결과가 발생할 수 있는 문제를 수정했습니다. #92419 (Pavel Kruglov).
  • 같은 이름의 컬럼과 서브컬럼 사이에서 발생할 수 있는 충돌로 인해 잘못된 직렬화와 쿼리 실패가 발생하던 문제를 수정했습니다. #92453 (Pavel Kruglov).
  • 파티션 표현식에 하위 컬럼이 포함된 테이블에 insert할 때 발생하던 NOT_FOUND_COLUMN_IN_BLOCK를 수정했습니다. #92905 (Pavel Kruglov).
  • 소스 테이블을 ALTER하는 동안 MV에서 하위 컬럼이 누락될 수 있는 문제를 수정했습니다. #93276 (Pavel Kruglov).
  • ReplicatedMergeTree를 복원할 때 중복 제거 경합 상태로 발생하던 LOGICAL_ERROR를 수정했습니다. #93612 (Pablo Marcos).
  • 직접 역직렬화 중 TTL 업데이트에 희소 컬럼을 사용하도록 수정하여 Unexpected type of result TTL column 오류를 방지했습니다. #93619 (Pavel Kruglov).
  • TTL 집계 중 필요할 경우 SET 식 결과에 LowCardinality 래퍼를 복원했습니다. #92971 (Seva Potapov).
  • ALTER TABLE REWRITE PARTS에서 발생하던 Cannot add action to empty ExpressionActionsChain 오류를 수정했습니다. #92754 (Azat Khuzhin).
  • ON CLUSTER 사용 시 CREATE USER 인증 메서드에서 쿼리 매개변수 치환이 올바르게 이루어지지 않던 문제를 수정했습니다. #92777 (xiaohuanlin).
  • MergeTree 테이블이 읽기 전용 디스크에 있는 경우, 시작 시 더 이상 임시 디렉터리 삭제를 시도하지 않습니다. #92748 (Alexey Milovidov).
  • 하위 컬럼에 생성된 스킵 인덱스의 구체화 문제를 수정했습니다. #93708 (Anton Popov).
  • 종속 인덱스가 있는 CLEAR COLUMN 관련 문제가 수정되었습니다. #94057 (Raúl Marín).
  • 재시작 후 interserver 호스트가 변경된 경우 Replicated 데이터베이스를 attach하지 못하던 문제가 수정되었습니다. #93779 (Tuan Pham Anh).
  • CREATE TABLE ... AS urlCluster()Replicated 데이터베이스 엔진에서 발생하던 논리 오류를 수정했습니다. #92418 (Kseniia Sumarokova).
  • REPLACE PARTITION과 백그라운드 뮤테이션 간의 경쟁 조건을 수정하여 이전 데이터와 새 데이터가 동시에 표시될 수 있던 문제를 해결했습니다. #96955 (Alexey Milovidov).
  • REPLACE PARTITION과 백그라운드 뮤테이션 사이에 남아 있던 경쟁 상태를 수정하여 오래된 데이터가 다시 나타날 수 있는 문제를 해결했습니다. #97105 (Alexey Milovidov).
  • PartCheckThread가 이미 뮤테이션된 파트에 대해 GET_PART를 다시 대기열에 넣을 때 발생하던 뮤테이션 정지 문제를 수정했습니다. #97162 (Alexey Milovidov).
  • 이전에 동일한 컬럼에 경량 업데이트가 수행된 후 ALTER TABLE DROP COLUMN이 실패하던 문제를 수정했습니다. #96861 (Anton Popov).
  • 경량 업데이트 중 패치 파트를 적용할 때 발생하던 null 포인터 역참조 문제를 수정했습니다. #97583 (Alexey Milovidov).
  • 알 수 없는 프로젝션이 있는 파트는 더 이상 영구 손실로 마크되지 않습니다. #95952 (Mikhail Artemenko).
  • 소스 테이블의 전체 수식자를 무시하던 CREATE TABLE ... CLONE AS ... 문제를 수정했습니다. #96415 (Hasyimi Bahrudin).
  • 메타데이터 변경 중 복제된 테이블에서 암시적 인덱스가 다시 생성되던 문제가 수정되었습니다. #96600 (Raúl Marín).
  • 별칭 컬럼이 있는 암시적 인덱스 문제를 수정하고, 생성 전에 전체 유효성 검사를 추가했습니다. #97115 (Raúl Marín).
  • 모든 행이 필터링된 경우 TTL 머지 후 _minmax_count_projection를 통해 min(timestamp)가 epoch(1970-01-01)를 반환하던 문제가 수정되었습니다. #96703 (Raquel Barbadillo).
  • 잘못 계산되는 문제를 일으키던 use_const_adaptive_granularityindex_granularity_bytes의 조합(index_granularity_bytes는 비적응형 granularity)을 수정했습니다. #96143 (Alexey Milovidov).
  • ORDER BY ... LIMIT를 사용할 때 비적응형 인덱스 세분성을 사용하는 테이블을 읽는 과정에서 발생하던 Number of rows in lazy chunk does not match number of offsets 예외를 수정했습니다. #97270 (Alexey Milovidov).
  • 다른 레플리카가 공유 파트를 가져오기를 완료하기 전에 해당 파트가 삭제될 수 있었던 zero-copy 복제 회귀 문제가 수정되었습니다. #95597 (filimonov).
  • SYSTEM RESTART REPLICA에서 ZooKeeper가 아닌 예외로 인해 테이블 재생성에 실패할 때 데이터베이스에서 테이블이 누락되고, 그 결과 DatabaseReplicated에서 메타데이터 다이제스트 불일치가 발생하던 문제를 수정했습니다. #97276 (Alexey Milovidov).
  • ALTER TABLE MODIFY COLUMN으로 컬럼 타입이 변경된 후 컬럼 통계를 생성하는 과정에서 발생하던 assert_cast 예외를 수정했습니다. #97027 (Alexey Milovidov).
  • 테이블에 통계 정보가 정의되어 있지 않으면 ClickHouse는 더 이상 이를 로드하려고 시도하지 않아 불필요한 오버헤드를 피합니다. #96233 (Han Fei).
  • 분산 DDL 대기 중 Replicated 데이터베이스를 동시에 삭제할 때 발생하던 There was an error: Cannot obtain error message 논리 오류를 수정했습니다. #95664 (Alexander Tokmakov).
  • 기본 키가 널 허용인 테이블에서, 쿼리가 첫 번째 인수로 상수를 사용하는 coalesce를 사용할 때 발생하던 KeyCondition의 논리 오류를 수정했습니다. #96340 (Alexey Milovidov).

데이터 타입 및 직렬화 버그 수정

  • Dynamic/JSON 타입에서 size 서브컬럼을 읽는 동안 발생할 수 있던 오류를 수정했습니다. #95573 (Pavel Kruglov).
  • JSON 배열에 tupleElement를 적용할 때 발생하던 충돌을 수정했습니다. #95647 (Pavel Kruglov).
  • 중첩된 경로가 있는 JSON에서 tupleElement를 실행할 때 잘못된 결과가 반환되던 문제를 수정했습니다. #95907 (Pavel Kruglov).
  • 타입 힌트가 있는 경로에서 JSON 사용 시 tupleElement가 예외를 발생시키던 문제를 수정했습니다. #97728 (Pavel Kruglov).
  • JSON 데이터 타입의 스키핑 경로를 수정했습니다 — 이전에는 JSON(SKIP path)path 접두사를 가진 모든 키(pathpath 같은 키 포함)를 스키핑하여 데이터 손실로 이어질 수 있었습니다. 이제는 정확히 일치하는 키만 스키핑됩니다. #95948 (Pavel Kruglov).
  • JSON의 타입 지정 경로에 type_json_allow_duplicated_key_with_literal_and_nested_object를 적용할 때 발생하던 문제를 수정했습니다. #97422 (Pavel Kruglov).
  • JSON 타입의 호환되지 않는 타입 지정 경로 검사 문제를 수정했습니다. #92539 (Pavel Kruglov).
  • JSON에서 경로 'skip'에 대한 타입 힌트 생성 문제를 수정했습니다. #92842 (Pavel Kruglov).
  • analyzer에서 컬럼 별칭 내 동적 하위 컬럼 해석을 수정했습니다. #92583 (Pavel Kruglov).
  • Variant 컬럼에 대한 잘못된 in-place 필터링 최적화로 인해 발생한 Nested columns sizes are inconsistent with local_discriminators 오류를 수정했습니다. #96410 (Alexey Milovidov).
  • GROUP BY에서 Variant 인수와 함께 사용될 때 발생하던 ifNull 크래시를 수정했습니다. #96790 (Alexey Milovidov).
  • arrayROCAUC와 같이 const 인수를 요구하는 함수에서 FunctionVariantAdaptor의 논리 오류를 수정했습니다. #97116 (Bharat Nallan).
  • FunctionVariantAdaptor에서 함수가 Nothing 타입을 반환할 때 발생하던 LOGICAL_ERROR를 수정했습니다. #97213 (Alexey Milovidov).
  • LowCardinality 타입을 포함한 Variant 컬럼과 NULL을 비교할 때 발생하던 논리적 예외를 수정했습니다. #97379 (Alexey Milovidov).
  • concat에서 인수에 LowCardinality를 내부에 포함한 Variant 타입이 포함된 경우 발생하던 LOGICAL_ERROR를 수정했습니다. #97654 (Alexey Milovidov).
  • LowCardinality 컬럼이 Nullable로 변환될 때 잘못된 결과가 반환되던 문제를 수정했습니다. #96483 (Nihal Z. Miaji).
  • cast_keep_nullable가 활성화된 경우 CAST에서 LowCardinality Nullable 타입을 올바르게 처리하도록 수정했습니다. #95747 (Alexey Milovidov).
  • 복합 중첩 타입 캐스팅 시 발생하던 ColumnNullable is not compatible with original 예외를 수정했습니다. #96924 (Alexey Milovidov).
  • Nullable(Tuple(... Nullable(T) ...)) 타입의 서브컬럼에 isNull/isNotNull을 사용할 때 발생하던 LOGICAL_ERROR를 수정했습니다. #97582 (Alexey Milovidov).
  • Array를 QBit로 변환하는 과정에서 발생하던 LOGICAL_ERROR를 수정했습니다. #97413 (Alexey Milovidov).
  • 희소 컬럼과 그 하위 컬럼을 함께 읽을 때 발생하던 LOGICAL_ERROR를 수정했습니다. #97515 (Pavel Kruglov).
  • PREWHERE가 적용된 Tuple에서 희소 Nullable(String).size 하위 컬럼을 읽을 때 발생하는 LOGICAL_ERROR를 수정했습니다. #97264 (Alexey Milovidov).
  • 내부 희소 하위 컬럼이 있는 컬럼을 처리할 때 SetMergeTreeIndexSet에서 발생하던 assertion failure 문제를 수정했습니다. #97493 (Alexey Milovidov).
  • 빈 튜플 컬럼을 정렬하는 동안 발생할 수 있는 SIZES_OF_COLUMNS_DOESNT_MATCH 오류를 수정했습니다. #92520 (Pavel Kruglov).
  • 반복도가 매우 높은 문자열 데이터에 영향을 미치던 네이티브 Parquet 리더의 DELTA_BYTE_ARRAY 디코딩 버그를 수정했습니다. #91929 (Daniel Muino).
  • prewhere 식의 일부가 쿼리의 다른 부분에서도 사용될 때 Parquet 파일을 읽는 중 발생하던 assertion 문제를 수정했습니다. #90635 (Max Kainov).
  • PREWHERE 필터 컬럼에 불리언이 아닌 UInt8 값이 포함된 경우 Parquet V3 네이티브 리더에서 발생하던 LOGICAL_ERROR를 수정했습니다. #96594 (Alexey Milovidov).
  • JSON 컬럼이 Tuple 컬럼 뒤에 오는 경우, 기존 리더의 Parquet 스키마 추론 문제를 수정했습니다. #92867 (Michael Kolupaev).
  • glob 스키마 추론 중 추론된 파일에만 캐시되어야 하는 고정 스키마가 모든 파일에 캐시되던 문제를 수정했습니다. #92006 (Pavel Kruglov).
  • 빈 파일에서 ProtobufList 형식을 읽을 때 빈 테이블에 유령 레코드가 생성되는 문제를 수정했습니다. #96007 (Alexey Milovidov).
  • 명시적으로 지정한 크기가 데이터 타입의 크기와 일치하지 않을 때 Gorilla 코덱에서 발생하던 회귀를 수정했습니다. #96118 (Alexey Milovidov).
  • 이제 PostgreSQL 엔진이 BOOLEAN[]를 올바르게 읽습니다. #96006 (Alexey Milovidov).
  • SQLite TEXT 컬럼에서 UUID 컬럼을 읽을 때의 논리 오류를 수정했습니다. #96016 (Alexey Milovidov).
  • SQLite 엔진에서 DateTime, Date, UUID 및 기타 타입의 타입 변환 문제를 수정했습니다. #96017 (Alexey Milovidov).
  • SQLite 및 PostgreSQL 쿼리에서 FixedString 값이 잘못 이스케이프되던 문제를 수정했습니다. #96019 (Alexey Milovidov).
  • Numbers를 Enums로 변환할 때 사용하는 input_format_numbers_enum_on_conversion_error 설정이 추가되었습니다. #56240 (Nikolay Degterinsky).

텍스트 인덱스 및 스킵 인덱스 버그 수정

  • 잘못된 쿼리 결과를 방지하기 위해, 행 수가 4,294,967,295개를 초과하는 파트를 포함한 테이블에서는 텍스트 인덱스를 생성하고 구체화하는 기능이 일시적으로 비활성화되었습니다. #92644 (Anton Popov).
  • MergeTree 테이블의 텍스트 인덱스 머지 중 발생하던 여러 크래시를 수정했습니다. #92925 (Anton Popov).
  • 복잡한 표현식(예: concat(col1, col2))으로 생성된 텍스트 인덱스의 머지 문제를 수정했습니다. #93073 (Anton Popov).
  • 인덱스에 토큰이 없는 경우 배열 컬럼의 텍스트 인덱스 분석을 수정했습니다. #93457 (Anton Popov).
  • 하위 컬럼에 생성된 텍스트 인덱스를 다시 빌드할 때 발생하던 문제를 수정했습니다. #93326 (Anton Popov).
  • 중복된 검색 쿼리에서 텍스트 인덱스를 직접 읽는 문제가 수정되었습니다. #93516 (Anton Popov).
  • has, mapContainsKey, mapContainsValue 함수에서 텍스트 인덱스 분석의 불일치가 수정되었습니다. 이전에는 텍스트 인덱스 사용 여부에 따라 서로 다른 결과가 반환될 수 있었습니다. #93578 (Anton Popov).
  • system.parts에서 텍스트 인덱스의 비압축 크기가 올바르게 계산되도록 수정했습니다. #92832 (Anton Popov).
  • ngram 길이가 8보다 큰 ngrambf_v1 인덱스에서 예외가 발생하는 문제를 수정했습니다. #92672 (Robert Schulze).
  • UTF-8이 아닌 데이터에서 ngram_bf 인덱스로 인해 초기화되지 않은 메모리를 읽던 문제가 수정되었습니다. #93663 (Alexey Milovidov).
  • 벡터 유사성 인덱스의 stack-use-after-scope 문제를 수정했습니다. #96259 (Alexey Milovidov).
  • 스킵 인덱스 식이 상수 컬럼을 생성할 때 발생하는 논리 오류를 수정했습니다. #96880 (Alexey Milovidov).
  • 빈 표현식 ()을 인덱스로 지정해 테이블을 생성할 때 잘못된 메모리 접근이 발생하던 문제를 수정했습니다. #96363 (Alexey Milovidov).
  • 비활성화된 use_primary_key와 매우 많은 논리합 조건이 있는 경우, 인덱스 분석에서 발생하던 use-after-free 문제가 수정되었습니다. #96112 (Alexey Milovidov).
  • WHEREIN 절 서브쿼리를 사용하는 경량 업데이트에서 프라이머리 인덱스 사용 문제를 수정했습니다. #92838 (Anton Popov).
  • hypothesis 인덱스를 검증할 때 적절한 오류 코드를 사용하도록 수정했습니다. #92559 (Raúl Marín).

데이터 레이크 버그 수정

  • 단일 노드 클러스터에서 split-by-buckets 모드로 Iceberg를 읽을 때 발생하던 충돌 문제를 수정했습니다. #91553 (Konstantin Vedernikov).
  • Iceberg에서 ORDER BY 튜플 문제를 수정했습니다. #93225 (Konstantin Vedernikov).
  • DataLakeCatalog의 Azure ADLS Gen2 제공 자격 증명 지원 문제를 수정했습니다 — Iceberg REST 카탈로그에서 adls.sas-token.* 키를 파싱하고 ABFSS URL 파싱 문제를 해결했습니다. #93477 (Karun Anantharaman).
  • Iceberg에서 DateDate32로 대체했습니다. #95322 (Konstantin Vedernikov).
  • Iceberg의 ORDER BY 관련 크래시를 수정했습니다. #96484 (Konstantin Vedernikov).
  • Iceberg 파티셔닝 문제를 수정했습니다. #96620 (Konstantin Vedernikov).
  • Iceberg manifest 엔트리에서 position delete 참조가 null인 경우 데이터 파일의 잘못된 범위값을 수정했습니다. #96061 (Daniil Ivanik).
  • Iceberg의 루트 메타데이터 파일 설정에 대한 유효성 검사 항목을 추가했습니다. #96754 (Daniil Ivanik).
  • Iceberg 카탈로그에서 더 이상 자격 증명이 로그에 기록되지 않습니다. #96831 (Konstantin Vedernikov).
  • 파티션된 Delta Lake 데이터 병합 문제를 수정했습니다. #95773 (Kseniia Sumarokova).
  • 잘못된 auth_header로 인해 system.tables가 깨지던 RESTful 데이터 레이크 카탈로그 문제를 수정했습니다. #96680 (Han Fei).

S3/Azure/객체 스토리지 수정 사항

  • 비결정적 함수가 포함된 경우 S3 테이블 엔진이 파티션 키를 캐시하던 문제가 수정되었습니다. #92844 (Miсhael Stetsyuk).
  • ReadBufferFromS3에서 캐시가 활성화된 경우 발생하던 assert를 수정했습니다. #93809 (Kseniia Sumarokova).
  • DiskObjectStorage 정리 스레드에서 발생할 수 있는 오류를 수정했습니다. #87411 (Kseniia Sumarokova).
  • DiskObjectStorageTransaction에서 발생할 수 있는 교착 상태를 해결했습니다. #93810 (Kseniia Sumarokova).
  • 오류가 다수 발생할 때 DiskObjectStorage 정리 스레드가 실패할 수 있던 문제를 수정했습니다. #94048 (Kseniia Sumarokova).
  • copyS3File의 multipart_tags에서 발생하던 데이터 레이스를 수정했습니다. #97227 (Azat Khuzhin).
  • 객체 스토리지 기반 파일 유사 테이블(S3, Azure)에서 잘못된 ALTER UPDATE 뮤테이션을 실행할 때 더 이상 nullptr 역참조가 발생하지 않습니다. #96162 (Alexey Milovidov).

S3Queue 버그 수정

  • S3Queue 순차 모드에서 Failed to set file processing within 100 retries 오류를 수정했습니다(이제는 오류 대신 경고로 처리됩니다). #92814 (Kseniia Sumarokova).
  • S3Queue 설정 s3queue_migrate_old_metadata_to_buckets의 버그를 수정했습니다. #93232 (Kseniia Sumarokova).
  • S3Queue/AzureQueue 엔진의 메타데이터 문제를 수정했습니다. #90498 (Kseniia Sumarokova).
  • S3Queue/AzureQueue 스토리지의 경쟁 상태(data race) 문제를 수정했습니다. #95385 (Kseniia Sumarokova).
  • S3Queue/AzureQueue 엔진에서 스트리밍할 때의 중복 제거 문제를 수정했습니다. #95467 (Kseniia Sumarokova).

보안 및 접근 제어 버그 수정

  • SYSTEM SYNC FILE CACHE의 누락된 접근 검사를 수정했습니다. #92372 (Kseniia Sumarokova).
  • 지나치게 제한적이던 와일드카드 권한 부여의 액세스 권한 검사에서 잘못된 로직을 수정했습니다. #92725 (pufit).
  • merge 테이블 엔진 사용 시 SHOW COLUMNS 권한 없이 테이블의 컬럼 목록을 가져올 수 없도록 했습니다. #93695 (János Benjamin Antal).
  • 메모리 안전성 문제를 초래할 수 있었던 groupConcat 상태 역직렬화의 정수 오버플로 취약점을 수정했습니다. #93426 (Raufs Dunamalijevs).
  • 압축 해제된 버퍼 크기가 예상대로인지 검증했습니다. #93690 (Raúl Marín).
  • 기본 역할 회수 문제를 수정했습니다. #96103 (Vitaly Baranov).
  • 부분적인 권한 취소가 있는 경우 AccessRights::contains가 잘못된 결과를 반환하던 문제를 수정했습니다. #96170 (pufit).
  • 분산 쿼리에서 초기 사용자에게 할당된 행 정책이 업데이트되지 않던 문제가 수정되었습니다. #95469 (Vitaly Baranov).
  • redis 테이블 함수의 비밀번호 인수는 이제 로그와 시스템 테이블에서 마스킹 처리됩니다. #95325 (Janos Benjamin Antal).
  • X509 인증서를 읽을 때 발생하던 BIO 객체의 메모리 누수를 수정했습니다. #96885 (Alexey Milovidov).
  • 버퍼 오버플로를 방지하기 위해 bech32 witness 버전을 검증했습니다. #96671 (Raúl Marín).
  • 많은 데이터베이스에 대해 제한된 권한을 가진 사용자로 system table을 쿼리할 때 성능이 느려지던 문제가 수정되었습니다. #95874 (pufit).

백업 및 복원 버그 수정

  • 잘못된 아카이브 항목 크기 헤더 때문에 발생하던 Couldn't pack tar archive: Failed to write all bytes 오류를 수정했습니다. #92122 (Julia Kartseva).
  • 여러 동시 백업이 동일한 파일을 놓고 경합할 때 발생하던 서버 충돌을 수정했습니다. #93659 (Alexey Milovidov).
  • plain_rewritable 객체 스토리지 디스크에 아카이브 형식 백업(.zip, .tzst)을 생성할 때 발생하던 스택 오버플로를 수정했습니다. #96872 (Alexey Milovidov).
  • 디스크 공간 부족 또는 기타 I/O 오류로 백업이 실패할 때 발생하던 서버 충돌을 수정했습니다. #96873 (Alexey Milovidov).
  • StorageKeeperMap 백업에서 use-after-free로 인해 발생한 세그폴트를 수정했습니다. #97336 (Alexey Milovidov).

충돌 및 안정성 버그 수정

  • 연결이 끊어진 Connection에서 읽는 중 발생하던 충돌을 수정했습니다. #92807 (Raufs Dunamalijevs).
  • null인 두 번째 인수로 인해 tokens() 함수에서 발생할 수 있던 충돌을 수정했습니다. #92586 (Raúl Marín).
  • tokens가 non-const 토크나이저 매개변수로 호출될 때 발생하던 서버 충돌 문제를 수정했습니다. #93383 (Robert Schulze).
  • 컬럼 축소 또는 필터링이 동시에 수행되는 동안, 기반 const PREWHERE 컬럼에 대한 인플레이스 뮤테이션으로 인해 발생할 수 있던 잠재적 크래시를 수정했습니다. #92588 (Arsen Muk).
  • 백그라운드 스케줄 풀을 종료할 때 발생할 수 있는 멈춤 현상을 수정했으며, 이로 인해 서버 종료 시 서버가 멈출 수 있었습니다. #93008 (Azat Khuzhin).
  • 분산 쿼리를 미리 취소했을 때 연결이 손상된 상태로 남는 문제를 수정했습니다. #93029 (Azat Khuzhin).
  • estimateCompressionRatio()에서 취소 후 Cannot finalize buffer after cancellation 오류가 발생할 수 있는 문제를 수정했습니다. #93068 (Azat Khuzhin).
  • 종료 시 ZooKeeper가 완전히 종료되도록 하여 발생할 수 있는 멈춤 현상을 수정했습니다. #93602 (Azat Khuzhin).
  • ZooKeeper 스토리지를 사용하는 명명된 컬렉션을 백그라운드에서 다시 로드하는 동안 발생하던 처리되지 않은 예외를 수정했습니다. #92717 (Kseniia Sumarokova).
  • ReadWriteBufferFromHTTP에서 초기화되지 않은 값 사용 문제를 수정했습니다. #94058 (Alexey Milovidov).
  • TraceSender 버퍼 크기가 업데이트되지 않아 서로 다른 스레드에서의 플러시가 뒤섞이던 문제를 수정했습니다. #93966 (Miсhael Stetsyuk).
  • PipelineExecutor가 살아 있는 동안 IStorage 객체가 삭제되지 않도록 QueryPipeline에 storage shared pointer를 저장했습니다. #93746 (Miсhael Stetsyuk).
  • 취소 시 분산 쿼리에서 발생할 수 있던 크래시를 수정했습니다. #95466 (Aleksandr Musorin).
  • DROP WORKLOAD가 쿼리와 동시에 실행될 때 발생하던 충돌을 수정했습니다. #95856 (Alexey Milovidov).
  • DROP WORKLOAD의 데이터 레이스 문제를 수정했습니다. #96614 (Sergei Trifonov).
  • ThreadPoolCallbackRunnerLocal 사용과 관련된 몇 가지 치명적인 버그를 수정했습니다. #95818 (Raúl Marín).
  • 메모리 오버커밋 추적기가 동작할 때 발생하는 잠금 역전으로 인해 ProcessList에서 발생할 수 있는 교착 상태를 수정했습니다. #96182 (Antonio Andelic).
  • max_execution_time 값이 큰 쿼리에서 취소 검사 스레드의 라이브락을 수정했습니다. #96450 (Sergei Trifonov).
  • 경쟁 상태(race condition)로 인해 MemoryWorker 정리 스레드가 멈추는 문제가 수정되었습니다. #96819 (Antonio Andelic).
  • 캐시된 스토리지 스냅샷이 조기에 파기되어 발생하던 clearCaches 크래시를 수정했습니다. #96995 (Alexey Milovidov).
  • CREATE TABLE에서 제약 조건이 있는 경우 발생하던 heap-use-after-free 문제가 수정되었습니다. #96669 (Nikita Taranov).
  • StorageKafka2에서 발생할 수 있는 use-after-free 문제를 수정했습니다. #97520 (Bharat Nallan).
  • DatabaseMaterializedPostgreSQLshutdown_called에서 발생하던 경쟁 상태(data race) 문제를 수정했습니다. #97554 (Alexey Milovidov).
  • 세그먼트로 분할된 HASHED 딕셔너리의 병렬 로딩에서 일부 행이 로드되지 않을 수 있었던 경쟁 상태 문제를 수정했습니다. #96953 (Alexey Milovidov).
  • 한 딕셔너리가 자신을 재귀적으로 참조하는 Merge 테이블을 참조할 때 발생하던 딕셔너리 데드락을 수정했습니다. #96120 (Alexey Milovidov).
  • 새er 서버가 쿼리 계획 역직렬화 중 알 수 없는 설정을 전송할 때 발생하던 BaseSettings::readBinary의 범위 외 접근 문제를 수정했습니다. #97585 (Michael Stetsyuk).
  • dropReplicationSlot이 스택 언와인딩 중 예외를 발생시켜 MaterializedPostgreSQL 데이터베이스에 테이블을 연결할 때 충돌이 발생하던 문제를 수정했습니다. #96871 (Alexey Milovidov).
  • HTTP 연결이 닫히지 않도록 insert select에서 요청 스트림을 해제했습니다. #92175 (Sema Checherinda).
  • Backup 데이터베이스에서 SHOW CREATE DATABASE 실행 시 발생하던 데드락을 수정했습니다. #92541 (Azat Khuzhin).

기타 버그 수정

  • hasAllTokenshasAnyTokens 함수에서 handleAllTokens의 빈 배열 처리 문제를 수정했습니다. #93328 (Anton Popov).
  • 전역 프로파일러의 고정 주기를 수정했습니다. 설정된 값 대신 절삭된 값이 사용되어 더 자주 깨어났습니다. #96048 (Antonio Andelic).
  • system.asynchronous_metric_logevent_date를 수정했습니다. #95947 (Raúl Marín).
  • 내부 함수에서 categories = 'Internal' 대신 빈 문자열이 표시되던 system.functions 문제를 수정했습니다. #97315 (Robert Schulze).
  • 키 타입이 String이 아닐 때 ip_trie 딕셔너리에서 발생할 수 있는 잠재적인 논리 오류를 수정했습니다. #97555 (Bharat Nallan).
  • system.query_log.exception에서 stderr 캡처를 활성화해 UDF 디버깅이 가능하도록 수정했습니다. #92209 (Xu Jia).
  • 항상 false인 조건자에 대해 filterPartsByVirtualColumns를 수정했습니다. #97620 (Bharat Nallan).
  • 스쿼시 전에 ColumnConst가 구체화되지 않던 문제를 수정했습니다. #97019 (Hasyimi Bahrudin).