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 조건자에서 SYMMETRICASYMMETRIC 키워드 지원을 추가했어요. (#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 값을 DISTINCTGROUP 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-splitshive.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_sizeparquet_writer_row_group_size 테이블 속성 지원을 추가했어요. Iceberg 네이티브 write.target-file-size-byteswrite.parquet.row-group-size-bytes 속성으로 영속화돼요. (#28250)
  • ⚠️ Breaking change: $files 메타데이터 테이블의 lower_boundsupper_bounds 컬럼을 map(integer, varchar)에서 타입이 지정된 row 값으로 변경했어요. lower_bounds[1]을 사용하거나 이 컬럼들을 json으로 캐스팅하는 쿼리는 업데이트해야 해요. (#23147)
  • ⚠️ Breaking change: target_max_file_sizeparquet_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.sessionNONE인 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 타입을 Trino geometry 타입으로 읽고 쓰는 지원을 추가했어요. (#29568)
  • PostGIS geometry 컬럼이 있는 테이블을 읽을 때의 실패를 수정했어요. (#29505)

Redis connector

  • redis.tls.* 구성 속성으로 구성 가능한 Redis TLS 연결 지원을 추가했어요. (#8091)

SQL Server connector

  • ⚠️ Breaking change: 저장된 값이 trailing 공백에서만 다른 경우 char 또는 varchar 컬럼을 동등성·IN 조건자로 필터링할 때의 잘못된 결과를 수정했어요. 문자 컬럼에 대한 부등식·범위 조건자는 더 이상 푸시다운되지 않으므로, 그런 조건자의 푸시다운에 의존하는 DELETEUPDATE는 실패해요. (#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.getSplitsDynamicFilter 파라미터를 동적 필터 컬럼 집합으로 교체하고, 현재 조건자를 DynamicFilterSnapshot으로 ConnectorSplitSource.getNextBatch에 전달했어요. (#29206)
  • ⚠️ Breaking change: Constraint에서 predicate를 제거하고 파티션·스플릿 정리 중 표현식 평가용 ConnectorExpressionEvaluator 인터페이스를 추가했어요. (#29289)
  • ⚠️ Breaking change: ConnectorPageSourceProviderConnectorPageSinkProvider에서 더 이상 사용되지 않는 메서드를 제거했어요. (#29562)
  • ⚠️ Breaking change: TableFunctionProcessorProvider에서 더 이상 사용되지 않는 메서드를 제거했어요. (#29618)

더 알아보기 (Learn more)

다음 버전의 변경 사항은 Release 483에서 확인해 보세요.