Novidades no DataGrip 2022.1

Chegou o DataGrip 2022.1, nossa primeira grande atualização de 2022. Ele está repleto de vários aprimoramentos e melhorias para aumentar ainda mais a praticidade. Vejamos quais são os destaques.

Importar/Exportar

Copiar múltiplos objetos

Este é, sem dúvida, o grande destaque deste lançamento. Agora, você pode selecionar várias tabelas e copiá-las para outro esquema.

Selecione as tabelas que deseja copiar e pressione F5 para abrir a caixa de diálogo de exportação.

Assim como na exportação de uma única tabela, você pode mapear as colunas, bem como visualizar e alterar o DDL da nova tabela.

 

Como você deve saber, o DataGrip oferece suporte para exportação entre DBMS, o que significa que o esquema de destino pode pertencer a qualquer banco de dados no seu projeto. É muito fácil copiar todas as tabelas do seu banco de dados PostgreSQL para o SQL Server.

Você também pode especificar uma tabela existente, em vez de uma nova, como destino. Se fizer isso, os dados da tabela de origem serão adicionados à tabela de destino.

Melhorias de qualidade

  • DBE-5200: a ação Edit as table agora funciona corretamente, mesmo quando as linhas no arquivo de origem têm um número diferente de colunas.
  • DBE-14541: o processo de adicionar uma linha a um arquivo CSV de uma coluna agora funciona corretamente.
  • DBE-14735: corrigido o bug com a exportação de tabelas contendo timestamps.

Editor de dados

Formato de exibição padrão para células binárias

Adicionamos uma nova configuração, Automatically detect binary values, com duas opções: UUID e Text. A detecção de UUID agora pode ser desabilitada.

Editando campos em resultados de consultas MongoDB

Agora, você pode editar os resultados de consultas em coleções do MongoDB diretamente de um console. Isso funcionará mesmo que .find() seja seguido de métodos como sort() ou limit().

Suporte para resultados no editor no modo de lote SQL Server

Quando várias instruções são executadas simultaneamente no Transact SQL, elas são executadas no modo em lote. Anteriormente, isso dificultava a exibição de resultados no editor para cada consulta, mas agora o DataGrip lida bem com essa situação.

Além disso, o DataGrip agora remove todas as instruções SQLCMD ao executar consultas no modo de lote (consulte DBE-14920 para obter detalhes).

Melhorias de qualidade

  • DBE-8561: clicar fora do seletor de data não resulta mais na perda de alterações.
  • DBE-9632: a tecla Enter agora funciona para salvar o valor no seletor de data.
  • DBE-11706: a tecla Tab agora é suportada no seletor de data.
  • DBE-9974: agora, é possível desassociar um arquivo .csv de "View as Table".
  • DBE-13040: facilitamos a exibição de colunas ocultas. Basta clicar em uma coluna oculta na lista de colunas.
  • DBE-14516: o indicador de tamanho da célula não é mais exibido para valores totalmente carregados e usa uma fonte monoespaçada para que o conteúdo fique alinhado perfeitamente.
  • DBE-14670: o Visualizador geográfico agora é sincronizado corretamente.
  • DBE-10851: corrigimos um problema de fonte no modo de exibição em árvore.
  • DBE-9710: Oracle Valores de timestamp agora respeitam fusos horários.
  • DBE-14852: MariaDB, Aurora MySQL Datas em branco agora são exibidas corretamente no editor de dados.
  • DBE-15009: Sybase ASE Todas as colunas agora são mostradas na visualização de resultados.
  • DBE-15031: Snowflake A consulta de atualização para tabelas com valores DEFAULT agora é gerada corretamente.
  • O menu de contexto da coluna agora também é exibido na exibição Transpose.

Introspecção

Modelos de sessão para introspecção

Às vezes, a introspecção requer permissões especiais, que são concedidas a usuários especiais. Agora, é possível usar credenciais dedicadas para introspecção. Para fazer isso, primeiro crie um modelo de sessão dedicado na aba Options.

 

Em seguida, use esse modelo para a introspecção selecionando seu nome no campo Use session template na seção Introspection.

Introspecção fragmentada Oracle

Agora, você pode atualizar um objeto independentemente de todos os outros no banco de dados.

 

Isso poderá ser especialmente útil se você usar nosso novo recurso Introspection levels. Se for necessário visualizar o código-fonte de apenas um objeto, você poderá fazer isso facilmente clicando no botão Refresh Object no explorador de banco de dados.

Além disso, quando você abrir o editor de código fonte do objeto, o DataGrip oferecerá a opção de introspecção para o objeto selecionado.

Suporte para a versão 2.x H2

