Notiziario settimanale PostgreSQL – 23 novembre 2008

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

Il primo PGDay annuale Argentina ha registrato partecipanti da tutta l’America latina, con interventi brillanti.

Devrim GUNDUZ ha pubblicato una nuova collezione di RPM basati sulla snapshot CVS del 18 novembre 2008 11:00 PM EEST. http://yum.pgsqlrpms.org/news-8.4devel-ready-for-testing.php

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 aiutarlo nell’organizzazione di un PgMeeting a Florianópolis. Scrivi a guediz AT gmail DOT com se puoi essergli d’aiuto.

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

FOSDEM 2009 si terrà a Bruxelles, in Belgio, nei giorni 7 e 8 febbraio 2009. PostgreSQL, oltre a condividere uno stand con i gruppi di BSD, avrà una developer room. Inviate le vostre proposte di talk (lightning, 20 minuti o 45 minuti) a fosdem (at) postgresql (dot) org.

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; 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.

Patches applicate

Teodor Sigaev ha effettuato i seguenti commit:

  • In pgsql/src/backend/utils/adt/tsvector_op.c, rimpiazzamento array ordinato in memoria da albero binario nella funzione ts_stat(). Le performance hanno avuto un miglioramento dal 50% fino a 10^3 volte, a seconda dei dati.

  • In pgsql/src/backend/utils/adt/tsvector_op.c, risolto l’avviso "res may be used uninitialized in this function". Infatti ciò non può accadere; tuttavia alcuni compilatori non sono sufficientemente intelligenti. Lamentela di Peter Eisentraut.

Bruce Momjian ha effettuato i seguenti commit:

  • In pgsql/doc/src/sgml/high-availability.sgml, documentato il fatto che Bucardo è un esempio di replicazione multi-master con risoluzione dei conflitti.

  • In pgsql/doc/src/sgml/high-availability.sgml, aggiunta la riga "Most Common Implementation" alla tabella high-availability in modo che la tabella sia meno astratta. Le implementazioni più comuni erano già menzionate nel testo.

  • Solleva un appropriato messaggio d’errore quando si tenta l’uso di MD5 abilitando db_user_namespace. Limitazione inclusa nella documentazione.

Peter Eisentraut ha effettuato i seguenti commit:

  • Autenticazione di tipo ‘ident’ su unix-domain sockets in Solaris, utilizzando la funzione getpeerucred(). Autore: Garick Hamlin.

  • pgsql/src/bin/psql/create_help.pl, modificato lo script per essere conforme allo stile di Perl 5. Aggiunto il supporto per refnames multipli. Ordina l’output a seconda del nome del comando, mentre in precedenza ciò funzionava soltanto a seconda del nome del file sorgente, il quale non è sempre esattamente uguale al nome del comando. E, sicuramente, non funzionerà per refnames multipli.

  • In pgsql/doc/src/sgml/ref/select.sgml, aggiunto WITH come refname alla pagina di riferimento di SELECT. Da adesso "help WITH" funziona ed è disponibile la man-page WITH(7).

  • Aggiunto il comando SQL:2008 TABLE.

  • Per il comando TABLE usa relation_expr come richiesto da Tom Lane.

  • Incluse le FAQ "platform" nelle istruzioni d’installazione. Già che c’ero, eliminate alcune informazioni piuttosto vecchie. Le FAQ_AIX necessitano di considerazioni separate, e ci penseremo più avanti.

