Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

== Notiziario settimanale PostgreSQL, 16 novembre 2008 ==


  • From: Gianni Ciolli <gianni(dot)ciolli(at)2ndquadrant(dot)it>
  • To: pgsql-it-generale(at)postgresql(dot)org
  • Subject: == Notiziario settimanale PostgreSQL, 16 novembre 2008 ==
  • Date: Fri, 21 Nov 2008 19:56:27 +0100
  • Message-id: <20081121185627.GA9298@fune> <text/plain>

== Notiziario settimanale PostgreSQL - 16 novembre 2008 ==

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

Presto in Bruxelles si terrà FOSDEM.  Sotto riportiamo i dettagli.

== Novità sul prodotto PostgreSQL ==

Rilasciata la versione 1.2.6 di MicroOLAP Database Designer per
PostgreSQL.
http://microolap.com/products/database/postgresql-designer/

Rilasciato PGUnit.
http://en.dklab.ru/lib/dklab_pgunit/

Rilasciata la versione 1.0.5 beta di PyReplica.
http://pgfoundry.org/projects/pyreplica/

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

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

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

Tom Lane ha effettuato i seguenti commit:

- Risolto un vecchio bug in contrib/sslinfo: X509_NAME_to_text
  liberava troppo presto il buffer BIO_s_mem che stava usando.  

  In una situazione dove non si può fare pg_do_encoding_conversion,
  questo causava la restituzione di dati inutilizzabili. Inoltre,
  modificato in HEAD il codice che faceva la terminazione NULL in modo
  da rendere un pochino più ovvio il procedimento.

