Novedades de DataGrip 2022.1

DataGrip 2022.1, nuestra primera gran actualización de 2022, ya está aquí. Está repleto de varias mejoras y perfeccionamientos para una mejor usabilidad. Echemos un vistazo más en profundidad.

Importar/Exportar

Copiar varios objetos

Esta es, sin duda, la característica más destacada de esta versión. Ya puede seleccionar varias tablas y copiarlas en otro esquema.

Seleccione las tablas que desea copiar y pulse F5 para abrir el cuadro de diálogo de exportación.

Al igual que con la exportación de una tabla individual, puede asignar las columnas, así como ver y cambiar el DDL de la nueva tabla.

 

Como ya sabrá, DataGrip admite la exportación entre DBMS, lo que significa que el esquema de destino puede pertenecer a cualquier base de datos de su proyecto. Copiar todas las tablas de su base de datos PostgreSQL a SQL Server es pan comido.

También puede especificar una tabla existente, en lugar de una nueva, como destino. Si lo hace, los datos de la tabla de origen se añadirán a la tabla de destino.

Mejoras en la calidad

  • DBE-5200: La acción Edit as table ahora funciona correctamente incluso cuando las filas del archivo fuente tienen un número diferente de columnas.
  • DBE-14541: Añadir una fila a un archivo CSV de una columna ahora funciona correctamente.
  • DBE-14735: Se ha corregido el error en la exportación simultánea de tablas que contienen marcas de tiempo.

Editor de datos

Formato de visualización predeterminado de las celdas binarias

Hemos añadido un nuevo ajuste, Automatically detect binary values, con dos opciones: UUID y Text. Ahora se puede desactivar la detección de UUID.

Editar campos en los resultados de consulta MongoDB

Ahora puede editar los resultados de las consultas a las colecciones de MongoDB directamente desde una consola. Esto funcionará incluso si .find() va seguido de métodos como sort() o limit().

Compatibilidad con resultados en el editor en el modo por lotes de SQL Server

Cuando se ejecutan varias declaraciones simultáneamente en Transact SQL, se ejecutan en el modo por lotes. Anteriormente, esto dificultaba la presentación de resultados en el editor para cada consulta, pero ahora DataGrip maneja bien esta situación.

Además, DataGrip ahora elimina todas las declaraciones SQLCMD cuando se ejecutan consultas en modo lote (ver DBE-14920 para obtener más detalles).

Mejoras en la calidad

  • DBE-8561: Al hacer clic fuera del selector de fecha ya no se pierden los cambios.
  • DBE-9632: La tecla Intro ya funciona para guardar el valor en el selector de fecha.
  • DBE-11706: La tecla Tabulador ahora es compatible con el selector de fechas.
  • DBE-9974: Ahora se puede desasociar un archivo .csv desde «View as Table».
  • DBE-13040: Hemos facilitado la visualización de las columnas ocultas; basta con hacer clic en una columna oculta en la lista de columnas.
  • DBE-14516: Ya no se muestra el indicador de tamaño de celda para los valores totalmente cargados, y utiliza una fuente monoespaciada, por lo que el contenido se alinea limpiamente.
  • DBE-14670: El visor Geo ahora se sincroniza correctamente.
  • DBE-10851: Hemos solucionado un problema de fuentes en el modo de vista de árbol.
  • DBE-9710: Los valores de Oracle Timestamp ahora respetan las zonas horarias.
  • DBE-14852: MariaDB, Aurora MySQL Las fechas en blanco ahora se muestran correctamente en el editor de datos.
  • DBE-15009: Sybase ASE Todas las columnas se muestran ahora en la vista de resultados.
  • DBE-15031: Snowflake La consulta de actualización de tablas con valores DEFAULT ahora se genera correctamente.
  • El menú contextual de la columna ahora se muestra también en la vista Transpose.

Introspección

Plantillas de sesión para la introspección

A veces, la introspección requiere permisos especiales, que se conceden a usuarios especiales. Ahora es posible utilizar credenciales específicas para la introspección. Para ello, cree primero una plantilla de sesión específica en la pestaña Options.

 

A continuación, utilice esta plantilla para la introspección seleccionando su nombre en el campo Use session template de la sección Introspection.

Introspección fragmentada Oracle

Ahora puede actualizar un objeto independientemente de todos los demás objetos de la base de datos.

 

Esto puede ser especialmente útil si está utilizando nuestra nueva funcionalidad Introspection levels. Si necesita ver el código fuente de un solo objeto, puede hacerlo fácilmente haciendo clic en el botón Refresh Object del explorador de la base de datos.

Además, cuando abra el editor de fuentes del objeto, DataGrip le ofrecerá la opción de introspección del objeto seleccionado.

Compatibilidad con la versión 2.x H2