Magnus Hagander ha effettuato i seguenti commit:

  • In pgsql/src/test/thread/thread_test.c, aggiunte le inclusioni richieste per compilare con cygwin. Andrew Chernow

  • Controllo sul certificato lato client richiesto attraverso l’opzione ‘clientcert’ di pg_hba, invece di accettare la sola presenza del file root-certificate.

  • Aggiunto il supporto per usare i certificati SSL lato client per l’autenticazione al DB (chiaramente soltanto per connessioni SSL).

  • In pgsql/src/test/regress/pg_regress.c, messo a tacere l’avviso del compilatore a proposito di valori di return ignorati, poiché il commento afferma chiaramente che si è a conoscenza di tale fatto.

  • In pgsql/src/pl/plpgsql/src/pl_exec.c, non si passano direttamente le stringhe alle errdetail() and errhint(), ma si usa %s per rimuovere l’escape. Ciò risolve una rilevante problematica di sicurezza (in codice ancora da rilasciare).

  • La colonna ‘enumvals’ di pg_settings è stata resa text[] invece di semplice stringa separata da virgole.

  • In pgsql/doc/src/sgml/catalogs.sgml, aggiunto l’aggiornamento per la patch enumvals.

  • In pgsql/doc/src/sgml/config.sgml, si documenta quali settaggi GUC siano enums e non stringhe, insieme ad un breve paragrafo che spiega cosa ciò voglia dire.

  • Risolti alcuni ulteriori avvisi sul formato degli argomenti

Tom Lane ha effettuato i seguenti commit:

  • Alcuni cambiamenti infrastrutturali per l’imminente modulo auto-explain: leggermente rifattorizzato explain.c per esportare subroutine convenienti per visualizzare i risultati di EXPLAIN. Forniti connettori per plugins al fine di ottenere il controllo di ExecutorStart e ExecutorEnd, e anche di ExecutorRun. Aggiunto un minimo supporto per tracciare il tempo totale di esecuzione di ExecutorRun. Questo codice non eseguirà nulla in particolare, a meno che un plugin lo esegua. Cambiata l’API di DefineCustomXXXVariable per consentire di specificare flags non vuoti per una variabile GUC custom. E con l’occasione è stato anche reso definibile il valore di default dei GUCs custom come parametro di tali funzioni. Lo scopo è di eliminare ogni confusione sulle origini del default, come quelle insorte tempo fa in alcuni utenti di tale funzionalità (variabile custom). Rifattorizzato un po’ il codice GUC al fine di garantire che la variabile custom venga inizializzata a qualcosa di sensato (come il suo valore di default) anche se il valore preesistente non era valido.

  • In pgsql/src/backend/utils/misc/guc.c, riparato define_custom_variable in modo che la variabile custom SUSET si comporti in modo ragionevole. Non è perfetto, ma supera l’artifizio introdotto nella patch auto-explain…

  • Aggiunto il modulo auto-explain per il logging automatico dei piani delle queries ad esecuzione lenta. Takahiro Itagaki.

  • Risolto un errore nella creazione dei piani di scansione per operatori di indice speciali come LIKE. Nello scorso aprile avevo semplificato eccessivamente il codice, rimuovendo il supporto per la determinazione plan-time della lossiness dell’operatore nell’indice — pensavo che create_bitmap_subplan avrebbe smesso di restituire due liste separate di condizioni qual, invece è necessario che faccia ciò ancora, così che noi possiamo trattare correttamente gli operatori speciali in create_bitmap_scan_plan. In seguito a un report di Rushabh Lathia.

  • In pgsql/doc/src/sgml/xaggr.sgml, notato che l’esempio di aggregato array_accum è paragonabile all’aggregato array_agg, il quale adesso è built-in. Come da suggerimento di Robert Haas.

  • In pgsql/doc/src/sgml/config.sgml, ripuliture minori.

  • Modificato il planner per trattare le qualificazioni di un JOIN_SEMI join come fosse interno invece che esterno. Essenzialmente vuol dire che non perdiamo tempo a separare le condizioni di qualificazione "pushed down" dalle vere qualificazioni di join in un nodo di semijoin del piano; questo accorgimento è legittimo poiché le restrizioni della sintassi SQL rendono impossibile il caso di un qual pushed-down che fa riferimento alla parte interna di un semi-join. Questo consente una ottimizzazione dei casi IN/EXIST significativamente migliore che in precedenza, visto che i meccanismi di classe di equivalenza sono adesso in grado di usare tali qualificazioni. Risolti anche un altro paio di errori che essenzialmente disabilitavano la capacità di rendere unica la relazione inner e poi unirla (join) a un sottoinsieme delle relazioni nel membro sinistro. Un caso d’esempio che usa il database di regressione è SELECT 2ndquadrant_italia_mod.txt 2ndquadrant_italia.txt da_installare_pandoc hdoisajds.sh risultati step2 from tenk1 a, tenk1 b where (a.unique1,b.unique2) in (select unique1,unique2 from tenk1 c); che veniva pianificato ragionevomente bene dalle versioni sino alla 8.3, ma che forzava join cartesiane di a/b nella HEAD CVS.

  • In pgsql/src/backend/postmaster/bgwriter.c, insegnato a RequestCheckpoint() di attendere e riprovare più volte nel caso in cui non sia capace di inviare immediatamente il segnale a bgwriter. Questo copre il caso in cui il bgwriter è ancora in fase di avviamento, come accaduto di recente in un errore in una buildfarm. In futuro ciò potrebbe anche essere di aiuto alla clean recovery successiva alla terminazione e al riavvio di bgwriter — per adesso postmaster interpreta le uscite precoci dal bgwriter come dei crash di sistema, ma potrebbe non essere sempre il caso.

