PostgreSQL 9.2: il meta comando \ir in psql

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.

This Post Has 0 Comments

Leave A Reply