릴리스 0.148

릴리스 0.148 (Release 0.148)

이 릴리스에서는 여러 정확성·안정성 수정과 함께 interval 고침, 함수·구문 추가, 커넥터별 개선이 포함돼 있어요.

출처: 문서

본문

일반 (General)

  • 성공적으로 완료된 쿼리에 대해 auto-commit 트랜잭션이 롤백될 수 있는 문제를 고쳤어요.
  • colocated 조인 감지 문제를 고쳤어요.
  • 상수와 관련된 파티셔닝 계획 수립 버그를 고쳤어요.
  • 윈도우 함수가 같은 방향의 unbounded와 bounded 사이에서 빈 프레임을 올바르게 처리하도록 고쳤어요. 예를 들어 ROWS BETWEEN UNBOUNDED PRECEDING AND 2 PRECEDING 같은 프레임은 첫 두 행에서 빈 프레임 대신 첫 행을 프레임으로 잘못 사용했어요.
  • 집계 함수의 인자이기도 한 컬럼으로 그룹핑할 때 발생하던 정확성 문제를 고쳤어요.
  • AT TIME ZONE을 연결(chaining)할 때 실패하던 문제를 고쳤어요. 예: SELECT TIMESTAMP '2016-01-02 12:34:56' AT TIME ZONE 'America/Los_Angeles' AT TIME ZONE 'UTC'.
  • 코디네이터와 워커 간 task.writer-count 설정이 일치하지 않을 때 데이터가 중복되던 문제를 고쳤어요.
  • node-scheduler.max-pending-splits-per-node-per-task 설정이 노드 스케줄러가 항상 지키지 않던 버그를 고쳤어요. 이 버그는 클러스터의 진행을 멈출 수 있었어요.
  • 파티션된 소스가 있는 grouping sets의 잘못된 결과를 고쳤어요.
  • 노드 파티션 데이터를 노출하는 커넥터에 대해 colocated 조인이 기본 활성화되도록 colocated-joins-enabled를 추가했어요.
  • colocated union을 지원하게 됐어요.
  • array_agg() 함수의 초기 메모리 사용량을 줄였어요.
  • co-partitioned JOINUNION의 계획 수립을 개선했어요.
  • 파티션된 데이터에 대한 집계 계획 수립을 개선했어요.
  • array_sort() 함수의 성능을 개선했어요.
  • outer 조인 프레디킷 push down을 개선했어요.
  • query.initial-hash-partitions의 기본값을 100으로 올렸어요.
  • query.max-memory-per-node의 기본값을 Java 힙의 10%로 변경했어요.
  • task.max-worker-threads의 기본값을 코어 수의 2배로 변경했어요.
  • 포트 443을 사용할 때 JDBC 드라이버에서 HTTPS를 사용하게 했어요.
  • Presto 서버가 G1 가비지 컬렉터를 사용하지 않으면 경고하도록 했어요.
  • interval 타입을 SPI 밖으로 옮겼어요.

Interval 수정 (Interval fixes)

이 릴리스는 크고 음수인 interval과 관련된 여러 문제를 고쳐요.

  • 음수 interval 리터럴의 파싱을 고쳤어요. 이전에는 각 필드의 부호가 전체 interval 값에 적용되지 않고 개별적으로 처리됐어요. 예를 들어 INTERVAL '-2-3' YEAR TO MONTH는 27개월(음수 24개월에 양수 3개월을 더한 값)이 아니라 음수 21개월로 해석됐어요.
  • REST API에서 INTERVAL DAY TO SECOND 타입 처리를 고쳤어요. 이전에는 2,147,483,647밀리초(약 24일)보다 큰 interval이 잘못된 값으로 반환됐어요.
  • INTERVAL YEAR TO MONTH 타입 처리를 고쳤어요. 이전에는 2,147,483,647개월보다 큰 interval이 REST API에서 잘못된 값으로 반환되고 리터럴로 지정될 때도 잘못 파싱됐어요.
  • REST API에서 음수 interval의 포맷팅을 고쳤어요. 이전에는 각 구성 요소 앞에 음수 부호가 붙어 파싱할 수 없었어요.
  • JDBC PrestoInterval 클래스에서 음수 interval의 포맷팅을 고쳤어요.

참고: JDBC 드라이버의 이전 버전은 새 서버의 대부분 음수 interval을 잘못 해석해요. JDBC 드라이버를 서버와 함께 업데이트해야 해요.

함수와 언어 기능 (Functions and language features)

  • map 타입에 element_at() 함수를 추가했어요.
  • split_to_map() 함수를 추가했어요.
  • zip() 함수를 추가했어요.
  • map_union() 집계 함수를 추가했어요.
  • 행 타입을 구성하는 ROW 구문을 추가했어요.
  • REVOKE 권한 구문을 지원하게 됐어요.
  • SMALLINTTINYINT 타입을 지원하게 됐어요.
  • 비동등 outer 조인을 지원하게 됐어요.

Verifier

  • 주어진 정규식과 일치하는 쿼리의 CPU 시간 비교를 건너뛰는 skip-cpu-check-regex 설정 프로퍼티를 추가했어요.
  • CPU 시간 비교를 비활성화하는 check-cpu 설정 프로퍼티를 추가했어요.

Hive

  • HDFS 클라이언트에서 KMSClientProvider에 대한 NoClassDefFoundError를 고쳤어요.
  • 빈 데이터베이스에서 S3에 테이블을 만들 때 발생하던 문제를 고쳤어요.
  • REVOKE 권한 구문을 구현했어요.
  • SMALLINTTINYINT를 지원하게 됐어요.
  • 파티션되지 않은 테이블에서 DELETE를 지원하게 됐어요.
  • Hive/HDFS와 통신할 때 Kerberos 인증을 지원하게 됐어요.
  • DECIMAL 타입 컬럼에 대한 필터를 push down하게 됐어요.
  • ORC 파일을 읽을 때 CPU 효율을 개선했어요.

Cassandra

  • 로드 밸런싱 정책과 호스트 없음(hose host) 재시도를 구성할 수 있게 했어요.
  • varchar(n)을 지원하게 됐어요.

Kafka

  • Kafka 클라이언트를 0.8.2.2로 업데이트했어요. 이를 통해 LZ4 데이터를 지원해요.

JMX

  • JMX MBean 값의 인메모리 주기 샘플을 가진 jmx.history 스키마를 추가했어요.

MySQL 및 PostgreSQL

  • VARCHAR, DATE, TIME, TIMESTAMP 타입에 대한 프레디킷을 push down하게 됐어요.

기타 커넥터 (Other connectors)

  • Redis, TPC-H, MongoDB, Local File, Example HTTP 커넥터에 varchar(n) 지원을 추가했어요.

더 알아보기 (Learn more)

이어서 릴리스 0.149에서 새 웹 인터페이스와 FLOAT 타입 지원을 확인해 보세요.