== Notiziario settimanale PostgreSQL, 2 novembre 2008 ==

From: Gianni Ciolli <gianni(dot)ciolli(at)2ndquadrant(dot)it>
To: pgsql-it-generale(at)postgresql(dot)org
Subject: == Notiziario settimanale PostgreSQL, 2 novembre 2008 ==
Date: 2008-11-04 15:48:17
Message-ID: 20081104154817.GA4377@fune
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-it-generale

== Notiziario settimanale PostgreSQL - 2 novembre 2008 ==

(Traduzione in lingua italiana delle PostgreSQL Weekly News)

Cittadini USA: non dimenticate di votare entro martedì. La democrazia
o si usa o si perde.

La CommitFest finale per la versione 8.4 è iniziata ieri. Abbiamo più
di 50 patch in coda, tra cui SEPostgres, column-level permissions, Hot
Standby, Windowing Functions, SQL/MED, e molte altre. Abbiamo bisogno
di reviewers! Se c'è una patch che ti interessa, provala al più presto
e scrivi i risultati alla mailing list pgsql-hackers. Se non sai quale
patch esaminare, ma hai tempo disponibile, allora iscriviti alla
mailing list pgsql-rrreviewers, fai un cenno e ti assegneremo una
patch.

Le patch che verranno respinte da questa CommitFest non faranno parte
della versione 8.4, e dovranno aspettare fino al prossimo anno. Quindi
non lasciare che questo accada per mancanza di review o di test.

CommitFest
http://wiki.postgresql.org/wiki/CommitFest_2008-11
Come fare una review
http://wiki.postgresql.org/wiki/Reviewing_a_Patch
http://wiki.postgresql.org/wiki/RRReviewers
Mailing List
http://archives.postgresql.org/pgsql-hackers/
http://archives.postgresql.org/pgsql-rrreviewers/

Log dell'incontro degli sviluppatori sul canale IRC #replicator:
https://projects.commandprompt.com/public/replicator/wiki/developermeetinglogs

Nell'ultimo podcast di Ubuntu UK è presente un'intervista a Simon
Riggs, rilasciata a Londra in occasione di LinuxLive. L'intervista
Postgres inizia dopo circa 11 minuti.
http://podcast.ubuntu-uk.org/2008/10/29/s01e17-talk-about-the-good-times/

== Novità sul prodotto PostgreSQL ==

È stato rilasciato ora2pg 4.9 .
http://pgfoundry.org/projects/ora2pg/

== Offerte di lavoro su PostgreSQL per novembre 2008 ==

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

== Notizie locali su PostgreSQL ==

Il PgDay di Rio de la Plata sta cercando sponsor. Gli interessati si
mettano in contatto con admin AT postgres-arg DOT org.

Dickson Guedes sta cercando volontari per aiutare nell'organizzazione
di un PgMeeting a Florianópolis. Scrivi a guediz AT gmail DOT com se
puoi essergli d'aiuto.

Il prossimo 8 novembre David Fetter e Robert Treat parleranno al Perl
Workshop che si terrà a Pechino.
http://conference.perlchina.org/bjpw2008/schedule

Il prossimo 22 novembre David Fetter parlerà al PGDay di Rio de la
Plata Buenos Aires
http://pgday.postgres-arg.org/

David Fetter parlerà a Sydney in occasione dell'OSDC che si terrà dal
3 al 5 dicembre prossimi.
http://www.osdc.com.au/2008/index.html

== Rassegna stampa su PostgreSQL ==

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

Questo notiziario settimanale PostgreSQL è stato realizzato da David
Fetter e Josh Berkus; traduzione in lingua italiana a cura di Gianni
Ciolli.

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(at)itpug(dot)org; per le lingue inglese o tedesca, si scriva
rispettivamente a david(at)fetter(dot)org o a pwd(at)pgug(dot)de(dot)

== Patch applicate ==

Peter Eisentraut ha effettuato i seguenti commit:

- In pgsql/src/backend/catalog/sql_features.txt, aggiornato l'elenco
delle features.

- Aggiunto EXPLAIN su CREATE TABLE AS.

- Aggiunte le sintassi CURRENT_CATALOG, CURRENT_SCHEMA, SET CATALOG,
SET SCHEMA da SQL:2008

- Aggiunta la clausola WITH [NO] DATA al comando CREATE TABLE AS, in
conformità a SQL. Inoltre, essendo WITH adesso una parola
riservata, è stato semplificato il codice di gestione dei token in
modo da ammettere solo WITH_TIME. In collaborazione con Tom Lane.