- pg_do_encoding_conversion non può restituire NULL (a meno che
  l'input sia NULL); sono stati quindi rimossi alcuni test inutili in
  quel caso.

- In pgsql/src/backend/utils/adt/xml.c, risolti bugs di
  sqlchar_to_unicode e unicode_to_sqlchar: ambedue usavano pg_mblen
  per misurare la lunghezza di un carattere UTF8 (sbagliato, se la
  codifica del database non è UTF8); inoltre unicode_to_sqlchar
  assumeva semplicisticamente che un buffer statico venisse azzerato
  ad ogni utilizzo.

- Aggiunto il supporto per input e output dei valori di tipo interval
  con formattazione aderente allo standard ISO 8601; più precisamente,
  in input è possibile usare il formato alternativo, oppure il formato
  con "disegnatori", e in output si ottiene quest'ultimo formato
  quando IntervalStyle è impostato a iso_8601. Ron Mayer.

- In pgsql/src/backend/utils/mb/mbutils.c, aggiunto un avviso
  specifico in merito all'utilizzo di pg_do_encoding_conversion con
  input non terminato da un NULL. In seguito alla discussione con
  ITAGAKI Takahiro.

- Sistemata una omissione (per trascuratezza) di #include che adesso
  sono necessari.

- Eliminato adjust_appendrel_attr_needed(), il quale non funzionava
  più a partire da quando è stato esteso il meccanismo di appendrel
  con l'aggiunta del supporto per l'ottimizzazione di UNION ALL. 

  Nessuno se n'era accorto, poiché il dato in attr_needed non viene
  realmente usato per i nodi figli in appendrel; quindi ci è sembrato
  più logico toglierlo invece di ripararlo. La correzione è stata
  riportata sulla versione 8.2, poiché in certi casi speciali può
  fallire un Assert.  In seguito all'esame di un esempio da parte di
  Jim Nasby.  Nella HEAD sono stati inoltre eliminati i dati in
  AppendRelInfo.col_mappings, inadeguati a rappresentare le situazioni
  di tipo UNION ALL; meglio dipendere interamente da translated_vars.

- In pgsql/src/backend/optimizer/prep/prepjointree.c, assicurarsi che
  i dati PlaceHolderVars che appaiono nella lista translated_vars di
  una AppendRelInfo vengano aggiornati quando si prende un membro di
  appendrel. Non è chiaro se ciò sia realmente importante, poiché con
  gli output di una relazione figlia di appendrel al momento non si fa
  molto; ma probabilmente se lasciamo i valori sbagliati prima o poi
  saranno causa di problemi.

- Corretta la vecchia decisione di mostrare solo i centesimi di
  secondo nello stile "postgres_verbose" per gli intervalli, e
  corretta analogamente la decisione ugualmente arbitraria di mostrare
  almeno i centesimi di secondo nella gran parte degli stili di
  visualizzazione dei tipi datetime. Questo ha causato qualche piccolo
  cambiamento nei test di regressione corrispondenti. Inoltre,
  parecchio codice ripetitivo in datetime.c è stato unificato in
  subroutines, per chiarezza e semplicità di manutenzione. In 
  particolare, così si è all'incirca dimezzato il numero di segmenti
  di tipo #ifdef HAVE_INT64_TIMESTAMP. Ron Mayer, con qualche maneggio
  aggiuntivo di Tom Lane.

- In pgsql/src/include/catalog/pg_proc.h, dato che abbiamo deciso di
  usare una funzione SQL, per lo meno facciamolo "a rigor di schema".

- In pgsql/src/backend/optimizer/util/predtest.c, mettiamo un limite
  al numero di rami che verranno processatti in clausole AND, OR o
  equivalenti: se ce ne sono troppi (più di 100) allora esci senza
  dimostrare alcunché. In questo modo non consumiamo un tempo O(N^2)
  per tentare di effettuare dimostrazioni su liste molto lunghe o casi
  analoghi. Inoltre, installate un paio di chiamate di tipo
  CHECK_FOR_INTERRUPTS per essere sicuri che un tentativo di
  dimostrazione troppo lungo possa essere interrotto. Preda catturata
  da Sergey Konoplev. La correzione è stata riportata alla 8.2; alla
  8.1 è stata riportata solo l'aggiunta di CHECK_FOR_INTERRUPTS,
  poiché il resto della patch non si applica agevolmente, e comunque
  questa versione non presenta quell'errore.

- In pgsql/src/backend/optimizer/util/predtest.c, implementata una
  cache per i risultati della ricerca di un operatore di paragone di
  dimostrazioni sui predicati inerenti i btree. Il risultato dipende
  solo dai due operatori in input, e la direzione della dimostrazione
  (implicazione o confutazione), quindi è facile installarvi una
  cache. In questo modo si risparmia moltissimo tempo in casi come
  quello evidenziato dall'esempio della lunga lista di NOT-IN,
  segnalato da Sergey Konoplev, dove predtest dedica tutto il suo
  tempo a stabilire più volte che la stessa coppia di operatori non
  può essere usata in alcuna dimostrazione. (Ovviamente questo non
  esclude una complessità asintotico O(N^2)). Non sono convinto che ci
  siano grandi vantaggi quando constraint_exclusion è disattivato, ma
  ad ogni modo si tratta di aggiungere poco codice, per cui potremmo
  anche applicare la cache in tutti i casi.

- In pgsql/src/include/utils/pg_crc.h, le variabili globali menzionate
  in pg_crc.h sono state PGDLLIMPORT-izzate. Credo che questo possa
  risolvere il problema che attualmente affligge pg_trgm nella build
  farm mingw.

- Prevenire le scansioni sincrone durante la costruzione degli indici
  GIN, poiché GIN è ottimizzato per l'inserzione di tuple in ordine
  crescente di TID. Non è chiaro se questa sia la causa soggiacente
  alla segnalazione di Ivan Sergio Borgonovo, ma dei semplici test
  confermano che una scansione che non inizia al blocco 0 può
  rallentare la costruzione degli indici GIN di un fattore tre o
  quattro. Correzione riportata alla versione 8.3; la scansione
  sincrona non esisteva prima di tale versione.

- In pgsql/src/timezone/pgtz.c, e conseguentemente nella vista
  pg_timezone_names, sono stati rimossi i fusi orari che tenevano
  conto del "leap-second". Benché sia possibile usare tali fusi in
  determinate circostanze, ad esempio AT TIME ZONE, essi sono vietati
  in SET TIME ZONE, e il bug #4528 mostra che di fatto questi fusi
  orari possono creare più confusione di quanti problemi possano
  risolvere. Quindi li nascondiamo. (Nota: non li generiamo neanche
  quando installiamo il nostro database di fusi orari. Ma può darsi
  che siano presenti quando si usa un database fornito dal sistema.)

- In pgsql/doc/src/sgml/func.sgml, minime migliorie editoriali per la
  documentazione della patch di array_agg.

- In pgsql/src/backend/utils/adt/array_userfuncs.c, piccole migliorie
  alla chiarezza del codice nelle funzioni array_agg, e aggiunta di un
  commento in merito a quanto questa soluzione interagisce agilmente
  col sistema dei tipi.

- Implementata la forma più basilare di UNNEST, vale a dire
  unnest(anyarray) che restituisce setof anyelement.  Questa
  implementazione non consente l'opzione WITH ORDINALITY, né l'opzione
  di molteplici array in input, come dalle più recenti specifiche
  SQL. Ma si tratta comunque di un sottoinsieme piuttosto utile delle
  funzionalità descritte nelle specifiche, ed è sufficiente per
  mandare in pensione contrib/intagg.

- Di fatto, invece di lamentarci di come l'implementazione dei tipi
  potrebbe memorizzare un puntatore in modo insicuro, si farebbe
  meglio a risolvere il problema. Ogni uso conosciuto di "internal" fa
  riferimento di fatto a un puntatore.

- In pgsql/src/interfaces/ecpg/preproc/Makefile, migliorato un
  commento su quando eliminare i files generati.

- In pgsql/src/backend/commands/conversioncmds.c, adesso CREATE
  CONVERSION controlla che una presunta funzione di conversione tra
  codifiche abbia valore di ritorno VOID. Questa è l'ultima delle
  facili correzioni che io avevo raccomandato nel messaggio
  11870(dot)1218838360(at)sss(dot)pgh(dot)pa(dot)us --- le altre sono state fatte molto
  tempo fa, ma questa mi era sfuggita.

- Il file pgsql/src/interfaces/ecpg/preproc/preproc.y è adesso
  generato automaticamente, quindi è stato tolto dal CVS.

- In CREATE AGGREGATE, il tipo di dato intermedio adesso può essere
  "internal", ma solo se l'utente è superuser. Questo consente ai
  moduli di estensione lo stesso trucco utilizzato da array_agg(). La
  ragione per la restrizione a superuser è che un abuso potrebbe
  causare un crash del sistema collegando tra di loro come aggregato
  due funzioni che usano internal in modo incompatibile. Questa
  restrizione non dovrebbe interferire con alcun utilizzo legittimo,
  poiché ad ogni modo è necessario essere superuser per creare sia la
  transizione che usa internal che le funzioni finali.

- Ridotto contrib/intagg a un semplice wrapper per la funzionalità
  fornita dal core tramite le nuove funzioni array_agg() e unnest().
  Avremmo potuto eliminarlo completamente, ma teniamolo per
  compatibilità ancora per una release o due.

- In pgsql/src/include/utils/pg_crc.h, secondo tentativo per risolvere
  il problema DLLIMPORT in pg_crc.h su Cygwin.

- In pgsql/src/bin/pg_resetxlog/pg_resetxlog.c, introdotta
  un'ulteriore correzione per vedere se riusciamo a far partire di
  nuovo la costruzione delle macchine cygwin. Così si prosegue nel
  filone dei tentativi per far funzionare PGDLLIMPORT in pg_crc.h sia
  in ambiente frontend che in backend.

- In pgsql/doc/src/sgml/libpq.sgml, documentato un "gotcha" che si
  verifica su Windows usando il nuovo supporto per le event procedure
  di libpq: ci si può confondere poiché le procedure esportate hanno
  due diversi indirizzi. In seguito ad Andrew Chernow.

- Fatto funzionare SELECT FOR UPDATE/SHARE sugli alberi di
  ereditarietà, facendo sì che il piano restituisca sia l'oid della
  tabella che il ctid per ogni target di FOR UPDATE che ha tabelle
  figlie. Le tabelle figlie sono tutte elencate nella lista
  ExecRowMark, ma l'esecutore salta quelle che non hanno generato la
  riga attuale. È curioso il fatto che questa restrizione (non certo
  recente) sembra non sia mai stata documentata; quindi non abbiamo
  dovuto cambiare la documentazione.

- In pgsql/src/interfaces/ecpg/preproc/Makefile, aggiunte le
  dipendenze mancanti alla regola di build di preproc.y .

- Modificato UPDATE/DELETE WHERE CURRENT OF: se il cursore è stato
  dichiarato con FOR UPDATE o FOR SHARE, allora viene utilizzata
  l'infrastruttura di FOR UPDATE nell'individuare la riga oggetto
  dell'UPDATE/DELETE. Questo approccio è più flessibile e affidabile
  rispetto a una ricerca sull'albero del piano; ad esempio, permette
  di gestire i cursori di join. Il codice vecchio è stato comunque
  mantenuto per la gestione dei cursori non di tipo FOR-UPDATE. Su
  segnalazione di Robert Haas.

Alvaro Herrera ha effettuato i seguenti commit:

- Aggiunto uno switch --locale a createdb, per semplificare la
  creazione di database aventi diverse locali. Si tratta semplicemente
  di una semplificazione della sintassi rispetto alle opzioni
  --lc-collate e --lc-ctype. Dopo una discussione. In corso d'opera
  sono state inoltre documentate adeguatamente le opzioni --lc-ctype e
  --lc-collate nei documenti SGML, cosa che apparentemente era
  sfuggita (di proposito?) in occasione del loro debutto.

- Corretto un caso di costruzione di stringa nella ricerca testuale.

- In pgsql/src/include/utils/pg_crc.h, aggiornata la URL dell'articolo
  sul CRC di Ross Williams.  Su segnalazione di Devrim GUNDUZ.

- Le tuple pg_attribute sono create adesso in modo regolare, usando
  heap_form_tuple invece di heap_addheader. Dato che questo rimuove
  l'ultima chiamata rimasta a heap_addheader, quest'ultima è stata
  tolta. Modifica estratta dalla patch di Stephen Frost per
  l'attribuzione di privilegi alle singole colonne, con ulteriore
  riordino del codice da parte mia.

Heikki Linnakangas ha effettuato i seguenti commit:

- In pgsql/src/backend/utils/adt/formatting.c, aggiustato il parsing
  dei caratteri del formato 'Q' nel nuovo codice to_timestamp().  Ha
  provocato un crash.

- Cambiati i messaggi di errore, in modo da fargli visualizzare il
  path fisico, tipo "base/11517/3767_fsm", invece dei nomi simbolici
  come "1663/11517/3767/1", su suggerimento di Alvaro. I messaggi
  nelle routine più di alto livello legate a indici, heap e FSM non
  sono stati tuttavia cambiati, poiché ivi il fork è implicito.

- In pgsql/src/backend/postmaster/autovacuum.c, risolto un errore nel
  dimensionamento della struttura shmem di autovacuum (si sbagliava di
  uno). Poteva accadere infatti che un worker dell'autovacuum inviasse
  un segnale SIGUSR1 al processo sbagliato. Report di Zou Yong.
  Correzione riportata sulla versione 8.3.

- In pgsql/src/backend/storage/smgr/md.c, risolta una svista in una
  patch precedente inerente i messaggi di errore; la stringa del path
  non deve essere deallocata prima di passarla a elog.

Michael Meskes ha effettuato i seguenti commit:

- Rimpiazzato il preproc.y sincronizzato manualmente con quello creato
  in automatico dal nuovo script. Adeguati di conseguenza i files dei
  test di regressione.

- In pgsql/src/backend/parser/gram.y, non si usano più ICONST/SCONST
  in regole diverse da Iconst/Sconst.

- In pgsql/src/backend/parser/gram.y, tolti due non-terminals:
  - FloatOnly, usato solo da NumericOnly - adesso è prodotto da
    NumericOnly;
  - IntegerOnly, usato solo da NumericOnly e da una regola di ALTER
    TABLE - il sostituto SignedIcost è già ampiamente utilizzato
    altrove.

- Il file del parser è stato aggiornato a quello generato dall'ultima
  versione di parse.[awk|pl] dalla versione più recente di gram.y.
  Alcune piccole correzioni alla suite dei test.

- Aggiunto uno script pgsql/src/interfaces/ecpg/preproc/parse.pl che
  genera preproc.y da gram.y nel CVS.

- Aggiunti dei files contenenti le modifiche tra gram.y e preproc.y.

- In ecpg, corretto un test per il caso output_filename == stdout.

- In ecpg, abilitato lo script per far generare preproc.y durante il
  build.

Magnus Hagander ha effettuato i seguenti commit:

- In pgsql/src/bin/psql/command.c, adesso psql scrive "SSL connection
  (unknown cipher)" se libpq ha impostato una connessione SSL ma psql
  è compilato senza supporto SSL. Non è proprio un caso d'uso molto
  realistico, ma la patch ha anche il pregio di ridurre gli #ifdef...

- In pgsql/doc/src/sgml/monitoring.sgml, si menziona la colonna
  tup_fetched in pg_stat_database.  Greg Sabino Mullane.

- Corretta in libpq la validazione del certificato per le connessioni
  SSL. Aggiunto un parametro di configurazione "sslverify" per
  controllare tale verifica. Il default è di fare una verifica
  completa. Tolto del codice SSL antico che di fatto non ha mai
  funzionato.

- In pgsql/src/tools/msvc/Mkvcbuild.pm, escluso contrib/intagg dalla
  lista dei file di progetto MSVC che vengono generati, poiché adesso
  è solo un modulo SQL senza codice C.

Andrew Dunstan ha effettuato i seguenti commit:

- Individuato un errore inerente l'incapacità di avere adeguate
  informazioni di linkage per plperl, di solito a causa della mancanza
  del modulo perl ExtUtils::Embed . Correzione riportata sulla
  versione 8.1 e successive.

- In pgsql/src/interfaces/ecpg/preproc/ecpg.trailer, aggiunto un punto
  e virgola mancante, su indicazione di Alex Hunsaker.

Peter Eisentraut ha effettuato i seguenti commit:

- La funzione array_length(), e per compatibilità con SQL anche il
  caso speciale della funzione cardinality(). Questa versione ha
  tuttora il comportamento sospetto di restituire null invece che zero
  nel caso di un array vuoto, ma tale comportamento è ancora oggetto
  di discussione e può darsi che venga rivisto. Jim Nasby, Robert
  Haas, Peter Eisentraut

- In pgsql/doc/src/sgml/dblink.sgml, aggiunti elementi refentrytitle
  alla refentry della pagina. La loro assenza creava dei problemi ai
  tools per la gestione delle pagine di manuale.

- Tolti spazi inutili negli elementi refname, i quali confondevano i
  tools per la gestione delle pagine di manuale.

- In pgsql/doc/src/sgml/Makefile, supporto per i links alle pagine di
  manuale, nel caso in cui una pagina di manuale abbia più di un
  refname. Questo caso non si verifica da nessuna parte, ma potrà
  tornare utile in futuro per gestire SELECT/WITH/TABLE. Funziona sia
  con il vecchio che con il nuovo target delle pagine di manuale (per
  un opportuno valore di "funziona").

- In pgsql/doc/src/sgml/func.sgml, dato che la sezione xmlagg è stata
  spostata, la parola "below" non è più corretta.

- Implementata la funzione di aggregato array_agg, come indica
  SQL:2008, ma senza la clausola ORDER BY. La documentazione è stata
  risistemata, adesso che array_agg e xmlagg hanno caratteristiche e
  semantica simili. Il meglio di Robert Haas, Jeff Davis, Peter
  Eisentraut

- Le pagine di manuale SQL sono adesso sezione 7 di default, e vengono
  spostate in un'altra sezione solo se richiesto dalla piattaforma (il
  modo vecchio era di crearle nella sezione "l" e poi trasformarle
  nella sezione indicata dalla piattaforma). Questo velocizza
  l'installazione nelle piattaforme più diffuse, ed evita alcune
  bizzarrie con i tools delle pagine di manuale e il processo di
  build.

