DataGrip 2022.1의 새로운 기능

2022년의 첫 번째 주요 업데이트인 DataGrip 2022.1이 출시되었습니다. 이 업데이트에는 사용 편의성을 높이는 다양한 개선 사항이 가득합니다. 어떤 내용이 있는지 지금부터 살펴보겠습니다.

가져오기/내보내기

여러 객체 복사

이 기능은 단연 이번 릴리스의 하이라이트입니다. 이제 여러 테이블을 선택하고 다른 스키마에 복사할 수 있습니다.

복사할 테이블을 선택하고 F5 키를 눌러 내보내기 대화상자를 엽니다.

단일 테이블을 내보낼 때와 마찬가지로 열을 매핑할 뿐만 아니라 새 테이블의 DDL을 확인하고 변경할 수도 있습니다.

 

아시다시피 DataGrip은 교차 DBMS 내보내기를 지원합니다. 즉, 대상 스키마는 프로젝트의 모든 데이터베이스에 속할 수 있습니다. PostgreSQL 데이터베이스에서 SQL Server로 모든 테이블을 복사하기가 정말 간편해졌습니다.

새 테이블 대신 기존 테이블을 대상으로 지정할 수도 있습니다. 그러면 원본 테이블의 데이터가 대상 테이블에 추가됩니다.

품질 개선

  • DBE-5200: 이제 소스 파일의 행에 있는 열의 수가 다르더라도 Edit as table(테이블로 편집) 액션이 올바르게 작동합니다.
  • DBE-14541: 이제 단일 열 CSV 파일에 행을 추가해도 올바르게 작동합니다.
  • DBE-14735: 타임스탬프가 포함된 테이블을 동시에 내보낼 때 발생하던 버그가 수정되었습니다.

데이터 에디터

2진 셀의 기본 표시 형식

UUIDText(텍스트)의 두 가지 옵션이 포함된 새로운 설정인 Automatically detect binary values(2진 값 자동 탐지)가 추가되었습니다. 이제 UUID 탐지를 비활성화할 수 있습니다.

쿼리 결과의 필드 편집 MongoDB

MongoDB 컬렉션에 대한 쿼리 결과를 콘솔에서 바로 편집할 수 있습니다. 이는 .find() 뒤에 sort() 또는 limit() 같은 메서드가 와도 가능합니다.

일괄 처리 모드에서 에디터 내 결과 지원 SQL Server

Transact SQL에서 여러 구문이 동시에 실행되는 경우 일괄 처리 모드로 실행됩니다. 이전에는 이로 인해 각 쿼리에 대한 결과를 에디터에 표시하기 어려웠지만 이제는 DataGrip이 이러한 상황을 잘 처리합니다.

또한 DataGrip은 이제 일괄 처리 모드에서 쿼리를 실행할 때 모든 SQLCMD 구문을 제거합니다(자세한 내용은 DBE-14920 참조).

품질 개선

  • DBE-8561: 날짜 선택기 바깥을 클릭해도 더 이상 변경 사항이 손실되지 않습니다.
  • DBE-9632: 이제 Enter 키를 사용하여 날짜 선택기에 값을 저장할 수 있습니다.
  • DBE-11706: 이제 날짜 선택기에서 Tab 키가 지원됩니다.
  • DBE-9974: 이제 'View as Table'(테이블로 보기)에서 .csv 파일을 분리할 수 있습니다.
  • DBE-13040: 숨겨진 열을 표시하기 쉽게 만들었습니다. 열 목록에서 숨겨진 열을 클릭하기만 하면 됩니다.
  • DBE-14516: 셀 크기 표시기가 완전히 로드된 값에 대해 더 이상 표시되지 않으며 모노스페이스 글꼴을 사용하므로 내용이 깔끔하게 정렬됩니다.
  • DBE-14670: 이제 Geo 뷰어가 올바르게 동기화됩니다.
  • DBE-10851: 트리 뷰 모드에서 글꼴 문제를 수정했습니다.
  • DBE-9710: Oracle 타임스탬프 값이 이제 시간대를 따릅니다.
  • DBE-14852: MariaDB, Aurora MySQL 이제 데이터 에디터에 빈 날짜가 올바르게 표시됩니다.
  • DBE-15009: Sybase ASE 이제 모든 열이 결과 뷰에 표시됩니다.
  • DBE-15031: Snowflake 값이 DEFAULT인 테이블에 대한 업데이트 쿼리가 이제 올바르게 생성됩니다.
  • 열의 컨텍스트 메뉴가 이제 Transpose(전치) 뷰에서도 표시됩니다.

