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

Cloud용 v24.8 변경 로그

v24.8 릴리스를 기준으로 한 ClickHouse Cloud 서비스 관련 주요 변경 사항입니다.

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

  • Variant 데이터 타입의 바이너리 직렬화를 변경했습니다. 단일 variant만 있거나 NULL 값만 있는 그래뉼에 대해 동일한 discriminator를 여러 번 기록하지 않도록 compact 모드를 추가했습니다. 기본적으로 활성화된 MergeTree 설정 use_compact_variant_discriminators_serialization을 추가했습니다. Variant 타입은 여전히 실험적이며, 직렬화 방식의 하위 호환되지 않는 변경은 이전에 지원팀과 협력하여 이 기능을 미리 활성화한 경우가 아니라면 영향을 주지 않아야 합니다. #62774 (Kruglov Pavel).

  • Replicated 데이터베이스에서 CREATE MATERIALIZED VIEW ... ENGINE Replicated*MergeTree POPULATE AS SELECT ... 구문을 금지했습니다. 이 PR은 여전히 ReplicatedMergeTree를 사용하는 사용자에게만 적용됩니다. #63963 (vdimir).

  • 메트рик KeeperOutstandingRequets의 이름을 KeeperOutstandingRequests로 변경했습니다. 이는 #66179에서 보고된 오타를 수정한 것입니다. #66206 (Robert Schulze).

  • clickhouse-clientclickhouse-local은 이제 기본값으로 multi-query 모드(기존 single-query 모드 대신)를 사용합니다. 예를 들어 clickhouse-client -q "SELECT 1; SELECT 2" 명령이 이제 동작하며, 이전에는 --multiquery(또는 -n) 옵션을 추가해야 했습니다. 따라서 --multiquery/-n 스위치는 더 이상 필요하지 않습니다. multi-query SQL 문에서 INSERT 쿼리는 FORMAT 절에 따라 특별히 처리됩니다. FORMAT이 VALUES(가장 일반적인 경우)인 경우, INSERT 문 끝은 쿼리 끝의 세미콜론 ;으로 표시됩니다. 그 외의 모든 FORMAT(예: CSV 또는 JSONEachRow)에서는 쿼리 끝의 두 개의 개행 문자 \n\nINSERT 문 끝을 나타냅니다. #63898 (wxybear).

  • 이전 버전에서는 LowCardinality 데이터 타입 이름에 WithDictionary를 덧붙여 LowCardinality 데이터 타입에 대한 대체 구문을 사용할 수 있었습니다. 이는 초기 동작 구현이었으며, 문서화되지 않았고 공개적으로 노출되지도 않았습니다. 이제 이 구문은 사용 중단(deprecated)되었습니다. 이 구문을 사용한 경우, 테이블에 대해 ALTER를 수행하여 데이터 타입 이름을 LowCardinality로 변경해야 합니다. #66842(Alexey Milovidov).

  • 분산 대상 테이블과 함께 사용되는 storage Buffer 관련 논리 오류를 수정했습니다. 이는 하위 호환되지 않는 변경입니다. 분산 대상 테이블과 함께 Buffer를 사용하는 쿼리는, 해당 테이블이 쿼리 내에 두 번 이상 등장하는 경우(예: self-join) 동작이 중단될 수 있습니다. #67015 (vdimir).

  • 이전 버전에서는 Gamma 함수에 기반한 랜덤 분포 함수(Chi-Squared, Student, Fisher 등)를 0에 가까운 음수 인수로 호출하면 계산에 오랜 시간이 걸리거나 무한 루프에 빠질 수 있었습니다. 새 버전에서는 이러한 함수들을 0 또는 음수 인수로 호출하면 예외를 발생시킵니다. 이는 #67297을 해결합니다. #67326 (Alexey Milovidov).

  • 이전 버전에서는 arrayWithConstant가 매우 큰 배열을 생성하도록 요청될 경우 느릴 수 있었습니다. 새 버전에서는 배열 하나당 1 GB로 제한합니다. 이는 #32754를 해결합니다. #67741 (Alexey Milovidov).

  • REPLACE 수정자 포매팅을 수정했습니다(괄호 생략을 금지). #67774 (Azat Khuzhin).

