Notiziario settimanale PostgreSQL – 11 gennaio 2009

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

Sono adesso disponibili gli installer della snapshot della 8.4. Fai un giro sulla futura 8.4 ! http://www.postgresql.org/download/snapshots

Sono rimaste meno di due settimane di tempo per chi vorrà proporre un talk per pgCon! http://www.pgcon.org

Novità sul prodotto PostgreSQL

Rilasciato MyJSQLView 3.01. http://myjsqlview.sourceforge.net/

Offerte di lavoro su PostgreSQL per gennaio 2009

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

Il suggerimento della settimana

Il comando "x" della riga di comando di psql è un interruttore che permette di attivare e disattivare la "visualizzazione espansa" per i risultati delle query; è molto utile nel caso in cui tali risultati presentino righe più larghe dello schermo.

Notizie locali su PostgreSQL

Jeff Davis parlerà al San Francisco PostgreSQL Users Group martedì 13 gennaio 2009 presso Blurb. RSVP sotto per l’ammissione e il cibo. http://postgresql.meetup.com/1/calendar/9351228/

Richard Broersma sta coordinando i volontari per uno stand a SCALE (vedi sotto). Per mettersi in contatto con lui scrivere a richard DOT broersma AT gmail DOT com.

I gruppi PostgreSQL e MySQL di Mosca organizzano un evento insieme il prossimo 22 gennaio, nella loro città. Per maggiori dettagli e iscrizioni: http://forum.postgresqlrussia.org/viewtopic.php?f=6&t=96

SYDPUG si riunirà il 3 febbraio 2009 alle 6:30 pm. Controllare periodicamente questa pagina per i dettagli. http://archives.postgresql.org/sydpug/

Molti dei soliti sospetti parteciperanno al FOSDEM il prossimo 7-8 febbraio a Bruxelles, in Belgio. http://wiki.postgresql.eu/wiki/FOSDEM_2009

PostgreSQL sarà presente a SCALE, che si terrà a Los Angeles (USA), dal 20 al 22 febbraio prossimi. http://www.socallinuxexpo.org/

Il 25 febbraio Andreas ‘ads’ Scherbaum terrà una comunicazione al Perl Workshop 2009, a Frankfurt am Main, in Germania. http://www.perl-workshop.de/talks/151/view

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

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 Dave Page; 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:

  • Consentite builds fuori dall’albero su mingw e ygwin. Autore: Richard Evans.

  • Risolta cross-compilazione fra mingw32 e qualcos’altro. La scelta tra pwd e pwd -W è giustamente una funzione del sistema di build, non dell’host.

  • Quando si cross-compila consenti e richiedi l’utilizzo di un programma zic esterno quando l’opzione –with-system-tzdata non è usata. Patch iniziale da Richard Evans.

  • Prodotta una stringa di versione completa per Sun Studio. Da Zdenek Kotala.

  • In pgsql/doc/src/sgml/ddl.sgml, aggiunta una nota sul fatto che non tutti i comandi SQL supportano ONLY allo stesso modo.

  • Riscritta update-po target, in modo che operi meno da shell script e più come un makefile con dipendenze reali. Invece di sovrascrivere il vecchio file po, scrive il nuovo file con l’estensione .po.new. Dà meno fastidio e si integra meglio con il sito web NLS. Adesso possiamo anche aggiungere linguaggi che non hanno ancora un file po usando l’unione di tutti gli altri files po dello stesso linguaggio, in modo da effettuare automaticamente le traduzioni ricorrenti. In precedenza ciò funzionava soltanto in presenza di un file po.

  • In pgsql/src/nls-global.mk, un uso più portabile di "find".

  • Cambiato il titolo del capitolo, per cui: "III. Server Administration 15. Installation from Source Code 16. Installation from Source Code on Windows 17. Server Setup and Operation" dà agli utenti delle installazioni binarie una miglior idea di dove iniziare a leggere. Suggerito da Nikolay Samokhvalov.

  • Rimossi test di identificatori alquanto inutili e di casi misti che causavano dipendenze locali.

  • Fatto in modo che i test passino con o senza un locale.