- In pgsql/doc/src/Makefile, dato che doc/src/sgml costruisce la
  documentazione HTML due volte per creare i riferimenti delle voci
  dell'indice, non dobbiamo fare due distinti build.

- Risolto un crash dovuto a xmlconcat(NULL).  Correzione riportata
  sulla 8.3.

Teodor Sigaev ha effettuato i seguenti commit:

- Supporto delle codifiche multibyte per pg_trgm.

== Patches rifiutate (per adesso) ==

Nessuno è stato scontentato questa settimana :-)

== Patches in coda ==

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

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

Hitoshi Harada ha consegnato due nuove revisioni della sua patch
per le funzioni di windowing.

Tom Lane ha consegnato una versione rivista della patch di Simon Riggs
che riduce alcuni lock DDL a ShareLock.

Hiroshi Saito ha consegnato una nuova versione della sua patch per il
locale.

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

Alvaro Herrera ha consegnato una patch per aggiornare pg_filedump in
CVS HEAD.

Pavel Stehule ha consegnato una patch per aggiungere il supporto a
FOUND e GET DIAGNOSTICS al comando RETURN QUERY in PL/PgSQL.

Pavel Stehule ha consegnato una nuova versione delle sue patch
GROUPING SETS.

Teodor Sigaev ha consegnato una nuova versione della sua patch per
emulare gli indici B-tree tramite gli indici GIN, la quale adesso
gestisce un maggior numero di tipi di dato.

Magnus Hagander ha consegnato una nuova versione della sua patch per
implementare il supporto alle regexp nelle usermaps.

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

ITAGAKI Takahiro ha consegnato una nuova versione della sua patch
pg_stat_statements.

Jeff Davis ha consegnato una nuova versione del modulo contrib
auto_explain.

Magnus Hagander e Alex Hunsaker hanno consegnato uno stormo di patch
che estendono e correggono l'implementazione SSL.




Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group