내부 검사

내부 검사를 위한 세션 템플릿

때로 내부 검사에는 특별한 사용자에게 부여되는 특별한 권한이 필요합니다. 이제 내부 검사를 위해 전용 자격 증명을 사용할 수 있습니다. 이렇게 하려면 먼저 Options(옵션) 탭에서 전용 세션 템플릿을 만듭니다.

 

그런 다음 Introspection(내부 검사) 섹션의 Use session template(세션 템플릿 사용) 필드에서 이름을 선택하여 내부 검사에 이 템플릿을 사용합니다.

조각 내부 검사 Oracle

이제 데이터베이스의 한 객체를 다른 모든 객체와 독립적으로 새로 고침할 수 있습니다.

 

새로운 Introspection levels(내부 검사 수준) 기능을 사용하는 경우 특히 유용할 수 있습니다. 단일 객체의 소스 코드를 확인해야 하는 경우 데이터베이스 탐색기에서 Refresh Object(객체 새로고침) 버튼을 클릭하면 쉽게 볼 수 있습니다.

또한 객체의 소스 에디터를 열면 DataGrip에서 선택한 객체를 내부 검사할 수 있는 옵션을 제공합니다.

버전 2.x 지원 H2

H2 버전 2.x에 대한 지원을 추가했습니다. 다음은 변경 사항을 정리한 목록입니다.

  • DataGrip이 이제 타입을 올바르게 내부 검사합니다. 대부분의 문제는 복합 타입인 ARRAYROW와 관련되어 있었습니다.
  • 기본 제공 시퀀스(auto_increment, generated always as identity 등)가 있는 열이 이제 올바르게 내부 검사됩니다.
  • 검사 제약과 외래 키가 더 이상 손실되지 않습니다.
  • 소스가 뷰, 트리거, 루틴에 대해 로드됩니다.
  • 검사 술부에 대한 정보가 도메인에 대해 표시됩니다.

기본 지원에 추가 YugabyteDB

이제 YugabyteDB용 JDBC 드라이버가 배포되어 클릭 한 번으로 YugabyteDB 데이터 소스를 생성할 수 있습니다.

품질 개선

  • DBE-13521: ClickHouse 구체화된 뷰의 소스 코드가 이제 내부 검사됩니다.

코드 생성

새로운 테이블 수정 버전

Modify Table(테이블 수정) 창을 조금 손보고 있습니다. 새 버전에는 내부 검사 프로퍼티를 기반으로 완벽하게 생성된 UI가 도입되어 다양한 데이터베이스 관련 매개변수를 사용할 수 있습니다.

현재는 업데이트의 일부만 공개되지만 이 상태로도 충분히 유용합니다. 새로운 Modify Table(테이블 수정) 창을 사용하면 이전에는 불가능했던 열 검사 제약 조건을 추가 및 편집할 수 있습니다. 또한 이제 DataGrip에서 내부 검사하는 테이블 및 열의 모든 프로퍼티를 편집할 수 있습니다.

새로운 열 UI에는 많은 사용자들이 불편해 했던 축소 또는 확장 기능이 없기 때문에 긍정적인 호응을 얻을 것으로 생각합니다.

품질 개선

  • DBE-15000, DBE-15001: PostgreSQL 이제 권한을 편집할 때 올바른 코드가 생성됩니다.
  • DBE-5136: SQL Server 이제 Modify Table(테이블 수정)을 통해 제약 조건이 있는 열을 제거할 때 유효한 스크립트를 얻을 수 있습니다.
  • DBE-14760: MySQL Modify Table(테이블 수정) 창이 더 이상 함수 색인을 손상시키지 않습니다.
  • DBE-2827: MySQL AUTO_INCREMENT 속성을 수정할 수 있습니다.
  • DBE-14801: Snowflake 생성된 DDL 스크립트에는 디폴트 시퀀스를 생성하기 위한 구문이 포함되어 있습니다.

데이터베이스 Diff 뷰어

소스 및 대상 스왑

객체 또는 스키마를 비교할 때 소스와 대상을 스왑할 수 있는 버튼을 도입했습니다.

품질 개선