Tom Lane ha effettuato i seguenti commit:

  • Aggiunte chiamate EmitWarningsOnPlaceholders ai moduli contrib che sono destinati ad essere elencati in custom_variable_classes.

  • Messi a tacere i ripetuti messaggi "loaded library" emessi dai backend figli nel ricaricare librerie già caricate nel postmaster. ITAGAKI Takahiro.

  • Aggiunta l’opzione –role a pg_dump, pg_dumpall, e pg_restore. In questo modo si possono fare dump e restore senza violare la politica di sicurezza che vieta di collegarsi direttamente come superutente, richiedendo invece di collegarsi con un’utenza amministrativa e poi impostando il ruolo di superutente con SET ROLE. Di passaggio, ripulito codice brutto e prevalentemente guasto che si occupava del quote degli argomenti della shell in pg_dumpall. Benedek Laszlo, con qualche aiuto da Tom Lane

  • In pgsql/src/backend/optimizer/util/clauses.c, risolta una disattenzione nella patch function-default-arguments: dopo aver aggiunto alcune espressioni di default a una chiamata a funzione, deve essere esguita una ricorsione di eval_const_expressions su tali espressioni. Altrimenti esse non si semplificano, e in particolare non si riesce ad inserire argomenti di default aggiuntivi se vi sono presente funzioni che hanno bisogno di default. Come da report di Rushabh Lathia.

  • In pgsql/src/backend/commands/functioncmds.c, aggiunti alcuni commenti sul perché le espressioni di default delle funzioni parametro sono ristrette.

  • Non sembra essere una buona idea l’esecuzione di AC_CHECK_SIZEOF(void *) così in anticipo rispetto a tutti gli altri check sizeof; e certamente fallisce nel seguire l’ordine suggerito in cima al file. Risistemato.

  • In pgsql/src/backend/utils/adt/pg_lzcompress.c, la strategia di default per la compressione toast è stata reimpostata al comportamento precedente, nel caso in cui non vi siano limiti alle dimensioni del dato che proviamo a comprimere. Altre modifiche 8.4 al comportamento rimangono invece in vigore. In base a discussione apposita.

  • Un paio di utilizzi poco saggi del livello di log INFO sono stati trasformati in WARNINGs; in particolare così nel log di postmaster sono ammessi di default i messaggi EmitWarningsOnPlaceholders. Aggiornato il commento in elog.h per chiarire ulteriormente a cosa serve INFO, e corretto un esempio nella documentazione SGML che stava facendone un utilizzo errato. Mia scoperta di ieri.

  • Tolti i riferimenti alle mailing list pgsql-ports e pgsql-patches da varia documentazione, dato che tali liste non esistono più o sono deprecate. Messo il riferimento corretto a pgsql-bug e/o pgsql-hackers, a seconda dei casi.

  • In pgsql/src/backend/commands/analyze.c, chiarito un commento inesatto a proposito delle voci MVC versus histogram. Per Nathan Boley.

  • Modificato executor/spi.h in modo da seguire la nostra abituale convenzione per i files inclusi, per esempio, non includere postgres.h né altro di cui non abbia diretta necessità. Aggiunte le necessarie #include ai files chiamanti per compensare ciò. Come da mia proposta di ieri. Nelle note di rilascio della 8.4, ciò dovrebbe essere rubricato come una modifica del sorgente, visto che pare richiedere cambiamenti nei moduli aggiuntivi.

  • Inserite chiamate condizionali SPI_push/SPI_pop in InputFunctionCall, OutputFunctionCall, e relativi. Questo consente alle funzioni che usano SPI di invocare I/O datatype senza preoccuparsi della possibilità che venga chiamata una funzione SPI (potrebbe essere la stessa una funzione I/O, o una funzione usata in un check di dominio vincolato). È una soluzione un po’ brutta, ma non così brutta come ciò che sarebbe necessario per fare in modo di farla funzionare attraverso l’inserimento di operazioni push/pop in tutti i PL. Questo richiede un revert della mia patch del 2007-01-30 che inseriva alcune chiamate SPI_push/pop in plpgsql; quell’approccio risolveva soltanto plpgsql e nessun altro PL, mentre gli altri PL hanno lo stesso problema come illustrato da una recente lamentela di Christian Schroeder. Correzione riportata all’indietro fino alla 8.2, oltre la quale questa soluzione non potrebbe funzionare. Prima di tale versione non occorre neanche preoccuparsi del vincolo di dominio, dal momento che le versioni precedenti non tentavano di verificare i vincoli di dominio all’interno dell’input datatype. Non sono a conoscenza di vecchie funzioni I/O che usino le SPI, dunque in termini di correzioni all’indietro questo dovrebbe essere sufficiente.

  • Creata una terza opzione chiamata "partition" per constraint_exclusion, e impostata come default. Essa abilita i controlli di vincoli d’esclusione soltanto per membri appendrel (i. e., figli ereditari e UNION ALL) che sono i casi in cui la "constraint exclusion" è più utile. Evitando il sovraccarico per le query semplici che non possono trarne beneficio, si dovrebbe attenuare il costo fino al punto in cui questa possa divenire una ragionevole impostazione di default. Come da discussione di oggi.

  • In pgsql/src/backend/parser/analyze.c, difesa da input nullo in analyze_requires_snapshot(), come riportato da Rushabh Lathia.

  • Fatto in modo che gli argomenti di default a funzioni siano elaborati correttamente nelle espressioni che sono impostate per l’esecuzione con ExecPrepareExpr invece che tramite l’intero processo di planning. Introducendo una esplicita nozione di "expression planning", questa patch inizia a preparare il terreno per consentire forse un giorno le sub-select in espressioni stand-alone.

  • In pgsql/src/interfaces/libpq/fe-protocol3.c, corretto libpq in modo che riporti PGRES_EMPTY_QUERY e non PGRES_COMMAND_OK quando una stringa query vuota viene passata a PQexecParams e funzioni relative. La sua gestione della risposta NoData a messaggi Describe era sottilmente sbagliata. Come da mio report di ieri. Per quanto io consideri questo un bug, si tratta di un cambiamento comportamentale che potrebbe influenzare le applicazioni, e quindi la modifica non è riportata all’indietro. Nel frattempo risolto un secondo problema nello stesso codice: non reagiva bene a un errore out-of-memory durante il tentativo di costruire un oggetto PGResult.

  • In pgsql/doc/src/sgml/ref/psql-ref.sgml, un ulteriore tentativo di chiarire distv.

  • Rivista la API TIDBitmap per supportare iterazioni multiple e concorrenti su una bitmap. Estratto dalla patch posix_fadvise di Greg Stark; sembra che valga la pena di fare un commit separato, dal momento che è potenzialmente utile indipendentemente da posix_advise.

  • Riabilitato il vecchio codice in xlog.c che tentava l’uso di posix_fadvise() in modo che si possa ottenere qualche feedback dalla buildfarm in merito a quanto quella funzione sia ancora problmatica. (Notare come la prevista patch async-preread di fatto non dimostrerà niente né in un verso né nell’altro durante il test nella buildfarm, poiché con le impostazioni GUC di default ciò sarà disattivato.)

  • Implemetato il pre-fetching atraverso posix_fadvise() per le scansioni di indici bitmap. Una nuova variabile GUC effective_io_concurrency controlla quante richieste concorrenti verranno eseguite. (Il miglior modo per gestire la cosa è ancora sotto dibattito, perciò quella parte non è stata ancora applicata)