New feature

  • tuple 함수를 확장하여 쿼리에서 이름이 있는 튜플(named tuple)을 구성할 수 있도록 했습니다. 튜플에서 이름을 추출하는 함수 tupleNames를 도입했습니다. #54881 (Amos Bird).

  • full_sorting_join 알고리즘에서 ASOF JOIN을 지원하도록 했습니다. #54493 이슈를 해결합니다. #55051 (vdimir).

  • 새로운 테이블 함수 fuzzQuery가 추가되었습니다. 이 함수는 지정된 쿼리 문자열을 임의 변형으로 수정할 수 있게 합니다. 예: SELECT query FROM fuzzQuery('SELECT 1');. #62103 (pufit).

  • 새로운 윈도우 함수 percent_rank를 추가했습니다. #62747 (lgbo).

  • clickhouse-client에서 JWT 인증을 지원하도록 했습니다. #62829 (Konstantin Bogdanov).

  • SQL 함수 changeYear, changeMonth, changeDay, changeHour, changeMinute, changeSecond를 추가했습니다. 예를 들어, SELECT changeMonth(toDate('2024-06-14'), 7)은(는) 날짜 2024-07-14를 반환합니다. #63186 (cucumber95).

  • 디스크에 주기적으로 플러시되는 system.errors 테이블의 오류 값 이력을 포함하는 system.error_log를 추가했습니다. #65381 (Pablo Marcos).

  • 집계 함수 groupConcat을 추가했습니다. arrayStringConcat( groupArray(column), ',')와 거의 동일합니다. 문자열 구분자와 처리할 요소 개수, 이렇게 2개의 파라미터를 받을 수 있습니다. #65451 (Yarik Briukhovetskyi).

  • AzureQueue 스토리지를 추가했습니다. #65458 (Kseniia Sumarokova).

  • Parquet 파일에 페이지 인덱스(page index)를 기록할지 여부를 활성화/비활성화하는 새로운 설정을 추가했습니다. #65475 (lgbo).

  • 테이블 함수 file 사용 시 디렉터리 경로 끝에 와일드카드 *를 자동으로 추가합니다. #66019 (Zhidong (David) Guo).

  • 비대화형 모드에서 클라이언트에 --memory-usage 옵션을 추가했습니다. #66393 (vdimir).

  • S3 테이블 엔진용 가상 컬럼 _etag를 추가했습니다. #65312를 수정합니다. #65386 (skyoct)

  • 이 Pull Request는 서로 다른 엔진(File, URL, S3, AzureBlobStorage, HDFS)에 대해 Hive 스타일 파티셔닝(Hive-style partitioning)을 도입합니다. Hive 스타일 파티셔닝은 데이터를 파티션된 하위 디렉터리로 구성하여 대규모 데이터셋을 효율적으로 쿼리하고 관리할 수 있게 합니다. 현재는 적절한 이름과 데이터를 가진 가상 컬럼만 생성합니다. 후속 PR에서 적절한 데이터 필터링(성능 향상)을 도입할 예정입니다. #65997 (Yarik Briukhovetskyi).

  • Spark 호환성을 위해 printf 함수를 추가했습니다. #66257 (李扬).

  • 함수 readWKTLineString을 사용하여 WKT 포맷의 MULTILINESTRING 지오메트리 읽기를 지원하도록 했습니다. #67647 (Jacob Reckhard).

  • 쿼리 캐시(query cache)에 태깅(네임스페이스) 메커니즘을 추가했습니다. 동일한 쿼리라도 태그가 다르면 쿼리 캐시에서 서로 다른 것으로 간주합니다. 예: SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'abc'SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'def'는 이제 서로 다른 쿼리 캐시 엔트리를 생성합니다. #68235(sakulali).