릴리스 365
릴리스 365 (2021년 12월 3일)
이번 릴리스에서는 TRUNCATE TABLE, 타임 트래블 쿼리, ORDER BY·DISTINCT 집계 스필링 지원이 추가됐어요. 성능·보안·여러 커넥터 개선도 풍성해요.
출처: Trino 릴리스 365 문서
본문
일반 (General)
TRUNCATE TABLE지원을 추가했어요. (#8921)- 행 패턴 인식 컨텍스트에서 집계 함수를 지원해요. (#8738)
- 타임 트래블(time travel) 쿼리 지원을 추가했어요. (#8773)
ORDER BY·DISTINCT절이 포함된 집계의 스필링 지원을 추가했어요. (#9723)- CIDR이 IP 주소를 포함하는지 확인하는
contains함수를 추가했어요. (#9654) EXPLAIN ANALYZE VERBOSE에 커넥터 메트릭을 보고해요. (#9858)EXPLAIN ANALYZE VERBOSE에 연산자 입력 행 수 분포를 보고해요. (#10133)- 행 필터로 제한된 테이블에서
INSERT·DELETE문을 실행할 수 있게 했어요. (#8856) system.metadata.materialized_views테이블에서owner컬럼을 제거했어요. (#9961)optimizer.iterative-rule-based-column-pruning구성값을 제거했어요. 레거시 컬럼 프루닝 최적화기는 더 이상 없어요. (#9564)- 부등식 조인 성능을 개선했어요. (#9307)
- 한쪽에 작은 테이블이 있는 조인의 성능을 개선했어요. (#9851)
- 물리 코어 수에 따라
task.concurrency를 자동 조정해 CPU 활용률을 개선했어요. (#10088) - 쿼리 최종 통계를 더 정확하게 만들었어요. (#9888, #9913)
- 큰
IN조건이 포함된 쿼리의 계획 성능을 개선했어요. (#9874) rank,dense_rank,row_number윈도우 함수가 포함된 쿼리의 최대 메모리 사용량을 줄였어요. (#10056)bigint값을varchar(n)타입으로 캐스팅할 때 잘못된 결과가 나오던 문제를 고쳤어요. (#552)PREPARE문을DROP·INSERT와 함께 쓰고 테이블·스키마 이름에 특수 문자가 있을 때 쿼리가 실패하던 문제를 고쳤어요. (#9822)- 초기 쿼리 제출 단계에서 쿼리가 버려질 때 발생하던 사소한 메모리 누수를 고쳤어요. (#9962)
ConnectorPageSource가 닫힌 뒤 커넥터 메트릭을 수집하도록 했어요. (#9615)
보안 (Security)
- OAuth2 인증에 HTTP 프록시를 구성할 수 있게 했어요. (#9920, #10069)
- 파일 기반 시스템 접근 제어에 그룹·소유자 기반 쿼리 접근 규칙을 추가했어요. (#9811)
- 내부 통신에 자동 TLS가 켜진 경우 디스커버리 클라이언트에 내부 이름을 쓰도록 했어요. 이로써
discovery.uri를https://coordinator.trino같은 일반 DNS 이름으로 구성하면서도 자동 TLS 인증서를 쓸 수 있어요. (#9821) - JDBC·CLI에서 Kerberos 인증 시 keytab 파일이 제공되지 않으면 Kerberos 운영체제 티켓 캐시를 사용하도록 했어요. (#8987)
- Java 17에서 내부 통신 자동 TLS를 고쳤어요. (#9821)
CLI
- 포트가 443으로 설정되면 자동으로 HTTPS를 사용하도록 했어요. (#8798)
BigQuery 커넥터
- 정밀도가 38 이하인
bignumeric타입 읽기를 지원해요. (#9882) - 테이블 나열 중 스키마가 삭제될 때 발생하던 실패를 고쳤어요. (#9954)
Cassandra 커넥터
- Cassandra의 사용자 정의 타입(UDF) 읽기를 지원해요. (#147)
ClickHouse 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
real타입 컬럼의 조건이 포함된 쿼리에서 잘못된 결과가 나오던 문제를 고쳤어요. (#9998)
Druid 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
Elasticsearch 커넥터
- 추가 Elastic Cloud 노드 역할 지원을 추가했어요. (#9892)
- 숫자 필드에 빈 값이 있을 때 발생하던 실패를 고쳤어요. (#9939)
Hive 커넥터
- Parquet, RCFile, SequenceFile 타입의 빈 파일 읽기를 허용해요. (#9929)
hive.s3.streaming을 기본으로 켰어요. (#9715)- 빈 파일에 스플릿을 생성하지 않아 성능을 개선했어요. (#9929)
- 소수
avg집계 성능을 개선했어요. (#9738) int64표현으로 인코딩된 타임스탬프가 있는 Parquet 파일 읽기 성능을 개선했어요. (#9414)- 동적 파티션 프루닝 효율을 개선했어요. (#9866, #9869)
hive.split-loader-concurrency를4에서64로 높여 파티션 테이블이나 작은 파일이 있는 테이블의 쿼리 성능을 개선했어요. (#9979)ORC파일 형식을 쓰는 테이블의 읽은 바이트 수 보고를 고쳤어요. (#10048)- ACID 테이블에서 읽을 때 삭제된 행 정보에 쓰이는 메모리를 계산했어요. (#9914, #10070)
REVOKE GRANT OPTION이 전체 권한을 취소하는 대신 grant option만 취소하도록 고쳤어요. (#10094)- 첫 메이저 컴팩션 이전의 원본 파일이 있는 트랜잭션 테이블에서 삭제할 때 잘못된 행이 삭제되던 버그를 고쳤어요. (#10095)
- 메이저 컴팩션 후 테이블을 변경할 때 삭제·업데이트가 실패하던 문제를 고쳤어요. (#10120)
- Parquet 리더에서 소수 값을 디코딩할 때 잘못된 결과가 나오던 문제를 고쳤어요. (#9971)
hive.dynamic-filtering.wait-timeout이 효과가 없던 문제를 고쳤어요. (#10106)- 컬럼 인덱스가 켜진 상태에서 Parquet 데이터를 읽을 때 발생하던 실패를 고쳤어요. (#9890, #10076)
Iceberg 커넥터
row,array,map타입에 중첩된 UUID 저장·읽기 지원을 추가했어요. (#9918)- Iceberg ID가 없는 파일 스캔에 Iceberg의
schema.name-mapping.default테이블 속성을 쓰도록 했어요. 이로써 마이그레이션된 파일의 Trino 동작을 Iceberg 사양과 일치시켰어요. (#9959) - 기본 압축을 ZSTD로 바꿨어요. (#10058)
iceberg.security=read-only구성으로 켤 수 있는 읽기 전용 보안 옵션을 추가했어요. (#9974)- 테이블 이름에
row_count,file_count,total_size라는 이름의 컬럼이 있거나, 한 컬럼이 테이블 데이터 일부에서는 파티셔닝에 쓰이고 다른 일부에서는 쓰이지 않을 때 충돌을 피하도록$partitions시스템 테이블의 스키마를 바꿨어요. (#9519, #8729) - Parquet 파일에서 타임스탬프를 읽을 때 성능을 개선했어요. (#9414)
- 복잡한 조건이 있는 특정 쿼리의 성능을 개선했어요. (#9309)
- 파티셔닝이 있는 Iceberg 테이블에 쓸 때 리소스 소비를 줄이고 더 큰 파일을 만들도록 했어요. 더 큰 파일은 나중에 조회할 때 더 효율적이에요. (#9826)
- 역참조 프러시다운(dereference pushdown)을 통해 중첩 데이터 쿼리 성능을 개선했어요. (#8129)
- 새 ORC 파일을 만들 때 매니페스트에 올바른
file_size_in_bytes를 쓰도록 했어요. (#9810) - 스키마 진화를 겪은 ROW 컬럼이 포함된 Parquet 파일을 읽을 때 나타날 수 있는 쿼리 실패를 고쳤어요. (#9264)
rollback_to_snapshot프로시저의 오래된 메타데이터로 인한 실패를 고쳤어요. (#9921)
Kudu 커넥터
- Kudu 테이블을 읽을 때 스캐너 타임아웃 문제를 피했어요. (#7250)
MemSQL 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
real타입 컬럼의 조건이 포함된 쿼리에서 잘못된 결과가 나오던 문제를 고쳤어요. (#9998)
MongoDB 커넥터
mongodb.connection-url구성값으로 MongoDB 클러스터에 연결하는 것을 지원해요.mongodb.seeds와mongodb.credentials속성은 이제 지원 중단이에요. (#9819)
MySQL 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
real타입 컬럼의 조건이 포함된 쿼리에서 잘못된 결과가 나오던 문제를 고쳤어요. (#9998)
Oracle 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
Phoenix 커넥터
- 정밀도·스케일이 지정되지 않은 Phoenix의
decimal컬럼 읽기를 지원해요. (#9795) - Phoenix 테이블을 읽을 때 발생하던 쿼리 실패를 고쳤어요. (#9151)
Pinot 커넥터
- Pinot 커넥터를 0.8.0 이상 버전과 호환되도록 업데이트하고 구버전 지원을 중단했어요. (#9098)
PostgreSQL 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
- 문자열 컬럼의 범위 조건 프러시다운 실험적 지원을 추가했어요.
postgresql.experimental.enable-string-pushdown-with-collate카탈로그 구성값이나 해당enable_string_pushdown_with_collate세션 속성을true로 설정하면 켜져요. (#9746)
Redshift 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
SQL Server 커넥터
- 테이블 잘라내기(truncate) 지원을 추가했어요. (#8921)
SPI
- 스플릿 관리자가
TupleDomain으로 표현할 수 없는 조건에 따라 스플릿을 필터링할 수 있게 했어요. (#7608)