Bruce Momjian ha effettuato i seguenti commit:

  • Aggiornate la FAQ giapponesi. Jun Kuwamura

  • In pgsql/src/timezone/Makefile, risolta la regola di cross-compilazione per evitare un bug in gmake 3.78.1; documentato il cambiamento.

  • In pgsql/src/backend/access/common/reloptions.c, soppresso il warning del compilatore.

  • Aggiornato SELECT version() al fine di mostrare se si tratti di un backend a 32 bit o a 64.

  • In pgsql/src/backend/access/common/reloptions.c, soppresso il warning del compilatore in un modo diverso, da Alvaro Herrera.

  • In pgsql/src/bin/pg_dump/pg_restore.c, aggiornato il testo di –help di pg_restore in modo corrispondente alla documentazione in SGML.

  • Rese le opzioni –clean in pg_dump e pg_dumpall coerenti con la documentazione SGML, per consistenza.

  • In pgsql/doc/src/sgml/installation.sgml, documentato il fatto che cygwin non supporta OpenSSL.

  • Questo fa in modo che tutti i comandi dX (più significativamente per molti: df) funzionare come dt, in quanto richiede un dXS per vedere elementi di sistema. Greg Sabino Mullane.

  • Aggiunta documentazione per la nuova patch dS e ripulita un po’ di documentazione. Risolto anche do e la visualizzazione dei trigger.

  • In pgsql/src/bin/psql/help.c, migliorata la visualizzazione dell’aiuto su z psql ? .

  • In pgsql/src/bin/psql/help.c, aggiunti spazi attorno alle colonne psql d*, come da idea di Joshua Drake.

  • In pgsql/src/bin/psql/help.c, rimossa la doppia menzione a dd nell’help di psql.

  • Aggiornato MinGW in modo che gestisca fseek() in modo simile a Unix.

  • In pgsql/src/backend/utils/error/elog.c, reso consistente l’output del log di ‘vxid’ fra csvlog e stderr/syslog. Attualmente in csvlog il vxid di un processo ausiliario non è stampato a video. D’altro canto, il vxid non valido (-1/0) in stderr/syslog è stampato. Fujii Masao

  • In pgsql/doc/src/sgml/ref/psql-ref.sgml, nella documentazione di psql distv è stato spezzato in quattro linee separate per ragioni di chiarezza.

  • In pgsql/src/backend/tcop/postgres.c, aggiornato il commento associato a ‘debug_query_string’.

  • In pgsql/src/backend/utils/adt/misc.c, aggiunto il commento sul fatto che è difficile accedere a ‘query_string’ più accurate da current_query().

  • Fatto sì che current_query() utilizzi ActivePortal->sourceText invece che debug_query_string; così si permette a current_query() di essere più accurato; aggiornata la documentazione; da idea di Tom Lane.

  • In pgsql/src/backend/parser/gram.y, aggiunto un commento sul perché BETWEEN usi stringhe di operatori e non opclasses, con una URL che punta alla discussione in mail.

  • Annullata la modifica a current_query(), per farle usare di nuovo debug_query_string, aggiunto commento.

  • In pgsql/doc/src/sgml/func.sgml, documentato il fatto che current_query() è la query _client_ .

  • In pgsql/doc/src/sgml/func.sgml, documentato che txid_visible_in_snapshot() non può essere usato con le id di subtransazioni.

  • In pgsql/src/test/regress/pg_regress.c, corretto il memory leak legato al nome del file che si verificava se il nome di file atteso conteneva un punto, come da report di dvice_null CHIOCCIOLA yahoo PUNTO com.

  • Aggiornate le note di rilascio per 8.3.5, 8.2.11, e 8.1.15, menzionando la necessità di reindicizzare gli indici GiST nel modo seguente: "Se stavate usando una versione 8.X.X precedente, fate REINDEX su tutti gli indici GiST dopo l’upgrade".

  • In pgsql/doc/src/sgml/catalogs.sgml, rimossi i tab dalla documentazione SGML.

  • In pgsql/doc/src/sgml/README.links, aggunto un file che spiega le opzioni di linking di SGML, ad uso degli autori di documenti SGML.

  • In pgsql/doc/src/sgml/README.links, aggiunta la sezione linee guida.

  • In pgsql/doc/src/sgml/README.links, aggiornate le linee guida sui link.

  • In pgsql/doc/src/sgml/libpq.sgml, modificata la documentazione sulle variabili d’ambiente di libpq perché faccia riferimento alla sezione di competenza nella documentazione sulle opzioni di connessione, come da idea di Magnus.

