Le langage plv8 est fiable, il n'y a donc aucun moyen de charger quoi que ce soit à partir du système de fichiers. Cependant, vous pouvez charger des modules à partir de la base de données.
Créez une table avec le code source d'un module et chargez-la en utilisant select
et eval()
. Un exemple simple pour illustrer l'idée :
create table js_modules (
name text primary key,
source text
);
insert into js_modules values
('test', 'function test() { return "this is a test"; }' );
Charger le module depuis js_modules
dans votre fonction :
create or replace function my_function()
returns text language plv8 as $$
// load module 'test' from the table js_modules
var res = plv8.execute("select source from js_modules where name = 'test'");
eval(res[0].source);
// now the function test() is defined
return test();
$$;
select my_function();
CREATE FUNCTION
my_function
----------------
this is a test
(1 row)
Vous pouvez trouver un exemple plus élaboré avec un élégant require()
fonction dans ce post :Une plongée profonde dans PL/v8 .
. Il est basé sur plv8.start_proc
(voir aussi un court exemple ici
).