PostgreSQL

Software screenshot:
PostgreSQL
Dettagli del software:
Versione: 10.5 / 11 Beta 3 Aggiornato
Data di caricamento: 16 Aug 18
Licenza: Libero
Popolarità: 29

Rating: 1.5/5 (Total Votes: 2)

PostgreSQL è un sistema di database object-relational open source, potente, affidabile, stabile, pronto per l'uso e gratuito nello stile dei progetti MariaDB, MySQL o SQLite. È un server / motore di database conforme ACID (Atomicity, Consistency, Isolation, Durability) che può essere altamente personalizzato e include numerose funzioni interessanti, sostituendo in modo eccellente i suddetti motori di database.


Caratteristiche a colpo d'occhio

Le funzionalità principali includono il supporto per chiavi esterne, visualizzazioni, join, trigger e stored procedure, supporto per più lingue, supporto per una vasta gamma di tipi di dati SQL, inclusi BOOLEAN, CHAR, INTEGER, NUMERIC, VARCHAR, INTERVAL, TIMESTAMP e DATA.

Inoltre, il software viene fornito con il supporto per la memorizzazione di oggetti binari di grandi dimensioni, inclusi tutti i tipi di file multimediali (video, audio e foto) e fornisce agli sviluppatori interfacce di programmazione native per C, C ++, Python, Perl, Ruby, Lingue di programmazione Java, .Net, Tcl e ODBC.

Tra le altre interessanti funzionalità, citiamo MVCC (Multi-Version Concurrency Control), tablespace, codifiche di caratteri multibyte, recovery point-time, un ottimizzatore di query maturo e pianificatore, replicazione asincrona, backup online, transazioni nidificate (popolarmente conosciute come punti di salvataggio), backup a caldo, registrazione in anticipo per tolleranza d'errore, supporto per set di caratteri internazionali e supporto Unicode.


PostgreSQL in numeri

Al momento, il server di database PostgreSQL supporta dimensioni illimitate per i database, 32 TB dovrebbe essere la dimensione massima per le tabelle, 1,6 TB per riga, 1 GB per campo, righe illimitate per tabella, supporta tra 250 e 1600 colonne per tabella , a seconda dei tipi di colonna e supporta indici illimitati per tabella.


Sistemi operativi supportati

PostgreSQL è stato testato con successo su tutti i sistemi operativi tradizionali, tra cui GNU / Linux, BSD, Solaris, HP-UX, AIX, SGI IRIX, Solaris, Tru64, Mac OS X e Microsoft Windows. PostgreSQL è disponibile per il download come archivio sorgente universale, oltre a pacchetti binari precompilati per molte distribuzioni Linux, supportando architetture sia a 32 bit che a 64 bit.

Novità forte> in questa versione:

  • Questa versione corregge due problemi di sicurezza. Questa versione risolve anche i problemi riscontrati con VACUUM, GIN e indici hash, query parallele, replica logica e altri bug segnalati negli ultimi tre mesi. Tutti gli utenti che utilizzano le versioni interessate di PostgreSQL devono aggiornarsi il prima possibile.

Novità della versione 10.4 / 11 Beta 1:

  • Questa versione risolve due problemi di sicurezza. Questa versione risolve anche i problemi riscontrati con VACUUM, GIN e indici hash, query parallele, replica logica e altri bug segnalati negli ultimi tre mesi. Tutti gli utenti che utilizzano le versioni interessate di PostgreSQL devono aggiornarsi il prima possibile.

