2ndQuadrant » psql https://blog.2ndquadrant.it Il blog sui database di 2ndQuadrant Italia Thu, 25 Jan 2018 11:36:59 +0000 en-US hourly 1 http://wordpress.org/?v=4.3.15 PostgreSQL 9.2: il meta comando \ir in psql https://blog.2ndquadrant.it/postgresql-9-2-il-meta-comando-ir-in-psql/ https://blog.2ndquadrant.it/postgresql-9-2-il-meta-comando-ir-in-psql/#comments Mon, 20 Aug 2012 08:00:28 +0000 http://blog.2ndquadrant.it/?p=1243 psql è il client PostgreSQL a linea di comando più popolare al mondo.

La versione 9.2 di psql introduce una piccola funzionalità che porterà grandi vantaggi all’organizzazione dei propri script SQL: la possibilità di includere file con percorsi relativi al corrente grazie al meta comando \ir.

Il principale vantaggio di questa novità riguarda l’opportunità di eseguire un file con psql da qualsiasi posizione sul file system.

Supponiamo di voler scrivere delle funzioni SQL tenendo traccia degli unit test relativi (usate pgTap, non è vero? :)). Scriviamo le funzioni (nel nostro caso una sola, per semplicità) in un file chiamato functions.sql, che si preoccuperà di includere lo script con i test da una sottodirectory.

Ecco un semplice esempio:

BEGIN; 

CREATE OR REPLACE FUNCTION f(_x INTEGER)
RETURNS BOOLEAN LANGUAGE SQL IMMUTABLE 
AS $BODY$

    SELECT CASE
        WHEN $1 < 10
            THEN True
            ELSE False
        END;

$BODY$;

-- Ecco l'inclusione relativa!!!
\ir pgtap/unittest.sql

ROLLBACK;

Il file unittests.sql conterrà invece il codice pgTap per eseguire i test:

SELECT plan(5);

SELECT is(f(1), True);
SELECT is(f(5), True);
SELECT is(f(10), False);
SELECT is(f(11), False);
SELECT is(f(34), False);
        
SELECT * FROM finish();

Possiamo eseguire lo script da qualunque posizione del file system, con:

psql -f /path/to/functions.sql

Il file con i test verrà incluso con un percorso relativo a quello di functions.sql.

In conclusione, il comando \ir permette inoltre di organizzare in maniera più elegante il codice SQL, sfruttando l'inclusione in directory relative in base alle esigenze.

]]>
https://blog.2ndquadrant.it/postgresql-9-2-il-meta-comando-ir-in-psql/feed/ 0
PostgreSQL 8.4: Le altre novità https://blog.2ndquadrant.it/postgresql_84_le_altre_novita/ https://blog.2ndquadrant.it/postgresql_84_le_altre_novita/#comments Thu, 25 Jun 2009 12:56:53 +0000 http://2ndblog.dev.xcon.it/postgresql_84_le_altre_novita/ Prima del rilascio di PostgreSQL 8.4, atteso per la prossima settimana, ecco l’ultimo articolo della serie sulle novità introdotte dalla prossima versione del "sistema di gestione di database open-source più avanzato al mondo".

Dopo avere trattato le novità in materia di SQL, di amministrazione e di stored procedure, cercherò di elencare alcune fra le restanti novità di PostgreSQL 8.4. In particolare:sicurezza, performance e strumenti a disposizione per gli utenti (come psql).

Prestazioni

Come ogni evoluzione precedente, anche Postgres 8.4 è stato oggetto di cambiamenti volti a migliorarne le prestazioni e le performance. Tra le modifiche principali, spiccano:

  1. utilizzo di metodi basati hash per interrogazioni di tipo SELECT DISTINCT, UNION/INTERSECT/EXCEPTION (in precedenza, per queste operazioni Postgres era costretto a ordinare i dati e quindi ad eliminarli per ottenere valori distinti);
  2. il valore di default del parametro default_statistics_target per il planner è stato aumentato a 100, e il valore massimo da 1000 a 10000 (utile per data warehouse)
  3. ottimizzazione del planner per query EXISTS/NOT EXISTS e sub-select;
  4. migliorate le prestazioni per operazioni di caricamento di massa (bulk load).
