Notiziario settimanale PostgreSQL – 7 dicembre 2008

(Traduzione in lingua italiana delle PostgreSQL Weekly News a cura di Gianni Ciolli gianni.ciolli@2ndquadrant.it e Gianluca Riccardi gianluca@moonwatcher.it)

Lorenzo Alberton ha scritto un articolo in cui effettua un’analisi comparativa di vari RDBMS in merito alla sensibilità rispetto ai caratteri minuscoli o maiuscoli negli identificatori. http://www.alberton.info/dbms_identifiers_and_case_sensitivity.html

Fedora 10 adesso ha la sua repository pgsqlrpms. http://yum.pgsqlrpms.org/

Novità sul prodotto PostgreSQL

Rilasciata la versione 2.11.6 di perl-DBD-PG. http://search.cpan.org/dist/DBD-Pg/

Rilasciata la versione 2.5.0 di check_postgres. http://bucardo.org/check_postgres/

Hubert (depesz) Lubaczewski ha rilasciato uno strumento per analizzare l’output di EXPLAIN ANALYZE. http://www.depesz.com/index.php/2008/12/04/explaindepeszcom/

Offerte di lavoro su PostgreSQL per dicembre 2008

http://archives.postgresql.org/pgsql-jobs/2008-12/threads.php

Notizie locali su PostgreSQL

Si è aperto il Call for Paper per FOSDEM 2009. PostgreSQL avrà uno stand e condividerà una developer room con i gruppi di BSD. Inviate i vostri talks a "fosdem (at) postgresql (dot) eu" non oltre il 2 gennaio 2009.

Il 23 e 24 ottobre 2009 si svolgerà PGCon Brazil, presso Unicamp, nella città di Campinas, stato di San Paolo.

Rassegna stampa su PostgreSQL

Planet PostgreSQL: http://planet.postgresql.org/

Questo notiziario settimanale PostgreSQL è stato realizzato da David Fetter e Devrim GUNDUZ; traduzione in lingua italiana a cura di Gianni Ciolli e Gianluca Riccardi.

Notizie o annunci destinati a questo notiziario dovranno pervenire entro la mezzanotte di domenica (le 15 nel fuso orario della California). I comunicati in lingua italiana dovranno essere inviati a pwn@itpug.org; per le lingue inglese o tedesca, si scriva rispettivamente a david@fetter.org o a pwd@pgug.de.

Patch applicate

Peter Eisentraut ha effettuato i seguenti commit:

  • Risolto un errore di battitura in pgsql/doc/src/sgml/installation.sgml.

  • In pgsql/doc/src/sgml/ref/psql-ref.sgml, piccola correzione.

  • In pgsql/doc/src/sgml/ref/select.sgml, aggiunte graffe per rendere chiara la sintassi.

  • In pgsql/doc/src/sgml/keywords.sgml, aagiornate le tabelle keywords alla 8.4 e a SQL:2008.

  • In pgsql/GNUmakefile.in, genhtml viene invocato con l’opzione –prefix in modo che non appaiano nell’output i percorsi dei build locali.

  • Valori di default per gli argomenti delle funzioni. Pavel Stehule, con qualche miglioria di Peter Eisentraut.

  • In pgsql/src/backend/utils/adt/misc.c, descrizioni migliori in pg_get_keywords(), in modo coerente con l’appendice alla documentazione sulle keywords. catdesc era originariamente intesa per esser letta da dei calcolatori, ma visto che poi abbiamo aggiunto catcode, possiamo avere delle descrizioni più elaborate.

  • Settati ar, dlltool, dllwrap e windres per il cross-compiling qualora necessario. In più alcune pulizie dei makefile. Parte di una patch di Richard Evans.

Michael Meskes ha effettuato i seguenti commit:

  • Rimosso il test delle porte da ecpg.

