Trino 0.205 릴리스 노트

Trino 0.205 릴리스 노트

Trino 0.205 릴리스 노트입니다. 이번 릴리스에서는 일반 개선 사항과 보안, JDBC 드라이버, Hive 커넥터, CLI, SPI 관련 변경 사항이 들어 있어요.

출처: 문서

본문

일반 (General)

  • 필드 타입에 공백이 포함된 행 타입의 파싱을 수정했어요. 이전에는 공백이 포함된 행 표현식이 파싱에 실패했어요. 예: cast(row(timestamp '2018-06-01') AS row(timestamp with time zone)).
  • 버킷화 실행을 사용할 때 복잡한 쿼리의 분산 계획 실패를 수정했어요.
  • ST_ExteriorRing()이 폴리곤만 받도록 수정했어요. 이전에는 다른 지오메트리를 잘못 받아들였어요.
  • task.min-drivers-per-tasktask.max-drivers-per-task 구성 옵션을 추가했어요. 전자는 작업이 실행할 충분한 일이 있을 때 작업이 동시에 실행할 드라이버의 보장된 최소 수를 지정하며, 후자는 작업이 동시에 실행할 수 있는 드라이버의 최대 수를 지정해요.
  • concurrent_lifespans_per_task 세션 속성의 기본값을 제어하는 concurrent-lifespans-per-task 구성 속성을 추가했어요.
  • query_max_total_memory 세션 속성과 query.max-total-memory 구성 속성을 추가했어요. 쿼리의 총(사용자 + 시스템) 메모리 예약이 이 임계값을 초과하면 쿼리가 중단돼요.
  • 외부 조인과 상관 서브쿼리의 통계 계산을 개선했어요.
  • Block이 모두 null이거나 모두 null이 아닌 값을 포함할 때 메모리 사용을 줄였어요.
  • approx_distinct에 사용되는 내부 해시 함수를 변경했어요. 같은 값 집합에 대해 이 버전의 approx_distinct 결과가 이전 버전과 달라질 수 있어요. 하지만 결과의 표준 오차는 여전히 구성된 범위 안에 있어야 해요.
  • 집계가 있는 스칼라 상관 서브쿼리의 효율을 개선하고 메모리 사용을 줄였어요.
  • 레거시 로컬 스케줄러와 관련 구성 속성 task.legacy-scheduling-behavior, task.level-absolute-priority를 제거했어요.
  • COALESCE, IF, NULLIF 함수에 FILTER 절을 사용할 수 없게 했어요. 이전에는 문법이 허용됐지만 그 외에는 무시됐어요.

보안 (Security)

  • DELETE 쿼리에 대한 불필요한 SELECT 권한 검사를 제거했어요. 이전에는 사용자가 DELETE 권한만 있고 SELECT 권한이 없다면 DELETE 쿼리가 실패할 수 있었어요. 이는 checkCanSelectFromColumns()를 구현한 커넥터에만 영향을 줬어요.
  • 뷰에 대해 SELECT 쿼리를 실행할 때 뷰 소유자가 뷰를 만들 권한이 있는지 검사하도록 추가했어요. 이는 checkCanCreateViewWithSelectFromColumns()를 구현한 커넥터에만 영향을 줬어요.
  • SQL 표준 요구 사항에 따라 DELETE FROM <table> WHERE <condition>WHERE 조건이 참조하는 객체에 대한 SELECT 권한이 있는지 확인하도록 변경했어요.
  • 뷰 소유자가 뷰를 만들 권한이 부족해 뷰에서 선택할 때 접근이 거부될 때 오류 메시지를 개선했어요.

JDBC 드라이버

  • 준비된 문(prepared statement)을 지원해요.
  • PrestoStatementpartialCancel()을 통한 부분 쿼리 취소를 추가했어요.
  • Presto varchar 타입에 LONGNVARCHAR 대신 VARCHAR를 사용하도록 했어요.
  • Presto varbinary 타입에 LONGVARBINARY 대신 VARBINARY를 사용하도록 했어요.

Hive 커넥터

  • 모든 파티션 컬럼 값이 상수일 때 INSERT 쿼리의 성능을 개선했어요.
  • 최적화된 ORC 라이터의 스트라이프 크기 추정을 개선했어요. 이는 아주 작은 ORC 스트라이프가 쓰여지는 경우를 줄여줘요.
  • skip.footer.line.count Hive 테이블 속성을 존중하도록 했어요.

CLI

  • 특정 256색 터미널에서 실행할 때 CLI가 크래시하는 것을 막았어요.

SPI

  • SessionPropertyConfigurationManagerFactorycreate() 메서드에 컨텍스트 파라미터를 추가했어요.
  • @ScalarFunction으로 비정적(non-static) 메서드에 주석을 다는 것을 금지했어요. 비정적 SQL 함수 구현은 이제 @ScalarFunction으로 주석이 달린 클래스에 선언해야 해요.
  • @ScalarFunction 클래스에 여러 public 생성자를 두는 것을 금지했어요. 모든 비정적 SQL 함수 구현은 이제 단일 생성자와 연결돼요. 이는 일반 인자를 가진 SQL 함수의 특수화된 구현을 제공하는 지원을 개선해요.
  • ConnectorAccessControlSystemAccessControlcheckCanSelectFromTable/checkCanSelectFromViewcheckCanCreateViewWithSelectFromTable/checkCanCreateViewWithSelectFromView를 더 이상 사용하지 않도록(deprecate) 했어요. 대신 checkCanSelectFromColumnscheckCanCreateViewWithSelectFromColumns를 사용해야 해요.

참고: 이는 이전 SPI와 호환되지 않는 변경이에요. 이러한 기능을 사용하는 플러그인을 작성했다면 이 릴리스를 배포하기 전에 코드를 업데이트해야 해요.

더 알아보기 (Learn more)

Trino 0.205의 변경 사항을 더 자세히 확인하고 싶다면 공식 릴리스 노트를 참고해 주세요.