== Notiziario settimanale PostgreSQL - 1 marzo 2009 ==

From: Gianni Ciolli <gianni(dot)ciolli(at)2ndquadrant(dot)it>
To: pgsql-it-generale <pgsql-it-generale(at)postgresql(dot)org>
Cc: Gianluca Riccardi <gianluca(at)moonwatcher(dot)it>
Subject: == Notiziario settimanale PostgreSQL - 1 marzo 2009 ==
Date: 2009-03-06 10:22:45
Message-ID: 20090306102245.GA8250@fune
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-it-generale

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

Il PUG di Denver (USA) si incontrerà il 27 marzo. Prossimamente
ulteriori dettagli.

Michael Renner terrà un workshop sulla replica con PostgreSQL a
Netways OSDC 2009 in Norimberga, Germania.
http://www.netways.de/english/osdc/y2009/programm/w/michael_renner_postgresql_repliziert_ein_ueberblick/

PostgreSQLFr avrà uno stand a Solutions Linux 2009, Parigi.
Iscriviti tramite sas AT postgresql DOT fr oppure dal wiki in lingua francese:
http://postgresql.fr/sl2009:start

== Novità sul prodotto PostgreSQL ==

Rilasciata la versione 2.0.3 di Npgsql2, un provider di dati .NET per
PostgreSQL.
http://www.npgsql.org

Rilasciata la versione 2.2 di pgpool-II, connection pooler (e non
solo), e di pgpoolAdmin, front-end grafico per pgpool-II.
http://pgfoundry.org/projects/pgpool/

Rilasciato Simpycity, un sistema di mappatura per PostgreSQL.
https://projects.commandprompt.com/public/simpycity/

== La novità della settimana di PostgreSQL 8.4 ==

pg_stat_statements. Questo modulo contrib realizzato da Itagaki
Takahiro permette dei report sull'attività del vostro DB "á la
pg_fouine", del tipo di "Le 25 query più popolari"; il tutto pressoché
in tempo reale.

== Il suggerimento della settimana ==

L'autovacuum dovrebbe essere attivato per la gran parte delle
applicazioni del database, mentre dovrebbe essere invece spento in
occasione di grandi caricamenti in blocco di dati, tipo ETL o il
restore di un database.

== Offerte di lavoro su PostgreSQL per marzo 2009 ==

http://archives.postgresql.org/pgsql-jobs/2009-03/threads.php

== Notizie locali su PostgreSQL ==

Il PostgreSQL User Group tedesco avrà uno stand, due talk e un
workshop presso il Linuxdays Chemnitz, il 14 e 15 marzo 2009. Maggiori
informazioni in lingua tedesca qui:
http://andreas.scherbaum.la/blog/archives/525-PostgreSQL-auf-den-Chemnitzer-Linuxtagen.html

La PostgreSQL Conference U. S. organizzerà un PgDay nell'ambito della
LinuxFest Northwest (25, 26 aprile). Informazioni su come proporre una
comunicazione sono disponibili sul sito
http://www.postgresqlconference.org/

Nei giorni 21 e 22 maggio 2009 all'università di Ottawa, in Canada, si
terrà PGCon 2009. Nei due giorni precedenti si terranno dei tutorials.
http://www.pgcon.org/2009/papers.php

