Release 312

Release 312 (2019년 5월 29일)

Presto 312 릴리스예요. 새 UUID 타입과 uuid() 함수, Phoenix 커넥터, 스필 디스크 압축·암호화 같은 새 기능이 추가된 큰 버전이에요.

출처: Trino Release 312

본문

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.pathinternal-communication.https.truststore.key 설정 속성으로 보안 내부 통신에 사용할 TrustStore를 설정할 수 있게 했어요. 경로는 Java KeyStore나 PEM 파일을 가리킬 수 있어요(#785).
  • 코디네이터 시작 전 최소 워커 수에 대한 더 이상 쓰이지 않는 검사를 제거했어요. 대신 query-manager.required-workersquery-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 타입을 Presto json 타입으로 매핑했어요(#824).

PostgreSQL 커넥터

  • PostgreSQL의 TIMESTAMP WITH TIME ZONE 데이터 타입 지원을 추가했어요(#640).

SPI

  • ConnectorMetadata.applySample() 메서드를 통해 커넥터로 TABLESAMPLE을 push하는 것을 지원하게 됐어요(#753).

더 알아보기 (Learn more)

UUID 타입과 uuid()은 이후 버전에서 널리 쓰여요. 버킷팅 파일 명명과 빈 버킷 생성 정책은 Hive 커넥터 운영에 중요한 주제니 최신 문서에서 확인해 보세요.