Nouveautés de DataGrip 2022.1

DataGrip 2022.1, la première mise à jour majeure de 2022, est disponible. Elle comprend de nombreuses évolutions et améliorations afin d'offrir une meilleure utilisabilité. Regardons tout cela de plus près.

Importation/Exportation

Copie de plusieurs objets

Il s'agit sans aucun doute de l'amélioration la plus significative de cette version. Vous pouvez désormais sélectionner plusieurs tables et les copier dans un autre schéma.

Sélectionnez les tables que vous voulez copier et appuyez sur F5 pour ouvrir la boîte de dialogue d'exportation.

Comme pour l'exportation d'une seule table, vous pouvez mapper les colonnes et visualiser et modifier le DDL de la nouvelle table.

 

Comme vous le savez peut-être, DataGrip prend en charge l'exportation entre systèmes de gestion de bases de données, le schéma cible peut donc appartenir à n'importe quelle base de données de votre projet. Copier toutes les tables de votre base de données PostgreSQL vers SQL Server est un jeu d'enfant.

Vous pouvez également indiquer une table existante pour cible au lieu d'une nouvelle. Dans ce cas, les données de la table source seront ajoutées dans la table cible.

Amélioration de la qualité 

  • DBE-5200 : l'action Edit as table fonctionne désormais correctement même si les lignes du fichier source ont un nombre différent de colonnes.
  • DBE-14541 : l'ajout d'une ligne à un fichier CSV d'une colonne fonctionne maintenant correctement.
  • DBE-14735 : correction du bug concernant l'exportation simultanée de tables contenant des horodatages.

Éditeur de données

Format d'affichage par défaut pour les cellules binaires

Nous avons ajouté un nouveau paramètre, Automatically detect binary values, avec deux options : UUID et Text. La détection des identifiants uniques universels peut maintenant être désactivée.

Modifier des champs dans les résultats de requêtes MongoDB

Vous pouvez désormais modifier les résultats des requêtes sur les collections MongoDB directement depuis une console. Cela fonctionnera même si .find() est suivi par des méthodes comme sort() ou limit().

Prise en charge des résultats dans l'éditeur en mode batch SQL Server

Lorsque plusieurs instructions sont exécutées simultanément dans Transact SQL, elles sont exécutées en mode batch (traitement par lots). Auparavant, cela compliquait l'affichage des résultats dans l'éditeur pour chaque requête, mais DataGrip gère désormais correctement cette situation.

En outre, DataGrip supprime désormais toutes les instructions SQLCMD lors de l'exécution de requêtes en mode batch (voir DBE-14920 pour en savoir plus).

Amélioration de la qualité 

  • DBE-8561 : cliquer en dehors du sélecteur de date n'entraîne plus de perte de modifications.
  • DBE-9632 : la touche Entrée permet désormais d'enregistrer la valeur dans le sélecteur de date.
  • DBE-11706 : la touche Tab est maintenant prise en charge dans le sélecteur de date.
  • DBE-9974 : il est désormais possible de dissocier un fichier .csv de l'option « View as Table ».
  • DBE-13040 : nous avons facilité l'affichage des colonnes masquées. Il suffit maintenant de cliquer sur une colonne masquée dans la liste des colonnes.
  • DBE-14516 : l'indicateur de taille de cellule n'est plus affiché pour les valeurs entièrement chargées et utilise une police à espacement fixe, de sorte que le contenu est bien aligné.
  • DBE-14670 : la visionneuse géographique se synchronise désormais correctement.
  • DBE-10851 : nous avons corrigé un problème de police en mode arborescence.
  • DBE-9710 : Oracle les valeurs d'horodatage respectent désormais les fuseaux horaires.
  • DBE-14852 : MariaDB, Aurora MySQL les dates sans valeur s'affichent maintenant correctement dans l'éditeur de données.
  • DBE-15009 : Sybase ASE toutes les colonnes s'affichent maintenant dans la vue des résultats.
  • DBE-15031 : Snowflake la requête de mise à jour pour les tables comportant des valeurs DEFAULT est maintenant générée correctement.
  • Le menu contextuel de la colonne s'affiche désormais également dans la vue Transpose.

Introspection

Modèles de session pour l'introspection

Parfois, l'introspection nécessite des autorisations spéciales, accordées à des utilisateurs précis. Il est désormais possible d'utiliser des identifiants dédiés pour l'introspection. Pour cela, créez d'abord un modèle de session dédié dans l'onglet Options.

 

Utilisez ensuite ce modèle pour l'introspection en sélectionnant son nom dans le champ Use session template de la section Introspection.

Introspection fragmentaire Oracle

Vous pouvez désormais actualiser un objet indépendamment de tous les autres objets de la base de données.

 

Cela peut être particulièrement utile si vous utilisez notre nouvelle fonctionnalité Introspection levels. Pour visualiser le code source d'un seul objet, il vous suffit de cliquer sur le bouton Refresh Object dans l'explorateur de base de données.

