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