Skip to main content
Instale extensões do VillageSQL para adicionar tipos personalizados, funções e capabilities ao seu banco de dados.

Sintaxe do Comando

Quando VERSION é fornecido, o servidor abre {name}-{version}.veb, compara a versão com o manifesto e aborta se elas diferirem:
Omita a cláusula para instalar {name}.veb, ou, se apenas VEBs versionados estiverem presentes, o único {name}-{version}.veb. Consulte Selecionando uma Versão.
As extensões são distribuídas como arquivos .veb (VillageSQL Extension Bundle) que contêm bibliotecas compiladas e metadados.

Selecionando uma Versão

Os arquivos VEB em veb_dir podem ser nomeados como {name}.veb (sem versão) ou {name}-{version}.veb (versionado). Para instalar um VEB versionado específico, adicione uma cláusula VERSION:
Com VERSION, o servidor abre vsql_uuid-0.2.0.veb e verifica se a versão em seu manifest.json corresponde a 0.2.0. Sem VERSION, o servidor resolve o arquivo da seguinte forma:
  • Se {name}.veb existir, instale-o; a versão é lida de seu manifest.json.
  • Caso contrário, se existir exatamente um {name}-{version}.veb, instale-o; a versão no nome do arquivo é verificada contra seu manifest.json.
  • Caso contrário, a instalação falha e você deve especificar uma versão.
Se vários VEBs versionados estiverem presentes e nenhum VEB sem versão existir, INSTALL EXTENSION falha com Multiple versions of extension '<name>' found in '<dir>'; specify a version with INSTALL EXTENSION <name> VERSION 'x.y.z'. Execute novamente com uma cláusula VERSION explícita.

Convenções de Nomenclatura de Extensões

O VillageSQL usa diferentes convenções de nomenclatura em diferentes contextos:
  • Comandos SQL: Use sublinhados: INSTALL EXTENSION vsql_uuid
  • Nomes de repositório: Use hifens: github.com/villagesql/vsql-uuid
  • Nomes de arquivo: Use sublinhados: vsql_uuid.veb
  • manifest.json: Use sublinhados para corresponder ao SQL: "name": "vsql_uuid"
Exemplo:

Privilégio Necessário

INSTALL EXTENSION, UNINSTALL EXTENSION e ALTER EXTENSION são protegidos pelo privilégio dinâmico EXTENSION_ADMIN. Essas instruções carregam código nativo de extensão no servidor em execução, portanto exigem um privilégio administrativo e não estão disponíveis para contas sem privilégios. EXTENSION_ADMIN é um privilégio dinâmico concedido no escopo global (ON *.*):
SUPER é aceito como alternativa para compatibilidade retroativa, então uma conta que já possui SUPER pode executar essas instruções sem uma concessão separada. Um diretório de dados criado por --initialize ou --initialize-insecure concede EXTENSION_ADMIN diretamente a root@localhost, portanto um servidor novo não precisa de concessão manual. Quando um diretório de dados existente é atualizado no lugar, toda conta de usuário que possui SUPER recebe EXTENSION_ADMIN — mas somente se nenhuma conta já o possuir, de modo que um servidor atualizado uma vez não é preenchido novamente em atualizações posteriores. As contas de sistema reservadas mysql.* são excluídas. Uma conta sem nenhum dos privilégios é rejeitada antes que qualquer trabalho de extensão comece:
Revogue o privilégio da mesma forma:
Uma revogação tem efeito imediato, não na próxima conexão. O servidor verifica EXTENSION_ADMIN/SUPER contra as concessões atuais da conta em cada instrução DDL de extensão, portanto uma sessão existente não mantém o privilégio após uma revogação — sua próxima instrução falha com o mesmo ERROR 1227 (42000) mostrado acima.

Pré-requisitos

  • Instância do VillageSQL Server em execução
  • Acesso administrativo (root ou equivalente)

Instalando Extensões Internas

As extensões internas incluídas com o VillageSQL já estão no veb_dir. Basta habilitá-las:

Verifique a Instalação

Saída:

Teste a Funcionalidade

Instalando Extensões Externas

Para extensões baixadas ou compiladas separadamente:
Seu servidor deve ter veb_dir configurado antes de você poder instalar extensões externas. Consulte Configurando o veb_dir.

1. Copie o Arquivo .veb

Localize o diretório de extensões do seu servidor e copie o arquivo .veb para ele:

2. Instale a Extensão

Para fixar a versão esperada, útil em CI ou implantações com scripts, inclua a cláusula VERSION:
Se o manifesto reportar uma versão diferente, a instalação falha e nada é registrado:
Este é o caminho do arquivo alternativo (nenhum {name}-{version}.veb existe) — um caminho de código diferente do erro Version mismatch in '<file>' mostrado anteriormente, que ocorre quando o próprio arquivo versionado existe.

3. Verifique a Instalação

Solução de Problemas

Para mais soluções de problemas, consulte Gerenciando Extensões.

Próximos Passos

Gerenciando Extensões

Monitore e solucione problemas de extensões instaladas

Extensões Disponíveis

Navegue pelas extensões que você pode instalar

Criando Extensões em C++

Compile suas próprias extensões