Release 0.90
Release 0.90
Presto 0.90 릴리스예요. 쿼리 플래너의 파티션·배치 인식과 여러 새 함수가 추가된 버전이지만, 이 버전은 메모리 누수(memory leak)가 있어 사용을 권장하지 않아요. 참고로만 봐 두면 좋아요.
본문
⚠️ 경고: 이 릴리스에는 메모리 누수가 있어 사용하지 마세요.
General
- 쿼리 플래너에 파티션·배치 인식(partition and placement awareness)에 대한 초기 지원을 추가했어요. 덕분에 같은 키 컬럼에 대해
JOIN과GROUP BY를 수행하는 쿼리에 더 나은 계획을 만들 수 있어요. UNION쿼리의 계획(planning)을 개선했어요.- 쿼리 생성·완료 이벤트에 presto 버전을 추가했어요.
- 태스크당 라이터 수를 설정하는
task.writer-count속성을 추가했어요. - 이진(binary) 타입을 포함하는 상수 표현식을 최적화할 때의 버그를 고쳤어요.
- 실패한 쿼리를 정리하는 동안 테이블 라이터가 부분 결과를 커밋하던 버그를 고쳤어요.
- NaN이나 Infinity를 포함한 double 배열을 unnest할 때의 버그를 고쳤어요.
- 빈 배열에서 요소에 접근할 때 실패하던 문제를 고쳤어요.
- "Remote page is too large" 오류를 고쳤어요.
- 값을
UNKNOWN으로 캐스팅하려 할 때의 오류 메시지를 개선했어요. approx_distinct()문서를 올바른 표준 오차 경계 값으로 갱신했어요.- 표현식이 바이트코드로 컴파일되지 못할 때 인터프리터로 폴백(fallback)하던 것을 비활성화했어요. 이 옵션을 켜려면 코디네이터와 워커 설정 속성에
compiler.interpreter-enabled=true를 추가하면 돼요. 켜면 일부 쿼리가 실패 대신 느리게 실행되게 할 수 있어요. - JDBC 드라이버의 표준 준수(conformance)를 개선했어요. 특히 구현되지 않은 메서드들이 이제
UnsupportedOperationException대신SQLException을 던져요.
함수와 언어 기능
bool_and()와bool_or()집계 함수를 추가했어요.bool_and()의 별칭으로 표준 SQL 함수every()를 추가했어요.year_of_week()함수를 추가했어요.regexp_extract_all()함수를 추가했어요.map_agg()집계 함수를 추가했어요.JSON을ARRAY나MAP타입으로 캐스팅하는 것을 지원하게 됐어요.VALUES절에서 괄호 없는(unparenthesized) 표현식을 지원하게 됐어요.SET SESSION,RESET SESSION,SHOW SESSION을 추가했어요.EXPLAIN (TYPE DISTRIBUTED)출력의 형식을 개선하고, 출력 레이아웃, 태스크 배치 정책, 파티셔닝 함수 같은 추가 정보를 포함하게 됐어요.
Hive
- 비문자열(non-string) 파티션 키에 대해 최적화된 메타스토어 파티션 가져오기를 비활성화했어요. 이는 비정규(non-canonical) 파티션 값을 가진 데이터를 Presto가 조용히 무시할 수 있던 문제를 고치기 위한 거예요. 이 옵션을 켜려면 코디네이터와 워커 설정 속성에
hive.assume-canonical-partition-keys=true를 추가하면 돼요. - 권한 부족으로 실패하는 S3 대상 작업을 재시도하지 않도록 했어요.
SPI
RecordSink에getColumnTypes를 추가했어요.- 테이블 라이터 조각(table writer fragments)에
Slice를 사용하도록 했어요. - 컬럼 지향(column-oriented) 소스에 더 효율적인 인터페이스인
ConnectorPageSink를 추가했어요.
더 알아보기 (Learn more)
이 버전에서 추가된 bool_and(), map_agg(), regexp_extract_all() 같은 함수는 이후에도 자주 쓰여요. 메모리 누수 때문에 이 버전은 건너뛰고, 다음 릴리스 노트부터 이어서 읽는 게 좋아요.