Permessi a livello di colonna

Al fine di proteggere dati sensibili e di garantire un maggiore controllo sull’accesso agli stessi da parte degli utilizzatori di database, gli amministratori sono finalmente in grado di concedere o revocare permessi di lettura, scrittura e aggiornamento su di un singolo campo di una tabella.

Maggiori approfondimenti:

Autenticazione SSL

Gli utenti possono essere ora autenticati utilizzando certificati SSL. Gli amministratori possono definire politiche di accesso basate su specifici certificati SSL. Inoltre, PostgreSQL 8.4 supporta le catene di certificati SSL.

Ripristino in parallelo (parallel restore)

pg_restore supporta la modalità di processing parallelo, permettendo il caricamento dei dati e la creazione degli oggetti all’interno del database in diversi flussi paralleli. A seconda dell’hardware a disposizione e della struttura del database, questa funzionalità permette ridurre la durata del ripristino di file di backup fino a 8 volte rispetto al restore tradizionale su singolo processo. Si noti che il restore parallelo di PostgreSQL 8.4 può essere utilizzato anche per operazioni di ripristino di database su Postgres 8.3 e 8.2.

È possibile abilitare il processing parallelo specificando il numero di job da riga di comando, con l’opzione -j o --jobs.

Documentazione per l’applicazione pg_restore.

Miglioramenti a psql (applicazione client da console)

L’applicazione psql, la più utilizzata dagli amministratori di database PostgreSQL, è stata oggetto di notevoli migliorie. Di seguito è fornita una lista delle principali modifiche:

  1. migliorata la gestione delle linee di comando e dei caratteri di tabulazione
  2. aggiunte informazioni sul tipo di memorizzazione su disco delle colonne (i.e. plain, extended, ecc.)
  3. migliorata la visualizzazione delle sequenze
  4. migliorati la gestione e il controllo dell’opzione timing
  5. aggiunta la visualizzazione dei valori accettati per i tipi di dato enum
  6. aggiunta la visualizzazione della dimensione di una tabella (escluse tabelle collegate e indici), con il comando dt+
  7. il comando d NOME_TABELLA permette di visualizzare le chiavi esterne collegate a campi della tabella corrente (molto utile e comodo per vedere i vincoli di integrità referenziale direttamente dalla tabella master)
  8. aggiunta la visualizzazione della dimensione del database e dei relativi tablespace, rispettivamente con i comandi l e l+
  9. migliorata la funzionalità di auto-completamento per tabelle su schemi multipli
  10. rimossi gli oggetti di sistema dalla visualizzazione nei comandi della famiglia d: ad esempio df mostrerà soltanto le funzioni definite dall’utente e non più anche quelle di sistema (finalmente!), visualizzabili con il comando dfS
  11. aggiunta la possibilità di editare direttamente da psql le funzioni utilizzando l’editor preferito con il comando ef NOME_FUNZIONE

Finalmente, siamo giunti alla fine di questo speciale. Spero di avere reso giustizia agli sviluppatori di PostgreSQL e alle novità da loro introdotte (circa 300!) in questo anno e mezzo di sviluppo della versione 8.4. E soprattutto spero che questi articoli in italiano possano avvicinare nuovi utenti a PostgreSQL.

A questo punto, non ci resta che aspettare l’uscita di PostgreSQL 8.4, attesa per la fine di giugno. Ciao!

Questo articolo è una traduzione da me riadattata del documento "What’s new in 8.4" del PostgreSQL Global Development Group. Ringrazio inoltre Hubert Lubaczewski per la serie di articoli "Waiting for 8.4".

]]>
https://blog.2ndquadrant.it/postgresql_84_le_altre_novita/feed/ 0