Novità della versione nella versione:

  • Limita ulteriormente la visibilità di pg_user_mappings.umoptions, per proteggere le password archiviate come opzioni di mappatura utente (Noah Misch)
  • La correzione per CVE-2017-7486 non era corretta: consentiva a un utente di visualizzare le opzioni nel suo mapping utente, anche se non disponeva dell'autorizzazione USAGE sul server esterno associato. Tali opzioni potrebbero includere una password che è stata fornita dal proprietario del server piuttosto che dall'utente stesso. Poiché information_schema.user_mapping_options non mostra le opzioni in questi casi, pg_user_mappings non dovrebbe neanche. (CVE-2017-7547)
  • Di per sé, questa patch risolverà solo il comportamento nei nuovi database initdb'd. Se si desidera applicare questa modifica in un database esistente, è necessario effettuare quanto segue:
  • Riavvia il postmaster dopo aver aggiunto allow_system_table_mods = true a postgresql.conf. (Nelle versioni che supportano ALTER SYSTEM, puoi usarlo per modificare la configurazione, ma avrai comunque bisogno di un riavvio.)
  • In ogni database del cluster, esegui i seguenti comandi come superutente:
  • SET search_path = pg_catalog;
  • CREA O SOSTITUISCI VISUALIZZA pg_user_mappings AS
  • Seleziona
  • U.oid AS umid,
  • S.oid AS srvid,
  • S.srvname AS srvname,
  • U.umuser AS umuser,
  • CASO QUANDO U.umuser = 0 THEN
  • 'pubblico'
  • ELSE
  • A.rolname
  • FINE COME nome utente,
  • CASO QUANDO (U.umuser 0 AND A.rolname = current_user
  • AND (pg_has_role (S.srvowner, "USAGE")
  • OR ha_server_privilege (S.oid, 'USAGE')))
  • OR (U.umuser = 0 AND pg_has_role (S.srvowner, 'USAGE'))
  • OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
  • ALLORA U.opzioni
  • ELSE NULL END COME umoptions
  • FROM pg_user_mapping U
  • LEFT JOIN pg_authid A ON (A.oid = U.umuser) UNISCITI
  • pg_foreign_server S ON (U.umserver = S.oid);
  • Non dimenticare di includere i database template0 e template1, o la vulnerabilità continuerà a esistere nei database che creerai in seguito. Per correggere template0, dovrai temporaneamente accettare le connessioni. In PostgreSQL 9.5 e versioni successive, puoi usare
  • ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
  • e quindi dopo aver risolto template0, annullalo con
  • ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
  • Nelle versioni precedenti, invece, usa
  • UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
  • UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
  • Infine, rimuovi l'impostazione di configurazione allow_system_table_mods e riavvia nuovamente il postmaster.
  • Non consentire password vuote in tutti i metodi di autenticazione basati su password (Heikki Linnakangas)
  • libpq ignora le specifiche della password vuota e non le trasmette al server. Quindi, se la password di un utente è stata impostata sulla stringa vuota, è impossibile accedere con quella password tramite psql o altri client basati su libpq. Un amministratore potrebbe pertanto ritenere che l'impostazione della password su vuoto sia equivalente alla disattivazione dell'accesso alla password. Tuttavia, con un client modificato o non basato su libpq, è possibile effettuare il login, a seconda del metodo di autenticazione configurato. In particolare il metodo più comune, md5, ha accettato le password vuote. Cambia il server per rifiutare le password vuote in tutti i casi. (CVE-2017-7546)
  • Fai lo_put () verifica il privilegio di UPDATE sull'oggetto grande di destinazione (Tom Lane, Michael Paquier)
  • lo_put () dovrebbe sicuramente richiedere le stesse autorizzazioni di lowrite (), ma mancava il controllo, consentendo a qualsiasi utente di modificare i dati in un oggetto di grandi dimensioni. (CVE-2017-7548)
  • Correggere la documentazione sulla procedura per l'aggiornamento dei server in standby con pg_upgrade (Bruce Momjian)
  • La precedente documentazione istruiva gli utenti ad avviare / arrestare il server primario dopo aver eseguito pg_upgrade ma prima di sincronizzare i server in standby. Questa sequenza non è sicura.
  • Correzione del blocco simultaneo delle catene di aggiornamento di tuple (Alvaro Herrera)
  • Se più sessioni bloccano contemporaneamente una catena di aggiornamento di tupla con modalità di blocco non conflittuale utilizzando una vecchia istantanea, e tutte riescono, è stato possibile per alcuni di loro fallire (e concludere che non esiste una versione tupla in diretta) a causa di una gara condizione. Ciò ha avuto conseguenze come i controlli con chiave esterna che non riescono a vedere una tupla che esiste sicuramente ma che viene aggiornata contemporaneamente.
  • Correzione del potenziale danneggiamento dei dati durante il congelamento di una tupla di cui XMAX è un multixact con esattamente un membro ancora interessante (Teodor Sigaev)
  • Evita l'overflow dei numeri interi e il conseguente arresto anomalo durante l'ordinamento di più di un miliardo di tuple in memoria (Sergey Koposov)
  • In Windows, riprova la creazione del processo se non riusciamo a riservare l'intervallo di indirizzi per la nostra memoria condivisa nel nuovo processo (Tom Lane, Amit Kapila)
  • Si prevede che questo problema risolva gli errori non frequenti di avvio del processo figlio probabilmente dovuti all'interferenza dei prodotti antivirus.
  • Correzione del danneggiamento a bassa probabilità della tabella hash del blocco del predicato condiviso in build di Windows (Thomas Munro, Tom Lane)
  • Evita di registrare la chiusura pulita di una connessione SSL come se fosse una reimpostazione della connessione (Michael Paquier)
  • Impedisci l'invio di ticket di sessione SSL ai client (Tom Lane)
  • Questa correzione impedisce errori di riconnessione con il codice SSL lato client compatibile con ticket.
  • Correzione del codice per l'impostazione di tcp_keepalives_idle su Solaris (Tom Lane)
  • Correggi il collector delle statistiche per onorare i messaggi di richiesta emessi subito dopo l'arresto di un postmaster e il riavvio immediato (Tom Lane)
  • Le richieste di statistiche emesse entro mezzo secondo dal precedente spegnimento postmaster sono state effettivamente ignorate.
  • Assicurati che le dimensioni del buffer di ricezione del raccoglitore di statistiche siano almeno 100 KB (Tom Lane)
  • Ciò riduce il rischio di perdere dati statistici su piattaforme precedenti la cui dimensione di buffer di ricezione predefinita è inferiore a quella.
  • Correzione della possibile creazione di un segmento WAL non valido quando viene promosso lo standby subito dopo aver elaborato un record WAL XLOG_SWITCH (Andres Freund)
  • Correggi walsender per uscire immediatamente quando il client richiede l'arresto (Tom Lane)
  • Correzione di SIGHUP e SIGUSR1 nei processi di walsender (Petr Jelinek, Andres Freund)
  • Previene il panico innescato da walsender durante i checkpoint di arresto (Andres Freund, Michael Paquier)
  • Correzione di riavvii inutili dei processi di walreceiver a causa delle condizioni di gara nel postmaster (Tom Lane)
  • Correzione del leakage di piccole subtransactions riversate sul disco durante la decodifica logica (Andres Freund)
  • Ciò ha portato a file temporanei che consumano spazio eccessivo su disco.
  • Riduci il lavoro necessario per creare istantanee durante la creazione di slot per la decodifica logica (Andres Freund, Petr Jelinek)
  • L'algoritmo precedente era estremamente costoso su un server con molte transazioni aperte.
  • Correzione della condizione di competizione che potrebbe ritardare indefinitamente la creazione di slot di decodifica logica (Andres Freund, Petr Jelinek)
  • Riduce il sovraccarico nell'elaborazione degli eventi di invalidazione syscache (Tom Lane)
  • Questo è particolarmente utile per la decodifica logica, che attiva l'invalidazione della cache frequente.
  • Rimuovi l'euristica errata utilizzata in alcuni casi per stimare la selettività dei join in base alla presenza di vincoli di chiave esterna (David Rowley)
  • In alcuni casi in cui esisteva un vincolo di chiave esterna a più colonne ma non corrispondeva esattamente alla struttura di join di una query, il pianificatore utilizzava un'euristica di stima che risulta non funzionare affatto. Riporta tali casi al modo in cui sono stati stimati prima del 9.6.
  • Correzione dei casi in cui un INSERT o UPDATE assegna a più di un elemento di una colonna che è di tipo domain-over-array (Tom Lane)
  • Consenti alle funzioni della finestra di essere utilizzate in sotto-SELECTs che rientrano negli argomenti di una funzione di aggregazione (Tom Lane)
  • Assicurarsi che la clausola CHECK OPTIONS di una vista sia applicata correttamente quando la tabella sottostante è una tabella esterna (Etsuro Fujita)
  • In precedenza, l'aggiornamento poteva essere trasferito interamente al server esterno, ma in tal caso mancava la necessità di verificare le condizioni di visualizzazione.
  • Sposta i tipi di array generati automaticamente durante ALTER ... RENAME (Vik Fearing)
  • In precedenza, rinominiamo un tipo di array autogenerato in conflitto fuori strada durante CREATE; questa correzione estende tale comportamento alle operazioni di ridenominazione.
  • Correggi il puntatore penzolante in ALTER TABLE quando c'è un commento su un vincolo appartenente al tavolo (David Rowley)
  • Riapplicare il commento al vincolo ricostruito potrebbe fallire con uno strano messaggio di errore, o persino crash.
  • Assicurarsi che ALTER USER ... SET accetti tutte le varianti di sintassi che ALTER ROLE ... SET esegue (Peter Eisentraut)
  • Consenti ai vincoli CHECK di una tabella esterna di essere inizialmente NON VALIDO (Amit Langote)
  • CREATE TABLE colloca silenziosamente gli identificatori NON VALIDI per i vincoli CHECK, ragionando sul fatto che la tabella deve essere vuota in modo che il vincolo possa essere convalidato immediatamente. Ma questo è sbagliato per CREATE FOREIGN TABLE, dove non c'è motivo di supporre che la tabella sottostante sia vuota, e anche se non è compito nostro decidere che il vincolo possa essere trattato come valido in futuro. Salta questa & quot; ottimizzazione & quot; per i tavoli stranieri.
  • Aggiorna correttamente le informazioni sulle dipendenze quando si modifica un argomento di tipo I / O del tipo di dati o il tipo restituito da opaco al tipo corretto (Heikki Linnakangas)
  • CREATE TYPE aggiorna le funzioni di I / O dichiarate in questo stile obsoleto, ma ha dimenticato di registrare una dipendenza dal tipo, consentendo a un successivo DROP TYPE di lasciare dietro le definizioni delle funzioni interrotte.
  • Consenti il ​​parallelismo nel piano di query quando COPY copia dal risultato di una query (Andres Freund)
  • Riduci l'utilizzo della memoria quando ANALYZE elabora una colonna tsvector (Heikki Linnakangas)
  • Correzione della perdita di precisione non necessaria e arrotondamento errato quando si moltiplicano o dividono i valori monetari per numeri interi o float (Tom Lane)
  • Stringa i controlli per gli spazi bianchi nelle funzioni che analizzano gli identificatori, come regprocedurein () (Tom Lane)
  • A seconda delle impostazioni locali prevalenti, queste funzioni potrebbero interpretare erroneamente frammenti di caratteri multibyte come spazi bianchi.
  • Utilizza i simboli #define pertinenti di Perl durante la compilazione di PL / Perl (Ashutosh Sharma, Tom Lane)
  • Questo evita problemi di portabilità, che si manifestano tipicamente come & quot; handshake & quot; mancata corrispondenza durante il caricamento della libreria, quando si lavora con versioni recenti di Perl.
  • In libpq, ripristinare correttamente lo stato di autenticazione GSS / SASL e SSPI dopo un tentativo di connessione fallito (Michael Paquier)
  • Il mancato svolgimento di questa operazione significava che quando si ricorreva da SSL a connessioni non SSL, un errore GSS / SASL nel tentativo SSL avrebbe sempre causato il fallimento del tentativo non SSL. SSPI non ha fallito, ma ha perso memoria.
  • In psql, correggere l'errore quando COPY FROM STDIN viene terminato con un segnale EOF della tastiera e poi viene tentato un altro COPY FROM STDIN (Thomas Munro)
  • Questo comportamento scorretto è stato osservato su piattaforme derivate da BSD (incluso macOS), ma non sulla maggior parte degli altri.
  • Correggere pg_dump e pg_restore per emettere i comandi REFRESH MATERIALIZED VIEW last (Tom Lane)
  • Questo impedisce errori durante il dump / restore quando una vista materializzata fa riferimento a tabelle di proprietà di un utente diverso.
  • Migliora la segnalazione di pg_dump / pg_restore delle condizioni di errore originate da zlib (Vladimir Kunschikov, Alvaro Herrera)
  • Correggere pg_dump con l'opzione --clean per rilasciare i trigger di evento come previsto (Tom Lane)
  • Inoltre ora assegna correttamente la proprietà dei trigger di evento; prima, sono stati ripristinati come proprietà del superutente che esegue lo script di ripristino.
  • Correggere pg_dump con l'opzione --clean per non fallire quando lo schema pubblico non esiste (Stephen Frost)
  • Correggere pg_dump per non emettere un codice SQL non valido per una classe operatore vuota (Daniel Gustafsson)
  • Correzione dell'output di pg_dump su stdout su Windows (Kuntal Ghosh)
  • Un dump di testo normale compresso scritto su stdout conterrà dati corrotti a causa di errori nel mettere il descrittore di file in modalità binaria.
  • Correggere pg_get_ruledef () per stampare l'output corretto per la regola ON SELECT di una vista le cui colonne sono state rinominate (Tom Lane)
  • In alcuni casi d'angolo, pg_dump si basa su pg_get_ruledef () per eseguire il dump delle viste, in modo che questo errore possa causare errori di dump / reload.
  • Correzione del dumping dei join esterni con vincoli vuoti, come il risultato di un NATURAL LEFT JOIN senza colonne comuni (Tom Lane)
  • Correzione del dumping delle espressioni di funzione nella clausola FROM nei casi in cui l'espressione non si estenda in qualcosa che assomiglia a una chiamata di funzione (Tom Lane)
  • Correzione dell'output di pg_basebackup su stdout su Windows (Haribabu Kommi)
  • Un backup scritto su stdout conterrà dati corrotti a causa di errori nel mettere il descrittore di file in modalità binaria.
  • Correzione di pg_rewind per gestire correttamente i file che superano i 2 GB (Kuntal Ghosh, Michael Paquier)
  • Normalmente questi file non appariranno nelle directory dei dati di PostgreSQL, ma potrebbero essere presenti in alcuni casi.
  • Correggere pg_upgrade per assicurare che il record WAL finale non abbia wal_level = minimum (Bruce Momjian)
  • Questa condizione potrebbe impedire la riconnessione dei server standby aggiornati.
  • Correggere il calcolo di pg_xlogdump della lunghezza del record WAL (Andres Freund)
  • In postgres_fdw, ristabilire le connessioni ai server remoti dopo i comandi ALTER SERVER o ALTER USER MAPPING (Kyotaro Horiguchi)
  • Questo assicura che le modifiche alle opzioni che influiscono sui parametri di connessione vengano applicate prontamente.
  • In postgres_fdw, consentire l'annullamento dei comandi di controllo delle transazioni remote (Robert Haas, Rafia Sabih)
  • Questa modifica ci consente di evitare rapidamente un'attesa per un server remoto che non risponde in molti più casi rispetto al passato.
  • Aumenta MAX_SYSCACHE_CALLBACKS per fornire più spazio per le estensioni (Tom Lane)
  • Usa sempre -fPIC, non -fpic, quando crei librerie condivise con gcc (Tom Lane)
  • Supporta ampie librerie di estensioni su piattaforme in cui fa la differenza.
  • Nelle build MSVC, gestisci il caso in cui la libreria openssl non si trova all'interno di una sottodirectory VC (Andrew Dunstan)
  • Nelle build MSVC, aggiungi il percorso di inclusione appropriato per i file di intestazione libxml2 (Andrew Dunstan)
  • Questo risolve un precedente bisogno di spostare le cose nelle installazioni standard di Windows di libxml2.
  • Nelle build MSVC, riconoscere una libreria Tcl che si chiama tcl86.lib (Noah Misch)
  • Nelle build MSVC, onora le impostazioni di PROVE_FLAGS sulla riga di comando di vcregress.pl (Andrew Dunstan)

