
{"id":3210,"date":"2022-11-30T08:41:26","date_gmt":"2022-11-30T08:41:26","guid":{"rendered":"https:\/\/test.opensource-db.in\/wp1\/?p=3210"},"modified":"2023-01-24T08:41:27","modified_gmt":"2023-01-24T08:41:27","slug":"postgresql-15-new-features","status":"publish","type":"post","link":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/","title":{"rendered":"PostgreSQL 15 New Features (Part &#8211; 1)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3210\" class=\"elementor elementor-3210\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-af2cfce elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"af2cfce\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6c444c6\" data-id=\"6c444c6\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-09bd0f9 elementor-widget elementor-widget-text-editor\" data-id=\"09bd0f9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 5pt; margin-bottom: 5pt;\"><span style=\"font-size: 15pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">This year, PostgreSQL\u2019s major upgrade, pg15 was released on 13<\/span><span style=\"font-size: 15pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\"><span style=\"font-size: 0.6em; vertical-align: super;\">th<\/span><\/span><span style=\"font-size: 15pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\"> October 2022. Here, we examine some of the new features that were incorporated into release pg15.<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 15pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">To make things easier, we\u2019ve categorized the new features into two parts:<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 15pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">Part &#8211; 1 : General, Configuration &amp; Administration<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"background-color: transparent; color: #000000; font-family: Arial; font-size: 15pt; white-space: pre-wrap; font-style: inherit; font-weight: inherit;\"><a href=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features-part-2\/\">Part &#8211; 2 : Replication, Backup &amp; Recovery\u00a0<\/a><\/span><\/p><p><span style=\"background-color: transparent; color: #000000; font-family: Arial; font-size: 15pt; white-space: pre-wrap;\">In this post (i.e., Part &#8211; 1 of pg15 new features), we\u2019ll look at the new or updated features in Postgres 15 in these areas: General, Configuration &amp; Administration. Let us dive right into it.<\/span><\/p><p><span style=\"text-decoration: underline;\"><strong><span style=\"background-color: transparent; color: #000000; font-family: Arial; font-size: 15pt; white-space: pre-wrap; text-decoration: underline;\">PostgreSQL 15 New Features List (Part &#8211; 1): <\/span><span style=\"color: #000000; font-family: Arial; font-size: 20px; white-space: pre-wrap; font-style: inherit; text-decoration: underline;\">General, Configuration &amp; Administration<\/span><\/strong><\/span><\/p><ol><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\">Improved performance for sorts exceeding working memory<\/span><\/span><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\">Privileges for setting configuration parameters <\/span><\/span><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\">Alter Table&#8230; Set Access Method<\/span><\/span><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\">UNIQUE NULLS NOT DISTINCT<\/span><\/span><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\">PSQL: \\dconfig<\/span><\/span><\/li><\/ol><div><p><span style=\"text-decoration: underline;\"><strong><span style=\"background-color: transparent; color: #000000; font-family: Arial; font-size: 15pt; white-space: pre-wrap; text-decoration: underline;\">PostgreSQL 15 New Features in detail (Part &#8211; 1): <\/span><span style=\"font-style: inherit; color: #000000; font-family: Arial; font-size: 20px; white-space: pre-wrap; text-decoration: underline;\">General, Configuration &amp; Administration<\/span><\/strong><\/span><\/p><ol><li><span style=\"color: #000000;\"><span style=\"color: #000000;\"><span style=\"color: #000000;\"><span style=\"white-space: pre-wrap;\"><span style=\"font-family: Verdana;\"><span style=\"text-decoration: underline;\">Improved performance for sorts exceeding working memory<\/span><br \/><\/span><\/span><\/span><\/span><\/span><p><span style=\"font-weight: 400;\">Sorts for data sets that exceed <\/span><a href=\"https:\/\/www.postgresql.org\/docs\/current\/runtime-config-resource.html#GUC-WORK-MEM\"><span style=\"font-weight: 400;\">work_mem<\/span><\/a><span style=\"font-weight: 400;\"> now use a batch sorting algorithm that uses more output streams and improves performance.<\/span><\/p><p><span style=\"font-weight: 400;\">We created a sample table called test with two columns (an \u2018Id\u2019 column, and a text column called \u2018name\u2019) and populated with 10 million records for this test.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">When we executed a select on this table with a sort clause on the \u2018name\u2019 column, we observed that the query execution time in pg-15 (15.5 seconds) is indeed less when compared to the query execution time in pg-14(89.7 seconds).<\/span><\/p><p><span style=\"font-weight: 400;\">The following statements were used for table creation and data population on both pg-14 and pg-15:<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">logical=# create table test(id int , name varchar);<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">CREATE TABLE<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">logical=# insert into test select generate_series(1,10000000),md5(generate_series(1,10000000)::text);<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">INSERT 0 10000000<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; background-color: transparent; font-weight: bold; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">Performance testing in PostgreSQL 15:\u00a0<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">logical=# explain analyze select * from test order by name ;<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt; text-align: left;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0QUERY PLAN<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0Gather Merge\u00a0 (cost=811991.86..1784268.27 rows=8333216 width=37) (actual time=9245.117..15159.681 rows=10000000 loops=1)<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0Workers Planned: 2<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0Workers Launched: 2<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0-&gt;\u00a0 Sort\u00a0 (cost=810991.83..821408.35 rows=4166608 width=37) (actual time=9180.457..10819.035 rows=3333333 loops=3)<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Sort Key: name<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Sort Method: external merge\u00a0 Disk: 155400kB<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Worker 0:\u00a0 Sort Method: external merge\u00a0 Disk: 147624kB<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Worker 1:\u00a0 Sort Method: external merge\u00a0 Disk: 157176kB<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-&gt;\u00a0 Parallel Seq Scan on test\u00a0 (cost=0.00..125000.08 rows=4166608 width=37) (actual time=0.021..482.660 rows=3333333 loops=3)<\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; background-color: #ffff00; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">Planning Time: 1.464 ms<br \/><span style=\"font-size: 10pt; color: #000000; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;\">Execution Time: 15427.398 ms<\/span><br \/><\/span><\/p><p dir=\"ltr\" style=\"font-family: Verdana; line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; background-color: transparent; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline;\">(11 rows)<br \/><\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: Verdana; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">Performance testing in PostgreSQL 14:<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">example=# explain analyze select * from test order by name ;<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">QUERY PLAN<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0Gather Merge\u00a0 (cost=856262.40..1885277.78 rows=8819516 width=36) (actual time=61296.715..88931.115 rows=10000000 loops=1)<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0Workers Planned: 2<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0Workers Launched: 2<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0-&gt;\u00a0 Sort\u00a0 (cost=855262.38..866286.77 rows=4409758 width=36) (actual time=61117.409..65908.421 rows=3333333 loops=3)<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Sort Key: name<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Sort Method: external merge\u00a0 Disk: 155488kB<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Worker 0:\u00a0 Sort Method: external merge\u00a0 Disk: 153152kB<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Worker 1:\u00a0 Sort Method: external merge\u00a0 Disk: 151392kB<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-&gt;\u00a0 Parallel Seq Scan on test\u00a0 (cost=0.00..127431.58 rows=4409758 width=36) (actual time=0.285..1926.893 rows=3333333 loops=3)<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: #ffff00; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0Planning Time: 7.000 ms<\/span><\/p><p dir=\"ltr\" style=\"line-height: 1.38; margin-top: 12pt; margin-bottom: 12pt;\"><span style=\"font-size: 10pt; font-family: 'Courier New'; color: #000000; background-color: #ffff00; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;\">\u00a0Execution Time: 89674.825 ms <\/span><\/p><p><span style=\"font-weight: 400;\">(11 rows)<\/span><\/p><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\"><span style=\"text-decoration: underline;\">Privileges for setting configuration parameters<\/span> <br \/><\/span><\/span><\/span><p><span style=\"font-weight: 400;\">Unprivileged users can now be granted permission to change server variables via <\/span><a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-set.html\"><span style=\"font-weight: 400;\">SET<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-altersystem.html\"><span style=\"font-weight: 400;\">ALTER SYSTEM<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p><p><span style=\"font-weight: 400;\">How is this useful?<br \/><\/span><span style=\"font-weight: 400;\"><br \/>Only privileged users could change the configuration parameters up until the previous version (i.e., pg14). In pg15 version, privileged users can grant permission to unprivileged users to SET and ALTER specific configuration parameters via the ALTER SYSTEM command. Privileged users also have the option of controlling which specific configuration parameters the unprivileged users can modify, and the unprivileged users\u2019 access to modify the configuration parameters would then be limited to such granted parameters only.<\/span><\/p><p><span style=\"font-weight: 400;\">This feature could help decrease the turn-around time during application development &amp; test cycles by minimizing the dependency on DBAs.<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">Is it chained?<\/span><\/p><p><span style=\"font-weight: 400;\">This feature is not chained, i.e., an Unprivileged user who has been given SET or ALTER SYSTEM privileges cannot share or extend the same access to another unprivileged user.<\/span><\/p><p><b>Examples:<\/b><\/p><p><span style=\"font-weight: 400;\">[postgres@localhost backups]$ psql -U sudheer -d postgres<\/span><\/p><p><span style=\"font-weight: 400;\">psql (15.0)<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; alter system set wal_level = replica;<\/span><\/p><p><span style=\"font-weight: 400;\">ERROR:\u00a0 permission denied to set parameter &#8220;wal_level&#8221;<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; exit<\/span><\/p><p><span style=\"font-weight: 400;\">[postgres@localhost backups]$ psql<\/span><\/p><p><span style=\"font-weight: 400;\">psql (15.0)<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=# GRANT ALTER SYSTEM ON PARAMETER wal_level to sudheer;<\/span><\/p><p><span style=\"font-weight: 400;\">GRANT<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=# exit<\/span><\/p><p><span style=\"font-weight: 400;\">[postgres@localhost backups]$ psql -U sudheer -d postgres<\/span><\/p><p><span style=\"font-weight: 400;\">psql (15.0)<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; alter system set wal_level = replica;<\/span><\/p><p><span style=\"font-weight: 400;\">ALTER SYSTEM<\/span><\/p><p><span style=\"font-weight: 400;\">[postgres@localhost backups]$ psql -U sudheer -d postgres<\/span><\/p><p><span style=\"font-weight: 400;\">psql (15.0)<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; show wal_level;<\/span><\/p><p><span style=\"font-weight: 400;\">\u00a0wal_level\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">&#8212;&#8212;&#8212;&#8211;<\/span><\/p><p><span style=\"font-weight: 400;\">\u00a0replica<\/span><\/p><p><span style=\"font-weight: 400;\">(1 row)<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; GRANT ALTER SYSTEM ON PARAMETER wal_level to testuser;<\/span><\/p><p><span style=\"font-weight: 400;\">WARNING:\u00a0 no privileges were granted for &#8220;wal_level&#8221;<\/span><\/p><p><span style=\"font-weight: 400;\">GRANT<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; exit<\/span><\/p><p><span style=\"font-weight: 400;\">[postgres@localhost backups]$ psql -U testuser -d postgres<\/span><\/p><p><span style=\"font-weight: 400;\">psql (15.0)<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; alter system set wal_level = logical;<\/span><\/p><p><span style=\"font-weight: 400;\">ERROR:\u00a0 permission denied to set parameter &#8220;wal_level&#8221;<\/span><\/p><p><span style=\"font-weight: 400;\">postgres=&gt; <\/span><\/p><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\"><span style=\"text-decoration: underline;\">Alter Table&#8230; Set Access Method<br \/><\/span><\/span><\/span><\/span><p>It is a feature that allows an alternative implementation for how data in a table should be stored. Until PostgreSQL 11, access methods were provided for index data, to choose different storage methods such as B-Tree or hash, but no similar mechanism was available for tables.<\/p><p>PostgreSQL 12 introduced this feature, so now access methods can be implemented for tables as well as indexes, allowing the selection of different table storage mechanisms.<\/p><p>PostgreSQL 15 allows users to change the table access method using the &#8220;ALTER TABLE&#8221;, this will re-write the table to a different storage method.<\/p><p><span style=\"font-weight: 400;\"><b>Example:<\/b><\/span><\/p><p><span style=\"font-weight: 400;\">postgres=# ALTER TABLE employee SET ACCESS METHOD heap;<\/span><\/p><p><span style=\"font-weight: 400;\">ALTER TABLE<\/span><\/p><\/li><li><span style=\"text-decoration: underline;\"><span style=\"text-decoration: underline;\"><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\">UNIQUE NULLS NOT DISTINCT<br \/><\/span><\/span><\/span><\/span><p><span style=\"font-weight: 400;\">Up until now, the Postgres database would not enforce the unique constraint on NULL values, and allowed multiple records with NULL values even on a column that has a UNIQUE constraint defined.<\/span><\/p><p><span style=\"font-weight: 400;\">In pg15, we now have the option to enforce uniqueness across all records, and allow only one record with a NULL value. This can be achieved by adding the NULLS NOT DISTINCT clause when defining the unique constraints \/ indexes.<\/span><\/p><p><b>Example:<\/b><\/p><p><span style=\"font-weight: 400;\">postgres@localhost data]$ psql -d test -U test<\/span><\/p><p><span style=\"font-weight: 400;\">psql (15.0)<\/span><\/p><p><span style=\"font-weight: 400;\">test=# create table emp (id int UNIQUE NULLS NOT DISTINCT, name varchar(50));<\/span><\/p><p><span style=\"font-weight: 400;\">CREATE TABLE<\/span><\/p><p><span style=\"font-weight: 400;\">test=# insert into emp values (1,&#8217;aaa&#8217;);<\/span><\/p><p><span style=\"font-weight: 400;\">INSERT 0 1<\/span><\/p><p><span style=\"font-weight: 400;\">test=# insert into emp values (null,&#8217;aaa&#8217;);<\/span><\/p><p><span style=\"font-weight: 400;\">INSERT 0 1<\/span><\/p><p><span style=\"font-weight: 400;\">test=# insert into emp values (2,&#8217;bbb&#8217;);<\/span><\/p><p><span style=\"font-weight: 400;\">INSERT 0 1<\/span><\/p><p><span style=\"font-weight: 400;\">test=# insert into emp values (null,&#8217;bbb&#8217;);<\/span><\/p><p><span style=\"font-weight: 400;\">ERROR:\u00a0 duplicate key value violates unique constraint &#8220;emp_id_key&#8221;<\/span><\/p><p><span style=\"font-weight: 400;\">DETAIL:\u00a0 Key (id)=(null) already exists.<\/span><\/p><\/li><li><span style=\"color: #000000; font-family: Verdana;\"><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\"><span style=\"text-decoration: underline;\">PSQL: \\dconfig<\/span><br \/><\/span><\/span><\/span><p><span style=\"font-weight: 400;\">The psql client now includes a new command \u2018\\dconfig\u2019 for inspecting and finding the values of configuration parameters.<\/span><\/p><p><img decoding=\"async\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg\" \/><\/p><p><span style=\"color: #000000; font-family: Verdana;\"><span style=\"white-space: pre-wrap;\"><span style=\"font-weight: 400;\">Adding the + symbol to the \\dconfig command displays extended information on the configuration parameters such as Type, Context and Access Privileges.<\/span><\/span><\/span><\/p><p>We can find the output of \\dconfig+ command in PostgreSQL 15 in the following screenshot: <img decoding=\"async\" src=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_plus.jpg\" \/><\/p><\/li><\/ol><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1d7631b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1d7631b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-51b193c\" data-id=\"51b193c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6523b42 elementor-widget elementor-widget-text-editor\" data-id=\"6523b42\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: right;\">Continue to <a href=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features-part-2\/\">PostgreSQL 15 New Features List (Part &#8211; 2): Replication, Backup &amp; Recovery<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>This year, PostgreSQL\u2019s major upgrade, pg15 was released on 13th October 2022. Here, we examine some of the new features [&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,42],"tags":[37,24,44],"class_list":["post-3210","post","type-post","status-publish","format-standard","hentry","category-postgresql-14","category-postgresql-15","tag-postgres","tag-postgres14","tag-postgres15"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PostgreSQL 15 New Features (Part - 1) - 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 15 New Features (Part - 1) - OpenSource DB\" \/>\n<meta property=\"og:description\" content=\"This year, PostgreSQL\u2019s major upgrade, pg15 was released on 13th October 2022. Here, we examine some of the new features [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/\" \/>\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=\"2022-11-30T08:41:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-24T08:41:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg\" \/>\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=\"5 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-15-new-features\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/\"},\"author\":{\"name\":\"Hari Kiran\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09\"},\"headline\":\"PostgreSQL 15 New Features (Part &#8211; 1)\",\"datePublished\":\"2022-11-30T08:41:26+00:00\",\"dateModified\":\"2023-01-24T08:41:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/\"},\"wordCount\":1186,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#organization\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg\",\"keywords\":[\"postgres\",\"postgres14\",\"postgres15\"],\"articleSection\":[\"PostgreSQL 14\",\"PostgreSQL 15\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/\",\"name\":\"PostgreSQL 15 New Features (Part - 1) - OpenSource DB\",\"isPartOf\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg\",\"datePublished\":\"2022-11-30T08:41:26+00:00\",\"dateModified\":\"2023-01-24T08:41:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage\",\"url\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg\",\"contentUrl\":\"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg\",\"width\":624,\"height\":563,\"caption\":\"pg15_dconfig_image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/test.opensource-db.in\/wp1\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL 15 New Features (Part &#8211; 1)\"}]},{\"@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 15 New Features (Part - 1) - 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 15 New Features (Part - 1) - OpenSource DB","og_description":"This year, PostgreSQL\u2019s major upgrade, pg15 was released on 13th October 2022. Here, we examine some of the new features [&hellip;]","og_url":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/","og_site_name":"OpenSource DB","article_publisher":"https:\/\/www.facebook.com\/people\/OpenSource-DB\/100072970755470\/","article_published_time":"2022-11-30T08:41:26+00:00","article_modified_time":"2023-01-24T08:41:27+00:00","og_image":[{"url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg","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":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#article","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/"},"author":{"name":"Hari Kiran","@id":"https:\/\/test.opensource-db.in\/wp1\/#\/schema\/person\/2d16bf6a94c0502f1c5b69e4a36e9a09"},"headline":"PostgreSQL 15 New Features (Part &#8211; 1)","datePublished":"2022-11-30T08:41:26+00:00","dateModified":"2023-01-24T08:41:27+00:00","mainEntityOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/"},"wordCount":1186,"commentCount":0,"publisher":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#organization"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg","keywords":["postgres","postgres14","postgres15"],"articleSection":["PostgreSQL 14","PostgreSQL 15"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/","url":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/","name":"PostgreSQL 15 New Features (Part - 1) - OpenSource DB","isPartOf":{"@id":"https:\/\/test.opensource-db.in\/wp1\/#website"},"primaryImageOfPage":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage"},"image":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage"},"thumbnailUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg","datePublished":"2022-11-30T08:41:26+00:00","dateModified":"2023-01-24T08:41:27+00:00","breadcrumb":{"@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#primaryimage","url":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg","contentUrl":"https:\/\/test.opensource-db.in\/wp1\/wp-content\/uploads\/2022\/11\/pg15_dconfig_image.jpg","width":624,"height":563,"caption":"pg15_dconfig_image"},{"@type":"BreadcrumbList","@id":"https:\/\/test.opensource-db.in\/wp1\/postgresql-15-new-features\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/test.opensource-db.in\/wp1\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL 15 New Features (Part &#8211; 1)"}]},{"@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> <a href=\"https:\/\/test.opensource-db.in\/wp1\/category\/postgres\/postgresql-15\/\" rel=\"category tag\">PostgreSQL 15<\/a>","rttpg_excerpt":"This year, PostgreSQL\u2019s major upgrade, pg15 was released on 13th October 2022. Here, we examine some of the new features [&hellip;]","_links":{"self":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/3210","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=3210"}],"version-history":[{"count":121,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/3210\/revisions"}],"predecessor-version":[{"id":3535,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/posts\/3210\/revisions\/3535"}],"wp:attachment":[{"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/media?parent=3210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/categories?post=3210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/test.opensource-db.in\/wp1\/wp-json\/wp\/v2\/tags?post=3210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}