Adicionamos suporte para o H2 versão 2.x. Aqui está a lista de alterações:

  • O DataGrip agora faz a introspecção correta de tipos. A maioria dos problemas estava relacionada aos tipos compostos: ARRAY e ROW.
  • Colunas com sequências incorporadas (auto_increment, generated always as identity, etc.) agora recebem introspecção corretamente.
  • Restrições de verificação e chaves estrangeiras não são mais perdidas.
  • As fontes são carregadas para exibições, acionadores e rotinas.
  • Informações sobre predicados de verificação são exibidas para domínios.

Adicionado ao suporte básico YugabyteDB

Estamos disponibilizando o driver JDBC para YugabyteDB, e você pode criar uma fonte de dados YugabyteDB com apenas um clique.

Melhorias de qualidade

  • DBE-13521: ClickHouse Agora é possível fazer introspecção do código-fonte das exibições materializadas.

Geração de código

Nova versão de Modify Table

Estamos reformulando ligeiramente a janela Modify Table. A nova versão terá uma UI totalmente gerada com base em propriedades introspectivas, o que permitirá uma variedade de parâmetros específicos de bancos de dados.

Por enquanto, estamos lançando apenas uma pequena parte da atualização, mas ela já pode ser bastante útil. A nova janela Modify Table permite adicionar e editar restrições de verificação de coluna, o que antes era impossível. Além disso, agora você pode editar todas as propriedades de tabelas e colunas que recebem introspecção do DataGrip.

Achamos que você vai gostar principalmente da nova UI para colunas, pois não há recolhimento ou expansão, o que muitos usuários consideravam frustrante.

Melhorias de qualidade

  • DBE-15000, DBE-15001: PostgreSQL O código correto agora é gerado ao editar concessões.
  • DBE-5136: SQL Server Agora, você obterá um script válido ao remover colunas com restrições por meio de Modify Table.
  • DBE-14760: MySQL A janela Modify Table não corrompe mais o índice funcional.
  • DBE-2827: MySQL É possível modificar o atributo AUTO_INCREMENT.
  • DBE-14801: Snowflake O script DDL gerado contém instruções para criar as sequências padrão.

Visualizador de diferenças em bancos de dados

Trocar a origem e o destino

Introduzimos um botão que permite trocar a origem e o destino ao comparar objetos ou esquemas.

Melhorias de qualidade

Estamos constantemente melhorando a qualidade da nossa janela do visualizador diff para bancos de dados, introduzida recentemente. Algumas correções foram lançadas na versão 2021.3, mas algumas são novas na 2022.1, incluindo:

  • DBE-15063: o novo algoritmo inteligente para comparação de strings resolveu o problema em que o uso de maiúsculas e minúsculas de palavras-chave era respeitado na janela de diferenças.
  • DBE-14686: a opção Reformat generated code é respeitada.
  • DBE-14782: o visualizador de diferenças detecta objetos que provavelmente serão os mesmos, mesmo que seus nomes sejam diferentes.
  • DBE-14431: Oracle A exceção Array index out of bounds não deve mais ocorrer.

Editor de código

Intenção Convert to subquery

Introduzimos uma nova intenção útil, Convert To Subquery. Você não precisa mais usar a opção Surround Live Template para converter subconsultas. Na verdade, você nem precisa se preocupar em selecionar uma consulta. Basta pressionar Alt+Enter | Convert To Subquery.

Melhor algoritmo de recuo automático

Melhoramos os algoritmos de recuo automático. Havia alguns tíquetes relacionados a isso, DBE-14825 e DBE-8742, mas fomos muito além e consideramos todas as situações e casos possíveis e, portanto, o recuo automático agora deve funcionar corretamente em quase todos os lugares.

Suporte a tipos multibanda PostgreSQL

Tipos multibanda foram introduzidos no PostgreSQL 14: adicionamos suporte para os tipos incorporados.

Haverá suporte para tipos multibanda personalizados no futuro.

Melhorias de qualidade

  • DBE-11683: PostgreSQL Adicionado suporte para a sintaxe ROWS FROM.
  • DBE-11868: PostgreSQL Corrigido um problema que resultava em expressões de tabela comuns não resolvidas.
  • DBE-15061: PostgreSQL Corrigido o problema que causava a injeção incorreta da sintaxe JSONB.
  • DBE-14888: PostgreSQL Adicionado suporte para BEGIN ATOMIC.
  • DBE-15052: Redshift Adicionado suporte para ALTER MATERIALIZED VIEW.
  • DBE-11830: Oracle Adicionado suporte para a sintaxe USING INDEX ENABLE.
  • DBE-6548: Oracle Resolução de coluna fixa em instruções CREATE MATERIALIZED VIEW LOG.
  • DBE-15095: Snowflake Adicionado suporte para a opção WITH TAG na instrução CREATE STAGE.
  • DBE-14793: Snowflake Adicionado suporte para a instrução EXECUTE.
  • DBE-11247: Snowflake O JSON agora está corretamente realçado dentro de instruções.
  • DBE-14843: BigQuery Agora há suporte para QUALIFY.
  • DBE-13995: BigQuery Agora há suporte para a coluna UNNEST.
  • DBE-14504: ClickHouse Agora há suporte para literais de mapas.
  • DBE-15013: ClickHouse Agora há suporte para UNION DISTINCT.

