Release 312
Release 312 (2019년 5월 29일)
Presto 312 릴리스예요. 새 UUID 타입과 uuid() 함수, Phoenix 커넥터, 스필 디스크 압축·암호화 같은 새 기능이 추가된 큰 버전이에요.
본문
General
IS [NOT] DISTINCT FROM을 사용하는 쿼리의 잘못된 결과를 고쳤어요(#795).- 불확정 값(indeterminate values, 즉 NULL 또는 NULL을 포함한 구조적 타입)에 대한
array_distinct,array_intersect의미론을 고쳤어요(#559). - 가장 큰 음수
BIGINT값(-9223372036854775808)을 쿼리의 상수로 쓸 때 실패하던 문제를 고쳤어요(#805). - 보안 내부 통신(Secure internal communication)과 함께 Kerberos를 쓸 때의 네트워크 오류 신뢰성을 개선했어요(#838).
- 인라인 테이블(
VALUES)을 포함한JOIN쿼리 성능을 개선했어요(#743). - 중복 표현식을 포함하는 쿼리 성능을 개선했어요(#730).
- 서로 다른 타입의 값 사이 비교가 포함된 쿼리 성능을 개선했어요(#731).
- 서브쿼리 안의 중복
ORDER BY절을 포함하는 쿼리 성능을 개선했어요. 이는 구현 특정 동작에 잘못 의존하는 쿼리의 의미론에 영향을 줄 수 있어요. 이전 동작은skip_redundant_sort세션 속성이나optimizer.skip-redundant-sort설정 속성으로 복원할 수 있어요(#818). - 서브쿼리를 포함하는
IN조건자의 성능을 개선했어요(#767). - 중복
LIMIT절을 포함하는 상관 서브쿼리(correlated subquery) 지원을 개선했어요(#441). - UUID를 나타내는 새
UUID타입을 추가했어요(#755). - 임의 UUID를 생성하는
uuid()함수를 추가했어요(#786). - Phoenix 커넥터를 추가했어요(#672).
- 클라이언트 프로토콜에 의미 오류(semantic error) 이름을 제공하도록 했어요(#790).
experimental.work-processor-pipelines가 활성화됐을 때 연산자 통계를 보고하도록 했어요(#788).
Server
- 요구 Java 버전을 8u161로 올렸어요. 이 버전은 무제한 강도 암호화(unlimited strength crypto)를 허용해요(#779).
- Java 9+에서 JMX 에이전트가 시작에 실패할 때 JVM 설정 힌트를 표시하도록 했어요(#838).
- Java 9+에서 JMX 에이전트가 JVM 속성으로 이미 설정돼 있다면 그 시작을 건너뛰도록 했어요(#838).
internal-communication.https.truststore.path와internal-communication.https.truststore.key설정 속성으로 보안 내부 통신에 사용할 TrustStore를 설정할 수 있게 했어요. 경로는 Java KeyStore나 PEM 파일을 가리킬 수 있어요(#785).- 코디네이터 시작 전 최소 워커 수에 대한 더 이상 쓰이지 않는 검사를 제거했어요. 대신
query-manager.required-workers와query-manager.required-workers-max-wait설정 속성을 사용하세요(#95).
Hive 커넥터
- 메타스토어에 테이블이 적을 때
SHOW GRANTS가 실패하던 문제를 고쳤어요(#791). - 메타스토어에 테이블이 적을 때
information_schema.table_privileges테이블을 읽을 때 실패하던 문제를 고쳤어요(#791). - 버킷팅된 테이블에 쓸 때 파일 이름에 Hive 명명 규칙을 사용하도록 했어요(#822).
- 버킷당 파일 수를 임의로 허용해 새 Hive 버킷팅 관례를 지원하게 됐어요. 덕분에 Hive가 여러 번 삽입한 파티션이나, Hive on Tez가 쓴(빈 버킷에 파일을 만들지 않는) 파티션을 읽을 수 있어요.
- 데이터를 쓸 때 빈 버킷에 대한 파일 생성을 비활성화할 수 있게 했어요. 이 동작은 이전 Presto 버전과의 호환성을 위해 기본적으로 활성화돼 있는데,
hive.create-empty-bucket-files설정 속성이나create_empty_bucket_files세션 속성으로 비활성화할 수 있어요(#822).
MySQL 커넥터
- MySQL
json타입을 Prestojson타입으로 매핑했어요(#824).
PostgreSQL 커넥터
- PostgreSQL의
TIMESTAMP WITH TIME ZONE데이터 타입 지원을 추가했어요(#640).
SPI
ConnectorMetadata.applySample()메서드를 통해 커넥터로TABLESAMPLE을 push하는 것을 지원하게 됐어요(#753).
더 알아보기 (Learn more)
UUID 타입과 uuid()은 이후 버전에서 널리 쓰여요. 버킷팅 파일 명명과 빈 버킷 생성 정책은 Hive 커넥터 운영에 중요한 주제니 최신 문서에서 확인해 보세요.