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.
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 tipobigint
, se o SGBD for PostgreSQL ou Microsoft SQL Server, ou com o tiponumber(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 comochar
ouvarchar
. - 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 tipoDBKey
, 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étodotoJSON
. - 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 umDataSet
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 classesEntity
,EntitySet
,EntityKey
eEntityKeySet
foi renomeado paratoJSONString
.
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.