De plus, lorsque vous ouvrez l'éditeur de code source de l'objet, DataGrip vous donne la possibilité d'introspecter l'objet sélectionné.

Prise en charge de la version 2.x de H2

Nous avons ajouté la prise en charge de la version 2.x de H2. Les changements sont les suivants :

  • DataGrip introspecte désormais les types correctement. La plupart des problèmes étaient liés aux types composites : ARRAY et ROW.
  • Les colonnes avec des séquences intégrées (auto_incrément, generated always as identity, etc.) sont maintenant introspectées correctement.
  • Les contraintes de contrôle et les clés étrangères ne sont plus perdues.
  • Les sources sont chargées pour les vues, les déclencheurs, les routines.
  • Les informations sur les prédicats de contrôle sont affichées pour les domaines.

Ajouté à la prise en charge de base YugabyteDB

Nous fournissons maintenant le pilote JDBC pour YugabyteDB, et vous pouvez créer une source de données YugabyteDB en un seul clic.

Amélioration de la qualité 

  • DBE-13521 : ClickHouse le code source des vues matérialisées est maintenant introspecté.

Génération de code

Nouvelle version de Modify Table

Nous sommes en train de remanier légèrement la fenêtre Modify Table. La nouvelle version a une interface utilisateur entièrement générée à partir de propriétés introspectives, ce qui permet d'utiliser de nombreux paramètres associés à une base de données spécifique.

Pour l'instant, nous ne publions qu'une petite partie de cette modification, mais elle peut déjà être très utile. La nouvelle fenêtre Modify Table vous permet d'ajouter et de modifier les contraintes de contrôle des colonnes, ce qui était auparavant impossible ! En outre, vous pouvez maintenant modifier toutes les propriétés des tables et des colonnes introspectées par DataGrip.

Nous pensons que vous apprécierez particulièrement la nouvelle interface utilisateur pour les colonnes, car elle ne comporte plus de réduction ou d'expansion que de nombreux utilisateurs trouvaient frustrantes.

Amélioration de la qualité 

  • DBE-15000, DBE-15001 : PostgreSQL la modification des autorisations entraîne maintenant la génération du code correct.
  • DBE-5136 : SQL Server vous obtiendrez désormais un script valide lors de la suppression de colonnes avec des contraintes via Modify Table.
  • DBE-14760 : MySQL la fenêtre Modify Table ne corrompt plus l'index fonctionnel.
  • DBE-2827 : MySQL il est possible de modifier l'attribut AUTO_INCREMENT.
  • DBE-14801 : Snowflake le script DDL généré contient des instructions permettant de créer les séquences par défaut.

Comparateur Diff de bases de données

Permuter la source et la cible

Nous avons introduit un bouton qui vous permet de permuter la source et la cible lors de la comparaison d'objets ou de schémas.

Amélioration de la qualité 

Nous travaillons constamment à l'amélioration de la qualité de la fenêtre de comparaison des bases de données. Certains correctifs avaient été publiés dans la version 2021.3, mais d'autres sont des nouveautés de la version 2022.1, notamment :

  • DBE-15063 : le nouvel algorithme intelligent pour la comparaison de chaînes de caractères a résolu le problème dû au respect de la casse des mots-clés dans la fenêtre de comparaison.
  • DBE-14686 : l'option Reformat generated code est respectée.
  • DBE-14782 : le comparateur détecte les objets qui sont susceptibles d'être identiques même si leur nom est différent.
  • DBE-14431 : Oracle l'exception Array index out of bounds ne devrait plus se produire.

Éditeur de code

Intention Convert to subquery

Nous inaugurons une nouvelle intention très pratique, Convert To Subquery. Vous n'avez plus besoin d'utiliser Surround Live Template pour convertir les sous-requêtes. D'ailleurs, vous n'avez même pas besoin de sélectionner une requête. Il suffit d'appuyer sur Alt+Entrée| Convert To Subquery.

Meilleur algorithme d'auto-indentation

Nous avons amélioré les algorithmes d'indentation automatique. Quelques tickets existaient à ce sujet (DBE-14825 et DBE-8742), mais nous sommes allés beaucoup plus loin et avons considéré toutes les situations et tous les cas possibles, de sorte que l'auto-indentation fonctionne désormais correctement partout.

Prise en charge des types à plusieurs plages PostgreSQL

Les types à plusieurs plages sont apparus dans PostgreSQL 14. Nous avons ajouté la prise en charge de ceux qui sont intégrés.

Les types à plusieurs plages personnalisés seront pris en charge à l'avenir.

