Release 331

Release 331 (2020년 3월 16일)

Presto 331 릴리스예요. BigQuery 커넥터, 동적 필터링 기본 활성화, Hive 전체 ACID 테이블 지원, 행 필터링·컬럼 마스킹 등이 담긴 큰 버전이에요.

출처: Trino Release 331

본문

General

  • 워커가 정상 종료(graceful shutdown)될 때 쿼리가 실패하지 않게 했어요(#2648).
  • 비교 불가능한 함수를 가진 OR 조건자가 포함된 쿼리의 조인 실패를 고쳤어요(#2861).
  • 분석이나 계획 중 오류가 있을 때 쿼리 완료 이벤트가 발생하도록 했어요(#2842).
  • ORDER BY 쿼리의 메모리 회계 문제를 고쳤어요(#2612).
  • time zone을 가진 timestamp 값에 대한 last_day_of_month()를 고쳤어요(#2851).
  • 쌍이 맞지 않는 괄호가 있는 깊이 중첩된 표현식을 파싱할 때의 과도한 런타임을 고쳤어요(#2968).
  • Presto에서 표현할 수 없는 날짜 리터럴을 올바르게 거부하도록 했어요(#2888).
  • 중복 데이터 재셔플링을 제거해 쿼리 성능을 개선했어요(#2853).
  • BETWEEN이 포함된 부등식 조인의 성능을 개선했어요(#2859).
  • 사전 인코딩된(dictionary encoded) 데이터의 조인 성능을 개선했어요(#2862).
  • 동적 필터링을 기본으로 활성화했어요(#2793).
  • EXPLAIN ANALYZE VERBOSE에 조인 재정렬 비용을 표시하도록 했어요(#2725).
  • 사용자의 그룹에 기반한 리소스 그룹 선택을 설정할 수 있게 했어요(#3023).
  • ALTER SCHEMASET AUTHORIZATION 동작을 추가했어요(#2673).
  • BigQuery 커넥터를 추가했어요(#2532).
  • 큰 prepared statement 지원을 추가했어요(#2719).

Security

  • 사용하지 않는 internal-communication.jwt.enabled 설정 속성을 제거했어요(#2709).
  • JWT 설정 속성을 http.authentication.jwt.*에서 http-server.authentication.jwt.*로 이름을 바꿨어요(#2712).
  • 쿼리 실행, 뷰 쿼리, kill 쿼리에 대한 접근 제어 검사를 추가했어요. 파일 기반 접근 제어의 Query 규칙으로 설정할 수 있어요(#2213).
  • 파일 기반 접근 제어에서 사용자에게 권한이 없는 테이블의 컬럼을 숨기도록 했어요(#2925).

JDBC 드라이버

  • PreparedStatement.getMetaData()를 구현했어요(#2770).

Web UI

  • 워커 주소를 클립보드로 복사하는 문제를 고쳤어요(#2865).
  • 쿼리 ID를 클립보드로 복사하는 문제를 고쳤어요(#2872).
  • 데이터 크기 값 표시 문제를 고쳤어요(#2810).
  • Presto가 프록시 뒤에 있을 때 /에서 /ui/로의 리다이렉트 문제를 고쳤어요(#2908).
  • 준비된(prepared) 쿼리 표시 문제를 고쳤어요(#2784).
  • 물리 입력 읽기 속도(physical input read rate)를 표시하도록 했어요(#2873).
  • 설정된 비밀번호 인증기를 활용하는 간단한 폼 기반 인증을 추가했어요(#2755).
  • web-ui.enabled 설정 속성으로 UI를 비활성화할 수 있게 했어요(#2755).

CLI

  • 중첩 데이터 타입에서 varbinary의 포맷 문제를 고쳤어요(#2858).
  • --timezone 파라미터를 추가했어요(#2961).

Hive 커넥터

  • Hive 3.x 메타스토어를 쓸 때 information_schema 테이블 읽기와 메타데이터 쿼리의 잘못된 결과를 고쳤어요(#3008).
  • Glue 메타스토어를 쓰고 테이블 저장 설명자(storage descriptor)에 속성이 없을 때 쿼리가 실패하던 문제를 고쳤어요(#2905).
  • Hive 캐싱이 활성화되고 갱신 간격이 설정됐을 때의 교착 상태(deadlock)를 고쳤어요(#2984).
  • Glue 메타스토어를 쓸 때 bucketing_version 테이블 속성을 존중하도록 했어요(#2905).
  • Glue에서 파티션 가져오기 성능을 개선했어요(#3024).
  • Glue에서 테이블·파티션을 생성하거나 갱신할 때 버킷 정렬 순서(bucket sort order) 지원을 추가했어요(#1870).
  • Hive 전체 ACID(full ACID) 테이블 지원을 추가했어요(#2068, #1591, #2790).
  • Parquet 파일에서 decimal 데이터를 읽을 때 파일 스키마의 정밀도·스케일이 파티션 스키마와 다르면 데이터 변환을 허용하게 했어요(#2823).
  • 쿼리에 파티션 키에 대한 필터가 있어야 하도록 강제하는 옵션을 추가했어요. hive.query-partition-filter-required 설정 속성이나 query_partition_filter_required 세션 속성을 true로 설정하면 활성화돼요(#2334).
  • S3에 데이터를 쓸 때 Intelligent-Tiering S3 스토리지 클래스를 선택할 수 있게 했어요. hive.s3.storage-class 설정 속성을 INTELLIGENT_TIERING으로 설정하면 활성화돼요(#3032).
  • 보안상 이유로 Hive 시스템 스키마 sys를 숨겼어요(#3008).
  • 스키마 소유자를 변경하는 것을 지원하게 됐어요(#2673).

MongoDB 커넥터

  • 쿼리에 real이나 decimal 같은 특정 데이터 타입에 대한 필터가 포함됐을 때 잘못된 결과가 나오던 문제를 고쳤어요(#1781).

기타 커넥터

  • 스키마 드롭 지원을 추가했어요(#2956).

SPI

  • 더 이상 쓰이지 않는 Identity 생성자를 제거했어요(#2877).
  • ConnectorIdentity에 대한 빌더(builder)를 도입하고 공개 생성자를 deprecate했어요(#2877).
  • SystemAccessControlConnectorAccessControlgetRowFilter()getColumnMask() API를 통한 행 필터링(row filtering)과 컬럼 마스킹(column masking) 지원을 추가했어요(#1480).
  • 프로시저 실행에 대한 접근 제어 검사를 추가했어요(#2924).

더 알아보기 (Learn more)

행 필터링·컬럼 마스킹은 이후 보안 기능의 기반이 됐어요. BigQuery 커넥터와 Hive full ACID 지원은 최신 커넥터 문서에서 자세히 확인할 수 있어요.