Release 304
Release 304 (2019년 2월 27일)
Presto 304 릴리스예요. ORDER BY·윈도우 함수 쿼리에 대한 실험적 스필링, Parquet 1.9+ 지원, 메타스토어 파티션 동기화 프로시저 등이 추가됐어요.
본문
General
- 조인 키에 대한
FULL OUTER JOIN과coalesce표현식이 포함된 쿼리에서 잘못된 결과가 나오던 문제를 고쳤어요(#288). - 컬럼을 정규화된(full qualified) 형식으로 참조할 때 실패하던 문제를 고쳤어요(#250).
- 연산자에 대한 물리·내부 네트워크 위치 수(position count)를 올바르게 보고하도록 했어요(#271).
- 같은 쿼리를 반복 실행할 때 계획 안정성을 개선했어요(#226).
- 더 이상 쓰이지 않는
datasources설정 속성을 제거했어요(#306). - 쿼리에 길이가 0인 구분 식별자(delimited identifiers)가 있을 때의 오류 메시지를 개선했어요(#249).
- 임의 포트에 불필요한 HTTP 리스너를 여는 것을 피하도록 했어요(#239).
ORDER BY나 윈도우 함수가 포함된 쿼리에 대한 스필링(spilling) 실험적 지원을 추가했어요(#228).
Server RPM
- RPM을 제거할 때 수정된 설정 파일을 보존하도록 했어요(#267).
Web UI
- 깨져 있던 타임라인 뷰를 고쳤어요(#283).
- 상세 쿼리 뷰에서 커넥터와 워커 간 데이터 전송이 보고하는 데이터 크기와 위치 수를 표시하도록 했어요(#271).
Hive 커넥터
- 대문자를 포함한 사용자 식별자와 함께 SQL Standard Based Authorization 모드를 쓸 때 인가(authorization) 실패가 발생하던 문제를 고쳤어요(#289).
- 버킷 수가 다른 파티션을 포함한 테이블에서 숨은
$bucket컬럼으로 필터링할 때 잘못된 결과가 나오던 문제를 고쳤어요. 이제 이 경우 쿼리가 실패하게 됐어요(#286). - ORC 파일을 쓸 때 설정된 Hive 시간대를 기록하도록 했어요(#212).
- 타임스탬프를 읽을 때 ORC 파일에 기록된 시간대를 사용하도록 했어요. 이전에는 항상 설정된 Hive 시간대를 사용했는데, 이제는 라이터가 시간대를 기록하지 않았을 때만 기본값으로 사용해요(#212).
DELTA_BINARY_PACKED인코딩을Parquet INT64타입과 함께 사용하는 Parquet 1.9+로 작성된 Parquet 파일을 지원하게 됐어요(#334).hive.metastore.thrift.client.*설정 속성으로 Thrift 메타스토어 클라이언트의 재시도 정책을 설정할 수 있게 했어요(#240).- Parquet 파일 푸터(footers)를 읽을 때 파일 시스템 읽기 연산을 줄였어요(#296).
- S3에서 Glacier 객체를 쿼리를 실패시키는 대신 무시할 수 있게 했어요. 기본적으로는 비활성화돼 있어요. 존재할 것으로 예상되는 데이터를 건너뛸 수 있기 때문인데,
hive.s3.skip-glacier-objects설정 속성으로 활성화할 수 있어요(#305). - 메타스토어의 파티션을 파일 시스템에 물리적으로 존재하는 파티션과 동기화하는
system.sync_partition_metadata()프로시저를 추가했어요(#223). - null만 포함하는 컬럼에 대한 ORC 리더 성능을 개선했어요(#229).
PostgreSQL 커넥터
- PostgreSQL
json과jsonb타입을 Prestojson타입으로 매핑했어요(#81).
Cassandra 커넥터
- 모든 타입의 파티셔닝 컬럼을 포함한 테이블에 대한 쿼리를 지원하게 됐어요(#252).
- Cassandra의
smallint,tinyint,date타입을 지원하게 됐어요(#141).
더 알아보기 (Learn more)
system.sync_partition_metadata()는 메타스토어와 파일 시스템의 파티션 불일치를 해결할 때 유용해요. 최신 Trino Hive 커넥터 프로시저 문서에서 자세히 확인해 보세요.