A Oracle formou uma nova ramificação do SGBD MySQL 9.1.0. As compilações do MySQL Community Server 9.1.0 estão preparadas para todas as principais distribuições do Linux, FreeBSD, macOS e Windows. No âmbito do novo modelo de lançamento implementado no ano passado, o MySQL 9.1 está classificado nas ramificações «Inovação», que também incluirão o próximo lançamento significativo MySQL 9.2. As ramificações de Inovação são recomendadas para aqueles que desejam acessar novas funcionalidades mais cedo, são publicadas a cada 3 meses e têm suporte apenas até a publicação do próximo lançamento significativo (por exemplo, após o surgimento da ramificação 9.1, a ramificação 9.0 deixa de ser suportada). No verão do próximo ano, está previsto o lançamento de uma versão LTS, recomendada para implementações que necessitam de previsibilidade e de um comportamento constante a longo prazo. Em seguida à ramificação LTS, será formada uma nova ramificação de Inovação — MySQL 10.0.
Principais mudanças no MySQL 9.1:
- Na operação «CREATE VIEW» foi adicionada a suporte à expressão «IF NOT EXISTS», permitindo criar uma visão somente se uma visão com o nome especificado ainda não existir e evitar retornar um erro caso a visão já tenha sido criada.
- O carregamento de gatilhos foi interrompido ao executar operações que envolvem apenas leitura. Anteriormente, os gatilhos eram carregados a cada acesso à tabela, resultando em consumo de memória e sobrecarga da CPU em situações em que os gatilhos não eram utilizados (por exemplo, ao executar consultas SELECT). No MySQL 9.1, o processamento e o carregamento de gatilhos foram divididos em duas fases: leitura de metadados do gatilho e análise + execução do gatilho. Os dados obtidos na primeira fase são salvos uma vez e, em seguida, usados em várias instâncias do gatilho. A análise e a execução do gatilho são realizadas apenas para expressões que resultam em alteração de dados. Além disso, para reduzir o consumo de memória, em vez de alocação estática de buffers para o tratamento de erros em gatilhos, foi realizada a transição para alocação dinâmica de memória conforme a necessidade.
- A saída da operação «EXPLAIN» foi expandida, agora exibindo informações sobre o uso da leitura de múltiplos intervalos (multi-range) e a aplicação da estratégia de semijunção (semijoin), na qual, durante as operações JOIN, são processadas apenas as linhas de uma tabela.
- A execução atômica das operações "CREATE DATABASE" e "DROP DATABASE" foi garantida para proteção contra falhas em caso de encerramento inesperado ou surgimento de erros no nível do sistema de arquivos durante a execução dessas operações. Por exemplo, anteriormente, um encerramento inesperado de "CREATE DATABASE" poderia resultar em uma estrutura incompleta e não funcional do armazenamento do banco de dados, necessitando de intervenção manual para limpeza.
- O suporte ao tipo VECTOR foi implementado em procedimentos armazenados escritos em JavaScript. Dados com esse tipo agora podem ser transmitidos em parâmetros de entrada e retorno.
- Foi adicionada a capacidade de autenticação ao conectar-se ao SGBD usando o protocolo OpenID Connect.
- 27 vulnerabilidades foram corrigidas, sendo a mais grave delas (CVE-2024-5535) classificada como de crítica gravidade (9,1 de 10). Essa vulnerabilidade pode ser explorada remotamente sem a necessidade de autenticação. O problema é causado pela leitura de dados fora da área de buffer alocada na biblioteca OpenSSL e leva a um encerramento inesperado ou ao vazamento do conteúdo da memória na resposta após a conexão com servidor especificando parâmetros incorretos do protocolo.
Fonte: opennet.ru
