{"id":298073,"date":"2022-11-18T18:27:14","date_gmt":"2022-11-18T17:27:14","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=datagrip&#038;p=298073"},"modified":"2022-11-24T12:05:16","modified_gmt":"2022-11-24T11:05:16","slug":"datagrip-2023-3-eap-3","status":"publish","type":"datagrip","link":"https:\/\/blog.jetbrains.com\/en\/datagrip\/2022\/11\/18\/datagrip-2023-3-eap-3","title":{"rendered":"DataGrip 2022.3 EAP 3"},"content":{"rendered":"\n<p>Hello! Here\u2019s a brief overview of what we&#8217;ve released in the latest update to <a href=\"https:\/\/www.jetbrains.com\/datagrip\/nextversion\/\" target=\"_blank\" rel=\"noopener\">DataGrip 2022.3 EAP<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">UI for virtual foreign keys<\/h2>\n\n\n\n<p>The ability to create <a href=\"https:\/\/www.jetbrains.com\/help\/datagrip\/foreign-keys.html#create-a-virtual-foreign-key-relation\" target=\"_blank\" rel=\"noopener\">virtual foreign keys<\/a> was introduced a while ago and the main way to create them was by using the intention action <em>Store Relation <\/em>at the JOIN clause in your query. This was a little bit tricky to find and the whole functionality lacked an intuitive way to use it. Here\u2019s an overview of the implemented changes:<br><br>Virtual foreign keys are visible in the database explorer:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"677\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/image-43.png\" alt=\"\" class=\"wp-image-298778\"\/><\/figure>\n\n\n\n<p>You can create and drop them here, in the database explorer, and also in the <em>Modify Table<\/em> dialog.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"1106\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/image-44.png\" alt=\"\" class=\"wp-image-298800\"\/><\/figure>\n\n\n\n<p>Bear in mind that virtual foreign keys are mainly used for:<\/p>\n\n\n\n<ul><li>JOIN clause code completion.<\/li><li>Showing virtual relationships in the diagrams.<\/li><li>Navigation by data relationships in the data editor.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"1009\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/image-45.png\" alt=\"\" class=\"wp-image-298811\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">New layout for the SQL schema generator: <em>Per Object By Schema and Type<\/em><\/h2>\n\n\n\n<p>The new layout is called <em>Per Object By Schema and Type. <\/em>If it\u2019s used for generating SQL for the whole schema, the resulting files will be placed in folders according to the object&#8217;s type: tables, views, etc.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"575\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/image-46.png\" alt=\"\" class=\"wp-image-298822\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Startup script for session templates<\/h2>\n\n\n\n<p>It\u2019s now possible to set the startup script for the session templates. This means that the script will be run each time a new session is created based on the corresponding template. <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-16592\" target=\"_blank\" rel=\"noopener\">For example<\/a>, it lets DataGrip run use secondary roles all for the introspection in Snowflake.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"845\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/image-47.png\" alt=\"\" class=\"wp-image-298833\"\/><\/figure>\n\n\n\n<p>That&#8217;s it for today! Thank you for reading.<\/p>\n","protected":false},"author":395,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[826,89],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/298073"}],"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=298073"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/298073\/revisions"}],"predecessor-version":[{"id":299394,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/298073\/revisions\/299394"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=298073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=298073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=298073"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=298073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}