Hemos añadido compatibilidad con la versión 2.x de H2. Esta es la lista de cambios:

  • DataGrip ahora introspecciona correctamente los tipos. La mayoría de los problemas estaban relacionados con los tipos compuestos: ARRAY y ROW.
  • Las columnas con secuencias incorporadas (auto_increment, generated always as identity, etc.) ahora se introspeccionan correctamente.
  • Las restricciones de verificación y las claves externas ya no se pierden.
  • Las fuentes se cargan para las vistas, los desencadenantes y las rutinas.
  • Se muestra la información sobre los predicados de comprobación para los dominios.

Incorporaciones a la compatibilidad básica con YugabyteDB

Ahora estamos distribuyendo el controlador JDBC para YugabyteDB, y puede crear una fuente de datos de YugabyteDB con un solo clic.

Mejoras en la calidad

  • DBE-13521: ClickHouse El código fuente de las vistas materializadas ahora se introspecciona.

Generación de código

Nueva versión de Modify Table

Estamos modificando ligeramente la ventana Modify Table. La nueva versión tendrá una interfaz de usuario totalmente generada basada en propiedades introspectivas, lo que le permitirá tener varios parámetros específicos de la base de datos.

Por ahora, solo estamos publicando una pequeña parte de la actualización, pero ya puede ser bastante útil. La nueva ventana Modify Table permite añadir y editar las restricciones de control de columnas, algo que antes era imposible. Además, ahora puede editar todas las propiedades de las tablas y columnas que introspecciona DataGrip.

Creemos que apreciará especialmente la nueva interfaz de usuario para las columnas, ya que no se expanden ni se contraen, algo que a muchos usuarios les parecía frustrante.

Mejoras en la calidad

  • DBE-15000, DBE-15001: PostgreSQL Ahora se genera el código correcto al editar concesiones.
  • DBE-5136: SQL Server Ahora obtendrá un script válido al eliminar columnas con restricciones a través de Modify Table.
  • DBE-14760: MySQL La ventana Modify Table ya no corrompe el índice funcional.
  • DBE-2827: MySQL Es posible modificar el atributo AUTO_INCREMENT.
  • DBE-14801: Snowflake El script DDL generado contiene declaraciones para crear las secuencias predeterminadas.

Visor diff de base de datos

Intercambiar el origen y el destino

Hemos introducido un botón que permite intercambiar el origen y el destino al comparar objetos o esquemas.

Mejoras en la calidad

Estamos mejorando constantemente la calidad de nuestra ventana de visualización diff de la base de datos, recientemente introducida. Algunas correcciones se publicaron en la versión 2021.3, pero otras son nuevas de la 2022.1, entre ellas:

  • DBE-15063: El nuevo algoritmo inteligente para la comparación de cadenas solucionó el problema de que se respetaran las mayúsculas y minúsculas de las palabras clave en la ventana diff.
  • DBE-14686: Se respeta la opción Reformat generated code.
  • DBE-14782: El visor diff detecta objetos que probablemente sean iguales aunque sus nombres sean diferentes.
  • DBE-14431: Oracle La excepción Array index out of bounds ya no debería ocurrir.

Editor de código

Intención Convert to subquery

Hemos introducido una nueva y práctica intención, Convert To Subquery. Ya no es necesario utilizar Surround Live Template para convertir las subconsultas. De hecho, ni siquiera tiene que molestarse en seleccionar una consulta. Basta con pulsar Alt+Intro| Convert To Subquery.

Mejor algoritmo de autosangrado

Hemos mejorado los algoritmos de autosangrado. Había un par de entradas relacionadas con esto, DBE-14825 y DBE-8742, pero hemos ido mucho más allá y hemos considerado todas las situaciones y casos posibles, por lo que el autosangrado debería funcionar ahora correctamente en casi todas partes.

Compatibilidad con tipos multirrango PostgreSQL

Los tipos multirrango se incorporaron en PostgreSQL 14; hemos añadido compatibilidad con los integrados.

Más adelante serán compatibles los tipos multirrango personalizados.

Mejoras en la calidad

  • DBE-11683: PostgreSQL Se ha añadido compatibilidad con la sintaxis ROWS FROM.
  • DBE-11868: PostgreSQL Se ha corregido un problema que daba lugar a expresiones de tablas comunes no resueltas.
  • DBE-15061: PostgreSQL Se ha corregido el problema que causaba la inyección incorrecta de la sintaxis JSONB.
  • DBE-14888: PostgreSQL Se ha añadido compatibilidad con BEGIN ATOMIC.
  • DBE-15052: Redshift Se ha añadido compatibilidad con ALTER MATERIALIZED VIEW.
  • DBE-11830: Oracle Se ha añadido compatibilidad con la sintaxis USING INDEX ENABLE.
  • DBE-6548: Oracle Se ha corregido la resolución de columnas en las declaraciones CREATE MATERIALIZED VIEW LOG.
  • DBE-15095: Snowflake Se ha añadido compatibilidad con la opción WITH TAG en la declaración CREATE STAGE.
  • DBE-14793: Snowflake Se ha añadido compatibilidad con la declaración EXECUTE.
  • DBE-11247: Snowflake JSON ahora se resalta correctamente dentro de las declaraciones.
  • DBE-14843: BigQuery QUALIFY ahora es compatible.
  • DBE-13995: BigQuery Ahora se admite la columna UNNEST.
  • DBE-14504: ClickHouse Ahora son compatibles los literales de asignación.
  • DBE-15013: ClickHouse UNION DISTINCT ahora es compatible.