Amélioration de la qualité 

  • DBE-11683 : PostgreSQL ajout de la prise en charge de la syntaxe ROWS FROM.
  • DBE-11868 : PostgreSQL correction d'un problème entraînant la non résolution d'expressions de tables courantes.
  • DBE-15061 : PostgreSQL correction du problème provoquant l'injection incorrecte de la syntaxe JSONB.
  • DBE-14888 : PostgreSQL ajout de la prise en charge de BEGIN ATOMIC.
  • DBE-15052 : Redshift ajout de la prise en charge de ALTER MATERIALIZED VIEW.
  • DBE-11830 : Oracle ajout de la prise en charge de la syntaxe USING INDEX ENABLE.
  • DBE-6548 : Oracle correction de la résolution des colonnes dans les instructions CREATE MATERIALIZED VIEW LOG.
  • DBE-15095 : Snowflake ajout de la prise en charge de l'option WITH TAG dans l'instruction CREATE STAGE.
  • DBE-14793 : Snowflake ajout de la prise en charge de l'instruction EXECUTE.
  • DBE-11247 : Snowflake JSON est désormais mis en évidence correctement dans les déclarations.
  • DBE-14843 : BigQuery QUALIFY est maintenant pris en charge.
  • DBE-13995 : BigQuery la colonne UNNEST est désormais prise en charge.
  • DBE-14504 : ClickHouse les littéraux de carte sont maintenant pris en charge.
  • DBE-15013 : ClickHouse UNION DISTINCT est maintenant pris en charge.

Exécution de requêtes

Annuler les demandes en cours

Auparavant, lorsque vous cliquiez plusieurs fois sur le bouton Cancel statement, la requête semblait être arrêtée mais continuait en fait à s'exécuter dans la base de données.

Il y avait une logique complexe derrière ce comportement. Au premier clic, DataGrip envoyait une demande d'annulation à la base de données, tandis qu'au second clic, le processus du pilote JDBC était annulé pour mettre fin à toutes les connexions à la source de données (nous appellerons cela la désactivation de la source de données). En conséquence, DataGrip recevait une erreur pour la deuxième requête d'annulation parce que la connexion avait été perdue, et non parce que l'annulation avait été effectivement réalisée.

Nous avons donc simplifié la logique d'annulation. Il devrait maintenant être clair que c'est bien la requête qui est annulée :

  • L'indicateur de progression sur la gouttière affiche un carré rouge pendant l'annulation de la requête.
  • Une barre de progression de l'annulation s'affiche. Elle identifie la source de données et la session.

Nous ne désactivons plus les sources de données sans avertissement, car cela peut être dangereux pour certains processus se déroulant simultanément. Ainsi, si vous cliquez sur l'icône Cancel une deuxième fois, DataGrip vous demandera si vous voulez vraiment stopper le processus distant ou si vous voulez continuer à attendre. Si vous choisissez de désactiver la source de données, la requête sera arrêtée pour DataGrip, mais elle continuera à s'exécuter dans la base de données.

Après 10 secondes d'inactivité, il vous sera proposé de désactiver la source de données.

Une fois la requête annulée, une icône en forme de gouttière ressemblant au symbole « Non » s'affichera à gauche de celle-ci.

Annulation des connexions

Auparavant, lorsque vous essayiez d'interrompre une requête pendant la création d'une connexion, la source de données était désactivée.

Vous pouvez désormais interrompre non seulement l'exécution d'une requête, mais aussi la création d'une connexion. C'est particulièrement intéressant pour la toute première requête dans la console, qui crée également une connexion.

Vous pouvez maintenant arrêter le processus de création d'une connexion sans désactiver la source de données : si vous cliquez sur le bouton Cancel pendant la création de la connexion, cette dernière sera interrompue et le message Connection canceled s'affichera.

Ce changement ne s'applique pas qu'aux requêtes effectuées à partir de la console de requête. Par exemple, si vous créez une connexion avant de lancer une introspection, l'interruption de l'introspection annulera la création de la connexion sans désactiver la source de données.

Généralités concernant l'IDE

Paramètres remaniés

La structure des paramètres Preferences pour la section Database n'a pas changé depuis la première version de DataGrip. Nous avons décidé qu'il était temps d'améliorer l'ergonomie de la section en actualisant sa structure. Voici le résultat de notre travail :

Le paramètre Track databases/schemas creation and deletion a été déplacé de la section General vers Data Source Properties | Options et fait désormais référence à une source de données spécifique. Ce paramètre détermine si la liste des schémas doit être mise à jour après la création ou la suppression de schémas dans la console de requête.

D'autres paramètres restent globaux mais ont été déplacés dans des sections plus appropriées.

Veuillez noter que dans le cadre de cette mise à jour, les paramètres suivants seront réinitialisés à leur valeur par défaut :

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

Onglets divisés uniformément

Vous pouvez maintenant répartir l'espace de travail entre les onglets de l'éditeur afin qu'ils aient tous la même largeur. Pour cela, cliquez sur Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits.

Exportation de diagrammes UML vers d'autres formats

Il est désormais possible d'exporter des diagrammes sous forme de fichiers yEd .graphml, JGraph .drawio, Graphviz .dot, Graphviz .dot avec positions, Mermaid .md, Plantuml et IDEA .uml, ce qui les rend compatibles avec des outils tiers.

Amélioration de la qualité 

  • DBE-15043 : les signets ont maintenant le même comportement de navigation que les éléments de l'explorateur de base de données.
  • DEA-129631 : les tailles de police sous forme de fractions sont maintenant prises en charge.