Tom Lane ha effettuato i seguenti commit:

  • In pgsql/src/tools/msvc/vcregress.pl, rimosse le ultime tracce di –temp-port.

  • Ci siamo assicurati che i contenuti di un cursore di tipo HOLD non dipendano da valori TOAST obsoleti, i quali possono essere scartati una volta che la transazione del cursore è terminata. Per bug #4553 da Andrew Gierth. Riportato sulle versioni precedenti fino alla 8.1. Il bug esiste dalla versione 7.4 quando furono introdotti i cursori di tipo HOLD, ma senza aggiustamenti significativi questa patch non funziona per versioni precedenti alla 8.1. Vista l’insufficienza di lamentele sul campo, sembra che non valga la pena fare delle patch sui branch più vecchi (con il rischio di introdurre nuovi bugs).

  • Risolta una disattenzione che faceva delle deduzioni di eguaglianza transitiva usando clausole di outer join. Ad esempio, dato … FROM a LEFT JOIN b ON a.a1 = b.b1 WHERE a.a1 = 42; dedurremo una clausola b.b1 = 42 e poi marcheremo la join originale ridondante (non possiamo rimuoverla completamente per ragioni che non me la sento di sintetizzare in questo log). Comunque, la implementazione originale non era blindata, perché clause_selectivity() non rispettava this_selec nel caso in cui varRelid fosse stato diverso da zero — il che in pratica voleva dire che funzionava come desiderato eccetto il caso in cui si considerano delle qualificazioni di scansioni di indici. Questo produceva delle sottostime della dimensione dei risultati degli indexscan per un indexscan interno ad una outer join, e conseguentemente una scelta possibilmente errata fra indexscan e bitmap scan. Risolto introducendo un test esplicito in clause_selectivity(). E al fine d’assicurarsi che tale test non sia attivato in casi limite, cambiata la convenzione: adesso è nel caso this_selec > 1 e non this_selec = 1 che il test viene marcato ridondante. Su segnalazione del problema da parte di Scara Maccai. Patch riportata fino alla versione 8.2 dove era stato introdotto il problema.

  • In pgsql/src/backend/optimizer/plan/subselect.c, non proviamo ad ottimizzare le sottoquery EXISTS prive di FROM: infatti abbiamo bisogno di formare una join e in questo caso non c’è nulla da utilizzare per il join. (Potremmo probabilmente farlo funzionare se non sollevassimo la sottoquery, ma non mi sembra che il caso sia meritevole di codice extra). Segnalazione di Greg Stark.

Heikki Linnakangas ha effettuato i seguenti commit:

  • In pgsql/src/backend/utils/adt/formatting.c, modificata la nuova implementazione to_timestamp in modo che la stringa di fine formato sia trattata come un separatore non numerico. Questo risolve l’inconsistenza negli esempi come il seguente: to_timestamp(‘2008-01-2’, ‘YYYY-Michael Meskes-DD’) non funzionava mentre to_timestamp(‘2008-1-02’, ‘YYYY-Michael Meskes-DD’) funzionava.

  • In pgsql/src/backend/utils/adt/tsginidx.c, usa PG_GETARG_TEXT_PP invece di PG_GETARG_TEXT_P nelle nuove funzioni gin_cmp_tslexeme e gin_cmp_prefix. Si dovrebbero tagliare alcuni cicli dalle operazioni GIN.

  • In pgsql/src/backend/access/transam/xlog.c, se pg_stop_backup() viene chiamata subito dopo aver commutato ad un nuovo file xlog, attendi che sia archiviato il precedente file invece del nuovo. Basata sulla patch di Simon Riggs.

  • Piccole correzioni di commenti in pgsql/src/backend/storage/freespace/freespace.c.

  • Introdotta la mappa di visibilità. Si tratta di una bitmap con un bit per ciascuna pagina dell’heap; se il bit è impostato a 1 allora tutte le tuple sulla pagina sono visibili a tutte le transazioni e quindi la pagina non ha bisogno di vacuum. È memorizzata in un fork di una nuova relazione. Il vacuum di tipo lazy usa le mappe di visibilità per evitare le pagine che non hanno bisogno di vacuum. Lo stesso vacuum è anche il responsabile dell’impostazione dei bits nella mappa. In futuro ciò potrebbe auspicabilmente essere usato per implementare scansioni index-only, ma al momento attuale non possiamo garantire che la mappa di visibilità sia al 100% aggiornata. In più c’è un nuovo flag PD_ALL_VISIBLE su ciascuna pagina dell’heap, il quale indica se tutte le tuple della pagina siano visibili a tutte le transazioni. È importante che questo flag sia mantenuto aggiornato. Esso è anche usato per evitare il test di visibilità negli scans sequenziali, dando alcuni miglioramenti di prestazione.

  • In pgsql/src/include/catalog/catversion.h, dimenticato di aggiornare la versione del catalogo nella patch della mappa di visibilità.

  • Utilizzare la mappa di visibilità anche nell’autovacuum. C’era una disattenzione nella patch della visibility map; dato che autovacuum imposta sempre VacuumStmt->freeze_min_age, la mappa di visibilità non veniva mai usata per l’autovacuum, ma soltanto per vacuum lanciati manualmente. Con questa patch è stato introdotto un nuovo campo scan_all a VacuumStmt, il quale indica esplicitamente se, per spostare relfrozenxid in avanti, si possa usare la mappa di visibilità oppure se debba essere scandita l’intera relazione. I vacuum volti ad impedire il wraparound hanno ancora bisogno di scandire tutte le pages.

  • In pgsql/src/backend/access/heap/visibilitymap.c, la macro MAPSIZE necessita di usare MAXALIGN(SizeOfPageHeaderData) invece di SizeOfPageHeaderData, così come fa PageGetContents. Su segnalazione di Pavan Deolasee.

