> ## 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.

# Política de Versões

> Entenda o esquema de versionamento do VillageSQL e a matriz de compatibilidade com o MySQL.

## Visão geral

O VillageSQL segue políticas claras de versionamento e compatibilidade para ajudar você a tomar decisões bem fundamentadas sobre implantação e atualizações.

## Versionamento do VillageSQL

O VillageSQL usa o [Versionamento Semântico](https://semver.org/) (SemVer) para comunicar a natureza e o impacto das mudanças em cada lançamento.

### Formato da versão

As versões seguem o formato: **MAJOR.MINOR.PATCH**

```
0.0.1
│ │ │
│ │ └─ PATCH version
│ └─── MINOR version
└───── MAJOR version
```

### Regras de incremento de versão

* **Versão MAJOR** (por exemplo, 1.0.0 → 2.0.0): mudanças incompatíveis que podem exigir modificações no código ou migrações de banco de dados
* **Versão MINOR** (por exemplo, 0.1.0 → 0.2.0): novos recursos e funcionalidades adicionados de forma compatível com versões anteriores
* **Versão PATCH** (por exemplo, 0.0.1 → 0.0.2): correções de bugs e pequenas melhorias compatíveis com versões anteriores

<Note>
  O VillageSQL está atualmente em desenvolvimento pré-1.0 (versão 0.x.x). Durante essa fase, as interfaces de API e de extensões podem mudar com mais frequência à medida que estabilizamos a plataforma.
</Note>

### Builds de desenvolvimento

Versões com um sufixo de pré-lançamento (por exemplo, `0.0.6-dev`) são builds de desenvolvimento. Por padrão, o servidor bloqueia atualizações a partir de um banco de dados inicializado com um build de desenvolvimento. Os builds de desenvolvimento não são testados quanto à compatibilidade de atualização e podem incluir mudanças incompatíveis de esquema ou de protocol.

Para permitir isso, inicie o servidor com `--villagesql-allow-unsafe-dev-upgrade`:

```bash theme={null}
mysqld --villagesql-allow-unsafe-dev-upgrade --datadir=/path/to/data
```

Sem a flag, o servidor sai com um erro se detectar um banco de dados de versão de desenvolvimento:

```
Upgrading from a development version (0.0.6-dev) is not allowed. Use --villagesql-allow-unsafe-dev-upgrade to permit this.
```

Com a flag, o servidor registra um aviso e prossegue:

```
Upgrading from a development version (0.0.6-dev); --villagesql-allow-unsafe-dev-upgrade was specified.
```

O servidor sai com um erro se a flag for especificada, mas a versão atual não for um build de desenvolvimento:

```
--villagesql-allow-unsafe-dev-upgrade specified, but current version (0.0.3) is not a development version.
```

Ou se nenhuma atualização de esquema estiver sendo realizada:

```
--villagesql-allow-unsafe-dev-upgrade specified, but no upgrade is being performed.
```

<h3 id="minimal-upgrades">
  Atualizações mínimas
</h3>

Iniciar o servidor com `--upgrade=MINIMAL` ignora as etapas de atualização que não são
absolutamente necessárias. As atualizações de esquema do VillageSQL não estão entre as etapas
ignoradas. Quando uma atualização do servidor é necessária e o servidor é iniciado nesse modo,
ele registra um aviso informando que ignorou a atualização do servidor e, em seguida, executa as
atualizações de esquema do VillageSQL se a versão de esquema do VillageSQL armazenada não corresponder à
versão do build.

```bash theme={null}
mysqld --upgrade=MINIMAL --datadir=/path/to/data
```

Se a atualização de esquema do VillageSQL falhar nesse modo, o servidor aborta a inicialização.
Um datadir inicializado por um build de desenvolvimento continua sendo recusado nesse modo.
Inicie com `--villagesql-allow-unsafe-dev-upgrade` para permitir isso.

<h3 id="code-base-changes">
  Mudanças de base de código
</h3>

Cada versão do VillageSQL está vinculada a uma base de código — o fork upstream sobre o qual o
servidor é compilado. Por exemplo, `mysql-9.7_0.0.6` é a versão 0.0.6 da base de código
`mysql-9.7`. Números de versão de bases de código diferentes não são comparáveis, portanto uma
mudança entre bases de código não é uma atualização suportada: você pode atualizar de
`mysql-9.7_0.0.5` para `mysql-9.7_0.0.6`, mas não de `mysql-9.7_0.0.6` para
`mysql-8.4_0.0.6`.

Um diretório de dados registra a base de código do servidor que o criou, como
[`villagesql_schema_version`](/docs/pt-BR/mysql-9.7/stable/reference#villagesql_schema_version).
Se você iniciar um servidor compilado a partir de uma base de código diferente nesse diretório de dados,
a inicialização falha e o log de erros nomeia as duas versões, no mesmo formato `{codebase}_{version}` usado por `villagesql_schema_version`:

```
Cannot upgrade the VillageSQL schema across code bases: this data directory was created by a <data-directory-version> build, but this server is a <server-version> build. Use the original server binary for this data directory.
```

Não há uma forma suportada de mover um diretório de dados entre bases de código. Continue
usando um binário de servidor da base de código que o criou. `--upgrade=MINIMAL`
não contorna essa verificação.

## Compatibilidade de extensões

As extensões do VillageSQL são específicas de cada versão. Uma extensão compilada para uma versão do VillageSQL pode não funcionar com outra versão.

Ao atualizar o VillageSQL:

1. Verifique a compatibilidade da extensão com a nova versão
2. Atualize ou recompile as extensões conforme necessário
3. Teste as extensões em um ambiente de desenvolvimento antes da implantação em produção

Consulte o [Guia de Atualização](/docs/guides/upgrade) para procedimentos detalhados de atualização.