Alvaro Herrera ha effettuato i seguenti commit:

  • Cambiato il meccanismo di reloptions per usare un parser basato su tabelle, e fornito un framework più completo per scrivere routine custom di elaborazione delle opzioni per i metodi d’accesso definiti da utente.

  • Corretta la gestione delle stringhe reloption, KaiGai Kohei.

  • Un paio di migliorie ulteriori di reloption da KaiGai Kohei: aggiunta una funzione di validazione al tipo stringa e aggiunte un paio di macro per la gestione delle stringhe. Di passaggio, risolto un mio bug (sbagliavo di uno).

Tatsuo Ishii ha effettuato i seguenti commit:

  • Rimosso il README giapponese obsoleto, così come da discussione.

Heikki Linnakangas ha effettuato i seguenti commit:

  • In pgsql/src/backend/commands/vacuumlazy.c, corretta la logica nel vacuum lazy per decidere se sia utile tentare di troncare l’heap. Se la tabella era più piccola di REL_TRUNCATE_FRACTION (= 16) pagine, tentavamo sempre di acquisire un AccessExclusiveLock su di essa anche se non c’erano pagine vuote alla fine. Segnalazione di Simon Riggs. Patch all’indietro fino alla 7.4 .

Magnus Hagander ha effettuato i seguenti commit:

  • In pgsql/src/backend/utils/adt/pg_locale.c, rivisto il codice della patch strftime, come da commenti di Tom Lane. Utilizzata la corretta dimensione del buffer MAX_L10N_DATA, e usata strlcpy invece di StrNCpy.

  • In pgsql/src/tools/msvc/Solution.pm, fatto sì che il build MSVC emetta "32-bit" alla fine della stringa di versione, così come adesso fa il build Unix.

  • In pgsql/src/interfaces/libpq/fe-secure.c, non richiedere a pqGetHomeDirectory di seguire qualora l’utente abbia specificato percorsi hard-coded per certificati, chiavi SSL e simili. Come notato da Andrew Chernow.

  • In pgsql/doc/src/sgml/config.sgml, aggiunto testo appropriato per i parametri SIGHUP invece di effettuare una semplice rimozione come faceva la precedente patch. Come da nota di Tom Lane.

  • Consentite le opzioni di autenticazione krb_realm (krb5, gssapi e sspi) e krb_server_hostname (krb5 soltanto) di essere specificate in pg_hba.conf riga per riga, scavalcando i default in postgresql.conf.

  • Aggiunto parametro include_realm di hba all’autenticazione krb5, gss e sspi, usato per trasmettere all’autenticazione l’intera stringa username@realm invece dell’username soltanto. Questo rende possibile usare pg_ident.conf per autenticare utenti da realm multipli come se fossero utenti DB diversi.

  • Rese krb_realm e krb_server_hostname opzioni per pg_hba soltanto, e rimossi i loro GUC. Di passaggio, aggiunte le opzioni di autenticazione per krb5 in pg_hba, avendo notato che non erano menzionate per nulla.

  • In pgsql/src/backend/utils/adt/pg_locale.c, corretto l’uso di strftime su Win32 quando si tenta di ottenere le parti coerenti con il locale di una stringa time in modo che possa gestire propriamente diverse codifiche. Patch originale di Hiroshi Saito, fortemente rielaborata da me e ITAGAKI Takahiro.

