Versão 85

Alterações significativas

Revisão dos índices de integridade referencial

Os índices de integridade referencial passam a ser criados com uma cláusula de filtro para ignorar os registros com valor nulo na coluna referenciada, caso a coluna seja do tipo nullable e o banco de dados seja PostgreSQL ou Microsoft SQL Server. Essa alteração tem o objetivo de reduzir o custo de armazenamento desses índices.

Essa modificação forçará a recriação de todos os índices de integridade referencial, o que pode ser um processo demorado dependendo do tamanho da base de dados. É recomendado que essa atualização seja aplicada com as opções “Criar índices online” e “Remover índices online” ativas e seja realizada em um horário oportuno de manutenção, buscando minimizar o impacto para os usuários finais do sistema. Bancos de dados Oracle já possuem esse comportamento por padrão e não são afetados por essa alteração.

Melhorias

Administração do sistema

  • Foi criado o botão “Verificar integridade” no processo “Administração > Scripts agendados > Agendador de scripts” com o objetivo de verificar a integridade do banco de dados utilizado para armazenar os agendamentos dos scripts. Caso sejam encontrados problemas de integridade que possam ser corrigidos automaticamente, será dada a opção de realizar a reparação do banco de dados. O sistema também passa a criar uma cópia de segurança desse banco de dados durante a inicialização do Engine. Mais detalhes no manual Agendador de scripts .
  • O processo “Administração > Base de dados > Tabelas e índices” passa a permitir filtrar os índices não utilizados pelo seu tamanho.
  • Foi criado o manual Balanceadores de carga e proxies reversos com o objetivo de detalhar mais claramente os requisitos e as recomendações de configuração de balanceadores de carga e proxies reversos utilizados em conjunto com o sistema.

Desenvolvimento

Engine

  • A classe ZipFile passa a suportar a criação e extração de arquivos Zip com criptografia por meio de senha.
  • O Engine Linux passa a ser compatível com o banco de dados Microsoft SQL Server.
  • O sistema deixa de sugerir a criação de índices nos campos “iVersion” e “VERSAO” das tabelas por padrão. Esses índices não eram necessários para o funcionamento básico do sistema e aumentavam o tamanho da base de dados desnecessariamente. Os índices desses campos devem ser declarados no processo “Desenvolvimento > Base de dados > Índices” caso sejam necessários para otimizar processos e relatórios que necessitem filtrar tabelas exclusivamente por esses campos. Os índices existentes serão sugeridos para remoção caso não sejam declarados.
  • Foi criado o módulo markdownToHtml com o objetivo de gerar um documento HTML a partir de um Markdown .
  • Foi criado o módulo parseUserAgent com o objetivo de interpretar um user-agent e extrair as informações do navegador, dispositivo e sistema operacional de forma estruturada.
  • A mensagem de erro de falha de conexão do Engine passa a indicar mais claramente o motivo do erro quando o endereço utilizado apontar para um servidor desconhecido ou para um proxy reverso que não esteja configurado corretamente para encaminhar as conexões para o Engine.

Web Framework

  • A pesquisa global do sistema passa a priorizar a exibição das categorias que apresentem os resultados mais próximos do valor pesquisado. Ela também passa a apresentar apenas os resultados que contenham todos os termos pesquisados.

Defeitos corrigidos

Administração do sistema

  • A abertura de processos que estendem o “Explorador de classes” poderia falhar com o erro “O valor buscado não existe na estrutura da árvore”.

Desenvolvimento

Engine

  • A exibição da página “Requests” do Manage falhava caso a propriedade referrer de uma requisição fosse informada com um valor com mais de 150 caracteres.
  • O uso intenso das classes HtmlSanitizer, Email e OAuth2Client poderia gerar um consumo elevado de memória do Engine.
  • A leitura da propriedade Request.prototype.body poderia provocar instabilidade no Engine caso fosse realizada fora do contexto do atendimento de uma requisição HTTP. Agora o seu uso fora desse contexto passa a gerar o erro “Request object is not available”.

Web Framework

  • Após realizar a mudança da senha expirada de um usuário, o bloqueio da sessão desse usuário poderia exibir novamente um pop-up para alteração da senha.
  • Links escritos em campos com controlType igual a none não funcionavam corretamente.
  • Ao encerrar um processo com um botão com timer ativo poderia ocorrer o erro “Cannot read properties of null (reading ’name’)”.
  • A barra de edição da grade, fixa no rodapé, poderia sobrepor os campos que recebiam o foco durante a edição, dependendo da posição do campo na tela.
  • Os botões desativados de processos não apresentavam os textos de ajuda definidos por hint ou help ao passar o mouse sobre eles.

Outras alterações

Desenvolvimento

  • O build do sistema passa a ignorar o campo “Atualização completa requer todos os produtos” da configuração de atualização do sistema e passa a sempre exigir que todos os testes unitários sejam executados com sucesso, eliminando a possibilidade de builds parciais.

Engine

  • A grade de dados da IDE embarcada do Engine passa a gerar erro se forem informadas datas inferiores a 01/01/0100.
  • A versão mínima do PostgreSQL recomendada para uso no sistema passa a ser 14. As versões 12 e 13 continuam a ser suportadas, mas é recomendado que os SGBDs que estejam utilizando essas versões sejam atualizados para a versão mais recente do PostgreSQL.
  • O campo iSupportEmail da tabela iLicense e a tabela iHistDataRel foram removidos, pois deixaram de ser utilizados no processo de build do sistema.
  • Os pacotes @nginstack/engine-node , @nginstack/build-tools e @nginstack/dev-tools , utilizados nas rotinas de builds automatizados do sistema, passam a requerer o Node 24 ou superior.
  • O banco de dados utilizado para armazenar os agendamentos de scripts do sistema passa a ser gravado no subdiretório “scheduler” do diretório de dados do Engine, em vez do subdiretório “dbs”.
  • No uso da classe Enginelet, a JVM passa a ser carregada pelo Engine com a opção “java.net.preferIPv4Stack” ativa por padrão. Essa alteração tem o objetivo de melhorar a compatibilidade do sistema com serviços de terceiros que não implementam o protocolo IPv6 corretamente.