Heikki Linnakangas ha effettuato i seguenti commit:

  • Ripensato il modo in cui funziona il troncamento FSM. Invece di inserire nel WAL i troncamenti FSM, adesso smgr_redo invoca FreeSpaceMapTruncateRel. Al fine di renderlo più chiaro dal punto di vista della modularità, il WAL-logging viene spostato più in alto di un livello su RelationTruncate, mentre RelationTruncate e il relativo WAL-logging vengono collocati nel nuovo file src/backend/catalog/storage.c . Introdotte le nuove funzioni RelationCreateStorage e RelationDropStorage, che vengono usate in sostituzione dell’invocazione diretta di smgrcreate/smgrscheduleunlink. Il materiale pendente inerente alla cancellazione della relazione è stato tolto da smgrcreate/smgrscheduleunlink e messo nelle nuove funzioni. In questo modo smgr.c diviene un sottile wrapper attorno a md.c; tutto il materiale di tipo transazionale è ora in storage.c . Così sarà più facile aggiungere nuovi forks aventi una logica di troncamento simile, come la mappa di visibilità.

Patches rifiutate (per adesso)

Nessuno è stato scontentato questa settimana :-)

Patches in coda

Magnus Hagander ha consegnato una nuova versione della sua patch che aggiunge una opzione clientcert a pg_hba.conf.

Peter Eisentraut ha consegnato una patch per rendere variadica la funzione xmlconcat().

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

ITAGAKI Takahiro ha consegnato una nuova versione del suo modulo contrib auto-explain.

Gregory Stark ha consegnato una nuova versione della sua patch per fadvise posix.

Marcus Kempe ha consegnato una patch per aggiungere notifiche asincrone usando dblink.

Magnus Hagander ha consegnato tre revisioni di una patch per implementare il match del certificato SSL con le wildcard in libpq.

Bruce Momjian ha consegnato una patch per correggere un bug che impediva la corretta gestione delle chiamate callback SSL nel caso in cui fossero coinvolte altre librerie.

Martin Pihlak ha consegnato una nuova versione della sua patch che implementa un gestore di connessioni compatibile SQL/MED.

Heikki Linnakangas ha consegnato una nuova versione della sua patch che aggiunge una mappa di visibilità.

Euler Taveira de Oliveira ha consegnato una patch che sostituisce pg_autovacuum con reloptions.

Ron Mayer ha consegnato una nuova versione della sua patch per aggiungere lo stile degli intervalli a ECPG.

Alex Hunsaker ha consegnato una nuova versione della sua patch SSL.

This Post Has 0 Comments

Leave A Reply