Novità nella versione 9.6.4:

  • Limita ulteriormente la visibilità di pg_user_mappings.umoptions, per proteggere le password archiviate come opzioni di mappatura degli utenti (Noah Misch)
  • La correzione per CVE-2017-7486 non era corretta: consentiva a un utente di visualizzare le opzioni nel suo mapping utente, anche se non disponeva dell'autorizzazione USAGE sul server esterno associato. Tali opzioni potrebbero includere una password che è stata fornita dal proprietario del server piuttosto che dall'utente stesso. Poiché information_schema.user_mapping_options non mostra le opzioni in questi casi, pg_user_mappings non dovrebbe neanche. (CVE-2017-7547)
  • Di per sé, questa patch risolverà solo il comportamento nei nuovi database initdb'd. Se si desidera applicare questa modifica in un database esistente, è necessario effettuare quanto segue:
  • Riavvia il postmaster dopo aver aggiunto allow_system_table_mods = true a postgresql.conf. (Nelle versioni che supportano ALTER SYSTEM, puoi usarlo per modificare la configurazione, ma avrai comunque bisogno di un riavvio.)
  • In ogni database del cluster, esegui i seguenti comandi come superutente:
  • SET search_path = pg_catalog;
  • CREA O SOSTITUISCI VISUALIZZA pg_user_mappings AS
  • Seleziona
  • U.oid AS umid,
  • S.oid AS srvid,
  • S.srvname AS srvname,
  • U.umuser AS umuser,
  • CASO QUANDO U.umuser = 0 THEN
  • 'pubblico'
  • ELSE
  • A.rolname
  • FINE COME nome utente,
  • CASO QUANDO (U.umuser 0 AND A.rolname = current_user
  • AND (pg_has_role (S.srvowner, "USAGE")
  • OR ha_server_privilege (S.oid, 'USAGE')))
  • OR (U.umuser = 0 AND pg_has_role (S.srvowner, 'USAGE'))
  • OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
  • ALLORA U.opzioni
  • ELSE NULL END COME umoptions
  • FROM pg_user_mapping U
  • LEFT JOIN pg_authid A ON (A.oid = U.umuser) UNISCITI
  • pg_foreign_server S ON (U.umserver = S.oid);
  • Non dimenticare di includere i database template0 e template1, o la vulnerabilità continuerà a esistere nei database che creerai in seguito. Per correggere template0, dovrai temporaneamente accettare le connessioni. In PostgreSQL 9.5 e versioni successive, puoi usare
  • ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
  • e quindi dopo aver risolto template0, annullalo con
  • ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
  • Nelle versioni precedenti, invece, usa
  • UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
  • UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
  • Infine, rimuovi l'impostazione di configurazione allow_system_table_mods e riavvia nuovamente il postmaster.
  • Non consentire password vuote in tutti i metodi di autenticazione basati su password (Heikki Linnakangas)
  • libpq ignora le specifiche della password vuota e non le trasmette al server. Quindi, se la password di un utente è stata impostata sulla stringa vuota, è impossibile accedere con quella password tramite psql o altri client basati su libpq. Un amministratore potrebbe pertanto ritenere che l'impostazione della password su vuoto sia equivalente alla disattivazione dell'accesso alla password. Tuttavia, con un client modificato o non basato su libpq, è possibile effettuare il login, a seconda del metodo di autenticazione configurato. In particolare il metodo più comune, md5, ha accettato le password vuote. Cambia il server per rifiutare le password vuote in tutti i casi. (CVE-2017-7546)
  • Fai lo_put () verifica il privilegio di UPDATE sull'oggetto grande di destinazione (Tom Lane, Michael Paquier)
  • lo_put () dovrebbe sicuramente richiedere le stesse autorizzazioni di lowrite (), ma mancava il controllo, consentendo a qualsiasi utente di modificare i dati in un oggetto di grandi dimensioni. (CVE-2017-7548)
  • Correggere la documentazione sulla procedura per l'aggiornamento dei server in standby con pg_upgrade (Bruce Momjian)
  • La precedente documentazione istruiva gli utenti ad avviare / arrestare il server primario dopo aver eseguito pg_upgrade ma prima di sincronizzare i server in standby. Questa sequenza non è sicura.
  • Correzione del blocco simultaneo delle catene di aggiornamento di tuple (Alvaro Herrera)
  • Se più sessioni bloccano contemporaneamente una catena di aggiornamento di tupla con modalità di blocco non conflittuale utilizzando una vecchia istantanea, e tutte riescono, è stato possibile per alcuni di loro fallire (e concludere che non esiste una versione tupla in diretta) a causa di una gara condizione. Ciò ha avuto conseguenze come i controlli con chiave esterna che non riescono a vedere una tupla che esiste sicuramente ma che viene aggiornata contemporaneamente.
  • Correzione del potenziale danneggiamento dei dati durante il congelamento di una tupla di cui XMAX è un multixact con esattamente un membro ancora interessante (Teodor Sigaev)
  • Evita l'overflow dei numeri interi e il conseguente arresto anomalo durante l'ordinamento di più di un miliardo di tuple in memoria (Sergey Koposov)
  • In Windows, riprova la creazione del processo se non riusciamo a riservare l'intervallo di indirizzi per la nostra memoria condivisa nel nuovo processo (Tom Lane, Amit Kapila)
  • Si prevede che questo problema risolva gli errori non frequenti di avvio del processo figlio probabilmente dovuti all'interferenza dei prodotti antivirus.
  • Correzione del danneggiamento a bassa probabilità della tabella hash del blocco del predicato condiviso in build di Windows (Thomas Munro, Tom Lane)
  • Evita di registrare la chiusura pulita di una connessione SSL come se fosse una reimpostazione della connessione (Michael Paquier)
  • Impedisci l'invio di ticket di sessione SSL ai client (Tom Lane)
  • Questa correzione impedisce errori di riconnessione con il codice SSL lato client compatibile con ticket.
  • Correzione del codice per l'impostazione di tcp_keepalives_idle su Solaris (Tom Lane)
  • Correggi il collector delle statistiche per onorare i messaggi di richiesta emessi subito dopo l'arresto di un postmaster e il riavvio immediato (Tom Lane)
  • Le richieste di statistiche emesse entro mezzo secondo dal precedente spegnimento postmaster sono state effettivamente ignorate.
  • Assicurati che le dimensioni del buffer di ricezione del raccoglitore di statistiche siano almeno 100 KB (Tom Lane)
  • Ciò riduce il rischio di perdere dati statistici su piattaforme precedenti la cui dimensione di buffer di ricezione predefinita è inferiore a quella.
  • Correzione della possibile creazione di un segmento WAL non valido quando viene promosso lo standby subito dopo aver elaborato un record WAL XLOG_SWITCH (Andres Freund)
  • Correggi walsender per uscire immediatamente quando il client richiede l'arresto (Tom Lane)
  • Correzione di SIGHUP e SIGUSR1 nei processi di walsender (Petr Jelinek, Andres Freund)
  • Previene il panico innescato da walsender durante i checkpoint di arresto (Andres Freund, Michael Paquier)
  • Correzione di riavvii inutili dei processi di walreceiver a causa delle condizioni di gara nel postmaster (Tom Lane)
  • Correzione del leakage di piccole subtransactions riversate sul disco durante la decodifica logica (Andres Freund)
  • Ciò ha portato a file temporanei che consumano spazio eccessivo su disco.
  • Riduci il lavoro necessario per creare istantanee durante la creazione di slot per la decodifica logica (Andres Freund, Petr Jelinek)
  • L'algoritmo precedente era estremamente costoso su un server con molte transazioni aperte.
  • Correzione della condizione di competizione che potrebbe ritardare indefinitamente la creazione di slot di decodifica logica (Andres Freund, Petr Jelinek)
  • Riduce il sovraccarico nell'elaborazione degli eventi di invalidazione syscache (Tom Lane)
  • Questo è particolarmente utile per la decodifica logica, che attiva l'invalidazione della cache frequente.
  • Rimuovi l'euristica errata utilizzata in alcuni casi per stimare la selettività dei join in base alla presenza di vincoli di chiave esterna (David Rowley)
  • In alcuni casi in cui esisteva un vincolo di chiave esterna a più colonne ma non corrispondeva esattamente alla struttura di join di una query, il pianificatore utilizzava un'euristica di stima che risulta non funzionare affatto. Riporta tali casi al modo in cui sono stati stimati prima del 9.6.
  • Correzione dei casi in cui un INSERT o UPDATE assegna a più di un elemento di una colonna che è di tipo domain-over-array (Tom Lane)
  • Consenti alle funzioni della finestra di essere utilizzate in sotto-SELECTs che rientrano negli argomenti di una funzione di aggregazione (Tom Lane)
  • Assicurarsi che la clausola CHECK OPTIONS di una vista sia applicata correttamente quando la tabella sottostante è una tabella esterna (Etsuro Fujita)
  • In precedenza, l'aggiornamento poteva essere trasferito interamente al server esterno, ma in tal caso mancava la necessità di verificare le condizioni di visualizzazione.
  • Sposta i tipi di array generati automaticamente durante ALTER ... RENAME (Vik Fearing)
  • In precedenza, rinominiamo un tipo di array autogenerato in conflitto fuori strada durante CREATE; questa correzione estende tale comportamento alle operazioni di ridenominazione.
  • Correggi il puntatore penzolante in ALTER TABLE quando c'è un commento su un vincolo appartenente al tavolo (David Rowley)
  • Riapplicare il commento al vincolo ricostruito potrebbe fallire con uno strano messaggio di errore, o persino crash.
  • Assicurarsi che ALTER USER ... SET accetti tutte le varianti di sintassi che ALTER ROLE ... SET esegue (Peter Eisentraut)
  • Consenti ai vincoli CHECK di una tabella esterna di essere inizialmente NON VALIDO (Amit Langote)
  • CREATE TABLE colloca silenziosamente gli identificatori NON VALIDI per i vincoli CHECK, ragionando sul fatto che la tabella deve essere vuota in modo che il vincolo possa essere convalidato immediatamente. Ma questo è sbagliato per CREATE FOREIGN TABLE, dove non c'è motivo di supporre che la tabella sottostante sia vuota, e anche se non è compito nostro decidere che il vincolo possa essere trattato come valido in futuro. Salta questa "ottimizzazione" per le tabelle straniere.
  • Aggiorna correttamente le informazioni sulle dipendenze quando si modifica un argomento di tipo I / O del tipo di dati o il tipo restituito da opaco al tipo corretto (Heikki Linnakangas)
  • CREATE TYPE aggiorna le funzioni di I / O dichiarate in questo stile obsoleto, ma ha dimenticato di registrare una dipendenza dal tipo, consentendo a un successivo DROP TYPE di lasciare dietro le definizioni delle funzioni interrotte.
  • Consenti il ​​parallelismo nel piano di query quando COPY copia dal risultato di una query (Andres Freund)
  • Riduci l'utilizzo della memoria quando ANALYZE elabora una colonna tsvector (Heikki Linnakangas)
  • Correzione della perdita di precisione non necessaria e arrotondamento errato quando si moltiplicano o dividono i valori monetari per numeri interi o float (Tom Lane)
  • Stringa i controlli per gli spazi bianchi nelle funzioni che analizzano gli identificatori, come regprocedurein () (Tom Lane)
  • A seconda delle impostazioni locali prevalenti, queste funzioni potrebbero interpretare erroneamente frammenti di caratteri multibyte come spazi bianchi.
  • Utilizza i simboli #define pertinenti di Perl durante la compilazione di PL / Perl (Ashutosh Sharma, Tom Lane)
  • Questo evita i problemi di portabilità, che si manifestano tipicamente come una mancata corrispondenza "stretta di mano" durante il caricamento della libreria, quando si lavora con versioni recenti di Perl.
  • In libpq, ripristinare correttamente lo stato di autenticazione GSS / SASL e SSPI dopo un tentativo di connessione fallito (Michael Paquier)
  • Il mancato svolgimento di questa operazione significava che quando si ricorreva da SSL a connessioni non SSL, un errore GSS / SASL nel tentativo SSL avrebbe sempre causato il fallimento del tentativo non SSL. SSPI non ha fallito, ma ha perso memoria.
  • In psql, correggere l'errore quando COPY FROM STDIN viene terminato con un segnale EOF della tastiera e poi viene tentato un altro COPY FROM STDIN (Thomas Munro)
  • Questo comportamento scorretto è stato osservato su piattaforme derivate da BSD (incluso macOS), ma non sulla maggior parte degli altri.
  • Correggere pg_dump e pg_restore per emettere i comandi REFRESH MATERIALIZED VIEW last (Tom Lane)
  • Questo impedisce errori durante il dump / restore quando una vista materializzata fa riferimento a tabelle di proprietà di un utente diverso.
  • Migliora la segnalazione di pg_dump / pg_restore delle condizioni di errore originate da zlib (Vladimir Kunschikov, Alvaro Herrera)
  • Correggere pg_dump con l'opzione --clean per rilasciare i trigger di evento come previsto (Tom Lane)
  • Inoltre ora assegna correttamente la proprietà dei trigger di evento; prima, sono stati ripristinati come proprietà del superutente che esegue lo script di ripristino.
  • Correggere pg_dump con l'opzione --clean per non fallire quando lo schema pubblico non esiste (Stephen Frost)
  • Correggere pg_dump per non emettere un codice SQL non valido per una classe operatore vuota (Daniel Gustafsson)
  • Correzione dell'output di pg_dump su stdout su Windows (Kuntal Ghosh)
  • Un dump di testo normale compresso scritto su stdout conterrà dati corrotti a causa di errori nel mettere il descrittore di file in modalità binaria.
  • Correggere pg_get_ruledef () per stampare l'output corretto per la regola ON SELECT di una vista le cui colonne sono state rinominate (Tom Lane)
  • In alcuni casi d'angolo, pg_dump si basa su pg_get_ruledef () per eseguire il dump delle viste, in modo che questo errore possa causare errori di dump / reload.
  • Correzione del dumping dei join esterni con vincoli vuoti, come il risultato di un NATURAL LEFT JOIN senza colonne comuni (Tom Lane)
  • Correzione del dumping delle espressioni di funzione nella clausola FROM nei casi in cui l'espressione non si estenda in qualcosa che assomiglia a una chiamata di funzione (Tom Lane)
  • Correzione dell'output di pg_basebackup su stdout su Windows (Haribabu Kommi)
  • Un backup scritto su stdout conterrà dati corrotti a causa di errori nel mettere il descrittore di file in modalità binaria.
  • Correzione di pg_rewind per gestire correttamente i file che superano i 2 GB (Kuntal Ghosh, Michael Paquier)
  • Normalmente questi file non appariranno nelle directory dei dati di PostgreSQL, ma potrebbero essere presenti in alcuni casi.
  • Correggere pg_upgrade per assicurare che il record WAL finale non abbia wal_level = minimum (Bruce Momjian)
  • Questa condizione potrebbe impedire la riconnessione dei server standby aggiornati.
  • Correggere il calcolo di pg_xlogdump della lunghezza del record WAL (Andres Freund)
  • In postgres_fdw, ristabilire le connessioni ai server remoti dopo i comandi ALTER SERVER o ALTER USER MAPPING (Kyotaro Horiguchi)
  • Questo assicura che le modifiche alle opzioni che influiscono sui parametri di connessione vengano applicate prontamente.
  • In postgres_fdw, consentire l'annullamento dei comandi di controllo delle transazioni remote (Robert Haas, Rafia Sabih)
  • Questa modifica ci consente di evitare rapidamente un'attesa per un server remoto che non risponde in molti più casi rispetto al passato.
  • Aumenta MAX_SYSCACHE_CALLBACKS per fornire più spazio per le estensioni (Tom Lane)
  • Usa sempre -fPIC, non -fpic, quando crei librerie condivise con gcc (Tom Lane)
  • Supporta ampie librerie di estensioni su piattaforme in cui fa la differenza.
  • Nelle build MSVC, gestisci il caso in cui la libreria openssl non si trova all'interno di una sottodirectory VC (Andrew Dunstan)
  • Nelle build MSVC, aggiungi il percorso di inclusione appropriato per i file di intestazione libxml2 (Andrew Dunstan)
  • Questo risolve un precedente bisogno di spostare le cose nelle installazioni standard di Windows di libxml2.
  • Nelle build MSVC, riconoscere una libreria Tcl che si chiama tcl86.lib (Noah Misch)
  • Nelle build MSVC, onora le impostazioni di PROVE_FLAGS sulla riga di comando di vcregress.pl (Andrew Dunstan)

Programmi simili

Postgres Plus
Postgres Plus

3 Jun 15

Oracle Database
Oracle Database

17 Feb 15

MckoiDDB
MckoiDDB

14 Apr 15

Commenti a PostgreSQL

I commenti non trovato
Aggiungi commento
Accendere le immagini!