Execução de consultas

Cancelando instruções em execução

Antes, quando você clicava no botão Cancel statement várias vezes, parecia que a consulta havia sido encerrada, mas, na verdade, a solicitação continuava sendo executada no banco de dados.

Havia uma lógica complicada por detrás desse comportamento. No primeiro clique, o DataGrip enviava uma solicitação de cancelamento ao banco de dados, enquanto, no segundo clique, ele cancelava o processo do Driver JDBC para encerrar todas as conexões com a fonte de dados (chamaremos isso de desativação da fonte de dados). Como resultado, o DataGrip recebia um erro para a segunda solicitação de cancelamento, pois a conexão se perdia, e não porque o cancelamento estava de fato concluído.

Agora, deixamos a lógica de cancelamento mais intuitiva. Felizmente, agora ficou mais claro que é a solicitação que está sendo cancelada:

  • O indicador de progresso na medianiz mostra um quadrado vermelho enquanto a solicitação está sendo cancelada.
  • Uma barra de progresso de cancelamento é exibida. Ela identifica a fonte de dados e a sessão.

Não desativamos mais as fontes de dados sem aviso, pois isso pode ser potencialmente perigoso para alguns processos que ocorrem simultaneamente. Portanto, se você clicar no ícone Cancel uma segunda vez, o DataGrip perguntará se você realmente deseja encerrar o processo remoto ou se deseja continuar esperando. Se você optar por desativar a fonte de dados, a consulta será interrompida para o DataGrip, mas continuará sendo executada no banco de dados.

Após 10 segundos de cancelamento inativo, você terá a opção de desativar a fonte de dados de qualquer maneira.

Depois que a consulta for cancelada, um ícone de medianiz semelhante ao símbolo "Não" aparecerá à esquerda dela.

Cancelando conexões

Antes, quando você tentava anular uma solicitação ao criar uma conexão, a fonte de dados era desativada.

Agora, você pode interromper não só a execução de uma solicitação, como também a criação de uma conexão. Isto é especialmente relevante para a primeira consulta do console, que também cria uma conexão.

Agora, você pode interromper o processo de criação de uma conexão sem desativar a fonte de dados: se você clicar no botão Cancel enquanto a conexão estiver sendo criada, ela será interrompida, e uma mensagem de Connection canceled será exibida.

Isto é relevante para mais do que apenas consultas do console de consultas. Por exemplo, se você criar uma conexão antes de iniciar uma introspecção, a ação de interromper a introspecção cancelará a criação da conexão sem desativar a fonte de dados.

IDE geral

Configurações reformuladas

A estrutura das configurações de Preferences para a seção Database não mudava desde a primeira versão do DataGrip. Decidimos que era hora de melhorar a praticidade da seção, atualizando sua estrutura. Veja o que fizemos:

A configuração Track databases/schemas creation and deletion foi movida da seção General para Data Source Properties | Options e agora faz referência a uma fonte de dados específica. Essa configuração identifica se a lista de esquemas precisa ser atualizada depois de você criar ou excluir esquemas no console de consultas.

Outras configurações ainda são globais, mas agora estão incluídas em seções mais apropriadas.

Observe que, como parte dessa atualização, essas configurações serão redefinidas para seus valores padrão:

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

Abas uniformemente divididas

Agora, você pode distribuir o espaço de trabalho entre as guias do editor para que elas tenham a mesma largura. Para configurar isso, acesse Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits.

Exportar diagrama UML para outros formatos

Agora, é possível exportar diagramas como arquivos yEd .graphml, JGraph .drawio, Graphviz .dot, Graphviz .dot com posições, além de arquivos Mermaid .md, Plantuml e IDEA .uml, o que os torna compatíveis com ferramentas de terceiros.

Melhorias de qualidade

  • DBE-15043: os bookmarks agora oferecem o mesmo comportamento de navegação que os itens do explorador de banco de dados.
  • DEA-129631: agora há suporte para tamanhos de fonte fracionários.