Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks...

63
Rafael Castro Desbravando PG Hooks

Transcript of Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks...

Page 1: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

Rafael Castro

Desbravando PG Hooks

Page 2: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Sobre mim...

● Desenvolvedor (Python, C, …)● DBA PostgreSQL● Criador e mantenedor da ferramenta OmniDB

Page 3: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Sumário

● Introdução a Hooks● Lista de Hooks● Exemplos Úteis● Depurador PL/pgSQL com Hooks● Plus: Background Workers

Page 4: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?

Page 5: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos

Page 6: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos● Tipos

Page 7: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos● Tipos● Operadores

Page 8: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos● Tipos● Operadores● Agregadores

Page 9: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos● Tipos● Operadores● Agregadores● Extensões

Page 10: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos● Tipos● Operadores● Agregadores● Extensões● Ganchos (Hooks)

Page 11: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Como customizar o PG?● Funções / Procedimentos● Tipos● Operadores● Agregadores● Extensões● Ganchos (Hooks)● BG Workers

Page 12: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Introdução

Page 13: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Introdução● Extender / Modificar / Interromper operações

Page 14: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Introdução● Extender / Modificar / Interromper operações● Biblioteca externa escrita em C

Page 15: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Introdução● Extender / Modificar / Interromper operações● Biblioteca externa escrita em C● Carregada com “shared_preload_libraries”

Page 16: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Implementação

Page 17: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Implementação● Ponteiros NULL espalhados pelo código-fonte do PG

src/backend/commands/user.c

Page 18: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Implementação● Bibliotecas apontam ponteiros para funções específicas

Page 19: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Implementação● Função _PG_init() chamada quando PG inicia

Page 20: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Implementação● PG_MODULE_MAGIC - Checagem de compatibilidade

Page 21: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Implementação● Função _PG_fini() chamada quando PG é desligado

Page 22: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Boas práticas● Bibliotecas devem coexistir em harmonia (encadeamento)

Page 23: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Boas práticas● Bibliotecas devem coexistir em harmonia

Page 24: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Hooks - Boas práticas● Hooks que substituem devem chamar função original

Page 25: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks

Page 26: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks● Gerais

○ emit_log_hook: Chamado antes de escrever linha de log

○ shmem_startup_hook: Chamado após PG criar região de memória compartilhada

Page 27: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks● Segurança

○ password_check_hook: Chamado ao executar CREATE ROLE or ALTER ROLE (para mudar senha)

○ ClientAuthentication_hook: Chamado após PG realizar autenticação de usuário (e antes de retornar ao cliente)

Page 28: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks● Gerenciamento de funções

○ fmgr_hook: Chamado antes e logo depois de uma função ser executada (chamado 2x)

Page 29: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks● Planejador

○ explain_get_index_name_hook: Chamado durante explain, para alterar o mecanismo de criação de nomes de índices fictícios

Page 30: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks● Execução

○ ExecutorStart_hook: Chamado antes da execução de um planejamento de query

○ ProcessUtility_hook: Chamado antes da execução de operações do Process Utility, responsável pela execução de DDL

Page 31: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Tipos de Hooks● PL/pgSQL

○ func_beg: Chamado antes da execução de uma função PL/pgSQL

○ stmt_beg: Chamado antes da execução de uma linha de comando do corpo de uma função PL/pgSQL

Page 32: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Exemplos● Contrib: passwordcheck

Page 33: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Exemplos● Michael Paquier: Superuser restrictions

Page 34: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Exemplos● Contrib: auto explain

Page 35: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador PL/pgSQL

Page 36: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador PL/pgSQL● Depurar funções PL/pgSQL utilizando interface gráfica

Page 37: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador PL/pgSQL● Depurar funções PL/pgSQL utilizando interface gráfica● Execução passo a passo

Page 38: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador PL/pgSQL● Depurar funções PL/pgSQL utilizando interface gráfica● Execução passo a passo● Inserir Breakpoints

