Versão 40

Novidades

Scratchpads

A extensão do VS Code passa a contar com os Scratchpads, um novo conceito que cumprirá o papel que hoje é desempenhado pela guia iDBC SQL.

Scratchpad example

Mais detalhes em https://nginstack.com/pt/docs/vscode/scratchpads/.

Melhorias

Desenvolvimento

  • Os processos de atualização passam a suportar a criação de campos do tipo int64. Esses campos são criados na base de dados com o tipo bigint, se o SGBD for PostgreSQL ou Microsoft SQL Server, ou com o tipo number(19), se for o Oracle.
  • A criação de índices online passa a ser permitida no PostgreSQL e no Microsoft SQL Server, nesse último apenas na edição Enterprise. Também passa a ser suportada a remoção de índices online nos SGBDs que têm essa funcionalidade. A criação e remoção de índices online evita o bloqueio das tabelas indexadas, permitindo a utilização do sistema enquanto a operação é realizada.
  • Os processos de atualização passam a realizar todas as alterações de colunas de uma tabela em uma única transação, reduzindo o processamento necessário para realizar esse tipo de alteração.
  • Os nomes dos índices sugeridos pelo sistema passam a ser determinísticos, garantindo que índices equivalentes tenham o mesmo nome em bases de dados distintas. Esse novo comportamento passa a permitir a comparação da utilização dos índices entres bases de dados diferentes e a utilização de hints de consultas que dependam do nome do índice. O processo de atualização de sistema renomeará automaticamente os índices existentes para os novos nomes adotados.
  • Os índices da base de dados agora podem ser declarados no cadastro “Desenvolvimento > Bases de dados > Índices”, tornando desnecessária a alteração de arquivos do tipo x-model e x-class para esse fim. O uso desse cadastro passa a ser recomendado em relação às definições em arquivos, pois ele tem as seguintes vantagens:
    • Índices são nomeados.
    • O propósito e o uso do índice é documentado, permitindo que no futuro possa ser reavaliado se o índice ainda é relevante ou se ele pode ser excluído.
    • Índices podem ser declarados com um predicado de filtro. Índices filtrados ou parciais são suportados apenas no SGBDs PostgreSQL e Microsoft SQL Server, sendo ignorados na utilização do Oracle.
    • Índices podem ser restringidos para serem criados apenas em SGBDs específicos.
    • Índices podem ser desativados pelo administrador ou DBA da base de dados caso não exista benefício na utilização deles.
  • Os processos de atualização passam a exibir os tipos de dado das colunas no padrão SQL, tornando explícita a diferença entre tipos que são unificados pelo modelo de dados do Engine, como o caso do tipo string que pode ser definido no SGBD como char ou varchar.
  • Os processos de atualização passam a configurar as chaves primárias e restrições de colunas caso elas não estejam definidas corretamente na base de dados.
  • O e-mail com o resultado da atualização de sistema enviado pelas rotinas de atualização automáticas passa a conter todas as informações que são exibidas pelo processo “Desenvolvimento > Atualização > Atualizar sistema”.
  • Com o objetivo de reduzir a janela de manutenção necessária para a atualização do sistema, a etapa de criação e remoção de índices passa a ocorrer no final do processo de atualização, após a sincronização dos registros de chave negativa associados aos produtos. Caso o SGBD suporte a criação de índices online, será informado ao usuário que a base de dados já pode ser utilizada durante esta etapa, sendo esperada apenas uma degradação de desempenho enquanto os índices estiverem sendo criados.
  • O relatório “Desenvolvimento > Base de dados > Índices na base de dados” passa a exibir mais informações dos índices, como o predicado do filtro, o estado e o tipo da restrição que criou o índice, caso ele esteja associado a uma.