최근 도입된 데이터베이스 Diff 뷰어 창의 품질을 지속적으로 개선하고 있습니다. 일부 수정 사항은 버전 2021.3에서 릴리스되었지만 일부는 다음을 포함하여 2022.1에 새로 추가됩니다.

  • DBE-15063: Diff 창에서 키워드 대소문자가 구분되는 문제를 문자열 비교를 위한 새로운 스마트 알고리즘을 통해 해결했습니다.
  • DBE-14686: Reformat generated code(생성된 코드 서식 다시 지정) 옵션이 적용됩니다.
  • DBE-14782: Diff 뷰어는 이름이 달라도 동일할 가능성이 있는 객체를 탐지합니다.
  • DBE-14431: Oracle Array index out of bounds(배열 색인이 범위를 벗어남) 예외가 더 이상 발생하지 않습니다.

코드 에디터

하위 쿼리로 변환 인텐션

편리한 새 인텐션인 Convert To Subquery(하위 쿼리로 변환)를 도입했습니다. 더 이상 Surround Live Template(라이브 템플릿 둘러싸기)을 사용하여 하위 쿼리를 변환할 필요가 없습니다. 사실, 쿼리를 선택하는 것조차 필요하지 않습니다. Alt+Enter | Convert To Subquery(하위 쿼리로 변환)를 누르기만 하면 됩니다.

자동 들여쓰기 알고리즘 개선

자동 들여쓰기 알고리즘을 개선했습니다. 이와 관련된 티켓이 몇 건 있었지만(DBE-14825DBE-8742) 더 포괄적으로 가능한 모든 상황과 사례를 고려했으며, 이제 거의 모든 곳에서 자동 들여쓰기가 올바르게 작동합니다.

다중 범위 타입 지원 PostgreSQL

PostgreSQL 14에 다중 범위 타입이 도입됨에 따라 기본 제공되는 이러한 타입에 대한 지원을 추가했습니다.

사용자 지정 다중 범위 타입은 향후 지원될 예정입니다.

품질 개선

  • DBE-11683: PostgreSQL ROWS FROM 구문에 대한 지원이 추가되었습니다.
  • DBE-11868: PostgreSQL 공통 테이블 표현식이 해결되지 않는 문제를 수정했습니다.
  • DBE-15061: PostgreSQL JSONB 구문이 잘못 삽입되는 문제를 수정했습니다.
  • DBE-14888: PostgreSQL BEGIN ATOMIC에 대한 지원이 추가되었습니다.
  • DBE-15052: Redshift ALTER MATERIALIZED VIEW에 대한 지원이 추가되었습니다.
  • DBE-11830: Oracle USING INDEX ENABLE 구문에 대한 지원이 추가되었습니다.
  • DBE-6548: Oracle CREATE MATERIALIZED VIEW LOG 구문에서 열 확인이 수정되었습니다.
  • DBE-15095: Snowflake CREATE STAGE 구문의 WITH TAG 옵션에 대한 지원을 추가했습니다.
  • DBE-14793: Snowflake EXECUTE 구문에 대한 지원을 추가했습니다.
  • DBE-11247: Snowflake JSON이 이제 구문 내에서 올바르게 강조 표시됩니다.
  • DBE-14843: BigQuery QUALIFY가 이제 지원됩니다.
  • DBE-13995: BigQuery UNNEST 열이 이제 지원됩니다.
  • DBE-14504: ClickHouse 맵 리터럴이 이제 지원됩니다.
  • DBE-15013: ClickHouse UNION DISTINCT가 이제 지원됩니다.

쿼리 실행

실행 중인 구문 취소

이전에는 Cancel statement(구문 취소) 버튼을 여러 번 클릭하면 쿼리가 종료된 것처럼 보여도 실제로는 데이터베이스에서 요청이 계속 실행되었습니다.

이 동작의 이면에는 몇 가지 까다로운 논리가 있었습니다. 첫 번째 클릭할 때는 DataGrip이 데이터베이스에 취소 요청을 보내고 두 번째 클릭할 때는 데이터 소스에 대한 모든 연결을 종료하기 위해 JDBC 드라이버 프로세스가 취소됩니다(이를 데이터 소스 비활성화라고 함). 그러나 실제로 취소가 완료되지 않고 연결이 끊어지기 때문에 결과적으로 DataGrip은 두 번째 취소 요청에 대한 오류를 수신합니다.

이제 이 취소 논리를 더 간단하게 만들어 요청이 취소 대상임을 분명히 했습니다.

  • 요청이 취소되는 동안 여백의 진행률 표시기가 빨간색 사각형을 표시합니다.
  • 취소 진행률 표시줄이 표시됩니다. 여기에서 데이터 소스와 세션이 식별됩니다.