Alvaro Herrera ha effettuato i seguenti commit:

  • In pgsql/src/backend/utils/misc/guc.c, alcuni minori abbellimenti di codice.

  • Risolti un paio di bugs di gestione delle snapshots nel nuovo mondo ResourceOwner: un oggetto non scrivibile di dimensioni grandi necessita che la propria snapshot sia registrata sul resowner della transazione, non del portale attuale, in quanto essa deve persistere fino a che tale oggetto non viene chiuso (cosa che il portale non fa). In più, ci siamo assicurati che la snapshot serializzabile sia registrata anche dal resource owner della transazione, compreso il caso in cui una sottotransazione abbia cambiato il resource owner attuale prima che venga selezionato quello serializzabile. Su bug report di Pavan Deolasee.

  • Qua e là alcune tags di programlisting sono state racchiuse in CDATA, così da liberarsi di certi escaping SGML.

Magnus Hagander ha effettuato i seguenti commit:

  • Cambiato il mapping delle wildcard nel certificato; adesso è molto più piccolo, viene considerato soltanto il carattere ‘*’ all’inizio di un pattern e non si considerano i sottodominii. Questo implica che non abbiamo più bisogno di fnmatch; rimosse quindi sia l’implementazione importata dal port, che il check di autoconf.

  • In pgsql/doc/src/sgml/libpq.sgml, aggiunta la documentazione per la patch delle wildcard nei certificati.

  • De-registrate le callbacks OpenSSL quando libpq ha finito con la sua connessione. Ciò è richiesto dalle applicazioni che scaricano la libreria libpq (p.e. PHP), per evitare di avere puntatori a queste funzioni quando esse non esistono più. La patch non è stata riportata sulle versioni precedenti, poiché prima di fare ciò si ritiene necessario effettuare ulteriori test. Di passaggio, rimosse delle funzioni inutilizzate da backend/libpq. Bruce Momjian e Magnus Hagander, su segnalazione e analisi di Russell Smith.

  • In pgsql/src/interfaces/libpq/fe-secure.c, il commento diceva che non si liberava il lockarray e spiegava il perché. La correzione appropriata è stata di far fare al codice le cose descritte dal il commento…

Bruce Momjian ha effettuato i seguenti commit:

  • In pgsql/src/interfaces/libpq/fe-secure.c, corretto un errore di digitazione nella recente patch di unload di SSL. Kris Jurka

  • In pgsql/doc/src/sgml/wal.sgml, documentato che il journaling non-data è una opzione di mount raccomandata.

  • Consenti a CREATE OR REPLACE VIEW di aggiungere colonne alla _fine_ della view. Robert Haas.

Teodor Sigaev ha effettuato i seguenti commit:

  • In pgsql/src/backend/access/gist/gistscan.c, inizializza GISTScanOpaque->qual_ok anche se non ci sono condizioni.

Patch rifiutate (per adesso)

Nessuno è stato scontentato questa settimana :-)

Patch in coda

Hitoshi Harada ha consegnato quattro nuove versioni delle sue funzioni di windowing.

Pavel Stehule ha consegnato una nuova revisione della sua patch per i valori di default nei parametri delle funzioni.

Zdenek Kotala ha consegnato una patch che aggiorna lo script pg_upgrade.

Magnus Hagander ha consegnato una patch che aggiorna la documentazione di work_mem aggiungendo il riferimento ad autovacuum_max_workers.

Hannes Eder ha consegnato una patch per aggiungere un operatore "skyline".

Heikki Linnakangas ha consegnato una patch che velocizza la costruzione di indici GIN.

ITAGAKI Takahiro ha consegnato una nuova patch che implementa pg_stat_statements.

Alvaro Herrera ha consegnato due versioni di una patch che ripara un bug di assert in lo_open().

Euler Taveira da Oliviera ha consegnato una patch che migliora la portabilità degli "inizializzatori designati".

KaiGai Kohei ha consegnato altri due insiemi di patch SE-PostgreSQL.

David Rowley ha inviato qualche "massaggio" per la documentazione della patch sulle funzioni di windowing di Hitoshi Harada.

Martin Pihlak ha consegnato una nuova revisione della sua patch per il gestore di connessioni SQL/MED.

Heikki Linnakangas ha consegnato una nuova versione della mappa di visibilità.

Heikki Linnakangas ha consegnato una patch che sistema pg_stop_backup.

Emmanuel Cecchet ha consegnato una nuova patch che sistema il comportamento delle tabelle temporanee nelle transazioni.

Josh Williams ha consegnato una patch che aggiunge a psql la visualizzazione del proprietario di una sequenza in occasione del comando d.

Kurt Harriman ha consegnato uno stormo di patch che consentono tra le altre cose l’utilizzo del C++ nel codice SPI. La discussione è in corso.

This Post Has 0 Comments

Leave A Reply