PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'estensione del linguaggio JavaScript plv8 può chiamare librerie di terze parti?

Il linguaggio plv8 è affidabile, quindi non c'è modo di caricare nulla dal file system. Tuttavia è possibile caricare moduli dal database.

Crea una tabella con il codice sorgente di un modulo e caricalo usando select e eval() . Un semplice esempio per illustrare l'idea:

create table js_modules (
    name text primary key,
    source text
);

insert into js_modules values
('test', 'function test() { return "this is a test"; }' );

Carica il modulo da js_modules nella tua funzione:

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) 

Puoi trovare un esempio più elaborato con un elegante require() funzione in questo post:A Deep Dive into PL/v8 . . Si basa su plv8.start_proc (vedi anche un breve esempio qui ).