
{"id":2326,"date":"2021-10-14T10:00:09","date_gmt":"2021-10-14T10:00:09","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=2326"},"modified":"2021-10-14T10:19:12","modified_gmt":"2021-10-14T10:19:12","slug":"postgresql-14-new-feature-developer-boons","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/","title":{"rendered":"PostgreSQL 14 New Features &#8211; Developer boons"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-style-default\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"340\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png\" alt=\"\" class=\"wp-image-2406\" srcset=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png 1024w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-300x100.png 300w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-768x255.png 768w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1536x511.png 1536w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-2048x681.png 2048w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-298x99.png 298w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-241x80.png 241w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-394x131.png 394w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-915x304.png 915w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1240x412.png 1240w, https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1920x638.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After the<a rel=\"noreferrer noopener\" href=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\" data-type=\"URL\" data-id=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-features-dba-lifesavers\/\" target=\"_blank\"> previous blog post on PostgreSQL 14 New features for DBAs<\/a>, I am here to present a few interesting  Developer centric new features with this post.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Improved Data types<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Multirange datatypes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Multiranges are basically sorted arrays of non-overlapping ranges with set-theoretic operations defined over them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL 14 now adds support for multi-range types. These are data types that support grouping together non-contiguous ranges. There are both manual and automatic mechanisms for naming multirange types. Once can specify multirange type name using multirange_type_name attribute in <strong>CREATE TYPE<\/strong>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The optional multirange_type_name parameter specifies the name of the corresponding multirange type. If not specified, this name is chosen automatically as follows. If the range type name contains the substring range, then the multirange type name is formed by the replacement of the range substring with multirange in the range type name. Otherwise, the multirange type name is formed by appending a multirange suffix to the range type name.<\/p><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">You can create multi ranges from the existing range types by adding the multirange suffix to the end of the range type name, e.g.:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>int4multirange, int8multirange: ranges of int and bigint range types<\/li><li>nummultirange: multirange of numeric range types<\/li><li>tstzmultirange, datemultirange, tsmultirange, : multirange of timestamptz, date, and time range types<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Subscripting improved<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL 14 now adds support for data type subscripting. Traditional variable-length (<em>varlena<\/em>) arrays all use array_subscript_handler(), while the existing fixed-length types that support subscripting use raw_array_subscript_handler(). This means that the support for subscripting is for the arbitrary types, not only arrays.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The data types &#8211; <strong>hstore<\/strong> and <strong>jsonb<\/strong>, in particular, would be a great pick:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>EXTRACT function<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The previous implementation of EXTRACT mapped internally to <strong>date_part()<\/strong>, which returned type double precision (since it was implemented long before the numeric type existed). This can lead to imprecise output in some cases, so returning numeric would be preferable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following minor changes of behavior result from the new implementation:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>The column name from an isolated EXTRACT call is now &#8220;extract&#8221; instead of &#8220;date_part&#8221;.<\/li><li>Extract from date now rejects inappropriate field names such as HOUR. It was previously mapped internally to extract from timestamp, so it would silently accept everything appropriate for timestamp.<\/li><li>Return values when extracting fields with possibly fractional values, such as second and epoch, now have the full scale that the value has internally (so, for example, &#8216;1.000000&#8217; instead of just &#8216;1&#8217;).<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>JSON<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What is JSON?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSON stands for \u201cJavaScript Object Notification\u201d which is a type of data format popularly used by many applications. This means the data would be transmitted between web applications and servers in such a format. JSON was introduced as an alternative to the XML format. In the \u201cgood old days\u201d the data used to get transmitted in XML format which is a heavyweight data type compared to JSON.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before we get to the examples, here is a list of the major aspects of the operators:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Operator <strong>-&gt;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Allows you to select an element based on its name.\nAllows you to select an element within an array based on its index.\nCan be used sequentially: ::json-&gt;'elementL'-&gt;'subelementM'-&gt;\u2026-&gt;'subsubsubelementN'.\nReturn type is json and the result cannot be used with functions and operators that require a string-based datatype. But the result can be used with operators and functions that require a json datatype.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Operator <strong>-&gt;&gt;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Allows you to select an element based on its name.\nAllows you to select an element within an array based on its index.\nCannot be used sequentially.\nReturn type is text and the result can be used with functions and operators that require a string-based datatype. For the same reason, sequential usage of the operator is not supported.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Operator <strong>#&gt;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Allows you to select an element based on its path within the main JSON object. The path can consist of element names and array indexes, depending on what is needed.\nCan be used sequentially: ::json#&gt;'{elementname1,elementname2,index1,index2}'#&gt;'{elementname3}'.\nReturn type is json and the result cannot be used with functions and operators that require a string-based datatype. But the result can be used with operators and functions that require a json datatype.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Operator <strong>#&gt;&gt;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Allows you to select an element based on its path within the main JSON object. The path can consist of element names and array indexes, depending on what is needed.\nCannot be used sequentially.\nReturn type is text and the result can be used with functions and operators that require a string-based datatype. For the same reason, sequential usage of the operator is not supported.\nBasically, you can create a 'chain' of -&gt; and #&gt; operators, provided that you point to valid elements and indexes. Such a chain can end with each of the four operators. The last one determines whether the result can be used as input for other specific functions.\nNote that if you want to use the result in combination with a function or operator that requires a text datatype, you have to use -&gt;&gt; or #&gt;&gt; as the last one in the chain. This might be important if you have a WHERE clause or a sub statement that refers to the result of the json operators. Let us proceed with some examples to see these operators in action.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For example, json subscripting:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT ('{ \"postgres\": { \"release\": 14 }}'::jsonb)&#91;'postgres']&#91;'release'];\nSELECT ('{\"a\": {\"b\": {\"c\": 1}}}'::jsonb)&#91;'a']&#91;'b']&#91;'c'] ;\nSELECT ('&#91;1, \"2\", null]'::jsonb)&#91;1];<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Another example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE cards (\n  id integer NOT NULL,\n  board_id integer NOT NULL,\n  data jsonb\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In PostgreSQL 13 and early if you wanted to find all cards data with certain criteria you write some queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT * FROM cards WHERE data-&gt;&gt;'finished' = 'true';\n\nSELECT count(*) FROM cards WHERE data ? 'ingredients';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">With PG 14, you can simply use the quotation marks, though, it expects JSON-style string for the comparison.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT * FROM cards \nWHERE data&#91;'attributes']&#91;'status'] = '\"finished\"';<\/code><\/pre>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>SQL-standard function body<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This adds support for writing CREATE FUNCTION and CREATE PROCEDURE statements for language SQL with a function body that conforms to the SQL standard and is portable to other implementations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of the PostgreSQL-specific AS $$ string literal $$ syntax, this allows writing out the SQL statements making up the body unquoted, either as a single statement:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE FUNCTION add(a integer, b integer) RETURNS integer\n LANGUAGE SQL\n RETURN a + b;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or as a block<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE PROCEDURE insert_data(a integer, b integer)\nLANGUAGE SQL\nBEGIN ATOMIC\n  INSERT INTO tbl VALUES (a);\n  INSERT INTO tbl VALUES (b);\nEND;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You may refer to the <a href=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commit;h=e717a9a18b\" data-type=\"URL\" data-id=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commit;h=e717a9a18b\" target=\"_blank\" rel=\"noreferrer noopener\">commit message<\/a> for more information.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>SQL syntax changes<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL common table expressions or CTEs &#8211; A common table expression is a temporary result set that you can reference within another SQL statement including SELECT, INSERT, UPDATE or DELETE.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common Table Expressions are temporary in the sense that they only exist during the execution of the query. The following shows the syntax of creating a CTE:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WITH cte_name (column_list) AS (\n    CTE_query_definition \n)\nSELECT statement;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nice things to note:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>It just works! Easy to read the query<\/li><li>You can reference the CTE several times in the query, and it will be calculated only once<\/li><li>Using DML statements in the CTE with a RETURNING clause<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">From PG14 the WITH RECURSIVE  a syntactic convenience into a feature that accomplishes things not otherwise possible in standard SQL. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new syntax additions are <strong>SEARCH<\/strong> order and <strong>CYLE<\/strong> detection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When computing a tree traversal using a recursive query, you might want to order the results in either depth-first or breadth-first order.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WITH RECURSIVE search_tree(column_list) AS (\n    SELECT statement\n) SEARCH DEPTH FIRST BY id SET ordercol\nSELECT * FROM search_tree ORDER BY ordercol;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tomorrow, we will be wrapping up our 9-part blog series with some Cool Little things of PG14. Stay tuned!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After the previous blog post on PostgreSQL 14 New features for DBAs, I am here to present a few interesting [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[23],"tags":[35,28,27,24],"class_list":["post-2326","post","type-post","status-publish","format-standard","hentry","category-postgresql-14","tag-developer","tag-major-release","tag-new-features","tag-postgres14"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL 14 New Features - Developer boons - OpenSource DB<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL 14 New Features - Developer boons - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"After the previous blog post on PostgreSQL 14 New features for DBAs, I am here to present a few interesting [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/\" \/>\n<meta property=\"og:site_name\" content=\"OpenSource DB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-14T10:00:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-14T10:19:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png\" \/>\n<meta name=\"author\" content=\"Hari Kiran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@opensource_db\" \/>\n<meta name=\"twitter:site\" content=\"@opensource_db\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hari Kiran\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/\"},\"author\":{\"name\":\"Hari Kiran\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\"},\"headline\":\"PostgreSQL 14 New Features &#8211; Developer boons\",\"datePublished\":\"2021-10-14T10:00:09+00:00\",\"dateModified\":\"2021-10-14T10:19:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/\"},\"wordCount\":791,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png\",\"keywords\":[\"developer\",\"major-release\",\"new-features\",\"postgres14\"],\"articleSection\":[\"PostgreSQL 14\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/\",\"name\":\"PostgreSQL 14 New Features - Developer boons - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png\",\"datePublished\":\"2021-10-14T10:00:09+00:00\",\"dateModified\":\"2021-10-14T10:19:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8.png\",\"width\":3200,\"height\":1064},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 14 New Features &#8211; Developer boons\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/\",\"name\":\"OpenSource DB\",\"description\":\"Your Trusted OpenSource Databases partner\",\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/test.opensource-db.in\/wp1\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\",\"name\":\"OPENSOURCE DB PRIVATE LIMITED\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png\",\"width\":368,\"height\":120,\"caption\":\"OPENSOURCE DB PRIVATE LIMITED\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/\",\"https:\/\/x.com\/opensource_db\",\"https:\/\/www.youtube.com\/channel\/UCmTI5h\",\"https:\/\/www.linkedin.com\/company\/opensource-db\",\"https:\/\/www.instagram.com\/opensource_db\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\",\"name\":\"Hari Kiran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g\",\"caption\":\"Hari Kiran\"},\"description\":\"Hari Kiran has over 15 years of extensive experience in areas of operations and managing multiple database technologies. A proven leader with excellent skills in building relationships, positive team dynamics, and decision-making. Hari also has strong Open Source expertise in Professional Services. He has the experience to help you refine your strategy and drive execution.\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PostgreSQL 14 New Features - Developer boons - OpenSource DB","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"PostgreSQL 14 New Features - Developer boons - OpenSource DB","og_description":"After the previous blog post on PostgreSQL 14 New features for DBAs, I am here to present a few interesting [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2021-10-14T10:00:09+00:00","article_modified_time":"2021-10-14T10:19:12+00:00","og_image":[{"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png","type":"","width":"","height":""}],"author":"Hari Kiran","twitter_card":"summary_large_image","twitter_creator":"@opensource_db","twitter_site":"@opensource_db","twitter_misc":{"Written by":"Hari Kiran","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/"},"author":{"name":"Hari Kiran","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09"},"headline":"PostgreSQL 14 New Features &#8211; Developer boons","datePublished":"2021-10-14T10:00:09+00:00","dateModified":"2021-10-14T10:19:12+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/"},"wordCount":791,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png","keywords":["developer","major-release","new-features","postgres14"],"articleSection":["PostgreSQL 14"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/","url":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/","name":"PostgreSQL 14 New Features - Developer boons - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8-1024x340.png","datePublished":"2021-10-14T10:00:09+00:00","dateModified":"2021-10-14T10:19:12+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/ps14-blog-8.png","width":3200,"height":1064},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-14-new-feature-developer-boons\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 14 New Features &#8211; Developer boons"}]},{"@type":"WebSite","@id":"https:\/\/test.opensource-db.in\/wp1\/#website","url":"https:\/\/test.opensource-db.in\/wp1\/","name":"OpenSource DB","description":"Your Trusted OpenSource Databases partner","publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/test.opensource-db.in\/wp1\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/test.opensource-db.in\/wp1\/#organization","name":"OPENSOURCE DB PRIVATE LIMITED","url":"https:\/\/test.opensource-db.in\/wp1\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2021\/10\/osdb-logo-tm-2.png","width":368,"height":120,"caption":"OPENSOURCE DB PRIVATE LIMITED"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","https:\/\/x.com\/opensource_db","https:\/\/www.youtube.com\/channel\/UCmTI5h","https:\/\/www.linkedin.com\/company\/opensource-db","https:\/\/www.instagram.com\/opensource_db\/"]},{"@type":"Person","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09","name":"Hari Kiran","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c9afef742ba871448bf401518655463f5e87b02f9fbd0096e88f857c51896822?s=96&d=mm&r=g","caption":"Hari Kiran"},"description":"Hari Kiran has over 15 years of extensive experience in areas of operations and managing multiple database technologies. A proven leader with excellent skills in building relationships, positive team dynamics, and decision-making. Hari also has strong Open Source expertise in Professional Services. He has the experience to help you refine your strategy and drive execution.","url":"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"Hari Kiran","author_link":"https:\/\/test.opensource-db.in\/wp1\/author\/harikiranopensource-db-com\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-14\/\" rel=\"category tag\">PostgreSQL 14<\/a>","rttpg_excerpt":"After the previous blog post on PostgreSQL 14 New features for DBAs, I am here to present a few interesting [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/comments?post=2326"}],"version-history":[{"count":14,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2326\/revisions"}],"predecessor-version":[{"id":2422,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/2326\/revisions\/2422"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=2326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=2326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=2326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}