- Unicode escapes in stringhe e identificatori.

- Si usa la macro AS_HELP_STRING di Autoconf per formattare e
allineare automaticamente le stringhe nell'output --help. Ciò viene
realizzato tramite il nostro layer di astrazione, così da eliminare
ridondanza e comportamenti casuali in configure.in.

- A partire da SQL:2003, la specificazione della dimensione di un
array nella sintassi SQL ARRAY è diventata opzionale.

- In pgsql/src/backend/catalog/sql_features.txt, aggiornate le
caratteristiche supportate.

- Supporto per il compilatore Sun Studio su Linux. Di fatto si prende
una parte del codice del sistema di build, originamente etichettata
"Solaris", e la si attribuisce al compilatore invece che al sistema
operativo. Julius Stroffek.

- Ricollocato un commento dimenticato in contesto più adeguato.

- In pgsql/src/bin/initdb/initdb.c, migliorato un messaggio

- Mancava uno spazio in un messaggio di errore nello script configure
di psql.

- Aggiornamenti alla traduzione.

- In pgsql/src/bin/initdb/initdb.c, migliorato un message (modifica
riportata sulla 8.3)

- In pgsql/doc/src/sgml/Makefile, la regola di conversione da
postgres.sgml a postgres.xml non funziona con il sed di BSD, così è
stata riscritta in Perl, linguaggio più portabile e tra l'altro un
po' più veloce. Utilizzavamo già Perl per la creazione della
documentazione standard, quindi non abbiamo introdotto ulteriori
requisiti.

Magnus Hagander ha effettuato i seguenti commit:

- Aggiornati i makefiles di libpq per far funzionare msvc e bcc con il
nuovo codice di gestione degli eventi di libpq. Hiroshi Saito.

- Aggiunta la gestione di messaggi di errore multipli da libpq,
semplicemente tramite la concatenazione di tali messaggi (questo li
rende multi-linea poiché ciascuno di essi ha già il proprio
newline). Prima accadeva che ogni nuovo errore sovrascrivesse il
precedente; ad esempio, avendo impostato sslmode=prefer, un nuovo
errore dovuto a un tentativo di connessione SSL veniva sovrascritto
dall'errore relativo alla connessione non-SSL.

- In pgsql/src/backend/libpq/hba.c, i messaggi di errori hba vengono
analizzati in modo più specifico.

- Rimosso il supporto per l'autenticazione crypt, troppo insicura; si
interrompe così la compatibilità con le versioni precedenti alla
7.1.

- In pgsql/src/backend/port/win32_shmem.c, si ritorna alla versione
precedente del patch, ponendo il segmento di memoria condivisa su
win32 nel namespace Global\, poiché si sono verificati errori di
permessi su molte piattaforme. Abbiamo bisogno di una soluzione
migliore per la 8.4, ma per adesso torniamo alla situazione
precedente alla versione 8.3.4.

Tom Lane ha effettuato i seguenti commit:

