{"id":189321,"date":"2021-10-07T15:43:23","date_gmt":"2021-10-07T14:43:23","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=datagrip&#038;p=189321"},"modified":"2025-09-19T15:20:38","modified_gmt":"2025-09-19T14:20:38","slug":"datagrip-2021-3-eap-is-open","status":"publish","type":"datagrip","link":"https:\/\/blog.jetbrains.com\/en\/datagrip\/2021\/10\/07\/datagrip-2021-3-eap-is-open","title":{"rendered":"DataGrip 2021.3 EAP Is Open"},"content":{"rendered":"\n<p>Hello! We have begun our&nbsp;<a href=\"https:\/\/www.jetbrains.com\/datagrip\/nextversion\/\" class=\"ek-link\" target=\"_blank\" rel=\"noopener\">DataGrip 2021.3 EAP<\/a>&nbsp;and there is something really exciting inside.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Data editor<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Aggregates<\/h3>\n\n\n\n<p>We\u2019ve added the ability to display an <em>Aggregate <\/em>view for a range of cells. This is a long-awaited feature that will help you manage your data and that will spare you from having to write additional queries! This brings our data editor step closer to Excel and Google Spreadsheets!&nbsp;<\/p>\n\n\n\n<p>Select the cell range you want to see the view for, then right click and select <em>Show Aggregate View.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1280\" height=\"797\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image.png\" alt=\"\" class=\"wp-image-189322\"\/><\/figure>\n\n\n\n<p>Quick facts:<\/p>\n\n\n\n<ul>\n<li>It shares the panel with <em>Value<\/em> view: now you have two tabs there. This panel can be moved to the bottom of the data editor.<\/li>\n\n\n\n<li>You can use the gear icon to display or hide any aggregate from this view.<\/li>\n\n\n\n<li>Like extractors, aggregates are scripts. You can create and share your own in addition to the nine scripts we&#8217;ve bundled by default.<\/li>\n\n\n\n<li>Moreover, aggregate scripts and extractors are interchangeable. If you\u2019ve previously used an extractor to get just one value, you can now copy it to the <em>Aggregates<\/em> folder and use it for aggregates.<\/li>\n<\/ul>\n\n\n\n<p>One aggregate value is displayed in the status bar, and you can choose which value you\u2019d like it to be.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"1080\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-2.png\" alt=\"\" class=\"wp-image-189333\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Independent split<\/h3>\n\n\n\n<p>If you split the editor and open the same table, the data editors will now be completely independent. You can set different filtering and ordering options for them. Previously, filtering and ordering were synchronized, which obviously was useless.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"1195\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image.gif\" alt=\"\" class=\"wp-image-189344\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong><br><\/strong>Custom font<\/h3>\n\n\n\n<p>You can choose the dedicated font for looking at data under <strong>Database | Data views | Use a custom font<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"895\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-3.png\" alt=\"\" class=\"wp-image-189355\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Setting for default sorting<\/h3>\n\n\n\n<p>You can define which sorting method will be used as the default for tables: <em>via ORDER BY<\/em> or <em>client-side <\/em>(which doesn&#8217;t run any new queries and sorts only the current page). The setting can be found under <strong>Database | Data views | Sorting | Sort via ORDER BY<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"865\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-4.png\" alt=\"\" class=\"wp-image-189366\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Display mode for binary data<\/h3>\n\n\n\n<p>16-byte data is now displayed as UUID by default. You can also customize how binary data is displayed in the column.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1372\" height=\"1395\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-5.png\" alt=\"\" class=\"wp-image-189377\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">[MongoDB] Completion for filter {} and sort {}<\/h3>\n\n\n\n<p>Code completion now works when filtering data in MongoDB collections.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"499\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-6.png\" alt=\"\" class=\"wp-image-189388\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Database in the Version Control System<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">TLDR<\/h3>\n\n\n\n<p>This release is a logical continuation of the previous one, which introduced the ability to generate a DDL data source based on a real one. Now, this workflow is fully supported. You can:<\/p>\n\n\n\n<ul>\n<li>Generate a DDL data source from a real one<\/li>\n\n\n\n<li>Use the DDL data source to map the real one<\/li>\n\n\n\n<li>Compare and synchronize them in both directions<br><\/li>\n<\/ul>\n\n\n\n<p>Just as a reminder, a <em>DDL data source<\/em> is a virtual data source whose schema is based on a bunch of sql scripts. Storing these files in the Version Control System is a way to keep your database under the VCS.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Database in the VCS: step-by-step workflow<\/h3>\n\n\n\n<p>Let\u2019s take a look at the whole process. Imagine two developers, Alice and Bob, want their data source schemas to be synchronized via GitHub.<\/p>\n\n\n\n<p>We advise users to store the project root folder in the VCS. Alice and Bob will sync their projects, which contain the DDL data sources for the sakila database. They both have their local data sources, but they want to synchronize them via VCS.<\/p>\n\n\n\n<p>Alice enables version control integration on a project root folder, which is usually automatically displayed in the <em>Files<\/em> tool window.<\/p>\n\n\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/iFnrGKLrVwTVCKWXHve5tRHRuVCYCd48aVzx4bMdrQEQB0h0HQMII-dZmixXNMgTNYEKm-Rq34FQWxGAeZorEwuge4NhlAcM63n03YAbnU1MaAUUG6wffcdXtHLa7dz_WhXwLxcs0.png\" style=\"width: 1270px;\"><br><br>She then creates a sakila_repo folder, which she\u2019ll use as a schema representation to be synced via VCS.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1898\" height=\"918\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-7.png\" alt=\"\" class=\"wp-image-189399\"\/><\/figure>\n\n\n\n<p>First, Alice needs to create the DDL data source with help of the <em>Dump to DDL data source<\/em> action. This will be a file-based schema mirror of the real data source. It&#8217;s name is <em>Sakila Alice DDL.<br><br><\/em><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/eNN9nBWU3gDJ9neymcKfs1nW46MG4eMrerjbh2pFA7_I39zn3WvzMh9SUf7Cz6e2zRfpck6HEuM_U7S6ns_Yc2g29fSFaGe2P3n9ill7V36QITvUqpra7xupLuF_CpNawM_kZNnCs0.png\" style=\"width: 1270px;\"><br><br>When creating a DDL data source, it&#8217;s necessary to specify that the files will be placed in the <em>sakila_repo<\/em> folder.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1590\" height=\"841\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-8.png\" alt=\"\" class=\"wp-image-189410\"\/><\/figure>\n\n\n\n<p>DataGrip asks whether Alice wants to add new files to Git, and indeed she does.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1898\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-9.png\" alt=\"\" class=\"wp-image-189433\"\/><\/figure>\n\n\n\n<p>Now the project, along with the <em>sakila_repo <\/em>folder, can be committed and pushed to the GitHub repo. Alice hasn&#8217;t defined the remote repo yet. This can either be done in advance or when the project is pushed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1586\" height=\"1380\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-10.png\" alt=\"\" class=\"wp-image-189444\"\/><\/figure>\n\n\n\n<p>Done!<\/p>\n\n\n\n<p>Bob clones the project from GitHub, and now he has the same local connection and DDL data source, which can be synced via VCS. All he needs to do is map his local data source using the DDL one. This should be done in the <em>DDL mapping<\/em> tab of the data source properties.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1586\" height=\"1380\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-10.png\" alt=\"\" class=\"wp-image-189448\"\/><\/figure>\n\n\n\n<p>Now, the<em> <\/em>DDL data source represents the<em> <\/em>repository version, and the local data source is still local. Thus, to synchronize them<em>, <\/em>Bob needs to go to the context menu of the data source and select <em>DDL data source | Apply from postgres@localhost (DDL)<br><br><\/em><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/IHiCHppS81ZebO2U80Aw8y7S510LyK2ubF2sx7sFU47x_WrEQsJF5WbIIwN6LLuYj2fqXoBNl4M5Ju2H8xQXEDdM81UKWXZ6lnkMYe8GbjvZ8kvsMok2wtDezpu8KCaJHWBaC3Qvs0.png\" style=\"width: 1270px;\"><br><br><\/p>\n\n\n\n<p>The migration dialog opens, and Bob needs to click <em>Apply Right to Left<\/em>. Viola! The data sources are synced.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"2048\" height=\"1135\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-11.png\" alt=\"\" class=\"wp-image-189466\"\/><\/figure>\n\n\n\n<p>Soon this migration dialog will be completely reworked, so in the stable release there will be a more convenient and powerful way to migrate from one data source to another.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">File-related actions<\/h3>\n\n\n\n<p>All actions for files are available on DDL data source elements as well. For example, you can delete, copy, or commit files related to the schema elements just from the database explorer.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"865\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-12.png\" alt=\"\" class=\"wp-image-189477\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Auto-sync<\/h3>\n\n\n\n<p>If this option is turned on, the DDL data source will be automatically refreshed with changes to the corresponding files. This was already the default behavior, but now you have the option to disable it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"865\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-13.png\" alt=\"\" class=\"wp-image-189488\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Initial search path<\/h3>\n\n\n\n<p>In this UI you can define names for your database and schemas, which will be displayed in the DDL data source. DDL scripts don&#8217;t usually contain names, and in these cases there will be dummy names for databases and schemas by default.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1503\" height=\"1252\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-14.png\" alt=\"\" class=\"wp-image-189499\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Connectivity<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Accidental spaces warning<\/h3>\n\n\n\n<p>If any value except <em>User<\/em> or <em>Password<\/em> has leading or trailing spaces, DataGrip will warn you about them when you click <em>Test Connection<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"962\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-15.png\" alt=\"\" class=\"wp-image-189510\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">[Oracle, SQL Server] Kerberos authentication<\/h3>\n\n\n\n<p>It&#8217;s now possible to use Kerberos authentication in Oracle and SQL Server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"734\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-16.png\" alt=\"\" class=\"wp-image-189521\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">[Oracle, DB2] Enable DBMS_OUTPUT<\/h3>\n\n\n\n<p>This new option in the <em>Options <\/em>tab lets you enable <em>DBMS_OUTPUT<\/em> by default for new sessions.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"916\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-17.png\" alt=\"\" class=\"wp-image-189532\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">More options button<\/h3>\n\n\n\n<p>We&#8217;ve introduced a <em>More Options<\/em> button for cases when something unusual has to be configured for the connection but there\u2019s no need to clutter up the UI. These options currently include the ability to add <em>Schema <\/em>and <em>Role <\/em>fields for Snowflake connections and buttons for configuring SSH and SSL to increase their discoverability.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"724\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-18.png\" alt=\"\" class=\"wp-image-189543\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Expert options<\/h3>\n\n\n\n<p>The <em>Advanced<\/em> tab now includes an <em>Expert Options<\/em> list. In addition to a common option to turn on the JDBC introspector (please contact our support before using it), there are some database-specific options:<br><\/p>\n\n\n\n<p><strong>Oracle: <\/strong>Disable incremental introspection, Fetch LONG values, Introspect server objects.<\/p>\n\n\n\n<p><strong>SQL Server: <\/strong>Disable incremental introspection.<\/p>\n\n\n\n<p><strong>PostgreSQL (and similar) : <\/strong>Disable incremental introspection, Do not use <em>xmin<\/em> in queries to <em>pgdatabase.<\/em><\/p>\n\n\n\n<p><strong>SQLite: <\/strong>Register REGEXP function.<\/p>\n\n\n\n<p><strong>MYSQL: <\/strong>Use SHOW\/CREATE for source code.<\/p>\n\n\n\n<p><strong>Clickhouse: <\/strong>Automatically assign <em>sessionid<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"1367\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-19.png\" alt=\"\" class=\"wp-image-189554\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Database explorer<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Table view for tree nodes<\/h3>\n\n\n\n<p>Pressing <em>F4<\/em> on any schema node allows you to see the table view of the node\u2019s contents. For example, you can get a view of all tables:<br><\/p>\n\n\n\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/c2r12LV_bc9QMvRSf1bJHLQI9snz8f5QoDnE7a-wJkPLRYz6HpXKfagEfcc3PApZb-1F_ngVg8NWc5z9ffDXk8pZx00JhhWO8LY6AjtYZWeg4lgkAS_AmIvCouTu-1mDeMrNonAjs0.png\" style=\"width: 1270px;\"><br><br>Or a table&#8217;s columns:<br><br><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/28CrDmIIjkI7RnNYED265BgF1K1cbsnzBUHb-tP27SpD1_g9UmH7LUlFW1a-sMNKDklNgm18UQ_RgMQrSZoPUyuQIsBHQWFoAvd4oy5xfZEgh_aE2AhI6skfWK_qzudRqA7EtfA7s0.png\" style=\"width: 1270px;\"><\/p>\n\n\n\n<p>All data viewer capabilities are available here: you can hide\/show columns, export to many formats, and use text search.&nbsp;<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">[Clickhouse] Distributed tables<\/h3>\n\n\n\n<p>Distributed tables are now placed under a dedicated node in the database explorer<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"900\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-20.png\" alt=\"\" class=\"wp-image-189565\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Query Console<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Timestamps in output hidden by default<\/h3>\n\n\n\n<p>In line with <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/DBE-4632\" target=\"_blank\" rel=\"noopener\">this request<\/a>, timestamps are no longer shown for query output by default. If you want to return to the previous behavior, you can adjust the setting in <strong>Database | General | Show timestamp for query output<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"887\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/Output.png\" alt=\"\" class=\"wp-image-189589\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">[MongoDB] Code completion for database names<\/h3>\n\n\n\n<p>Database names are completed when using <em>getSiblingDB,<\/em> and collection names are completed when using <em>getCollection<\/em>.<br><br>Additionally, field names are completed and resolved if used from a collection that was defined through code completion.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-editorskit-shadow\"><img decoding=\"async\" loading=\"lazy\" width=\"1270\" height=\"561\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/10\/image-21.png\" alt=\"\" class=\"wp-image-189576\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Import\/Export<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">&#8216;First row is header&#8217; auto-detection<\/h3>\n\n\n\n<p>Starting from this version, when you open or import a CSV file, DataGrip automatically detects that the first row is the header and contains the names of the columns.<br><br><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/o08Hia1-2tBQtV132wMgn8nvPHOUoD_IsLZH4NhPQL0DOkBUPkUfgZWbrUsvC0SGbMvLMVDUUAHOXRMXzgAVQh6s_emfI_CPZeBClfpTU6NRefWrD7ar4L-b7WJ8oMC9OPbt-4JQs0.png\" style=\"width: 1270px;\"><\/p>\n","protected":false},"author":395,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[826,89],"tags":[6713,600,2655,91,284],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/189321"}],"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=189321"}],"version-history":[{"count":6,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/189321\/revisions"}],"predecessor-version":[{"id":639222,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/datagrip\/189321\/revisions\/639222"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=189321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=189321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=189321"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=189321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}