Andrew Dunstan committed:

  • In pgsql/doc/src/sgml/catalogs.sgml, document values for pg_constraint confupdtype, confdeltype and confmatchtype columns.

Andrew Dunstan ha effettuato i seguenti commit:

  • In pgsql/src/include/pg_config.h.win32, definito HAVE_FSEEKO per MSVC.

  • In pgsql/doc/src/sgml/catalogs.sgml, documentati i valori per le colonne confupdtype, confdeltype e confmatchtype in pg_constraint.

Patch rifiutate (per adesso)

Nessuno è stato scontentato questa settimana :-)

Patch in coda

KaiGai Kohei ha consegnato altre due versioni delle sue patch SE-PostgreSQL.

Martin Pihlak ha consegnato una nuova versione del suo codice per un gestore di connessioni compatibile SQL/MED, che contiene delle funzioni che elencano le opzioni di una connessione dall’esterno sia come stringa che come insieme di risultati.

Nathan Boley ha consegnato una correzione che, nel caso di distribuzioni con code ad alta densità, consente ad ANALYZE di duplicare i bordi dell’istogramma, e riduce il numero di barre dell’istogramma quando trova valori abbastanza frequenti.

Bryce Cutt ha consegnato un’altra versione della patch che migliora le prestazioni dei multi-batch hash join sugli insiemi di dati sghembi.