- Installata una soluzione più robusta per un problema di ricorsione
infinita in caso di errore nella conversione nella codifica del
client di un messaggio di errore localizzato. Questo problema non è
nuovo, ma - come segnalato da Ibrar Ahmed - il malfunzionamento era
ancora presente nel caso di errori legati alla conversione dello
stesso messaggio di errore di conversione :-(. La soluzione consiste
nell'installazione di un "interruttore" che disabilita la
localizzazione del messaggio nel caso in cui si verifichi questo
problema. Preparate patch che hanno risolto il problema in tutte le
versioni supportate, poiché di fatto tutte avevano questo difetto,
benché in modo da riprodurre l'errore nel caso di test che stavo
usando io abbia dovuto aggiungere alle versioni più vecchie alcune
traduzioni mancanti.

- Eliminato con lavoro certosino il MINIMAL_TUPLE_PADDING nella
rappresentazione delle tuple nei file temporanei creati da
tuplesort.c e tuplestore.c. Così si risparmiano 2 bytes per riga
sulle macchine a 32 bit, e 6 bytes per riga sulle macchine a 64 bit;
sembra quindi che ne valga la pena, anche rispetto alla maggiore
complessità delle routine di lettura e scrittura delle tuple.

- Modificato WorkTableScan per togliere il supporto alle scansioni
all'indietro. Di fatto tale supporto non funziona, poiché
nodeRecursiveunion.c crea un tuplestore privo della capacità di
gestire scansioni all'indietro; tale decisione è inoltre saggia per
ragioni di prestazioni. Potremmo eventualmente ipotizzare l'aggiunta
di segnali da WorkTableScan a RecursiveUnion, per trasmettere una
eventuale richiestas di scansione all'indietro... ma dal punto di
vista pratico sarebbe uno spreco di energie, poiché non ci sono
scenari attuali o in un futuro plausibile nei quali WorkTableScan
sia utilizzata per effettuare scansioni all'indietro. Riassumendo,
abbiamo di fatto eliminato il codice che millantava tale supporto.

- Esteso ExecMakeFunctionResult() in modo da supportare una modalità
alternativa per le funzioni set-returning (SRF), che contempla la
restituzione di dati da parte della funzione tramite un tuplestore
invece che con il metodo consueto "value-per-call". Alcune parti di
codice sono state poi risistemate in modo da ridurre la conseguente
duplicazione del codice con nodeFunctionscan.c.

Questa modifica è la parte sostanzialmente condivisa della patch, da
me proposta, che modificava la modalità di restituzione dati per le
funzioni SQL imponendo l'utilizzo di un tuplestore. Per il momento le
funzioni SQL non utilizzano ancora la nuova modalità; però con
questa modifica è adesso possibile che le SRF dei linguaggi
procedurali siano chiamate in targetlists (si vedano a titolo di
esempio le modifiche nei risultati dei test di regressione di
plperl).

- Adesso si usa maggior rigore nel consentire la creazione di
tuplestores aventi randomAccess = true soltanto nei casi in cui una
scansione all'indietro possa realmente accadere. In particolare, si
trasmette un flag alle SRF materializzate per comunicare se hanno
necessità o meno di richiedere accesso random. Durante tale
trasmissione, si sopprime inoltre un inutile sovraccarico dovuto a
scansionin all'indietro per il tuplestore holdStore di un Portal.
Mia proposta sulla riduzione dei costi di I/O per i tuplestores.

- In pgsql/src/backend/access/transam/xlog.c, correzione della logica
di recoveryLastXTime in modo che il comportamento sia quello
atteso. Preda catturata da Kevin Grittner. Correzione riportata
sulla versione 8.3, in cui il bug era stato introdotto.

- Aggiornati i file dei fusi orari in seguito alla versione 2008i di
tzdata (modifiche alla legge sull'ora legale in Argentina, Brasile,
Mauritius, Siria).

- In pgsql/doc/src/sgml/release.sgml, aggiornate le note di rilascio
delle versioni precedenti.

- Si permette alle funzioni SQL di restituire l'output di
INSERT/UPDATE/DELETE RETURNING, oltre a SELECT come già avveniva in
precedenza. Un effetto collaterale di questa modifica è il
miglioramento delle prestazioni nel caso in cui una funzione SRF SQL
sia utilizzata in una clausola FROM: adesso l'output è raccolto in
un tuplestore, mentre in precedenza si usava il meccanismo
"value-per-call", meno efficiente.

- Si semplifica la API di ExecutorRun, rendendola una funzione di tipo
void, mentre precedentemente restituiva (talvolta) una
TupleTableSlot; infatti tale comportamento non è più richiesto dalle
funzioni SQL o in altra parte del codice. Così si risparmia una
manciata di cicli, ma soprattutto si semplifica il lavoro delle
funzioni hook di ExecutorRun che saranno supportate a partire dalla
8.4.

- Sostituiti tutti gli utilizzi delle funzioni deprecate
heap_formtuple, heap_modifytuple e heap_deformtuple con le nuove
funzioni heap_form_tuple et alia (le quali fanno le stesse cose, ma
usano flag di controllo di tipo booleano invece di valori arbitrari
di tipo char). Eliminata di conseguenza la doppia implementazione,
riducendo le funzioni deprecate a dei semplici wrappers intorno alle
nuove funzioni; infatti non possiamo eliminare tout-court le
funzioni deprecate, poiché qualche modulo aggiuntivo probabilmente
le utilizza ancora. Kris Jurka.

- Tolte le ultime vestigia del meccanismo MAKE_PTR/MAKE_OFFSET. Oramai
da lungo tempo non veniva consentito a processi distinti di avere
indirizzi distinti per il segmento shmem; tuttavia in alcune parti
del codice era ancora utilizzata la vecchia convenzione. Ripulendo
il codice è stata ridotta la confusione e si è agevolato il
compilatore nell'individuare errori di tipo sui puntatori. Kris
Jurka.

- Modificata la logica di pgstat: prima il collettore di statistiche
le scriveva sull'apposito file a intervalli fissi di 500ms, adesso
invece ciò avviene su richiesta esplicita del backend, e comunque
non prima di 500ms dall'ultima scrittura. Questa modifica dovrebbe
produrre una riduzione significativa del traffico in scrittura sul
file di statistiche in quegli scenari tipici nei quali le
statistiche sono richieste di rado. Con questo approccio sono
eliminate anche le difficoltà nel cambiare stats_temp_directory "al
volo"; tale operazione non è più critica e non servono più
particolari cautele o comportamenti frenetici (per minizzare
l'eventualità di tali problemi). En passant, è stata anche corretta
la funzione pgstat_report_stat() in modo da farle trasmettere
statistiche nel caso in cui vi sono statistiche sulle chiamate di
funzioni in assenza di statistiche su tabelle; questo corregge un
bug nella recente patch che introduce le statistiche sulle chiamate
di funzioni. Martin Pihlak.

Alvaro Herrera ha effettuato i seguenti commit:

- In pgsql/src/backend/access/heap/heapam.c, non serviva codice
aggiuntivo per il log nel caso in cui si congelino zero tuple,
poiché le funzioni chiamanti hanno già controllato che il numero di
tuple congelate non sia pari a zero.

- In pgsql/src/backend/utils/time/snapmgr.c, la gestione di due errori
è stata affidata a elog() invece che a ereport() trattandosi di
errori del tipo "can't happen".

Bruce Momjian ha effettuato i seguenti commit:

- In pgsql/doc/src/sgml/syntax.sgml, tolto un tab dal file sgml.

Marc Fournier ha effettuato i seguenti commit:

- Tag 8.3.5, 8.2.11, 8.1.15, 8.0.19, 7.4.23.

Heikki Linnakangas ha effettuato i seguenti commit:

- Aggiunto il supporto per i cast di conversione I/O definiti
dall'utente.

- In pgsql/src/test/regress/parallel_schedule, aggiunto un caso di
test per CREATE CAST.

- Unificate le funzioni ReadBufferWithFork, ReadBufferWithStrategy e
ZeroOrReadBuffer in un'unica funzione ReadBufferExtended,
specificando strategia e modo come argomenti. Ci sono tre modi:
RBM_NORMAL, il default usato da ReadBuffer(), RBM_ZERO, che
rimpiazza ZeroOrReadBuffer, e un nuovo modo RBM_ZERO_ON_ERROR, che
consente alle funzioni chiamanti di leggere le pagine corrotte senza
generare un errore. Il FSM ha bisogno di questo nuovo modo per
recuperare le pagine corrotte, cosa che potrebbe accadere se il
server va in crash dopo l'estensione di un file FSM con la nuova
pagina che rimane danneggiata. Aggiunto un numero di fork ad alcuni
messaggi di errore in bufmgr.c che ne erano tuttora privi.

- Aggiornato FSM nel replay WAL. Questa implementazione è un po'
limitata; il FSM è aggiornato solo per records WAL non
corrispondenti all'immagine di una pagina intera, e - in modo assai
arbitrario - solo se, dopo l'insert/update (non HOT) c'è meno del
20% di spazio libero nella pagina. Il limite del 20% dovrebbe
evitare la gran parte del sovraccarico, ad esempio in occasione del
replay di un inserimento in blocco, al contempo garantendo che le
pagine piene siano contrassegnate come piene nel FSM. Questo serve
quasi esclusivamente per evitare il dannoso scenario peggiore,
quando il replay proviene da un archivio PITR e l'informazione FSM
nel backup di base è molto disallineata: se ci fossero molte pagine
ritenute erroneamente non piene dal FSM obsoleto, la prima
(sfortunata) inserzione dopo il recovery dovrebbe percorrere tutte
queste pagine per accorgersi che sono tutte piene. La vecchia
implementazione di FSM non aveva questo problema poiché in caso di
spegnimento non corretto le informazioni di tipo FSM venivano
semplicemente scartate.

Michael Meskes ha effettuato i seguenti commit:

- In pgsql/src/backend/parser/gram.y, aggiunto un ';' mancante.

- In ecpg, non viene consumata memoria neanche nel caso di un errore
di tipo "memoria finita"

- In ecpg, si usa la componente stringa nella struttura dell'indice.

- In pgsql/src/interfaces/ecpg/ecpglib/misc.c, sostituita strcmp con
strncmp per essere più tolleranti nei confronti di modifiche al
parser.

== Patches rifiutate (per adesso) ==

Nessuno è stato scontentato questa settimana :-)

== Patches in coda ==

ITAGAKI Takahiro ha consegnato una nuova revisione del suo modulo
contrib/pg_stat_statements.

Heikki Linnakangas ha proposto una patch WIP per la mappa di
visibilità (dead space map).

Hitoshi Harada ha consegnato una nuova revisione della sua patch
avente come oggetto OLAP e funzioni di Windowing.

Simon Riggs ha consegnato due nuove revisioni della sua patch Hot
Standby.

Koichi Suzuki ha consegnato una patch per migliorare le prestazioni
del PITR.

Kris Jurka ha consegnato due revisioni di una patch che effettua tutte
le modifiche per usare la nuova API per le heaptuples.

Simon Riggs ha consegnato una patch all'infrastruttura di subcommit
che usa il flag InRecovery per confinare un Assert a un insieme più
ristretto di casi.

Emanuel CALVO FRANCO ha inviato una versione in lingua spagnola della
FAQ Solaris.

Magnus Hagander ha consegnato una patch per implementare il supporto alle
regexp nelle usermaps (pg_ident.conf).

Kris Jurka ha consegnato una patch per assimilare ai puntatori
ordinari i puntatori alla memoria shared.

Martin Pihlak e ITAGAKI Takahiro hanno consegnato tre revisioni di una
patch per pg_stat_statements.

Alvaro Herrera ha consegnato una patch per implementare controlli CRC
a livello di blocco.

Ron Mayer ha consegnato tre revisioni di una patch per consentire a
PostgreSQL di produrre in output intervalli standard SQL.

Stephen Frost ha consegnato tre revisioni di una patch per assegnare
permessi a livello di colonne.

Teodor Sigaev ha consegnato un'altra revisione della sua patch per
l'inserimento rapido per gli indici GIN.

Jonah Harris ha consegnato una patch che utilizza i filtri Bloom per
velocizzare gli hash joins.

Hiroshi Saito ha consegnato una patch per correggere LC_TIME su
Windows.

Simon Riggs ha consegnato una patch che implementa Hot Standby.

Hannu Krosing ha consegnato due revisioni di una patch per abilitare
PL/Python alla restituzione di records basati su più parametri OUT.

Zdenek Kotala ha consegnato una patch per implementare l'upgrade
in-place.

Teodor Sigaev ha consegnato una patch per emulare gli indici B-tree
tramite gli indici GIN.

Hitoshi Harada ha consegnato un'altra revisione della sua patch per le
Window Functions.

Peter Eisentraut ha consegnato due revisioni di una patch che
implementa i "tipi distinti" secondo lo standard SQL.

Fujii Masao ha consegnato una patch che implementa la replicazione
sincrona di tipo log-shipping.

Bernd Helmle ha consegnato una patch WIP per aggiornamenti VIEW
automatici.

Gregory Stark ha consegnato una versione aggiornata della patch posx
fadvise.

Zdenek Kotala ha consegnato una patch che aggiunge alle heaptuples
delle informazioni legate alla versione.

Heikki Linnakangas ha consegnato una patch per migliorare le
prestazioni di COPY FROM rimpiazzando CopyReadLineText with memchr().

David Fetter ha consegnato due revisioni di una patch pre-MED per
esporre le clausole WHERE alle funzioni.

Andrew Dunstan ha consegnato un'altra patch WIP per il restore
parallelo.

Zdenek Kotala ha consegnato due revisioni di una patch che ripulisce
htup.h e bufpage.[ch].

Martin Pihlak ha consegnato due revisioni di una patch che implementa
un gestore di connessioni compatibile con SQL/MED.

Jeff Davis ha consegnato un'altra revisione della sua patch per
array_accum().

Robert Haas ha consegnato due revisioni della sua patch che migliora
BufferAccessStrategy per gli inserimenti in blocco.

Nikhil Sontakke ha consegnato un'altra revisione della sua patch per
l'auto-partizionamento.

Gianni Ciolli ha consegnato una patch per implementare gli indici
bitmap.

Andrew Dunstan ha consegnato due revisioni di una patch che trasforma
le UPDATEs superflue in no-ops.

Vladimir Sitnikov ha consegnato una patch per aggiungere le
statistiche del buffer pool all'output di EXPLAIN ANALYZE.

KaiGai Kohei ha consegnato un'altra revisione delle sue patch
SE-PostgreSQL.

Browse pgsql-it-generale by date

  From Date Subject
Next Message Gianni Ciolli 2008-11-12 01:31:20 == Notiziario settimanale PostgreSQL, 9 novembre 2008 ==
Previous Message Giorgio Valoti 2008-10-28 11:27:01 Re: Generare righe "intermedie"