Page 39: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador PL/pgSQL● Depurar funções PL/pgSQL utilizando interface gráfica● Execução passo a passo● Inserir Breakpoints● Visualizar variáveis

Page 40: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador PL/pgSQL● Depurar funções PL/pgSQL utilizando interface gráfica● Execução passo a passo● Inserir Breakpoints● Visualizar variáveis● Estatísticas de execução

Page 41: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Utiliza-se Hooks PL/pgSQL

○ func_setup○ func_beg○ func_end○ stmt_beg○ stmt_end

Page 42: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

Page 43: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada

Page 44: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada○ Pausa execução de cada linha com os Hooks

Page 45: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada○ Pausa execução de cada linha com os Hooks○ Controla tabela de estatísticas e de variáveis

Page 46: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada○ Pausa execução de cada linha com os Hooks○ Controla tabela de estatísticas e de variáveis

● Cliente 2 (Interface Gráfica)

Page 47: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada○ Pausa execução de cada linha com os Hooks○ Controla tabela de estatísticas e de variáveis

● Cliente 2 (Interface Gráfica)○ Se comunica com Cliente 1

Page 48: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada○ Pausa execução de cada linha com os Hooks○ Controla tabela de estatísticas e de variáveis

● Cliente 2 (Interface Gráfica)○ Se comunica com Cliente 1○ Controla pausa/prosseguimento da execução

Page 49: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● Cliente 1 (PG backend)

○ Executa função a ser depurada○ Pausa execução de cada linha com os Hooks○ Controla tabela de estatísticas e de variáveis

● Cliente 2 (Interface Gráfica)○ Se comunica com Cliente 1○ Controla pausa/prosseguimento da execução

● Como se comunicam?

Page 50: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação● pgAdmin

○ Comunicação cliente/servidor entre clientes● OmniDB

○ Advisory Locks○ Intercalação de aquisição de locks

Page 51: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - Implementação

Cliente 1 Cliente 2SELECT pg_advisory_lock(1) FROM tabela WHERE id = 1

.

.

SELECT pg_advisory_unlock(1) FROM tabela WHERE id = 1

SELECT pg_advisory_lock(1) FROM tabela WHERE id = 1

x

.

SELECT pg_advisory_lock(1) FROM tabela WHERE id = 1

x

x

.

.

Page 52: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Page 53: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Depurador - OmniDBDemonstração...

Page 54: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker

Page 55: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG

Page 56: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG● Processo externo iniciado junto com o PG

Page 57: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG● Processo externo iniciado junto com o PG● Biblioteca externa escrita em C

Page 58: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG● Processo externo iniciado junto com o PG● Biblioteca externa escrita em C● Carregada com “shared_preload_libraries”

Page 59: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG● Processo externo iniciado junto com o PG● Biblioteca externa escrita em C● Carregada com “shared_preload_libraries”● Acesso à memória compartilhada

Page 60: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG● Processo externo iniciado junto com o PG● Biblioteca externa escrita em C● Carregada com “shared_preload_libraries”● Acesso à memória compartilhada● Acesso ao banco com interface interna (SPI)

Page 61: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● Extender funcionalidades do PG● Processo externo iniciado junto com o PG● Biblioteca externa escrita em C● Carregada com “shared_preload_libraries”● Acesso à memória compartilhada● Acesso ao banco com interface interna (SPI)● libpq para instanciar novas conexões e fazer transações

Page 62: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

www.2ndQuadrant.com

PGConf.Brasil 2019

Background Worker● src/test/modules/worker_spi/worker_spi.c

Page 63: Desbravando PG Hooks - PostgreSQL wiki · Biblioteca externa escrita em C. PGConf.Brasil 2019 Hooks - Introdução Extender / Modificar / Interromper operações Biblioteca externa

https://www.2ndQuadrant.com

PGConf.Brasil 2019

Obrigado!

[email protected]