카테고리
Version
생성자
U
Untitled- 4.1.6
- 동작 변경
- 개선 사항
- 보안
- 버그 수정
- 4.1.4
- 동작 변경
- 개선 사항
- 보안
- 버그 수정
- 4.1.3
- 동작 변경
- 개선 사항
- 보안
- 버그 수정
- 4.1.2
- 동작 변경
- 개선 사항
- 보안
- 버그 수정
- 4.1.1
- 동작 변경
- 개선 사항
- 보안
- 버그 수정
- 4.1.0
- Shared-data 아키텍처
- 데이터 레이크 분석
- 쿼리 엔진
- 함수 및 SQL 구문
- 관리 및 관측성(Observability)
- 보안
- 버그 수정
- 동작 변경
- 4.1.0-RC
- Shared-data 아키텍처
- 데이터 레이크 분석
- 쿼리 엔진
- 함수 및 SQL 구문
- 관리 및 관찰성
- 동작 변경
4.1.6
출시일: 2026년 9월 30일
동작 변경
- AWS SDK의 기본 HTTP 클라이언트를 Poco에서 SDK 자체 클라이언트로 되돌렸습니다.
enable_poco_client_for_aws_sdk의 기본값이 이제false입니다. 이전 동작으로 복원하려면true로 설정하세요. #78375 - 온라인 Optimize Table은 이제 옵트인 방식입니다. FE 설정
enable_online_optimize_table의 기본값이false이므로, 해당 설정을 켜지 않으면ALTER TABLE ... DISTRIBUTED BY ...가 다시 쓰기를 차단합니다. #78206 - jemalloc의 전용 oversize arena가 기본으로 활성화되어, 대용량 할당이 더 이상 호출 스레드의 per-CPU arena에 할당되지 않습니다. 이를 통해 대용량 버퍼 재사용이 개선되고 단편화가 줄어들며, BE와 CN 메모리가 arena 간에 분배되는 방식이 변경됩니다. #78396
- Shared-data 태블릿 메타데이터와 트랜잭션 로그 파일이 이제 기본적으로 Adler-32 체크섬과 함께 기록되어(
lake_enable_protobuf_file_checksum) 읽기 시 손상이 감지됩니다. 리더는 이미 파일에 체크섬이 있으면 항상 검증했으므로 다운그레이드 시 별도 조치가 필요 없습니다. #75334 - 동일 키에 대해
UPSERT와DELETE행이 섞인 Shared-data Primary Key 로드가 이제 기본적으로 트랜잭션 내 순서를 보존합니다(lake_enable_pk_preserve_txn_delete_order). #76211 - 멀티 테이블 트랜잭션이 이제 트랜잭션을 하나씩 publish하는 대신 Shared-data 배치 publish에 참여하여, 여러 테이블로 분산되는 CDC 마이크로 배치가 겪던 직렬화 문제를 제거했습니다. #77029
- Shared-data 파티션이 이제 배치 publish의 각 중간 버전을 거치지 않고 최종 버전으로 바로 진행하므로, 쿼리가 태블릿 메타데이터 객체가 없는 중간 버전을 요청하여
The specified key does not exist오류가 발생하던 문제가 더 이상 발생하지 않습니다. #79175 - 계속 실패하는 Shared-data publish가 이제 매 시도마다
previous publish version task has not finished메시지를 출력하는 대신 백오프하고 재시도 로그를 제한합니다. 기존에는 장애 상황에서 이 메시지가 FE Leader의 CPU와 로그량 대부분을 차지할 수 있었습니다. #79299 - Del-file 툼스톤 행이 이제
cloud_native_pk_index_rebuild_rows_threshold에 집계되어, 삭제가 많은 Shared-data 워크로드에서 의도대로 Primary Key 인덱스 조기 flush가 트리거됩니다. #76222 - 자체 세그먼트를 대체하는 Shared-data 컬럼 upsert publish가 이제 delete vector를 병합합니다. 기존에는 하나의 Primary Key에 대해 두 개의 유효 행이 남을 수 있었으며, 이 손상은 한참 후 CN 재시작으로 영구 인덱스가 재구축될 때
insert found duplicate key로 드러났습니다. #78797 - Shared-data Primary Key 인덱스 컴팩터가 flush 측이 계속 sstable을 생성하는 동안 조용히 멈추지 않도록 수정했습니다. 기존에는 영구 인덱스가 무한히 커지는 태블릿이 남았습니다. #78812
- HDFS 파일을 닫기 전에 더 이상
hsync하지 않습니다. 이hsync는 별도 변경으로 이미 수정된 크래시에 대한 우회책이었으며, 매번 닫을 때마다 모든 DataNode 복제본에fsync()를 강제했습니다. #78864 - NULL 개수를 실제보다 적게 보고하는 Parquet
null_count를 디코딩 및 프루닝 시 더 이상 그대로 신뢰하지 않습니다. 기존에는 이전 parquet-mr 버전으로 작성된 파일에서 손상된 값이 반환되거나 행이 누락되었습니다. #78329 !=,NOT IN,IS NOT NULL에 대한 List 파티션 프루닝이 값 목록에NULL이 포함되어 있다는 이유만으로 다중 값 파티션을 버리지 않습니다. 조인 키에IS NOT NULL을 도출하는 조인을 포함하여, 이러한 테이블에 대한 쿼리가 이전에 누락되던 non-null 행을 반환합니다. #78946- 배치 DDL로 이제 유효한
DATE값인0000년에서 시작하는 날짜 Range 파티션을 생성할 수 있습니다. 기존에는the range of the partition is invalid오류로 실패했습니다. #78746 max_partitions_in_one_batch및 파티션 개수 제한이 이제 현재 요청이 생성하려는 파티션을 포함하여 계산합니다. 크기가 초과된 배치는 허용된 뒤 다음 배치에서 실패하는 대신 즉시 거부됩니다. #79379TRUNCATE TABLE <external_catalog>.<db>.<table>이 이제 세션의 현재 카탈로그가 아니라 구문에 명시된 카탈로그를 기준으로DELETE권한을 검사합니다. 이전에 허용되던 사용자가 거부될 수 있으며, 그 반대도 가능합니다. #79047- 스트리밍 집계 튜닝이 이제
HAVING이후 남은 행 수가 아니라 group-by 카디널리티를 기준으로 동작하므로,HAVING절이 대부분의 그룹을 필터링하는 쿼리에서도 로컬 사전 집계가 유지됩니다. #79064 - 외부 Iceberg 또는 Hive 테이블이나
FILES()테이블 함수를 대상으로 하는 DML, 그리고 비동기 머티리얼라이즈드 뷰 새로고침에 대해 감사 로그 행에 이제scanBytes,scanRows,returnRows,cpuCostNs,memCostBytes가 기록됩니다. 기존에는 이 필드들이0으로 보고되었습니다. #74072 #74954 - 쿼리 프로파일과
EXPLAIN ANALYZE가 이제 첫 시도의 플랜이 아니라 재시도된 쿼리가 실제로 실행한 플랜을 보고합니다. #79225 - Broker Load가 제출 시점의
enable_tablet_pre_split스냅샷을 제출한 클라이언트의 현재 세션 변수에 다시 쓰지 않습니다. #79177 - 비집계 증분 머티리얼라이즈드 뷰에 대해
ALTER MATERIALIZED VIEW ... ACTIVE가 다시 동작합니다. 스토리지에서 채워지는__ROW_ID__컬럼은 머티리얼라이즈드 뷰 DDL 컬럼 목록에서 제외됩니다. #77017 SHOW ALTER TABLE OPTIMIZE의Operation컬럼이 이제com.starrocks.sql.ast.OptimizeClause@b5dc069와 같은 내부 객체 주소 대신 읽기 쉬운 Optimize 작업 설명을 표시합니다. #75948- 태블릿 스키마에 없는 컬럼이 술어(predicate) push-down 중에 더 이상 BE를 중단시키지 않으며, 해당 술어는 단순히 push-down되지 않습니다. #79234
OlapTableSink초기화가 실패하면 부분적으로 초기화된 sink가 더 이상 전체 close 경로를 거치지 않습니다. 기존에는 생성되지 않은 상태를 역참조하여 BE가 중단될 수 있었습니다. 대신 원래의 초기화 오류가 반환됩니다. #79370- Short key 인덱스 페이지 구조가 이제 32비트 오버플로 없이 검증되므로, 손상된 페이지 footer가 값이 wrap되어 힙 범위 밖 쓰기를 일으키는 대신 거부됩니다. #79048
- TLS 핸드셰이크가 타임아웃된 HTTPS 요청이 더 이상 연결된 것으로 간주되어 동일 소켓에서 재시도되지 않습니다. 정체된 요청은 이제
connect_timeout과 두 번의 수신 타임아웃 대신 약 한 번의 타임아웃 후 실패합니다. #79369
개선 사항
- LDAP 및 Active Directory 그룹을 이제 사용자의
memberOf속성으로부터 해석할 수 있어, 새로운 디렉터리 그룹에 대해 클러스터에 대응하는 group provider 설정이 더 이상 필요하지 않습니다. #79254 - 감사 로그가 이제 대략적인
ErrorCode뿐 아니라 쿼리의 오류 메시지를 기록하므로,fe.log와 대조하지 않고도 구문 오류, 알 수 없는 테이블, 권한 실패를 구분할 수 있습니다. #78798 - 모든 spill 가능 연산자의 spill 활동을 로컬 및 원격 스토리지 백엔드별로 집계하는 서버 수준 spill 메트릭을 추가했습니다. #71827
- Hudi 메타데이터 리더가 이제 파티션마다 재생성되지 않고 하나의 스캔 내 파티션 간에 재사용되어, Hudi 메타데이터 테이블이 활성화된 경우 파티션이 많은 테이블의 플래닝 시간이 단축됩니다. #79367
- 태블릿 분할 지점이 이제 전용 전체 정렬 키 인덱스 페이지 대신 세그먼트의 기존 인덱스로부터 계산되므로, 분할되지 않는 테이블은 해당 페이지를 쓰고 저장하는 비용을 더 이상 부담하지 않습니다. #79050
/memz가 이제 jemalloc 자체 통계 옵션을 지원하여, 실행 중인 BE에서 arena별 dirty/muzzy 페이지 수와 extent size-class 분포를 확인할 수 있습니다. #79090
보안
- [CVE-2026-55971] C++ 바인딩의
THeaderTransport::untransform()에서 발생하는 힙 기반 버퍼 오버플로를 수정하기 위해 Apache Thrift를 0.24.0으로 업그레이드했습니다. #76922 - [CVE-2026-42537, CVE-2026-59646] JDBC URL 인젝션을 통한 RCE를 수정하기 위해 Apache Ranger를 2.9.0으로, DTLS reassembler 버퍼 오버런을 수정하기 위해 Bouncy Castle을 1.85로 업그레이드했습니다. #79331
- [CVE-2026-71290] Apache HttpClient5를 5.6.4로 업그레이드했습니다. #79538
버그 수정
다음 이슈들이 수정되었습니다:
SHOW PROFILELIST,ANALYZE PROFILE,get_query_profile(),/api/profile이 다른 사용자의 SQL 텍스트와 플랜을 포함한 모든 캐시된 프로파일을 인증된 모든 사용자에게 반환하던 문제를 수정했습니다. 새로운 FE 설정authorization_enable_query_profile_access_check는 캐시된 프로파일을 쿼리를 실행한 사용자와SYSTEM OPERATE권한 보유자로 제한합니다. #79375- 권한 검사,
INSERT플래닝, 뷰 확장, 권한 확인,inspect_mv_refresh_info가 FE 메타데이터 락을 보유한 채 외부 카탈로그 왕복 호출을 수행하여, 느린 메타스토어가 동일 락을 기다리는 모든 DDL을 정체시키던 문제를 수정했습니다. 해당 호출은 이제 락 밖에서 수행됩니다. #79319 #79226 - gtid와 파티션 버전 epoch이 non-leader FE에서 생성될 수 있어 두 노드가 같은 순간에 동일한 번호를 생성할 수 있던 문제를 수정했습니다. #78799
FULL OUTER JOIN ... USING (c1, c2, ...)이 잘못된 값을 반환하던 문제(첫 번째USING컬럼만 올바르고 이후 컬럼은 이전 컬럼의 값을 가짐)를 수정했습니다. 같은 쿼리에ORDER BY <ordinal>을 추가하면IndexOutOfBoundsException으로 실패하던 문제도 수정했습니다. #79298GROUPING SETS,ROLLUP,CUBE가 union으로 재작성될 때HAVING술어가 유실되어 필터링되어야 할 행이 반환되던 문제를 수정했습니다. #79415GROUP BY ROLLUP(a, b, a)및 하나의 set 안에서 컬럼을 두 번 지정한CUBE또는GROUPING SETS가 동일 키를 두 번 가진 grouping set을 생성하던 문제를 수정했습니다. #78261- Aggregate Key 테이블 위의 집계를 제거할 때 쿼리의
LIMIT이 스토리지 계층에 도달하기 전에 누락되어 BE가 전체 테이블을 읽던 문제를 수정했습니다. #79414 OR조인을 union으로 분할할 때 union의 출력 컬럼과 첫 번째 브랜치는 컬럼 id 순으로 정렬되고 나머지 브랜치는 projection map의 순회 순서를 따라 브랜치가 일관되지 않게 정렬되던 문제를 수정했습니다. #79473- Skew join 재작성이 외부 조인의 보존 측을 복제하여 하나의 입력 행이 여러 번 반환되고 실행마다 결과가 달라지던 문제를 수정했습니다. 또한 salt 테이블이
generate_series인자를 잘못된 순서로 받아 series가 아무것도 생성하지 않던 문제도 수정했습니다. #79168 #79268 SELECT DISTINCT가DISTINCT에서 제외되는 컬럼에 대한ORDER BY를 허용하던 문제와, 윈도우 아래로의 distinct push-down이 제외된 컬럼을 projection에 남기던 문제를 수정했습니다. #77217 #77218bitmap_union_count()와 같이 항상 non-null인 집계 위의 윈도우가 선언된 nullability를 잃어, 그 위의DISTINCT또는GROUP BY가error nullablel column으로 실패하던 문제를 수정했습니다. #79009percentile_cont병합이 소진 여부를 위치가 아닌 값으로 추적하여 BE가 중단될 수 있던 문제를 수정했습니다. #77261count(DISTINCT percentile_hash(...))및PERCENTILE값에 대한 모든DISTINCT집계가 BE 크래시를 일으키던 문제를 수정했습니다. 이러한 호출은 이제 거부됩니다. #78795- 스칼라 agg-state 조합자가 null 메모리 풀에서 크래시가 발생하고 중첩 함수 컨텍스트에서 경쟁 조건(race condition)이 발생하던 문제를 수정했습니다. #76910
- 집계 테이블에서 JSON 서브필드 집계가 합성 서브필드 컬럼에 집계 타입이 없어 raw
NullPointerException으로 실패하던 문제를 수정했습니다. #77952 enable_spill = true에서 제한 메모리 예산이 한 번 고정된 후 갱신되지 않아 스트리밍 사전 집계가 메모리 부족을 일으킬 수 있던 문제를 수정했습니다. #76702- 빌드 파티션을 복원하는 중 취소된 spilling 해시 조인에서 probe 연산자가 spill I/O 작업을 기다리지 않고 닫혀 BE 크래시가 발생하던 문제를 수정했습니다. #79085
- 로컬 pass-through exchange가 receiver 취소 후에도 chunk를 계속 추가하고, sink와 receiver가 소유권을 공유하지 않아 채널이 해제 후 사용(use-after-free)될 수 있던 문제를 수정했습니다. 또한 sink 준비 알림이 sink observable을 선택하면서 source 이벤트를 발생시켜
OUTPUT_FULL에서 대기 중인 driver가 계속 차단될 수 있던 문제도 수정했습니다. #76603 #77088 #76782 - 쿼리 캐시가 불완전한 태블릿별 결과를 저장하여 이후 쿼리에 제공할 수 있던 문제와, 시간 조건이 digest에 반영되지 않았음에도 ASOF 조인을 포함한 fragment가 캐시되던 문제를 수정했습니다. #77066 #77563
- 시간 조건이 양쪽을 비교하지 않는 ASOF 조인이 BE 크래시를 일으키던 문제를 수정했습니다. 이러한 조건은 이제 거부됩니다. #79049
- 런타임 필터 생성 시 부모 tuple이 없는 중첩 람다 slot이 TopN 노드의 tuple set에 바인딩된 것으로 처리되던 문제와, order-by 힌트가 heavy expression으로 스캔에 push된 컬럼 없는 slot을 역참조하던 문제를 수정했습니다. #78050 #78527
- 내부 람다가 끌어올린 공통 하위 표현식이 정의된 범위를 벗어나, 중첩된
array_map및array_sort람다가Input dependency cols check failed또는Expr evaluate meet error: slot_id N not found로 플래닝 또는 평가에 실패하던 문제를 수정했습니다. #78645 #78769 #78915 array_sort의 comparator 검증이 하나의 오류Status를 여러 driver 간에 공유하여 이중 해제(double-free)가 발생할 수 있던 문제를 수정했습니다. #78314array_contains(NULL, [1, 2])및array_position(NULL, [1, 2])가class com.starrocks.type.NullType cannot be cast to class com.starrocks.type.ArrayType으로 실패하던 문제를 수정했습니다. #76970__iceberg_transform_truncate또는__iceberg_transform_bucket분석 시 공유 builtin 함수 객체가 직접 변경되어, wildcard decimal 시그니처에 처음 분석된 쿼리의 precision과 scale이 고정되던 문제를 수정했습니다. #76777- 빈 인자 목록을 가진
PARTITION BY RANGE(<partition-function>())가 파싱 오류 대신 rawIndexOutOfBoundsException을 발생시키던 문제를 수정했습니다. #75080 - 파티션 표현식이 순서를 보존하는지 및 그 방향과 관계없이 범위 술어가 파티션 표현식에 매핑되어, Range 및 List 파티션 프루닝이 일치하는 행을 가진 파티션을 제외할 수 있던 문제를 수정했습니다. 또한
NULL파티션 키가 컬럼 타입 최솟값보다 엄격히 작은 위치가 아니라 최솟값 위치에서 조회되던 문제를 수정했습니다.DATE또는DATETIME을 텍스트로 캐스팅하는 보존(retention) 조건이 다시 허용됩니다. #78024 #79111 #79187 #79257 #79688 - Iceberg 술어 변환기가
CastOperator를 무조건 제거하여,DECIMAL(5,2)컬럼에 대한WHERE CAST(d AS BIGINT) = 10이10.50을 가진 파일을 프루닝할 수 있던 문제를 수정했습니다. #78351 - delta 경계가 건너뛴
REPLACE스냅샷으로 진행되어, Iceberg 베이스 테이블의 증분 머티리얼라이즈드 뷰가 일상적인rewrite_data_files컴팩션으로 인해 영구적으로 비활성화되던 문제를 수정했습니다. #76950 - 컬럼 min/max 통계 캐시가 파티션 또는 스키마 DDL로 무효화되지 않아 오래된 항목이 무기한 제공될 수 있던 문제를 수정했습니다. #77441
- Hive 계열 카탈로그가 메타스토어 또는 AWS Glue에서 컬럼 통계 읽기 권한이 거부되면 완전히 실패하던 문제를 수정했습니다. 이제 빈 통계로 대체됩니다. 또한 Glue 컬럼 통계 요청에
catalogId가 포함되어, 크로스 계정 배포에서 설정된 카탈로그의 통계를 읽습니다. #78455 #78461 - Elasticsearch 외부 테이블 및 Elasticsearch 카탈로그가 버전 8 또는 9 클러스터를
Unsupported/Unknown ES Cluster version으로 거부하던 문제와, 동시 쿼리가 서로의 요청 URL 파라미터를 덮어써Column 'id' cannot be resolved와 같은 무관한 분석 오류가 발생하던 문제를 수정했습니다. #78267 #79391 - Paimon 테이블의
DECIMAL컬럼에 대한 술어가 컬럼의 PaimonDecimalType대신 StarRocks 타입 계열의 기본 precision과 scale로 변환되어 리터럴이 값을 표현하지 못하던 문제를 수정했습니다. #78760 - 엔드포인트가 전체 URL로 설정된 경우 Hadoop 설정 키에 scheme이 포함되어 Azure Blob 자격 증명 조회가 실패하던 문제를 수정했습니다. 또한 ADLS2 스토리지 볼륨이 직렬화 시 Azure Workload Identity token-file 속성을 누락하여, 볼륨 재로드 시 Managed Identity로 대체되고
Identity not found로 실패하던 문제도 수정했습니다. #78241 #79444 '[0].value.url'과 같이 배열 인덱스를 포함한 JSON 경로가 배열이 인덱스보다 짧은 모든 행에서 C++ 예외를 발생시켜, 대규모 스캔이 스택 언와인더 내부의 락 경합(lock convoy)으로 변하던 문제를 수정했습니다. 이제 인덱스 범위를 검사합니다. #78569- 두 인자가 같은 월 또는 연도에 속하고 두 번째 인자가 더 이른 경우
timestampdiff(MONTH, ...),timestampdiff(YEAR, ...),months_diff,years_diff가0대신-1을 반환하던 문제를 수정했습니다. #79037 CAST(<varbinary constant> AS VARCHAR)의 상수 폴딩이 값 대신 내부 바이트 배열의 Java identity hash code(예:[B@233c25e5)를 반환하던 문제를 수정했습니다. #77718- 입력 컬럼의 캐시된
has_null플래그가 보수적으로 true로 유지될 때DICTIONARY_GET이 non-NULL 키를 NULL로 거부하던 문제를 수정했습니다. #76881 - 재작성기가 디코딩하지 않는 nested-loop 조인의
ON컬럼에 저카디널리티 딕셔너리가 유지되던 문제, 자체 코드를 가진 파생 딕셔너리를 통해 딕셔너리 표현식이 폴딩되던 문제, "rolling low-cardinality" 컬럼이 글로벌 딕셔너리를 반복적으로 무효화하여 전체 테이블 재수집을 강제하던 문제를 수정했습니다. #78229 #78633 #78486 DECIMAL256리터럴은 문자열 표현으로 해시되는 반면 BE는 원시 32바이트 값으로 행을 버킷팅하여,DECIMAL256컬럼으로 분산된 테이블의 포인트 조회가 잘못된 버킷으로 전송되던 문제를 수정했습니다. #78495- OLAP 스캔이 정렬 키 컬럼을 컬럼 id가 아닌 컬럼 이름으로 지정하여, 이름이 변경된 컬럼이 태블릿 스키마와 더 이상 일치하지 않던 문제를 수정했습니다. #77967
PruneComplexTypeUtil이 설명할 수 없는 표현식 하나를 만나면 구문 내 모든 컬럼에 대해 복합 타입 서브필드 프루닝을 비활성화하던 문제를 수정했습니다. 이제 중단 범위가 원인이 된 표현식으로 한정되며, 술어 표현식 재사용으로 스캔에서 빠져나온 불필요한 서브필드 slot은 제거됩니다. #79181 #77456AstToSQLBuilder가SELECT * EXCLUDE목록의 컬럼을 문법상 어디에서도 허용되지 않는 큰따옴표로 출력하여, 재생성된 SQL이 파싱되지 않던 문제를 수정했습니다. #78052- Aggregate 테이블에서 집계 함수나
KEY키워드 없이ALTER TABLE ... ADD COLUMN을 실행하면 조용히 키 컬럼이 생성되어 테이블의 집계 기준이 변경되던 문제를 수정했습니다. 이러한 구문은 이제 모호한 것으로 거부됩니다. #78359 JSON처럼 BE key coder가 없는 타입의 컬럼을 정렬 키로 사용할 수 있어 BE 크래시가 발생하던 문제를 수정했습니다. 이러한 정의는 이제 모든 분산 유형에서CREATE TABLE및ALTER TABLE시 거부됩니다. #76795- 속성 키가 원래 대소문자 그대로 BE에 전달되어,
CREATE TABLE에서 허용된USING GIN("IMP_LIB" = "builtin")이 이후 모든INSERT를Can not get inverted imp type으로 실패시키던 문제를 수정했습니다. #77818 gram_num속성 없이 저장된 레거시NGRAMBF인덱스로 인해 세그먼트 생성 중 BE가 UTF-8 offset 벡터 범위를 넘어 읽어 CN 크래시가 발생하던 문제를 수정했습니다. #76989- push-down된 술어가 희소 범위를 읽을 때 null 플래그가 ordinal이 아닌 선형으로 인덱싱되어, 간격 이후의 모든 행이 건너뛴 행의 null 플래그를 가져가던 문제를 수정했습니다. 또한 push-down된 필터가 딕셔너리 전체를 거부할 때 딕셔너리 페이지 디코더가 진행하지 못해 BE가 중단되던 문제도 수정했습니다. #78389 #79007
- 하위 표현식 오류가 전파되지 않고 BE를 중단시키던 문제를 수정했습니다. #77442
ThreadPool이 기본적으로 작업 예외를 삼키고 작업을 완료된 것으로 집계하던 문제를 수정했습니다. #76863- Jaeger 트레이싱이 활성화된 상태에서
OlapTableSink를 통해 로드를 취소하면 BE 또는 CN이 SIGSEGV로 크래시되던 문제를 수정했습니다. #76869 AsyncFlushOutputStream::close()가 스트림 자체의 mutex를 보유한 채 promise를 충족시켜, 대기자가 스트림을 소멸시킨 후 I/O 스레드가 해제된 메모리의 futex를 깨우던 문제를 수정했습니다. #79182shutdown_staros_worker()가 글로벌 worker를 해제한 후 진행 중인 로드가 StarOS 기반 파일 시스템에 접근하면 graceful shutdown 중 CN이 SIGSEGV로 크래시될 수 있던 문제를 수정했습니다. #79058- 병렬 컴팩션이 brpc bthread에서 파일 시스템 I/O를 실행하여 CN이
Resource deadlock avoided로 중단되던 문제를 수정했습니다. #76925 - 벡터 인덱스 rowset이 음수
data_disk_size를 보고하면 컴팩션이 SIGFPE로 중단되던 문제를 수정했습니다. #78959 - Lake txn log 읽기에서 손상이 발생했을 때 손상된 로컬 캐시 사본을 재시도마다 다시 읽던 문제와, Primary Key 인덱스 sstable 블록 읽기가 writer가 항상 생성해 온 crc32c 블록 trailer를 검증하지 않던 문제를 수정했습니다. #78733 #77479
- 복사로 귀결된 부분 업데이트 재작성이 원본의 암호화 메타데이터를 누락하여, 어떤 리더도 열 수 없고 컴팩션도 재작성할 수 없는 세그먼트가 남던 문제를 수정했습니다. #79053
- Shared-data 스키마 변경이 데이터를 참조하지 않는 rowset을 기록할 수 있어, 이후 해당 파티션의 모든
MERGE_TABLET이tablet merge source has an empty ordinary rowset으로 실패하던 문제를 수정했습니다. #79167 - Range-colocate 분할 경계가 FE와 BE가 동일하게 인코딩하지 않는 직렬화된 protobuf 바이트로 비교되던 문제를 수정했습니다. #76968
- 불안정한 range-colocate 그룹 멤버에 대한 단순 단일 테이블 쿼리가
range colocate group ... is in an unaligned state로 실패하던 문제를 수정했습니다. #76971 - Hash-colocate Shared-data 테이블의 새 물리 파티션 샤드가 colocation 배치 정보 없이 생성되어 이후 마이그레이션이 필요하던 문제를 수정했습니다. #79223
- FE가 삭제된 태블릿의 테이블이 range 분산임을 BE에 알리지 않아 reshard 후 파일이 누수되던 문제를 수정했습니다. #76861
- Reshard 작업 업데이트 재생 시 resharding 태블릿이 갱신되지 않아, FE Leader 변경 후 파티션 publish가 기록되지 않은 태블릿 메타데이터 객체에 대해 계속 404를 반환할 수 있던 문제를 수정했습니다. 또한 테이블이 삭제된 상태에서 reshard 작업 재생이 edit log에 쓸 수 있던 문제와, reshard publish 재시도가 간격 없이 반복되던 문제도 수정했습니다. #79426 #79485 #77691
- Shared-data 파티션 버전이 변경 작업이 저널에 기록되기 전에 메모리에서 변경되어, 재생된 버전이 뒤로 이동할 수 있던 문제를 수정했습니다. 이제 버전은 저널에서 도출되며 항상 앞으로만 진행됩니다. #79296
- 대상 태블릿이 복제본이 없다고 보고하면 복제(replication) 작업에서 0으로 나누기가 발생하던 문제를 수정했습니다. #79329
- DataCache 키 해시가 런타임 디스패치 테이블에서 결정되어, 디스패치 변경 시 업그레이드 또는 롤백 과정에서 모든 캐시 블록이 고아가 되던 문제를 수정했습니다. 이제 MurmurHash3로 고정됩니다. #79262
- FE 스캔 범위 힙 안전성 검사가 스캔 노드당 한 번이 아니라 물리 파티션당 한 번 실행되어, 물리 파티션 수에 대해 제곱 복잡도를 가지던 문제를 수정했습니다. #76978
- 지연 로드된 인덱스로 세그먼트 메모리 사용량이 증가한 후에도 Rowset 메타데이터 캐시 항목이 초기 charge를 유지하여 캐시가 사용량을 과소 보고하던 문제를 수정했습니다. #77893
Tablet::get_average_row_size()가 해당 맵의 선언된 계약과 달리_meta_lock을 보유하지 않고_rs_version_map을 순회하던 문제를 수정했습니다. #79250- FE thrift accept 루프가 worker pool 포화 시 수 분간 정체되던 문제와, 호출자가 사라진 지 오래인 대기 연결을 worker가 계속 처리하던 문제를 수정했습니다. #78838 #79173
- 저널 applier가 멈춘 non-leader FE가 준비 상태 판정이 재생 사이클 반환 이후에만 이루어져, 요청을 포워딩하지 않고 오래된 메타데이터를 로컬에서 계속 제공하던 문제를 수정했습니다. #79041
getLoadsRPC가 모든 로드 레코드를 단일 메시지로 반환하여, 바쁜 클러스터에서 Leader 로그가FE RPC failure ... MaxMessageSize reached로 가득 차고loads_history아카이브가 롤백되어 행이 영구 손실되던 문제를 수정했습니다. 이제 RPC는 job id 기준으로 페이지네이션됩니다. #78898task_runs를 읽는 동안 pending 큐, running 맵, 인메모리 히스토리, 아카이브 히스토리 사이를 이동한 task run이 두 번 보고될 수 있던 문제를 수정했습니다. #79438SHOW ALTER TABLE ROLLUP및SHOW ALTER MATERIALIZED VIEW가WHERE,ORDER BY,LIMIT을 허용하면서도 무시하던 문제(SHOW ALTER TABLE COLUMN만 적용)를 수정했습니다.SHOW ALTER TABLE ROLLUP술어에서FinishedTime도 허용됩니다. #79281 #79498- SQL 블랙리스트 로딩 시 규칙마다 불변 스냅샷을 재구성하고 정렬하여, 규칙 수에 대해 제곱 복잡도로 매 FE 시작 및 체크포인트마다 실행되던 문제를 수정했습니다. #78752
- 인터럽트가
hasMoreOutput을 지우지 않고 삼켜져, 컨슈머 스레드가 인터럽트된 후AsyncTaskQueue가getOutputs()와tryGetOutputs()사이에서 busy-spin하던 문제를 수정했습니다. #79297 sys_log_level이 변경 가능한 항목으로 문서화되어 있음에도 런타임 변경이 설정에 기록만 되고 적용되지 않던 문제를 수정했습니다. #79200has_enable_heap_profile()이 boolean jemalloc 노드prof.active를int로 읽어 항상 힙 프로파일링이 비활성화된 것으로 보고하던 문제를 수정했습니다. #78820toString바인딩이 getter가 아닌 메서드로 등록되어, 스크립트의 외부 객체에 대한System.print()가 객체의 텍스트 대신instance of <Class>를 출력하던 문제를 수정했습니다. #78877- 멀티 테이블 트랜잭션 Stream Load 인터페이스를 통해 표현식 파티션 테이블에 로드할 때 BE가 파티션을 생성해야 하면 커밋 시
automatic create partition failed. error: txn ... not exist로 실패하던 문제를 수정했습니다. #78790 - Combined txn log 모드에서 자체 end-of-stream이 먼저 도착한 코디네이터가 로드 취소 시 txn log collector를 무기한 대기할 수 있던 문제를 수정했습니다. #79389
- 완료된 merge-commit 로드가
information_schema.loads에서 merge window 진행률을 100% 미만으로 보고할 수 있던 문제를 수정했습니다. #78723 - 스캔
SampleTime카운터가 경과 시간이 아닌 블록 수를 보고하던 문제를 수정했습니다. #78732 - Arrow Flight SQL 서비스용 FE classpath에 LZ4 및 ZSTD Arrow IPC 코덱이 누락되어 있던 문제를 수정했습니다. #76921
- StarOS, starlet, starcache를 v4.1.4로 업그레이드했습니다. #79429
4.1.4
출시일: 2026년 8월 5일
동작 변경
- Shared-data 모드에서
TABLESAMPLE/SAMPLE절과ANALYZE SAMPLE TABLE이 이제 레이크 테이블에 적용됩니다. 이전에는 샘플 옵션이 BE에 전달되지 않아 전체 스캔이 수행되었습니다. #71874 ALTER TABLE로flat_json구성을 변경하면 이제 버전이 지정된 태스크를 통해 BE 노드에 전파되어 안정적으로 적용됩니다. #74747- GIN 역색인(inverted index)으로 처리되는
NOT MATCH술어가 더 이상 NULL 행을 반환하지 않으며, NULL 행이 이제 결과에서 올바르게 제외됩니다. #75578 ANALYZE ... UPDATE HISTOGRAM ON이 더 이상 char 계열 컬럼(옵티마이저가 사용하지 않음)에 대해 히스토그램을 계산하지 않고 MCV만 계산하여 분석 비용을 줄입니다. #75968rewrite_manifests가 이제 순서를 보존하는 파티션 범위별로 출력 매니페스트를 클러스터링하여, 매니페스트별 파티션 경계를 더 좁게 만들고 파티션이 많은 테이블에서 매니페스트 프루닝을 개선합니다. #76193- 다중 테이블 Stream Load가 이제 결합 트랜잭션 로그 사용 여부를 결정할 때 전역
lake_use_combined_txn_log설정만 따르는 대신 각 테이블의file_bundling속성을 준수합니다. #76806 - Primary Key 테이블에서 GIN 역색인과 컬럼 모드 부분 업데이트를 함께 사용할 때 더 이상 손상된 결과를 반환하지 않으며, 인덱스가 이제 델타 컬럼 그룹 세그먼트에서 제공됩니다. #76271
- 정수 배열에 대한
array_difference가 이제BIGINT로 확장하기 전에 64비트로 인접 차이를 계산하여 int32 오버플로를 수정했습니다. #76569 - 상수가 아닌 제수를 가진 나눗셈 표현식이 더 이상 단조(monotonic)로 취급되지 않아, 잘못된 결과를 낼 수 있었던 부정확한 ZoneMap 프루닝을 수정했습니다. #76744
- 배열 및 맵 생성자가 이제 청크의 평탄화된 결과가 4GB를 초과할 때 데이터를 조용히 손상시키는 대신 오류를 발생시킵니다. #76419
- Primary Key 삽입이 이제 L1/L2 영구 인덱스에 이미 존재하는 키를 올바르게 거부합니다. 이전에는 존재 여부 확인이 생략되었습니다. #76591
- range-colocate 테이블에서 샘플 기반 태블릿 사전 분할이 이제 새 샤드를 원본 태블릿의 워커에 몰아넣는 대신 컴퓨트 노드 전체에 분산하여, 해시 방식보다 약 3배 느림던 range 배치 임포트를 수정했습니다. #76608
- 증분 또는 AUTO 머티리얼라이즈드 뷰가 이제
AUTO리프레시 모드의 PCT 폴백을 위해 유지 관리 쿼리를 다시 빌드하여, IVM이 지원하지 않는 형태에서의 리프레시 실패를 수정했습니다. #75961 ALTER MATERIALIZED VIEW ... ACTIVE가 이제 비집계 INCREMENTAL 머티리얼라이즈드 뷰에서 동작합니다. 스토리지에서 채워지는__ROW_ID__컬럼이 MV DDL 컬럼 목록에서 제외되어 비활성 IVM을 다시 활성화할 수 있습니다. #77017- Iceberg 파티션 캐시가 이제 항목 수뿐만 아니라 메모리로도 제한되며 사용량이 노출되어, 파티션이 많은 테이블에서 무제한 증가를 방지합니다. #76165
- OAuth2 클라이언트 자격 증명을 사용하는 Iceberg REST 카탈로그가 이제 백그라운드 토큰 갱신 태스크가 종료된 후 모든 후속 요청이 실패하는 대신 자체 복구됩니다. #76457
- 레이크 전체 vacuum이 이제 이전에 건너뛰었던 고아
.lcrm(Lake Compaction Rows Mapper) 파일을 회수합니다. #76522 - Shared-data 퍼블리시가 이제 태블릿이 누락된 번들 태블릿 메타데이터 파일 쓰기를 거부하여, 파티션이 퍼블리시 단계에서 영구적으로 멈추는 것을 방지합니다. #76850
- 방치된 외부(Spark/Flink 커넥터) 스캔 컨텍스트가 이제 회수될 때 파이프라인 프래그먼트를 취소하며, 외부 스캔 플랜이
query_delivery_timeout을 설정하여 QueryContext 수명을 제한합니다. #76535 #76536 - 머티리얼라이즈드 뷰의 고정 범위(pinned-range) 맵이 이제 올바르게(테이블 UUID로) 키가 지정되어, OLAP 테이블에서 MV 부트스트랩 고정이 비활성화되던 문제와 다른 데이터베이스의 동일 이름 테이블이 잘못 처리되던 문제를 수정했습니다. #76320 #76351
- 리더 FE로 전달된 문의 감사 로그가 이제 CTE 별칭과 정규화되지 않은 테이블 이름 대신 (리더와 일치하는) 완전히 정규화된 조회 관계를 기록합니다. #76387
- 전체
STRUCT컬럼을ROLLUP,CUBE또는GROUPING SETS와 함께 집계할 때 더 이상 플랜 시점에usedStructFiledPos오류로 실패하지 않습니다. #76804 - FE 메모리
Estimator가 이제 컨테이너 오버헤드를 계산하고, Parquet 스캐너가 누락된 컬럼을 채울 때 전체 배치 크기 대신 제한된 청크 크기를 사용하여 메모리 계산 정확도를 개선했습니다. #75971 #75981
개선 사항
- Routine Load에서 Kafka/Pulsar 메시지 메타데이터(파티션, 오프셋, 타임스탬프 등)를 노출하는
INCLUDE METADATA절 지원을 추가했습니다. #73840 - Routine Load 메타데이터 별칭을 선택 사항으로 변경했습니다. #76294
information_schema.materialized_views에LAST_FRESHNESS_CONFIRMED_AT컬럼을 추가했습니다. #74585/metrics엔드포인트를 통해 데이터 캐시 메트릭을 노출하고, FE 컴팩션 메트릭,ALTER TABLE컬럼 작업 메트릭 및 소요 시간, 익스체인지 싱크의CompressedInputBytes메트릭을 추가했습니다. #58204 #72941 #76247 #76309- 커넥터 메타데이터 작업의 인증 및 연결 오류 세부 정보를 최종 사용자에게 노출합니다. #75490
- 대용량 컬럼 용량 제한 검사의 오류 메시지를 개선했습니다. #76303
hdfs_backend_selector_cache_replica_num변수를 추가하고, 오브젝트 스토리지 클라이언트 캐시 크기를 런타임에 변경 가능하도록 했습니다. #75023 #75851- 샘플 기반 태블릿 사전 분할의 메타 계층 리더를
CHAR, 복합 정렬 키, UTC 조정된 ParquetTIMESTAMP/ ORCTIMESTAMP_INSTANT등 더 많은 정렬 키 타입으로 확장했습니다. #75937 #76011 #76114 - 외부 테이블 통계 수집을 개선했습니다. 술어 컬럼 사용이 이제 추적되고, 여러 컬럼이 단일 스캔으로 수집되며, Iceberg 테이블에는 제한된 비용의 스캔 예산이 적용됩니다. #75938 #76638 #76549
- right-outer, semi, anti, full-outer range-colocate 조인을 지원합니다. #76040
- Query Queue V2 비용 추정기를 최적화했습니다. #76609
FILES()glob에 대해 와일드카드 리터럴 접두사를 S3ListObjectsV2호출로 푸시다운하여 나열되는 객체 수를 줄였습니다. #76210remove_orphan_files에서 Iceberg 매니페스트 항목을 스캔할 때 이제file_path컬럼만 프로젝션합니다. #76020- 레이크 Primary Key 태블릿의 베이스 컴팩션과, 별도 정렬 키를 가진 클라우드 네이티브 PK 테이블의 로드 스필 및 즉시(eager) PK 인덱스 SST를 지원합니다. #76794 #76094
- Shared-data range 분산 테이블에서 후행 정렬 키 컬럼의 메타데이터 전용 추가를 지원합니다. #76341
- 프래그먼트 취소 시 진행 중인 익스체인지 싱크 RPC를 취소하고, 리샤드 정리 중 리샤드된 파티션의 진행 중인 컴팩션을 취소합니다. #75613 #76759
- 다중 문 Stream Load 채널을 대기 전에 실행하여 로드 지연 시간을 줄였습니다. #76715
Analytor::process의 컬럼 업그레이드에 메모리 제한 검사를 추가했습니다. #75821- 비동기 델타 라이터가 중지될 때 실제 오류 상태를 보존합니다. #76216
- 레이크 PK 인덱스 SSTable에 생성 버전을 기록하고, 레이크 Primary Key 퍼블리시 시
op_write.seg_delvecs를 적용하며, 컴팩션 퍼블리시 충돌 해결 중 출력 세그먼트 푸터 열기를 건너뜁니다. #76208 #76474 #76657 - 진단을 돕기 위해 레이크 로드 및 퍼블리시 버전 경로에 스택 트레이스와 세분화된 트레이스 카운터를 추가했습니다. #75901 #76810
보안
- [CVE-2026-44891] STOMP 서브프레임 디코더의 메모리 고갈(DoS) 취약점을 수정하기 위해 Netty를 4.1.136.Final로 업그레이드했습니다. #76555
- [CVE-2026-55971] [CVE-2026-43871] C++ 바인딩의 힙 기반 버퍼 오버플로와 무한 루프 취약점을 수정하기 위해 Apache Thrift를 0.24.0으로 업그레이드했습니다. #76922
- [CVE-2026-10050] 취약한 Jetty jar(Hadoop을 통해 전이적으로 포함되는 클라이언트 측 Digest 인증 우회)를 제외하고 pgjdbc를 42.7.12로 업그레이드했습니다. #76783
- [CVE-2011-4969] [CVE-2014-6071] 취약한 jQuery 1.4.2를 번들로 포함하던(및 기타 jQuery XSS CVE) 사용되지 않는
avro-ipcjar를 제외했습니다. #76270 - [CVE-2024-29857] 수정된 버전과 함께 배포되던 취약한 오래된 전이 의존성(예:
bcprov-jdk15on1.70 및 EOLokhttp2.x)을 제거하고, 회귀 방지를 위해 의존성 금지 규칙을 추가했습니다. #76097
버그 수정
다음 이슈들이 수정되었습니다:
- 조인 술어 파생 시 빈 범위에서 발생하는 플래너 크래시. #75011
- null이 아닌 상수
ELSE를 가진CASE위로 집계가 잘못 푸시다운되는 문제. #75037 PARTITION-TOP-N의 partition-by가 프루닝된 딕셔너리 슬롯으로 재작성되는 문제. #75956- 조인 셔플 조인 출력 속성 분기의 잘못된 연산자 우선순위와, 조인 연산자 생성 시
predicateCommonOperators가 전달되지 않는 문제. #76203 #76330 #76388 - 분석 시점에 뷰 컬럼과
ROLLUP키의 nullability가 잘못 지정되는 문제. #75684 #76149 - 길이가 0인 캡처 그룹에서
regexp_extract_all이 무한 루프에 빠지는 문제. #75798 LargeOrCalculatingVisitor의 잘못된nullsFraction클램프. #75864- 문자열에서 숫자로의 스키마 변경 변환 시 잘못된
CAST시맨틱. #75538 - 동일 컬럼
min/max에 대해 동기 MV 재작성이 롤업 컬럼을 잃는 문제. #75528 - 스캔 술어를 위로 상당 올릴 때
array_map람다 내부에 재작성이 잘못 적용되는 문제. #76380 - 버킷 인식 실행 시 Iceberg 버킷 테이블에서
COUNT(DISTINCT)가 과다 집계되는 문제. #76601 - 필수(required) Iceberg 컬럼에 대한
UNNEST+GROUP BY시 nullable 출력 오류. #76730 INSERT OVERWRITE코드 경로 전반의 락 경합을 줄이고, CBO 테이블 프루닝 중 Memo 자기 참조를 피하기 위해Operatorsalt를 복원했습니다. #75828 #76542- 문자열 날짜 파티션 컬럼을 시간 값과 비교할 때 Iceberg 파티션 프루닝, 매니페스트 행 수 추정, 메타데이터 삭제, equality-delete 적용 및 Delta Lake 파티션 프루닝이 잘못되는 문제. #76068 #76107 #76197 #76280 #76348
- Iceberg 읽기가 대상 스냅샷의 스키마와 파티션 스펙을 준수하지 않는 문제, 파티션 필드 삭제 후 Iceberg V1 테이블에서 쿼리가 실패하는 문제,
rollback_to_snapshot후 MV 재작성이 오래된 결과를 제공하는 문제. #74711 #75149 #75924 - Iceberg 매니페스트 데이터 파일 캐시가 불완전한 파일 집합을 제공하는 문제, 증분 스캔 범위 반복자를 동시에 닫는 것이 안전하지 않은 문제를 수정했으며, 분석 시점의 타임 트래벨 스냅샷 바인딩이 이제 best-effort 방식으로 동작합니다. #76215 #75953 #76448
- Iceberg/Delta 메타데이터 기반 통계가 이제
StatsSource=TABLE_METADATA로 태그됩니다. #76560 - Delta Lake 및 Kudu 비파티션 머티리얼라이즈드 뷰 쿼리 재작성. #76359
gcs-connector3.x 설정 이름 변경으로 인해 GCS vended 자격 증명이 무시되는 문제. #75979- Hive
getTable()이 이제get_table_req폴백 전에 재연결하고, 메시지 텍스트 대신 예외 타입으로 테이블 없음을 감지합니다. #76456 #76459 - Parquet 컬럼 인덱스 통계에서
BOOLEANmin/max가 지원되지 않는 문제. #74752 - 이름에
.이 포함된 키의 Flat-JSON 서브필드 읽기, NULL을 반환하는 대신 중간 flat-JSON 객체를 재구성하는 문제를 수정했으며, 서브필드 키가 대소문자 구분 없이 충돌할 때 JSON 서브필드 푸시다운을 이제 건너뜁니다. #75583 #75764 #76594 - 한쪽 분기만 비트맵 인덱스가 있을 때 OR 중첩 술어를 유지합니다. #76275
- Primary Key 자동 증가 부분 업데이트 적용 시 BE 크래시. #76119
- 로드 스필 중
LoadChunkSpiller초기화 경쟁 조건으로 인한 BE 크래시. #76098 - 불완전한 중첩 레이크 스키마에서 네이티브 Parquet 리더 크래시, Avro 복합 타입 컬럼에 중첩된
BOOLEAN에 대한 ASAN 크래시. #76455 #76041 - 유효하지 않은 문자열을
NOT NULL숫자 컬럼으로 변환하는 스키마 변경 중bad_variant_access발생. #76707 SimdJsonConverter오류 경로의 힙 버퍼 오버플로와, 버퍼 확장 경계에 걸친 다중 문자 CSV 구분자에서의 use-after-free. #76752 #76718- 스캔 해제 중
MorselQueueFactory의 use-after-free, 취소 시 스필 가능한 조인 빌드set_finishing에서의 use-after-free,PipelineDriver소멸자의 전역 런타임 필터 타이머 누수 / 스케줄되지 않은 타이머. #76259 #76633 #76252 - 물리적 분할 빈 태블릿 CN 크래시를 수정하기 위한 null-safe
SparseRangeIterator::has_more()와, bRPC 스텁 캐시 정리 타이머 누수. #75985 #75973 - 쿼리 배포 워커에서
ConnectContext가 복원되지 않는 문제. #76366 - Shared-data Primary Key 테이블에서 트랜잭션 내 upsert/delete 순서를 보존하며, 스필 병합이 연산(op)을 인식하도록 했습니다. #75338 #75366
- 댑글링
prev_garbage_version을 피하기 위해cal_new_base_version에서 내구성 있는 메타데이터를 읽고,publish_version에서base_version을base_metadata와 동기화하며, 일반 경로에서 병합된 병렬 컴팩션 트랜잭션 로그를 영속화합니다. #75904 #76313 #76460 - Range-colocate 수정: 정렬(alignment) 작업 폭주를 중지하고 정렬되지 않은 colocate 조인을 fail-close 처리하며, 버킷 셔플에서 null-safe 조인이 매치를 누락하는 문제를 수정하고, 플랜 피드백에서 range-colocate 조인 감지를 개선했습니다. #75930 #76104 #76121
- 태블릿 분할/리샤드 수정: 분할 시 테이블 낙관적 버전을 올려 동시 쿼리가 재계획되도록 하고, 동일 태블릿 리샤드 전에 PK 인덱스 memtable을 플러시하며, 리샤드 전반에서 버전 구간별로 레이크 vacuum 파일을 보존하고, 분할 불가능한 range 분산 태블릿에서 자동 분할 작업 루프를 중지하며, 분할 후 range 분산 정렬 키에 대한
IS NULL프루닝을 수정했습니다. #76123 #76367 #76209 #76663 #76797 - 키 파생 range 분산 테이블의 키 컬럼 순서를 변경하는 전체 컬럼
ORDER BY를 거부합니다. #76256 - 로드 스필 병렬 병합 결과를 플러시 순서로 통합하고, 파일 번들링 carry-forward에서
metaId로 변경된 인덱스를 제외합니다. #75951 #76368 - NULL을 흡수하는 딕셔너리 매핑 group-by 키에 대해 딕셔너리 크기 + 1을 예약하고, 프로파일 리포트 재스케줄 전에 드라이버 준비 상태를 확인합니다. #75357 #75725
- 락 획득에 성공하지 못했을 때
PlannerMetaLocker가 언락을 건너뛰는 문제. #74041 - 리소스 그룹을 웨어하우스별로 필터링합니다. #73209
SHOW CREATE ROUTINE LOAD출력에서jsonpaths값을 이스케이프합니다. #75755- Arrow Flight prepared statement 전달을 수정했습니다. #76310
- 딕셔너리 리프레시 간거 오버플로와 의도하지 않은 자동 리프레시를 수정했습니다. #76634
ERROR_IF_OVERFLOW모드에서 빈 min/max로 인한 통계 캐시 로드 실패를 수정했습니다. #76684- 카탈로그 삭제 시 존재 여부 확인을 쓰기 락 하에서 원자적으로 수행하도록 했습니다. #76778
4.1.3
출시일: 2026년 7월 14일
동작 변경
CTAS가 이제 명시적으로 선언된VARCHAR(N)컬럼 길이를VARCHAR(MAX)로 확장하는 대신 그대로 보존합니다. 기존 테이블은 영향을 받지 않으며,CTAS로 새로 생성된 테이블은 이후 쓰기 시 선언된 길이를 강제합니다. #73498OPERATE ON SYSTEM권한 없이sys.fe_memory_usage또는sys.fe_locks를 조회하면 이제 혼란스러운 노드 조회 실패 대신 명확한 접근 거부 오류를 반환합니다. #73567FILES()와 Broker/Stream Load가 더 이상isAdjustedToUTC=false로 기록된INT64Parquet 타임스탬프에 세션 시간대 이동을 적용하지 않습니다. 이러한 타임스탬프는 이제 wall-clock 값으로 취급되어 그대로 로드됩니다. v4.1.3 이전에 이러한 파일에서 로드된 데이터는 업그레이드 후 로드된 데이터와 다를 수 있으며, 일관성이 필요하면 다시 로드하십시오. #73674- 성공적으로 커밋된 다중 테이블 트랜잭션 Stream Load 작업이 이제
PREPARING상태에 멈춰 있는 대신information_schema.loads와SHOW STREAM LOAD에서VISIBLE로 올바르게 표시됩니다. #74386 - 커넥터 증분 스캔 범위 스케줄링이 이제 배포된 프래그먼트의 드라이버 레이아웃을 일관되게 재사용하여, 스캔 범위가 존재하지 않는 드라이버에 잘못 할당되는 것을 방지합니다. #74674
LIKE상수 폴딩이 이제 MySQL 8의 백슬래시 이스케이프 시맨틱과 일치하여,'a\\\\b'와 같은 패턴이 이전에 반대 결과를 반환하던 경우를 수정했습니다. #74814- Routine Load가 이제
property.kafka_partition_discovery속성을 지원하며, 이를 통해 정확한 시작 오프셋을 지정하기 위해kafka_partitions와kafka_offsets를 명시한 경우에도 파티션 자동 검색을 계속할 수 있습니다.property.kafka_default_offsets가 설정되지 않은 경우, 작업에 이미 소비 진행 상황이 있는 상태에서 검색된 파티션의 기본 시작 오프셋이OFFSET_END에서OFFSET_BEGINNING으로 변경됩니다. 이는 새 속성을 사용하는 작업뿐만 아니라 모든 자동 검색 작업에 적용됩니다. #74729 - group-by가 없는 집계가 이제 병합 전에
UNION ALL분기를 통해 푸시다운되어, 유니언 위에서 집계하는 쿼리의 네트워크 전송량과 메모리 사용량을 줄입니다. #73930 - IVM 유지 관리 쿼리가 이제
CREATE시점에 저장된 고정 쿼리 텍스트를 사용하는 대신 각 리프레시마다 현재 뷰 정의에서 다시 파생됩니다. 기존 MV도 재생성 없이 재작성기(rewriter) 버그 수정의 이점을 자동으로 얻습니다. #74881 - 샘플 기반 태블릿 사전 분할이 이제 사전 분할 샤드를 원본 태블릿의 워커에 몰아넣는(
PACK배치) 대신 모든 컴퓨트 노드에 분산(SPREAD배치)하여 로드 병렬성을 개선합니다. #75514 - 컬럼 주석만 변경하는
ALTER TABLE ... MODIFY COLUMN이 이제 전체 스키마 변경 작업을 생성하는 대신 경량 메타데이터 전용 경로를 사용하며, Primary Key 컬럼에서도 동작합니다. #75325 FLOOR와CEIL이 이제 비예약 키워드로 취급되어 따옴표 없이 컬럼 이름으로 사용할 수 있습니다. #75241SHOW FUNCTIONS출력이 이제 UDF와 UDAF에 대해 Properties 컬럼에isolation속성(shared또는isolated)을 항상 포함합니다. #75255lake_vacuum_min_batch_delete_size의 기본값이 100에서 200으로 상향되어,DeleteObjects요청당 더 많은 오래된 파일 삭제를 배치 처리함으로써 오브젝트 스토리지에서의 vacuum 처리량을 개선합니다. #74304- vended 자격 증명을 사용하는 Iceberg REST 카탈로그 테이블이 이제 캐시되고 자격 증명이 백그라운드에서 갱신되어, AWS Lake Formation 속도 제한을 유발하던
getTable()마다의GetDataAccess호출을 제거했습니다. #75431 - IVM
bitmap_union,hll_union,percentile_union집계 상태가 이제 머티리얼라이즈드 뷰에 두 번(표시 컬럼 + 숨김__AGG_STATE_컬럼) 저장되는 대신 한 번만 저장되어, 해당 스케치 타입의 스토리지가 절반으로 줄었습니다. #75760 - 증분 머티리얼라이즈드 뷰가 이제
bitmap_agg,hll_union,percentile_union,bitmap_union집계 함수를 지원하여, 정확한 distinct count와 스케치 기반 집계를 증분으로 유지할 수 있습니다. #75587 #75610 - 샘플 기반 태블릿 사전 분할의 태블릿 수가 이제 균등 분산을 위해 활성 컴퓨트 노드 수의 가장 가까운 배수로 올림되며, 소규모 로드에서 과도한 단편화를 피하기 위해 최소 태블릿 크기로 하한이 적용됩니다. #75360 #75584
개선 사항
ngram_search함수가 이제 상수가 아닌 needle 인자를 허용합니다. #74675enable_http_authFE 구성으로 제어되는 HTTP 인증 프레임워크를 추가하여, 모든 외부 HTTP 엔드포인트에서 인증 및 RBAC 적용을 제어합니다. #73822information_schema.materialized_views에 리프레시 및 배치 관측성 컬럼(refresh_warehouse,refresh_resource_group,refresh_mode,refresh_type,last_refresh_details)을 추가했습니다. #74342- 새 FE 구성으로 제어되는 저널 리플레이 시 외부 통계 캐시의 옵트인 지연 리프레시를 추가하여, 느리거나 멈춘 외부 메타스토어가 FE 저널 리플레이나 시작을 지연시키는 것을 방지합니다. #74371
- range 분산(Shared-data) 정렬 키 컬럼에서 이제 데이터 재작성 없이 빠른 스키마 진화를 통한
VARCHAR길이 증가가 허용됩니다. #74698 - Shared-data 트랜잭션 로그 쓰기가 구성 가능한 임계값을 초과할 때 스택 트레이스 덤프를 추가하여, 느린
put_txn_log/put_combined_txn_log호출을 더 쉽게 진단할 수 있습니다. #74704 - 태블릿 사전 분할 메타 계층 푸터 리더가 이제
DATE,DATETIME,DECIMAL,VARCHAR, ORCTIMESTAMP정렬 키를 지원하여, 데이터 계층 샘플링으로 폴백해야 하는 로드 수를 줄입니다. #74710 #74739 #74792 #74902 #74955 #75186 #75209 #75427 #75697 - 샘플 기반 태블릿 사전 분할이 이제
INSERT INTO ... SELECT ... FROM <OLAP table>로드와, 모든 정렬 키 컬럼을 포함하는 컬럼 목록INSERT문에도 적용됩니다. #74828 #75345 - Shared-data 태블릿 메타데이터와 트랜잭션 로그 파일에 Adler-32 체크섬 보호를 추가하여, 읽기 시 무결성 손상을 감지할 수 있습니다. #74924
- 데이터베이스별
txn_max_committed_pending_publish_msFE 메트릭을 추가하여, 커밋되었지만 아직 퍼블리시되지 않은 가장 오래된 트랜잭션의 경과 시간을 보고함으로써 멈춘 버전 퍼블리시를 감지할 수 있습니다. #75025 - 태블릿 분할/병합이 이제 퍼블리시 버전 응답에서 실시간으로 트리거되어, 로드 완료와 자동 분할/병합 시작 사이의 지연을 줄입니다. #75010
- SST가 없는 조건 병합 태스크를
pk_index_execution스레드 풀로 라우팅하여 레이크 Primary Key 테이블의 조건 업데이트 비교 단계를 최적화했습니다. #74572 - 레이크 스키마 변경 및 롤업 작업 락의 범위를 데이터베이스 전체 대신 테이블 수준으로 제한하여, 같은 데이터베이스 내 다른 테이블의 동시 작업에서 락 경합을 줄였습니다. #75087
- Shared-nothing 모드에서 여러 데이터베이스 수준 쓰기 락을 테이블 범위의 intensive 쓰기 락으로 좁혀, BE 리포트 콜백과 쿨다운 작업 중 락 경합을 줄였습니다. #74521 #74523
- Avro Routine Load가 이제 네이티브
MAP및STRUCT대상 컬럼을 지원합니다. #74901 - Range-colocate 태블릿 안정성 게이팅이 이제 그룹을 안정 상태로 표시하기 전에 StarOS 배치 수렴을 기다려, colocate 조인이 호스트 로컬 실행을 달성하도록 보장합니다. #75290 #75656 #75883
- 외부 테이블의 CBO 통계를 개선했습니다. 옵티마이저가 이제 전체 파일 열거 없이 Iceberg 매니페스트에서 행 수를 추정하고, Parquet/ORC 압축에 따른 Hive/Hudi 행 수 과소 추정을 보정하며, JDBC 커넥터에 비동기 행 수 통계를 추가하고, Puffin 통계를 사용할 수 없을 때 Iceberg 및 외부 커넥터에 NDV 추정 폴백을 제공합니다. #75280 #75082 #75083 #75092 #75097 #75382 #75474
- Iceberg 매니페스트 컬럼 통계가 이제 클러스터링된 컬럼에 대해서만 선택적으로 캐시되어, 데이터 파일이 많은 넓은 테이블에서 FE 힙 소비를 줄입니다. #75395
- 외부 테이블 통계 수집이 이제 FE 재시작과 HA 페일오버 전반에서 영구적인 술어 컬럼 추적을 지원하여, 자동 ANALYZE가 올바른 컬럼을 대상으로 할 수 있습니다. #75653
- 스케줄링부터 실행까지 외부 테이블 통계 수집의 전체 수명 주기를 다루는 구조화된
[ExternalStats]로그 라인을 추가했습니다. #75335 #75529 SHOW ANALYZE STATUS가 이제 외부 테이블 통계 작업에 대해 Properties 컬럼에 파티션, 컬럼, 스냅샷 메타데이터를 포함합니다. #75630- 각 외부 테이블의 통계 소스(
TABLE_METADATA,ANALYZE또는NONE)가 이제 쿼리 런타임 프로파일에 노출됩니다. #75253 - Iceberg 및 Delta Lake 외부 테이블에 대한 파티션 필터 요구 사항과 파티션 수 제한 지원을 추가했습니다(이전에는 Hive, Hudi, Paimon에서만 사용 가능). #75790
TABLE SAMPLE과 히스토그램ANALYZE에서 1% 미만의 샘플링 비율을 지원하여, 계산된 비율이 0으로 잘리는 대용량 테이블에서의 실패를 수정했습니다. #74551jemalloc_confBE 구성 항목을 추가하여 jemalloc 런타임 옵션을information_schema.be_configs를 통해 확인할 수 있습니다. #75344- Shared-nothing 모드에서 Primary Key 컴팩션 중 보유된 청크 용량을 해제하여 메모리 사용량을 줄이는
compaction_chunk_reset_memory_tracker_threshold_percentBE 구성을 추가했습니다. #75091 - staros를 v4.1.1로 업그레이드했습니다. 재시작 간
datacache.enable영속화, 워커 그룹별 샤드 웜업 타임아웃 재정의, 개선된 S3 재시도 지터가 포함됩니다. #75204 - SQL 문자열에 자격 증명 마커가 없을 때 정규식 스캔을 건너뛰어 감사 핫 패스의 SQL 자격 증명 마스킹을 최적화했습니다. #74812
- Parquet 스캐너의 표현식 기반 온디맨드 지연 컬럼 로딩이 다중 분기
OR쿼리에서 불필요한 I/O를 줄입니다. #74886 ds_hll_count_distinct/DataSketchesHll이 이제 순서 의존적인 HIP 추정기 대신 복합(composite) 추정기를 사용하여 안정적인 카디널리티 추정치를 생성합니다. #75053
보안
- [CVE-2026-45416] [CVE-2026-44249] [CVE-2026-45673] SNI 핸들러 힙 고갈(DoS), IPv6 서브넷 필터 우회, DNS 캐시 포이즈닝을 수정하기 위해 Netty를 4.1.135.Final로 업그레이드했습니다. #74668
- [CVE-2026-54512] [CVE-2026-54513] 두 가지 역직렬화 취약점을 수정하기 위해
jackson-databind를 2.21.4로 업그레이드했습니다. #75373 - [GHSA-2r2c-cx56-8933] [GHSA-47qp-hqvx-6r3f] 인증되지 않은 Telnet 서버 DoS 취약점을 해결하기 위해 Hadoop 전이 의존성에서
org.jline:jline-remote-telnet을 제외했습니다. #75066 - [CVE-2026-39822] pprof 바이너리의 취약점을 수정하기 위해 pprof 프리빌트를 업데이트했습니다. #76248 #74669
- 술어 값의 단일 인용부호가 리터럴 경계를 벗어날 수 있었던
information_schema.task_runs의 SQL 인젝션을 수정했습니다. #75520 tencent.cos.access_key,tencent.cos.secret_key,iceberg.catalog.jdbc.password가 이제SHOW CREATE CATALOG출력에서 마스킹됩니다. #74696- 입력이 잘린 퍼센트 이스케이프 시퀀스로 끝날 때
url_decode에서 발생하는 범위 초과 읽기를 수정했습니다. #75139 HyperLogLog::deserialize가 범위를 벗어난SPARSE레지스터 인덱스를 허용하여 잘못된 입력에서 힙 메모리를 손상시키고 BE를 크래시시킬 수 있는 문제를 수정했습니다. #75521bar()가 음수 너비 값을 거부하지 않아 무제한 문자열 증가와 BE 메모리 고갈을 허용하던 문제를 수정했습니다. #75143
버그 수정
다음 이슈들이 수정되었습니다:
add_files가 Iceberg 파일 경계를 논리적 타입 값 대신 Parquet 물리적 인코딩 바이트로 채워, 잘못된 파일 수준 min/max 프루닝(예:DECIMAL컬럼)을 유발하는 문제. #69207- 입력 목록이 불변
List.of(...)로 구성된 플랜 노드를 순회할 때ApplyTuningGuideRule이UnsupportedOperationException을 발생시키는 문제. #70785 INSERT OVERWRITE2단계 재계획이 첫 번째 계획 세션의 오래된 람다 인자 컬럼 참조 ID를 생성하여expr_type does not match slot_type오류를 유발하는 문제. #73273- GIN(역색인) 인덱스가 있는 테이블에서 부분 업데이트 시 GIN 인덱스 컬럼이 업데이트에서 생략되면 쿼리가 무한히 멈추거나 실패하는 문제. #73773
- 레이크 PCU(부분 컬럼 업데이트)가 rowset 스키마와 태블릿 스키마 간 스키마 드리프트 발생 시 크래시하거나 데이터를 조용히 손상시키는 문제. #74005
- 외부 Iceberg 테이블에 여러 스키마 절을 결합한
ALTER TABLE이 각 절 디스패치마다 이전에 대기 중이던 모든 작업을 잘못 재실행하는 문제. #74036 - 파티션 플러시와 리소스 그룹 취소가 교차할 때
num_rows스냅샷이 실제 청크 행 수를 초과하면PartitionedSpillerWriter가SIGSEGV로 크래시하는 문제. #74081 - BE 신호 초기화에서 SIGPIPE가 무시되지 않아 시작 중(일반적으로 배포 직후) BE 프로세스가 예기치 않게 종료될 수 있는 문제. #74424
- 행 범위 필터링으로 struct VARCHAR 서브필드 채우기가 건너뛰어졌을 때 Parquet 임시 딕셔너리 코드 컬럼이 상위 계층으로 누출되어 타입 불일치를 유발하는 문제. #74452
SELECT ... INTO OUTFILE이 감사 로그에 실제 내보낸 행 수 대신ReturnRows=0을 기록하는 문제. #74467- 락 타입 불일치로
TabletChecker.doCheck()가blockingAddTabletCtxToScheduler에서IllegalMonitorStateException을 발생시켜 전체 검사 라운드가 조용히 중단되는 문제. #74596 information_schema.COLUMNS가DATETIME_PRECISION에 대해 항상NULL을 반환하여, 해당 필드에서 컬럼 크기를 파생하는 MySQL 프로토콜 클라이언트가 동작하지 않는 문제. #74623- 쿼리가 서로 다른 데이터베이스 또는 카탈로그에 걸쳐 동일한 비정규화 이름의 두 테이블을 조인할 때 MV 리프레시가
Duplicate key로 실패하는 문제. #74730 - 특정 조건에서 스필 가능한 해시 조인 프로브가 크래시하는 문제. #74978 #75140
- Iceberg
truncate및bucket변환 함수가 너비 또는 버킷 수 인자가 0일 때SIGFPE로 BE를 크래시시키는 문제. #74998 mod()와pmod()가 피제수가TYPE_MIN이고 제수가-1일 때SIGFPE로 BE를 크래시시키는 문제. #74980histogram()이bucket_num이 0 또는 음수일 때SIGFPE로 BE를 크래시시키는 문제. #75041encode_fingerprint_sha256이 모든 입력 행이NULL일 때SIGSEGV로 크래시하는 문제. #75042- 단일 문자 와일드카드
_를 포함하는LIKE패턴이 GIN 역색인을 통해 평가될 때 잘못된 결과를 반환하는 문제. #75551 - GIN 역색인에 대한 AND 전용
MATCH쿼리가 대상 세그먼트가 비어 있을 때 잘못된 오류를 반환하는 문제. #75161 - CLucene
match_all쿼리가 잘못된 결과를 반환하는 문제. CLucene 의존성을 업그레이드하여 해결했습니다. #75180 - 벡터 인덱스 재작성이 합성 거리 컬럼을 공유 테이블 스키마에 직접 등록하여, 같은 테이블에 대한 관련 없는 동시 쿼리에서
Multiple entries with same key오류를 유발하는 문제. #74785 - 조인 재정렬 프루닝이 스캔 술어에서 여전히 참조되는 컬럼을 프루닝하여 통계 추정이
missing statistic of col을 발생시키는 문제. #74791 avg(DISTINCT x)가 sum/count 머티리얼라이즈드 뷰를 통해 잘못 재작성되어DISTINCT가 조용히 제거되고 중복이 있을 때 잘못된 결과를 반환하는 문제. #75071ALTER TABLE ... MODIFY COLUMN ... AFTER <nonexistent_col>이 명확한 시맨틱 오류 대신 내부NullPointerException을 발생시키는 문제. #75073COLUMNS TERMINATED BY절이 없는 작업에 대해SHOW CREATE ROUTINE LOAD가 첫 번째 로드 설명 절 앞에 불필요한 선행 쉼표를 출력하는 문제. #75522- CTE가 있는
SECURITY INVOKER뷰에서 CTE 이름이 실제 테이블 참조로 오인되어 권한 검사가 NPE로 실패할 수 있는 문제. #74813 - date/datetime 경계 리터럴 이동이 표현 가능한 범위를 초과할 때(예:
<= '9999-12-31')ReduceCastRule이SemanticException으로 쿼리 계획을 중단하는 문제. #75036 - 조인 조건이 null-safe-equal(
<=>) 분리항(disjunct)을 사용할 때SplitJoinORToUnionRule이 중복 행을 출력하는 문제. #75038 - 다중 테이블 외부 쿼리의 병렬 메타데이터 준비 스레드 간에 공유된
Tracers가enable_profile=true에서IllegalStateException을 유발하는 문제. #74746 ChunksPartitioner의 파티션 소비자 오류가 조용히 무시되어, 파티션 TopN이 오류를 표시하지 않고 부분적이거나 잘못된 결과를 반환할 수 있는 문제. #74693- FE 호출자의 타임아웃이 경과한 후에도 BE vacuum 태스크가 좀비로 계속 실행되어
RELEASE_SNAPSHOT스레드 풀을 고갈시키고 vacuum 처리량을 붕괴시키는 문제. #74694 - autovacuum 경쟁 조건으로 진행 중인 트랜잭션보다 1 큰
minActiveTxnId가 일시적으로 계산되어, BE가 여전히 필요한 결합 트랜잭션 로그를 삭제하고 퍼블리시가 영구적으로 멈추는 문제. #74906 - FE EOS 취소와 BE 2단계 배포 간의 경쟁 조건으로 성공적으로 완료된 쿼리가 취소된 것으로 잘못 표시되는 문제. #75009
- 집계 TopN 런타임 필터 빌드 키가
ConstColumn일 때AggTopNRuntimeFilterUpdaterImpl에서 BE가SIGSEGV로 크래시하는 문제. #74809 #74941 - 모든 non-null 배열이 비어 있을 때
array_map/transform이NULL행을 조용히 제거하고 잘못된 행 수를 반환하는 문제. #75141 - 2^64를 초과하는
LARGEINT/DECIMAL128리터럴이 JIT 컴파일된 표현식에서 조용히 64비트로 잘리는 문제. #75137 - UTF-8 문자열 함수(
split,split_part,str_to_map)가 빈 구분자와 함께 마지막 문자에 잘리거나 유효하지 않은 멀티바이트 선행 바이트가 있을 때 문자열 끝을 넘어 읽는 문제. #75068 parse_json()이ALLOW_THROW_EXCEPTIONSQL 모드에서도 잘못된 JSON에 대해 쿼리를 실패시키는 대신 조용히NULL을 반환하는 문제. #74976- strict 모드 숫자 축소 캐스트가 슬롯 데이터가 정의되지 않은
NULL행에서 잘못 오버플로 오류를 발생시키는 문제. #74903 - 0이 아닌 초 미만 부분을 가진 1970년 이전 Parquet
INT64타임스탬프가 음수 절삭 나눗셈 나머지로 인해 잘못된 값으로 디코딩되는 문제. #75207 - 1970년 이전 ORC
TIMESTAMP값의 초 미만 구성 요소가 로드 시 손실되는 문제. #75432 - 1970년 이전 및 초 미만 경계에 대해 ORC 스트라이프 min/max 타임스탬프 통계가 잘못 디코딩되어 데이터 파일이 잘못 프루닝되는 문제. #75543
ARRAY,MAP또는STRUCT컬럼 내부에 중첩된INT96Parquet 타임스탬프가 로드 시 세션 시간대 오프셋 하나를 잃는 문제. #74868- Parquet
UINT_32값이BIGINT컬럼으로 로드될 때 제로 확장 대신 부호 확장되어, 상위 비트가 설정된 부호 없는 정수에 대해 조용히 음수 값을 저장하는 문제. #75002 HiveDataSource소멸자가_scanner_ctx(해당 노드를 참조하는 술어를 보유)보다 먼저_pool(및 그Expr노드)을 소멸시켜 heap-use-after-free를 유발하는 문제. #74818- OpenX SerDe를 사용하는 gzip 압축 JSON Hive 외부 테이블을 읽을 때 멀티바이트 UTF-8 문자가 8MB 압축 해제 버퍼 경계에 걸치면
UTF8_ERROR로 실패하는 문제. #74827 - 클라이언트가 무조건 접근하는 JSON 필드가 누락되어 비HNS 계정에서 ADLS2
ListPaths가SIGSEGV로 크래시하는 문제. #75166 - 여러
UNNEST연산자가 동일한 입력 배열 컬럼을 공유하고 서로 다른 서브필드를 소비할 때unnest가 크래시하거나 잘못된 결과를 반환하는 문제. #75012 #75445 #76002 unnest실행 중query_mem_limit이 강제되지 않아, 대용량 배열에 대한unnest가 쿼리를 실패시키는 대신 BE를 OOM으로 종료시킬 수 있는 문제. #75179RANK경계를 가진TopN이 rank 제한이 정확히 청크 경계에 위치할 때 행 하나를 누락하는 문제. #75045PushDownDistinctAggregateRule이후의 컬럼 프루닝이 빈 분석(윈도우) 연산자를 생성하여 계획 또는 실행 오류를 유발할 수 있는 문제. #74810EliminateSortColumnWithEqualityPredicateRule이 전역 제한을 설정하지 않고 스캔 연산자에만 행 제한을 설정하여, 동시 실행 시 제한된 서브쿼리에 대한COUNT(*)가 예상보다 많은 행을 반환하는 문제. #74983- 레이크 Primary Key 영구 인덱스 재빌드가 세그먼트 범위 모드에서 잘못된 세그먼트 반복자 위치를 사용하여 키 범위 필터가 잘못 적용되는 문제. #74887 #75206
DROP PERSISTENT INDEX가 테이블 락 없이rebuildPindexVersion을 수정하고,RestoreJob이 복원 후 DB READ 락만으로 MV 베이스 테이블 정보를 변경하며,FinalizeCreateTableAction이 반복자 생성에 걸쳐 DB 수준 락을 전달하는 문제. #74968- 데이터베이스별 락 획득이 루프 중간에 예외를 발생시키면
dumpImage가 전역 메타 락을 무기한 점유할 수 있는 문제. #75488 - 다중 문 Stream Load가 트랜잭션당
TxnStateCallbackFactory항목 하나를 누수시켜 무제한으로 증가하고 결국 FE 힙을 고갈시키는 문제. #75188 - 카탈로그, 데이터베이스, 테이블 또는 파티션 이름이 길 때 히스토그램 통계에 대한
information_schema.task_runs행이primary_key_limit_size(128바이트)를 초과할 수 있는 문제. #75735 - BE JVM 메트릭이 유효하지 않은 Prometheus
# TYPE라인(메트릭 이름 내부에 레이블 집합)을 출력하여 Prometheus가 전체 스크레이프를 중단하는 문제. #75240 - Shared-data 테이블에서
SHOW PARTITIONS와information_schema.partitions_meta가 각 파티션의 실제 버킷 수 대신 모든 물리 파티션의 버킷 수를 테이블 수준 기본값으로 보고하는 문제. #75734 - Shared-data(
CLOUD_NATIVE) 테이블에서SHOW PROC '.../index_schema/<id>'가 모든 롤업 인덱스에 대해 베이스 테이블 스키마를 반환하는 문제. #76069 ALTER TABLE ... MODIFY COLUMNno-op 절이 경량 주석 경로로 잘못 라우팅되어 배치ALTER TABLE문에서MODIFY COLUMN COMMENT can not be combined with other alter operations오류를 유발하는 문제. #75736- 잘못된
isKey/aggregationType정규화로isCommentOnlyModification이 키/집계 컬럼을 주석 전용 변경으로 오인할 수 있는 문제. #75545 ALTER VIEW가 순환 뷰 정의를 커밋하여 이후SELECT가StackOverflowError를 발생시킬 수 있는 문제. #75033accept()가 여전히 이전 청크에 대한 포인터를 보유하는 동안 다운스트림 소비자가 해당 청크를 변경하면OrderedPartitionExchanger가 heap-use-after-free를 유발하는 문제. #75279- 빌드 측의 슬롯 디스크립터는 non-nullable이지만 런타임 상태가 nullable일 때 NLJoin이 크래시하는 문제. #75343 #75788
- struct 필드 이름이 파싱 가능한 JSON 경로가 아닐 때
CAST(json/variant AS struct)가 프래그먼트 준비 시 BE를 크래시시키는 문제. #75355 - 중첩 딕셔너리 표현식의 딕셔너리 디코딩이 생산자와 소비자 프래그먼트 간에 호환되지 않는 딕셔너리 변환을 생성하여 런타임에
Dict Decode failed오류를 유발할 수 있는 문제. #75246 get_rowset_by_version이nullptr을 반환하고gtid비교가 null 검사 앞에 위치하여 스키마 변경이 null 포인터 역참조로 크래시하는 문제. #74855- 스냅샷 관리자가 부모 태블릿 메타데이터 회수 여부를 결정할 때 리샤드 작업을 고려하지 않아, 태블릿 분할/병합 후 Shared-data 클러스터 스냅샷을 복원할 수 없게 되는 문제. #75638
- 파일 번들링 vacuum이 형제 태블릿의 0행 번들 세그먼트를 비공유로 잘못 표시하여, 다른 태블릿이 여전히 참조하는 동안 번들 파일이 삭제되는 문제. #75689
- Shared-data 테이블 컴팩션 퍼블리시가 컴팩션 트랜잭션 시작 후 표시된 롤업/동기 MV 인덱스를 누락하여 번들 파일에 해당 인덱스가 없게 되는 문제. #76105
- 태블릿 리샤드 중 컴팩션이 중단될 때 Shared-data 영구 인덱스 컴팩션이 패스스루로 재사용된 SSTable 파일을 잘못 삭제하는 문제. #75726
NOT NULL에서 nullable로의 flat-JSON 컬럼 스키마 진화가 컴팩션 읽기 경로에서CHECK크래시를 유발하는 문제. #75680- nullable 컬럼에 대한
count_combine이 스트리밍 사전 집계 패스스루 경로에서SIGSEGV로 BE를 크래시시키는 문제. #75298 - JDK 21에서 제거된 리플렉션 기반
DirectByteBuffer생성자 조회로 인해 JDK 21+에서 Java UDF 로드가 실패하는 문제. #75666 - 파서가
CREATE TABLE AS SELECT에서ENGINE절을 지원하지 않아 Unified 카탈로그(Hive 메타스토어)로의CTAS가 항상 실패하는 문제. #75771 JoinTuningGuide피드백 기반 조인 재빌드가predicateCommonOperators를 잃어, 공통 서브 표현식 재사용이 있는 플랜에서InputDependenciesChecker검증이 실패하는 문제. #75773- 버전 목록이 빌드되기 전에 빈 서브파티션이 프루닝된 서브파티션 테이블에서 쿼리 캐시 정규화가
Preconditions.checkState로 크래시하는 문제. #75789 replayFromJson이 레거시 별칭으로 저장된 세션 변수를 조용히 건너뛰어 쿼리 덤프 리플레이가 기본값으로 폴백하는 문제. #75813- 행 그룹 시작 오프셋의 중복 계산으로 인해 Parquet 행 그룹이 두 개 이상인 데이터 파일에서 Iceberg
_row_id가상 컬럼이 잘못된 값을 반환하는 문제. #75758 - Iceberg DELETE/UPDATE 플래너가 물리 테이블 식별자 대신 합성 테이블 ID로 매칭하여 대상 스캔 노드를 찾지 못하고, 베이스 스냅샷 ID와 충돌 감지 필터를 잃는 문제. #76013
PipelineExecutorSet::start()가 호출되기 전에cancel_plan_fragmentRPC가 도착하면FragmentContext::set_final_status가SIGSEGV로 크래시하는 문제. #75030FragmentExecutor가 여전히 프래그먼트를 해제하는 동안QueryContext가 회수되어ResGuard::reset()에서 heap-use-after-free를 유발할 수 있는 문제. #74978StringSearch::_pattern이 초기화되지 않아 기본 생성된search()가 초기화되지 않은 포인터를 역참조할 수 있는 문제. #75614DATETIME마이크로초가 JVM 기본 로케일의 숫자 집합으로 렌더링되어, 아랍어나 페르시아어 등의 로케일에서 비ASCII 숫자가 생성되고 태블릿 사전 분할의 경계 값 파싱이 실패하는 문제. #75001INSERT OVERWRITE후 태블릿 통계가 갱신되기 전에 파티션 행 수가_statistics_.column_statistics에 0으로 기록되어 옵티마이저의 파티션 카디널리티 추정이 붕괴될 수 있는 문제. #74801- 전역 설정이 비활성화된 경우
enable_statistic_collect_on_first_load테이블 수준 재정의로 첫 로드 통계 수집을 활성화할 수 없는 문제. #74794 - 유니언 분기에 입력 행이 없을 때
PushDownNonGroupedAggregateBelowUnion이 non-nullable로 선언된 타입에 nullable 출력을 생성하여 BECHECK실패를 유발하는 문제. #76101
4.1.2
출시일: 2026년 6월 18일
동작 변경
- 사용자에게 권한이 없는 데이터베이스에 연결하면 이제 ERROR 2013으로 연결을 닫는 대신 올바른 MySQL 오류 패킷을 반환합니다. #70072
SHOW FUNCTIONS가 이제 함수 수준 권한으로 함수를 볼 수 있지만 함수 생성 범위 권한이 없는 사용자에게 UDF 파일 및 오브젝트 파일 경로를***로 마스킹합니다. #73425- 외부 카탈로그에서 Hive 뷰를 조회할 때 Ranger 행 필터 및 컬럼 마스킹 정책이 이제 올바르게 적용됩니다. #73265
ALTER TABLE ... ADD COLUMN ... DEFAULT current_timestamp가 이제current_timestamp생성 표현식을 올바르게 보존합니다.DESCRIBE와information_schema가 이제 백필 시점의 리터럴 대신 표현식을 반영합니다. #73455information_schema.loads의 로드 시간 필터링이 세션 시간대가 UTC+8과 다른 클러스터에서 더 이상 필터 경계를 이동시키지 않습니다. 로드 시간이 이제 FE–BE 경계에서 UTC epoch 밀리초로 교환됩니다. #73365connector_max_split_size세션 변수가 이제 항상 기본값을 사용하는 대신 Paimon 스캔 스플릿 계산에 올바르게 적용됩니다. #71756pipeline_enable_large_column_checker가 이제 기본적으로 활성화됩니다. #72798- Hive 파티션 통계가 더 이상 타이머에 따라 키별로 자동 갱신되지 않습니다. 파티션 통계는 이제 명시적인
refreshTable()호출 중에만 갱신되어, 대규모 파티션 테이블에서 HMS 부하를 줄입니다. #73563 - Iceberg 또는 외부 카탈로그 베이스 테이블에 스키마 드리프트(컬럼 타입 변경, 컬럼 삭제 또는 테이블 삭제)가 발생하면, 의존하는 머티리얼라이즈드 뷰가 이제 NULL 행이나 불명확한 오류를 조용히 생성하는 대신 다음 리프레시 시 비활성으로 표시됩니다. #73770
- Iceberg 커넥터가 이제
AND복합 술어에서 한쪽만 변환 가능할 때 전체 술어를 버리는 대신 변환 가능한 쪽을 부분적으로 푸시다운하여, 파티션 프루닝과 데이터 스키핑을 개선합니다. #70293 - 명시적 트랜잭션
COMMIT이 이제 데이터베이스 쓰기 락을 위해query_timeout초(밀리초가 아님)까지 올바르게 대기하여, 짧은 동시 쓰기 활동 중 발생하는 잘못된 락 타임아웃 실패를 방지합니다. #73549 - IVM 리프레시가 이제 필터링된 행을 조용히 제거하는 대신 strict 로드 필터 오류를 호출자에게 표시합니다. #73938
count_combine(nullable_col)이 이제COUNT(col)시맨틱과 일치하도록 NULL 행을 올바르게 제외합니다. 이전에는COUNT(<nullable column>)을 기반으로 하는 증분 MV가 과다 집계된 수를 머티리얼라이즈했습니다. #74029SHOW ALTER TABLE COLUMN이 이제 클라우드 네이티브(Shared-data) 테이블에서file_bundling,enable_persistent_index등의 속성에 대해ALTER TABLE ... SET (...)으로 트리거된 비동기 메타데이터 전용 alter 작업도 표시합니다. #74198- 집계 함수를 참조하는
HAVING절을 가진 증분 MV를 생성하면 이제 첫 리프레시 시 내부 플랜 오류를 생성하는 대신CREATE시점에 명확한 오류로 실패합니다. #74054 - IVM이 이제 증분 머티리얼라이즈드 뷰에서
MIN/MAX(DECIMAL)집계 함수를 지원합니다. #73969 - IVM 적응형 리프레시가 이제 첫 델타 트레이트가 이미
mv_max_rows_per_refresh를 초과할 때 델타 윈도우를 올바르게 제한하여, 전체 백로그가 한 번의 태스크 실행에서 리프레시되는 것을 방지합니다. #74464 - GROUP BY만 있는 증분 MV(예:
SELECT k FROM t GROUP BY k)가 이제__ROW_ID__를 VARCHAR로 올바르게 인코딩하여 두 번째 리프레시 시 크래시를 수정했습니다. #74030
개선 사항
- Paimon 뷰를 지원합니다.
CREATE/REPLACE/DROP,SHOW/DESC, 외부 카탈로그에서의 Paimon 뷰 조회가 포함됩니다. Paimon 뷰 내부의 테이블 참조가 이제default_catalog대신 Paimon 카탈로그를 기준으로 해석됩니다. #56058 #70217 - 스키마 드리프트나 복잡한 중첩 타입이 있는 파일을 읽을 때 안정적인 스키마 제어를 위해
FILES()에서 명시적schema매개변수를 지원합니다. #72033 get_query_profile()이 이제 연결된 FE뿐만 아니라 모든 FE 노드에서 쿼리 프로파일 정보를 가져옵니다. #71123- 현재 실행 중인 쿼리의 UUID를 반환하는
query_id()내장 함수를 추가했습니다. #73621 - Shared-data 모드의
CREATE/ALTER STORAGE VOLUME이 이제 메타데이터를 영속화하기 전에 스토리지 위치 접근성(자격 증명 및 엔드포인트)을 검증하여, 잘못된 구성에서 조기에 실패합니다. #70053 - BE에서 AWS S3 자격 증명에 대한
WebIdentity토큰 제공자 지원을 추가하여, 기존 FE의AWS_S3_USE_WEB_IDENTITY_TOKEN_FILE지원과 일치시켰습니다. #69966 txnlog누락, 세그먼트 손실 또는 느린 원격 I/O로 퍼블리시가 영구적으로 차단될 때 Shared-data 테이블에서 멈춘COMMITTED트랜잭션을 해제하는ADMIN SKIP COMMITTED TRANSACTION명령을 추가했습니다. #73553information_schema.tables_config가 이제table_name술어를 FE로 푸시다운하여 단일 테이블 조회의 오버헤드를 크게 줄입니다. #73210- 연결 인트로스펙션 중 MySQL 8 스키마를 검사하는 BI 도구 및 JDBC 드라이버와의 호환성을 개선하기 위해
information_schema테이블에 누락된 MySQL 8 컬럼을 추가했습니다. #73370 false로 설정 시 세션별 변수를 재정의하는 클러스터 전체 kill switch로enable_pipeline_event_schedulerBE 구성을 추가했습니다. #73264- 여러 개의 넓은 문자열 컬럼이 있는 테이블에서 통계를 수집할 때 쿼리별 메모리 피크를 줄이기 위해 통계 수집용 옵트인 넓은 문자열 컬럼 격리를 추가했습니다. #73258
- 느린 락 로깅이 이제 이벤트별 속도 제한과 구성 가능한 스택 캡처 제어를 지원하여, 높은 락 경합 시 JVM safepoint 지연을 방지합니다. #73647
- MV 리프레시 로그 항목이 이제 접두사에 데이터베이스 이름을 포함하여, 여러 스키마에 동일한 MV 이름이 존재하는 멀티 테넌트 배포에서 로그 라인을 구분할 수 있습니다. #73521
enable_profile_logFE 구성이 이제 변경 가능하며 FE 재시작 없이ADMIN SET FRONTEND CONFIG를 통해 런타임에 토글할 수 있습니다. #73894- 로드 프로파일(Stream Load, Routine Load, Broker Load, merge-commit 로드)을
fe.profile.log에 기록하는enable_print_load_profile_to_logFE 구성(기본값false)을 추가하여, 쿼리 프로파일 급증으로 인메모리 저장소에서 제거되더라도 보존됩니다. #74150 SHOW ROUTINE LOAD가 이제JobProperties에 Java 객체 참조 대신 컬럼 매핑을 올바르게 렌더링합니다. #74199CachingIcebergCatalog가 이제 카탈로그 수준 락 대신 테이블 수준 락을 사용하여, 동시에 활성화된 테이블이 많은 카탈로그에서 리프레시 직렬화 지연을 줄입니다. #73079- 메타 스캔(백그라운드 통계 수집)이 이제
ADD COLUMN,DROP COLUMN,RENAME COLUMN,REORDER COLUMN스키마 변경을 변경 후 세그먼트 파일에서 not-found 오류로 실패하는 대신 정상적으로 처리합니다. #72901 - 샘플 기반 태블릿 사전 분할이 이제 다중 파티션 range 분산 테이블과 Broker Load를 지원하여, 기존 데이터 계층 기준선 없이 첫 로드 병렬성을 제공합니다. #73101 #73912 #74048
- MySQL 결과 직렬화가 더 이상 행별 가상 디스패치를 사용하지 않습니다. 타입이 지정된 컬럼 라이터가 청크당 한 번 빌드되어, 넓거나 큰 결과 집합의 직렬화 오버헤드를 줄입니다. #66316
DATETIME/DATE에서 문자열로의 캐스트가 이제 출력 버퍼에 직접 기록하여 행별 힙 할당을 제거했습니다. #73801- 쿼리 통계 병합 경로에서
SpinLock을 lock-free 병렬 맵으로 대체하여, 워커가 중간 또는 최종 통계를 전송할 때 대규모 클러스터의 CPU 사용량을 줄였습니다. #73796 - 집계 해시맵 및 해시셋 프리페치가 이제 L2 캐시 상주 여부에 따라 제어되어, 버킷 배열이 L2에 들어갈 때 발생하는 4–9%의 성능 저하를 피합니다. 프리페치 거리는 이제 구성 가능합니다. #73943
- Shared-data Primary Key 테이블의 경량 컴팩션 퍼블리시를 위한 세그먼트별
.lcrm읽기를 파이프라인화하여 순차적 오브젝트 스토리지 왕복을 줄입니다. #73992 - Shared-data 모드의 콜드 PK 인덱스 재빌드 스캔이 이제 세그먼트 전반에서 병렬화되어, 세그먼트 읽기가 원격 I/O에 제한될 때 재빌드 시간을 줄입니다. #74249
- 내부 쿼리(통계 수집, 태스크 실행, MV 리프레시)가 이제
SHOW PROC '/current_queries'에 표시되며KILL QUERY로 종료할 수 있습니다. #74488 - S3 스로틀링 모니터링과
lake_vacuum_min_batch_delete_size튜닝을 위한 레이크 vacuum 배치 크기 및 재시도 횟수 bvar 메트릭을 추가했습니다. #74112 - 휴지통 증가가 FE 힙에 압박을 주기 전에 이를 표시하기 위해
CatalogRecycleBin크기 게이지 메트릭을 추가했습니다. #74440 LIST파티션 테이블이 이제 range 파티션 테이블용으로 설계된 최신 N개 휴리스틱을 적용하는 대신OlapTableSink에서 모든 파티션을 열어, 증분 open RPC 오버헤드를 줄입니다. #74099FILES()또는 Broker Load를 통해LARGE_LIST및FIXED_SIZE_LISTArrow 타입을 JSON 컬럼으로 로드하는 것을 지원합니다. #73714 #73718- Shared-data 테이블에서 merge-commit(
FRONTEND_STREAMING) 로드에 대한 결합 트랜잭션 로그와 파일 번들링을 지원하여 다른 로드 유형과 일치시켰습니다. #74460 - FE 재시작 없이 레이크 퍼블리시 단계 분석 경고 임계값을 제어하는 변경 가능한 FE 구성
slow_publish_partition_log_threshold_ms(기본값 3000ms)를 추가했습니다. #74043
보안
- [CVE-2026-43869] 부적절한 인증서 호스트 검증을 해결하기 위해
libthrift를 0.23.0으로 업그레이드했습니다. #73243 - [CVE-2026-41293] HTTP/2 요청 헤더 검증을 해결하기 위해 Apache Tomcat을 9.0.118로 업그레이드했습니다. #73797
- [CVE-2026-45416] [CVE-2026-44249] [CVE-2026-45673] SNI 핸들러 힙 고갈(DoS), IPv6 서브넷 필터 우회, DNS 캐시 포이즈닝을 해결하기 위해 Netty를 4.1.135.Final로 업그레이드했습니다. #74668
- Go 표준 라이브러리 보안 수정을 포함하기 위해 pprof 프리빌트 바이너리를 Go 1.25.11로 업그레이드했습니다. #73545 #74669
버그 수정
다음 이슈들이 수정되었습니다:
- URL에
host:port패턴 외부에:이 포함된 경우parse_url()이 잘못된 호스트를 반환하는 문제. #63542 - 딕셔너리 변환된 표현식이
f(null) = null이 성립하지 않는 표현식(예:IF(col = '1', NULL, 'ok'))에 대해서도 이를 잘못 가정하는 문제. #69376 - 트랜잭션 Stream Load가 사용자가 지정한 타임아웃 대신 기본 RPC 타임아웃을 사용하여 조기 타임아웃을 유발하는 문제. #67584
- identity 컬럼에 NULL 값이 있는 Iceberg equality delete 파일이 조인 술어에서
NULL = NULL이 UNKNOWN으로 평가되어 일치하는 행을 삭제하지 못하는 문제. #67321 INJECTED파티션 프로젝션 컬럼이 있는 테이블의 오류 메시지가 이제 문제를 유발하는 컬럼을 표시하여 더 명확해졌습니다. #68052- insert-overwrite 작업이 인식되지 않아 insert-only ACID Hive 테이블에 대한 쿼리가 예상보다 많은 행을 반환하는 문제. #71460
- 동시 읽기 중 Iceberg 메타데이터 항목이 고정될 때 디스크 캐시가 구성된 용량을 초과하는 문제. #71651
- 외부 카탈로그 조회 시 Paimon primary key 컬럼이 non-nullable로 잘못 표시되는 문제. #71660
- 여러
ARRAY_AGG(DISTINCT <const>)입력이 있는 쿼리에서MultiDistinctByMultiFuncRewriter가 동일한 규칙을 반복 적용하여 옵티마이저가 타임아웃되는 문제. #70605 DATE/TIMESTAMP키워드 없이 푸시다운된 Oracle JDBC 날짜 술어가 NLS 형식 오류를 유발하는 문제. #71412- 파티션 TopN이 자식 연산자에서 필요한 출력 컬럼을 잃을 수 있는 문제. #72848
- 파티션 진화가 있는 Iceberg 테이블에 비파티션 MV를 생성할 수 없는 문제. #72285
information_schema.be_cloud_native_compactions에서 병렬 서브태스크의 컴팩션 태스크 통계가 덮어쓰여 손실되는 문제. #72331- 동기 MV에 대한
SHOW CREATE MATERIALIZED VIEW가 "Table is not found"로 실패하는 문제. #73396 - 문(statement)
.log파일이 4세그먼트 경로에 위치할 때 스키마 변경 중 레이크 퍼블리시 다중 문 트랜잭션이 교착 상태에 빠지는 문제. #73423 - 정렬 병합 제공자 오류가 프래그먼트 컨텍스트로 전파되지 않아 쿼리가 조용히 실패하는 문제. #73337
- 장기 실행 팔로워 FE에서
ConnectorTableId가int에서 음수 값으로 오버플로되어 Iceberg 및 Hive 쿼리가 혼란스러운 "Invalid table type" 오류로 실패하는 문제. #73344 - 빈 optimize 절(분산 또는 파티션 스펙 없음)을 가진
ALTER TABLE이 잘못 파싱되어 FE 리플레이 시 테이블의 기본 분산을 손상시킬 수 있는 문제. #73352 AZURE_PATH_KEY가 유효한StorageVolumeMgr매개변수로 인식되지 않아 ADLS2 Shared-data 재해 복구 중 FE 시작이 실패하는 문제. #73509- 옵티마이저가 중첩 타입의 일부를
UNKNOWN_TYPE으로 프루닝했거나 nullable array, map, struct 스키마가 사용될 때 Avro 복합 타입 디코딩이 실패하는 문제. #73474 - 두
NullableColumn이 동일한NullColumn객체를 공유하여 COW 컬럼 변경 최적화가map_apply및 유사 함수에서 크래시를 유발하는 문제. #73480 - 제공자가 FE에서 즉시 인스턴스화되어 커스텀
LocationProvider가 있는 Iceberg 테이블의SELECT쿼리가ClassNotFoundException으로 실패하는 문제. #73482 - JDBC
getTable()이 캐시 미스마다 추가getTableComment()왕복을 수행하여 intensive 계획 단계 락 보유 시간을 늘리고 동시 DDL을 차단하는 문제. #73488 - 중첩 MV가
FULL또는UNKNOWN적시성을 반환할 때 중첩 MV 리프레시가NullPointerException을 발생시키는 문제. #73644 - 느린 MySQL 클라이언트에 쿼리 결과를 전송하는 동안 FE 워커가 무기한 차단되는 문제. 결과 전송 경로가 이제 쓰기 타임아웃을 강제합니다. #73646
- V1 인코딩(Shared-nothing)에서 V2 인코딩(Shared-data) 클러스터로, 또는 두 Shared-data 클러스터 간에 Primary Key 테이블을 복제할 때 PK
.del파일이 트랜스코딩되지 않는 문제. #73649 #73958 VERSION_INCOMPLETE복구 중 활성 복제본을 추가하기 전에 오래된 복제본 참조가 제거되지 않아TabletInvertedIndex에 중복 복제본이 누적되는 문제. #73661REPLICATE_SNAPSHOT태스크와 파일별 복사 서브태스크가 동일한 스레드 풀을 공유하여 Shared-data 레이크 복제 파일 복사가 CN을 크래시시키는 문제. #73666- BE가 단위 카운터를
.000소수 접미사로 포맷할 때RuntimeProfileParser가NumberFormatException을 발생시키는 문제. #73683 - Shared-data PK 태블릿 분할에서 공유 세그먼트의 물리 rowid 인코딩이 잘못되어 잘못된
rss_rowid항목을 유발하는 문제. #73686 - range-colocate × 해시 분산 혼합
JOIN쿼리가 유효한 결과 대신Unknown error를 반환하는 문제. #73702 TimeUtils.longToTimeString이 고정 UTC+8 포매터를 사용하던 문제. 출력이 이제 세션time_zone을 따릅니다. #73619- 모든 값이
NULL이고 컬럼이 nullable 단항 함수 경로를 통과할 때 Decimal 타입 컬럼이 scale을 잃어 다운스트림 결과 타입을 손상시키는 문제. #73789 - 중첩 타입에 대한 JSON 부분 추가(partial-append)가 ASAN 크래시를 유발하는 문제. #73715
public역할의 권한 캐시가GRANT/REVOKE시 무효화되지 않아 만료될 때까지 오래된 권한이 유효하게 남는 문제. #73717- 서브 라이터에 추가된 데이터가 없을 때
FlatJson이 크래시하는 문제. #73730 - MV 자체에
HAVING술어가 있을 때 집계 MV 재작성이 잘못 적용되어 불완전한 결과를 반환할 수 있는 문제. #73610 - 병렬 병합 모드 진입 시 스필 라이터의
auto_flush플래그에 대한 데이터 경쟁으로 ARM에서 의도하지 않은 세그먼트 플러시가 발생하는 문제. #73616 - Routine Load 스케줄러가 Kafka 또는 Pulsar 파티션 메타데이터를 가져오기 위한 블로킹 BE RPC 중 작업별 쓰기 락을 보유하여 최대 33.6초의 락 보유 시간을 유발하는 문제. #73591
tablet_sched_disable_colocate_balance가 활성화된 경우 죽은 BE의 colocate 태블릿이HEALTHY로 잘못 보고되는 문제. #73550- MISSING(팬텀) 복제본 행이 있을 때
ADMIN SHOW REPLICA STATUS가 MySQL 결과 스트림의 동기화를 깨뜨려 클라이언트 멈춤이나 연결 끊김을 유발하는 문제. #74393 - Shared-data 모드에서 모든 sender의
openRPC마다 파티션별 코디네이터 클레임이 다시 기록되지 않아 일부 sender가 코디네이터 선출에서 누락되고combined_txn_log파일이 기록되지 않는 문제. #73962 _statistics_데이터베이스 또는 테이블이 삭제된 후_statistics_.pipe_file_list내부 테이블이 다시 생성되지 않는 문제. #73970TaskCleaner에 의해 강제 종료된 태스크 실행이 아카이브되지 않아information_schema.task_runs에서 흔적 없이 사라지는 문제. #74146RENAME TABLE과SWAP TABLE/SWAP MATERIALIZED VIEW가 데이터베이스 쓰기 락 대신 intensive 테이블 락만 보유하여, 동시 읽기 작업이 불완전한 중간 이름-테이블 매핑을 관찰할 수 있는 문제. #74100- PK 인덱스 컴팩션 출력 sstable이 태블릿 메타데이터 없이 열려 영구적인
metadata is null when loading delvec실패를 유발하는 문제. #74037 - 명시적 트랜잭션 내에서 같은 트랜잭션에서 이미 수정된 테이블을 대상으로 하는 부분 업데이트
INSERT가COMMIT시 데이터를 조용히 손상시키는 문제. #74344 - range 분산과 호환되지 않는
ALTER TABLE작업(스키마 변경, 정렬 키 변경)이 이제 메타데이터를 조용히 손상시키는 대신 실행 가능한 오류와 함께 거부됩니다. #74020 - 옵티마이저에서 타입이 일치하지 않는 자식을 가진 집계 함수가 잘못된 쿼리 결과를 유발하는 문제. #74159
- 예약 키워드 테이블 이름을 가진
ALTER ROUTINE LOAD가 파싱 불가능한origStmt를 기록하여 FE 재시작 후 컬럼 매핑이 손실되는 문제. #74188 - IVM
state_union호환성 검사가 중첩 타입(예:ARRAY<VARCHAR>)으로 재귀하지 않아ARRAY_AGGIMV에 대한CREATE MATERIALIZED VIEW가 실패하는 문제. #73627 - 스캔 범위가 완전히 필터링될 때 Parquet 임시 딕셔너리 코드 컬럼이 상위 계층으로 누출되어 다운스트림 타입 불일치를 유발하는 문제. #74452
- float와 integer가 혼합된
WHEN및 결과 타입을 가진CASE WHEN이 유효하지 않은 JIT IR을 생성하여 잘못된 결과나 크래시를 유발하는 문제. #74382 - JIT 컴파일 실패가
LLVMContext의 use-after-free를 유발하여 SIGSEGV가 발생하는 문제. #74396 - 백그라운드 통계 태스크가 세션
WAREHOUSE설정을 덮어써 동일 연결 컨텍스트의 후속 사용자 쿼리에 영향을 주는 문제. #74385 - 클러스터 스냅샷이 한 번도 성공적으로 완료되지 않은 경우
CatalogRecycleBin이 항목 삭제를 중단하여, 과중한INSERT OVERWRITE워크로드에서 FE 메모리가 무제한으로 증가하는 문제. #74379 - FE가 비PK 복제본의 버전 홀을 감지하지 못해 쿼리가 고정된
max_version을 가진 홀이 있는 복제본으로 영구적으로 라우팅되는 문제. #74408 MaterializedIndexMeta.updateSchemaBackendId(공유 읽기 락 하에서 변경되는HashSet)에 대한 데이터 경쟁이 항목 손실이나 집합 손상을 유발할 수 있는 문제. #74412- 보존 경계 메타데이터가 이미 vacuum된 경우 vacuum 워터마크가 올바르게 보고되지 않아
file_bundling버전 전환 정리가 멈추는 문제. #74429 - 레이크 vacuum 재시도가 결정론적 지수 백오프를 사용하던 문제. S3 스로틀링 시 CN 전반에 재시도를 분산하기 위해 비상관(decorrelated) 지터가 이제 추가됩니다. #74108
- 쿼리 메모리 풀에서 할당된 RPC 요청이 프로세스 컨텍스트에서 해제되어
OlapTableSink의 메모리 계산이 과다 산정되는 문제. #73807 - 자동 파티션 생성이
_incremental_open_node_channel을 동시에 트리거할 때TabletSinkSender::_send_chunk_by_node에서 발생하는 경쟁 조건. #73820 - 업스트림 변경 사항의 백포트로 생성된 UDAF 컨텍스트가
unique_ptr::release를 통해 메모리 누수를 유발하는 문제. #74025 append_selective의 부정확한 메모리 계산으로 파티션 조인 프로브에서 발생할 수 있는 범위 초과 문제. #74315azure_adls2_oauth2_client_endpoint구성 필드 이름에 오타가 있던 문제. #74581StarMgrMetaSyncer가 range-colocate PACK 샤드 그룹을 고아로 잘못 회수하여 Shared-data 모드에서 활성 샤드를 영구 삭제하는 문제. #74117- PRIMARY KEY 테이블과 명시적
ORDER BY가 없는 테이블에서 colocate 태블릿 분할의 정렬 키 개수가 머티리얼라이즈된 스키마 대신 베이스 스키마에서 해석되어, 분할 작업이 태블릿 크기를 줄이지 못한 채 완료되는 문제. #74409 - 파티션 데이터가 병합 임계값 미만일 때 자동 병합 데몬이 사전 분할된 태블릿을 다시 병합하여 샘플 기반 사전 분할의 병렬성 이점을 무효화하는 문제. #74583
- 함수의
FunctionName.db가 여전히 원본 데이터베이스를 가리켜RESTORE ... AS <new_db>후 팔로워 FE에서 db 수준 UDF가 누락되는 문제. #74313 - 웨어하우스에 여러 CN 그룹이 있을 때 Shared-data
DISTRIBUTED BY RANDOMCTAS/INSERT에서 불변 파티션 태블릿 위치에 잘못된 CN 그룹이 할당되는 문제. #74316 - 통계 추정 중 파티션이 동시에 삭제될 때
StatisticsCalcUtils에서 발생하는NullPointerException. #73711 InformationSchemaDataSource와FrontendServiceImpl메타데이터 RPC 핸들러가 전체 데이터베이스 READ 락을 보유하여 관련 없는 테이블의 DDL을 차단하는 문제. #73936 #73913- 공유 컨텍스트 관찰자에게 알리지 않고 완료 상태를 전환하는 파이프라인 연산자가 이벤트 스케줄러에서 피어 드라이버를 멈추게 할 수 있는 문제. #74055 #74056
- 술어 푸시다운에서 루트가 아닌 복합 술어가 스캔 수준 EOF 대신
NotPushDown을 반환하여, UNION 하위에 불가능한 중첩 AND 분기가 있을 때OlapScanNode가 행을 출력하지 않는 문제. #74218 BackendLoadStatistic.init이 단일 스토리지 매체를 가진 BE에서 비용이 큰 복제본별 스캔을 수행하던 문제. 동종 디스크 BE에서 검사가 이제 O(1)입니다. #73555- 데이터 디렉터리 로드 스레드의 스레드 이름 설정 경쟁 조건으로 BE 시작마다 불필요한
failed to set thread name경고가 발생하는 문제. #73862 - 태스크 매니저가 잘못된
RUNNING→RUNNING편집 로그를 기록하여 태스크 실행이 실행 중 맵에 무기한 멈춘 것처럼 보이는 문제. #73882 - PK 다중 문 배치 트랜잭션이 복합 rowset 전반에서
num_rows,data_size,num_dels를 누적하지 않아 Shared-data Primary Key 테이블의 행 수 통계가 잘못되는 문제. #74059 - 레이크 로드 스필 정리가 이제 txn-id 기반의 vacuum 주도 회수를 사용하여 BE 크래시나 OOM 후 고아 스필 파일이 남는 것을 방지합니다. #73064
0000년부터 시작하는 PostgreSQL JDBC 시간 값이 잘못된 타입 매핑 결과를 유발하는 문제. #70842- 스키마 변경 중 rowset에서
gtid를 읽기 전에 null 검사가 누락되어 NPE 크래시가 발생하는 문제. #74855
4.1.1
출시일: 2026년 5월 29일
동작 변경
- Hive 커넥터가 이제 기본적으로 JNI Avro 스캐너 대신 네이티브 C++ Avro 스캐너를 사용합니다. #73237 #73569
- INCREMENTAL/AUTO 머티리얼라이즈드 뷰에 대한 쿼리 재작성(query rewrite)이 이제 비활성화되었으며, INCREMENTAL/AUTO 머티리얼라이즈드 뷰에 대한 FORCE 새로고침과 파티션 새로고침이 거부됩니다. #72890 #72336 #71355
개선 사항
- Java UDF/UDAF/UDTF가 이제 더 많은 타입을 지원합니다: UDAF/UDTF의 STRUCT 인자 및 반환값, 중첩된 ARRAY/MAP 타입, DATE/DATETIME, DECIMAL, 가변 인자(varargs). #72911 #72283 #72337 #72208 #68596
- 스칼라 UDF가 이제 STRUCT 인자를 지원합니다. #72620
- Python UDF가 이제 중첩된 ARRAY/MAP 타입을 지원합니다. #72210
- UDAF가 이제 한 번만 로드 및 초기화되어 여러 쿼리에서 재사용되므로 쿼리별 오버헤드가 감소합니다. #72038
- Hive 커넥터의 JNI Avro 스캐너를 네이티브 C++ 스캐너로 교체했으며, 직접 바이너리 디코딩과
avro.schema.literal및avro.schema.url을 지원합니다. #73237 #73283 #73257 #73569 - CTAS 문에서 Trino
WITH절을 지원합니다. #71960 - 싱크(sink) 경로에서 Iceberg
timestamptz파티션 변환(transform) 지원을 완성했습니다. #73397 - Iceberg 테이블 집계에 대한 TopN 런타임 필터 푸시다운을 활성화했습니다. #72332
- Iceberg datetime min/max 최적화를 지원합니다. #71870
- 여러 HDFS 클러스터에 접근할 수 있도록 Catalog와 BE에서 HDFS HA 구성 전달(passthrough)을 허용합니다. #71521
- 외부 테이블 쿼리에 대한 파티션 스캔 수 제한을 추가했습니다. #68480
- 지원되지 않는 Iceberg V3 기능에 대해 빠르게 실패(fail fast)합니다. #70242
- INSERT INTO FILES를 통한 CSV 내보내기에서
csv.enclose및csv.escape를 지원합니다. #71589 files()로의 전체 스키마 푸시다운을 위한enable_push_down_schemaINSERT 속성을 추가했습니다. #70978- Routine Load 작업이 재시도 불가능한 오류(예: 기본 키 크기 초과) 발생 시 이제 일시 중지됩니다. #71161
- 두 자식(children)에서 비롯된 복잡한 표현식에 대한 조인 재정렬(join reorder)을 지원합니다. #71615
date_trunc,array_map, CASE WHEN, IS NULL, UNION 및 상수에 대한 MCV/null 비율 전파를 포함하여 CBO 통계 추정을 개선했습니다. #72233 #70372 #70221 #70865 #70989 #71000- 스큐 조인(skew join) 감지를 개선했습니다: 모든 조인 키가 스큐(skew)일 때만 스큐로 감지하며, 스큐 규칙을 강제하기 위한
force_group_by_skew_eliminate_when_skewed스위치를 추가했습니다. #72753 #71382 - FE에서
regexp_replace에 대한 상수 폴딩(constant folding)을 지원합니다. #70804 - 상수 파티션 값을 갖는 날짜 파티션 컬럼에 대한 MIN/MAX를 최적화했습니다. #69880
- 머티리얼라이즈드 뷰 새로고침에서
ASYNC의 동의어로SCHEDULE키워드를 도입했습니다. #72329 - Shared-data 모드의 Lake 테이블에 대한 태블릿 생성 재시도를 지원합니다. #71068
- Lake 컬럼 모드 부분 업데이트(column-mode partial update)에 대한 조건부 업데이트를 지원합니다. #71961
- 수집(ingestion) 처리량을 개선하기 위해 부분 업데이트 publish, 영속 인덱스(persistent index) 초기화, SSTable 열기를 병렬화했습니다. #71652 #71217 #72112 #71145 #72986
- Shared-nothing에서 shared-data로의 복제 중 DCG 파일 동기화를 지원합니다. #69339
- 키 컬럼과 비키 컬럼 모두에서 VARCHAR 길이 확장에 대한 스키마 진화(schema evolution)를 지원합니다. #70747
- 클러스터 스냅샷 무결성 검사를 위한
snapshot_meta.json마커를 추가했습니다. #71209 - DN 패턴을 통한 LDAP 직접 바인드(direct bind) 인증을 지원합니다. #71559
- 쿼리 문제 해결을 더 쉽게 하기 위한
get_query_dump_from_query_id메타 함수를 추가했습니다. #72875 - 감사 로그에서 쿼리된 릴레이션(relations)에 대한 감사를 지원합니다. #71596
- MySQL 바이너리 결과 인코딩을 위한 세션 변수를 추가했습니다. #71415
- Shared-data 클러스터용
tablet_num,MemtableIOSpeed,staros_shard_count, Iceberg 메타데이터 테이블 쿼리 메트릭을 포함하여 더 나은 관측성을 위한 메트릭을 추가했습니다. #71444 #69842 #73096 #70825 - FE 구성
deploy_serialization_min_thread_pool_size를 추가했습니다. #72274 - MergeTabletJob 생성을 비활성화하기 위한
tablet_reshard_enable_tablet_merge구성을 추가했습니다. #70906 SO_REUSEPORT를 통해 HTTP 서버 accept의 thundering-herd 문제를 제거했습니다. #72956
보안
- [CVE] Netty를 4.1.133.Final로 업그레이드했습니다. #72905
- [CVE-2026-42198] [CVE-2026-5598] pgjdbc를 42.7.11로, BouncyCastle을 1.84로 업그레이드했습니다. #72797
- [CVE-2026-32280] [CVE-2026-32282] Golang CVE를 제거하기 위해 pprof를 go1.25.9로 빌드했습니다. #71944 #73545
- jetty-http를 9.4.58.v20250814로 업그레이드했습니다. #71762
- Broker 의존성 CVE를 정리하고
wildfly-openssl을 제거했습니다. #72184 #71908 - INSERT INTO FILES 오류 메시지에서 자격 증명(credentials)을 마스킹 처리했습니다. #71245
버그 수정
다음 이슈들이 수정되었습니다:
hash_util정적 초기화 순서로 인해 발생하던 CN 시작 시 세그폴트(segfault) 문제를 수정했습니다. #71825- 물리적 분할(physical split)이 활성화된 상태에서 빈 태블릿을 스캔할 때 발생하던 CN 크래시를 수정했습니다. #70281
information_schema.warehouse_queries를 쿼리할 때 발생하던 BE 크래시를 수정했습니다. #72019- rowset의
num_rows가 0일 때 Lake 컴팩션에서 발생하던 SIGFPE를 수정했습니다. #71742 - ExecutionDAG 프래그먼트 연결에서 발생하던 0으로 나누기(division-by-zero) 문제를 수정했습니다. #67918
- SinkBuffer에서 정상 종료(graceful-exit) 시 발생하던 크래시를 수정했습니다. #73202
- Spill 가능한 해시 조인 probe 단계에서 발생하던 크래시를 수정했습니다. #72397
- 임시
std::string으로 포맷팅할 때 발생하던 스택 버퍼 오버플로(stack-buffer-overflow)를 수정했습니다. #72728 reverse(DecimalV3)에서 발생하던 크래시를 수정했습니다. #71834- 임시
shared_ptr소멸로 인해LoadChannel::get_load_replica_status에서 발생하던 use-after-free를 수정했습니다. #71843 - 스레드 생성 실패 시
ThreadPool::do_submit에서 발생하던 use-after-free를 수정했습니다. #71276 - 프래그먼트 해제(teardown) 전반에 걸친 Hive 파티션 디스크립터의 use-after-free를 수정했습니다. #73176
- information schema 싱크의 use-after-free를 수정했습니다. #71513
- HttpClient 인스턴스를 재사용하여 FE 파일 디스크립터 누수를 수정했습니다. #73239
JDBCScanner::_init_jdbc_scanner의 JNI 로컬 참조 누수를 수정했습니다. #72913- MV 계획 컨텍스트(plan context)를 캐싱할 때 발생하던 메모리 누수를 수정했습니다. #72300
- 로컬 익스체인지(local exchange)에서의 예기치 않은 메모리 과다 사용을 수정했습니다. #72262
- Lake
publish_version에서response->tablet_metas에 대한 경합(race)을 수정했습니다. #73274 DeltaWriter::commit()에서 동시SegmentFlushTask경합을 수정했습니다. #73371- 직렬화 중
RuntimeProfile의 min/max 경합을 수정했습니다. #72904 - 쿼리 컨텍스트 소멸 중
PipelineTimerTask의 경쟁 조건(race condition)을 수정했습니다. #73082 _all_global_rf_ready_or_timeout의 경쟁 조건을 수정했습니다. #70920map_apply및array_length에서의NullColumn공유 문제를 수정했습니다. #71258- 파티션 버전 간격(version gap)으로 인한 배치 publish 교착 상태(deadlock)를 수정했습니다. #71483
- Shared-nothing 모드에서 rowset 메타데이터용 LRU 캐시를 워밍업할 때 발생하던 교착 상태를 수정했습니다. #71459
Locker롤백이 예외에 안전하지 않고(exception-safe) 잠금 해제 순서가 잘못된 문제를 수정했습니다. #72789- 읽기 전용 및 메타데이터 경로의 여러 DB 락으로 인해 발생하던 DDL 및 StarOS RPC와의 락 경합을 수정했습니다. #73067 #72475 #72108 #72218 #72178
- 프로젝트 노드 누락으로 인한 잘못된 셔플 분포(shuffle distribution)를 수정했습니다. #71075
- 크래시 및 잘못된 결과를 유발하던 AGG TopN 런타임 필터
exprOrder불일치를 수정했습니다. #71479 - dict-merge GROUP BY의 잘못된 결과를 수정했습니다. #70866
- 쿼리 캐시와 로컬 셔플 집계 간의 충돌을 수정했습니다. #73194
- Flat JSON에서 전역 딕셔너리 생성이 일관되지 않던 문제를 수정했습니다. #72953
- Flat JSON 병합 시 빈 값 불일치(merge empty inconsistency) 문제를 수정했습니다. #72973
- 명시적 key/value 타입이 선언된 경우 맵 리터럴(map literals)에서 발생하던 타입 불일치를 수정했습니다. #71316
- JOIN USING 변환기에서 COALESCE 자식이 공통 타입으로 캐스팅되지 않던 문제를 수정했습니다. #72338
- 전역 변수로 reduce-cast 후 VARCHAR 길이가 보존되지 않던 문제를 수정했습니다. #70269
- MySQL 결과 집합의 중첩 타입 내부에서 VARBINARY가 잘못 인코딩되던 문제를 수정했습니다. #71346
- 작은 LIMIT에서 집계 spill을 비활성화할 때 발생하던 check-having-clause 문제를 수정했습니다. #72705
- 날짜 파싱 전에 따옴표가 제거되지 않던 문제와 PostgreSQL 날짜/시간 버그를 수정했습니다. #48517 #71016
- 범위 분포(range distribution) 태블릿의 데이터 파일 삭제를 건너뛰어, 태블릿 분할 후 데이터 손실이 발생하던 문제를 수정했습니다. #71135
- 형제 분할 태블릿(sibling split tablets)이 여전히 참조하는 파일을 vacuum이 삭제하게 만들던 데이터 파일 shared-flag 손실 문제를 수정했습니다. #71585
- split→compaction→merge 시퀀스에 대한 태블릿 병합 정확성을 수정했습니다. #72350
- 태블릿 분할 중 교차 publish된 txn 로그의 num_rows/data_size 부풀림(inflation) 문제를 수정했습니다. #71144
- 동일한 publish 배치 내에서 컴팩션 전 쓰기(write-before-compaction)로 인한 delvec 고아(orphan) 항목 문제를 수정했습니다. #71001
- StarMgr 저널 재생(journal replay)을 동기화하여 팔로워 FE에서 발생하던 "no queryable replica" 문제를 수정했습니다. #71263
- 일반 rowset 커밋을 적용할 때
merge_condition이 보존되지 않던 문제를 수정했습니다. #72542 - 잘못된 스냅샷 ID와 필터를 사용하던 Iceberg DELETE 충돌 감지 문제를 수정했습니다. #73354
- 잘못된 Iceberg transform 인자에 대한 NPE를 수정했습니다. #71917
- 플래너가 주입한 추가 컬럼으로 인해 Iceberg min/max 최적화가 건너뛰어지던 문제를 수정했습니다. #71863
- Iceberg 기반 테이블에 대한 aggregate-join-pushdown MV 재작성 문제를 수정했습니다. #71856
- INSERT OVERWRITE 커밋 전 Hive 파티션 디렉터리가 누락되던 문제를 수정했습니다. #71810
- JNI 스캐너에 AWS assume-role이 적용되지 않던 문제를 수정했습니다. #71422
- 잘려나간(pruned) 자식 및 중첩된 nullable 스키마에 대한 Avro 복합 타입 디코딩 문제를 수정했습니다. #73474
- Parquet Broker Load 오류에서 파일/컬럼/행 컨텍스트가 누락되던 문제를 수정했습니다. #73236
- Parquet 스캐너에서 Arrow 딕셔너리 값 지원이 누락되던 문제를 수정했습니다. #71855
- Paimon 테이블의 기본 키(Primary Key)가 SHOW CREATE 및 DESC 반환값에 표시되지 않던 문제를 수정했습니다. #70535
- PostgreSQL/Oracle JDBC 타입 호환성 및 끝에 슬래시가 붙은 JDBC URL 구성 문제를 수정했습니다. #70626 #70992
- JDBC 카탈로그에서 SQL Server 테이블에 대한 머티리얼라이즈드 뷰 새로고침 문제를 수정했습니다. #72962
- 아우터 조인(outer join) 기반 머티리얼라이즈드 뷰에 대한 지연 구체화(lazy-materialization) 슬롯 nullability 문제를 수정했습니다. #72621
- AUTO 및 INCREMENTAL 머티리얼라이즈드 뷰 파티션 새로고침이 거부되던 문제를 수정했습니다. #71355
- 머티리얼라이즈드 뷰가 비활성(inactive) 상태가 된 후에도 머티리얼라이즈드 뷰 스케줄러가 중지되지 않던 문제를 수정했습니다. #71265
- MySQL 클라이언트 호환성을 위한
SHOW GRANTS FOR CURRENT_USER()지원이 누락되던 문제를 수정했습니다. #71959 - 명시적 트랜잭션 내부에서 SHOW 문이 허용되지 않던 문제를 수정했습니다. #72954
- Arrow Flight가 빈 결과 집합에 대해 컬럼 이름
r을 반환하던 문제를 수정했습니다. #71534 - Java UDF 코드에서 JNI 예외 처리 검사가 누락되던 문제를 수정했습니다. #71734
ai_query함수 등록 문제를 수정했습니다. #72103enable_load_profile사용 시 Stream Load 프로파일 수집 문제를 수정했습니다. #71952- 프로파일의 START_TIME/END_TIME이 세션 시간대로 표시되지 않던 문제를 수정했습니다. #71429
star_mgr_meta_sync_interval_sec가 런타임에 변경 가능하지 않던 문제를 수정했습니다. #71675information_schema.tables가 동등(equality) 술어에서 특수 문자를 이스케이프하지 않던 문제를 수정했습니다. #71273
4.1.0
출시일: 2026년 4월 13일
Shared-data 아키텍처
- 다중 테넌트 데이터 관리 신규 지원: Shared-data 클러스터가 이제 범위 기반(range-based) 데이터 분포와 태블릿의 자동 분할 및 병합을 지원합니다. 태블릿은 과도하게 커지거나 핫스팟이 될 때 스키마 변경, SQL 수정, 데이터 재수집 없이 자동으로 분할될 수 있습니다. #65199 #66342 #67056 #67386 #68342 #68569 #66743 #67441 #68497 #68591 #66672 #69155
- 대용량 태블릿 지원(1단계): Shared-data 클러스터가 태블릿당 훨씬 더 많은 데이터를 보관할 수 있게 하며, 장기적으로 태블릿당 100GB를 목표로 합니다. 1단계에서는 수집(ingestion), 기본 키(Primary Key) 업데이트, 컴팩션(Compaction) 파이프라인에 걸쳐 태블릿 내부 병렬성을 도입합니다. #66424 #66522 #66778 #66586 #67432 #67478 #67554 #68677 #69865
- Fast Schema Evolution V2: Shared-data 클러스터가 이제 Fast Schema Evolution V2를 지원하며, 스키마 작업에 대해 초 단위(second-level) DDL 실행을 가능하게 하고, 이 지원을 머티리얼라이즈드 뷰로까지 확장합니다. #65726 #66774 #67915
- [Beta] Shared-data의 역색인(Inverted Index): 텍스트 필터링 및 전문 검색(full-text search) 워크로드를 가속하기 위해 shared-data 클러스터에 내장 역색인(inverted index)을 활성화합니다. #66541
- 캐시 관측성(Cache Observability): 이제 쿼리 수준의 캐시 적중률(cache hit ratio)이 감사 로그와 모니터링 시스템에 노출됩니다. 추가된 Data Cache 메트릭에는 메모리 및 디스크 할당량(quota) 사용량과 페이지 캐시 통계가 포함됩니다. #63964
- 스캔 중 정렬 키(sort key) 범위를 기반으로 관련 없는 세그먼트를 건너뛰는 Lake 테이블용 세그먼트 메타데이터 필터를 추가하여, 범위 술어(range-predicate) 쿼리의 I/O를 줄였습니다. #68124
- Lake DeltaWriter에 대한 빠른 취소(fast cancel)를 지원하여, shared-data 클러스터에서 취소된 수집 작업의 지연 시간을 줄였습니다. #68877
- 자동 클러스터 스냅샷에 대한 간격 기반(interval-based) 스케줄링 지원을 추가했습니다. #67525
- MemTable 플러시 및 병합에 대한 파이프라인 실행을 지원하여, shared-data 클러스터의 클라우드 네이티브 테이블 수집 처리량을 개선했습니다. #67878
- 클라우드 네이티브 테이블 복구에 대한
dry_run모드를 지원하여, 사용자가 실행 전에 복구 작업을 미리 볼 수 있습니다. #68494 - Shared-nothing 클러스터에서 publish 트랜잭션을 위한 스레드 풀을 추가하여 publish 처리량을 개선했습니다. #67797
- 클라우드 네이티브 테이블에 대해
datacache.enable속성을 동적으로 수정하는 것을 지원합니다. #69011
데이터 레이크 분석
- Iceberg DELETE 지원: Iceberg 테이블에 대한 position delete 파일 쓰기를 지원하여, StarRocks에서 직접 Iceberg 테이블의 DELETE 작업을 수행할 수 있습니다. #67259 #67277 #67421 #67567
- Hive 및 Iceberg 테이블에 대한 TRUNCATE: 외부 Hive 및 Iceberg 테이블에 대한 TRUNCATE TABLE을 지원합니다. #64768 #65016
- Iceberg의 증분 머티리얼라이즈드 뷰: 증분(incremental) 머티리얼라이즈드 뷰 새로고침 지원을 Iceberg append-only 테이블로 확장하여, 전체 테이블 새로고침 없이 쿼리 가속을 가능하게 합니다. #65469 #62699
- Iceberg의 반정형 데이터를 위한 VARIANT 타입: 유연한 schema-on-read 방식의 반정형 데이터 저장 및 쿼리를 위해 Iceberg Catalog에서 VARIANT 데이터 타입을 지원합니다. #63639 #66539
- Iceberg v3 지원: Iceberg v3의 기본값(default value) 기능과 행 계보(row lineage)에 대한 지원을 추가했습니다. #69525 #69633
- Iceberg 테이블 유지 관리 프로시저:
rewrite_manifests프로시저 지원을 추가하고, 더 세밀한 테이블 유지 관리를 위해 추가 인자를 갖도록expire_snapshots및remove_orphan_files프로시저를 확장했습니다. #68817 #68898 - Iceberg
$properties메타데이터 테이블:$properties메타데이터 테이블을 통해 Iceberg 테이블 속성을 쿼리하는 기능을 추가했습니다. #68504 - Iceberg 테이블에서 파일 경로(file path) 및 행 위치(row position) 메타데이터 컬럼 읽기를 지원합니다. #67003
- Iceberg v3 테이블에서
_row_id읽기를 지원하고, Iceberg v3에 대한 전역 지연 구체화(global late materialization)를 지원합니다. #62318 #64133 - 사용자 지정 속성을 갖는 Iceberg 뷰 생성을 지원하고, SHOW CREATE VIEW 출력에 속성을 표시합니다. #65938
- 특정 브랜치, 태그, 버전 또는 타임스탬프로 Paimon 테이블을 쿼리하는 것을 지원합니다. #63316
- Paimon 테이블에 대한 복합 타입(ARRAY, MAP, STRUCT)을 지원합니다. #66784
- Paimon 뷰를 지원합니다. #56058
- Paimon 테이블에 대한 TRUNCATE를 지원합니다. #67559
- Iceberg 테이블 생성 시 괄호 구문(parentheses syntax)을 사용한 파티션 변환(Partition Transforms)을 지원합니다. #68945
- Iceberg 테이블에 대한 ALTER TABLE REPLACE PARTITION COLUMN을 지원합니다. #70508
- 더 나은 데이터 구성을 위해 Transform Partition 기반의 Iceberg 전역 셔플(global shuffle)을 지원합니다. #70009
- Iceberg 테이블 싱크에 대해 전역 셔플을 동적으로 활성화하는 것을 지원합니다. #67442
- 동시 Commit 충돌을 방지하기 위해 Iceberg 테이블 싱크에 Commit 큐를 도입했습니다. #68084
- 데이터 구성과 읽기 성능을 개선하기 위해 Iceberg 테이블 싱크에 호스트 수준(host-level) 정렬을 추가했습니다. #68121
- ETL 실행 모드의 추가 최적화를 기본적으로 활성화하여, 별도의 명시적 구성 없이 INSERT INTO SELECT, CREATE TABLE AS SELECT 및 유사한 배치 작업의 성능을 개선했습니다. #66841
- Iceberg 테이블에 대한 INSERT 및 DELETE 작업의 커밋 감사 정보를 추가했습니다. #69198
- Iceberg REST Catalog에서 뷰 엔드포인트(view endpoint) 작업을 활성화하거나 비활성화하는 것을 지원합니다. #66083
- CachingIcebergCatalog의 캐시 조회 효율성을 최적화했습니다. #66388
- 다양한 Iceberg 카탈로그 타입에 대한 EXPLAIN을 지원합니다. #66563
- AWS Glue Catalog 테이블의 파티션 프로젝션(partition projection)을 지원합니다. #67601
- AWS Glue
GetDatabasesAPI에 대한 리소스 공유 타입(resource share type) 지원을 추가했습니다. #69056 - 엔드포인트 주입(endpoint injection)을 통한 Azure ABFS/WASB 경로 매핑(
azblob/adls2)을 지원합니다. #67847 - 원격 RPC 오버헤드와 외부 시스템 장애의 영향을 줄이기 위해 JDBC 카탈로그용 데이터베이스 메타데이터 캐시를 추가했습니다. #68256
- 사용자 지정 스키마 해석(custom schema resolution)을 지원하기 위해 JDBC 카탈로그에
schema_resolver속성을 추가했습니다. #68682 information_schema에서 PostgreSQL 테이블의 컬럼 주석(column comments)을 지원합니다. #70520- Oracle 및 PostgreSQL JDBC 타입 매핑을 개선했습니다. #70315 #70566
쿼리 엔진
- 재귀 CTE: 계층 구조 탐색, 그래프 쿼리, 반복적 SQL 연산을 위한 재귀 공통 테이블 표현식(Recursive CTE)을 지원합니다. #65932
- 통계 기반 스큐 감지, 히스토그램 지원, NULL 스큐 인식 기능으로 Skew Join v2 재작성을 개선했습니다. #68680 #68886
- 윈도우에 대한 COUNT DISTINCT를 개선하고, 융합된 다중 distinct 집계(fused multi-distinct aggregations) 지원을 추가했습니다. #67453
- 윈도우 함수에 대한 명시적 스큐 힌트(skew hint)를 지원하며, 스큐된 파티션 키를 갖는 윈도우 함수를 UNION으로 분할하여 자동으로 최적화합니다. #68739 #67944
- CTE에 대한 구체화 힌트(materialization hints)를 지원합니다. #70802
- 전역 지연 구체화(Global Lazy Materialization)를 기본적으로 활성화하여, 필요할 때까지 컬럼 읽기를 지연시킴으로써 쿼리 성능을 개선했습니다. #70412
- Trino 파서에서 INSERT 문에 대한 EXPLAIN 및 EXPLAIN ANALYZE를 지원합니다. #70174
- 쿼리 큐 가시성(query queue visibility)을 위한 EXPLAIN을 지원합니다. #69933
함수 및 SQL 구문
다음 함수들이 추가되었습니다: array_top_n #63376, arrays_zip #65556, json_pretty #66695, json_set #66193, initcap #66837, sum_map #67482, current_timezone #63653, current_warehouse #66401, sec_to_time #62797, ai_query #61583, min_n/max_n #63807, regexp_position #67252, is_json_scalar #66050, get_json_scalar #68815, raise_error #69661, uuid_v7 #67694, STRING_AGG #64704
다음과 같은 함수 또는 구문 확장을 제공합니다:
array_sort에서 람다 비교자(lambda comparator)를 지원합니다. #66607- SQL 표준 의미론(semantics)에 따라 FULL OUTER JOIN에 대한 USING 절을 지원합니다. #65122
- ORDER BY/PARTITION BY를 갖는 프레임 윈도우 함수(framed window functions)에 대한 DISTINCT 집계를 지원합니다. #65815 #65030 #67453
lead/lag/first_value/last_value윈도우 함수에서 ARRAY 타입을 지원합니다. #63547- count distinct 계열 집계 함수에 대해 VARBINARY를 지원합니다. #68442
- interval 연산에 대한
MULTIPLY/DIVIDE를 지원합니다. #68407 - IN 표현식에서 날짜 및 문자열 타입 캐스팅을 지원합니다. #61746
- BEGIN/START TRANSACTION에 대한 WITH LABEL 구문을 지원합니다. #68320
- SHOW 문에서 WHERE/ORDER/LIMIT 절을 지원합니다. #68834
- 작업 관리를 위한
ALTER TASK문을 지원합니다. #68675 CREATE FUNCTION ... AS <sql_body>를 통한 SQL UDF 생성을 지원합니다. #67558- S3에서 UDF 로드를 지원합니다. #64541
- CSV 파일 내보내기에 대해 여러 압축 형식(GZIP/SNAPPY/ZSTD/LZ4/DEFLATE/ZLIB/BZIP2)을 지원합니다. #68054
- 이름 기반 struct 필드 매칭을 위한
STRUCT_CAST_BY_NAMESQL 모드를 지원합니다. #69845 - 손쉬운 쿼리 프로파일 분석을 위해
ANALYZE PROFILE에서last_query_id()를 지원합니다. #64557
관리 및 관측성(Observability)
- 다중 웨어하우스 CPU 리소스 격리를 개선하기 위해 리소스 그룹에 대한
warehouses,cpu_weight_percent,exclusive_cpu_weight속성을 지원합니다. #66947 - FE 스레드 상태를 검사하기 위한
information_schema.fe_threads시스템 뷰를 도입했습니다. #65431 - 클러스터 수준에서 특정 쿼리 패턴을 차단하기 위한 SQL Digest 블랙리스트를 지원합니다. #66499
- 네트워크 토폴로지 제약으로 인해 접근할 수 없는 노드에서 Arrow Flight 데이터 검색을 지원합니다. #66348
- 재연결 없이 전역 변수 변경을 기존 연결에 전파하기 위한 REFRESH CONNECTIONS 명령을 도입했습니다. #64964
- 쿼리 프로파일을 분석하고 포맷팅된 SQL을 볼 수 있는 내장 UI 기능을 추가하여 쿼리 튜닝을 더 쉽게 만들었습니다. #63867
- 구조화된 클러스터 개요를 제공하기 위해
ClusterSummaryActionV2API 엔드포인트를 구현했습니다. #68836 - 현재 클러스터 실행 모드(shared-data 또는 shared-nothing)를 쿼리하기 위한 전역 읽기 전용 시스템 변수
@@run_mode를 추가했습니다. #69247 - 향상된 쿼리 큐 관리를 위해
query_queue_v2를 기본적으로 활성화했습니다. #67462 - Stream Load 및 Merge Commit 작업에 대한 사용자 수준 기본 웨어하우스를 지원합니다. #68106 #68616
- 필요 시 백엔드 블랙리스트 검증을 우회하기 위한
skip_black_list세션 변수를 추가했습니다. #67467 - 메트릭 API에 대한
enable_table_metrics_collect옵션을 추가했습니다. #68691 - 쿼리 상세 HTTP API에 대한 사용자 가장(impersonate) 지원을 추가했습니다. #68674
- 테이블 수준 속성으로
table_query_timeout을 추가했습니다. #67547 - 구성 가능한 지연 시간 임계값을 갖는 FE 프로파일 로깅을 추가했습니다. #69396
- FE 옵저버(observer) 노드 추가를 지원합니다. #67778
- 더 나은 로드 작업 가시성을 위해
information_schema.loads에서 Merge Commit 정보를 지원합니다. #67879 - 더 나은 문제 해결을 위해 클라우드 네이티브 테이블에서 태블릿 상태 표시를 지원합니다. #69616
- 외부 카탈로그 관측성을 위해 카탈로그 타입별 쿼리 메트릭을 추가했습니다. #70533
- FE 및 BE에 대한 Debian(.deb) 패키징 지원을 추가했습니다. #68821
보안
- [CVE-2026-33870] [CVE-2026-33871] AWS 번들을 교체하고 Netty를 4.1.132.Final로 업그레이드했습니다. #71017
- [CVE-2025-27821] Hadoop을 v3.4.2로 업그레이드했습니다. #68529
- [CVE-2025-54920]
spark-core_2.12를 3.5.7로 업그레이드했습니다. #70862
버그 수정
다음 이슈들이 수정되었습니다:
- 범위 분포(range distribution) 태블릿의 데이터 파일 삭제를 건너뛰어, 태블릿 분할 후 데이터 손실이 발생하던 문제를 수정했습니다. #71135
- 복합 타입에 대한
DefaultValueColumnIterator의 메모리 누수를 수정했습니다. #71142 BatchUnit과FetchTaskContext간의shared_ptr순환으로 인한 메모리 누수를 수정했습니다. #71126- 오류 경로에서 병렬 세그먼트/rowset 로딩 시 발생하던 use-after-free를 수정했습니다. #71083
- 집계 spill의
set_finishing에서 발생할 수 있던 해시 테이블 데이터 손실을 수정했습니다. #70851 - 동시 getline 접근으로 인해 SystemMetrics에서 발생하던 double-free 크래시를 수정했습니다. #71040
- eager merge가 모든 블록을 소비할 때 SpillMemTableSink에서 발생하던 크래시를 수정했습니다. #69046
- 딕셔너리 백킹 테이블(backing table)이 삭제될 때
visitDictionaryGetExpr에서 발생하던 NPE를 수정했습니다. #71109 - 참조된 컬럼이 누락된 경우 Stream Load/Broker Load에서 생성 컬럼(generated columns)을 분석할 때 발생하던 NPE를 수정했습니다. #71116
- TTL 정리기(cleaner)에 의해 자동 생성된 파티션이 삭제될 때 발생하던 NPE를 수정했습니다. #68257
- 스냅샷이 만료되었을 때
IcebergCatalog.getPartitionLastUpdatedTime에서 발생하던 NPE를 수정했습니다. #68925 - 상수 측 컬럼 참조(constant-side column reference)를 갖는 아우터 조인에 대한 잘못된 술어 재작성을 수정했습니다. #67072
- 디스크 재마이그레이션(A→B→A) 중 GC 경합으로 인해 발생하던 PK 태블릿 rowset 메타 손실을 수정했습니다. #70727
- SharedDataStorageVolumeMgr의 DB 읽기 락 누수를 수정했습니다. #70987
- shared-data에서 CHAR 컬럼 길이를 수정한 후 발생하던 잘못된 쿼리 결과를 수정했습니다. #68808
- 다중 테이블 경우의 MV 새로고침 버그를 수정했습니다. #61763
- 강제 새로고침된 경우 잘못된 MV 회수 시간(recycle time)을 수정했습니다. #68673
- 동기(sync) MV에서 모든 값이 null인 경우의 처리 버그를 수정했습니다. #69136
- 빠른 스키마 변경 ADD COLUMN 후 MV를 쿼리할 때 발생하던 중복 컬럼 id 오류를 수정했습니다. #71072
- IVM 새로고침이 불완전한 PCT 파티션 메타데이터를 기록하던 문제를 수정했습니다. #71092
- 공유된 DecodeInfo로 인한 low-cardinality 재작성 NPE를 수정했습니다. #68799
- low-cardinality 조인 술어 타입 불일치를 수정했습니다. #68568
null_counts가 비어 있을 때 Parquet Page Index Filter에서 발생하던 세그폴트를 수정했습니다. #68463- 동일한 경로에서 JSON flatten 배열과 객체가 충돌하던 문제를 수정했습니다. #68804
- Iceberg 캐시 weigher의 부정확성을 수정했습니다. #69058
- Iceberg 테이블 캐시 메모리 제한 문제를 수정했습니다. #67769
- Iceberg delete 컬럼 nullability 문제를 수정했습니다. #68649
- Azure ABFS/WASB FileSystem 캐시 키에 컨테이너가 포함되도록 수정했습니다. #68901
- HMS 연결 풀이 가득 찼을 때 발생하던 교착 상태를 수정했습니다. #68033
- Paimon Catalog에서 VARCHAR 필드 타입의 잘못된 길이를 수정했습니다. #68383
- ObjectTable에서 ClassCastException으로 인해 발생하던 Paimon 카탈로그 새로고침 크래시를 수정했습니다. #70224
- PaimonView가 Paimon 카탈로그 대신 default_catalog에 대해 테이블 참조를 해석하던 문제를 수정했습니다. #70217
- 상수 서브쿼리를 갖는 FULL OUTER JOIN USING 문제를 수정했습니다. #69028
- CTE 범위(scope)와 관련된 join on 절 버그를 수정했습니다. #68809
- 쇼트서킷(short-circuit) 포인트 조회에서 파티션 술어가 누락되던 문제를 수정했습니다. #71124
bindScope()패턴을 사용하여 ConnectContext 메모리 누수를 수정했습니다. #68215- Shared-nothing 클러스터에 대한
CatalogRecycleBin.asyncDeleteForTables의 메모리 누수를 수정했습니다. #68275 - Thrift accept 스레드가 예외를 만났을 때 종료되던 문제를 수정했습니다. #68644
- Routine Load 컬럼 매핑에서의 UDF 해석(resolution) 문제를 수정했습니다. #68201
DROP FUNCTION IF EXISTS가ifExists플래그를 무시하던 문제를 수정했습니다. #69216- 딕셔너리 페이지가 너무 클 때 발생하던 스캔 결과 오류를 수정했습니다. #68258
- 범위 파티션 겹침(overlap) 문제를 수정했습니다. #68255
- 쿼리 큐 할당 시간 및 대기(pending) 타임아웃 문제를 수정했습니다. #65802
- null 리터럴 배열을 처리할 때
array_map에서 발생하던 크래시를 수정했습니다. #70629 to_base64에서 발생하던 스택 오버플로를 수정했습니다. #70623- 옵티마이저 타임아웃 문제를 수정했습니다. #70605
- LDAP 인증에 대한 대소문자 구분 없는 사용자 이름 정규화 문제를 수정했습니다. #67966
- API
proc_file의 SSRF 위험을 완화했습니다. #68997 - 감사 및 SQL 마스킹(redaction)에서 사용자 인증 문자열을 마스킹 처리했습니다. #70360
동작 변경
- ETL 실행 모드 최적화가 이제 기본적으로 활성화됩니다. 이는 명시적 구성 변경 없이 INSERT INTO SELECT, CREATE TABLE AS SELECT 및 유사한 배치 워크로드에 이점을 제공합니다. #66841
lag/lead윈도우 함수의 세 번째 인자가 이제 상수 값뿐만 아니라 컬럼 참조도 지원합니다. #60209- FULL OUTER JOIN USING이 이제 SQL 표준 의미론을 따릅니다: USING 컬럼이 출력에 두 번이 아니라 한 번만 나타납니다. #65122
- 전역 지연 구체화(Global Lazy Materialization)가 이제 기본적으로 활성화됩니다. #70412
query_queue_v2가 이제 기본적으로 활성화됩니다. #67462- SQL 트랜잭션이 기본적으로 세션 변수
enable_sql_transaction에 의해 게이팅(gated)됩니다. #63535
4.1.0-RC
출시일: 2026년 2월 28일
Shared-data 아키텍처
- 멀티 테넌트 데이터 관리: Shared-data 클러스터에서 Range 기반 데이터 분산 및 태블릿 자동 분할/병합을 지원합니다. 태블릿이 과대해지면 자동으로 분할됩니다. #65199 #66342 #67056 #67386 #68342 #68569 #66743
- 대용량 태블릿 지원 (Phase 1): Lake 태블릿 내에서 병렬 Compaction 및 병렬 MemTable Finalization을 지원합니다. #66586 #68677
- Fast Schema Evolution V2: 스키마 작업에 대한 초 단위 DDL 실행이 Materialized View로 확장되었습니다. #65726 #66774 #67915
- [Beta] 역색인(Inverted Index): Shared-data 클러스터에서 텍스트 필터링 가속을 지원합니다. #66541
- 캐시 관찰성: 감사 로그 및 모니터링 시스템에 캐시 히트율 메트릭이 추가되었습니다. #63964
- Lake 테이블의 세그먼트 메타데이터 필터링으로 I/O가 감소됩니다. #68124
- Lake DeltaWriter에 대한 빠른 취소 지원이 추가되었습니다. #68877
- 자동화된 클러스터 스냅샷에 인터벌 기반 스케줄링을 지원합니다. #67525
데이터 레이크 분석
- Iceberg DELETE 지원: Position delete 파일 쓰기를 통해 DELETE 작업을 지원합니다. #67259 #67277 #67421 #67567
- TRUNCATE 지원: 외부 Hive 및 Iceberg 테이블에 대한 TRUNCATE를 지원합니다. #64768 #65016
- 증분 Materialized View: Iceberg append-only 테이블에 대해 전체 새로고침 없이 증분 새로고침을 지원합니다. #65469 #62699
- VARIANT 타입: Iceberg에서 반정형 데이터에 대한 읽기/쓰기 기능을 지원합니다. #63639 #66539
- Iceberg에서 파일 경로 및 행 위치 메타데이터 읽기를 지원합니다. #67003
- Iceberg v3
_row_id읽기 및 글로벌 Late Materialization을 지원합니다. #62318 #64133 - Iceberg 뷰에 대한 사용자 정의 속성을 지원합니다. #65938
- Paimon branch/tag/version/timestamp 쿼리를 지원합니다. #63316
- ETL 모드 최적화가 기본적으로 활성화되었습니다. #66841
- Iceberg INSERT/DELETE 커밋 감사 정보가 추가되었습니다. #69198
- Iceberg REST Catalog 뷰 엔드포인트 제어를 지원합니다. #66083
- CachingIcebergCatalog 효율성이 개선되었습니다. #66388
- Iceberg 카탈로그 타입에 대한 EXPLAIN 지원이 추가되었습니다. #66563
쿼리 엔진
- 재귀 CTE(Recursive CTE): 계층적 탐색, 그래프 쿼리 및 반복적 SQL 계산을 지원합니다. #65932
- 통계 기반 탐지 및 히스토그램 지원을 통한 Skew Join v2가 개선되었습니다. #68680 #68886
- 윈도우에서의 COUNT DISTINCT 및 퓨즈드 멀티 디스팅트 집계를 지원합니다. #67453
함수 및 SQL 구문
새로운 함수:
array_top_n,arrays_zip,json_pretty,json_set,initcap,sum_map,current_timezone,current_warehouse,sec_to_time,ai_query
함수 확장:
array_sort에서 Lambda 비교자를 지원합니다. #66607FULL OUTER JOIN USING절을 지원합니다. #65122- 프레임 윈도우에서 DISTINCT 집계를 지원합니다. #65815 #65030 #67453
- 윈도우 함수에서 ARRAY 타입을 지원합니다. #63547
관리 및 관찰성
- CPU 격리를 위한 리소스 그룹 속성이 추가되었습니다. #66947
information_schema.fe_threads시스템 뷰가 추가되었습니다. #65431- SQL Digest 블랙리스트 기능이 추가되었습니다. #66499
- Arrow Flight 데이터 검색을 지원합니다. #66348
REFRESH CONNECTIONS명령어가 추가되었습니다. #64964- Query Profile 분석 UI 기능이 추가되었습니다. #63867
- ClusterSummaryActionV2 API 엔드포인트가 추가되었습니다. #68836
- 읽기 전용
@@run_mode시스템 변수가 추가되었습니다. #69247