PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A extensão de linguagem JavaScript plv8 pode chamar bibliotecas de terceiros?


A linguagem plv8 é confiável, então não há como carregar nada do sistema de arquivos. No entanto, você pode carregar módulos do banco de dados.

Crie uma tabela com o código-fonte de um módulo e carregue-a usando select e eval() . Um exemplo simples para ilustrar a ideia:
create table js_modules (
    name text primary key,
    source text
);

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

Carregue o módulo de js_modules na sua função:
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) 

Você pode encontrar um exemplo mais elaborado com um elegante require() função neste post:A Deep Dive into PL/v8 . . É baseado em plv8.start_proc (veja também um exemplo aqui ).