Ejecutar consultas

Cancelación de las declaraciones en curso

Anteriormente, cuando se pulsaba varias veces el botón Cancel statement, parecía que la consulta había terminado, pero en realidad la solicitud seguía ejecutándose en la base de datos.

Había una lógica complicada detrás de este comportamiento. En el primer clic, DataGrip enviaba una solicitud de cancelación a la base de datos, mientras que en el segundo clic cancelaba el proceso del controlador JDBC para terminar todas las conexiones con la fuente de datos (nos referiremos a esto como desactivación de la fuente de datos). Como resultado, DataGrip recibía un error para la segunda solicitud de cancelación porque la conexión se perdía, no porque la cancelación se completara realmente.

Ahora hemos hecho que la lógica de la cancelación sea más sencilla. Afortunadamente, ahora está más claro que es la solicitud la que se cancela:

  • El indicador de progreso en el medianil muestra un cuadrado rojo mientras se cancela la solicitud.
  • Se muestra una barra de progreso de cancelación. Identifica la fuente de datos y la sesión.

Ya no desactivamos las fuentes de datos sin una advertencia, ya que eso puede ser potencialmente peligroso para algunos procesos que ocurren simultáneamente. Así, si hace clic por segunda vez en el icono Cancel, DataGrip le preguntará si realmente quiere detener el proceso remoto o si desea seguir esperando. Si elige desactivar la fuente de datos, la consulta se detendrá para DataGrip, pero seguirá ejecutándose en la base de datos.

Después de 10 segundos de cancelación inactiva, se le ofrecerá la opción de desactivar la fuente de datos de todos modos.

Una vez cancelada la consulta, aparecerá a la izquierda de esta un icono del medianil que se asemeja al símbolo «No».

Cancelación de conexiones

Anteriormente, cuando se intentaba detener una solicitud mientras se creaba una conexión, la fuente de datos se desactivaba.

Ahora puede interrumpir no solo la ejecución de una solicitud, sino también la creación de una conexión. Esto es especialmente relevante para la primera consulta en la consola, que también crea una conexión.

Ahora puede detener el proceso de creación de una conexión sin desactivar la fuente de datos: si hace clic en el botón Cancel mientras se está creando la conexión, esta se detendrá y se mostrará el mensaje Connection canceled.

Esto es relevante para algo más que las consultas desde la consola de consulta. Por ejemplo, si se crea una conexión antes de iniciar una introspección, al interrumpir la introspección se cancelará la creación de la conexión sin desactivar la fuente de datos.

Aspectos generales del IDE

Ajustes renovados

La estructura de la configuración Preferences para la sección de base de datos no ha cambiado desde la primera versión de DataGrip. Decidimos que era el momento de mejorar la usabilidad de la sección actualizando la estructura. Esto es lo que se nos ha ocurrido:

El ajuste Track databases/schemas creation and deletion se ha trasladado de la sección General a Data Source Properties | Options y ahora se refiere a una fuente de datos específica. Esta configuración identifica si la lista de esquemas debe actualizarse después de crear o eliminar esquemas en la consola de consulta.

Otros ajustes siguen siendo globales, pero ahora se incluyen en secciones más apropiadas.

Tenga en cuenta que, como parte de esta actualización, estos ajustes se restablecerán a sus valores predeterminados:

  • 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.

Pestañas divididas uniformemente

Ahora puede distribuir el espacio de trabajo entre las pestañas del editor para que tengan la misma anchura. Para configurarlas, vaya a Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits.

Exportar el diagrama UML a otros formatos

Ahora se pueden exportar diagramas como archivos yEd .graphml, JGraph .drawio, Graphviz .dot, Graphviz .dot con posiciones, Mermaid .md, Plantuml, e IDEA .uml, lo que los hace compatibles con herramientas de terceros.

Mejoras en la calidad

  • DBE-15043: Los marcadores tienen ahora el mismo comportamiento de navegación que los elementos del explorador de bases de datos.
  • DEA-129631: Ahora se admiten los tamaños de fuente fraccionarios.