릴리스 362

릴리스 362 (2021년 9월 20일)

이번 릴리스에서는 listagg() 지원과 조인·DISTINCT 성능 개선, 여러 커넥터의 타입 매핑 변경이 핵심이에요.

출처: Trino 릴리스 362 문서

본문

일반 (General)

  • listagg() 지원을 추가했어요. (#4835)
  • 조인 성능을 개선했어요. (#8974)
  • DISTINCT 절을 포함한 쿼리의 성능을 개선했어요. (#8967, #9194)
  • 워커 노드 간 데이터 재파티셔닝의 CPU 오버헤드를 줄여 쿼리 성능을 개선했어요. (#9102)
  • 연산자 통계에 보고되는 메트릭을 connectorMetricsmetrics로 나눴어요. (#9156)
  • system.materialized_views를 조회하면서 동시에 구체화된 뷰가 삭제될 때 발생하던 실패를 방지했어요. (#9050)
  • DISTINCTFILTER 절을 포함한 집계의 잘못된 결과를 고쳤어요. (#9265)
  • 행 패턴에 역참조(back references)가 포함된 경우 잘못된 쿼리 결과를 고쳤어요. (#9109)
  • ALTER SCHEMA ... SET AUTHORIZATION이 세션 카탈로그 대신 스키마의 카탈로그로 역할을 해석하도록 고쳤어요. (#9066)
  • 쿼리에 varchar에서 더 짧은 char로의 캐스트가 포함된 경우 발생하던 실패를 고쳤어요. (#9036)
  • 소스 테이블에 숨은 컬럼이 있을 때 INSERT 문의 계획 실패를 고쳤어요. (#9150)
  • 재귀·기본 플랜·재귀 단계 플랜이 중복 출력을 만들 때 재귀 쿼리 계획을 고쳤어요. (#9153)
  • optimizer_rule_stats 시스템 테이블을 조회할 때 발생하던 실패를 고쳤어요. (#8700)
  • 커넥터로 프로젝션을 프러시다운하는 쿼리의 실패를 고쳤어요. (#6200)
  • WHERE 절에 IS NULL, AND, OR 조건이 포함된 쿼리의 계획 타임아웃을 고쳤어요. (#9250)
  • 서브쿼리의 컬럼이 상수로 알려진 경우 ORDER BY ... LIMIT가 포함된 쿼리의 실패를 고쳤어요. (#9171)

보안 (Security)

  • CREATE ROLE, DROP ROLE, GRANT ROLE, REVOKE ROLE, SET ROLEIN catalog 절을 추가해 현재 세션 카탈로그 대신 문의 대상 카탈로그를 지정할 수 있게 했어요. 이 변경은 향후 시스템 역할을 지원하는 데 필요해요. 이 문들의 기존 동작은 deprecated.legacy-catalog-roles 구성값으로 되돌릴 수 있어요. (#9087)

웹 UI (Web UI)

  • 클러스터 개요 페이지에 쿼리 오류 정보를 추가했어요. (#8762)

JDBC 드라이버

  • 스키마 이름으로 필터링할 때 java.sql.DatabaseMetaData API로 테이블 컬럼을 나열하는 성능을 개선했어요. (#9214)

서버 RPM

  • 어떤 머신 타입에도 설치할 수 있도록 RPM 아키텍처를 noarch로 바꿨어요. (#9187)

BigQuery 커넥터

  • BigQuery 뷰의 대소문자 무시 이름 매칭을 지원해요. (#9164)
  • BigQuery datetime의 타입 매핑을 Trino에서 timestamp(3)에서 timestamp(6)으로 바꿨어요. (#9052)
  • BigQuery time의 타입 매핑을 Trino에서 time with time zone에서 time(6)으로 바꿨어요. (#9052)
  • BigQuery timestamp의 타입 매핑을 Trino에서 timestamp(3) with time zone에서 timestamp(6) with time zone으로 바꿨어요. (#9052)
  • datetime 컬럼의 조건을 BigQuery로 프러시다운하는 쿼리의 실패를 고쳤어요. (#9005)
  • 정밀도·스케일이 기본값이 아닌 매개변수화된 numeric 타입을 쓸 때 잘못된 결과가 나오던 문제를 고쳤어요. (#9060)
  • 지원되지 않는 데이터 타입 컬럼이 있는 테이블에 접근할 때 쿼리가 실패하던 문제를 고쳤어요. (#9086)
  • +infinity-infinity 값을 포함한 float64 컬럼의 조건을 BigQuery로 프러시다운하는 쿼리의 실패를 고쳤어요. (#9122)

Cassandra 커넥터

  • 투기적 실행(speculative execution)의 최소 횟수를 2에서 1로 바꿨어요. (#9096)

Hive 커넥터

  • Hive 타임스탬프 정밀도가 NANOSECONDS일 때 밀리초·마이크로초 정밀도로 저장된 Parquet 타임스탬프를 논리 타입 주석이 있는 INT64로 읽는 것을 지원해요. (#9139)
  • 나노초 정밀도로 저장된 INT64 Parquet 타임스탬프 읽기를 지원해요. (#9188)
  • 실험적 Parquet 라이터가 켜진 상태에서 나노초 정밀도 INT64 Parquet 타임스탬프 쓰기를 지원해요. 이걸 쓰려면 Hive 타임스탬프 정밀도를 NANOSECONDS로 설정해야 해요. (#9188)
  • HTTP(S) URL로 S3 매핑을 로드하는 것을 지원해요. hive.s3.security-mapping.config-file 속성은 이제 로컬 파일이나 URL을 가리킬 수 있어요. (#6210)
  • Trino가 버케팅을 기본 지원하지 않는 타입의 컬럼으로 버켓된 테이블 읽기를 허용해요. 그런 테이블로의 쓰기는 여전히 허용되지 않아요. (#8986)
  • JMX로 보고되는 통계 집합을 확장해 Glue 통계 API 호출 메트릭을 포함하게 했어요. (#9100)
  • 쓰기 연산이 만드는 최대 파일 크기를 기본 1GB로 제한했어요. 제한은 정확하지 않고 최선 노력으로 적용돼요. hive.target-max-file-size 구성값이나 target_max_file_size 세션 속성으로 설정할 수 있어요. (#7991)
  • Trino가 소스 테이블에 파티션 키 필터를 쓰도록 강제할 스키마 목록을 지정할 수 있게 했어요. hive.query-partition-filter-required-schemasquery_partition_filter_required_schemas 세션 속성으로 지정할 수 있어요. 이 목록은 hive.query-partition-filter-required 구성값이나 query_partition_filter_required 세션 속성이 true로 설정된 경우에만 고려돼요. (#9106)
  • ARM64에서 Snappy 압축으로 Parquet 파일을 쓸 때 발생하던 실패를 고쳤어요. (#9148)
  • 사전(dictionary)이 포함된 Parquet 파일을 읽을 때 성능 회귀를 고쳤어요. (#9161)
  • 비파티션 비트랜잭션 테이블을 조회할 때 Hive metastore의 잘못된 테이블 잠금을 고쳤어요. (#9070)
  • 실험적 Parquet 라이터를 쓸 때 발생하던 ArrayIndexOutOfBoundsException을 고쳤어요. (#5518)
  • 특정 준무효 스키마를 가진 구버전 Avro로 쓴 Avro 테이블 읽기 문제를 고쳤어요. (#9114)
  • Glue metastore를 쓰고 테이블 통계 수집이 켜져 있을 때 INSERT/UPDATE/ANALYZE 쿼리가 실패할 수 있던 문제를 고쳤어요. (#9297)

Iceberg 커넥터

  • Iceberg uuid 타입 지원을 추가했어요. (#6663)
  • 테이블 메타데이터와 Parquet 파일 메타데이터 사이의 중첩 필드 매핑을 고쳤어요. 이를 통해 Parquet에 저장된 Iceberg 테이블의 row 타입 컬럼 진화를 지원해요. (#9124)
  • array·map·row 타입 컬럼으로 필터링하는 쿼리의 실패를 고쳤어요. (#8822)
  • 실험적 Parquet 라이터를 쓸 때 발생하던 ArrayIndexOutOfBoundsException을 고쳤어요. (#5518)
  • 특정 Avro 메타데이터 파일을 읽는 오류로 인한 쿼리 실패를 고쳤어요. (#9114)

Pinot 커넥터

  • varbinary 컬럼의 필터를 Pinot로 프러시다운하는 것을 지원해요. (#9180)
  • 집계와 varchar 컬럼의 IN·NOT IN 필터가 포함된 쿼리의 잘못된 결과를 고쳤어요. (#9133)
  • +Infinity-Infinity 값이 있는 real·double 컬럼의 필터가 포함된 쿼리의 실패를 고쳤어요. (#9180)

TPC-H 커넥터

  • 부동소수점 값 매핑을 SQL doubledecimal 타입 사이에서 전환하는 것을 지원해요. tpch.double-type-mapping 구성값으로 설정할 수 있어요. (#7990)

SPI

  • Connector.isSingleStatementWritesOnly()가 기본으로 true를 반환하도록 바꿨어요. (#8872)

더 알아보기 (Learn more)