> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Extensões ou Plugins e Componentes

> Quando criar uma extensão VEF em vez de usar as interfaces nativas de plugin ou componente do MySQL.

O VillageSQL é um fork de rastreamento do MySQL e um substituto direto. As interfaces de plugin e componente do MySQL funcionam com o VillageSQL exatamente como funcionam com o MySQL. O VillageSQL fornece o VillageSQL Extension Framework (VEF). Para adicionar novas funcionalidades (como funções SQL personalizadas, tipos personalizados, integrações, etc.), as extensões VEF são o modelo certo.

## O Que Vai Onde

Se você está criando algo novo, crie uma extensão VEF no seu próprio repositório. Plugins e componentes funcionam, mas o VEF é o modelo certo — veja [Por Que Extensões em vez de Plugins e Componentes](#why-extensions-instead-of-plugins-and-components).

Contribuições que pertencem ao repositório do VillageSQL Server:

|                                                                     |                                                                                           |
| ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Melhorias no próprio VEF (novos tipos de hook, capabilities do SDK) | PR para o [repositório do servidor](https://github.com/villagesql/villagesql-server)      |
| Correções de bugs do servidor                                       | Issue ou PR no [repositório do servidor](https://github.com/villagesql/villagesql-server) |

<h2 id="why-extensions-instead-of-plugins-and-components">
  Por Que Extensões em vez de Plugins e Componentes
</h2>

Plugins e componentes do MySQL funcionam no VillageSQL. As extensões VEF oferecem mais:

* **Tipos personalizados** — defina novos tipos de coluna, algo que plugins e UDFs não conseguem fazer
* **Empacotamento** — distribuídas como arquivos `.veb`, instaladas com `INSTALL EXTENSION`
* **Sem reinicialização necessária** — as extensões carregam e descarregam em tempo de execução
* **Versionamento** — declarado no manifesto da extensão, imposto pelo servidor

## Iniciando uma Nova Extensão

O VEF tem dois SDKs, ambos registrando através do mesmo framework:

* **C++** — o [vsql-extension-template](https://github.com/villagesql/vsql-extension-template) é o ponto de partida. Percorra [Criando Extensões em C++](/docs/pt-BR/mysql-8.4/0.0.5/create).
* **Rust** — o [vsql-extension-template-rust](https://github.com/villagesql/vsql-extension-template-rust) é o ponto de partida. Percorra [Criando Extensões em Rust](/docs/pt-BR/mysql-8.4/0.0.5/rust-sdk).

O SDK C++ é mais completo atualmente (agregações, prerun, varargs, variáveis de sistema e de status, keyring, armazenamento de coluna); o SDK Rust cobre extensões apenas de funções e tipos personalizados.

## Se o VEF Não Oferecer Suporte ao Que Você Precisa

O VEF ainda está crescendo. Se você precisa de um hook ou capability que ainda não existe:

* **Abra uma issue** no [repositório do servidor](https://github.com/villagesql/villagesql-server/issues) descrevendo o que você precisa
* **Vote em uma issue existente** se o pedido já estiver lá
* **Envie um PR** adicionando o hook ao VEF — melhorias no framework são bem-vindas no repositório do servidor
