Release 482
Release 482 (2026-06-25)
Trino 482 릴리스의 변경 사항을 정리한 릴리스 노트예요. 전반적인 개선, 보안, Web UI, JDBC 드라이버, CLI, 여러 커넥터와 SPI의 변화를 다뤄요.
출처: 문서
본문
General
AT LOCAL연산자 지원을 추가했어요. (#29644)- 함수 호출에서
name => value구문을 사용한 명명된 인자(named argument) 지원을 추가했어요. (#29530) - char 값을 numeric, boolean, varbinary, temporal 타입으로 캐스팅하는 지원을 추가했어요. (#29374)
MATCH조건자 지원을 추가했어요. (#29810)UNIQUE조건자 지원을 추가했어요. (#29811)BETWEEN조건자에서SYMMETRIC과ASYMMETRIC키워드 지원을 추가했어요. (#29981)- 단순
CASE표현식의WHEN절에서<,BETWEEN,IS NULL같은 조건자 지원을 추가했어요. (#29446) IS [NOT] TRUE,IS [NOT] FALSE,IS [NOT] UNKNOWN조건자 지원을 추가했어요. (#29998)- SQL/JSON 경로 표현식에서
like_regex조건자 지원을 추가했어요. (#29592) ends_with()함수를 추가했어요. (#29847)OVERLAY문자열 함수 지원을 추가했어요. (#30026)- row 값의 필드 이름을 반환하는
ROW::fields함수를 추가했어요. (#29425) value.length()와varchar::chr(65)처럼 varchar·char 값에서 문자열 함수를 메서드로 호출하는 지원을 추가했어요. (#29978)- 값이 컬럼 타입에 할당 가능할 때
INSERT,UPDATE,MERGE가 중첩 문자 타입을 포함하는 array, map, row 컬럼에 값을 할당하도록 허용했어요. (#29953) - null 요소를 포함하는 row·array 값의 비교와 정렬을 허용했어요. 예:
ORDER BY,DISTINCT,min(),max(), 범위 비교. (#29891) - ⚠️ Breaking change: 내결함성 실행을 위한 Alluxio 기반 exchange 저장소 지원을 제거했어요. (#29596)
- ⚠️ Breaking change: char와 varchar 사이의 암시적 강제 변환(coercion)을 뒤집었어요. char 값은 trailing 공백이 제거된 채 varchar로 강제 변환되고, char와 varchar의 비교는 블랭크 패딩 없이 varchar 의미론을 따르므로 trailing 공백이 의미를 가져요.
deprecated.legacy-varchar-to-char-coercion구성 속성을true로 설정하면 이전 동작을 복원할 수 있어요. (#29939) - 반환 타입이 json일 때
JSON_QUERY에서OMIT QUOTES를 허용하지 않도록 했어요. (#29587) - 집계가 있는 많은 쿼리를 실행하는 장기 실행 클러스터에서 시간이 지나며 누적되는 메모리 사용량을 줄였어요. (#29523, #29524)
- 조건자 푸시다운을 활성화해
starts_with()필터가 있는 쿼리의 성능을 개선했어요. (#29712) - NaN 값을 포함하는 number 컬럼에 대한 쿼리의 잘못된 결과를 수정했어요. (#29497)
- 정밀도가 19보다 작은 decimal 값을 double로 캐스팅할 때의 잘못된 결과를 수정했어요. (#29831)
- number 컬럼의 두 NaN 값을
DISTINCT와GROUP BY가 별개로 취급하던 문제를 수정했어요. (#29920) - 지원되는 정밀도를 초과하는 크기의 number 값에 대한
DISTINCT,GROUP BY,=비교의 잘못된 결과를 수정했어요. (#29962) - 64개 이상의 필드를 가진 row 값의 잘못된 정렬·그룹화·집계를 수정했어요. (#30013)
- 컬럼 별칭이 있는 재귀 공통 테이블 표현식(recursive CTE)의 잘못된 컬럼 라인리지를 수정했어요. (#29304)
- 람다 표현식 안에서 null row 값의 필드를 역참조할 때의 쿼리 실패를 수정했어요. (#29504)
- array 같은 구조적 기본값을 가진 변수를 선언하는 SQL 사용자 정의 함수를 실행할 때의 실패를 수정했어요. (#29533)
- 테이블 함수가 큰 pass-through 컬럼을 반환할 때의 실패를 수정했어요. (#29561)
/v1/query엔드포인트와 Web UI를 통해 보고되는 잘못된 쿼리 진행 상황을 수정했어요. (#29793)- 내결함성 실행에서 쿼리 진행이 NaN으로 보고되던 문제를 수정했어요. (#29791)
- spooling 프로토콜을 통해 커넥터가 제공하는 커스텀 데이터 타입을 직렬화할 때의 실패를 수정했어요. (#29711)
- 언더플로우를 일으키는 소수 자리로 반올림할 때 double과 real 값에 대해
round()가 NaN을 반환하던 문제를 수정했어요. (#29808) - 지원하지 않는 클라이언트에 대해
DESCRIBE OUTPUT이 number 타입을 반환하던 문제를 수정했어요. (#29671)
Security
- JWT 인증과 OAuth 2.0 토큰 검증에 사용되는 JWKS 요청에
User-Agent헤더를 추가했어요. (#29669)
Web UI
- preview UI에 실행 중인 쿼리를 취소하거나 선점할 수 있는 버튼을 추가했어요. (#29315)
- preview UI 쿼리 목록 페이지의 CPU 사용량을 줄였어요. (#29865)
- 스테이지가 없는 실패한 쿼리에 대한 preview UI splits 타임라인 뷰의 오류를 수정했어요. (#29537)
JDBC driver
- 스풀된 결과 세그먼트 조회 실패 시 연결 누수를 수정했어요. (#30048)
CLI
- 스풀된 결과 세그먼트 조회 실패 시 연결 누수를 수정했어요. (#30048)
Cassandra connector
- Cassandra 테이블에 대한 조건자가 빈 WHERE 절을 만들 때의 쿼리 실패를 수정했어요. (#30027)
Delta Lake connector
$properties메타데이터 테이블에 테이블 위치를 추가했어요. (#29521)parquet.writer.block-row-count구성 속성 또는parquet_writer_block_row_count세션 속성으로 Parquet 작성기 행 그룹의 행 수를 제한하는 지원을 추가했어요. (#29673)- varbinary 컬럼으로 파티셔닝된 테이블 생성을 금지했어요. (#24155)
- ⚠️ Breaking change: Alluxio 파일 시스템 지원을 제거했어요. Alluxio 파일 시스템 캐시 지원에는 영향이 없어요. (#29596)
- Parquet 파일의 고카디널리티 문자열 컬럼에 대한 압축·읽기 성능을 개선했어요.
parquet.writer.delta-length-byte-array-encoding-enabled구성 속성을false로 설정해 비활성화할 수 있어요. (#29246) - 람다 표현식 안의 중첩 필드에 접근하는 쿼리의 성능을 개선했어요. (#29532)
- 정적 자격 증명을 사용할 때 Google Cloud Storage에서의 읽기 성능을 개선했어요. (#29776)
- 삭제 벡터(deletion vectors)가 활성화된 상태에서 실패한 쓰기의 정리로 활성 데이터 파일이 삭제되는 데이터 손실을 수정했어요. (#29361)
- 하위 디렉토리로 범위가 지정된 vended 자격 증명으로 계층적 네임스페이스를 가진 Azure Storage에 접근할 때의 실패를 수정했어요. (#29293)
- S3에서 데이터를 읽을 때의 간헐적 실패를 수정했어요. (#29419)
Druid connector
- 계산을 Druid로 푸시다운해 집계가 포함된 쿼리의 성능을 개선했어요. (#29863)
Exasol connector
- timestamp 타입 지원을 추가했어요. (#26963)
Hive connector
parquet.writer.block-row-count구성 속성 또는parquet_writer_block_row_count세션 속성으로 Parquet 작성기 행 그룹의 행 수를 제한하는 지원을 추가했어요. (#29673)- Parquet 파일의 스플릿 최대 크기를 제어하는
hive.parquet.max-split-size구성 속성을 추가했어요.hive.max-split-size는 다른 파일 형식에만 적용돼요. (#29698) - ⚠️ Breaking change:
hive.max-initial-splits와hive.max-initial-split-size구성 속성을 제거했어요. (#29698) - ⚠️ Breaking change: Alluxio 파일 시스템 지원을 제거했어요. Alluxio 파일 시스템 캐시 지원에는 영향이 없어요. (#29596)
- Parquet 파일의 고카디널리티 문자열 컬럼에 대한 압축·읽기 성능을 개선했어요.
parquet.writer.delta-length-byte-array-encoding-enabled구성 속성을false로 설정해 비활성화할 수 있어요. (#29246) - 람다 표현식 안의 중첩 필드에 접근하는 쿼리의 성능을 개선했어요. (#29532)
- 정적 자격 증명을 사용할 때 Google Cloud Storage에서의 읽기 성능을 개선했어요. (#29776)
- 구성된 Hive metastore를 사용할 수 없을 때 연결 재시도 전에 백오프해 성능을 개선했어요. (#29653)
- S3에서 데이터를 읽을 때의 간헐적 실패를 수정했어요. (#29419)
Hudi connector
- ⚠️ Breaking change: Alluxio 파일 시스템 지원을 제거했어요. Alluxio 파일 시스템 캐시 지원에는 영향이 없어요. (#29596)
- 정적 자격 증명을 사용할 때 Google Cloud Storage에서의 읽기 성능을 개선했어요. (#29776)
- S3에서 데이터를 읽을 때의 간헐적 실패를 수정했어요. (#29419)
Iceberg connector
object_store_layout_enabled를 활성화하지 않고도data_location테이블 속성을 구성하도록 허용했어요. (#28887)parquet.writer.block-row-count구성 속성 또는parquet_writer_block_row_count세션 속성으로 Parquet 작성기 행 그룹의 행 수를 제한하는 지원을 추가했어요. (#29673)iceberg.parquet-footer-cache.type구성 속성으로 구성 가능한 Parquet 파일 푸터 캐싱 지원을 추가했어요. (#29684)write.object-storage.partitioned-paths테이블 속성 지원을 추가했어요. (#27633)- Iceberg REST 카탈로그에서 접두어 경로(prefixed path) 저장소 자격 증명 지원을 추가했어요. (#29641)
- Iceberg v3 테이블에서 geometry와 geography 값 읽기·쓰기 지원을 추가했어요. (#27893)
- REST와 JDBC 카탈로그에서 뷰를 만들 때
location속성 지원을 추가했어요. (#29724) - 스플릿 최대 크기를 제어하는
iceberg.max-split-size구성 속성과max_split_size세션 속성을 추가했어요. 이것은 실험적experimental_split_size세션 속성을 대체해요. (#29894) target_max_file_size와parquet_writer_row_group_size테이블 속성 지원을 추가했어요. Iceberg 네이티브write.target-file-size-bytes와write.parquet.row-group-size-bytes속성으로 영속화돼요. (#28250)- ⚠️ Breaking change:
$files메타데이터 테이블의lower_bounds와upper_bounds컬럼을map(integer, varchar)에서 타입이 지정된 row 값으로 변경했어요.lower_bounds[1]을 사용하거나 이 컬럼들을 json으로 캐스팅하는 쿼리는 업데이트해야 해요. (#23147) - ⚠️ Breaking change:
target_max_file_size와parquet_writer_row_group_size세션 속성(더 이상 사용되지 않는parquet_writer_block_size별칭 포함)을 제거했어요. 대신 동등한 테이블 속성을 사용하세요. (#28250) - ⚠️ Breaking change: Alluxio 파일 시스템 지원을 제거했어요. Alluxio 파일 시스템 캐시 지원에는 영향이 없어요. (#29596)
$partitions메타데이터 테이블에 대한 쿼리 성능을 개선했어요. (#23147)IN조건자로 테이블 이름을 필터링하는iceberg_tables시스템 테이블에 대한 쿼리 성능을 개선했어요. (#29964)- Parquet 파일의 고카디널리티 문자열 컬럼에 대한 압축·읽기 성능을 개선했어요.
parquet.writer.delta-length-byte-array-encoding-enabled구성 속성을false로 설정해 비활성화할 수 있어요. (#29246, #29616) - 람다 표현식 안의 중첩 필드에 접근하는 쿼리의 성능을 개선했어요. (#29532)
- 동등성 삭제 파일이 많은 테이블을 읽을 때 메모리 사용량을 줄였어요. (#29643)
- 정적 자격 증명을 사용할 때 Google Cloud Storage에서의 읽기 성능을 개선했어요. (#29776)
- variant 메타데이터의 최대 지원 크기를 16MB에서 128MB로 늘렸어요. (#29423)
- 고정 저장 위치를 가진 뷰에 대해
CREATE OR REPLACE MATERIALIZED VIEW를 실행할 때 구체화 뷰 데이터가 손실되는 문제를 수정했어요. (#29481) - REST와 JDBC 카탈로그에서
CREATE OR REPLACE VIEW를 실행할 때 뷰의 커스텀 저장 위치가 손실되는 문제를 수정했어요. (#25425, #29755) - 중첩 필드를 참조하는 삭제 파일이 있는 테이블을 읽을 때의 쿼리 실패를 수정했어요. (#29763)
- 타입이 변경된 컬럼의 통계를 읽을 때의 실패를 수정했어요. (#29802)
iceberg.rest-catalog.session이NONE인 REST 카탈로그에서 OAuth 2.0으로 중첩 네임스페이스를 나열할 때 과도한 토큰 요청을 수정했어요. (#29722)- identity 변환으로만 파티셔닝된 테이블을 업데이트할 때 데이터 파일당 여러 삭제 파일이 생성되는 문제를 수정했어요. (#28276)
- Iceberg REST 카탈로그에서 스키마를 나열하는 동안 중첩 네임스페이스가 동시에 삭제될 때의 실패를 수정했어요. (#29500)
- 테이블에 대한 접근이 거부되었을 때 Glue 카탈로그에서 테이블의 컬럼·주석을 나열할 때의 실패를 수정했어요. (#29995)
- 하위 디렉토리로 범위가 지정된 vended 자격 증명으로 계층적 네임스페이스를 가진 Azure Storage에 접근할 때의 실패를 수정했어요. (#29293)
- S3에서 데이터를 읽을 때의 간헐적 실패를 수정했어요. (#29419)
Lakehouse connector
parquet.writer.block-row-count구성 속성 또는parquet_writer_block_row_count세션 속성으로 Parquet 작성기 행 그룹의 행 수를 제한하는 지원을 추가했어요. (#29673)- 정적 자격 증명을 사용할 때 Google Cloud Storage에서의 읽기 성능을 개선했어요. (#29776)
- S3에서 데이터를 읽을 때의 간헐적 실패를 수정했어요. (#29419)
MySQL connector
- 저장된 값이 trailing 공백에서만 다른 경우 char 또는 varchar 컬럼을 동등성·IN 조건자로 필터링할 때의 잘못된 결과를 수정했어요. 문자 컬럼에 대한 부등식·범위 조건자는 더 이상 푸시다운되지 않아요. (#29952, #29939)
Oracle connector
- char에서 varchar로의 CAST가 Oracle에 푸시다운될 때 이전에는 버림 없이 블랭크 패딩을 유지하던 잘못된 결과를 수정했어요. (#29939)
PostgreSQL connector
- PostgreSQL
point타입을 Trinogeometry타입으로 읽고 쓰는 지원을 추가했어요. (#29568) - PostGIS geometry 컬럼이 있는 테이블을 읽을 때의 실패를 수정했어요. (#29505)
Redis connector
redis.tls.*구성 속성으로 구성 가능한 Redis TLS 연결 지원을 추가했어요. (#8091)
SQL Server connector
- ⚠️ Breaking change: 저장된 값이 trailing 공백에서만 다른 경우 char 또는 varchar 컬럼을 동등성·IN 조건자로 필터링할 때의 잘못된 결과를 수정했어요. 문자 컬럼에 대한 부등식·범위 조건자는 더 이상 푸시다운되지 않으므로, 그런 조건자의 푸시다운에 의존하는
DELETE나UPDATE는 실패해요. (#29952, #29939)
TPC-DS connector
- TPC-DS 데이터 생성기를 버전 1.7로 업데이트했어요. 일부 생성 데이터와 테이블 통계가 변경돼요. (#30022)
SPI
- 명명된 타입의 정적 메서드로 스칼라 함수를 등록하는
@StaticMethod어노테이션을 추가했어요.T::method(args)로 호출할 수 있어요. (#29385) - 수신 타입의 메서드로 스칼라 함수를 등록하는
@InstanceMethod어노테이션을 추가했어요.expr.method(args)로 호출할 수 있어요. (#29399) - Java로 구현된 함수의 인자 이름을 선언하는
@Name어노테이션을 추가했어요. (#29530) - 커넥터 표현식 푸시다운에서 람다 표현식 지원을 추가했어요. (#29532)
- 커넥터 테이블 함수에 선택적 설명 지원을 추가했어요. (#29830)
- 커넥터 페이지 소스가 엔진이 제공한
MemoryContext를 통해 메모리 사용량을 보고하는 지원을 추가했어요. (#29843) - ⚠️ Breaking change:
ConnectorSplitManager.getSplits의DynamicFilter파라미터를 동적 필터 컬럼 집합으로 교체하고, 현재 조건자를DynamicFilterSnapshot으로ConnectorSplitSource.getNextBatch에 전달했어요. (#29206) - ⚠️ Breaking change:
Constraint에서predicate를 제거하고 파티션·스플릿 정리 중 표현식 평가용ConnectorExpressionEvaluator인터페이스를 추가했어요. (#29289) - ⚠️ Breaking change:
ConnectorPageSourceProvider와ConnectorPageSinkProvider에서 더 이상 사용되지 않는 메서드를 제거했어요. (#29562) - ⚠️ Breaking change:
TableFunctionProcessorProvider에서 더 이상 사용되지 않는 메서드를 제거했어요. (#29618)
더 알아보기 (Learn more)
다음 버전의 변경 사항은 Release 483에서 확인해 보세요.