릴리스 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-urljdbc:postgresql:...에서 jdbc:redshift:...로 갱신해야 해요. (#6465)

SQL Server 커넥터

  • 트랜잭션 스냅샷 격리를 사용해 SQL Server의 트랜잭션 교착(deadlock)으로 인한 쿼리 실패를 방지했어요. (#6274)
  • SQL Server의 datetime2 타입 정밀도를 존중하도록 했어요. (#6654)
  • CREATE TABLE 문에서 Trino timestamp 타입을 SQL Server의 datetime2 타입으로 매핑해 지원해요. 이전에는 SQL Server의 timestamp 타입으로 잘못 매핑됐어요. (#6654)
  • time 타입 지원을 추가했어요. (#6654)
  • 집계·조건(예: HAVING 절) 계산을 원격 데이터베이스로 프러시다운해 특정 복잡한 쿼리의 성능을 개선했어요. (#6667)
  • 인덱스와 제약 조건이 있는 테이블을 조회할 때 발생하던 실패를 고쳤어요. (#6464)

SPI

  • ConnectorMetadata.applyJoin() 메서드를 통한 조인 프러시다운 지원을 추가했어요. (#6752)

더 알아보기 (Learn more)