Engine

  • Foi criado o método ProductManager.prototype.getProductNameFromKey com o objetivo de obter o nome do produto associado a uma chave negativa do sistema.
  • Foi criado o método Crypto.randomBytes que gera uma sequência de bytes aleatórios.
  • Foram alterados os métodos ‘MD5.prototype.update’ e ‘SHA1.prototype.update’, que passam a retornar o valor this.
  • A função JSON.stringify passa a suportar valores do tipo DBKey, convertendo-os para a sua representação numérica.
  • A função JSON.stringify, no runtime Javascript Ije, passa a suportar a redefinição do conteúdo de um objeto convertido em JSON através da definição de um método toJSON.
  • Foi criado o método Profiler.prototype.excludeFunction com o objetivo de configurar uma função para que ela seja ignorada no profiler do Engine.
  • A validação de integridade referencial na exclusão de registros passa a suportar a possibilidade de um campo lookup de uma mesma tabela referenciar duas ou mais tabelas distintas. Esse cenário pode ocorrer quando um campo é reutilizado em classes de dados que não possuem relação de herança, mas que são armazenadas na mesma tabela. O processo “Admin > Base de dados > Análise do esquema da base de dados” passa a exibir todas as tabelas referenciadas por uma coluna lookup.

Extensão VS Code

  • A grade que exibe um dataset como resultado de uma execução de script ou query passa a apresentar as opções de redimensionamento e reordenação das colunas.
  • Execuções de script que retornam objetos passam a exibir esses objetos formatados e com níveis colapsáveis.
  • Disponibilizada a opção de escolher qual o javascript runtime a ser utilizado pelo servidor na execução de scripts.
  • A execução de scripts passa a ser compatível com servidores que utilizem balanceador de carga.
  • Disponibilizado comando Engine DevTools: View Key Information que abre lateralmente as informações de uma ou mais chaves em formato de objeto em um visualizador.
  • Documentos passam a contar com links para resource strings e demais chaves do cache local. Links para resource strings abrem arquivos somente-leitura com seu conteúdo, enquanto links para demais chaves do cache local abrem suas informações em um visualizador.

Defeitos corrigidos

Admin

  • No processo Admin > Segurança > Grupos, papéis e usuários > Usuários, ao alterar a senha, poderiam ser exibidas simultaneamente ao usuário duas mensagens conflitantes, uma de erro e outra de sucesso.

Engine

  • Em um Engine configurado com múltiplas bases de dados, a falha na carga do cache local de uma das bases impedia o uso da classe JavaImporter nas demais.
  • As requisições atendidas pelo roteador HTTP eram exibidas no Manage com o usuário “anonymous” em vez do usuário associado ao token de autorização.
  • O método DBCache.prototype.getClassFieldName retornava erroneamente o valor “iParent” para a tabela “iVfs”. Agora ele passa a retornar uma string vazia, indicando que essa tabela não possui um campo para armazenar a classe dos registros.
  • O método DBCache.prototype.tryGetClass retornava o valor do campo “iParent” quando eram informados registros da tabela “iVfs”. Agora ele passa a retornar a classe “Virtual File System” (-1898187542) para registros dessa tabela.

Web Framework

  • Ao efetivar a inserção de um registro a grade poderia validar se a classe da grade era apenas para agrupamento em vez da classe do registro. Esse problema ocorria quando a propriedade classKey era configurada antes de um DataSet ter sido associado à grade.
  • O diálogo do tipo SimpleDialog exibido ao usuário era fechado automaticamente após alguns segundos, impedindo a visualização da mensagem.

Outras alterações

Engine

  • O Engine passa a desativar por padrão nas portas HTTPS os algoritmos de criptografia que utilizam SHA1, em qualquer modo de operação, e aqueles que utilizam os algoritmos SHA256 e SHA384 no modo de operação CBC. Os algoritmos desativados podem ser reativados por meio da opção “Cipher List” na configuração de portas no Manage.
  • O Engine passou a utilizar a versão 1.1.1 da biblioteca OpenSSL.
  • O Engine passou a utilizar a versão 5.12.9 do framework Qt.
  • O método toJSON das classes Entity, EntitySet, EntityKey e EntityKeySet foi renomeado para toJSONString.

Extensão VS Code

  • A nova versão da extensão passa a requerer a versão 7 do ESLint para validação de código fonte.

Web Framework

  • A biblioteca “ECharts” foi atualizada para a versão 4.9.0.
  • O namespace “uwl.schema” foi removido do sistema.