PostgreSQL เป็นระบบฐานข้อมูลโอเพนซอร์สมีประสิทธิภาพเชื่อถือได้มีเสถียรภาพพร้อมใช้งานและไม่เสียค่าใช้จ่ายในรูปแบบของโครงการ MariaDB, MySQL หรือ SQLite เป็นเซิร์ฟเวอร์ / เอ็นจิ้นเซิร์ฟเวอร์ฐานข้อมูลที่สอดคล้องกับอะตอม, ความสอดคล้อง, การแยก, ความทนทาน) ที่สามารถปรับแต่งได้สูงและมีคุณลักษณะที่น่าสนใจจำนวนมากทำให้เป็นเครื่องมือทดแทนที่ดีสำหรับเครื่องมือฐานข้อมูลดังกล่าว
คุณสมบัติได้อย่างรวดเร็ว
คุณลักษณะสำคัญ ได้แก่ การสนับสนุนคีย์ต่างประเทศมุมมองการเข้าร่วมการเรียกและการจัดเก็บการสนับสนุนหลายภาษาการสนับสนุนชนิดข้อมูล SQL รวมถึงบูลีนชอร์ INTEGER NUMERIC VARCHAR INTERVAL TIMESTAMP และ DATE.
นอกจากนี้ซอฟต์แวร์ยังมีการสนับสนุนการจัดเก็บวัตถุขนาดใหญ่แบบไบนารีรวมถึงไฟล์มัลติมีเดียทุกชนิด (วิดีโอเสียงและภาพ) และให้บริการนักพัฒนาซอฟต์แวร์ที่มีอินเตอร์เฟซการเขียนโปรแกรมพื้นเมืองสำหรับ C, C + +, Python, Perl, Ruby, Java, .Net, Tcl และ ODBC programming languages
ท่ามกลางคุณสมบัติที่น่าสนใจอื่น ๆ เราสามารถพูดถึง MVCC (Multi-Version Concurrency Control), tablespaces, การเข้ารหัสตัวอักษรแบบหลายไบต์, การกู้คืนจุดเวลา, เครื่องมือเพิ่มประสิทธิภาพแบบสอบถามที่เป็นผู้ใหญ่และการวางแผน, การจำลองแบบอะซิงโครนัส, การสำรองข้อมูลออนไลน์, การทำธุรกรรมที่ซ้อนกัน (popularly known as savepoints), การสำรองข้อมูลที่ร้อน, เขียนบันทึกล่วงหน้าสำหรับความผิดพลาด, การสนับสนุนชุดอักขระระหว่างประเทศรวมทั้งการสนับสนุน Unicode
PostgreSQL เป็นตัวเลข
ขณะนี้เซิร์ฟเวอร์ฐานข้อมูล PostgreSQL สนับสนุนฐานข้อมูลไม่ จำกัด ขนาด 32 TB ควรเป็นขนาดสูงสุดสำหรับตาราง 1.6 TB ต่อแถว 1 GB ต่อเขตข้อมูลแถวไม่ จำกัด ต่อตารางรองรับระหว่างคอลัมน์ 250 ถึง 1600 คอลัมน์ต่อตาราง ขึ้นอยู่กับชนิดของคอลัมน์และสนับสนุนดัชนีไม่ จำกัด ต่อโต๊ะ
ระบบปฏิบัติการที่สนับสนุน
PostgreSQL ได้รับการทดสอบเรียบร้อยแล้วในระบบปฏิบัติการหลัก ๆ ทั้งหมดเช่น GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X และ Microsoft Windows PostgreSQL สามารถดาวน์โหลดเป็นที่เก็บข้อมูลสากลได้เช่นเดียวกับแพคเกจไบนารีที่รวบรวมไว้ล่วงหน้าสำหรับการกระจาย Linux จำนวนมากซึ่งสนับสนุนทั้งสถาปัตยกรรมแบบ 32 บิตและ 64 บิต
มีอะไรใหม่
strong> ในรุ่นนี้:
- ฉบับนี้แก้ไขปัญหาด้านความปลอดภัยสองแบบ รุ่นนี้ยังแก้ไขปัญหาที่พบโดยใช้ VACUUM, GIN & ดัชนีแฮชการค้นหาแบบขนานการจำลองแบบตรรกะและข้อผิดพลาดอื่น ๆ ที่รายงานในช่วง 3 เดือนที่ผ่านมา ผู้ใช้ทั้งหมดที่ใช้ PostgreSQL เวอร์ชันที่มีปัญหาควรอัปเดตโดยเร็วที่สุด
- รุ่นนี้แก้ไขปัญหาด้านความปลอดภัยสองเรื่อง รุ่นนี้ยังแก้ไขปัญหาที่พบโดยใช้ VACUUM, GIN & ดัชนีแฮชการค้นหาแบบขนานการจำลองแบบตรรกะและข้อผิดพลาดอื่น ๆ ที่รายงานในช่วง 3 เดือนที่ผ่านมา ผู้ใช้ทั้งหมดที่ใช้ PostgreSQL เวอร์ชันที่มีปัญหาควรอัปเดตโดยเร็วที่สุด
- จำกัด การมองเห็น pg_user_mappings.umoptions เพื่อป้องกันรหัสผ่านที่เก็บไว้ในตัวเลือกการทำแผนที่ผู้ใช้ (Noah Misch)
- การแก้ไขสำหรับ CVE-2017-7486 ไม่ถูกต้อง: อนุญาตให้ผู้ใช้เห็นตัวเลือกในการแมปผู้ใช้ของตนเองแม้ว่าจะไม่ได้รับสิทธิ์ในการใช้งานบนเซิร์ฟเวอร์ต่างประเทศก็ตาม ตัวเลือกดังกล่าวอาจรวมถึงรหัสผ่านที่ได้รับจากเจ้าของเซิร์ฟเวอร์แทนที่จะเป็นผู้ใช้เอง เนื่องจาก information_schema.user_mapping_options ไม่แสดงตัวเลือกในกรณีดังกล่าว pg_user_mappings ไม่ควรทำอย่างใดอย่างหนึ่ง (CVE-2017-7547)
- ด้วยตัวเองแพทช์นี้จะแก้ไขพฤติกรรมในฐานข้อมูล initdb'd ใหม่เท่านั้น ถ้าคุณต้องการใช้การเปลี่ยนแปลงนี้ในฐานข้อมูลที่มีอยู่คุณจะต้องดำเนินการดังนี้:
- เริ่มต้น postmaster ใหม่หลังจากเพิ่ม allow_system_table_mods = true ลงใน postgresql.conf (ในเวอร์ชันที่สนับสนุน ALTER SYSTEM คุณสามารถใช้เพื่อทำการเปลี่ยนแปลงการกำหนดค่า แต่คุณจะต้องเริ่มต้นใหม่)
- ในแต่ละฐานข้อมูลของคลัสเตอร์ให้รันคำสั่งต่อไปนี้เป็น superuser:
- ตั้งค่า search_path = pg_catalog;
- สร้างหรือเปลี่ยนมุมมอง pg_user_mappings AS
- เลือก
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- กรณีเมื่อ U.umuser = 0 THEN
- 'สาธารณะ'
- ELSE
- A.rolname
- END as usename,
- กรณีเมื่อ (U.umuser 0 AND A.rolname = current_user
- AND (pg_has_role (S.srvowner, 'USAGE')
- หรือ has_server_privilege (S.oid, 'ใช้')))
- OR (U.umuser = 0 และ pg_has_role (S.srvowner, 'USAGE'))
- หรือ (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- อื่น ๆ เป็น NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
- อย่าลืมใส่ฐานข้อมูล template0 และ template1 หรือช่องโหว่จะยังคงอยู่ในฐานข้อมูลที่คุณสร้างในภายหลัง ในการแก้ไข template0 คุณจะต้องยอมรับการเชื่อมต่อชั่วคราว ใน PostgreSQL 9.5 ขึ้นไปคุณสามารถใช้
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
- หลังจากแก้ไข template0 แล้วเลิกทำด้วย
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
- ในเวอร์ชันก่อนหน้านี้ให้ใช้ แทน
- อัปเดต pg_database SET datallowconn = true ในกรณีที่ datname = 'template0';
- อัปเดต pg_database SET datallowconn = false WHERE datname = 'template0';
- สุดท้ายลบการตั้งค่าคอนฟิกูเรชัน allow_system_table_mods และเริ่มต้น postmaster ใหม่อีกครั้ง
- ไม่อนุญาตให้ใช้รหัสผ่านที่ว่างเปล่าในวิธีการรับรองความถูกต้องของรหัสผ่าน (Heikki Linnakangas)
- libpq ละเว้นข้อกำหนดรหัสผ่านที่ว่างเปล่าและไม่ได้ส่งข้อมูลไปยังเซิร์ฟเวอร์ ดังนั้นถ้ารหัสผ่านของผู้ใช้ถูกตั้งค่าเป็นสตริงว่างคุณไม่สามารถลงชื่อเข้าใช้ด้วยรหัสผ่านนั้นผ่าน psql หรือไคลเอ็นต์ที่ใช้ libpq อื่น ๆ ผู้ดูแลระบบอาจเชื่อว่าการตั้งรหัสผ่านให้ว่างจะเท่ากับการล็อกอินรหัสผ่าน อย่างไรก็ตามด้วยไคลเอ็นต์ที่ปรับเปลี่ยนหรือไม่ใช่ libpq การเข้าสู่ระบบอาจเป็นไปได้ขึ้นอยู่กับวิธีการตรวจสอบสิทธิ์ที่ได้รับการกำหนดค่า โดยเฉพาะอย่างยิ่งวิธีการที่พบมากที่สุดคือ md5 ยอมรับรหัสผ่านที่ว่างเปล่า เปลี่ยนเซิร์ฟเวอร์เพื่อปฏิเสธรหัสผ่านที่ว่างเปล่าในทุกกรณี (CVE-2017-7546)
- ตรวจสอบสิทธิ์ UPDATE ในเป้าหมายขนาดใหญ่ (Tom Lane, Michael Paquier)
- lo_put () ควรจะต้องมีสิทธิ์เหมือนกับ lowrite () แต่การตรวจสอบหายไปทำให้ผู้ใช้สามารถเปลี่ยนข้อมูลในวัตถุขนาดใหญ่ได้ (CVE-2017-7548)
- แก้ไขเอกสารเกี่ยวกับกระบวนการอัพเกรดเซิร์ฟเวอร์สแตนด์บายด้วย pg_upgrade (Bruce Momjian)
- เอกสารก่อนหน้านี้แนะนำให้ผู้ใช้เริ่ม / หยุดเซิร์ฟเวอร์หลักหลังจากใช้งาน pg_upgrade แต่ก่อนที่จะซิงค์เซิร์ฟเวอร์สแตนด์บาย ลำดับนี้ไม่ปลอดภัย
- แก้ไขการล็อกร่วมกันของชุดปรับปรุง tuple (Alvaro Herrera)
- ถ้าหลายเซสชันพร้อมกันจะล็อคสตริงการอัปเดต tuple ด้วยโหมดล็อกที่ไม่ทำให้เกิดปัญหาโดยใช้ snapshot เก่าและพวกเขาทั้งหมดประสบความสำเร็จ เงื่อนไข. สิ่งนี้มีผลเช่นการตรวจสอบคีย์ต่างประเทศล้มเหลวในการดูเอกสารที่มีอยู่จริง แต่มีการอัปเดตพร้อมกัน
- แก้ไขข้อมูลที่อาจเกิดความเสียหายเมื่อแช่แข็ง tuple ซึ่ง XMAX เป็น multixact กับสมาชิกที่น่าสนใจอย่างหนึ่ง (Teodor Sigaev)
- หลีกเลี่ยงการล้นเกินจำนวนเต็มและเกิดข้อผิดพลาดในการคัดแยกหน่วยความจำภายในมากกว่าหนึ่งพันล้านใบ (Sergey Koposov)
- ใน Windows ให้ลองสร้างกระบวนการอีกครั้งหากเราไม่สามารถสำรองช่วงที่อยู่สำหรับหน่วยความจำที่ใช้ร่วมกันของเราในกระบวนการใหม่ (Tom Lane, Amit Kapila)
- นี่คาดว่าจะแก้ไขปัญหาความล้มเหลวในการเปิดใช้งานขั้นตอนย่อยสำหรับเด็กซึ่งอาจเกิดจากการแทรกแซงจากผลิตภัณฑ์แอนตี้ไวรัส
- แก้ไขความเสียหายต่ำของความน่าจะเป็นของตารางแฮชกริดที่ใช้ร่วมกันใน Windows ที่สร้างขึ้น (Thomas Munro, Tom Lane)
- หลีกเลี่ยงการปิดกั้นการเชื่อมต่อ SSL อย่างปลอดภัยเช่นเดียวกับการตั้งค่าการเชื่อมต่อ (Michael Paquier)
- ป้องกันไม่ให้ส่งตั๋วเข้าชม SSL ไปยังลูกค้า (Tom Lane)
- การแก้ไขนี้จะช่วยป้องกันความล้มเหลวในการเชื่อมต่อใหม่ด้วยรหัส SSL ฝั่งไคลเอ็นต์ที่รับทราบข้อมูลตั๋ว
- แก้ไขโค้ดสำหรับตั้งค่า tcp_keepalives_idle บน Solaris (Tom Lane)
- แก้ไขตัวเก็บรวบรวมสถิติเพื่อให้เกียรติข้อความค้นหาที่ออกหลังจากปิดระบบ postmaster และรีสตาร์ททันที (Tom Lane)
- การสอบถามข้อมูลด้านสถิติที่ออกภายในครึ่งวินาทีของการปิดระบบมาสเตอร์โพสต์ก่อนหน้านี้ได้รับการละเลยอย่างมีประสิทธิภาพ
- ตรวจสอบว่าผู้รวบรวมสถิติได้รับขนาดบัฟเฟอร์อย่างน้อย 100KB (ทอมเลน)
- ช่วยลดความเสี่ยงในการลดข้อมูลสถิติบนแพลตฟอร์มรุ่นเก่าที่มีขนาดบัฟเฟอร์ต่ำกว่า
- แก้ไขการสร้างส่วน WAL ที่ไม่ถูกต้องเมื่อสแตนด์บายถูกโปรโมตหลังจากที่ประมวลผลระเบียน WIND () ของ XLOG_SWITCH แล้ว
- แก้ไข walsender เพื่อออกจากระบบทันทีเมื่อไคลเอนต์ขอปิดระบบ (Tom Lane)
- แก้ไขการจัดการ SIGHUP และ SIGUSR1 ในกระบวนการ Walsender (Petr Jelinek, Andres Freund)
- ป้องกันการตื่นตระหนกของ walsender ระหว่างจุดปิดเครื่อง (Andres Freund, Michael Paquier)
- แก้ไขขั้นตอนการรีสตาร์ทรีสตาร์ทที่ช้าโดยไม่จำเป็นเนื่องจากสภาวะการแข่งขันในไปรษณีย์ (Tom Lane)
- แก้ไขการรั่วไหลของการดำเนินการย่อยเล็ก ๆ ที่หกลงในดิสก์ในระหว่างการถอดรหัสตรรกะ (Andres Freund)
- ส่งผลให้ไฟล์ชั่วคราวใช้พื้นที่ดิสก์มากเกินไป
- ลดงานที่จำเป็นในการสร้างภาพรวมในระหว่างการสร้างสล็อตถอดรหัสตรรกะ (Andres Freund, Petr Jelinek)
- อัลกอริธึมก่อนหน้านี้มีราคาแพงมากเมื่อเทียบกับเซิร์ฟเวอร์ที่มีธุรกรรมเปิดอยู่มากมาย
- แก้ไขสภาวะการแข่งขันที่อาจสร้างความล่าช้าในการสร้างช่องตรรกะถอดรหัส (Andres Freund, Petr Jelinek) อย่างไม่มีกำหนด
- ลดค่าใช้จ่ายในการประมวลผลเหตุการณ์ invalidation ของ syscache (Tom Lane)
- การทำตรรกะนี้มีประโยชน์อย่างยิ่งสำหรับการถอดรหัสตรรกะซึ่งจะเรียกใช้การทำให้เป็นโมฆะแคชบ่อยๆ
- ลบฮิวริสติกที่ไม่ถูกต้องที่ใช้ในบางกรณีเพื่อประมาณความพร้อมในการเข้าร่วมตามการมีข้อ จำกัด ของคีย์ต่างประเทศ (David Rowley)
- ในบางกรณีที่มีข้อ จำกัด คีย์ต่างประเทศหลายคอลัมน์ แต่ไม่ตรงกับโครงสร้างการเข้าร่วมของข้อความแบบสอบถามนักวางแผนใช้การประมาณค่าที่เป็นไปในทางที่ไม่ได้ผลดีนัก ย้อนกลับกรณีดังกล่าวไปตามที่คาดคะเนก่อน 9.6
- แก้ไขกรณีที่ INSERT หรือ UPDATE กำหนดให้มากกว่าหนึ่งองค์ประกอบของคอลัมน์ที่มีประเภท domain-over-array (Tom Lane)
- อนุญาตให้ใช้ฟังก์ชันหน้าต่างในรายการย่อยที่อยู่ภายในอาร์กิวเมนต์ของฟังก์ชันรวม (ทอมเลน)
- ตรวจสอบว่าคำสั่ง CHECK OPTIONS ของดูถูกบังคับใช้อย่างถูกต้องเมื่อตารางอ้างอิงเป็นตารางต่างประเทศ (Etsuro Fujita)
- ก่อนหน้านี้การอัปเดตอาจถูกผลักไปยังเซิร์ฟเวอร์จากต่างประเทศทั้งหมด แต่จำเป็นต้องตรวจสอบเงื่อนไขมุมมองหากเป็นเช่นนั้น
- ย้ายอาร์เรย์ที่สร้างขึ้นโดยอัตโนมัติในระหว่างการแก้ไข ALTER ... RENAME (Vik Fearing)
- ก่อนหน้านี้เราจะเปลี่ยนชื่ออาร์เรย์อาร์เรย์ที่ขัดแย้งกันออกไปในระหว่างการสร้าง การแก้ไขนี้ขยายการทำงานเพื่อเปลี่ยนชื่อการทำงาน
- แก้ไขตัวชี้แบบ dangling ใน ALTER TABLE เมื่อมีข้อคิดเห็นเกี่ยวกับข้อ จำกัด ของตาราง (David Rowley)
- การใช้ความคิดเห็นกับข้อ จำกัด ที่สร้างใหม่อาจล้มเหลวด้วยข้อความแสดงข้อผิดพลาดแปลก ๆ หรือแม้แต่ความผิดพลาด
- ตรวจสอบให้แน่ใจว่า ALTER USER ... SET ยอมรับรูปแบบไวยากรณ์ทั้งหมดที่ ALTER ROLE ... SET ทำ (Peter Eisentraut)
- อนุญาตให้ข้อ จำกัด CHECK ของตารางในต่างประเทศเริ่มต้นไม่ถูกต้อง (Amit Langote)
- CREATE TABLE จะไม่ใช้ตัวระบุที่ไม่ถูกต้องสำหรับข้อ จำกัด CHECK โดยให้เหตุผลว่าตารางต้องว่างเปล่าเพื่อให้ข้อ จำกัด สามารถตรวจสอบได้ทันที แต่นี่เป็นข้อผิดพลาดในการสร้างตารางต่างประเทศซึ่งไม่มีเหตุผลใดที่จะสมมติว่าตารางอ้างอิงว่างเปล่าและแม้ว่าจะไม่ใช่ธุรกิจของเราก็ตามที่จะตัดสินว่าข้อ จำกัด ดังกล่าวสามารถปฏิบัติได้อย่างถูกต้องต่อไป ข้ามการเพิ่มประสิทธิภาพนี้ & quot; สำหรับตารางต่างประเทศ
- อัปเดตข้อมูลการพึ่งพาอย่างถูกต้องเมื่อเปลี่ยนอาร์กิวเมนต์ของฟังก์ชัน I / O ประเภทข้อมูลหรือประเภทส่งคืนจากแบบทึบแสงเป็นประเภทที่ถูกต้อง (Heikki Linnakangas)
- CREATE TYPE ปรับปรุงฟังก์ชัน I / O ที่ประกาศในรูปแบบที่ล้าสมัยแล้ว แต่ลืมบันทึกการพึ่งพาประเภทซึ่งทำให้ DROP TYPE สามารถออกจากคำจำกัดความของฟังก์ชันที่หักหลังได้
- อนุญาตให้เกิดการทำงานแบบขนานในแผนแบบสอบถามเมื่อ COPY คัดลอกจากผลการค้นหา (Andres Freund)
- ลดการใช้หน่วยความจำเมื่อ ANALYZE ประมวลผลคอลัมน์ tsvector (Heikki Linnakangas)
- แก้ไขการสูญเสียความแม่นยำที่ไม่จำเป็นและการปัดเศษที่เลอะเทอะเมื่อคูณหรือแบ่งเงินตามจำนวนเต็มหรือลอยตัว (ทอมเลน)
- ตรวจสอบช่องว่างสำหรับฟังก์ชันที่แยกวิเคราะห์ตัวระบุเช่น regprocedurein () (Tom Lane)
- ขึ้นอยู่กับตำแหน่งที่ตั้งที่มีอยู่ฟังก์ชันเหล่านี้อาจตีความผิด ๆ ว่าเป็นส่วนของอักขระหลายรายการเป็นช่องว่าง
- ใช้ #define สัญลักษณ์ที่เกี่ยวข้องจาก Perl ขณะรวบรวม PL / Perl (Ashutosh Sharma, Tom Lane)
- การหลีกเลี่ยงปัญหาการพกพานี้โดยทั่วไปจะแสดงเป็น "การจับมือ" & quot; ไม่ตรงกันระหว่างโหลดไลบรารีเมื่อทำงานกับเวอร์ชัน Perl ล่าสุด
- ใน libpq ให้รีเซ็ตสถานะการตรวจสอบ GSS / SASL และ SSPI อย่างถูกต้องหลังจากพยายามเชื่อมต่อล้มเหลว (Michael Paquier)
- การไม่ทำเช่นนี้หมายความว่าเมื่อกลับจาก SSL ไปยังการเชื่อมต่อที่ไม่ใช่ SSL ความล้มเหลวของ GSS / SASL ในการพยายามใช้ SSL จะทำให้ความพยายามในการไม่ผ่าน SSL ล้มเหลว SSPI ไม่ล้มเหลว แต่หน่วยความจำรั่วออกมา
- ใน psql ให้แก้ไขความล้มเหลวเมื่อ COPY FROM STDIN สิ้นสุดลงด้วยสัญญาณ EOF ของแป้นพิมพ์จากนั้นจึงเรียกใช้ COPY จาก STDIN (Thomas Munro)
- พฤติกรรมที่ไม่เหมาะสมนี้เกิดขึ้นบนแพลตฟอร์มที่ได้รับ BSD (รวมถึง macOS) แต่ไม่ใช่ในส่วนอื่น ๆ
- แก้ไข pg_dump และ pg_restore เพื่อแสดงคำสั่ง REFRESH MATERIALIZED VIEW ล่าสุด (Tom Lane)
- ป้องกันข้อผิดพลาดระหว่างการถ่ายโอนข้อมูล / เรียกคืนเมื่อมุมมองที่เป็นร่างหมายถึงตารางที่เป็นของผู้ใช้รายอื่น
- ปรับปรุงการรายงานข้อผิดพลาดของ pg_dump / pg_restore ที่มีต้นกำเนิดใน zlib (Vladimir Kunschikov, Alvaro Herrera)
- แก้ไข pg_dump ด้วย --clean ตัวเลือกเพื่อลดทริกเกอร์เหตุการณ์ตามที่คาดไว้ (Tom Lane)
- ตอนนี้ยังกำหนดสิทธิ์การเป็นเจ้าของทริกเกอร์เหตุการณ์อย่างถูกต้อง ก่อนหน้านี้พวกเขาได้รับการคืนค่าให้เป็นเจ้าของโดย superuser ที่เรียกใช้สคริปต์การเรียกคืน
- แก้ไข pg_dump ด้วย --clean option เพื่อไม่ให้ล้มเหลวเมื่อไม่มี schema สาธารณะ (Stephen Frost)
- แก้ไข pg_dump เพื่อไม่ปล่อย SQL ที่ไม่ถูกต้องสำหรับคลาสผู้ดำเนินการที่ว่างเปล่า (Daniel Gustafsson)
- แก้ไขไฟล์ pg_dump ออกเป็น stdout บน Windows (Kuntal Ghosh)
- การถ่ายโอนข้อมูลข้อความล้วนแบบบีบอัดที่เขียนลงใน stdout จะมีข้อมูลที่เสียหายเนื่องจากไม่ได้ใส่ตัวอธิบายไฟล์ลงในโหมดไบนารี
- แก้ไข pg_get_ruledef () เพื่อพิมพ์ผลลัพธ์ที่ถูกต้องสำหรับกฎ ON SELECT ของมุมมองที่มีการเปลี่ยนชื่อคอลัมน์ (Tom Lane)
- ในบางกรณีมุม pg_dump ใช้ pg_get_ruledef () เพื่อถ่ายโอนข้อมูลพร็อพเพอร์ตี้เพื่อให้ข้อผิดพลาดนี้อาจส่งผลให้เกิดความผิดพลาดในการโหลด / โหลดใหม่
- แก้ไขการทุ่มตลาดการรวมภายนอกด้วยข้อ จำกัด ที่ว่างเปล่าเช่นผลของ NATURAL LEFT JOIN โดยไม่มีคอลัมน์ทั่วไป (Tom Lane)
- แก้ไขการทุ่มตลาดการแสดงออกของฟังก์ชันในส่วน FROM ในกรณีที่นิพจน์ไม่แบ่งแยกออกเป็นส่วนที่คล้ายกับการเรียกฟังก์ชัน (Tom Lane)
- แก้ไขผลลัพธ์ pg_basebackup เป็น stdout บน Windows (Haribabu Kommi)
- การเขียนข้อมูลสำรองที่ stdout จะมีข้อมูลที่เสียหายเนื่องจากไม่ได้ใส่ตัวอธิบายไฟล์ลงในโหมดไบนารี
- แก้ไข pg_rewind เพื่อจัดการไฟล์ที่มีขนาดไม่เกิน 2GB (Kuntal Ghosh, Michael Paquier)
- โดยปกติไฟล์ดังกล่าวจะไม่ปรากฏในไดเรกทอรีข้อมูล PostgreSQL แต่อาจมีอยู่ในบางกรณี
- แก้ไข pg_upgrade เพื่อให้แน่ใจว่าการบันทึก WAL สิ้นสุดไม่มี wal_level = minimum (Bruce Momjian)
- เงื่อนไขนี้สามารถป้องกันไม่ให้เซิร์ฟเวอร์สแตนด์บายรุ่นอัปเกรดสามารถเชื่อมต่อใหม่ได้
- แก้ไขการคำนวณ pg_xlogdump ของความยาวระเบียน WAL (Andres Freund)
- ใน postgres_fdw ให้ตั้งค่าการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลใหม่หลังจาก ALTER SERVER หรือ ALTER USER MAPPING commands (Kyotaro Horiguchi)
- การดำเนินการนี้จะทำให้แน่ใจว่าการเปลี่ยนแปลงตัวเลือกที่ส่งผลต่อพารามิเตอร์การเชื่อมต่อจะถูกใช้ทันที
- ใน postgres_fdw อนุญาตให้ยกเลิกคำสั่งควบคุมธุรกรรมแบบระยะไกล (Robert Haas, Rafia Sabih)
- การเปลี่ยนแปลงนี้ทำให้เราสามารถหลบหนีการรอเซิร์ฟเวอร์ระยะไกลที่ไม่ตอบสนองได้อย่างรวดเร็วในหลาย ๆ กรณีกว่าที่เคย
- เพิ่ม MAX_SYSCACHE_CALLBACKS เพื่อเพิ่มพื้นที่สำหรับส่วนขยาย (ทอมเลน)
- ควรใช้ -fPIC เสมอไม่ใช่ -fpic เมื่อสร้างห้องสมุดสาธารณะด้วย gcc (Tom Lane)
- นี้รองรับไลบรารีส่วนขยายที่มีขนาดใหญ่กว่าบนแพลตฟอร์มที่ทำให้เกิดความแตกต่าง
- ใน MSVC build จัดการกรณีที่ไลบรารี openssl ไม่อยู่ในไดเรกทอรีย่อยของ VC (Andrew Dunstan)
- ใน MSVC build ให้เพิ่มเส้นทางที่เหมาะสมสำหรับไฟล์ส่วนหัว libxml2 (Andrew Dunstan)
- การแก้ไขนี้จำเป็นต้องย้ายสิ่งต่างๆรอบ ๆ ในการติดตั้ง Windows มาตรฐานของ libxml2
- ใน MSVC สร้างรู้จักไลบรารี Tcl ที่ชื่อ tcl86.lib (Noah Misch)
- ใน MSVC จะสร้างรายละเอียดการตั้งค่า PROVE_FLAGS ในบรรทัดคำสั่งของ vcregress.pl (Andrew Dunstan)
- จำกัด การมองเห็น pg_user_mappings.umoptions เพิ่มเติมเพื่อปกป้องรหัสผ่านที่เก็บไว้ในตัวเลือกการทำแผนที่ผู้ใช้ (Noah Misch)
- การแก้ไขสำหรับ CVE-2017-7486 ไม่ถูกต้อง: อนุญาตให้ผู้ใช้เห็นตัวเลือกในการแมปผู้ใช้ของตนเองแม้ว่าจะไม่ได้รับสิทธิ์ในการใช้งานบนเซิร์ฟเวอร์ต่างประเทศก็ตาม ตัวเลือกดังกล่าวอาจรวมถึงรหัสผ่านที่ได้รับจากเจ้าของเซิร์ฟเวอร์แทนที่จะเป็นผู้ใช้เอง เนื่องจาก information_schema.user_mapping_options ไม่แสดงตัวเลือกในกรณีดังกล่าว pg_user_mappings ไม่ควรทำอย่างใดอย่างหนึ่ง (CVE-2017-7547)
- ด้วยตัวเองแพทช์นี้จะแก้ไขพฤติกรรมในฐานข้อมูล initdb'd ใหม่เท่านั้น ถ้าคุณต้องการใช้การเปลี่ยนแปลงนี้ในฐานข้อมูลที่มีอยู่คุณจะต้องดำเนินการดังนี้:
- เริ่มต้น postmaster ใหม่หลังจากเพิ่ม allow_system_table_mods = true ลงใน postgresql.conf (ในเวอร์ชันที่สนับสนุน ALTER SYSTEM คุณสามารถใช้เพื่อทำการเปลี่ยนแปลงการกำหนดค่า แต่คุณจะต้องเริ่มต้นใหม่)
- ในแต่ละฐานข้อมูลของคลัสเตอร์ให้รันคำสั่งต่อไปนี้เป็น superuser:
- ตั้งค่า search_path = pg_catalog;
- สร้างหรือเปลี่ยนมุมมอง pg_user_mappings AS
- เลือก
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- กรณีเมื่อ U.umuser = 0 THEN
- 'สาธารณะ'
- ELSE
- A.rolname
- END as usename,
- กรณีเมื่อ (U.umuser 0 AND A.rolname = current_user
- AND (pg_has_role (S.srvowner, 'USAGE')
- หรือ has_server_privilege (S.oid, 'ใช้')))
- OR (U.umuser = 0 และ pg_has_role (S.srvowner, 'USAGE'))
- หรือ (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- อื่น ๆ เป็น NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
- อย่าลืมใส่ฐานข้อมูล template0 และ template1 หรือช่องโหว่จะยังคงอยู่ในฐานข้อมูลที่คุณสร้างในภายหลัง ในการแก้ไข template0 คุณจะต้องยอมรับการเชื่อมต่อชั่วคราว ใน PostgreSQL 9.5 ขึ้นไปคุณสามารถใช้
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
- หลังจากแก้ไข template0 แล้วเลิกทำด้วย
- ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
- ในเวอร์ชันก่อนหน้านี้ให้ใช้ แทน
- อัปเดต pg_database SET datallowconn = true ในกรณีที่ datname = 'template0';
- อัปเดต pg_database SET datallowconn = false WHERE datname = 'template0';
- สุดท้ายลบการตั้งค่าคอนฟิกูเรชัน allow_system_table_mods และเริ่มต้น postmaster ใหม่อีกครั้ง
- ไม่อนุญาตให้ใช้รหัสผ่านที่ว่างเปล่าในวิธีการรับรองความถูกต้องของรหัสผ่าน (Heikki Linnakangas)
- libpq ละเว้นข้อกำหนดรหัสผ่านที่ว่างเปล่าและไม่ได้ส่งข้อมูลไปยังเซิร์ฟเวอร์ ดังนั้นถ้ารหัสผ่านของผู้ใช้ถูกตั้งค่าเป็นสตริงว่างคุณไม่สามารถลงชื่อเข้าใช้ด้วยรหัสผ่านนั้นผ่าน psql หรือไคลเอ็นต์ที่ใช้ libpq อื่น ๆ ผู้ดูแลระบบอาจเชื่อว่าการตั้งรหัสผ่านให้ว่างจะเท่ากับการล็อกอินรหัสผ่าน อย่างไรก็ตามด้วยไคลเอ็นต์ที่ปรับเปลี่ยนหรือไม่ใช่ libpq การเข้าสู่ระบบอาจเป็นไปได้ขึ้นอยู่กับวิธีการตรวจสอบสิทธิ์ที่ได้รับการกำหนดค่า โดยเฉพาะอย่างยิ่งวิธีการที่พบมากที่สุดคือ md5 ยอมรับรหัสผ่านที่ว่างเปล่า เปลี่ยนเซิร์ฟเวอร์เพื่อปฏิเสธรหัสผ่านที่ว่างเปล่าในทุกกรณี (CVE-2017-7546)
- ตรวจสอบสิทธิ์ UPDATE ในเป้าหมายขนาดใหญ่ (Tom Lane, Michael Paquier)
- lo_put () ควรจะต้องมีสิทธิ์เหมือนกับ lowrite () แต่การตรวจสอบหายไปทำให้ผู้ใช้สามารถเปลี่ยนข้อมูลในวัตถุขนาดใหญ่ได้ (CVE-2017-7548)
- แก้ไขเอกสารเกี่ยวกับกระบวนการอัพเกรดเซิร์ฟเวอร์สแตนด์บายด้วย pg_upgrade (Bruce Momjian)
- เอกสารก่อนหน้านี้แนะนำให้ผู้ใช้เริ่ม / หยุดเซิร์ฟเวอร์หลักหลังจากใช้งาน pg_upgrade แต่ก่อนที่จะซิงค์เซิร์ฟเวอร์สแตนด์บาย ลำดับนี้ไม่ปลอดภัย
- แก้ไขการล็อกร่วมกันของชุดปรับปรุง tuple (Alvaro Herrera)
- ถ้าหลายเซสชันพร้อมกันจะล็อคสตริงการอัปเดต tuple ด้วยโหมดล็อกที่ไม่ทำให้เกิดปัญหาโดยใช้ snapshot เก่าและพวกเขาทั้งหมดประสบความสำเร็จ เงื่อนไข. สิ่งนี้มีผลเช่นการตรวจสอบคีย์ต่างประเทศล้มเหลวในการดูเอกสารที่มีอยู่จริง แต่มีการอัปเดตพร้อมกัน
- แก้ไขข้อมูลที่อาจเกิดความเสียหายเมื่อแช่แข็ง tuple ซึ่ง XMAX เป็น multixact กับสมาชิกที่น่าสนใจอย่างหนึ่ง (Teodor Sigaev)
- หลีกเลี่ยงการล้นเกินจำนวนเต็มและเกิดข้อผิดพลาดในการคัดแยกหน่วยความจำภายในมากกว่าหนึ่งพันล้านใบ (Sergey Koposov)
- ใน Windows ให้ลองสร้างกระบวนการอีกครั้งหากเราไม่สามารถสำรองช่วงที่อยู่สำหรับหน่วยความจำที่ใช้ร่วมกันของเราในกระบวนการใหม่ (Tom Lane, Amit Kapila)
- นี่คาดว่าจะแก้ไขปัญหาความล้มเหลวในการเปิดใช้งานขั้นตอนย่อยสำหรับเด็กซึ่งอาจเกิดจากการแทรกแซงจากผลิตภัณฑ์แอนตี้ไวรัส
- แก้ไขความเสียหายต่ำของความน่าจะเป็นของตารางแฮชกริดที่ใช้ร่วมกันใน Windows ที่สร้างขึ้น (Thomas Munro, Tom Lane)
- หลีกเลี่ยงการปิดกั้นการเชื่อมต่อ SSL อย่างปลอดภัยเช่นเดียวกับการตั้งค่าการเชื่อมต่อ (Michael Paquier)
- ป้องกันไม่ให้ส่งตั๋วเข้าชม SSL ไปยังลูกค้า (Tom Lane)
- การแก้ไขนี้จะช่วยป้องกันความล้มเหลวในการเชื่อมต่อใหม่ด้วยรหัส SSL ฝั่งไคลเอ็นต์ที่รับทราบข้อมูลตั๋ว
- แก้ไขโค้ดสำหรับตั้งค่า tcp_keepalives_idle บน Solaris (Tom Lane)
- แก้ไขตัวเก็บรวบรวมสถิติเพื่อให้เกียรติข้อความค้นหาที่ออกหลังจากปิดระบบ postmaster และรีสตาร์ททันที (Tom Lane)
- การสอบถามข้อมูลด้านสถิติที่ออกภายในครึ่งวินาทีของการปิดระบบมาสเตอร์โพสต์ก่อนหน้านี้ได้รับการละเลยอย่างมีประสิทธิภาพ
- ตรวจสอบว่าผู้รวบรวมสถิติได้รับขนาดบัฟเฟอร์อย่างน้อย 100KB (ทอมเลน)
- ช่วยลดความเสี่ยงในการลดข้อมูลสถิติบนแพลตฟอร์มรุ่นเก่าที่มีขนาดบัฟเฟอร์ต่ำกว่า
- แก้ไขการสร้างส่วน WAL ที่ไม่ถูกต้องเมื่อสแตนด์บายถูกโปรโมตหลังจากที่ประมวลผลระเบียน WIND () ของ XLOG_SWITCH แล้ว
- แก้ไข walsender เพื่อออกจากระบบทันทีเมื่อไคลเอนต์ขอปิดระบบ (Tom Lane)
- แก้ไขการจัดการ SIGHUP และ SIGUSR1 ในกระบวนการ Walsender (Petr Jelinek, Andres Freund)
- ป้องกันการตื่นตระหนกของ walsender ระหว่างจุดปิดเครื่อง (Andres Freund, Michael Paquier)
- แก้ไขขั้นตอนการรีสตาร์ทรีสตาร์ทที่ช้าโดยไม่จำเป็นเนื่องจากสภาวะการแข่งขันในไปรษณีย์ (Tom Lane)
- แก้ไขการรั่วไหลของการดำเนินการย่อยเล็ก ๆ ที่หกลงในดิสก์ในระหว่างการถอดรหัสตรรกะ (Andres Freund)
- ส่งผลให้ไฟล์ชั่วคราวใช้พื้นที่ดิสก์มากเกินไป
- ลดงานที่จำเป็นในการสร้างภาพรวมในระหว่างการสร้างสล็อตถอดรหัสตรรกะ (Andres Freund, Petr Jelinek)
- อัลกอริธึมก่อนหน้านี้มีราคาแพงมากเมื่อเทียบกับเซิร์ฟเวอร์ที่มีธุรกรรมเปิดอยู่มากมาย
- แก้ไขสภาวะการแข่งขันที่อาจสร้างความล่าช้าในการสร้างช่องตรรกะถอดรหัส (Andres Freund, Petr Jelinek) อย่างไม่มีกำหนด
- ลดค่าใช้จ่ายในการประมวลผลเหตุการณ์ invalidation ของ syscache (Tom Lane)
- การทำตรรกะนี้มีประโยชน์อย่างยิ่งสำหรับการถอดรหัสตรรกะซึ่งจะเรียกใช้การทำให้เป็นโมฆะแคชบ่อยๆ
- ลบฮิวริสติกที่ไม่ถูกต้องที่ใช้ในบางกรณีเพื่อประมาณความพร้อมในการเข้าร่วมตามการมีข้อ จำกัด ของคีย์ต่างประเทศ (David Rowley)
- ในบางกรณีที่มีข้อ จำกัด คีย์ต่างประเทศหลายคอลัมน์ แต่ไม่ตรงกับโครงสร้างการเข้าร่วมของข้อความแบบสอบถามนักวางแผนใช้การประมาณค่าที่เป็นไปในทางที่ไม่ได้ผลดีนัก ย้อนกลับกรณีดังกล่าวไปตามที่คาดคะเนก่อน 9.6
- แก้ไขกรณีที่ INSERT หรือ UPDATE กำหนดให้มากกว่าหนึ่งองค์ประกอบของคอลัมน์ที่มีประเภท domain-over-array (Tom Lane)
- อนุญาตให้ใช้ฟังก์ชันหน้าต่างในรายการย่อยที่อยู่ภายในอาร์กิวเมนต์ของฟังก์ชันรวม (ทอมเลน)
- ตรวจสอบว่าคำสั่ง CHECK OPTIONS ของดูถูกบังคับใช้อย่างถูกต้องเมื่อตารางอ้างอิงเป็นตารางต่างประเทศ (Etsuro Fujita)
- ก่อนหน้านี้การอัปเดตอาจถูกผลักไปยังเซิร์ฟเวอร์จากต่างประเทศทั้งหมด แต่จำเป็นต้องตรวจสอบเงื่อนไขมุมมองหากเป็นเช่นนั้น
- ย้ายอาร์เรย์ที่สร้างขึ้นโดยอัตโนมัติในระหว่างการแก้ไข ALTER ... RENAME (Vik Fearing)
- ก่อนหน้านี้เราจะเปลี่ยนชื่ออาร์เรย์อาร์เรย์ที่ขัดแย้งกันออกไปในระหว่างการสร้าง การแก้ไขนี้ขยายการทำงานเพื่อเปลี่ยนชื่อการทำงาน
- แก้ไขตัวชี้แบบ dangling ใน ALTER TABLE เมื่อมีข้อคิดเห็นเกี่ยวกับข้อ จำกัด ของตาราง (David Rowley)
- การใช้ความคิดเห็นกับข้อ จำกัด ที่สร้างใหม่อาจล้มเหลวด้วยข้อความแสดงข้อผิดพลาดแปลก ๆ หรือแม้แต่ความผิดพลาด
- ตรวจสอบให้แน่ใจว่า ALTER USER ... SET ยอมรับรูปแบบไวยากรณ์ทั้งหมดที่ ALTER ROLE ... SET ทำ (Peter Eisentraut)
- อนุญาตให้ข้อ จำกัด CHECK ของตารางในต่างประเทศเริ่มต้นไม่ถูกต้อง (Amit Langote)
- CREATE TABLE จะไม่ใช้ตัวระบุที่ไม่ถูกต้องสำหรับข้อ จำกัด CHECK โดยให้เหตุผลว่าตารางต้องว่างเปล่าเพื่อให้ข้อ จำกัด สามารถตรวจสอบได้ทันที แต่นี่เป็นข้อผิดพลาดในการสร้างตารางต่างประเทศซึ่งไม่มีเหตุผลใดที่จะสมมติว่าตารางอ้างอิงว่างเปล่าและแม้ว่าจะไม่ใช่ธุรกิจของเราก็ตามที่จะตัดสินว่าข้อ จำกัด ดังกล่าวสามารถปฏิบัติได้อย่างถูกต้องต่อไป ข้ามการเพิ่มประสิทธิภาพ "" สำหรับตารางต่างประเทศ
- อัปเดตข้อมูลการพึ่งพาอย่างถูกต้องเมื่อเปลี่ยนอาร์กิวเมนต์ของฟังก์ชัน I / O ประเภทข้อมูลหรือประเภทส่งคืนจากแบบทึบแสงเป็นประเภทที่ถูกต้อง (Heikki Linnakangas)
- CREATE TYPE ปรับปรุงฟังก์ชัน I / O ที่ประกาศในรูปแบบที่ล้าสมัยแล้ว แต่ลืมบันทึกการพึ่งพาประเภทซึ่งทำให้ DROP TYPE สามารถออกจากคำจำกัดความของฟังก์ชันที่หักหลังได้
- อนุญาตให้เกิดการทำงานแบบขนานในแผนแบบสอบถามเมื่อ COPY คัดลอกจากผลการค้นหา (Andres Freund)
- ลดการใช้หน่วยความจำเมื่อ ANALYZE ประมวลผลคอลัมน์ tsvector (Heikki Linnakangas)
- แก้ไขการสูญเสียความแม่นยำที่ไม่จำเป็นและการปัดเศษที่เลอะเทอะเมื่อคูณหรือแบ่งเงินตามจำนวนเต็มหรือลอยตัว (ทอมเลน)
- ตรวจสอบช่องว่างสำหรับฟังก์ชันที่แยกวิเคราะห์ตัวระบุเช่น regprocedurein () (Tom Lane)
- ขึ้นอยู่กับตำแหน่งที่ตั้งที่มีอยู่ฟังก์ชันเหล่านี้อาจตีความผิด ๆ ว่าเป็นส่วนของอักขระหลายรายการเป็นช่องว่าง
- ใช้ #define สัญลักษณ์ที่เกี่ยวข้องจาก Perl ขณะรวบรวม PL / Perl (Ashutosh Sharma, Tom Lane)
- การหลีกเลี่ยงปัญหาเรื่องความสามารถในการพกพาโดยทั่วไปจะแสดงให้เห็นว่า "จับมือ" ไม่ตรงกันในระหว่างโหลดไลบรารีเมื่อทำงานกับเวอร์ชัน Perl ล่าสุด
- ใน libpq ให้รีเซ็ตสถานะการตรวจสอบ GSS / SASL และ SSPI อย่างถูกต้องหลังจากพยายามเชื่อมต่อล้มเหลว (Michael Paquier)
- การไม่ทำเช่นนี้หมายความว่าเมื่อกลับจาก SSL ไปยังการเชื่อมต่อที่ไม่ใช่ SSL ความล้มเหลวของ GSS / SASL ในการพยายามใช้ SSL จะทำให้ความพยายามในการไม่ผ่าน SSL ล้มเหลว SSPI ไม่ล้มเหลว แต่หน่วยความจำรั่วออกมา
- ใน psql ให้แก้ไขความล้มเหลวเมื่อ COPY FROM STDIN สิ้นสุดลงด้วยสัญญาณ EOF ของแป้นพิมพ์จากนั้นจึงเรียกใช้ COPY จาก STDIN (Thomas Munro)
- พฤติกรรมที่ไม่เหมาะสมนี้เกิดขึ้นบนแพลตฟอร์มที่ได้รับ BSD (รวมถึง macOS) แต่ไม่ใช่ในส่วนอื่น ๆ
- แก้ไข pg_dump และ pg_restore เพื่อแสดงคำสั่ง REFRESH MATERIALIZED VIEW ล่าสุด (Tom Lane)
- ป้องกันข้อผิดพลาดระหว่างการถ่ายโอนข้อมูล / เรียกคืนเมื่อมุมมองที่เป็นร่างหมายถึงตารางที่เป็นของผู้ใช้รายอื่น
- ปรับปรุงการรายงานข้อผิดพลาดของ pg_dump / pg_restore ที่มีต้นกำเนิดใน zlib (Vladimir Kunschikov, Alvaro Herrera)
- แก้ไข pg_dump ด้วย --clean ตัวเลือกเพื่อลดทริกเกอร์เหตุการณ์ตามที่คาดไว้ (Tom Lane)
- ตอนนี้ยังกำหนดสิทธิ์การเป็นเจ้าของทริกเกอร์เหตุการณ์อย่างถูกต้อง ก่อนหน้านี้พวกเขาได้รับการคืนค่าให้เป็นเจ้าของโดย superuser ที่เรียกใช้สคริปต์การเรียกคืน
- แก้ไข pg_dump ด้วย --clean option เพื่อไม่ให้ล้มเหลวเมื่อไม่มี schema สาธารณะ (Stephen Frost)
- แก้ไข pg_dump เพื่อไม่ปล่อย SQL ที่ไม่ถูกต้องสำหรับคลาสผู้ดำเนินการที่ว่างเปล่า (Daniel Gustafsson)
- แก้ไขไฟล์ pg_dump ออกเป็น stdout บน Windows (Kuntal Ghosh)
- การถ่ายโอนข้อมูลข้อความล้วนแบบบีบอัดที่เขียนลงใน stdout จะมีข้อมูลที่เสียหายเนื่องจากไม่ได้ใส่ตัวอธิบายไฟล์ลงในโหมดไบนารี
- แก้ไข pg_get_ruledef () เพื่อพิมพ์ผลลัพธ์ที่ถูกต้องสำหรับกฎ ON SELECT ของมุมมองที่มีการเปลี่ยนชื่อคอลัมน์ (Tom Lane)
- ในบางกรณีมุม pg_dump ใช้ pg_get_ruledef () เพื่อถ่ายโอนข้อมูลพร็อพเพอร์ตี้เพื่อให้ข้อผิดพลาดนี้อาจส่งผลให้เกิดความผิดพลาดในการโหลด / โหลดใหม่
- แก้ไขการทุ่มตลาดการรวมภายนอกด้วยข้อ จำกัด ที่ว่างเปล่าเช่นผลของ NATURAL LEFT JOIN โดยไม่มีคอลัมน์ทั่วไป (Tom Lane)
- แก้ไขการทุ่มตลาดการแสดงออกของฟังก์ชันในส่วน FROM ในกรณีที่นิพจน์ไม่แบ่งแยกออกเป็นส่วนที่คล้ายกับการเรียกฟังก์ชัน (Tom Lane)
- แก้ไขผลลัพธ์ pg_basebackup เป็น stdout บน Windows (Haribabu Kommi)
- การเขียนข้อมูลสำรองที่ stdout จะมีข้อมูลที่เสียหายเนื่องจากไม่ได้ใส่ตัวอธิบายไฟล์ลงในโหมดไบนารี
- แก้ไข pg_rewind เพื่อจัดการไฟล์ที่มีขนาดไม่เกิน 2GB (Kuntal Ghosh, Michael Paquier)
- โดยปกติไฟล์ดังกล่าวจะไม่ปรากฏในไดเรกทอรีข้อมูล PostgreSQL แต่อาจมีอยู่ในบางกรณี
- แก้ไข pg_upgrade เพื่อให้แน่ใจว่าการบันทึก WAL สิ้นสุดไม่มี wal_level = minimum (Bruce Momjian)
- เงื่อนไขนี้สามารถป้องกันไม่ให้เซิร์ฟเวอร์สแตนด์บายรุ่นอัปเกรดสามารถเชื่อมต่อใหม่ได้
- แก้ไขการคำนวณ pg_xlogdump ของความยาวระเบียน WAL (Andres Freund)
- ใน postgres_fdw ให้ตั้งค่าการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลใหม่หลังจาก ALTER SERVER หรือ ALTER USER MAPPING commands (Kyotaro Horiguchi)
- การดำเนินการนี้จะทำให้แน่ใจว่าการเปลี่ยนแปลงตัวเลือกที่ส่งผลต่อพารามิเตอร์การเชื่อมต่อจะถูกใช้ทันที
- ใน postgres_fdw อนุญาตให้ยกเลิกคำสั่งควบคุมธุรกรรมแบบระยะไกล (Robert Haas, Rafia Sabih)
- การเปลี่ยนแปลงนี้ทำให้เราสามารถหลบหนีการรอเซิร์ฟเวอร์ระยะไกลที่ไม่ตอบสนองได้อย่างรวดเร็วในหลาย ๆ กรณีกว่าที่เคย
- เพิ่ม MAX_SYSCACHE_CALLBACKS เพื่อเพิ่มพื้นที่สำหรับส่วนขยาย (ทอมเลน)
- ควรใช้ -fPIC เสมอไม่ใช่ -fpic เมื่อสร้างห้องสมุดสาธารณะด้วย gcc (Tom Lane)
- นี้รองรับไลบรารีส่วนขยายที่มีขนาดใหญ่กว่าบนแพลตฟอร์มที่ทำให้เกิดความแตกต่าง
- ใน MSVC build จัดการกรณีที่ไลบรารี openssl ไม่อยู่ในไดเรกทอรีย่อยของ VC (Andrew Dunstan)
- ใน MSVC build ให้เพิ่มเส้นทางที่เหมาะสมสำหรับไฟล์ส่วนหัว libxml2 (Andrew Dunstan)
- การแก้ไขนี้จำเป็นต้องย้ายสิ่งต่างๆรอบ ๆ ในการติดตั้ง Windows มาตรฐานของ libxml2
- ใน MSVC สร้างรู้จักไลบรารี Tcl ที่ชื่อ tcl86.lib (Noah Misch)
- ใน MSVC จะสร้างรายละเอียดการตั้งค่า PROVE_FLAGS ในบรรทัดคำสั่งของ vcregress.pl (Andrew Dunstan)
มีอะไรใหม่ ในเวอร์ชัน 10.4 / 11 เบต้า 1:
มีอะไรใหม่ ในเวอร์ชัน:
มีอะไรใหม่ ในเวอร์ชัน 9.6.4:
ความคิดเห็นที่ไม่พบ