Notiziario settimanale PostgreSQL – 30 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 sito web "Let’s PostgreSQL" di JPUG è adesso aperto. http://lets.postgresql.jp/

Sono disponibili delle bozze di una traduzione in lingua russa delle sezioni "Tutorial" e "Introduction" del manuale PostgreSQL: http://postgresql.ru.net/manual/index.html

Novità sul prodotto PostgreSQL

Rilasciate le versioni 2.13 e 3.0.4 di Archiveopteryx. http://www.archiveopteryx.org/2.13 http://www.archiveopteryx.org/3.0.4

PostgreSQL ha dei nuovi driver JDBC. http://jdbc.postgresql.org/changes.html

Rilasciata la versione 2.0.0 di Slony. http://slony.info/

Offerte di lavoro su PostgreSQL per novembre 2008

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

Notizie locali su PostgreSQL

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

Patches applicate

Magnus Hagander ha effettuato i seguenti commit:

  • Aggiunto supporto per il matcching dei certificati server wildcard al nuovo codice SSL. Viene usata la funzione fnmatch() che non é disponibile su tutte le piattaforme (ad esempio Windows); si è quindi importata l’implementazione da NetBSD in src/port.

  • In pgsql/src/interfaces/libpq/fe-secure.c, disabilitato FNM_CASEFOLD. Necessita di una soluzione appropriata in seguito; per adesso il codice è stato solo commentato in modo da far ripartire intanto la buildfarm.

  • Supporto delle espressioni regolari in pg_ident.conf.

Peter Eisentraut ha effettuato i seguenti commit:

  • CLUSTER VERBOSE e corrispondente opzione ‘–verbose’ clusterdb . Jim Cox e Peter Eisentraut.

  • Spostate le informazioni FAQ_AIX nelle istruzioni d’installazione. L’informazione sul perché le librerie condivise siano compilate in un certo modo non era rilevante per gli utenti finali; è stato inserito un link all’archivio delle mailing list in Makefile.shlib.

  • In pgsql/src/test/regress/pg_regress.c, se ‘pg_ctl stop’ fallisce, visualizza un messaggio di errore ed esce (invece di cambiare strada per ignorare lo status d’uscita). Infatti, se questo problema accadesse davvero, la cosa peggiore sarebbe di non vedere lo "score" alla fine dell’esecuzione del test.

  • Aggiunto %expect 0 a tutti i files di input del parser per prevenire il passaggio dei conflitti.

  • In pgsql/src/backend/catalog/sql_features.txt, la feature F442 "Mixed column references in set functions" è adesso supportata.

  • aggiunto in sede di configurazione un controllo per il programma docbook2man, usato nel nuovo build target delle pagine di manuale, basato su XML. Copre tre varianti d’installazione: dai sorgenti, Debian e Fedora.

  • In pgsql/src/backend/catalog/sql_features.txt, marcate come supportate le features relative a WITH/SELECT.

  • In pgsql/src/backend/catalog/sql_features.txt, rimosse dall’elenco le features relative alla CLI visto che nel core non si tiene traccia dell’attività ODBC.

  • In pgsql/src/backend/catalog/sql_features.txt, aggiunto il fatto che PL/Java è un’implementazione di SQL/JRT, e rimossa l’affermazione che PL/pgSQL ha molto a che fare con SQL/PSM.

  • Ridotto il rischio di eseguire accidentalmente dei test di regressione temp-install usando un’altra installazione.

Si sceglie un numero di porta di default calcolata in base al numero di versione, e si fanno alcuni tentativi con altri numeri di porta se quel numero non funziona. Si verifica se si possa stabilire una connessione alla porta prima di far partire il nostro postmaster, al fine di individuare un eventuale altro server in ascolto sulla stessa porta. Per semplificare il codice, rimossa l’opzione –temp-port e usata –port per entrambi i casi temp-install e pre-installed.

