Release 300
Release 300 (2019년 1월 22일)
Presto(Trino의 전신) 300번대 첫 릴리스예요. 배열 함수 성능 개선, reduce_agg()·millisecond() 함수 추가, JMX·JDBC 네이밍 정리, S3 Select pushdown 등 폭넓은 변화가 있는 버전이에요.
본문
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 STATS의WHERE절을 커넥터로 push down될 수 있는 필터로 제한했어요.- 실패한 쿼리에 대해 최종 결과를 클라이언트에 즉시 반환하도록 했어요.
JMX MBean 네이밍
- 서버 MBean의 기본 도메인 이름이 이제
presto예요. 이전 이름을 쓰려면 설정 속성jmx.base-name을com.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_statistics를false로 설정하면 돼요. - S3 Select pushdown을 지원하게 됐어요. 이를 통해 텍스트 파일의 컬럼 선택과 범위 필터를 S3로 push down할 수 있어요.
Kudu 커넥터
SHOW CREATE TABLE출력에number_of_replicas테이블 속성을 추가했어요.
Cassandra 커넥터
- 2.1.5보다 오래된 Cassandra 서버에 연결할 수 있도록
cassandra.splits-per-node와cassandra.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 관련 최신 문서를 함께 보면 좋아요.