Segnatevi la data: pgDay San Jose (USA). Domenica 19 luglio subito
prima di OSCON. Saranno presto annunciate ulteriori informazioni!
(incluso il call for papers)

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, Josh Berkus 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(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 ==

Heikki Linnakangas ha effettuato i seguenti commit:

- Cmabiato l'invio dei segnali di end-of-recovery. Il processo di
startup ora indica il termine del recovery in uscita con codice di
ritorno 0, com nei precedenti rilasci. Coma da suggerimento di Tom.

- In pgsql/src/backend/postmaster/postmaster.c, reinserito un
"continue" che era andato perso nei cambiamenti all'avvio del
bgwriter nel recovery WAL.

- In pgsql/src/pl/plpgsql/src/pl_exec.c, per le variabili locali errm
e sqlstate viene impostato isnull al momento del free; lasciare
isnull impostato a true sembra essere inoffensivo, poiché in seguito
esse sono fuori dallo scope di qualsiasi codice. Comunque sia, il
debugger di PL/pgSQL non sembra tenere conto dello scope, producendo
così un crash, come da report di Robert Walker (bug #4635). È
inoltre bene essere ordinati per il debugging. Errore corretto nei
rami 8.3, 8.2 e 8.1, CVS HEAD era stato corretto in
precedenza. Analisi e risoluzione da Ashesh Vashi e Dave Page.

- In pgsql/src/backend/commands/conversioncmds.c, in CREATE
CONVERSION, controlla che la funzione data sia una funzione di
conversione valida per le codifiche sorgente e destinazione. Tale
controllo viene effettuato chiamando la funzione con una stringa
vuota. Se la conversione richiesta non può essere eseguita, allora
sarà prodotto un errore. Porting alle versioni 7.4 - 8.3. Come da
segnalazione del bug #4680 da Denis Afonin.

Peter Eisentraut ha effettuato i seguenti commit:

- In pgsql/src/pl/plpgsql/src/pl_exec.c, aggiunti apici al messaggio.

- Aggiunta la possibilità di specificare una funzione esplicita di
validazione per i wrappers a dati esterni (similmente ai linguaggi
procedurali). In questo modo non è necessario conservare le librerie
quasi vuote, e siamo più liberi nelle scelte sull'implementazione
della API per i wrapper in futuro.

- Non appendere epoch a log_filename in assenza di una specificazione
di formato. Robert Haas

- Classificato l'output di --help in modo quasi alfabetico, migliorato
l'allineamento, resi gli help di pg_dump e pg_dumpall più simili.

- Rimosse le chiamate a feof(stdin) in relazione alla richiesta di
inserimento password, rimasugli dal tempo in cui la password veniva
letta da stdin.

- In pgsql/contrib/vacuumlo/vacuumlo.c, sistemato l'output
dell'opzione di help (-?).

- In pgsql/src/bin/pg_config/pg_config.c, usato lo stesso stile usato
da altri programmi nella sinossi dello help.

- Aggiunta l'opzione -w/--no-password, che evita ogni richiesta
d'inserimento della password a tutti i programmi che hanno l'opzione
-W/--password. Di passaggio, rimosse le antiche opzioni di
compilazione PSQL_ALWAYS_GET_PASSWORDS.

- Rimozione finale delle opzioni -q che erano state disattivate dalla
versione 8.3 ed erano iscritte tra le cose rimuovere per la 8.4.

- Risolte la dichiarazioni errone e inconsistenti sulla necessità o
meno del valore dell'opzione in CREATE FOREIGN DATA
WRAPPER/SERVER/USER MAPPING.

- I programmi installati con contrib sono stati equipaggiati con
opportune opzioni --help e --version, e l'output di help è stato
impaginato normalmente.

- In pgsql/src/bin/psql/help.c, aggiunte le opzioni lunghe al display
di --help di psql, da cui curiosamente mancavano. Dal momento che
così si toccano molte linee dell'output di help, l'accozzaglia di
chiamate a puts e printf è stata cambiata ovunque in printf, per
facilitare modifica e riesame del codice.

Tom Lane ha effettuato i seguenti commit:

- In pgsql/src/bin/psql/describe.c, corretto il comando \dD di psql al
fine di mostrare una sola riga per dominio, anche quando il dominio
ha più di un vincolo di tipo CHECK.

- Riparato un vecchio bug in CLUSTER e le varianti di ALTER TABLE che
usano la riscrittura: se il comando viene eseguito da qualcuno che
non sia il proprietario della tabella (p.e. un superuser), e la
tabella ha una tabella toast, allora la riga pg_type della tabella
toast si ritrova con il typeowner sbagliato, i. e. chi ha eseguito
il comando e non il proprietario della tabella. Si tratta di un
errore pressoché inoffensivo per molti scopi, in quanto non ci sono
controlli interessanti dei permessi che consultano la riga pg_type.
Tuttavia, ciò potrebbe condurre a fallimenti inaspettati qualora si
cercasse di effettuare il drop del ruolo che ha eseguito il comando
(in 8.1 o 8.2), oppure potrebbe essere la causa di strani avvisi in
seguito da parte di pg_dump (in 8.3 e successive, che consentiranno
DROP ROLE perché non creiamo una dipendenza ridondante dal
proprietario per i tipi di riga delle tabelle). Problema
identificato da Cott Lang. Correzione riportata indietro fino alla
versione 8.1. Il problema è in effetti più vecchio - la variante
CLUSTER può esser dimostrata in 7.0 - ma è principalmente un
problema di tipo cosmetico prima della 8.1, poiché allora non
venivano tracciate le dipendenze riguardo all'identità del
proprietario. In più, risolvere il problema prima della 8.1
richiederebbe una modifica della segnatura della funzione
heap_create_with_catalog(), la quale comporterebbe un rischio non
banale di incompatibilità coi moduli add-on.

- Rimosso il tipo di nodo FlattenedSubLink, definito in modo piuttosto
impreciso, in favore della costruzione, ad opera di
pull_up_sublinks(), di una rappresentazione completa ad albero
JoinExpr dei SubLinks IN/EXIST che sia convertibile in semi o anti
join. Così si rende pull_up_sublinks() un po' più complesso, ma il
guadagno in chiarezza semantica giustifica la spesa. C'è ancora
molto da fare in quest'area per risolvere i problemi discussi in
precedenza, ma questo commit risolve in se almeno un bug in HEAD,
come dimostrato dal caso di test di regressione aggiunto.

- In pgsql/src/backend/utils/adt/ruleutils.c, risolto un vecchio
problema nella decompilazione del costrutto CASE: il codice
ruleutils.c cerca una CaseTestExpr per capire cosa ha fatto il
parser, ma non riesce a considerare la possibilità che possa essere
inserita una coercizione implicita sopra la CaseTestExpr. Ciò
potrebbe risultare in un errore di Assert in alcuni casi (ma i
risultati sarebbero comunque corretti se gli Assert sono
disattivati), o un errore di tipo "unexpected CASE WHEN clause" nei
casi rimanenti. Come da report di Alan Li. Patch riportata indietro
alla 8.1; il problema non esiste prima perchè CASE era implementato
diversamente.

- Rimosso il file di paragone del test di regressione join_1.out non
aggiornato. Era malfunzionante da più di un mese, perciò
evidentemente non era necessario, almeno per nessuna delle
configurazioni nella buildfarm. Possiamo correggerlo e rimpiazzarlo
in seguito se troviamo casi in cui se ne abbia bisogno.

- In pgsql/src/backend/optimizer/util/pathnode.c, migliorato
create_unique_path al fine di non essere più imbrogliato da clausole
che si trovano ad essere sintatticamente parte di una clausola
semijoin pur non essendo legate a quest'ultima. Per esempio, dato
WHERE EXISTS(SELECT ... WHERE upper.var = lower.var AND
some-condition) dove some-condition è solo una restrizione sulla
relazione "lower", possiamo effettuare l'unificazione su lower.var
dopo aver applicato some-condition nella scansione di lower.

- Rese più restrittive le regole di join per tenere conto della
recente analisi un po' più accurata dell'associatività delle
antijoin. Migliorata anche la discussione optimizer/README delle
regole di ordinamento delle outer join.

- In pgsql/src/backend/optimizer/prep/prepjointree.c, disabilitato
temporaneamente (spero) l'appiattimento dei sublinks IN/EXISTS che
sono nella clausola ON di una outer join. Ciò è semanticamente
corretto, ma produce la de-ottimizzazione delle query che sono
strutturate per avvantaggiarsi dello stile di esecuzione á la
sublinks, come visto nella recente lamentela di Kevin Grittner. Dal
momento che l'utente può ottenere l'altro comportamento tramite una
riorganizzazione della propria query, l'appiattimento in automatico
è solo una comodità che non giustifica il peggioramento delle
applicazioni esistenti. Più in avanti sarebbe bello riabilitare
questa funzionalità; tuttavia sembra che ciò richieda nell'esecutore
un approccio significativamente differente alle outer join.

- Ridotti i valori massimi di vacuum_cost_delay e
autovacuum_vacuum_cost_delay a 100ms (da 1000). Questi valori
sembrano ancora ampiamente maggiori dell'intervallo utile di questo
parametro, e quindi dovrebbero aiutare nel dissuadere le persone
dalla scelta di valori inutilmente grandi. Modificata la
documentazione per raccomandare l'uso di valori piccoli. Come da
discussione avvenuta un paio di settimane fa.

- In pgsql/src/backend/optimizer/path/pathkeys.c, tolti un paio di
cicli in compare_pathkeys() attraverso la verifica di liste di input
aventi puntatori identici prima di scorrere le liste. Non si
risparmia molto, ma il test dimostra che il caso in cui entrambi gli
input sono NIL è sufficientemente comune da risparmiare qualcosa.

- Corretta l'allocazione dei buffer nelle routines di conversione
delle codifiche, in modo che non falliscano in caso di input di
lunghezza zero. Non è un caso in uso normalmente perchè
l'infrastruttura non chiama il convertitore per le stringhe
vuote. Comunque, la patch di ieri ha creato un problema nel
controllare se in CREATE CONVERSION viene fornita la giusta funzione
di conversione. La correzione più valida guardando al futuro sembra
sia di rendere i convertitori a prova di questo caso particolare.

Magnus Hagander ha effettuato i seguenti commit:

- In pgsql/src/tools/msvc/Mkvcbuild.pm, rimossi i riferimenti alle
librerie dei wrappers dei dati esterni, le quali sono state
rimosse. Così il build msvc dovrebbe funzionare di nuovo.

Andrew Dunstan ha effettuato i seguenti commit:

- In pgsql/src/backend/utils/adt/xml.c, nella funzione xpath(), evita
di modificare irreversibilmente xml e xpath, a meno che xml non sia
di fatto un documento formalmente corretto. In caso di tale
modifica, fai un tentativo un po' più salutare qualora l'espressione
xpath non inizi con '/'.

== Patch rifiutate (per adesso) ==

La patch di James Pye che modifica il comportamento di xpath per
tenere conto dei frammenti. Richiesta una revisione poiché modifica
una funzionalità in un modo che non si classifica come risoluzione di
bug.

La patch di Sushint Sinhas per aggiungere lo spazio quando in tsearch2
si specifica FragmentDelimiter. Tale funzionalità è già disponibile
con metodi meno invasivi.

La patch di Pavel Stehule per il supporto a parametri nominali e
valori di default per le funzioni. Troppa ambiguità
nell'interpretazione.

== Patch in coda ==

KaiGai Kohei ha consegnato due ulteriori revisioni delle sue patch
SE-PostgreSQL.

Alan Li ha consegnato una patch che corregge un errore di assertion
nel backend, che può occorrere definendo una vista con CASE su una
tabella.

Martin Pihlak ha consegnato una patch affinché i comandi \d facciano
considerare i dati nell'information schema come se fossero oggetti di
sistema, rendendoli invisibili per default. Essi sono comunque
visibili tramite i comandi \d*S.

Damien Clochard ha consegnato una patch per psql che mostra le tabelle
che ereditano una tabella data quando \d viene eseguito su una
tabella.

Heikki Linnakangas ha consegnato una patch WIP per Hot Standby che
mostra come il tracciamento delle transazioni potrebbe funzionare
usando solo le "unobserved xids," che al momento sono tutte le
transazioni master.

Robert Lor ha consegnato una patch alla documentazione per le sonde
DTrace recentemente aggiunte.

Dave Page ha consegnato una patch proveniente da Ashesh Vashi che
risolve un bug di PL/PgSQL nella 8.3 (impostando state_var->value e
errm_var->value a null, state_var->isnull e errm_var->isnull non erano
impostate di conseguenza).

Peter Eisentraut ha consegnato una patch per aggiungere i codici di
errore SQL:2008 ai valori LIMIT e OFFSET.

Peter Eisentraut ha consegnato una patch che impedisce a PostgreSQL di
violare il limite di sistema sul numero massimo di files aperti.

Browse pgsql-it-generale by date

  From Date Subject
Next Message Gianni Ciolli 2009-03-15 15:38:15 == Notiziario settimanale PostgreSQL - 8 marzo 2009 ==
Previous Message Gianni Ciolli 2009-02-27 11:10:32 == Notiziario settimanale PostgreSQL - 22 febbraio 2009 ==