KaiGai Kohei ha consegnato una correzione, da aggiungere alla patch di Stephen Frost’s per i privilegi a livello di colonna, assicurandosi che solo le colonne disponibili vengano usate nei JOIN, etc.

Robert Haas ha consegnato una versione ripulita della patch che migliora le prestazioni dei multi-batch hash join sugli insiemi di dati sghembi.

Heikki Linnakangas ha consegnato una patch che toglie i lock ai blocchi degli indici, da applicare dopo la patch hot standby di Simon Riggs.

Fujii Masao ha consegnato una nuova versione della patch per la gestione dei segnali, che funge da infrastruttura per la replica sincrona.

ITAGAKI Takahiro ha consegnato una patch che corregge LC_TIME su Windows in lingua giapponese.

David Wheeler ha consegnato una patch che aggiunge una menzione a CITEXT nella FAQ che discute le funzioni di paragone case-insensitive.

Hitoshi Harada ha consegnato un esempio di una funzione di windowing definita dall’utente.

Stephen Frost ha consegnato altre quattro revisioni della sua patch per la gestione dei permessi a livello di colonna.

Heikki Linnakangas ha consegnato una patch per aiutare la patch di hot standby, rifattorizzando il codice in modo che le funzioni di redo siano responsabili per le chiamate a RestoreBkpBlocks.

Andrew Dunstan ha consegnato una nuova versione della sua patch per il restore parallelo.

Magnus Hagander ha consegnato due approcci per la risoluzione di un problema kerberos; il primo, togliendo il supporto per l’acquisizione del nome utente, il secondo, togliendo per il momento il messaggio di errore.

Hiroshi Inoue ha consegnato una nuova versione di una patch che corregge lc_messages su Windows in lingua giapponese.

Peter Eisentraut ha consegnato una patch che aggiunge a TRUNCATE il supporto per LOCK e ONLY, e impostanto la ricorsione come comportamento di default sulle tabelle ereditarie.

KaiGai Kohei ha consegnato una nuova versione delle sue patch SE-PostgreSQL.

Alvaro Herrera ha consegnato una patch che corregge il codice reloptions.

Jeff Davis ha consegnato una versione aggiornata della patch di Kenneth Marshall che aggiorna le funzioni di hash.

Bernd Helmle ha consegnato altre due versioni della sua patch per le viste aggiornabili.

Heikki Linnakangas ha consegnato una patch che rimuove le slotid dalla patch di hot standby.

Fujii Masao ha consegnato una nuova versione della patch per la replica sincrona.

Robert Haas ha consegnato una nuova versione della patch POSIX fadvise.

Jeff Davis ha consegnato una versione aggiornata della patch per l’emulazione degli indici B-Tree tramite GIN.

This Post Has 0 Comments

Leave A Reply