릴리스 352
릴리스 352 (2021년 2월 9일)
이번 릴리스에서는 WINDOW 절과 UPDATE 지원, OAuth2 인증 보강이 핵심이에요. 여러 커넥터에서도 프러시다운 성능 개선과 버그 수정이 이어졌어요.
출처: Trino 릴리스 352 문서
본문
일반 (General)
WINDOW절 지원을 추가했어요. (#651)- UPDATE 지원을 추가했어요. (#5861)
version()함수를 추가했어요. (#4627)SHOW STATS에서 준비된 문 매개변수를 허용해요. (#6582)- tzdata 버전을 2020d로 업데이트했어요. 그 결과
US/Pacific-New존이 제거돼 더 이상 참조할 수 없어요. (#6660) - 기존
plan_with_table_node_partitioning세션 속성에 대응하는plan-with-table-node-partitioning기능 구성값을 추가했어요. (#6811) rank()윈도우 함수를 쓰는 쿼리의 성능을 개선했어요. (#6333)decimal타입의sum()과avg()성능을 개선했어요. (#6951)- 조인 성능을 개선했어요. (#5981)
- 범위 조건이나 큰
IN목록을 쓰는 쿼리의 계획 시간을 개선했어요. (#6544) - 피어 행(peer rows) 관련 윈도우·스트리밍 집계 의미론을 고쳤어요. 이제 피어 행은
=연산자 대신IS NOT DISTINCT FROM으로 묶여요. (#6472) p가 6보다 큰array(timestamp(p))의 요소를 복잡한 표현식에서 쓸 때 실패하던 문제를 고쳤어요. (#6350)- 조인 절에서 지리공간 함수를 쓰고
spatial_partitioning_table_name이 설정된 경우 발생하던 실패를 고쳤어요. (#6587) - 소스 테이블에 숨은 컬럼이 있을 때
CREATE TABLE AS가 실패하던 문제를 고쳤어요. (#6835)
보안 (Security)
- OAuth2 인증에 쓰이는 HTTP 클라이언트를 구성할 수 있게 했어요. (#6600)
- OAuth2 인증용 토큰 폴링 클라이언트 API를 추가했어요. (#6625)
- OAuth2 인가를 위해 인증서 체인이 포함된 JWK를 지원해요. (#6428)
- OAuth2 구성에 스코프(scopes)를 추가했어요. (#6580)
- OAuth2 인증에서 JWT audience(
aud) 필드를 선택적으로 검증하도록 했어요. (#6501) openid스코프가 요청될 때nonce쿠키를 사용해 OAuth2 재생 공격(replay attacks)을 막았어요. (#6580)
JDBC 드라이버
- OAuth2 인증을 추가했어요. (#6576)
- 새
sessionUser매개변수로 비밀번호 기반 인증 시 사용자 가장(impersonation)을 지원해요. (#6549)
Docker 이미지
- 구성 디렉터리
/usr/lib/trino/etc지원을 제거했어요. 구성은/etc/trino에 둬야 해요. (#6497)
CLI
--session-user명령줄 옵션으로 비밀번호 기반 인증 시 사용자 가장을 지원해요. (#6567)
BigQuery 커넥터
- BigQuery 뷰 정의를 노출하는
view_definition시스템 테이블을 추가했어요. (#3687) - 필터 없이 뷰에
count(*)집계를 두 번 이상 계산할 때 쿼리가 실패하던 문제를 고쳤어요. (#6706)
Hive 커넥터
- ACID 테이블에 대한 UPDATE 지원을 추가했어요. (#5861)
- ORC ACID 테이블에서 기본적으로 이름이 아닌 인덱스로 컬럼을 매칭하도록 했어요. (#6479)
- Parquet 파일에서 기본적으로 인덱스가 아닌 이름으로 컬럼을 매칭하도록 했어요.
hive.parquet.use-column-names구성값과parquet_use_column_names세션 속성으로 바꿀 수 있어요. (#6479) hive.partition-use-column-names구성값과partition_use_column_names세션 속성을 제거했어요. 이제 자동으로 결정돼요. (#6479)array,map,struct데이터 타입 안에 중첩된, 마이크로초·나노초 정밀도(hive.timestamp-precision속성으로 설정) 타임스탬프를 지원해요. (#5195)- LZO 압축을 쓰는 SequenceFile 형식 테이블 읽기를 지원해요. (#6452)
- JMX로 AWS HTTP Client 통계를 노출해요. (#6503)
- 보안 매핑 구성과 추가 자격 증명으로 클라이언트 측 암호화에 쓰는 S3 KMS Key ID를 지정할 수 있게 했어요. (#6802)
- Parquet 파일 형식에서
row,array,map안에 있는 잘못된timestamp값을 쓰던 문제를 고쳤어요. (#6760) - 쿼리 실패 시 발생할 수 있는 S3 연결 누수를 고쳤어요. (#6849)
Iceberg 커넥터
- 라이터별 파티션 수 제한을 구성하는
iceberg.max-partitions-per-writer구성값을 추가했어요. (#6650) optimizer.optimize-metadata-queries구성값이나optimize_metadata_queries세션 속성으로 아이덴티티 파티션 컬럼에 대한 카디널리티 비민감 집계(max(),min(),distinct(),approx_distinct())를 최적화해요. (#5199)- 메타데이터에 잘못된 파일 크기가 저장된 테이블의 쿼리 실패를 고치기 위해
use_file_size_from_metadata카탈로그 세션 속성과iceberg.use-file-size-from-metadata구성값을 제공해요. (#6369) - 테이블 메타데이터와 ORC 파일 메타데이터 사이의 중첩 필드 매핑을 고쳤어요. 이를 통해 ORC에 저장된 Iceberg 테이블의
row타입 컬럼 진화를 지원해요. (#6520)
Kinesis 커넥터
- GZIP 메시지 압축을 지원해요. (#6442)
MySQL 커넥터
- 집계·조건(예:
HAVING절) 계산을 원격 데이터베이스로 프러시다운해 특정 복잡한 쿼리의 성능을 개선했어요. (#6667) stddev_pop,stddev_samp,var_pop,var_samp집계 함수를 쓰는 일부 쿼리에서 집계·조건 계산을 원격 데이터베이스로 프러시다운해 성능을 개선했어요. (#6673)
PostgreSQL 커넥터
- 집계·조건(예:
HAVING절) 계산을 원격 데이터베이스로 프러시다운해 특정 복잡한 쿼리의 성능을 개선했어요. (#6667) stddev_pop,stddev_samp,var_pop,var_samp,covar_pop,covar_samp,corr,regr_intercept,regr_slope집계 함수를 쓰는 일부 쿼리에서 집계·조건 계산을 원격 데이터베이스로 프러시다운해 성능을 개선했어요. (#6731)
Redshift 커넥터
- Redshift에 접근할 때 Redshift JDBC 드라이버를 쓰도록 했어요. 그 결과 카탈로그 구성 파일의
connection-url을jdbc:postgresql:...에서jdbc:redshift:...로 갱신해야 해요. (#6465)
SQL Server 커넥터
- 트랜잭션 스냅샷 격리를 사용해 SQL Server의 트랜잭션 교착(deadlock)으로 인한 쿼리 실패를 방지했어요. (#6274)
- SQL Server의
datetime2타입 정밀도를 존중하도록 했어요. (#6654) CREATE TABLE문에서 Trinotimestamp타입을 SQL Server의datetime2타입으로 매핑해 지원해요. 이전에는 SQL Server의timestamp타입으로 잘못 매핑됐어요. (#6654)time타입 지원을 추가했어요. (#6654)- 집계·조건(예:
HAVING절) 계산을 원격 데이터베이스로 프러시다운해 특정 복잡한 쿼리의 성능을 개선했어요. (#6667) - 인덱스와 제약 조건이 있는 테이블을 조회할 때 발생하던 실패를 고쳤어요. (#6464)
SPI
ConnectorMetadata.applyJoin()메서드를 통한 조인 프러시다운 지원을 추가했어요. (#6752)