Release 306
Release 306 (2019년 3월 16일)
Presto 306 릴리스예요. NOT NULL 제약 생성, 스테이지 수 경고 설정, 여러 레거시 옵션 제거, 커넥터 테이블 DDL 지원 확대 등이 담겼어요.
본문
General
- 전역 집계(global aggregation) 뒤에
LIMIT이 오는 쿼리의 계획 실패를 고쳤어요(#437). EXPLAIN출력에서 컬럼 타입이 빠지던 문제를 고쳤어요(#328).- 피크 revocable 메모리 예약(reservation)의 회계 문제를 고쳤어요(#413).
- 스필링이 활성화돼 있을 때 집계에 대한 이중 메모리 회계(double memory accounting) 문제를 고쳤어요(#413).
- 윈도우 함수에 대해 스필링할 때 발생할 수 있는 과도한 CPU 사용을 고쳤어요(#468).
SHOW CREATE VIEW가 잘못된 뷰 이름을 표시하던 문제를 고쳤어요(#433).- 테이블 생성이나 컬럼 추가 시
NOT NULL을 지정할 수 있게 됐어요(#418). - 쿼리당 스테이지 수 임계값을 지정하는 설정 옵션(
query.stage-count-warning-threshold)을 추가했어요. 임계값을 초과하면TOO_MANY_STAGES경고가 발생해요(#330). - 특수 문자(예: 쉼표, 등호)를 가진 세션 속성 값을 지원하게 됐어요(#407).
deprecated.legacy-unnest-array-rows설정 옵션을 제거했어요.ROW값을 포함한 배열의UNNEST에 대한 레거시 동작은 더 이상 지원되지 않아요(#430).deprecated.legacy-row-field-ordinal-access설정 옵션을 제거했어요. 익명ROW타입의 필드에 접근하는 레거시 메커니즘은 더 이상 지원되지 않아요(#428).deprecated.group-by-uses-equal설정 옵션을 제거했어요.GROUP BY에 대한 레거시 등식(equality) 의미론은 더 이상 지원되지 않아요(#432).deprecated.legacy-map-subscript를 제거했어요. 누락된 키에 대한 맵 서브스크립트 연산자의 레거시 동작은 더 이상 지원되지 않아요(#429).deprecated.legacy-char-to-varchar-coercion설정 옵션을 제거했어요.CHAR와VARCHAR타입 사이의 레거시 강제 변환(coercion) 규칙은 더 이상 지원되지 않아요(#431).- 더 이상 쓰이지 않는
distributed_join시스템 속성을 제거했어요. 대신join_distribution_type을 사용하세요(#452).
Hive 커넥터
- 시작 직후 다른 쿼리를 실행하기 전에 프로시저를 호출할 때의 문제를 고쳤어요. 이전에는 프로시저 호출이 실패하고 이후의 모든 Hive 쿼리도 실패하게 만들었어요(#414).
REAL과DOUBLE타입 디코딩에 대한 ORC 리더 성능을 개선했어요(#465).
MySQL 커넥터
- 테이블 생성·이름 변경, 컬럼 추가·이름 변경·삭제를 지원하게 됐어요(#418).
PostgreSQL 커넥터
- PostgreSQL
ENUM타입에 대한 조건자 pushdown을 고쳤어요(#408). - 테이블 생성·이름 변경, 컬럼 추가·이름 변경·삭제를 지원하게 됐어요(#418).
Redshift 커넥터
- 테이블 생성·이름 변경, 컬럼 추가·이름 변경·삭제를 지원하게 됐어요(#418).
SQL Server 커넥터
- 테이블 생성·이름 변경, 컬럼 추가·이름 변경·삭제를 지원하게 됐어요(#418).
Base-JDBC 커넥터 라이브러리
Block을 기반으로 컬럼 타입을 Presto 타입으로 매핑할 수 있게 했어요(#454).
SPI
- Table Layout API를 더 이상 쓰지 않게(deprecate) 했어요. 커넥터는
ConnectorMetadata.usesLegacyTableLayouts()를 구현해 레거시 동작을 선택 해제(opt out)할 수 있어요(#420). ConnectorMetadata.applyLimit()메서드를 통해 커넥터로의 limit pushdown 지원을 추가했어요(#421).QueryCompletedEvent에 리소스 대기 시간을 추가했어요(#461).
더 알아보기 (Learn more)
Table Layout API에서 applyFilter()·applyLimit() 기반의 새 메커니즘으로 옮겨가는 건 커넥터 개발자에게 중요한 변화예요. 최신 Trino SPI 문서를 참고해 보세요.