Release 0.90

Release 0.90

Presto 0.90 릴리스예요. 쿼리 플래너의 파티션·배치 인식과 여러 새 함수가 추가된 버전이지만, 이 버전은 메모리 누수(memory leak)가 있어 사용을 권장하지 않아요. 참고로만 봐 두면 좋아요.

출처: Trino Release 0.90

본문

⚠️ 경고: 이 릴리스에는 메모리 누수가 있어 사용하지 마세요.

General

  • 쿼리 플래너에 파티션·배치 인식(partition and placement awareness)에 대한 초기 지원을 추가했어요. 덕분에 같은 키 컬럼에 대해 JOINGROUP 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() 집계 함수를 추가했어요.
  • JSONARRAYMAP 타입으로 캐스팅하는 것을 지원하게 됐어요.
  • 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

  • RecordSinkgetColumnTypes를 추가했어요.
  • 테이블 라이터 조각(table writer fragments)에 Slice를 사용하도록 했어요.
  • 컬럼 지향(column-oriented) 소스에 더 효율적인 인터페이스인 ConnectorPageSink를 추가했어요.

더 알아보기 (Learn more)

이 버전에서 추가된 bool_and(), map_agg(), regexp_extract_all() 같은 함수는 이후에도 자주 쓰여요. 메모리 누수 때문에 이 버전은 건너뛰고, 다음 릴리스 노트부터 이어서 읽는 게 좋아요.