Skip to main content

plv8: Javascript Language

The plv8 extension allows you use Javascript within Postgres.

Overview#

While Postgres natively runs SQL, it can also run other "procedural languages". plv8 allows you to run Javascript code - specifically any code that runs on the V8 Javascript engine.

It can be used for database functions, triggers, queries and more.

Usage#

Enabling#

1. Go to the Database page.2. Click on "Extensions" in the sidebar.3. Search for "plv8".4. Click the toggle.

Creating plv8 functions#

Functions written in plv8 are written just like any other PostgreSQL functions, only with the language identifier set to plv8.

create or replace function function_name() returns void as $$    // V8 Javascript    // code    // here$$ language plv8;

You can call plv8 functions like any other Postgres function:

select function_name();

Examples#

Scalar Functions#

A scalar function is anything that takes in some user input and returns a single result.

create or replace function hello_world(name text) returns text as $$
    let output = `Hello, ${name}!`;    return output;
$$ language plv8;

Executing SQL#

You can execute SQL within plv8 code using the plv8.execute function.

create or replace function update_user(id bigint, first_name text) returns smallint as $$
    var num_affected = plv8.execute(        'update profiles set first_name = $1 where id = $2',         [first_name, id]    );
    return num_affected;$$ language plv8;

Set-returning Functions#

A set-returning function is anything that returns a full set of results - for example, rows in a table.

create or replace function get_messages() returns setof messages as $$
    var json_result = plv8.execute(        'select * from messages'    );
    return json_result;$$ language plv8;

Resources#