Release 334
Release 334 (2020년 5월 29일)
Presto 334 릴리스예요. Oracle·Pinot·Prometheus 커넥터 추가, random() 범위 변형, 플러그형 Certificate 인증기, 파일 캐싱 개선 등이 담긴 큰 버전이에요.
본문
General
- 값에 음의 영(negative zero)이 포함될 때 real·double 타입 비교가 포함된 특정 쿼리의 잘못된 결과를 고쳤어요(#3745).
- late materialization이 활성화된 채 빈 테이블을 질의할 때 실패하던 문제를 고쳤어요(#3577).
UNNEST의 입력이 반복될 때 실패하던 문제를 고쳤어요(#3587).format()인자에 집계가 쓰일 때 실패하던 문제를 고쳤어요(#3829).- 레거시(기본) 타임스탬프 의미론에서 DST나 역사적 오프셋 변경이 있는 세션 시간대에 대한
localtime()과current_time()을 고쳤어요(#3846, #3850). - 복잡한 공간(spatial) 조인 쿼리의 동적 필터 실패를 고쳤어요(#3694).
row_number()가 포함된 쿼리 성능을 개선했어요(#3614).LIKE조건자가 포함된 쿼리 성능을 개선했어요(#3618).- 동적 필터링이 활성화됐을 때 쿼리 성능을 개선했어요(#3632).
- 중첩 구조에서 필드를 읽는 쿼리 성능을 개선했어요(#2672).
- 제공된 범위 안의 숫자를 생성하는
random()함수 변형을 추가했어요(#1848). EXPLAIN에서 기본적으로 분산 계획(distributed plan)을 표시하도록 했어요(#3724).- Oracle 커넥터를 추가했어요(#1959).
- Pinot 커넥터를 추가했어요(#2028).
- Prometheus 커넥터를 추가했어요(#2321).
- 표준 준수(RFC 7239) HTTP forwarded 헤더 지원을 추가했어요. HTTP forwarded 헤더 처리는 이제
http-server.process-forwarded설정 속성으로 제어되며, 이전의http-server.authentication.allow-forwarded-https와dispatcher.forwarded-header설정 속성은 더 이상 지원되지 않아요(#3714). - 플러그형 Certificate 인증기를 추가했어요(#3804).
JDBC 드라이버
java.sql.Array결과에 대한toString()을 구현했어요(#3803).
CLI
- 짧은 쿼리에 대한 경과 시간 렌더링을 개선했어요(#3311).
Web UI
- UI 인증에 fixed, certificate, JWT, Kerberos를 추가했어요(#3433).
- Live Plan에 조인 분포 타입을 표시하도록 했어요(#1323).
JDBC 드라이버
- 파라미터에 이스케이프되지 않은
%나_가 포함됐을 때DatabaseMetaData.getColumns()성능을 개선했어요(#1620).
Elasticsearch 커넥터
SHOW CREATE TABLE실행 시 실패하던 문제를 고쳤어요(#3718).count(*)쿼리 성능을 개선했어요(#3512).- 원시(raw) Elasticsearch 쿼리 지원을 추가했어요(#3735).
Hive 커넥터
- 앞 0(leading zeros)이 없는 버킷 파일 이름 매칭 문제를 고쳤어요(#3702).
CREATE TABLE AS로 외부 테이블을 생성하는 문제를 고쳤어요. 이전에는 테이블이 관리형(managed)이고 기본 위치로 생성됐어요(#3755).- 새로 생성된 외부 테이블에 대한 잘못된 테이블 통계를 고쳤어요(#3819).
- 캐시가 초기화에 실패할 때 Presto가 시작되지 않도록 했어요(#3749).
- 캐싱이 영구적으로 비활성화될 수 있던 경쟁 조건(race condition)을 고쳤어요(#3729, #3810).
- 캐싱의 비동기 읽기 모드가 활성화됐을 때 잘못된 읽기(malformed reads)를 고쳤어요(#3772).
- 아직 크기 축출(eviction) 임계값 아래일 때 캐시된 데이터를 축출하던 문제를 고쳤어요(#3772).
- 큰 데이터 세트 위에 파티션되지 않은 외부 테이블을 만들 때 성능을 개선했어요(#3624).
- decimal 컬럼을 읽을 때 Parquet 파일 통계를 활용하도록 했어요(#3581).
$file_modified_time숨은 컬럼의 타입을 bigint에서 time zone을 가진 timestamp 타입으로 변경했어요(#3611).- HDFS와 Azure 파일 시스템에 대한 캐싱 지원을 추가했어요(#3772).
- 캐싱의 비동기 읽기 모드가 활성화됐을 때 S3 연결 풀 고갈 문제를 고쳤어요(#3772).
- 코디네이터에서 캐싱을 기본적으로 비활성화했어요(#3820).
- 캐싱에 대해 기본적으로 비동기 읽기 모드를 사용하도록 했어요(#3799).
- Hive Thrift 메타스토어의 위임 토큰(delegation token)을 캐시하도록 했어요.
hive.metastore.thrift.delegation-token.cache-ttl과hive.metastore.thrift.delegation-token.cache-maximum-size설정 속성으로 설정할 수 있어요(#3771).
MemSQL 커넥터
- 서버 tarball과 RPM에 SingleStore 커넥터를 포함시켰어요(#3743).
MongoDB 커넥터
- 대소문자 구분 없는 데이터베이스·컬렉션 이름을 지원하게 됐어요.
mongodb.case-insensitive-name-matching설정 속성으로 활성화할 수 있어요(#3453).
SPI
SystemAccessControl이EventListener를 제공할 수 있게 했어요(#3629).
더 알아보기 (Learn more)
Oracle·Pinot·Prometheus 커넥터는 이후에도 널리 쓰여요. 표준 준수 forwarded 헤더 처리와 플러그형 Certificate 인증기는 최신 Trino 보안 문서에서 확인해 보세요.