하위 호환되지 않는 변경 사항
데이터 타입 변경 사항
Geometry타입을 도입했습니다. 이 타입에 대해WKB및WKT포맷 읽기를 지원합니다. 이전 버전에서는Geometry타입이String의 별칭이었지만, 이제는 완전한 기능을 갖춘 타입입니다. #83344 (Konstantin Vedernikov).- 사용 중단된 Object 타입을 제거했습니다. #85718 (Pavel Kruglov).
- MergeTree 테이블의 파트에서 Variant 타입 서브컬럼용으로 생성되는 파일 이름을 이스케이프하도록 변경했습니다. 이 변경으로 인해 Variant/Dynamic/JSON 데이터 타입을 사용하는 기존 테이블과의 호환성이 깨집니다. 또한 Variant 내부에 특수 기호가 포함된 타입(예:
\가 포함된 특정 시간대를 사용하는 DateTime)을 저장할 때 발생하던 문제를 해결합니다. 이스케이프는 MergeTree settingescape_variant_subcolumn_filenames를 변경하여 비활성화할 수 있습니다(호환성을 유지하려면 MergeTree 구성에서 이 setting을 비활성화하거나, 업그레이드 전에 사용하던 이전 버전으로compatibilitysetting을 설정하십시오). #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). - 이제 새로운
argAndMin및argAndMax함수를 사용해 인수와 해당 최소값 또는 최대값을 함께 가져올 수 있습니다. #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 및 데이터 레이크
- Iceberg에서
CREATE작업 시ORDER BY를 지원하고,INSERT시 정렬도 지원합니다. #89916을 해결합니다. #90141 (Konstantin Vedernikov).
SQL 및 쿼리 기능
windowFunnel집계 함수에allow_reentry옵션을 추가했습니다. strict_order와 함께 활성화하면 순서를 위반하는 이벤트가 발생해도 퍼널 분석을 중단하지 않고 해당 이벤트를 무시합니다. 이를 통해 새로고침이 포함된 사용자 여정(A->A->B)이나 뒤로 이동하는 탐색(A->B->A->C)도 전환율을 과소 집계하지 않고 처리할 수 있습니다. #86916 (Lee ChaeRok).- 이제 텍스트 인덱스 구성 시 새 인수
preprocessor를 추가할 수 있습니다. 이 인수는 토큰화 전에 각 문서를 변환하는 임의의 표현식입니다. #88272 (Jimmy Aguilar Mena). - table의 일부를 선택할 수 있도록 소수형
LIMIT및OFFSET을 지원합니다. #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-Progress및X-ClickHouse-Summary에memory_usage필드를 추가했습니다. 이를 통해 클라이언트 측에서 쿼리의 메모리 사용량을 실시간으로 수집할 수 있습니다. #88393 (Christoph Wurm).profile events를 사용하지 않는 경우 클라이언트가 네트워크 트래픽을 줄일 수 있도록send_profile_events설정을 추가했습니다. #89588 (Kaviraj Kanagaraj).
Keeper
- ZooKeeper와의 Keeper 호환성: STATISTICS를 포함한 create를 지원합니다. #88797 (Konstantin Vedernikov).
- ClickHouse Keeper에서 ZooKeeper의 persistent watch를 지원합니다. #88813 (Konstantin Vedernikov).
입력/출력 포맷
- 새로운 입력/출력 포맷
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 최적화
RIGHT및FULL JOIN이 이제 ConcurrentHashJoin을 사용합니다. 즉, 이러한 조인 유형이 더 높은 병렬성으로 실행됩니다. 다양한RIGHT및FULL JOIN` 사례에서 성능이 최대 2배까지 향상됩니다. #78027을 해결합니다. #78462 (Yarik Briukhovetskyi).- 일부 경우
ANY LEFT JOIN또는ANY RIGHT JOIN을ALL INNER JOIN으로 다시 작성할 수 있도록 지원합니다. #89403 (Dmitry Novik). ANTIJOIN에 대한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는 이제
AND와OR가 혼합된 필터 조건으로 연결된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 테이블의 쿼리 성능을 개선하기 위해
_pathfilter 값을 푸시다운하여 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 인터페이스가
Age및Expires헤더를 제공합니다. 새로운 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
FailedInitialQuery및FailedInitialSelectQuery를 추가합니다. #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-client및clickhouse-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_codec및kafka_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_seen이last_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).
기타 개선 사항
- 크기 제한을 검증할 때
Array및Map의 바이너리 역직렬화에max_binary_string_size대신max_binary_array_size설정을 사용하도록 수정했습니다. #88744 (Raufs Dunamalijevs). - 시스템 메모리가 5GB 미만이면 기본적으로 실행 파일을
mlock하지 않도록 변경했습니다. #89751 (Alexey Milovidov). min_bytes_for_wide_part및vertical_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_final및apply_prewhere_after_final설정을 추가했습니다. #90986을 수정했습니다. #91065 (Yarik Briukhovetskyi).- tupleElement에서 JSON 타입을 지원합니다. #81630을 해결했습니다. #91327 (Pavel Kruglov).
- 튜플 요소 접근에 음수 인덱스(예: tuple.-1)를 지원합니다. #91665 (Amos Bird).
Array를QBit로 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_mergejoin에서 발생하던 논리 오류를 수정했습니다. #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/infWITH FILL쿼리 문제를 수정했습니다. #69261을 해결합니다. #90255 (Konstantin Bogdanov). - 이제 Time 및 Time64는 DateTime 및 DateTime64에서 변환할 때 시간대를 올바르게 반영합니다. #89896를 해결했습니다. #90310 (Yarik Briukhovetskyi).
- 쿼리 조건 캐시가 활성화된 상태에서
SELECT쿼리의 경량 업데이트 후 잘못된 쿨리 결과가 반환될 수 있던 문제를 수정했습니다. #90176를 해결합니다. #90204 (Anton Popov). - String 집계 상태의 인메모리 직렬화 호환성을 수정했습니다. #90880 (Antonio Andelic).
NestedLowCardinality컬럼에 대한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).