릴리스 477

릴리스 477 (2025년 9월 24일)

Trino 477 버전이 2025년 9월 24일에 공개됐어요. Lakehouse 커넥터와 희소 벡터용 cosine_distance()를 추가하고, 테이블 브랜치와 기본 컬럼 값 지원을 담은 큰 릴리스예요.

출처: 문서

본문

일반 (General)

  • Lakehouse 커넥터를 추가했어요. (#25347)
  • ALTER MATERIALIZED VIEW ... SET AUTHORIZATION을 지원해요. (#25910)
  • 테이블을 만들거나 새 컬럼을 추가할 때 기본 컬럼 값(default column values)을 지원해요. (#25679)
  • ALTER VIEW ... REFRESH를 지원해요. (#25906)
  • 테이블 브랜치(branch) 관리와 조회를 지원해요. (#25751, #26300, #26136)
  • 희소 벡터(sparse vector)를 위한 cosine_distance() 함수를 추가했어요. (#24027)
  • ⚠️ 호환성 깨짐 변경: decimal 값의 산술 연산에서 precision과 scale 추론을 개선했어요. 이전 동작은 deprecated.legacy-arithmetic-decimal-operators 구성 속성을 true로 설정하면 복원할 수 있어요. (#26422)
  • ⚠️ 호환성 깨짐 변경: 서버 바이너리 배포와 Docker 컨테이너에서 HTTP 서버 이벤트 리스너 플러그인을 제거했어요. (#25967)
  • ⚠️ 호환성 깨짐 변경: 카탈로그를 모든 노드에 배포하도록 요구를 강제해요. (#26063)
  • 쿼리가 쓰는 데이터 양에 대한 한도를 구성할 수 있도록 query.max-write-physical-size 구성 속성과 query_max_write_physical_size 세션 속성을 추가했어요. (#25955)
  • 주어진 개체에 대한 인증 정보를 노출하는 system.metadata.tables_authorization, system.metadata.schemas_authorization, system.metadata.functions_authorization 테이블을 추가했어요. (#25907)
  • 리소스 그룹에 물리 데이터 스캔 추적을 추가했어요. (#25003)
  • system.runtime.tasks 테이블에 internal_network_input_bytes 컬럼을 추가했어요. (#26524)
  • to_geojson_geometry()에서 Geometry 타입을 지원해요. (#26451)
  • system.runtime.tasks 테이블에서 raw_input_bytesraw_input_rows 컬럼을 제거했어요. (#26524)
  • 로드에 실패한 카탈로그를 system.metadata.catalogs에 포함하지 않아요. (#26493)
  • discovery.type 구성 속성이 dns로 설정됐을 때 모든 워커에 DNS 이름을 제공하는 Kubernetes류 환경의 노드 발견 구성을 단순화했어요. (#26119)
  • row_number(), rank(), dense_rank(), ORDER BY ... LIMIT가 포함된 특정 쿼리의 메모리 사용량을 개선했어요. (#25946)
  • GROUP BY가 포함된 쿼리의 메모리 사용량을 개선했어요. (#25879)
  • DISTINCT 또는 ORDER BY 절이 포함된 집계가 있는 쿼리의 필요 메모리를 줄였어요. (#26276)
  • 노드 수가 적은 클러스터에서 단순 쿼리의 성능을 개선했어요. (#26525)
  • 느린 데이터 소스에 쿼리할 때, 그리고 쿼리가 조기 종료되거나 취소될 때 클러스터 안정성을 개선했어요. (#26602)
  • 스필(spill) 시 조인과 집계의 신뢰성을 개선했어요. (#25892, #25976)
  • GROUP BY가 포함된 쿼리에서 스필 파일이 정리되도록 보장해요. (#26141)
  • 조인이 포함된 쿼리의 메모리 부족(out-of-memory) 오류를 줄였어요. (#26142)
  • 스필이 활성화됐을 때 GROUP BY가 포함된 쿼리의 잘못된 결과를 고쳤어요. (#25892)
  • GROUP BY AUTO에서 다른 표현식에 집계가 있을 때 실패하던 걸 고쳤어요. (#25987)
  • ST_Contains(), ST_Intersects(), ST_Distance() 함수를 쓰는 조인이 포함된 쿼리의 잘못된 결과를 고쳤어요. (#26021)
  • 클라이언트 spooling 프로토콜이 활성화됐을 때 메모리 부족 실패를 고쳤어요. (#25999)
  • ORDER BY 절이 포함된 집계가 있는 GROUP BY 쿼리를 실행할 때 JVM 메모리 부족 오류로 워커가 크래시하던 걸 고쳤어요. (#26276)
  • SET SESSION AUTHORIZATION을 통해 그룹으로 접근이 부여됐을 때 grant가 잘못 무시되던 걸 고쳤어요. (#26344)
  • 타일이 전체 지오메트리 영역을 덮지 않던 geometry_to_bing_tiles의 잘못된 결과를 고쳤어요. (#26459)
  • ARRAY 타입 안에 중첩된 ROW 값에 대해 집계할 때 사용된 메모리 양을 과도하게 보고하던 걸 고쳤어요. (#26405)
  • EXPLAIN ANALYZE 출력에서 물리 입력 메트릭의 회계를 개선했어요. (#26637)

웹 UI (Web UI)

  • 미리보기 Web UI에 쿼리 상세 페이지를 추가했어요. (#25554)
  • 미리보기 Web UI에 쿼리 JSON 페이지를 추가했어요. (#26319)
  • 미리보기 Web UI에 쿼리 라이브 계획 흐름 페이지를 추가했어요. (#26392)
  • 미리보기 Web UI에 쿼리 참조(references) 페이지를 추가했어요. (#26327)
  • 미리보기 Web UI에 쿼리 스테이지 보기를 추가했어요. (#26440)
  • 미리보기 Web UI에 쿼리 라이브 계획 흐름 페이지를 추가했어요. (#26610)
  • 외부 네트워크 접근이 없는 Trino 클러스터의 UI 응답성을 개선했어요. (#26031)

CLI

  • 쿼리 히스토리에서 Alt+↑ 또는 Alt+↓로 키보드 탐색을 지원해요. (#26138)

Delta Lake 커넥터

  • 자격 증명 없이 GCS를 사용하는 것을 지원해요. (#25810)
  • s3.socket-read-timeout 구성 속성의 이름을 s3.socket-timeout으로 바꿨어요. (#26263)
  • EXPLAIN ANALYZE VERBOSE 출력에 파일 시스템 캐시에서 읽은 데이터에 대한 메트릭을 추가했어요. (#26342)
  • Alluxio 사용 시 리소스 사용률을 개선했어요. (#26121)
  • 네이티브 파일 시스템 리소스를 가능한 한 빨리 해제해 리소스 사용률을 개선했어요. (#26085)
  • azure.multipart-write-enabled 구성 옵션이 true로 설정됐을 때 Azure의 쓰기 집약적 쿼리 처리량을 개선했어요. (#26225)
  • S3 스로틀링으로 인한 쿼리 실패를 줄였어요. (#26407)
  • 비정상적으로 큰 Parquet footer를 디코딩할 때 메모리 부족 오류로 워커가 크래시하는 것을 방지했어요. (#25973)
  • 오래된 버전의 PyArrow가 만든 Parquet 파일에서 읽을 때 잘못된 결과가 나오던 걸 고쳤어요. (#26058)
  • 삭제 벡터(deletion vector)가 활성화됐을 때 잘못된 형태의 체크포인트 파일을 쓰던 걸 고쳤어요. (#26145)
  • variant 컬럼에 null 값이 포함된 테이블을 읽을 때 실패하던 걸 고쳤어요. (#26016, #26184)
  • Parquet 파일에서 decimal 숫자를 읽을 때 선언된 precision이 Parquet 메타데이터에 설명된 precision과 다르면 잘못된 결과가 나오던 걸 고쳤어요. (#26203)
  • 테이블이 삭제 벡터를 쓰고 파티션 경로에 특수 문자가 있으면 잘못된 결과가 나오던 걸 고쳤어요. (#26299)

Exasol 커넥터

  • Exasol hashtype 타입을 지원해요. (#26512)
  • LIMIT가 포함된 쿼리의 성능을 개선했어요. (#26592)

Hive 커넥터

  • 자격 증명 없이 GCS를 사용하는 것을 지원해요. (#25810)
  • Esri JSON 포맷을 사용하는 테이블 읽기를 지원해요. (#25241)
  • 텍스트 파일 포맷에서 extended_boolean_literal을 지원해요. (#21156)
  • EXPLAIN ANALYZE VERBOSE 출력에 파일 시스템 캐시에서 읽은 데이터에 대한 메트릭을 추가했어요. (#26342)
  • Twitter Elephantbird protobuf 역직렬화를 지원해요. (#26305)
  • s3.socket-read-timeout 구성 속성의 이름을 s3.socket-timeout으로 바꿨어요. (#26263)
  • azure.multipart-write-enabled 구성 옵션이 true로 설정됐을 때 Azure의 쓰기 집약적 쿼리 처리량을 개선했어요. (#26225)
  • S3 스로틀링으로 인한 쿼리 실패를 줄였어요. (#26407)
  • 비정상적으로 큰 Parquet footer를 디코딩할 때 메모리 부족 오류로 워커가 크래시하는 것을 방지했어요. (#25973)
  • Alluxio 사용 시 리소스 사용률을 개선했어요. (#26121)
  • 오래된 버전의 PyArrow가 만든 Parquet 파일에서 읽을 때 잘못된 결과가 나오던 걸 고쳤어요. (#26058)
  • 날짜 파티션 프로젝션의 partition_projection_format 컬럼 속성을 읽는 문제를 고쳤어요. (#25642)
  • Parquet 파일에서 decimal 숫자를 읽을 때 선언된 precision이 Parquet 메타데이터에 설명된 precision과 다르면 잘못된 결과가 나오던 걸 고쳤어요. (#26203)
  • 텍스트 파일이 포함된 테이블의 물리 입력 읽기 시간 메트릭을 고쳤어요. (#26612)
  • 인용(quoting)과 이스케이프가 비활성화된 Hive OpenCSV 테이블 읽기를 지원해요. (#26619)

HTTP Event Listener

  • http-event-listener.connect-http-method 구성 속성으로 사용할 HTTP 메서드를 구성하는 것을 지원해요. (#26181)

Hudi 커넥터

  • parquet.max-read-block-row-count 구성 속성이나 parquet_max_read_block_row_count 세션 속성으로 Parquet 파일 읽기의 배치 크기를 구성하는 것을 지원해요. (#25981)
  • 자격 증명 없이 GCS를 사용하는 것을 지원해요. (#25810)
  • s3.socket-read-timeout 구성 속성의 이름을 s3.socket-timeout으로 바꿨어요. (#26263)
  • Alluxio 사용 시 리소스 사용률을 개선했어요. (#26121)
  • azure.multipart-write-enabled 구성 옵션이 true로 설정됐을 때 Azure의 쓰기 집약적 쿼리 처리량을 개선했어요. (#26225)
  • S3 스로틀링으로 인한 쿼리 실패를 줄였어요. (#26407)
  • 비정상적으로 큰 Parquet footer를 디코딩할 때 메모리 부족 오류로 워커가 크래시하는 것을 방지했어요. (#25973)
  • 오래된 버전의 PyArrow가 만든 Parquet 파일에서 읽을 때 잘못된 결과가 나오던 걸 고쳤어요. (#26058)
  • Parquet 파일에서 decimal 숫자를 읽을 때 선언된 precision이 Parquet 메타데이터에 설명된 precision과 다르면 잘못된 결과가 나오던 걸 고쳤어요. (#26203)

Iceberg 커넥터

  • 독립 인증 방식으로 SIGV4를 지원해요. iceberg.rest-catalog.security 구성 속성을 SIGV4로 설정하면 켤 수 있어요. iceberg.rest-catalog.sigv4-enabled 구성 속성은 더 이상 지원하지 않아요. (#26218)
  • 자격 증명 없이 GCS를 사용하는 것을 지원해요. (#25810)
  • compression_codec 테이블 속성으로 테이블을 읽을 때 사용할 압축 코덱을 구성할 수 있어요. compression_codec 세션은 더 이상 지원하지 않아요. (#25755)
  • EXPLAIN ANALYZE VERBOSE 출력에 파일 시스템 캐시에서 읽은 데이터에 대한 메트릭을 추가했어요. (#26342)
  • s3.socket-read-timeout 구성 속성의 이름을 s3.socket-timeout으로 바꿨어요. (#26263)
  • expire_snapshots 프로시저의 성능을 개선했어요. (#26230)
  • remove_orphan_files 프로시저의 성능을 개선했어요. (#26326, #26438)
  • $files 메타데이터 테이블 쿼리의 성능을 개선했어요. (#25677)
  • task 재시도가 활성화됐을 때 Iceberg 테이블에 쓰는 성능을 개선했어요. (#26620)
  • remove_orphan_files 프로시저의 메모리 사용량을 줄였어요. (#25847)
  • azure.multipart-write-enabled 구성 옵션이 true로 설정됐을 때 Azure의 쓰기 집약적 쿼리 처리량을 개선했어요. (#26225)
  • S3 스로틀링으로 인한 쿼리 실패를 줄였어요. (#26407, #26432)
  • 비정상적으로 큰 Parquet footer를 디코딩할 때 메모리 부족 오류로 워커가 크래시하는 것을 방지했어요. (#25973)
  • Alluxio 사용 시 리소스 사용률을 개선했어요. (#26121)
  • Iceberg 테이블에 쓰는 과정에서 생성되는 메타데이터 양을 줄였어요. (#15439)
  • REFRESH MATERIALIZED VIEW의 성능 회귀와 잠재적 쿼리 실패를 고쳤어요. (#26051)
  • 오래된 버전의 PyArrow가 만든 Parquet 파일에서 읽을 때 잘못된 결과가 나오던 걸 고쳤어요. (#26058)
  • 최상위 파티션 컬럼에 null 값이 있을 때 optimize_manifests 프로시저가 실패하던 걸 고쳤어요. (#26185)
  • Parquet 파일에서 decimal 숫자를 읽을 때 선언된 precision이 Parquet 메타데이터에 설명된 precision과 다르면 잘못된 결과가 나오던 걸 고쳤어요. (#26203)
  • 파티셔닝된 테이블에서 OPTIMIZE_MANIFESTS를 실행할 때 코디네이터 메모리 부족 실패를 고쳤어요. (#26323)

Kafka Event Listener

  • kafka-event-listener.max-request-size 구성 속성으로 최대 요청 크기를 구성하는 것을 지원해요. (#26129)
  • kafka-event-listener.batch-size 구성 속성으로 배치 크기를 구성하는 것을 지원해요. (#26129)

Memory 커넥터

  • 기본 컬럼 값을 지원해요. (#25679)
  • ALTER VIEW ... REFRESH를 지원해요. (#25906)

MongoDB 커넥터

  • 요소 타입이 다른 array 타입을 읽을 때 실패하던 걸 고쳤어요. (#26585)

MySQL Event Listener

  • mysql-event-listener.terminate-on-initialization-failure가 비활성화됐으면 시작 실패를 무시해요. (#26252)

OpenLineage Event Listener

  • OpenLineage trino_query_context 페이셋에 사용자 식별 필드를 추가했어요. (#26074)
  • trino_metadata 페이셋에 query_id 필드를 추가했어요. (#26074)
  • openlineage-event-listener.job.name-format 구성 속성으로 job 페이셋 이름을 사용자 지정할 수 있어요. (#25535)

PostgreSQL 커넥터

  • PostGISpublic이 아닌 스키마에 설치됐을 때 geometry 타입을 지원해요. (#25972)

SPI

  • Type.getObjectValue에서 ConnectorSession을 제거했어요. (#25945)
  • 사용하지 않는 NodeManager.getEnvironment 메서드를 제거했어요. (#26096)
  • @Experimental 애노테이션을 제거했어요. (#26200)
  • 더 이상 사용하지 않는 ConnectorPageSource.getNextPage 메서드를 제거했어요. (#26222)
  • EventListener#splitCompletedConnectorMetadata.refreshMaterializedView 지원을 제거했어요. (#26436, #26455)
  • 사용하지 않는 CatalogHandle 클래스를 제거했어요. (#26520)
  • ConnectorMetadata.beginRefreshMaterializedViewConnectorMetadata.finishRefreshMaterializedView의 시그니처를 바꿨어요. 다른 카탈로그의 테이블 핸들은 더 이상 이 메서드에 전달되지 않아요. (#26454)
  • NodeManager.getCurrentNode를 더 이상 사용하지 않게 하고 ConnectorContext.getCurrentNode를 권장해요. (#26096)
  • ConnectorMetadata.delegateMaterializedViewRefreshToConnector를 더 이상 사용하지 않게(deprecate) 처리했어요. (#26455)
  • io.trino.spi.eventlistener.QueryStatistics에서 totalBytestotalRows를 제거했어요. (#26524)

더 알아보기 (Learn more)