릴리스 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.urihttps://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-concurrency4에서 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.seedsmongodb.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)

더 알아보기 (Learn more)