릴리스 362
릴리스 362 (2021년 9월 20일)
이번 릴리스에서는 listagg() 지원과 조인·DISTINCT 성능 개선, 여러 커넥터의 타입 매핑 변경이 핵심이에요.
출처: Trino 릴리스 362 문서
본문
일반 (General)
listagg()지원을 추가했어요. (#4835)- 조인 성능을 개선했어요. (#8974)
DISTINCT절을 포함한 쿼리의 성능을 개선했어요. (#8967, #9194)- 워커 노드 간 데이터 재파티셔닝의 CPU 오버헤드를 줄여 쿼리 성능을 개선했어요. (#9102)
- 연산자 통계에 보고되는 메트릭을
connectorMetrics와metrics로 나눴어요. (#9156) system.materialized_views를 조회하면서 동시에 구체화된 뷰가 삭제될 때 발생하던 실패를 방지했어요. (#9050)DISTINCT와FILTER절을 포함한 집계의 잘못된 결과를 고쳤어요. (#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 ROLE에IN catalog절을 추가해 현재 세션 카탈로그 대신 문의 대상 카탈로그를 지정할 수 있게 했어요. 이 변경은 향후 시스템 역할을 지원하는 데 필요해요. 이 문들의 기존 동작은deprecated.legacy-catalog-roles구성값으로 되돌릴 수 있어요. (#9087)
웹 UI (Web UI)
- 클러스터 개요 페이지에 쿼리 오류 정보를 추가했어요. (#8762)
JDBC 드라이버
- 스키마 이름으로 필터링할 때
java.sql.DatabaseMetaDataAPI로 테이블 컬럼을 나열하는 성능을 개선했어요. (#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) - 나노초 정밀도로 저장된
INT64Parquet 타임스탬프 읽기를 지원해요. (#9188) - 실험적 Parquet 라이터가 켜진 상태에서 나노초 정밀도
INT64Parquet 타임스탬프 쓰기를 지원해요. 이걸 쓰려면 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-schemas나query_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
double과decimal타입 사이에서 전환하는 것을 지원해요.tpch.double-type-mapping구성값으로 설정할 수 있어요. (#7990)
SPI
Connector.isSingleStatementWritesOnly()가 기본으로true를 반환하도록 바꿨어요. (#8872)