Carregando...
Sem categoria

Usando Javascript em funções do PostgreSQL PLV8

Instalando o PLV8 na AWS

PLV8 é uma extensão que permite criar funções em JavaScript, CoffeeScript e LiveScript. Para instalar a extensão na AWS basta executar:

--Instalando o suporte para JavaScript
CREATE EXTENSION plv8;
--Instalando o suporte para LiveScript
CREATE EXTENSION plls;
--Instalando o suporte para CoffeeScript
CREATE EXTENSION plcoffee;
--Descobrindo se a instalação teve sucesso:
SELECT plv8_version();

Exemplo de criação de função com PLV8

CREATE OR REPLACE FUNCTION public.sum(primeiro_numero NUMERIC, segundo_numero NUMERIC)
RETURNS bigint
LANGUAGE 'plv8'
VOLATILE
AS $
return primeiro_numero + segundo_numero;
$;

Função para descobrir o valor atual de uma sequência de uma dada coluna

CREATE OR REPLACE FUNCTION public.get_sequence_last_value(_schema TEXT, _table TEXT, _column TEXT)
RETURNS bigint
LANGUAGE 'plv8'
VOLATILE
AS $
var schema_table = `${_schema}.${_table}`;
var sequence_name = plv8.execute(`SELECT pg_get_serial_sequence('${schema_table}','${_column}');`)[0].pg_get_serial_sequence;
var last_value = plv8.execute(`SELECT last_value FROM ${sequence_name}`)[0].last_value;
return last_value;
$;

Referências

Documentação do PLV8 no Github
https://plv8.github.io/

Documentação do PLV8 no PGXN
https://pgxn.org/dist/plv8/doc/plv8.html

Git do PLV8
https://github.com/plv8/plv8

Tutorial no EndPoint
https://www.endpoint.com/blog/2013/11/22/using-javascript-in-postgresql

Uma análise aprofundada das funcionalidades do PLV8
https://rymc.io/2016/03/22/a-deep-dive-into-plv8/

Instalando PLV8 no Ubuntu 18

# Podem haver versões mais novas, vá mudando os números e descobrindo
wget https://github.com/plv8/plv8/archive/v2.3.11.tar.gz
tar -xvzf v2.3.11.tar.gz
cd plv8-2.3.11
make PG_CONFIG=/usr/lib/postgresql/11/pg_config

Instalando via pgxnclient (gerenciador de extensões do PostgreSQL)

apt install postgresql-server-dev-x.x
apt install pgxnclient
pgxn install plv8

Referências

Releases do PLV8
https://github.com/plv8/plv8/releases

Tutorial antigo de instalação
https://gist.github.com/asleepysamurai/5690830

Outro tutorial antigo instalando o PLV8
https://gist.github.com/benjie/588376004859b3699a6a181379e87f77

PostgreSQL 11 + PLV8 no Docker
https://github.com/IonxSolutions/docker-images

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *