E.25. ÐÑпÑÑк 15.9
ÐаÑа вÑпÑÑка: 2024-11-14
Ð ÑÑÐ¾Ñ Ð²ÑпÑÑк воÑли ÑазлиÑнÑе иÑпÑавлениÑ, внеÑÑннÑе поÑле веÑÑии 15.8. Ðа инÑоÑмаÑией о нововведениÑÑ Ð²ÐµÑÑии 15 обÑаÑиÑеÑÑ Ðº РазделÑ E.34.
E.25.1. ÐигÑаÑÐ¸Ñ Ð½Ð° веÑÑÐ¸Ñ 15.9
ÐÑли иÑполÑзÑеÑÑÑ Ð²ÐµÑÑÐ¸Ñ 15.X, вÑгÑÑзка/воÑÑÑановление Ð±Ð°Ð·Ñ Ð½Ðµ ÑÑебÑеÑÑÑ.
Тем не менее, еÑли Ð²Ñ ÐºÐ¾Ð³Ð´Ð°-либо вÑполнÑли оÑÑоединение ÑекÑии Ð¾Ñ ÑекÑиониÑованной ÑаблиÑÑ, коÑоÑÐ°Ñ ÑÑÑлалаÑÑ Ð½Ð° дÑÑгÑÑ ÑекÑиониÑованнÑÑ ÑаблиÑÑ Ð¿Ñи помоÑи внеÑнего клÑÑа, и ÑÑаÑÐ°Ñ ÑекÑÐ¸Ñ Ð½Ðµ бÑла Ñдалена, возможно, вам пÑидÑÑÑÑ Ð¸ÑпÑавлÑÑÑ Ð¿Ð¾Ð²Ñеждение каÑалогов и/или даннÑÑ , как подÑобно опиÑано ниже в пÑÑом пÑнкÑе ÑпиÑка изменений.
Ðднако еÑли Ð²Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑеÑе ÑеÑÐ²ÐµÑ Ñ Ð±Ð¾Ð»ÐµÐµ Ñанней веÑÑии, Ñем 15.7, Ñм. Раздел E.27.
E.25.2. ÐзменениÑ
ÐомеÑка кеÑиÑованнÑÑ Ð¿Ð»Ð°Ð½Ð¾Ð² как завиÑимÑÑ Ð¾Ñ Ð²ÑполнÑÑÑÐ¸Ñ Ð¸Ñ Ñолей, когда заÑиÑа на ÑÑовне ÑÑÑок (RLS) пÑименÑеÑÑÑ Ð´Ð»Ñ ÑÑÑлки на ÑаблиÑÑ Ð½Ðµ на веÑÑ Ð½ÐµÐ¼ ÑÑовне (ÐаÑан ÐоÑÑаÑÑ) §
ÐÑли обÑее ÑаблиÑное вÑÑажение (CTE), подзапÑоÑ, подÑÑÑлка, пÑедÑÑавление Ñ ÐºÐ¾Ð½ÑекÑÑом безопаÑноÑÑи вÑзÑваÑÑего или пÑоекÑÐ¸Ñ Ð¿ÑÐ¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² запÑоÑе ÑÑÑлалиÑÑ Ð½Ð° ÑаблиÑÑ Ñ Ð¿Ð¾Ð»Ð¸Ñикой заÑиÑÑ Ð½Ð° ÑÑовне ÑÑÑок, ÑезÑлÑÑиÑÑÑÑий план не помеÑалÑÑ ÐºÐ°Ðº поÑенÑиалÑно завиÑимÑй Ð¾Ñ Ð²ÑполнÑÑÑей его Ñоли. ÐÑо могло пÑиводиÑÑ Ðº ÑомÑ, ÑÑо поÑледÑÑÑие запÑоÑÑ Ð² Ñом же ÑеанÑе вÑполнÑлиÑÑ Ñ Ð½ÐµÐºÐ¾ÑÑекÑнÑм планом, а ÑкÑÑÑÑе ÑÑÑоки возвÑаÑалиÑÑ Ð¸Ð»Ð¸ возвÑаÑаемÑе ÑкÑÑвалиÑÑ.
ÐÑÐ¾ÐµÐºÑ PostgreSQL благодаÑÐ¸Ñ ÐолÑÑганга ÐалÑÑеÑа за ÑообÑение об ÑÑой пÑоблеме. (CVE-2024-10976)
ÐиблиоÑека libpq ÑепеÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑÐµÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑÐ¸Ð±ÐºÐ°Ñ , полÑÑаемÑе во вÑÐµÐ¼Ñ ÑоглаÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑоÑоколов SSL или GSS (Ðжейкоб Чемпион) §
ÐлоÑмÑÑленники могÑÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½ÑÑÑ ÑеалÑное вÑÑ Ð¾Ð´Ð½Ð¾Ðµ ÑообÑение ÑеÑвеÑа об оÑибке, полÑÑаемое до Ñого, как завеÑÑено ÑоглаÑование кÑипÑогÑаÑиÑеÑкого пÑоÑокола. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑиводиÑÑ Ðº ÑазлиÑнÑм ÑгÑозам безопаÑноÑÑи, напÑимеÑ, злоÑмÑÑленник Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´Ð¼ÐµÐ½Ð¸ÑÑ ÑезÑлÑÑÐ°Ñ Ð·Ð°Ð¿ÑоÑа, а невнимаÑелÑнÑй полÑзоваÑÐµÐ»Ñ ÑпÑÑÐ°ÐµÑ ÐµÐ³Ð¾ Ñ ÑеалÑнÑм ÑезÑлÑÑаÑом. ÐÑÑÑе вÑего игноÑиÑоваÑÑ Ñакие ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑÐ¸Ð±ÐºÐ°Ñ Ð¸ довеÑÑÑÑ ÑолÑко ÑообÑениÑм libpq о Ñбое ÑоединениÑ.
ÐÑÐ¾ÐµÐºÑ PostgreSQL благодаÑÐ¸Ñ Ðжейкоба Чемпиона за ÑообÑение об ÑÑой пÑоблеме. (CVE-2024-10977)
ÐÑпÑавление нежелаÑелÑного взаимодейÑÑÐ²Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´
SET SESSION AUTHORIZATIONиSET ROLE(Том Ðейн) § §СоглаÑно ÑÑандаÑÑÑ SQL, команда
SET SESSION AUTHORIZATIONÐ¸Ð¼ÐµÐµÑ Ð¿Ð¾Ð±Ð¾ÑнÑй ÑÑÑÐµÐºÑ Ð² виде вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑSET ROLE NONE. ÐÑо бÑло Ñеализовано некоÑÑекÑно, ÑÑо пÑиводило к дополниÑелÑÐ½Ð¾Ð¼Ñ Ð½ÐµÐ¶ÐµÐ»Ð°ÑелÑÐ½Ð¾Ð¼Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑÐ¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸. Ð ÑаÑÑноÑÑи, оÑÐºÐ°Ñ ÑÑанзакÑии, в коÑоÑой бÑла вÑполнена командаSET SESSION AUTHORIZATION, пÑиводил к оÑкаÑÑROLEдоNONE, даже еÑли Ñанее бÑло дÑÑгое знаÑение, и дейÑÑвÑÑÑий иденÑиÑикаÑÐ¾Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð³ оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑа до вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑанзакÑии. ÐÑеменное вклÑÑениеsession_authorizationв пÑедложенииSETÑÑнкÑии пÑиводило к ÑÐ¾Ð¼Ñ Ð¶Ðµ ÑезÑлÑÑаÑÑ. ÐополниÑелÑÐ½Ð°Ñ Ð¾Ñибка заклÑÑалаÑÑ Ð² Ñом, ÑÑо пÑи иÑÑледованииcurrent_setting('role')паÑаллелÑнÑм ÑабоÑим пÑоÑеÑÑом он виделnone, даже еÑли должен бÑл видеÑÑ Ð¸Ð½Ð¾Ðµ знаÑение.ÐÑÐ¾ÐµÐºÑ PostgreSQL благодаÑÐ¸Ñ Ð¢Ð¾Ð¼Ð° Ðейна за ÑообÑение об ÑÑой пÑоблеме. (CVE-2024-10978)
ÐапÑÐµÑ Ð½Ð° изменение пеÑеменнÑÑ Ð¾ÐºÑÑÐ¶ÐµÐ½Ð¸Ñ Ð´Ð¾Ð²ÐµÑеннÑм кодом PL/Perl (ÐндÑÑ ÐÑнÑÑан, Ðой ÐиÑ) § § §
ÐозможноÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð¿ÐµÑеменнÑе окÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¿ÑоÑеÑÑов, Ñакие как
PATH, позволÑÐµÑ Ð·Ð»Ð¾ÑмÑÑÐ»ÐµÐ½Ð½Ð¸ÐºÑ Ð²ÑполнÑÑÑ Ð¿ÑоизволÑнÑй код. ÐоÑÑÐ¾Ð¼Ñ ÑепеÑÑ ÑÑо запÑеÑено Ð´Ð»Ñ Â«Ð´Ð¾Ð²ÐµÑеннÑÑ Â» пÑоÑедÑÑнÑÑ ÑзÑков. ЧÑÐ¾Ð±Ñ Ð¸ÑпÑавиÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñplperl, замениÑе%ENVна ÑвÑзаннÑй Ñ ÐµÑ, коÑоÑÑй запÑеÑÐ°ÐµÑ Ð²Ð½Ð¾ÑиÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð²Ñводом пÑедÑпÑеждениÑ. ÐедовеÑеннÑй ÑзÑкplperluÑÐ¾Ñ ÑанÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÑÑÑ Ð¿ÐµÑеменнÑе окÑÑжениÑ.ÐÑÐ¾ÐµÐºÑ PostgreSQL благодаÑÐ¸Ñ Ðоби ÐбÑамÑа за ÑообÑение об ÑÑой пÑоблеме. (CVE-2024-10979)
ÐÑпÑавление обновлений ÑоÑÑоÑÐ½Ð¸Ñ ÐºÐ°Ñалога Ð´Ð»Ñ Ð¾Ð³ÑаниÑений внеÑнего клÑÑа пÑи пÑиÑоединении или оÑÑоединении ÑекÑий ÑаблиÑÑ (Ðеан-Ðийом де РоÑÑе, ÐлÑваÑо ÐÑÑеÑа) § §
ÐÑли ÑÐµÐ»ÐµÐ²Ð°Ñ ÑаблиÑа ÑекÑиониÑована, Ð´Ð»Ñ ÑÑÑлаÑÑейÑÑ ÑаблиÑÑ, коÑоÑÐ°Ñ ÑвлÑеÑÑÑ Ð¾ÑделÑной, а не ÑекÑией, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñ Ð´ÑÑгие запиÑи каÑалога. ÐомандÑ
ATTACH/DETACH PARTITIONвÑполнÑли ÑÑо пÑеобÑазование некоÑÑекÑно. Ð ÑаÑÑноÑÑи, поÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ÑDETACHÐ´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ оÑделÑной ÑаблиÑÑ ÑеÑÑлиÑÑ ÑÑиггеÑÑ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ ÑелоÑÑноÑÑи внеÑнего клÑÑа, из-за Ñего в ÑаблиÑе могли поÑвлÑÑÑÑÑ ÑÑÑоки, не вÑполнÑÑÑие ÑÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа. ÐÑоме Ñого, поÑледÑÑÑее повÑоÑное пÑиÑоединение командойATTACHмогло пÑиводиÑÑ Ðº неожиданнÑм оÑибкам.ÐÑо можно иÑпÑавиÑÑ, вÑполнив командÑ
ALTER TABLE DROP CONSTRAINTÐ´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ оÑделÑной ÑаблиÑÑ Ð² оÑноÑении каждого огÑаниÑÐµÐ½Ð¸Ñ Ñ Ð¾Ñибкой и добавив огÑаниÑение заново. ÐÑибка пÑи повÑоÑном добавлении огÑаниÑÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°ÑÐ°ÐµÑ Ð¿Ð¾Ñвление оÑибоÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ . Ð ÑÑом ÑлÑÑае Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ заново и вÑÑÑнÑÑ Ð¾Ð±ÐµÑпеÑиÑÑ ÑелоÑÑноÑÑÑ Ñелевой и ÑÑÑлаÑÑейÑÑ ÑаблиÑ, а заÑем еÑÑ Ñаз добавиÑÑ Ð¾Ð³ÑаниÑение.ÐÑполÑзÑйÑе запÑÐ¾Ñ Ð½Ð¸Ð¶Ðµ, ÑÑÐ¾Ð±Ñ Ð²ÑÑвиÑÑ Ð½Ð°ÑÑÑеннÑе огÑаниÑÐµÐ½Ð¸Ñ Ð¸ подгоÑовиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÐ°ÐºÐ¸Ñ Ð¾Ð³ÑаниÑений заново:
SELECT conrelid::pg_catalog.regclass AS "constrained table", conname AS constraint, confrelid::pg_catalog.regclass AS "references", pg_catalog.format('ALTER TABLE %s DROP CONSTRAINT %I;', conrelid::pg_catalog.regclass, conname) AS "drop", pg_catalog.format('ALTER TABLE %s ADD CONSTRAINT %I %s;', conrelid::pg_catalog.regclass, conname, pg_catalog.pg_get_constraintdef(oid)) AS "add" FROM pg_catalog.pg_constraint c WHERE contype = 'f' AND conparentid = 0 AND (SELECT count(*) FROM pg_catalog.pg_constraint c2 WHERE c2.conparentid = c.oid) <> ((SELECT count(*) FROM pg_catalog.pg_inherits i WHERE (i.inhparent = c.conrelid OR i.inhparent = c.confrelid) AND EXISTS (SELECT 1 FROM pg_catalog.pg_partitioned_table WHERE partrelid = i.inhparent)) + CASE WHEN pg_catalog.pg_partition_root(conrelid) = confrelid THEN (SELECT count(*) FROM pg_catalog.pg_partition_tree(confrelid) WHERE level = 1) ELSE 0 END);ÐоÑколÑÐºÑ Ð¾Ð´Ð¸Ð½ или неÑколÑко ÑÑапов вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
ADD CONSTRAINTмогÑÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑÑ Ð¾Ñибкой, ÑÐ¾Ñ ÑаниÑе вÑвод запÑоÑа в Ñайл и попÑобÑйÑе заново повÑоÑиÑÑ ÐºÐ°Ð¶Ð´Ñй ÑÑап.ÐÑедоÑвÑаÑение возможнÑÑ Ñбоев и оÑибки «could not open relation» (не ÑдалоÑÑ Ð¾ÑкÑÑÑÑ Ð¾ÑноÑение) пÑи обÑаÑении к ÑекÑиониÑованной ÑаблиÑе, еÑли одновÑеменно Ñ ÑÑим вÑполнÑлаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°
DETACH CONCURRENTLYи ÑÑÐ°Ð·Ñ Ð¶Ðµ ÑдалÑлаÑÑ Ð¾ÑÑоединÑÐ½Ð½Ð°Ñ ÑекÑÐ¸Ñ (ÐлÑваÑо ÐÑÑеÑа, ÐÑнÑал ÐоÑ) § §ÐапÑÐµÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
ALTER TABLE ATTACH PARTITION, еÑли Ñ Ð¿ÑиÑоединÑемой ÑаблиÑÑ ÐµÑÑÑ Ð²Ð½ÐµÑний клÑÑ, ÑÑÑлаÑÑийÑÑ Ð½Ð° ÑекÑиониÑованнÑÑ ÑаблиÑÑ (ÐлÑваÑо ÐÑÑеÑа) § Â§Ð¢Ð°ÐºÐ°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ð´ÐµÐ¹ÑÑвий не поддеÑживаеÑÑÑ, и дÑÑгие ваÑианÑÑ ÐµÑ Ð²Ð¾ÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ Ñанее завеÑÑалиÑÑ Ð¾Ñибкой.
ÐапÑÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñоединений или гÑÑппиÑовки Ñ ÑÑÑÑом ÑекÑиониÑованиÑ, еÑли ÑоÑÑиÑовка в запÑоÑе Ð´Ð»Ñ ÑÑолбÑа клÑÑа не ÑооÑвеÑÑÑвÑÐµÑ ÑоÑÑиÑовке клÑÑа ÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ (ЦзÑÐ½Ñ Ð¥Ð¸, Ðеббо Хан) § §
Такие Ð¿Ð»Ð°Ð½Ñ Ñанее могли пÑиводиÑÑ Ðº некоÑÑекÑнÑм ÑезÑлÑÑаÑам.
ÐÑпÑавление возможной оÑибки «could not find pathkey item to sort» (не ÑдалоÑÑ Ð½Ð°Ð¹Ñи ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÐºÐ»ÑÑей пÑÑи Ð´Ð»Ñ ÑоÑÑиÑовки), когда Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° ÑоÑÑиÑовка вÑвода запÑоÑа Ñ Ð¾Ð¿ÐµÑаÑоÑом
UNION ALL, а ÑÑÐ¾Ð»Ð±ÐµÑ ÑоÑÑиÑовки ÑвлÑеÑÑÑ Ð²ÑÑажением (ÐндÑей ÐÐµÐ¿Ð¸Ñ Ð¾Ð², Том Ðейн)ÐозможноÑÑÑ Ð¾ÑменÑÑÑ Ð²ÑоÑой ÑÑап поÑÑÑÐ¾ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа Ð´Ð»Ñ ÐºÑÑпнÑÑ Ñ ÐµÑ-индекÑов (Ðавел ÐоÑиÑов) §
ÐÑпÑавление ÑÐ±Ð¾Ñ Ð¿ÑовеÑоÑного ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑбиваÑÑего Ñ ÑÐ¾Ð»ÐºÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
COPY (, когдазапÑоÑ) TO ...запÑоÑпеÑепиÑÑваеÑÑÑ Ð¿ÑавиломDO INSTEAD NOTIFY(Ð¢ÐµÐ½Ð´ÐµÑ Ðан, Том Ðейн) §ÐÑпÑавление вÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð°ÑиммеÑÑиÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¿Ð°ÑаллелÑного ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ (Ð¢Ð¾Ð¼Ð°Ñ ÐанÑо)
ÐоÑле пеÑеÑекÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÑÑÑенней ÑÑоÑÐ¾Ð½Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñ ÐµÑÑ Ð¸Ð·-за ÑлиÑком болÑÑого колиÑеÑÑва накопленнÑÑ ÐºÐ¾ÑÑежей в одной ÑекÑии пÑовеÑÑлоÑÑ, ÑÑо вÑе коÑÑежи ÑекÑии попадали в Ð¾Ð´Ð½Ñ Ð¸ ÑÑ Ð¶Ðµ доÑеÑнÑÑ ÑекÑиÑ. Так пÑедполагалоÑÑ, ÑÑо Ñ Ð²ÑÐµÑ ÐºÐ¾ÑÑежей одно Ñ ÐµÑ-знаÑение и поÑледÑÑÑее пеÑеÑекÑиониÑование не Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивнеÑÑи ÑлÑÑÑений. РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÑÑа пÑовеÑка не ÑабоÑала, из-за Ñего вÑполнÑлоÑÑ Ð±ÐµÑÑмÑÑленное многокÑаÑное пеÑеÑекÑиониÑование, ÑÑо в иÑоге пÑиводило к оÑибке иÑÑеÑÐ¿Ð°Ð½Ð¸Ñ ÑеÑÑÑÑов.
УÑÑÑанение ÑÑловий гонки пÑи ÑикÑаÑии ÑеÑиализÑемой ÑÑанзакÑии (Хейкки ÐиннакангаÑ) §
ÐекоÑÑекÑÐ½Ð°Ñ Ð¾Ð±ÑабоÑка недавно заÑикÑиÑованной ÑÑанзакÑии могла пÑиводиÑÑ Ðº ÑÐ±Ð¾Ñ Ð¿ÑовеÑоÑного ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ оÑибке «could not access status of transaction» (не ÑдалоÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÑоÑÑоÑние ÑÑанзакÑии).
УÑÑÑанение ÑÑловий гонки пÑи вÑполнении командÑ
COMMIT PREPARED, коÑоÑÑе пÑиводили к налиÑÐ¸Ñ Ð¿Ð¾ÑеÑÑннÑÑ Ñайлов двÑÑ Ñазной ÑикÑаÑии (2PC) (У ЧÑнвÑнÑ) §ÐаÑаллелÑное вÑполнение неÑколÑÐºÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´
PREPARE TRANSACTIONмогло пÑиводиÑÑ Ðº ÑомÑ, ÑÑо командаCOMMIT PREPAREDне ÑдалÑла Ñайл ÑоÑÑоÑÐ½Ð¸Ñ Ð´Ð²ÑÑ Ñазной ÑикÑаÑии на диÑке Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑÑÑнной ÑÑанзакÑии. Ðгновенно к негаÑивнÑм поÑледÑÑвиÑм ÑÑо не пÑиводило, однако пÑи поÑледÑÑÑем воÑÑÑановлении поÑле ÑÐ±Ð¾Ñ Ð¼Ð¾Ð³Ð»Ð° возникаÑÑ Ð¾Ñибка «could not access status of transaction» (не ÑдалоÑÑ Ð¿Ð¾Ð»ÑÑиÑÑ ÑоÑÑоÑние ÑÑанзакÑии), ÑÑо ÑÑебовало ÑÑÑного ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑеÑÑнного Ñайла Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑлÑжбÑ.ÐÑедоÑвÑаÑение некоÑÑекÑного обÑаÑÐµÐ½Ð¸Ñ Ðº памÑÑи поÑле пÑопÑÑка неÑабоÑего индекÑа TOAST во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
VACUUM FULL(Ð¢ÐµÐ½Ð´ÐµÑ Ðан) §СпиÑок, оÑÑлеживаÑÑий подлежаÑие пеÑеÑÑÑойке индекÑÑ, некоÑÑекÑно обновлÑлÑÑ Ð² ÑÑом меÑÑе кода, ÑÑо могло пÑиводиÑÑ ÑбоÑм пÑовеÑоÑнÑÑ ÑÑвеÑждений или оÑказам в бÑдÑÑем.
ÐÑпÑавление возможнÑÑ Ð¿Ð¾ÑеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹ каÑалога «на меÑÑе» (Ðой ÐиÑ) § § § § § § §
ÐÑи обÑÑном обновлении ÑÑÑок Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑÑÐ¸Ñ ÑÑÑоки запиÑÑваеÑÑÑ, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾ÑкаÑа ÑÑанзакÑии. Ðднако пÑи обновлении некоÑоÑÑÑ ÑиÑÑемнÑÑ ÐºÐ°Ñалогов ÑÑанзакÑии намеÑенно не заÑÑагиваÑÑÑÑ, и в Ñаком ÑлÑÑае ÑÑÑока обновлÑеÑÑÑ Ð½Ð° меÑÑе. Ðанное иÑпÑавление ÑÑÑÑанÑÐµÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð³Ð¾Ð½ÐºÐ¸, коÑоÑÑе могли пÑиводиÑÑ Ðº поÑеÑе обновлений на меÑÑе. Ðдним из пÑимеÑов бÑла поÑеÑÑ Ñого, ÑÑо длÑ
pg_class.relhasindexзадано знаÑение true, ÑÑо пÑиводило к невозможноÑÑи Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ индекÑа и, ÑледоваÑелÑно, его повÑеждениÑ.СбÑÐ¾Ñ ÐºÐµÑа каÑалогов в конÑе пÑоÑеÑÑа воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (Ðой ÐиÑ) §
Таким обÑазом пÑедоÑвÑаÑаÑÑÑÑ ÑÑенаÑии, пÑи коÑоÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ°Ñалога на меÑÑе могли бÑÑÑ Ð¿Ð¾ÑеÑÑÐ½Ñ Ð¸Ð·-за иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑÑаÑевÑÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸Ð· кеÑа каÑалога.
ÐÑедоÑвÑаÑение паÑаллелÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑов пÑи ÑдеÑживании пÑеÑÑваний (ФÑанÑеÑко ÐегÑаÑÑи, Ðой ÐиÑ, Том Ðейн) § §
С ÑÑой ÑиÑÑаÑией невозможно бÑло ÑÑолкнÑÑÑÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¾Ð±ÑÑной ÑабоÑÑ, но можно бÑло воÑпÑоизвеÑÑи пÑи помоÑи ÑеÑÑовÑÑ ÑÑенаÑиев, напÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзовав SQL-ÑÑнкÑÐ¸Ñ Ð² каÑеÑÑве опоÑной Ð´Ð»Ñ B-деÑева (ÑÑо ÑлиÑком медленно Ð´Ð»Ñ Ð¿ÑомÑÑленной ÑкÑплÑаÑаÑии). ÐÑи ÑÑпеÑном воÑпÑоизведении возникала ÑиÑÑаÑÐ¸Ñ Ð±ÐµÑконеÑного ожиданиÑ.
ÐÑвод иденÑиÑикаÑоÑа акÑивного запÑоÑа Ð´Ð»Ñ Ñелей ÑÑаÑиÑÑики в наÑале обÑабоÑки ÑообÑений пÑоÑокола Bind/Execute (Сами ÐмÑÐµÐ¹Ñ ) §
ТепеÑÑ Ð² ÑаÑÑиÑенном пÑоÑоколе запÑоÑов инÑоÑмаÑÐ¸Ñ ÑвÑзÑваеÑÑÑ Ñ ÐºÐ¾ÑÑекÑнÑм запÑоÑом.
ÐаÑиÑа Ð¾Ñ Ð¿ÐµÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑека в libxml2, еÑли вводнÑе даннÑе XML имеÑÑ ÑлиÑком много ÑÑовней вложенноÑÑи (Том Ðейн Ñ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°ÑноÑÑÑÑ ÐÐ¸ÐºÑ ÐÐµÐ»Ð½Ñ Ð¾ÑеÑÑ)
ТепеÑÑ Ð²Ð¼ÐµÑÑо ÑÑнкÑии
xmlXPathCompile()иÑполÑзÑеÑÑÑxmlXPathCtxtCompile(), поÑколÑкÑxmlXPathCompile()не заÑиÑÐ°ÐµÑ Ð¾Ñ Ð¿ÐµÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑÑека пÑи ÑекÑÑÑии в вÑпÑÑÐºÐ°Ñ libxml2 ниже 2.13.4.ÐапÑÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð°ÑаллелÑного вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
REINDEX CONCURRENTLYв оÑноÑении индекÑа Ñ Ð¿ÑедикаÑами или вÑÑажениÑми (ÐÐ¸Ñ Ð°Ð¸Ð» Ðиколаев)ÐбÑÑно команда
REINDEX CONCURRENTLYне ждÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑийREINDEX CONCURRENTLYв дÑÑÐ³Ð¸Ñ ÑаблиÑÐ°Ñ . Тем не менее, ÑÑа опÑимизаÑÐ¸Ñ Ð½Ðµ ÑабоÑаеÑ, еÑли дÑÑÐ³Ð°Ñ Ð¾Ð¿ÐµÑаÑиÑREINDEX CONCURRENTLYобÑабаÑÑÐ²Ð°ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ñ Ð¿ÑедикаÑами или вÑÑажениÑми, когда Ñакие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑодеÑÐ¶Ð°Ñ Ð¾Ð¿ÑеделÑннÑй полÑзоваÑелем код, коÑоÑÑй обÑаÑаеÑÑÑ Ðº дÑÑгим ÑаблиÑам. ÐÑибки в коде пÑиводили к ÑÑловиÑм гонки, а именно ÑомÑ, ÑÑо пÑавило пÑименÑлоÑÑ Ð½ÐµÐ¾Ð´Ð½Ð¾Ñодно, а ÑÑо вÑзÑвало неÑÑабилÑное поведение.ÐÑпÑавление оÑибки «failed to find plan for subquery/CTE» (не ÑдалоÑÑ Ð½Ð°Ð¹Ñи план Ð´Ð»Ñ Ð¿Ð¾Ð´Ð·Ð°Ð¿ÑоÑа/CTE) пÑи вÑполнении командÑ
EXPLAIN(РиÑаÑд ÐÑо, Том Ðейн) § §ÐÑоблема возникала пÑи попÑÑке Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑÑлок в Ð¿Ð¾Ð»Ñ Ð²Ñвода Ñипа RECORD подзапÑоÑа, когда подзапÑÐ¾Ñ Ð±Ñл иÑклÑÑÑн из плана в Ñ Ð¾Ð´Ðµ опÑимизаÑии (ÑÑо бÑло возможно, по кÑайней меÑе, поÑÐ¾Ð¼Ñ ÑÑо ÑÑловие
WHEREпоÑÑоÑнно не вÑполнÑлоÑÑ). Рплане не оÑÑавалоÑÑ Ð´Ð°Ð½Ð½ÑÑ , позволÑÑÑÐ¸Ñ Ð¸Ð´ÐµÐ½ÑиÑиÑиÑоваÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñе имена полей, поÑÑÐ¾Ð¼Ñ ÑепеÑÑ Ð´Ð»ÑN-го ÑÑолбÑа запиÑи Ñнова оÑобÑажаеÑÑÑf. (РдейÑÑвиÑелÑноÑÑи ÑÑо коÑÑекÑное поведение, еÑли вÑвод Ñипа RECORD ÑвлÑеÑÑÑ ÑезÑлÑÑаÑом конÑÑÑÑкÑииNROW().)ÐапÑÐµÑ Ð¿ÑедложениÑ
USINGпÑи изменении Ñипа генеÑиÑÑемого ÑÑолбÑа (ÐиÑÐµÑ ÐйзенÑÑаÑÑ) §У генеÑиÑÑемого ÑÑолбÑа Ñже еÑÑÑ Ð²ÑÑажение Ñ Ñказанием ÑодеÑжимого ÑÑолбÑа, поÑÑÐ¾Ð¼Ñ Ð²ÐºÐ»ÑÑение пÑедложениÑ
USINGне Ð¸Ð¼ÐµÐµÑ ÑмÑÑла.ÐгноÑиÑование еÑÑ Ð½Ðµ опÑеделÑннÑÑ Ð¿Ð¾ÑÑалов в пÑедÑÑавлении
pg_cursors(Том Ðейн) §ÐпÑеделÑннÑй полÑзоваÑелем код, иÑÑледÑÑÑий ÑÑо пÑедÑÑавление, мог вÑзÑваÑÑÑÑ Ð¿Ñи наÑÑÑойке нового кÑÑÑоÑа. ÐÑли ÑÑо ÑлÑÑалоÑÑ, пÑоиÑÑ Ð¾Ð´Ð¸Ð»Ð¾ обÑаÑение по нÑÐ»ÐµÐ²Ð¾Ð¼Ñ ÑказаÑелÑ. ÐÑоблема ÑеÑена опÑеделением пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð¸ÑклÑÑаÑÑ ÐºÑÑÑоÑÑ, коÑоÑÑе еÑÑ Ð½Ðµ полноÑÑÑÑ Ð½Ð°ÑÑÑоенÑ.
ÐÑедоÑвÑаÑение некоÑÑекÑного кодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑибке «trailing junk after numeric literal» (мÑÑоÑное ÑодеÑжимое поÑле ÑиÑловой конÑÑанÑÑ) (ÐаÑина ÐиÑкевиÑ) §
УказÑваÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле ÑиÑловÑÑ ÐºÐ¾Ð½ÑÑÐ°Ð½Ñ Ð·Ð°Ð¿ÑеÑено (Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ должен бÑÑÑ Ð¿ÑобелÑнÑй Ñимвол). ÐÑли ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле ÑиÑловой конÑÑанÑÑ Ð±Ñл многобайÑовÑй Ñимвол, в ÑообÑение о ÑинÑакÑиÑеÑкой оÑибке Ñанее вклÑÑалÑÑ ÑолÑко пеÑвÑй Ð±Ð°Ð¹Ñ Ñакого Ñимвола, ÑÑо пÑиводило к некоÑÑекÑÐ½Ð¾Ð¼Ñ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ðº в ÑообÑении Ð´Ð»Ñ ÐºÐ»Ð¸ÐµÐ½Ñа, Ñак и в Ñайле жÑÑнала postmaster.
ÐÑедоÑвÑаÑение оÑибки «unexpected table_index_fetch_tuple call during logical decoding» (непÑедвиденнÑй вÑзов table_index_fetch_tuple во вÑÐµÐ¼Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑованиÑ) пÑи декодиÑовании ÑÑанзакÑии, ÑодеÑжаÑей вÑÑÐ°Ð²ÐºÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑÑолбÑа по ÑмолÑÐ°Ð½Ð¸Ñ (ТакÑÑи ÐдÑÑÐ¸Ñ Ð°, Ð¥Ð¾Ñ Ð§Ð¶Ð¸Ñзе) § §
УменÑÑение поÑÑÐµÐ±Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи пÑи логиÑеÑком декодиÑовании (ÐаÑÐ°Ñ Ð¸ÐºÐ¾ Савада) §
ТепеÑÑ Ð¸ÑполÑзÑеÑÑÑ Ð±Ð»Ð¾Ðº по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼ÐµÐ½ÑÑего ÑазмеÑа Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÐºÐ¾ÑÑежей, полÑÑаемÑÑ Ð²Ð¾ вÑÐµÐ¼Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑованиÑ. Таким обÑазом ÑнижаеÑÑÑ Ð¿Ð¾ÑеÑÑ Ð¿Ð°Ð¼ÑÑи, коÑоÑаÑ, как ÑообÑаеÑÑÑ, бÑла ÑÑÑеÑÑвенной, возникала во вÑÐµÐ¼Ñ Ð´Ð»Ð¸ÑелÑнÑÑ ÑÑанзакÑий и даже пÑиводила к ÑбоÑм из-за Ð½ÐµÑ Ð²Ð°Ñки памÑÑи.
ÐовÑоÑное оÑклÑÑение оÑпÑавки ÑеанÑовÑÑ Ð±Ð¸Ð»ÐµÑов (TLSv1.2) без ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ (ÐаниÑÐ»Ñ ÐÑÑÑаÑÑÑон) §
ÐÑедÑдÑÑее изменение, напÑавленное на оÑклÑÑение оÑпÑавки ÑеанÑовÑÑ Ð±Ð¸Ð»ÐµÑов (TLSv1.3) Ñ ÑÐ¾Ñ Ñанением ÑоÑÑоÑниÑ, ÑлÑÑайнÑм обÑазом влекло повÑоÑное вклÑÑение оÑпÑавки билеÑов без ÑÐ¾Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ ÑоÑÑоÑниÑ. Ðз-за ÑÑого некоÑоÑÑе клиенÑÑ Ð¾ÑибоÑно полагали, ÑÑо возобновление ÑеÑÑий TLS возможно.
ÐÑедоÑвÑаÑение оÑибки «wrong tuple length» (некоÑÑекÑÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° коÑÑежа) пÑи Ñдалении Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ñ Ð±Ð¾Ð»ÑÑим ÑиÑлом запиÑей в ACL (ÑазÑеÑений) (ÐÑÑ Ð¢Ð¸Ð²Ð°Ñи) § §
ÐозможноÑÑÑ ÐºÐ¾ÑÑекÑиÑоваÑÑ Ð¿Ð°ÑамеÑÑÑ
session_authorizationиroleв паÑаллелÑнÑÑ ÑабоÑÐ¸Ñ Ð¿ÑоÑеÑÑÐ°Ñ (Том Ðейн) §Ркоде пÑедÑÑмоÑÑено ÑазÑеÑение на изменение паÑамеÑÑов ÑеÑвеÑа ÑеÑез пÑедложениÑ
SETÑÑнкÑий, но не дÑÑгими ÑпоÑобами внÑÑÑи паÑаллелÑного ÑабоÑего пÑоÑеÑÑа. Ðднако Ñанее Ð´Ð»Ñ Ð´Ð²ÑÑ ÑÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов пÑедложениÑSETне ÑабоÑали.ÐÑпÑавление Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑÑабилÑнÑÑ ÑÑнкÑий, вÑзÑваемÑÑ Ð¸Ð· ÑпиÑка аÑгÑменÑов опеÑаÑоÑа
CALL, гдеCALLÐ½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² блокеEXCEPTIONPL/pgSQL (Том Ðейн) §Ðак и до иÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² пÑедÑдÑÑем кваÑÑалÑном вÑпÑÑке, Ñаким ÑÑнкÑиÑм Ñанее пеÑедавалÑÑ Ð½ÐµÐ¿ÑавилÑнÑй Ñнимок, в ÑезÑлÑÑаÑе Ñего они полÑÑали ÑÑÑаÑевÑие знаÑÐµÐ½Ð¸Ñ ÑÑÑок, коÑоÑÑе Ñже изменилиÑÑ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñа наÑала внеÑней ÑÑанзакÑии.
ÐÑпÑавление оÑибок «cache lookup failed for function» (оÑибка поиÑка в кеÑе Ð´Ð»Ñ ÑÑнкÑии) в оÑобÑÑ ÑлÑÑаÑÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
CALLв PL/pgSQL (Том Ðейн) §ÐÑпÑавление поÑокобезопаÑноÑÑи запаÑного ваÑианÑа ÑеализаÑии MD5 (не OpenSSL) на компÑÑÑеÑÐ°Ñ Ñ Ð¿Ð¾ÑÑдком Ð±Ð°Ð¹Ñ Ð¾Ñ ÑÑаÑÑего (Хейкки ÐиннакангаÑ) §
ÐоÑокобезопаÑноÑÑÑ Ñже бÑла обеÑпеÑена Ð´Ð»Ñ ÑеÑвеÑа, но не Ð´Ð»Ñ libpq.
Ð Ð°Ð·Ð±Ð¾Ñ Ð¿Ð°ÑамеÑÑа подклÑÑениÑ
keepalivesв libpq Ñак же, как и дÑÑÐ³Ð¸Ñ ÑелоÑиÑленнÑÑ Ð¿Ð°ÑамеÑÑов (ЮÑо СаÑаки) §РиÑполÑзÑемом коде запÑеÑалиÑÑ Ð·Ð°Ð²ÐµÑÑаÑÑие пÑÐ¾Ð±ÐµÐ»Ñ Ð² знаÑении паÑамеÑÑа, в оÑлиÑие Ð¾Ñ Ð´ÑÑÐ³Ð¸Ñ ÑлÑÑаев. ÐÑо оказалоÑÑ Ð¿Ñоблемой, напÑимеÑ, в иÑполÑзовании ecpg.
ÐÑедоÑвÑаÑение иÑполÑзованиÑ
pnstrdup()в ecpglib (Ðжейкоб Чемпион) §ÐÑа ÑÑнкÑÐ¸Ñ Ð²ÑзÑваеÑ
exit()пÑи Ð½ÐµÑ Ð²Ð°Ñке памÑÑи, ÑÑо нежелаÑелÑно Ð´Ð»Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки. Ðод, вÑзÑваÑÑий ÑÑнкÑиÑ, Ñже пÑавилÑно обÑабаÑÑÐ²Ð°ÐµÑ Ð¾Ñибки вÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи.ÐÑпÑавление ÑÑÐµÐ½Ð¸Ñ Ð·Ð° пÑеделами вÑбоÑки пÑи ÑазбоÑе некоÑÑекÑнÑÑ Ð´Ð°ÑÑ Ð¸ вÑемени в ecpglib (ÐÑÑÑ ÐомджÑн, Ðавел ÐекÑаÑов) §
Ранее бÑло возможно попÑÑаÑÑÑÑ ÑÑиÑаÑÑ ÑаÑположение непоÑÑедÑÑвенно пеÑед наÑалом конÑÑанÑного маÑÑива. Ðднако пÑакÑиÑеÑкие ÑледÑÑÐ²Ð¸Ñ ÑÑой оÑибки незнаÑиÑелÑнÑ.
ÐÑпÑавление обÑабоÑки иденÑиÑикаÑионнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑей Ñ Ñ Ð°ÑакÑеÑиÑÑикой Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾ÑноÑений, оÑлиÑной Ð¾Ñ ÑаблиÑÑ-владелÑÑа, в pg_dump (Том Ðейн) §
ÐаÑÐ¸Ð½Ð°Ñ Ñ Ð²ÐµÑÑии 15, можно бÑло опÑеделÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑикаÑионнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ Ð¶ÑÑналиÑÑемой, а ÑаблиÑÑ-Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ â нежÑÑналиÑÑемой, и наобоÑоÑ. Ðднако pg_dump не мог воÑÑоздаÑÑ Ñакой ÑÑенаÑий в Ñежиме Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð² двоиÑном ÑоÑмаÑе, ÑÑо пÑиводило к ÑÐ±Ð¾Ñ ÑабоÑÑ pg_upgrade пÑи налиÑии ÑÐ°ÐºÐ¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑей. ÐÐ»Ñ Ð¸ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ð²ÐµÐ´Ñн новÑй паÑамеÑÑ Ð´Ð»Ñ
ADD/ALTER COLUMN GENERATED AS IDENTITY, коÑоÑÑй позволÑÐµÑ Ð²ÐµÑно наÑÑÑаиваÑÑ Ñ Ð°ÑакÑеÑиÑÑÐ¸ÐºÑ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¾ÑноÑений во вÑÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑледоваÑелÑноÑÑи. ÐбÑаÑиÑе внимание, ÑÑо вÑгÑÑзка Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей ÑакÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ, бÑÐ´ÐµÑ Ð¿ÑоизводиÑÑÑÑ ÑолÑко на ÑеÑÐ²ÐµÑ ÑÑой коÑÑекÑиÑÑÑÑей веÑÑии или новее.ÐклÑÑение иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ иÑÑоÑии линии вÑемени в вÑвод оÑладоÑнÑÑ ÑообÑений pg_rewind (Хейкки ÐиннакангаÑ) §
Так бÑло задÑмано изнаÑалÑно, но из-за оÑибки в коде вмеÑÑо иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ иÑÑоÑии вÑегда вÑводилаÑÑ Ð¿ÑÑÑÐ°Ñ ÑÑÑока.
ÐÑпÑавление некоÑÑекÑного Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² ÑабоÑе ÑоÑек ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² Windows, в ÑаÑÑноÑÑи Ð´Ð»Ñ pg_rewind (ÐлекÑандÑа Ðан) § § § §
ÐÐ»Ñ ÑÑого в ÑÑаÑÑе веÑÑии пеÑенеÑÐµÐ½Ñ Ð¿ÑедÑдÑÑие изменениÑ, ÑделаннÑе ТомаÑом ÐанÑо, ÐиÑеÑом ÐйзенÑÑаÑÑом, ÐлекÑандÑом ÐÐ°Ñ Ð¸Ð½Ñм и Ð¥Ñаном ХоÑе СанÑамаÑÐ¸Ñ Ð¤Ð»ÐµÑа. СнаÑала Ð¸Ñ Ð½Ðµ пеÑенеÑли в каÑеÑÑве пеÑеÑÑÑÐ°Ñ Ð¾Ð²ÐºÐ¸, однако из-за длиÑелÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² более Ð¿Ð¾Ð·Ð´Ð½Ð¸Ñ Ð²ÐµÑÑиÑÑ ÑепеÑÑ Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑиÑаÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑми.
ÐÑедоÑвÑаÑение попÑÑки пеÑеÑÑÑойки индекÑов вÑеменнÑÑ ÑаблиÑ, индекÑов в vacuumdb и пÑи паÑаллелÑной пеÑеÑÑÑойке индекÑов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ reindexdb (ÐÐ°Ð¹Ð±Ñ Ð°Ð² С, ÐикаÑÐ»Ñ ÐакÑе, ФÑдзии ÐаÑао, ÐаÑан ÐоÑÑаÑÑ) § § §
ÐеÑеÑÑÑойка индекÑов вÑеменнÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð´ÑÑÐ³Ð¸Ñ ÑеанÑов невозможна, но пÑовеÑка на пÑопÑÑк оÑÑÑÑÑÑвовала в некоÑоÑÑÑ Ð¼ÐµÑÑÐ°Ñ ÐºÐ¾Ð´Ð°, ÑÑо вело к нежелаÑелÑнÑм ÑбоÑм.
РеализаÑÐ¸Ñ Ð¿ÑовеÑки оÑноÑений поÑледоваÑелÑноÑÑей в ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ ÑÑнкÑиÑÑ
contrib/pageinspectиcontrib/pgstattuple(ÐаÑан ÐоÑÑаÑÑ, ÐÑÑ ÐаÑÑа) § Â§Ð¢Ð°ÐºÐ°Ñ Ð¿ÑовеÑка бÑла Ñеализована Ñанее, но ÑабоÑала некоÑÑекÑно поÑле ÑеализаÑии неÑÑандаÑÑнÑÑ Ð¼ÐµÑодов доÑÑÑпа Ð´Ð»Ñ ÑаблиÑ.
ÐÑпÑавление некоÑÑекÑного кода, генеÑиÑÑемого LLVM, на плаÑÑоÑÐ¼Ð°Ñ ARM64 (Ð¢Ð¾Ð¼Ð°Ñ ÐанÑо, ÐнÑонин ÐоннеÑой) §
ÐÑи иÑполÑзовании JIT-компилÑÑии на плаÑÑоÑÐ¼Ð°Ñ ARM генеÑиÑÑемÑй код не поддеÑживал ÑаÑÑÑоÑÐ½Ð¸Ñ Ð¿ÐµÑемеÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑÑе 32 биÑ, из-за Ñего он мог ÑазмеÑаÑÑÑÑ Ð½ÐµÑдаÑно и вÑзÑваÑÑ Ñбои ÑеÑвеÑа в ÑиÑÑÐµÐ¼Ð°Ñ Ñ Ð±Ð¾Ð»ÑÑим обÑÑмом памÑÑи.
ÐÑпÑавление неÑколÑÐºÐ¸Ñ ÑлÑÑаев, в коÑоÑÑÑ Ð´Ð¾Ð¿ÑÑкалоÑÑ, ÑÑо вÑÐµÐ¼Ñ Ð½Ð°Ñала пÑоÑеÑÑа (пÑедÑÑавленное
time_t) ÑмеÑÑиÑÑÑ Ð² знаÑение Ñипаlong(ÐÐ°ÐºÑ ÐжонÑон, ÐаÑан ÐоÑÑаÑÑ) §Ðа плаÑÑоÑÐ¼Ð°Ñ , где Ñип
longвмеÑÐ°ÐµÑ 32 биÑа (оÑобенно на Windows), поÑле 2038 года пÑоизойдÑÑ Ñбой. РоÑновном он пÑоÑÐ²Ð¸Ñ ÑÐµÐ±Ñ ÐºÐ¾ÑмеÑиÑеÑки, но в оÑобенноÑÑи завиÑÐ½ÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°pg_ctl start.ÐÑпÑавление ÑбоÑки Ñ Strawberry Perl на Windows (ÐндÑÑ ÐÑнÑÑан) §
ÐÑклÑÑение пÑедÑпÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Â«missing declaration for inet_pton» (оÑÑÑÑÑÑвÑÐµÑ Ð¾Ð±ÑÑвление Ð´Ð»Ñ inet_pton) или оÑибки компилÑÑоÑа пÑи ÑбоÑке Ñ MinGW (Ð¢Ð¾Ð¼Ð°Ñ ÐанÑо, ÐндÑÑ ÐÑнÑÑан) §
Ðбновление даннÑÑ ÑаÑовÑÑ Ð¿Ð¾ÑÑов до веÑÑии tzdata 2024b (Том Ðейн) § §
Ð ÑÑом вÑпÑÑке tzdata изменÑÑÑÑÑ ÑÑаÑÑе имена ÑаÑовÑÑ Ð¿Ð¾ÑÑов, ÑовмеÑÑимÑе Ñ System V, ÑепеÑÑ Ð¾Ð½Ð¸ дÑблиÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑие геогÑаÑиÑеÑкие зонÑ. ÐапÑимеÑ,
PST8PDTÑепеÑÑ ÑвлÑеÑÑÑ Ð¿Ñевдонимом длÑAmerica/Los_Angeles. ÐдинÑÑвенное видимое поÑледÑÑвие заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо Ð´Ð»Ñ Ð²ÑеменнÑÑ Ð¾ÑмеÑок до Ð²Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑÑандаÑÑизиÑованнÑÑ ÑаÑовÑÑ Ð¿Ð¾ÑÑов ÑаÑовой поÑÑ Ð±ÑÐ´ÐµÑ Ð¾Ð·Ð½Ð°ÑаÑÑ ÑÑеднее ÑолнеÑное вÑÐµÐ¼Ñ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ меÑÑа. ÐапÑимеÑ, вPST8PDTввод Ñ Ñипом даннÑÑtimestamptz, Ñакой как1801-01-01 00:00, ÑанÑÑе оÑобÑажалÑÑ ÐºÐ°Ðº1801-01-01 00:00:00-08, а ÑепеÑÑ â как1801-01-01 00:00:00-07:52:58.ÐÑоме Ñого, вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ñ ÐºÐ¾ÑÑекÑиÑовки иÑÑоÑиÑеÑÐºÐ¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð´Ð»Ñ ÐекÑики, Ðонголии и ÐоÑÑÑгалии. ЧаÑовой поÑÑ
Asia/ChoibalsanÑепеÑÑ ÑвлÑеÑÑÑ Ð¿Ñевдонимом длÑAsia/Ulaanbaatar, а не оÑделÑнÑм ÑаÑовÑм поÑÑом, в оÑновном поÑÐ¾Ð¼Ñ ÑÑо ÑазниÑа Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸, как оказалоÑÑ, оÑнована на недоÑÑовеÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ .