{"id":156593,"date":"2021-06-24T10:26:14","date_gmt":"2021-06-24T09:26:14","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=datagrip&#038;p=156593"},"modified":"2025-09-22T07:58:40","modified_gmt":"2025-09-22T06:58:40","slug":"datagrip-2021-2-eap-2","status":"publish","type":"datagrip","link":"https:\/\/blog.jetbrains.com\/en\/datagrip\/2021\/06\/24\/datagrip-2021-2-eap-2","title":{"rendered":"DataGrip 2021.2 EAP 2"},"content":{"rendered":"\n<p>Hello! Another EAP build for 2021.2 is available! We would appreciate it if you would try it out and share your feedback with us.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New location for projects<\/h2>\n\n\n\n<p>In DataGrip, projects are now located by default in the same place as they are in all other IntelliJ-based IDEs \u2013 in the user&#8217;s home folder, inside the <em>DataGripProjects<\/em> subfolder.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/3dSrqjZA7t82YnVjDQfOm2r0yMVvLC4YTlWr6Zl8HKBQ2zRhmo_5SsRApWQJXsTipVMZJprKQfRRI7QZr3HJlboo9kttb-0yT87SdCeqLM9isRfen9zbGj77MWLEsnnW4xtWqFqI.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Your project in DataGrip is a complex of your data sources, console and scratch files, and attached folders. They were previously stored in the <a href=\"https:\/\/intellij-support.jetbrains.com\/hc\/en-us\/articles\/206544519-Directories-used-by-the-IDE-to-store-settings-caches-plugins-and-logs\" target=\"_blank\" rel=\"noopener\">configuration folder<\/a>, meaning that each time you updated your IDE, the projects were copied, along with IDE settings. This sometimes caused the data source list to become empty. This problem has been solved, and now DataGrip behaves consistently with other IDEs.<\/p>\n\n\n\n<p>Due to errors in project migration, those who used the first EAP build might have lost their Favorites, Bookmarks, Run Configurations, or data about virtual foreign keys. To restore them, please migrate from the previous version again. The details are described here: <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-13410\" target=\"_blank\" rel=\"noopener\">DBE-13410<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">[MongoDB] Completion of fields and operators<\/h2>\n\n\n\n<p>Our code completion has now come to the MongoDB console.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fields<\/h3>\n\n\n\n<p><strong>What can be completed now:<\/strong><\/p>\n\n\n\n<p>Fields:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/4iQN84lGZbOzi2y1XR96mf5mLp-alYbcC0jgr6ZWD9S6tb-weMZDjo-xWE2GomEer_3UxOgcYMxcEngnbdmFLpyCBViPGH3Ns3VHGRjQhMTAkEiJ9YWILSvmzAI_KSOYtHBm8mzR.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Nested fields:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/XjK5qyKWZIVWj8Zgq2F1w0npKU30UZkFYKRa4tvpPFNR6guvOYLqu9ZN4gQh0ng-rHnwzYBiFgz5o3Uuexf8Q1YLUQykYECUb9KdKsLCHhQMuJyhaNul1TtgnxkyjbzBq_9uiVPa.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Fields inside <a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/aggregation\/\" target=\"_blank\" rel=\"noopener\">aggregation expressions<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/wXbAqFUUyE9djnt7Zzx0qcXGMk-8iAGZ2NYr4AWCun2lT8WC5M4BZjzXOS5VkvL3AC-F06-o9Jr1lk5sbgMFmguWzSs1sD8SmgBsrJtLD5tOfZJXb8AMEZs4SqM8njGwCEn6vvaN.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>Additional information:<\/strong><\/p>\n\n\n\n<p>\u2013 Fields at the top level have a higher priority level than operators, and vice versa for nested fields.<\/p>\n\n\n\n<p>\u2013 Field completion works in all methods except for <em>db.collection.aggregate ([&#8230;])<\/em>.<\/p>\n\n\n\n<p>\u2013 Completion works in string literals, as well.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/e8NbeIuZsZrJFM2pGje_TlfNSXBPldyN6fUbZ42BKncoskS2-QWA514bOuRp9NanWBiHyGRl6fCuCL5XkhemGhuKLfLr4r_MDhtNPOvgCFrw49w5W3Lz01X31PsviQGXKcOtyciU.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>\u2013 In most cases, completion works when using parameters in scopes:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/6q6gMCNXwXX6b0re6tBQJg73hYWwKQMwp_s-BEkFS9dBBDLvR2Mmu7y41fwa9I1N2gO2sEVKvmK_sjYmybN-3EmPrh8leyGS14BaatzLu9r270PLheyVxO9c2pKYNZ7BuVwFpVgH.png\" alt=\"\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Operators<\/h3>\n\n\n\n<p><strong>Completion works for:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/query\/\" target=\"_blank\" rel=\"noopener\">Query operators<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/QAp4eUb9nzmWTxaxrswK562QW8HW927C9YGkE_8dO0ZkLYyCTer174p3QGmDlfJJt_v2luuLQ4aJxGqUdz0WFP_4-hvopwOB-ZiURvWWM939H_-YvFFzwShJJojODbJkpaLFjoX.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/query\/\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">Projection operators<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/EQTXvyBn7MHCOpkr8revvS6AnAWLS5NB_oKQKze2EZ3keYGRrDebaXgBNow01uByjM_JftkaRDKuKwTb5Wu3Un5wRwz95Wgc4niGz_0sAjO7KZSgpF6I5zgRGB8GNYeHusE7y42R.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/update\/\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">Update operators<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/eJKcsJCOxGILax3RXYR-XC6bi7W3or4ooCrgAAtpuRHxQBm1gb_Ah1Zi0Gk-7MOZaHdo9eRUWWh17Bsk0VjaBiohvnQ-bhR2RBITstuSqRmXowo8vInLqx6R_rvS4WFNgqF3cw1n.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/operator\/aggregation-pipeline\/\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">Aggregation stages<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/tGwsET8wDKgitdZIZ6TDBj6kDCwmnoVpmjtXyrTXoNlk_baDcT2Hxy3PIl49dNHqgrMvIHAI52Yqdu2JhJc4-EWmRzY7Fy9pDU7lsfw_TqeX5NvGaadtK68dL579FyhzU81iNwMC.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Separate folders for functions and procedures<\/h2>\n\n\n\n<p>If you turn on the <em>Separate Procedures and Function<\/em> option in the settings of the database explorer (the gear icon), it will immediately take effect! For now, this is available for Microsoft SQL Server, Oracle, and PostgreSQL.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/LWBildTnqh7v51fY-pOCLCQ6kBPpzMbAX61VHxjn45LbMcworUXDC_vJksYNWP2enz_7NISW9mx5MyTq-SSAU1jybcotoa5qHdI2v-WoPy8MwrjLeD8FdW7jLiT-E3RM3Bd_Shhc.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Natural sort order for database objects<\/h2>\n\n\n\n<p>If you turn off the <em>Sort Alphabetically<\/em> option in the database explorer settings, the natural sorting for objects is applied.&nbsp;<\/p>\n\n\n\n<p><em>Sort Alphabetically<\/em> is off:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/YM7CHb25BLMWRA96CRuRP8CXkHtGtCsUv9AWy3_4v7iwJnAZkbtoxb0GC203LJL1QcMzJRBAeqc9sfbupJ9Ur893roH-p-AWyB56ZqQMqej1anwQU68O4xDju6awOdg8lGUQmzoo.png\" alt=\"\"\/><\/figure>\n\n\n\n<p><em>Sort Alphabetically<\/em> is on:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/PVKBBerITQi2Z0olY8oRao4WtuVkfEm13yrYb7QTE1UfgMJDwWKO0YhubVpfjWRMz7oxLqCUdA15ikBPsYst8CYC-Zs15hPS5iddiinrEZsC8_97yVoy2uUc-LRnRSzLrDEgNIVL.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">[SQL Server] Linked Servers<\/h2>\n\n\n\n<p>This is not full support as you would expect, because metadata is not available for objects in linked servers. Linked servers are shown in the database explorer, and the DDL for their creation can be generated.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/iCsjRpP-ltexbdkO4ZU6uHARDwDOjr4mLt7ObB5W56FpkZ1-fZeBzOx8IFEVqvwito5sqfbD9UW1KKXHsCBB5gaFrFsDkQihFFEn6_nph71fLo5KLqD_evV_ZQ3xK9nk6wsGE8rZ.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Code completion quality<\/h2>\n\n\n\n<p>We&#8217;ve fixed several bugs to improve the quality of code completion:<\/p>\n\n\n\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-10515\" target=\"_blank\" rel=\"noopener\">DBE-10515<\/a>, <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-2212\" target=\"_blank\" rel=\"noopener\">DBE-2212<\/a>: The objects from the schema of the current context have higher priority in the code completion list.<\/p>\n\n\n\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-7781\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">DBE-7781<\/a>: Automatic alias doesn&#8217;t appear when it is not needed.<\/p>\n\n\n\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-12018\" target=\"_blank\" rel=\"noopener\">DBE-12018<\/a>: Table qualification in JOIN completion works.<\/p>\n\n\n\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-12479\" target=\"_blank\" rel=\"noopener\">DBE-12479<\/a>: The priority of ASC\/DESC inside the ORDER BY clause has been increased.<\/p>\n\n\n\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-13341\" target=\"_blank\" rel=\"noopener\">DBE-13341<\/a>: [PostgreSQL] Completion in GRANT\/REVOKE statements works.<\/p>\n","protected":false},"author":395,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[826,89],"tags":[6569,1334,2655,3834],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/156593"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/datagrip"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/395"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=156593"}],"version-history":[{"count":3,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/156593\/revisions"}],"predecessor-version":[{"id":641682,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/156593\/revisions\/641682"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=156593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=156593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=156593"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=156593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}