Release 300

Release 300 (2019년 1월 22일)

Presto(Trino의 전신) 300번대 첫 릴리스예요. 배열 함수 성능 개선, reduce_agg()·millisecond() 함수 추가, JMX·JDBC 네이밍 정리, S3 Select pushdown 등 폭넓은 변화가 있는 버전이에요.

출처: Trino Release 300

본문

General

  • array_intersect()array_distinct()에서 입력에 null이 함께 있을 때 0을 건너뛰던 문제를 고쳤어요.
  • optimize_mixed_distinct_aggregation이 켜져 있을 때 빈 관계(empty relation)에 대한 count(*) 집계가 null을 반환하던 문제를 고쳤어요.
  • 구조화 타입(structured types)에 대한 테이블 스캔 성능을 개선했어요.
  • array_intersect() 성능을 개선했어요.
  • 파티션을 일찍 필터링해 윈도우 함수 성능을 개선했어요.
  • reduce_agg() 집계 함수를 추가했어요.
  • millisecond() 함수를 추가했어요.
  • SHOW STATS에서 ON 키워드를 제거했어요(FOR를 대신 사용해요).
  • SHOW STATSWHERE 절을 커넥터로 push down될 수 있는 필터로 제한했어요.
  • 실패한 쿼리에 대해 최종 결과를 클라이언트에 즉시 반환하도록 했어요.

JMX MBean 네이밍

  • 서버 MBean의 기본 도메인 이름이 이제 presto예요. 이전 이름을 쓰려면 설정 속성 jmx.base-namecom.facebook.presto로 설정하면 돼요.
  • Hive, Raptor, Thrift 커넥터의 기본 도메인 이름은 presto.plugin이에요. 이전 이름을 쓰려면 카탈로그 설정 속성 jmx.base-name을 각각 com.facebook.presto.hive, com.facebook.presto.raptor, com.facebook.presto.thrift로 설정하면 돼요.

Web UI

  • 인덱스 조인(index joins)이 포함된 쿼리에서 라이브 계획 뷰가 잘못 표시되던 문제를 고쳤어요.

JDBC 드라이버

  • 드라이버 클래스 이름을 io.prestosql.jdbc.PrestoDriver로 변경했어요.

System 커넥터

  • system.runtime.queries 테이블에서 node_id 컬럼을 제거했어요.

Hive 커넥터

  • Parquet 데이터를 읽는 데 걸린 시간의 계산 문제를 고쳤어요.
  • 사전 인코딩(dictionary encoding)으로 매우 압축률 높은 데이터를 쓸 때 ORC 라이터가 정수 오버플로우로 실패하던 모서리 케이스를 고쳤어요(#11930).
  • Parquet 파일의 통계가 손상된 경우(예: min > max) 그 파일을 읽는 쿼리를 실패시키도록 했어요. 이 동작을 비활성화하려면 설정 속성 hive.parquet.fail-on-corrupted-statistics 또는 세션 속성 parquet_fail_with_corrupted_statisticsfalse로 설정하면 돼요.
  • S3 Select pushdown을 지원하게 됐어요. 이를 통해 텍스트 파일의 컬럼 선택과 범위 필터를 S3로 push down할 수 있어요.

Kudu 커넥터

  • SHOW CREATE TABLE 출력에 number_of_replicas 테이블 속성을 추가했어요.

Cassandra 커넥터

  • 2.1.5보다 오래된 Cassandra 서버에 연결할 수 있도록 cassandra.splits-per-nodecassandra.protocol-version 설정 속성을 추가했어요.

MySQL 커넥터

  • char(x) 타입 컬럼에 대한 조건자 pushdown을 지원하게 됐어요.

PostgreSQL 커넥터

  • char(x) 타입 컬럼에 대한 조건자 pushdown을 지원하게 됐어요.

Redshift 커넥터

  • char(x) 타입 컬럼에 대한 조건자 pushdown을 지원하게 됐어요.

SQL Server 커넥터

  • char(x) 타입 컬럼에 대한 조건자 pushdown을 지원하게 됐어요.

Raptor Legacy 커넥터

  • 커넥터 이름을 raptor-legacy로 변경했어요.

Verifier

  • 디버깅을 돕기 위한 run-teardown-on-result-mismatch 설정 속성을 추가했어요. 이 값을 false로 설정하면 체크섬 실패 후 임시 테이블을 삭제하지 않아요.

SPI

  • 기본 패키지를 io.prestosql.spi로 변경했어요.
  • 커넥터 관련 클래스를 io.prestosql.spi.connector 패키지로 옮겼어요.
  • ConnectorBucketNodeMap을 최상위 클래스로 만들었어요.
  • 버킷-노드 매핑에 맵 대신 리스트를 사용하도록 했어요.

더 알아보기 (Learn more)

300번대는 Presto가 커뮤니티로 이전되며 패키지명이 바뀌던 시점이에요. 이 패키지명 변화가 이후 Trino로 이어지는 길이니, SPI 관련 최신 문서를 함께 보면 좋아요.