Tom Lane ha effettuato i seguenti commit:

  • In pgsql/src/port/Makefile, omesso src/port/pipe.c su piattaforme non Microsoft. È inutile, e su alcune piattaforme (ad esempio Darwin) provoca delle lamentele in merito a dei file object vuoti.

  • Rimosso PGINTERVALSTYLE dal set delle variabili d’ambiente speciali per libpq. Come fatto notare da Peter, aggiungere tali variabili aumenta il rischio di cadute inattese della connessione se si è collegati a server aventi una versione antiquata; inoltre, tale variabile non sembra necessaria poiché non aggiunge funzionalità rispetto a quelle già disponibili tramite PGOPTIONS. La sua rimozione provoca inoltre il trapasso di alcune righe di codice in pg_regress.c, ma ad ogni modo vale probabilmente la pena farlo anche solo per risparmiare una chiamata getenv() per ogni connessione.

  • In pgsql/doc/src/sgml/information_schema.sgml, information_schema.key_column_usage.position_in_unique_constraint era erroneamente documentato come "non implementato", mentre in realtà tale caratteristica è inclusa a partire dalla versione 8.2.

  • In psql, aggiustato il comportamento del codice PQExpBuffer al fine di far ottenere risultati meglio definiti (ad esempio in caso di buffer vuoto "difettoso") se, durante il riempimento del buffer, capita un memory overrun. Il codice precedente si limitava a scartare tacitamente delle porzioni del contenuto del buffer, come riportato dal bug report di Sam Mason. Inoltre, è stato modificato il loop principale di psql al fine di individuare e notificare tali overrun. Probabilmente c’è ancora molto da fare in questa direzione, ma questo é un inizio.

  • Adesso DISCARD ALL scarta anche gli advisory lock. Marko Kreen

  • In pgsql/src/test/regress/pg_regress.c, adesso si verifica se usando l’opzione -c invece di –style si risolve il problema di PGOPTIONS.

  • In pgsql/src/interfaces/libpq/pqexpbuffer.h, modificata la nuova macro PQExpBufferBroken per sopprimere gli warning originati dalle versioni gcc eccessivamente meticolose.

  • In pgsql/src/backend/executor/functions.c, risolto un memory leak minore introdotto da recenti modifiche alle funzioni SQL: il DestReceiver creato durante postquel_start deve essere distrutto durante postquel_end. In un momento di dissolvenza cerebrale ho pensato che se ne occupasse FreeQueryDesc, ma non è così (e non dovrebbe esserlo).

  • In pgsql/doc/src/sgml/ref/discard.sgml, variata la parafrasi di DISCARD ALL per evitare di dare l’impressione che la lista di operazioni equivalenti che viene presentato sia proprio la definizione originaria del comportamento di tale comando. In seguito a un commento di Guillaume Smet.

  • Riportata sulle versioni precedenti la funzionalità di DISCARD ALL legata al rilascio degli advisory lock sopra discussa. Come da discussione.

  • Ripulitore cosmetiche in contrib/isn (non si risolve il problema passbyval)

  • In pgsql/src/backend/optimizer/path/joinrels.c, la mia recente correzione per la pianificazione dei semijoin non funzionava realmente nel caso di una semijoin il cui lato destro non possa essere reso unico — join_is_legal deve controllare ciò prima di decidere di costruire una join, altrimenti avremmo una joinrel che non può essere implementata. In seguito a una segnalazione di Greg Stark.

  • Risolto un errore in uninstall_isn.sql: deve eliminare esplicitamente le famiglie di operatori.

  • Risoluzione parziale degli effetti indesiderati dei cambiamenti di temp-port. ecpg ha ancora bisogno di molto lavoro, ma credo che questa correzione sia sufficiente per dare di nuovo semaforo verde alla buildfarm.

  • Ci siamo assicurati che all’utente arrivi un messaggio di errore appropriato quando si tenta di cancellare una tabella cui fa riferimento un cursore aperto. Risolta di conseguenza l’instabilità del risultato del test di regressione di ecpg, causata da questa svista.

  • Sistemati i test array_agg recentemente aggiunti, assicurandosi che producano risultati stabili indipendentemente dai cambiamenti del piano. Difetto segnalato dai fallimenti intermittenti nella buildfarm su "pigeon" e su altre macchine.

  • In pgsql/src/backend/utils/fmgr/funcapi.c, rimosso un memory context switch inappropriato in shutdown_MultiFuncCall(). Si trattava di una svista introdotta in una patch dello scorso febbraio; l’effetto consisteva in una perdita di memoria se una SRF veniva chiusa prima della fine della query in corso, poiché il codice successivo sarebbe stato eseguito in un contesto più longevo di quanto previsto.

  • Aggiunta una clausola "LIKE = typename" a CREATE TYPE per i tipi base. Questo consente la copia dei dettagli basilari legati alla rappresentazione (typlen, typalign, typbyval, typstorage) da un tipo esistente, invece di doverli elencare esplicitamente nel comando CREATE TYPE. Il motivo immediato è di fornire una soluzione semplice per quei moduli add-on che vogliano definire tipi rappresentati come int8, float4, o float8: dalla versione 8.4 in poi l’apposita impostazione PASSEDBYVALUE è specifica della piattaforma, e pertanto è difficile che uno script SQL sappia esattamente cosa fare. Questa patch risolve l’errore contrib/isn riportato da Rushabh Lathia.

  • Ripulita l’API per oggetti DestReceiver, eliminando l’assunzione che un Portal è un argomento aggiuntivo utile e sufficiente per CreateDestReceiver — semplicemente non lo è in molti casi. Invece si è formalizzato l’approccio di passare separatamente ogni parametro necessario al ricevente. Un beneficio inaspettato di questo cambiamento è che adesso si può dichiarare typedef Portal in una locazione meno sorprendente. Questa patch é soltanto un riarrangiamento del codice e non cambia nessuna funzionalità. Affronterò il vecchio problema HOLD-cursor-vs-toast in una patch successiva.

  • Risolti dblink e tablefunc; adesso non restituiscono il CurrentMemoryContext sbagliato. Segnalazione dai risultati della buildfarm.

  • In pgsql/contrib/tablefunc/tablefunc.c, rifattorizzata crosstab() in modo che costruisca e ritorni un tuplestore invece di usare la modalità value-per-call. Nell’uso normale dovrebbe essere più efficiente, ma il vero problema del codice precedente era che la funzione usciva lasciando attiva la chiamata SPI. Ciò poteva causare problemi in caso di esecuzione simultanea a qualsiasi altro utilizzo di SPI.

