Apêndice P. Biblioteca de funções definidas pelo usuário

Índice

P.1. Validação da inscrição eleitoral em C
P.2. Validação do CPF em C
P.3. Validação do CPF em PL/pgSQL
P.4. Validação do CPF em PL/Tcl
P.5. Validação do CNPJ alfanumérico em C
P.6. Extensão para validação do CPF e do CNPJ alfanumérico em C
P.7. Cálculo dos dígitos de autocontrole (DAC) dos boletos em C
P.8. Agregações definidas pelo usuário em SQL
P.8.1. Agregação com concatenação de texto
P.8.2. Agregação com concatenação de inteiros
P.8.3. Agregação com geração de histograma

Autor.  Anexo escrito pelo tradutor, não fazendo parte da documentação original.

Esse anexo apresenta algumas das funções desenvolvidas para o PostgreSQL presentes em suas respectivas snippets no GitLab.

São funções definidas pelo usuário, que podem ser compiladas em objetos dinamicamente carregáveis (também chamados de bibliotecas compartilhadas), e vinculadas ao servidor PostgreSQL para serem chamadas para executar como funções SQL. O formato de chamada dessas funções é definido pela instrução SQL CREATE FUNCTION, que as liga ao servidor.

Pode ser usado o utilitário pg_config para mostrar a localização dos arquivos de cabeçalho da linguagem C das interfaces cliente, programação servidor, e de outros arquivos, como está mostrado a seguir usando um servidor PostgreSQL instalado no Debian 12.

$ pg_config --help | grep include
  --includedir          mostra o local dos arquivos de cabeçalho C para o cliente
  --pkgincludedir       mostra o local de outros arquivos de cabeçalho C
  --includedir-server   mostra o local dos arquivos de cabeçalho C para o servidor

$ pg_config --includedir --pkgincludedir --includedir-server --pkglibdir --sharedir
/usr/include/postgresql
/usr/include/postgresql
/usr/include/postgresql/18/server
/usr/lib/postgresql/18/lib
/usr/share/postgresql/18

Para poder compilar os programas escritos para o PostgreSQL 18 na linguagem C no Debian deve ser instalado o pacote postgresql-server-dev-18 através do comando sudo apt-get install postgresql-server-dev-18.