경고 없이 데이터 소스를 비활성화하면 동시 진행되는 일부 프로세스가 위험해질 가능성이 있으므로, 이러한 비활성화를 중단했습니다. 따라서 Cancel(취소) 아이콘을 두 번째로 클릭하면 DataGrip은 원격 프로세스를 정말로 종료할 것인지 아니면 계속 기다릴 것인지 묻습니다. 데이터 소스를 비활성화하도록 선택하면 DataGrip에 대한 쿼리가 중지되지만 데이터베이스에서는 계속 실행됩니다.

취소 중인 유휴 상태가 10초간 이어지면, 데이터 소스를 비활성화할 수 있는 옵션이 제공됩니다.

쿼리가 취소되면 왼쪽에 '금지' 기호와 유사한 여백 아이콘이 나타납니다.

연결 취소

이전에는 연결을 생성하는 동안 요청을 중단하려고 하면 데이터 소스가 비활성화되었습니다.

이제 요청 실행뿐만 아니라 연결 생성도 중단할 수 있습니다. 이는 콘솔에서 연결을 생성하는 첫 번째 쿼리와 특히 관련이 있습니다.

이제 데이터 소스를 비활성화하지 않고 연결 생성 프로세스를 중지할 수 있습니다. 연결이 생성되는 동안 Cancel(취소) 버튼을 클릭하면 연결이 중지되고 연결 취소됨 메시지가 표시됩니다.

쿼리 콘솔의 쿼리 외에도 관련이 있습니다. 예를 들어, 내부 검사를 시작하기 전에 연결을 생성하는 경우 내부 검사를 중단하면 데이터 소스를 비활성화하지 않아도 연결 생성이 취소됩니다.

IDE 일반

새로워진 설정

Database(데이터베이스) 섹션에서 Preferences(환경 설정)의 설정 구조는 DataGrip의 첫 번째 버전 이후로 변경되지 않았습니다. 하지만 이제는 이 구조를 업데이트하여 섹션의 사용 편의성을 개선해야 할 때라고 판단했습니다. 다음과 같이 바꿨습니다.

Track databases/schemas creation and deletion(데이터베이스/스키마 생성 및 삭제 추적) 설정이 General(일반) 섹션에서 Data Source Properties(데이터 소스 프로퍼티) | Options(옵션)로 이동되었으며, 이제 특정 데이터 소스를 참조합니다. 이 설정은 쿼리 콘솔에서 스키마를 생성하거나 삭제한 후 스키마 목록을 업데이트해야 하는지 여부를 식별합니다.

다른 설정은 여전히 전역으로 적용되지만 더 적절한 섹션에 포함됩니다.

이 업데이트의 일부로 다음 설정이 디폴트 값으로 재설정됩니다.

  • Data Source properties(데이터 소스 프로퍼티) | Track databases/schemas creation and deletion(데이터베이스/스키마 생성 및 삭제 추적) – True.
  • Editor(에디터) | General(일반) | Editor Tabs(에디터 탭) | Database(데이터베이스) | Always show qualified names for database objects in tab titles(탭 제목에 데이터베이스 객체의 정규화된 이름을 항상 표시) – False.
  • Editor(에디터) | General(일반) | Editor Tabs(에디터 탭) | Database(데이터베이스) | Shorten datasource and object names in tab titles(탭 제목에서 데이터 소스 및 객체 이름 줄이기) – True.

탭 균등 분할

이제 에디터 탭 사이에 작업 공간을 너비가 같도록 분할할 수 있습니다. 이렇게 설정하려면 Settings(설정)/Preferences(환경 설정) | Advanced Settings(고급 설정) | Editor Tabs(에디터 탭) | Equalize proportions in nested splits(중첩된 분할의 비율을 동일하게 변경)로 이동합니다.

UML 다이어그램을 다른 형식으로 내보내기

이제 다이어그램을 yEd .graphml, JGraph .drawio, Graphviz .dot, 위치 정보 포함 Graphviz .dot, Mermaid .md, Plantuml 및 IDEA .uml 파일로 내보낼 수 있어 타사 도구와 호환성이 개선되었습니다.

품질 개선

  • DBE-15043: 북마크가 이제 데이터베이스 탐색기 항목과 동일한 탐색 동작을 제공합니다.
  • DEA-129631: 이제 글꼴 크기를 분수로도 지정할 수 있습니다.