Alvaro Herrera ha effettuato i seguenti commit:

  • Nello snapshot manager si usa ResourceOwners invece di tentare un tracciamento manuale. Come bonus aggiunto, il nuovo codice è più breve e più comprensibile, e i loops brutti sono scomparsi. È stato discusso a lungo, ma mai implementato. Era chiaro che bisognava davvero risolverlo dopo il bug report di Pavan Deolasee.

Michael Meskes ha effettuato i seguenti commit:

  • In ecpg, quando si crea un nome struttura varchar, le parentesi graffe devono essere eliminate.

  • In pgsql/src/interfaces/ecpg/preproc/type.c, rimosso strchrnul.

  • In pgsql/src/interfaces/ecpg/preproc/type.c, rimpiazzato strchrnul con strchr.

  • Applicata la patch di Ron Mayer in modo da fondere il nuovo style degli intervalli in ecpg.

  • In pgsql/src/interfaces/ecpg/pgtypeslib/interval.c, interval.c necessita di limits.h.

Heikki Linnakangas ha effettuato i seguenti commit:

  • Basarsi sull’invalidazione relcache per aggiornare la dimensione della cache della FSM.

  • In pgsql/src/backend/storage/buffer/localbuf.c, aggiustato il codice di debug #ifdef-fato per farlo funzionare con i relation fork.

  • In pgsql/src/backend/storage/freespace/freespace.c, non si forza la creazione delle FSM sulle ricerche. Essa verrà comunque creata non appena la prima pagina si riempirà, e ad ogni modo essa è marcata come (quasi) piena.

  • In pgsql/src/backend/catalog/heap.c, risolto il commento obsoleto in merito al troncamento della FSM.

  • In pgsql/src/backend/tsearch/ts_typanalyze.c, risolto il bug nella funzione di raccolta statistiche tsvector, che causava un crash se il campione contiene solo un tsvector contenente un unico lessema.

Patches rifiutate (per adesso)

Nessuno è stato scontentato questa settimana :-)

Patches in coda

Hitoshi Harada e Heikki Linnakangas hanno consegnato uno stormo di patch per le funzioni di windowing.

Ramon Lawrence ha consegnato una nuova versione della sua patch per migliorare le prestazioni degli hash-join multi-batch nel caso di insiemi di dati sghembi.

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

Peter Eisentraut ha consegnato tre versioni di una patch che rende meno fragile il setup dei test di regressione.

Magnus Hagander ha consegnato una nuova patch per correggere LC_TIME su Windows.

Peter Eisentraut ha consegnato e poi ritirato una nuova versione della patch per i tipi distinti, la quale incorpora del lavoro di Jeff Davis.

Alvaro Herrera ha consegnato una patch per mettere a tacere uno warning su una snapshot.

Pavel Stehule ha consegnato una nuova versione della sua patch che implementa i parametri di default per le funzioni.

Koichi Suzuki ha consegnato una nuova versione della sua patch pg_readahead.

Heikki Linnakangas ha consegnato una nuova versione della sua patch per la mappa di visibilità.

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

Magnus Hagander ha consegnato una nuova versione della sua patch che implementa il match tramite wildcard in SSL.

This Post Has 0 Comments

Leave A Reply