sql >> Databasteknik >  >> RDS >> PostgreSQL

Kan plv8 JavaScript-språktillägg anropa tredje parts bibliotek?

Språket plv8 är pålitligt så det finns inget sätt att ladda något från filsystemet. Du kan dock ladda moduler från databasen.

Skapa en tabell med källkoden för en modul och ladda den med select och eval() . Ett enkelt exempel för att illustrera idén:

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

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

Ladda modulen från js_modules i din funktion:

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) 

Du kan hitta ett mer utarbetat exempel med en elegant require() funktion i detta inlägg:A Deep Dive into PL/v8 . . Den är baserad på plv8.start_proc (se även ett kort exempel här ).



  1. MySQL:Vad är en omvänd version av LIKE?

  2. Hur man använder Distributed AD för att minska patchtiden i Oracle EBS

  3. Hur Cos() fungerar i PostgreSQL

  4. pg_stat_activity uppdateras inte inom en procedur eller transaktion