Το PostgreSQL είναι ένα ανοικτού κώδικα, ισχυρό, αξιόπιστο, σταθερό, έτοιμο για επιχείρηση και ελεύθερο σύστημα σχεσιακής βάσης δεδομένων αντικειμένων στο στυλ των έργων MariaDB, MySQL ή SQLite. Είναι ένας συμβατός διακομιστής / μηχανισμός βάσης δεδομένων ACID (Atomicity, Consistency, Isolation, Durability) που μπορεί να προσαρμοστεί σε μεγάλο βαθμό και περιλαμβάνει πολλά ελκυστικά χαρακτηριστικά, καθιστώντας μια μεγάλη αντικατάσταση για τους προαναφερθέντες μηχανισμούς βάσης δεδομένων.
Χαρακτηριστικά με μια ματιά
Βασικά χαρακτηριστικά περιλαμβάνουν υποστήριξη για ξένα κλειδιά, προβολές, συνδέσεις, ενεργοποιητές και αποθηκευμένες διαδικασίες, υποστήριξη για πολλαπλές γλώσσες, υποστήριξη για ένα ευρύ φάσμα SQL τύπων δεδομένων, συμπεριλαμβανομένων BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP και DATE.
Επιπλέον, το λογισμικό έρχεται με υποστήριξη για την αποθήκευση δυαδικών μεγάλων αντικειμένων, συμπεριλαμβανομένων όλων των ειδών αρχείων πολυμέσων (βίντεο, ήχου και φωτογραφιών), και παρέχει στους προγραμματιστές με αυτόματες διεπαφές προγραμματισμού για C, C ++, Python, Perl, Ruby, Java, .NET, Tcl και ODBC.
Μεταξύ άλλων ενδιαφερόντων χαρακτηριστικών, μπορούμε να αναφέρουμε τον MVCC (Multi-Version Concurrency Control), τους πίνακες, τις πολλαπλές κωδικοποιήσεις χαρακτήρων, την ανάκτηση σημείων στο χρόνο, έναν ώριμο βελτιστοποιητή και σχεδιαστή ερωτημάτων, την ασύγχρονη αναπαραγωγή, σημεία αποθήκευσης), hot backup, γράψτε μπροστά την καταγραφή για ανοχή σφάλματος, υποστήριξη για διεθνή σύνολα χαρακτήρων, καθώς και υποστήριξη 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 bit και 64 bit.
Τι νέο υπάρχει; strong> σε αυτήν την έκδοση:
- Αυτή η έκδοση διορθώνει δύο ζητήματα ασφάλειας. Αυτή η έκδοση επίσης επιλύει ζητήματα που εντοπίστηκαν με δείκτες VACUUM, GIN & hash, παράλληλο ερώτημα, λογική αναπαραγωγή και άλλα σφάλματα που αναφέρθηκαν τους τελευταίους τρεις μήνες. Όλοι οι χρήστες που χρησιμοποιούν τις σχετικές εκδόσεις της PostgreSQL θα πρέπει να ενημερώσουν το συντομότερο δυνατόν.
Τι νέο υπάρχει στην έκδοση 10.4 / 11 Beta 1:
- Αυτή η έκδοση διορθώνει δύο θέματα ασφάλειας. Αυτή η έκδοση επίσης επιλύει ζητήματα που εντοπίστηκαν με δείκτες VACUUM, GIN & hash, παράλληλο ερώτημα, λογική αναπαραγωγή και άλλα σφάλματα που αναφέρθηκαν τους τελευταίους τρεις μήνες. Όλοι οι χρήστες που χρησιμοποιούν τις σχετικές εκδόσεις της PostgreSQL θα πρέπει να ενημερώσουν το συντομότερο δυνατόν.
Τι νέο υπάρχει στην έκδοση:
- Περαιτέρω περιορίστε την προβολή των pg_user_mappings.umoptions, για να προστατεύσετε τους κωδικούς πρόσβασης που αποθηκεύονται ως επιλογές χαρτογράφησης χρήστη (Noah Misch)
- Η διόρθωση για το CVE-2017-7486 ήταν λανθασμένη: επέτρεψε σε έναν χρήστη να δει τις επιλογές στη χαρτογράφηση του χρήστη, ακόμα και αν δεν είχε άδεια χρήσης στον συνδεδεμένο ξένιο διακομιστή. Αυτές οι επιλογές ενδέχεται να περιλαμβάνουν έναν κωδικό πρόσβασης που είχε παρασχεθεί από τον ιδιοκτήτη του διακομιστή και όχι από τον ίδιο τον χρήστη. Εφόσον το info_schema.user_mapping_options δεν εμφανίζει τις επιλογές σε αυτές τις περιπτώσεις, το pg_user_mappings δεν πρέπει να είναι ούτε. (CVE-2017-7547)
- Από μόνη της, αυτή η ενημερωμένη έκδοση κώδικα θα καθορίσει μόνο τη συμπεριφορά σε νέες βάσεις δεδομένων initdb'd. Αν θέλετε να εφαρμόσετε αυτήν την αλλαγή σε μια υπάρχουσα βάση δεδομένων, θα πρέπει να κάνετε τα εξής:
- Επανεκκινήστε το postmaster αφού προσθέσετε το allow_system_table_mods = true στο postgresql.conf. (Στις εκδόσεις που υποστηρίζουν το ALTER SYSTEM, μπορείτε να το χρησιμοποιήσετε για να κάνετε την αλλαγή διαμόρφωσης, αλλά θα χρειαστεί ακόμα μια επανεκκίνηση.)
- Σε κάθε βάση δεδομένων του συμπλέγματος, εκτελέστε τις ακόλουθες εντολές ως υπερχρήστη:
- ΡΥΘΜΙΣΗ search_path = pg_catalog;
- Δημιουργία ή αντικατάσταση VIEW pg_user_mappings AS
- ΕΠΙΛΟΓΗ
- U.oid AS ως υγρό,
- S.oid AS srvid,
- Όνομα αρχείου AS srvname,
- U.umuser AS umuser,
- ΠΕΡΙΠΤΩΣΗ ΚΑΤΑ ΤΗΝ U.umuser = 0 THEN
- 'δημόσιο'
- ELSE
- Απάντηση
- ΤΕΛΟΣ ΩΣ όνομα χρήστη,
- ΠΕΡΙΠΤΩΣΗ ΠΟΤΕ (U.umuser 0 ΚΑΙ A.rolname = current_user )
- ΚΑΙ (pg_has_role (S.srvowner, 'USAGE'))
- Ή has_server_privilege (S.oid, 'USAGE'))))
- Ή (U.umuser = 0 ΚΑΙ pg_has_role (S.srvowner, 'USAGE'))
- Ή (ΕΠΙΛΟΓΗ rolsuper FROM από pg_authid WHERE ρόλος = τρέχουσα_συσκευή)
- ΑΥΤΟΜΑΤΑ ΕΛΑΤΤΩΜΑΤΑ
- ELSE NULL END ως umoptions
- ΑΠΟ το pg_user_mapping U
- ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid)
- Μην ξεχάσετε να συμπεριλάβετε τις βάσεις δεδομένων template0 και template1 ή το θέμα ευπάθειας θα εξακολουθεί να υπάρχει σε βάσεις δεδομένων που δημιουργείτε αργότερα. Για να διορθώσετε το πρότυπο0, θα χρειαστεί προσωρινά να το αποδεχτείτε. Στην PostgreSQL 9.5 και αργότερα, μπορείτε να χρησιμοποιήσετε το
- Πρότυπο ALTER DATABASE0 WITH ALLOW_CONNECTIONS true
- και, στη συνέχεια, μετά τον καθορισμό του template0, αναιρέστε το με
- Πρότυπο ALTER DATABASE0 με ALLOW_CONNECTIONS false
- Σε προηγούμενες εκδόσεις, χρησιμοποιήστε αντί
- ΕΝΗΜΕΡΩΣΗ pg_database SET datallowconn = true WHERE όνομα_δεδομένου = 'template0';
- ΕΝΗΜΕΡΩΣΗ pg_database SET datallowconn = false WHERE datname = 'template0';
- Τέλος, καταργήστε τη ρύθμιση διαμόρφωσης allow_system_table_mods και επανεκκινήστε πάλι τον υπεύθυνο για τη διαχείριση των μηνυμάτων.
- Να μην επιτρέπονται άδειοι κωδικοί πρόσβασης σε όλες τις μεθόδους ελέγχου ταυτότητας με βάση τον κωδικό πρόσβασης (Heikki Linnakangas)
- Το libpq αγνοεί τις προδιαγραφές κενών κωδικών πρόσβασης και δεν τις μεταδίδει στο διακομιστή. Έτσι, εάν ο κωδικός πρόσβασης ενός χρήστη έχει οριστεί στην κενή συμβολοσειρά, είναι αδύνατο να συνδεθείτε με αυτόν τον κωδικό πρόσβασης μέσω του psql ή άλλων πελατών που βασίζονται σε libpq. Επομένως, ένας διαχειριστής μπορεί να πιστεύει ότι η ρύθμιση του κωδικού πρόσβασης για κενό ισοδυναμεί με την απενεργοποίηση της σύνδεσης με τον κωδικό πρόσβασης. Ωστόσο, με έναν τροποποιημένο ή μη-πελάτη που βασίζεται σε libpq, η σύνδεση θα μπορούσε να είναι δυνατή, ανάλογα με τη μέθοδο ταυτοποίησης που έχει ρυθμιστεί. Συγκεκριμένα, η πιο συνηθισμένη μέθοδος, md5, δέχεται κενούς κωδικούς πρόσβασης. Αλλαγή του διακομιστή για απόρριψη κενών κωδικών πρόσβασης σε όλες τις περιπτώσεις. (CVE-2017-7546)
- Κάντε το lo_put () να ελέγξετε για το προνόμιο UPDATE στο μεγάλο αντικείμενο προορισμού (Tom Lane, Michael Paquier)
- lo_put () θα πρέπει σίγουρα να απαιτεί τα ίδια δικαιώματα με το lowrite (), αλλά ο έλεγχος λείπει, επιτρέποντας σε κάθε χρήστη να αλλάξει τα δεδομένα σε ένα μεγάλο αντικείμενο. (CVE-2017-7548)
- Διορθώστε την τεκμηρίωση σχετικά με τη διαδικασία αναβάθμισης διακομιστών αναμονής με pg_upgrade (Bruce Momjian)
- Η προηγούμενη τεκμηρίωση έδωσε εντολή στους χρήστες να ξεκινήσουν / σταματήσουν τον κύριο διακομιστή μετά την εκτέλεση pg_upgrade, αλλά πριν συγχρονίσουν τους διακομιστές αναμονής. Αυτή η ακολουθία δεν είναι ασφαλής.
- Επιδιόρθωση παράλληλου κλειδώματος αλυσίδων ενημέρωσης πλειάδων (Alvaro Herrera)
- Εάν αρκετές συνεδρίες κλειδίζουν ταυτόχρονα μια αλυσίδα ενημέρωσης πλειάδων με λειτουργίες κλειδώματος μη εμπιστοσύνης χρησιμοποιώντας ένα παλιό στιγμιότυπο και όλοι επιτυγχάνουν, ήταν δυνατό για μερικούς από αυτούς να αποτύχουν (και να συμπεράνουν ότι δεν υπάρχει ζωντανή έκδοση tuple) λόγω ενός αγώνα κατάσταση. Αυτό είχε συνέπειες όπως οι έλεγχοι ξένου κλειδιού που αποτυγχάνουν να δουν μια πλειάδα που υπάρχει σίγουρα αλλά ενημερώνεται ταυτόχρονα.
- Διορθώστε τη δυνητική καταστροφή των δεδομένων όταν παγώσετε μια πλειάδα της οποίας το XMAX είναι πολυπλεγμένο με ακριβώς ένα ακόμα ενδιαφέρον μέλος (Teodor Sigaev)
- Αποφύγετε την υπερχείλιση ακέραιων αριθμών και την επακόλουθη συντριβή κατά τη διαλογή περισσότερων από ένα δισεκατομμύριο πλειάδων στη μνήμη (Sergey Koposov)
- Στα Windows, δοκιμάστε ξανά τη δημιουργία διαδικασίας αν αποτύχουμε να κρατήσουμε το εύρος διευθύνσεων για την κοινόχρηστη μνήμη μας στη νέα διαδικασία (Tom Lane, Amit Kapila)
- Αυτό αναμένεται να διορθώσει σπάνιες αποτυχίες εκκίνησης παιδιού-διαδικασίας που πιθανώς οφείλονται σε παρεμβολές από προϊόντα προστασίας από ιούς.
- Διορθώστε τη διαφθορά χαμηλής πιθανότητας του κοινόχρηστου πίνακα hash κλειδαριάς με κλειδί στα Windows (Thomas Munro, Tom Lane)
- Αποφύγετε την καταγραφή καθαρού κλεισίματος μιας σύνδεσης SSL σαν να ήταν μια επαναφορά σύνδεσης (Michael Paquier)
- Αποτρέψτε την αποστολή εισιτηρίων SSL σε πελάτες (Tom Lane)
- Αυτή η επιδιόρθωση αποτρέπει αποτυχίες επανασύνδεσης με κωδικό SSL πελάτη-πελάτη.
- Διορθώστε τον κώδικα για τη ρύθμιση tcp_keepalives_idle στο Solaris (Tom Lane)
- Διορθώστε τον συλλέκτη στατιστικών στοιχείων για να λάβετε τα μηνύματα πληροφοριών που εκδόθηκαν αμέσως μετά το κλείσιμο του Postmaster και την άμεση επανεκκίνηση (Tom Lane)
- Οι ερωτήσεις στατιστικών στοιχείων που εκδόθηκαν μέσα σε μισό δευτερόλεπτο του προηγούμενου τερματισμού λειτουργίας του μεταγλωττιστή αγνοούνταν.
- Βεβαιωθείτε ότι το μέγεθος προσωρινής αποθήκευσης του συλλέκτη στατιστικών είναι τουλάχιστον 100KB (Tom Lane)
- Αυτό μειώνει τον κίνδυνο απώλειας δεδομένων στατιστικών στοιχείων σε παλαιότερες πλατφόρμες των οποίων το προεπιλεγμένο μέγεθος λήψης είναι μικρότερο από αυτό.
- Επιδιόρθωση πιθανής δημιουργίας ενός μη έγκυρου τμήματος WAL όταν προωθείται μια κατάσταση αναμονής αμέσως μετά την επεξεργασία μιας εγγραφής XLOG_SWITCH WAL (Andres Freund)
- Επιδιόρθωση του walsender για άμεση έξοδο όταν ο πελάτης θέλει τερματισμό (Tom Lane)
- Διορθώστε το χειρισμό SIGHUP και SIGUSR1 σε διαδικασίες Walsender (Petr Jelinek, Andres Freund)
- Αποτροπή πανικών που προκλήθηκαν από walsender κατά τη διάρκεια των σημείων ελέγχου τερματισμού λειτουργίας (Andres Freund, Michael Paquier)
- Διορθώστε τις περιττές αργές επανεκκινήσεις των διαδικασιών walreceiver λόγω της κατάστασης κούρσας στο postmaster (Tom Lane)
- Διορθώστε τη διαρροή μικρών υπομεταφορών που διατέθηκαν στο δίσκο κατά τη διάρκεια της λογικής αποκωδικοποίησης (Andres Freund)
- Αυτό οδήγησε σε προσωρινά αρχεία που καταναλώνουν υπερβολικό χώρο στο δίσκο.
- Μειώστε το έργο που απαιτείται για τη δημιουργία στιγμιότυπων κατά τη δημιουργία θυρίδων λογικής αποκωδικοποίησης (Andres Freund, Petr Jelinek)
- Ο προηγούμενος αλγόριθμος ήταν ανέφικτα ακριβός σε ένα διακομιστή με πολλές ανοικτές συναλλαγές.
- Στερεώστε την κατάσταση του αγώνα που θα μπορούσε να καθυστερήσει αόριστα τη δημιουργία θυρίδων λογικής αποκωδικοποίησης (Andres Freund, Petr Jelinek)
- Μειώστε τα γενικά έξοδα κατά την επεξεργασία των συμβάντων ανίχνευσης syscache (Tom Lane)
- Αυτό είναι ιδιαίτερα χρήσιμο για τη λογική αποκωδικοποίηση, η οποία ενεργοποιεί την συχνή ακύρωση της κρυφής μνήμης.
- Αφαιρέστε το λανθασμένο ευρετικό που χρησιμοποιείται σε ορισμένες περιπτώσεις για να υπολογίσετε την επιλεκτικότητα συμμετοχής με βάση την ύπαρξη περιορισμών ξένου κλειδιού (David Rowley)
- Σε ορισμένες περιπτώσεις όπου υπήρχε ένας περιορισμός ξένων κλειδιών πολλών κολώνων, αλλά δεν ταιριάζει ακριβώς με τη δομή σύνδεσης ενός ερωτήματος, ο σχεδιαστής χρησιμοποίησε μια ευρετική εκτίμηση που αποδεικνύεται ότι δεν λειτουργεί καθόλου. Επαναφέρετε τέτοιες περιπτώσεις στον τρόπο που εκτιμήθηκαν πριν από τις 9.6.
- Επιδιόρθωση περιπτώσεων στις οποίες ένα INSERT ή UPDATE αντιστοιχεί σε περισσότερα από ένα στοιχεία μιας στήλης που είναι τύπου top-array (Tom Lane)
- Να επιτρέπεται η χρήση λειτουργιών παραθύρου σε υπο-SELECT που βρίσκονται εντός των ορίων μιας συνθετικής συνάρτησης (Tom Lane)
- Βεβαιωθείτε ότι η ρήτρα CHECK OPTIONS της προβολής εφαρμόζεται σωστά όταν ο υποκείμενος πίνακας είναι ξένος πίνακας (Etsuro Fujita)
- Προηγουμένως, η ενημέρωση μπορεί να ωθηθεί εξ ολοκλήρου στον ξένιο εξυπηρετητή, αλλά η ανάγκη επαλήθευσης των όρων προβολής χάθηκε αν ναι.
- Μετακινήστε τους τύπους αυτοπαραγωγικών συρταριών εκτός λειτουργίας κατά τη διάρκεια του ALTER ... RENAME (Vik Fearing)
- Προηγουμένως, θα μετονομαζόμασταν ένας συγγραφικός τύπος συσχέτισης με αυτοματοποιημένη συστοιχία από τη διαδρομή κατά τη διάρκεια της CREATE. αυτή η διόρθωση επεκτείνει αυτήν τη συμπεριφορά στις εργασίες μετονομασίας.
- Επιδιορθώστε τον δείκτη που υπάρχει στο ALTER TABLE όταν υπάρχει ένα σχόλιο για έναν περιορισμό που ανήκει στον πίνακα (David Rowley)
- Η επανεφαρμογή του σχολίου στον ανασυγκροτημένο περιορισμό μπορεί να αποτύχει με ένα παράξενο μήνυμα σφάλματος ή ακόμα και με συντριβή.
- Βεβαιωθείτε ότι το ALTER USER ... SET δέχεται όλες τις παραλλαγές σύνταξης που ALTER ROLE ... SET (Peter Eisentraut)
- Αφήστε τους περιορισμούς CHECK του ξένου πίνακα να είναι αρχικά NOT VALID (Amit Langote)
- Ο CREATE TABLE σιωπά τους προδιαγραφείς NOT VALID για τους περιορισμούς CHECK, θεωρώντας ότι ο πίνακας πρέπει να είναι άδειος ώστε ο περιορισμός να μπορεί να επικυρωθεί αμέσως. Αλλά αυτό είναι λάθος για το CREATE FOREIGN TABLE, όπου δεν υπάρχει λόγος να υποθέσουμε ότι ο υποκείμενος πίνακας είναι άδειος και ακόμα κι αν δεν είναι δική μας δουλειά να αποφασίσουμε ότι ο περιορισμός μπορεί να θεωρηθεί έγκυρος. Περάστε αυτήν την "βελτιστοποίηση" για ξένους πίνακες.
- Ενημερώστε σωστά τις πληροφορίες εξάρτησης όταν αλλάζετε ένα όρισμα ή τύπος επιστροφής της γραμμής δεδομένων τύπου I / O από αδιαφανή προς τον σωστό τύπο (Heikki Linnakangas)
- Δημιουργία επικαιροποιημένων λειτουργιών Οι λειτουργίες I / O που δηλώνονται σε αυτό το μακρόχρονο στυλ, αλλά ξεχάσατε να καταγράψετε μια εξάρτηση από τον τύπο, επιτρέποντας σε ένα επόμενο DROP TYPE να αφήσει πίσω τους ορισμούς των σπασμένων λειτουργιών.
- Επιτρέψτε τον παραλληλισμό στο σχέδιο ερωτήματος όταν αντιγράφει το αντίγραφο COPY από το αποτέλεσμα ενός ερωτήματος (Andres Freund)
- Μειώστε τη χρήση της μνήμης όταν η ΑΝΑΛΥΣΗ επεξεργάζεται μια στήλη tsvector (Heikki Linnakangas)
- Διορθώστε την περιττή απώλεια ακρίβειας και τη στρογγυλευμένη στρογγυλοποίηση όταν πολλαπλασιάζετε ή διαιρείτε τις αξίες χρημάτων με ακεραίους ή επιπλέουν (Tom Lane)
- Σφίξτε τους ελέγχους για κενά σε λειτουργίες που αναλύουν τα αναγνωριστικά, όπως το 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 FROM 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)
- Επίσης, εκχωρεί σωστά την ιδιοκτησία των ενεργοποιητών συμβάντων. πριν, αποκαταστάθηκαν ως ιδιοκτησία του υπερ-χρήστη που τρέχει το script αποκατάστασης.
- Διορθώστε το pg_dump με την επιλογή --clean να μην αποτύχει όταν δεν υπάρχει το δημόσιο σχήμα (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 () για να προβάλλει τις προβολές, έτσι ώστε αυτό το σφάλμα να μπορεί να οδηγήσει σε αποτυχίες dump / reload.
- Σταθερή απόθεση εξωτερικών συνδέσμων με κενά εμπόδια, όπως το αποτέλεσμα ΦΥΣΙΚΗΣ ΑΡΙΣΤΕΙΑΣ ΣΥΝΔΕΣΗΣ χωρίς κοινές στήλες (Tom Lane)
- Διορθώστε το ντάμπινγκ των εκφράσεων λειτουργιών στη ρήτρα FROM σε περιπτώσεις όπου η έκφραση δεν απομακρύνεται σε κάτι που μοιάζει με κλήση λειτουργίας (Tom Lane)
- Διορθώστε την έξοδο pg_basebackup στο stdout στα Windows (Haribabu Kommi)
- Ένα αντίγραφο ασφαλείας που γράφτηκε στο stdout θα περιέχει διεφθαρμένα δεδομένα εξαιτίας της αποτυχίας να τεθεί ο περιγραφέας του αρχείου σε δυαδική λειτουργία.
- Διορθώστε το pg_rewind να χειρίζεται σωστά αρχεία που υπερβαίνουν τα 2 GB (Kuntal Ghosh, Michael Paquier)
- Συνήθως, αυτά τα αρχεία δεν θα εμφανίζονται στους καταλόγους δεδομένων PostgreSQL, αλλά σε ορισμένες περιπτώσεις θα μπορούσαν να υπάρχουν.
- Διορθώστε pg_upgrade για να διασφαλίσετε ότι η καταληκτική εγγραφή WAL δεν έχει wal_level = ελάχιστο (Bruce Momjian)
- Αυτή η συνθήκη μπορεί να αποτρέψει την επανασύνδεση των αναβαθμισμένων διακομιστών αναμονής.
- Διορθώστε τον υπολογισμό του pg_xlogdump για το μήκος καταγραφής WAL (Andres Freund)
- Στο postgres_fdw, αποκαταστήστε τις συνδέσεις σε απομακρυσμένους διακομιστές μετά από εντολές ALTER SERVER ή ALTER USER MAPPING
- Με αυτόν τον τρόπο διασφαλίζεται ότι οι αλλαγές επιλογών που επηρεάζουν τις παραμέτρους σύνδεσης θα εφαρμοστούν άμεσα.
- Στο postgres_fdw, επιτρέψτε την ακύρωση εντολών απομακρυσμένης ελέγχου συναλλαγών (Robert Haas, Rafia Sabih)
- Αυτή η αλλαγή μας επιτρέπει να ξεφύγουμε γρήγορα από μια αναμονή για έναν απομακρυσμένο απομακρυσμένο διακομιστή σε πολλές περισσότερες περιπτώσεις από ό, τι στο παρελθόν.
- Αυξήστε το MAX_SYSCACHE_CALLBACKS για να δώσετε περισσότερο χώρο για επεκτάσεις (Tom Lane)
- Χρησιμοποιείτε πάντα -fPIC, όχι -fpic, όταν δημιουργείτε κοινές βιβλιοθήκες με gcc (Tom Lane)
- Αυτό υποστηρίζει μεγαλύτερες βιβλιοθήκες επέκτασης σε πλατφόρμες όπου κάνει τη διαφορά.
- Κατασκευάζει το MSVC, χειρίζεται την περίπτωση όπου η βιβλιοθήκη openssl δεν βρίσκεται μέσα σε έναν υποκατάλογο VC (Andrew Dunstan)
- Στην έκδοση MSVC, προσθέστε την κατάλληλη διαδρομή για τα αρχεία κεφαλίδας libxml2 (Andrew Dunstan)
- Αυτό διορθώνει μια πρώην ανάγκη να μετακινηθούν τα πράγματα σε κανονικές εγκαταστάσεις των Windows του libxml2.
- Στη βάση δεδομένων MSVC, αναγνωρίστε μια βιβλιοθήκη Tcl που ονομάζεται tcl86.lib (Noah Misch)
- Το MSVC δημιουργεί τις τιμές PROVE_FLAGS στη γραμμή εντολών του vcregress.pl (Andrew Dunstan)
Το
Τι νέο υπάρχει στην έκδοση 9.6.4:
- Περαιτέρω περιορίστε την προβολή των pg_user_mappings.umoptions, για να προστατεύσετε τους κωδικούς πρόσβασης που αποθηκεύονται ως επιλογές χαρτογράφησης χρήστη (Noah Misch)
- Η διόρθωση για το CVE-2017-7486 ήταν λανθασμένη: επέτρεψε σε έναν χρήστη να δει τις επιλογές στη χαρτογράφηση του χρήστη, ακόμα και αν δεν είχε άδεια χρήσης στον συνδεδεμένο ξένιο διακομιστή. Αυτές οι επιλογές ενδέχεται να περιλαμβάνουν έναν κωδικό πρόσβασης που είχε παρασχεθεί από τον ιδιοκτήτη του διακομιστή και όχι από τον ίδιο τον χρήστη. Εφόσον το info_schema.user_mapping_options δεν εμφανίζει τις επιλογές σε αυτές τις περιπτώσεις, το pg_user_mappings δεν πρέπει να είναι ούτε. (CVE-2017-7547)
- Από μόνη της, αυτή η ενημερωμένη έκδοση κώδικα θα καθορίσει μόνο τη συμπεριφορά σε νέες βάσεις δεδομένων initdb'd. Αν θέλετε να εφαρμόσετε αυτήν την αλλαγή σε μια υπάρχουσα βάση δεδομένων, θα πρέπει να κάνετε τα εξής:
- Επανεκκινήστε το postmaster αφού προσθέσετε το allow_system_table_mods = true στο postgresql.conf. (Στις εκδόσεις που υποστηρίζουν το ALTER SYSTEM, μπορείτε να το χρησιμοποιήσετε για να κάνετε την αλλαγή διαμόρφωσης, αλλά θα χρειαστεί ακόμα μια επανεκκίνηση.)
- Σε κάθε βάση δεδομένων του συμπλέγματος, εκτελέστε τις ακόλουθες εντολές ως υπερχρήστη:
- ΡΥΘΜΙΣΗ search_path = pg_catalog;
- Δημιουργία ή αντικατάσταση VIEW pg_user_mappings AS
- ΕΠΙΛΟΓΗ
- U.oid AS ως υγρό,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- ΠΕΡΙΠΤΩΣΗ ΚΑΤΑ ΤΗΝ U.umuser = 0 THEN
- 'δημόσιο'
- ELSE
- Απάντηση
- ΤΕΛΟΣ ΩΣ όνομα χρήστη,
- ΠΕΡΙΠΤΩΣΗ ΠΟΤΕ (U.umuser 0 ΚΑΙ A.rolname = current_user )
- ΚΑΙ (pg_has_role (S.srvowner, 'USAGE'))
- Ή has_server_privilege (S.oid, 'USAGE'))))
- Ή (U.umuser = 0 ΚΑΙ pg_has_role (S.srvowner, 'USAGE'))
- Ή (ΕΠΙΛΟΓΗ rolsuper FROM από pg_authid WHERE ρόλος = τρέχουσα_συσκευή)
- ΑΥΤΟΜΑΤΑ ΕΛΑΤΤΩΜΑΤΑ
- ELSE NULL END ως umoptions
- ΑΠΟ το pg_user_mapping U
- ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid)
- Μην ξεχάσετε να συμπεριλάβετε τις βάσεις δεδομένων template0 και template1 ή το θέμα ευπάθειας θα εξακολουθεί να υπάρχει σε βάσεις δεδομένων που δημιουργείτε αργότερα. Για να διορθώσετε το πρότυπο0, θα χρειαστεί προσωρινά να το αποδεχτείτε. Στην PostgreSQL 9.5 και αργότερα, μπορείτε να χρησιμοποιήσετε το
- Πρότυπο ALTER DATABASE0 WITH ALLOW_CONNECTIONS true
- και, στη συνέχεια, μετά τον καθορισμό του template0, αναιρέστε το με
- Πρότυπο ALTER DATABASE0 με ALLOW_CONNECTIONS false
- Σε προηγούμενες εκδόσεις, χρησιμοποιήστε αντί
- ΕΝΗΜΕΡΩΣΗ pg_database SET datallowconn = true WHERE όνομα_δεδομένου = 'template0';
- ΕΝΗΜΕΡΩΣΗ pg_database SET datallowconn = false WHERE datname = 'template0';
- Τέλος, καταργήστε τη ρύθμιση διαμόρφωσης allow_system_table_mods και επανεκκινήστε πάλι τον υπεύθυνο για τη διαχείριση των μηνυμάτων.
- Να μην επιτρέπονται άδειοι κωδικοί πρόσβασης σε όλες τις μεθόδους ελέγχου ταυτότητας με βάση τον κωδικό πρόσβασης (Heikki Linnakangas)
- Το libpq αγνοεί τις προδιαγραφές κενών κωδικών πρόσβασης και δεν τις μεταδίδει στο διακομιστή. Έτσι, εάν ο κωδικός πρόσβασης ενός χρήστη έχει οριστεί στην κενή συμβολοσειρά, είναι αδύνατο να συνδεθείτε με αυτόν τον κωδικό πρόσβασης μέσω του psql ή άλλων πελατών που βασίζονται σε libpq. Επομένως, ένας διαχειριστής μπορεί να πιστεύει ότι η ρύθμιση του κωδικού πρόσβασης για κενό ισοδυναμεί με την απενεργοποίηση της σύνδεσης με τον κωδικό πρόσβασης. Ωστόσο, με έναν τροποποιημένο ή μη-πελάτη που βασίζεται σε libpq, η σύνδεση θα μπορούσε να είναι δυνατή, ανάλογα με τη μέθοδο ταυτοποίησης που έχει ρυθμιστεί. Συγκεκριμένα, η πιο συνηθισμένη μέθοδος, md5, δέχεται κενούς κωδικούς πρόσβασης. Αλλαγή του διακομιστή για απόρριψη κενών κωδικών πρόσβασης σε όλες τις περιπτώσεις. (CVE-2017-7546)
- Κάντε το lo_put () να ελέγξετε για το προνόμιο UPDATE στο μεγάλο αντικείμενο προορισμού (Tom Lane, Michael Paquier)
- lo_put () θα πρέπει σίγουρα να απαιτεί τα ίδια δικαιώματα με το lowrite (), αλλά ο έλεγχος λείπει, επιτρέποντας σε κάθε χρήστη να αλλάξει τα δεδομένα σε ένα μεγάλο αντικείμενο. (CVE-2017-7548)
- Διορθώστε την τεκμηρίωση σχετικά με τη διαδικασία αναβάθμισης διακομιστών αναμονής με pg_upgrade (Bruce Momjian)
- Η προηγούμενη τεκμηρίωση έδωσε εντολή στους χρήστες να ξεκινήσουν / σταματήσουν τον κύριο διακομιστή μετά την εκτέλεση pg_upgrade, αλλά πριν συγχρονίσουν τους διακομιστές αναμονής. Αυτή η ακολουθία δεν είναι ασφαλής.
- Επιδιόρθωση παράλληλου κλειδώματος αλυσίδων ενημέρωσης πλειάδων (Alvaro Herrera)
- Εάν αρκετές συνεδρίες κλειδίζουν ταυτόχρονα μια αλυσίδα ενημέρωσης πλειάδων με λειτουργίες κλειδώματος μη εμπιστοσύνης χρησιμοποιώντας ένα παλιό στιγμιότυπο και όλοι επιτυγχάνουν, ήταν δυνατό για μερικούς από αυτούς να αποτύχουν (και να συμπεράνουν ότι δεν υπάρχει ζωντανή έκδοση tuple) λόγω ενός αγώνα κατάσταση. Αυτό είχε συνέπειες όπως οι έλεγχοι ξένου κλειδιού που αποτυγχάνουν να δουν μια πλειάδα που υπάρχει σίγουρα αλλά ενημερώνεται ταυτόχρονα.
- Διορθώστε τη δυνητική καταστροφή των δεδομένων όταν παγώσετε μια πλειάδα της οποίας το XMAX είναι πολυπλεγμένο με ακριβώς ένα ακόμα ενδιαφέρον μέλος (Teodor Sigaev)
- Αποφύγετε την υπερχείλιση ακέραιων αριθμών και την επακόλουθη συντριβή κατά τη διαλογή περισσότερων από ένα δισεκατομμύριο πλειάδων στη μνήμη (Sergey Koposov)
- Στα Windows, δοκιμάστε ξανά τη δημιουργία διαδικασίας αν αποτύχουμε να κρατήσουμε το εύρος διευθύνσεων για την κοινόχρηστη μνήμη μας στη νέα διαδικασία (Tom Lane, Amit Kapila)
- Αυτό αναμένεται να διορθώσει σπάνιες αποτυχίες εκκίνησης παιδιού-διαδικασίας που πιθανώς οφείλονται σε παρεμβολές από προϊόντα προστασίας από ιούς.
- Διορθώστε τη διαφθορά χαμηλής πιθανότητας του κοινόχρηστου πίνακα hash κλειδαριάς με κλειδί στα Windows (Thomas Munro, Tom Lane)
- Αποφύγετε την καταγραφή καθαρού κλεισίματος μιας σύνδεσης SSL σαν να ήταν μια επαναφορά σύνδεσης (Michael Paquier)
- Αποτρέψτε την αποστολή εισιτηρίων SSL σε πελάτες (Tom Lane)
- Αυτή η επιδιόρθωση αποτρέπει αποτυχίες επανασύνδεσης με κωδικό SSL πελάτη-πελάτη.
- Διορθώστε τον κώδικα για τη ρύθμιση tcp_keepalives_idle στο Solaris (Tom Lane)
- Διορθώστε τον συλλέκτη στατιστικών στοιχείων για να λάβετε τα μηνύματα πληροφοριών που εκδόθηκαν αμέσως μετά το κλείσιμο του Postmaster και την άμεση επανεκκίνηση (Tom Lane)
- Οι ερωτήσεις στατιστικών στοιχείων που εκδόθηκαν μέσα σε μισό δευτερόλεπτο του προηγούμενου τερματισμού λειτουργίας του μεταγλωττιστή αγνοούνταν.
- Βεβαιωθείτε ότι το μέγεθος προσωρινής αποθήκευσης του συλλέκτη στατιστικών είναι τουλάχιστον 100KB (Tom Lane)
- Αυτό μειώνει τον κίνδυνο απώλειας δεδομένων στατιστικών στοιχείων σε παλαιότερες πλατφόρμες των οποίων το προεπιλεγμένο μέγεθος λήψης είναι μικρότερο από αυτό.
- Επιδιόρθωση πιθανής δημιουργίας ενός μη έγκυρου τμήματος WAL όταν προωθείται μια κατάσταση αναμονής αμέσως μετά την επεξεργασία μιας εγγραφής XLOG_SWITCH WAL (Andres Freund)
- Επιδιόρθωση του walsender για άμεση έξοδο όταν ο πελάτης θέλει τερματισμό (Tom Lane)
- Διορθώστε το χειρισμό SIGHUP και SIGUSR1 σε διαδικασίες Walsender (Petr Jelinek, Andres Freund)
- Αποτροπή πανικών που προκλήθηκαν από walsender κατά τη διάρκεια των σημείων ελέγχου τερματισμού λειτουργίας (Andres Freund, Michael Paquier)
- Διορθώστε τις περιττές αργές επανεκκινήσεις των διαδικασιών walreceiver λόγω της κατάστασης κούρσας στο postmaster (Tom Lane)
- Διορθώστε τη διαρροή μικρών υπομεταφορών που διατέθηκαν στο δίσκο κατά τη διάρκεια της λογικής αποκωδικοποίησης (Andres Freund)
- Αυτό οδήγησε σε προσωρινά αρχεία που καταναλώνουν υπερβολικό χώρο στο δίσκο.
- Μειώστε το έργο που απαιτείται για τη δημιουργία στιγμιότυπων κατά τη δημιουργία θυρίδων λογικής αποκωδικοποίησης (Andres Freund, Petr Jelinek)
- Ο προηγούμενος αλγόριθμος ήταν ανέφικτα ακριβός σε ένα διακομιστή με πολλές ανοικτές συναλλαγές.
- Στερεώστε την κατάσταση του αγώνα που θα μπορούσε να καθυστερήσει αόριστα τη δημιουργία θυρίδων λογικής αποκωδικοποίησης (Andres Freund, Petr Jelinek)
- Μειώστε τα γενικά έξοδα κατά την επεξεργασία των συμβάντων ανίχνευσης syscache (Tom Lane)
- Αυτό είναι ιδιαίτερα χρήσιμο για τη λογική αποκωδικοποίηση, η οποία ενεργοποιεί την συχνή ακύρωση της κρυφής μνήμης.
- Αφαιρέστε το λανθασμένο ευρετικό που χρησιμοποιείται σε ορισμένες περιπτώσεις για να υπολογίσετε την επιλεκτικότητα συμμετοχής με βάση την ύπαρξη περιορισμών ξένου κλειδιού (David Rowley)
- Σε ορισμένες περιπτώσεις όπου υπήρχε ένας περιορισμός ξένων κλειδιών πολλών κολώνων, αλλά δεν ταιριάζει ακριβώς με τη δομή σύνδεσης ενός ερωτήματος, ο σχεδιαστής χρησιμοποίησε μια ευρετική εκτίμηση που αποδεικνύεται ότι δεν λειτουργεί καθόλου. Επαναφέρετε τέτοιες περιπτώσεις στον τρόπο που εκτιμήθηκαν πριν από τις 9.6.
- Επιδιόρθωση περιπτώσεων στις οποίες ένα INSERT ή UPDATE αντιστοιχεί σε περισσότερα από ένα στοιχεία μιας στήλης που είναι τύπου top-array (Tom Lane)
- Να επιτρέπεται η χρήση λειτουργιών παραθύρου σε υπο-SELECT που βρίσκονται εντός των ορίων μιας συνθετικής συνάρτησης (Tom Lane)
- Βεβαιωθείτε ότι η ρήτρα CHECK OPTIONS της προβολής εφαρμόζεται σωστά όταν ο υποκείμενος πίνακας είναι ξένος πίνακας (Etsuro Fujita)
- Προηγουμένως, η ενημέρωση μπορεί να ωθηθεί εξ ολοκλήρου στον ξένιο εξυπηρετητή, αλλά η ανάγκη επαλήθευσης των όρων προβολής χάθηκε αν ναι.
- Μετακινήστε τους τύπους αυτοπαραγωγικών συρταριών εκτός λειτουργίας κατά τη διάρκεια του ALTER ... RENAME (Vik Fearing)
- Προηγουμένως, θα μετονομαζόμασταν ένας συγγραφικός τύπος συσχέτισης με αυτοματοποιημένη συστοιχία από τη διαδρομή κατά τη διάρκεια της CREATE. αυτή η διόρθωση επεκτείνει αυτήν τη συμπεριφορά στις εργασίες μετονομασίας.
- Επιδιορθώστε τον δείκτη που υπάρχει στο ALTER TABLE όταν υπάρχει ένα σχόλιο για έναν περιορισμό που ανήκει στον πίνακα (David Rowley)
- Η επανεφαρμογή του σχολίου στον ανασυγκροτημένο περιορισμό μπορεί να αποτύχει με ένα παράξενο μήνυμα σφάλματος ή ακόμα και με συντριβή.
- Βεβαιωθείτε ότι το ALTER USER ... SET δέχεται όλες τις παραλλαγές σύνταξης που ALTER ROLE ... SET (Peter Eisentraut)
- Αφήστε τους περιορισμούς CHECK του ξένου πίνακα να είναι αρχικά NOT VALID (Amit Langote)
- Ο CREATE TABLE σιωπά τους προδιαγραφείς NOT VALID για τους περιορισμούς CHECK, θεωρώντας ότι ο πίνακας πρέπει να είναι άδειος ώστε ο περιορισμός να μπορεί να επικυρωθεί αμέσως. Αλλά αυτό είναι λάθος για το CREATE FOREIGN TABLE, όπου δεν υπάρχει λόγος να υποθέσουμε ότι ο υποκείμενος πίνακας είναι άδειος και ακόμα κι αν δεν είναι δική μας δουλειά να αποφασίσουμε ότι ο περιορισμός μπορεί να θεωρηθεί έγκυρος. Περάστε αυτή τη "βελτιστοποίηση" για ξένους πίνακες.
- Ενημερώστε σωστά τις πληροφορίες εξάρτησης όταν αλλάζετε ένα όρισμα ή τύπος επιστροφής της γραμμής δεδομένων τύπου I / O από αδιαφανή προς τον σωστό τύπο (Heikki Linnakangas)
- Δημιουργία επικαιροποιημένων λειτουργιών Οι λειτουργίες I / O που δηλώνονται σε αυτό το μακρόχρονο στυλ, αλλά ξεχάσατε να καταγράψετε μια εξάρτηση από τον τύπο, επιτρέποντας σε ένα επόμενο DROP TYPE να αφήσει πίσω τους ορισμούς των σπασμένων λειτουργιών.
- Επιτρέψτε τον παραλληλισμό στο σχέδιο ερωτήματος όταν αντιγράφει το αντίγραφο COPY από το αποτέλεσμα ενός ερωτήματος (Andres Freund)
- Μειώστε τη χρήση της μνήμης όταν η ΑΝΑΛΥΣΗ επεξεργάζεται μια στήλη tsvector (Heikki Linnakangas)
- Διορθώστε την περιττή απώλεια ακρίβειας και τη στρογγυλευμένη στρογγυλοποίηση όταν πολλαπλασιάζετε ή διαιρείτε τις αξίες χρημάτων με ακεραίους ή επιπλέουν (Tom Lane)
- Σφίξτε τους ελέγχους για κενά σε λειτουργίες που αναλύουν τα αναγνωριστικά, όπως το 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 FROM 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)
- Επίσης, εκχωρεί σωστά την ιδιοκτησία των ενεργοποιητών συμβάντων. πριν, αποκαταστάθηκαν ως ιδιοκτησία του υπερ-χρήστη που τρέχει το script αποκατάστασης.
- Διορθώστε το pg_dump με την επιλογή --clean να μην αποτύχει όταν δεν υπάρχει το δημόσιο σχήμα (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 () για να προβάλλει τις προβολές, έτσι ώστε αυτό το σφάλμα να μπορεί να οδηγήσει σε αποτυχίες dump / reload.
- Σταθερή απόθεση εξωτερικών συνδέσμων με κενά εμπόδια, όπως το αποτέλεσμα ΦΥΣΙΚΗΣ ΑΡΙΣΤΕΙΑΣ ΣΥΝΔΕΣΗΣ χωρίς κοινές στήλες (Tom Lane)
- Διορθώστε το ντάμπινγκ των εκφράσεων λειτουργιών στη ρήτρα FROM σε περιπτώσεις όπου η έκφραση δεν απομακρύνεται σε κάτι που μοιάζει με κλήση λειτουργίας (Tom Lane)
- Διορθώστε την έξοδο pg_basebackup στο stdout στα Windows (Haribabu Kommi)
- Ένα αντίγραφο ασφαλείας που γράφτηκε στο stdout θα περιέχει διεφθαρμένα δεδομένα εξαιτίας της αποτυχίας να τεθεί ο περιγραφέας του αρχείου σε δυαδική λειτουργία.
- Διορθώστε το pg_rewind να χειρίζεται σωστά αρχεία που υπερβαίνουν τα 2 GB (Kuntal Ghosh, Michael Paquier)
- Συνήθως, αυτά τα αρχεία δεν θα εμφανίζονται στους καταλόγους δεδομένων PostgreSQL, αλλά σε ορισμένες περιπτώσεις θα μπορούσαν να υπάρχουν.
- Διορθώστε pg_upgrade για να διασφαλίσετε ότι η καταληκτική εγγραφή WAL δεν έχει wal_level = ελάχιστο (Bruce Momjian)
- Αυτή η συνθήκη μπορεί να αποτρέψει την επανασύνδεση των αναβαθμισμένων διακομιστών αναμονής.
- Διορθώστε τον υπολογισμό του pg_xlogdump για το μήκος καταγραφής WAL (Andres Freund)
- Στο postgres_fdw, αποκαταστήστε τις συνδέσεις σε απομακρυσμένους διακομιστές μετά από εντολές ALTER SERVER ή ALTER USER MAPPING
- Με αυτόν τον τρόπο διασφαλίζεται ότι οι αλλαγές επιλογών που επηρεάζουν τις παραμέτρους σύνδεσης θα εφαρμοστούν αμέσως.
- Στο postgres_fdw, επιτρέψτε την ακύρωση εντολών απομακρυσμένης ελέγχου συναλλαγών (Robert Haas, Rafia Sabih)
- Αυτή η αλλαγή μας επιτρέπει να ξεφύγουμε γρήγορα από μια αναμονή για έναν απομακρυσμένο απομακρυσμένο διακομιστή σε πολλές περισσότερες περιπτώσεις από ό, τι στο παρελθόν.
- Αυξήστε το MAX_SYSCACHE_CALLBACKS για να δώσετε περισσότερο χώρο για επεκτάσεις (Tom Lane)
- Χρησιμοποιείτε πάντα -fPIC, όχι -fpic, όταν δημιουργείτε κοινές βιβλιοθήκες με gcc (Tom Lane)
- Αυτό υποστηρίζει μεγαλύτερες βιβλιοθήκες επέκτασης σε πλατφόρμες όπου κάνει τη διαφορά.
- Κατασκευάζει το MSVC, χειρίζεται την περίπτωση όπου η βιβλιοθήκη openssl δεν βρίσκεται μέσα σε έναν υποκατάλογο VC (Andrew Dunstan)
- Στην έκδοση MSVC, προσθέστε την κατάλληλη διαδρομή για τα αρχεία κεφαλίδας libxml2 (Andrew Dunstan)
- Αυτό διορθώνει μια πρώην ανάγκη να μετακινηθούν τα πράγματα σε κανονικές εγκαταστάσεις των Windows του libxml2.
- Στη βάση δεδομένων MSVC, αναγνωρίστε μια βιβλιοθήκη Tcl που ονομάζεται tcl86.lib (Noah Misch)
- Το MSVC δημιουργεί τις τιμές PROVE_FLAGS στη γραμμή εντολών του vcregress.pl (Andrew Dunstan)
Το
Τα σχόλια δεν βρέθηκε