Versão 61
Melhorias
Desenvolvimento
Engine
- A propriedade
DetailedError.prototype.errorCode
foi renomeada para code
e passa a aceitar
códigos alfanuméricos. O uso de códigos textuais passa a ser recomendado, pois simplifica
a criação de erros sem colisão dos seus códigos de identificação. Na versão atual do sistema
os códigos de erro não podem conter os caracteres “.”, “(”, “/” e " " (espaço), e devem
ser informados por meio do quarto parâmetro do construtor DetailedError
. Em versões antigas do
Engine esse parâmetro também era utilizado para informar a propriedade sourceLocation
. Essa
propriedade não deveria estar sendo mais utilizada em códigos JavaScript e essa recomendação
passa a ser reforçada devido a possibilidade de conflitar o seu uso com os códigos de erro
textuais. A leitura da propriedade errorCode
foi mantida para fins de compatibilidade. Mais
detalhes na documentação da classe
DetailedError
.
- Foi criada a propriedade
QueryUtilities.prototype.maxInOperatorListLength
com o objetivo de determinar a quantidade máxima de elementos testados pelo operador IN
nas cláusulas SQL geradas pelo QueryUtilities
, sendo o seu valor padrão 900
em todos
os SGBDs suportados pelo sistema. Em versões anteriores, o sistema adotava uma quantidade dinâmica
de acordo com o SGBD utilizado e a quantidade de valores a serem filtrados. Esse
comportamento dinâmico se devia a falhas dos otimizadores de planos de execução que não se
observam mais nos SGBDs em suas versões atuais e, que em algumas situações, acabava por gerar
planos ineficientes de execução.
Extensão VS Code
- Ao tentar efetuar uma alteração na Virtual File System em uma base que não seja de
desenvolvimento e que não esteja com a opção de alterações de produtos habilitada, o
usuário passa a ser perguntado se deseja habilitar essa opção e tentar novamente.
- A extensão passa a contar com o comando
Update To
, utilizado para enviar alterações
em um arquivo da Virtual File System para outra base de dados. O comando cria uma alteração
pendente no Source Control da base de destino.
Defeitos corrigidos
Desenvolvimento
- A atualização do sistema falhava caso houvesse um registro na VFS sem o nome preenchido. O
processo de atualização passa a renomear o arquivo para “unnamed_<chave>” para dar visibilidade a
inconsistência.
Engine
- O registro dos erros na tabela de log transacional falhava no Oracle caso o tamanho da mensagem
de erro fosse superior a 4000 caracteres.
- Conexões entre Engines nem sempre eram interrompidas ao abortar a execução de uma
sessão Javascript.
- O uso do módulo
assert
como função (assert(value)
) não validava corretamente se o valor
informado era verdadeiro. Apesar dessa forma de uso ser incomum, testes unitários podem ser
afetados por essa correção e passarão a validar corretamente o valor informado, sendo necessária a
revisão desses testes caso o valor não seja verdadeiro. A chamada assert()
é equivalente
a assert.ok()
, sendo essa última a forma preferível de uso. Mais detalhes em
assert.ok
.
- A criação de chaves poderia ser lenta caso o Engine estivesse offline, mesmo quando existiam
chaves disponíveis no cache.
Extensão VS Code
- A reordenação das bases de dados falhava em workspaces criados após a atualização para a
versão 59 da extensão.
- Ao executar um script utilizando o runtime JavaScript V8 não era exibida a pilha de
chamadas dos erros.
- A exibição do resultado de um script falhava com o erro “Cannot read properties of undefined”
caso fosse lançado um objeto diferente de um erro via operador
throw
.
Web Framework
- Ao alterar o campo “Apenas para agrupamento” no Classes Explorer não era verificado se a classe
configurada para agrupamento já tinha registros associados a ela, nem se o usuário tinha permissão
de modificar a classe, no caso de classes de chave negativa, definidas pelos produtos do sistema.
- Ao alterar uma configuração geral por meio da grade criada pela função
newSettingsGrid
poderia ocorrer a perda da configuração caso o valor informado fosse igual ao valor inicial
apresentado pela grade.
- Ao solicitar a redefinição da senha de um usuário sem política de segurança associada ocorria
o erro “dbkey is not a function”.
Outras alterações
Engine
- Ao retornar um
DetailedError
em uma rota HTTP o valor da propriedade error
estava sendo
retornado na propriedade message
. Agora a propriedade error
do objeto retornado passa a ser
preservada e a propriedade message
passa a conter uma mensagem contendo todas as propriedades
do erro, comportamento similar ao da classe DetailedError
.
- O módulo
@nginstack/engine/lib/testing/AssertionError
foi removido. A classe de erro definida
por esse módulo continua acessível via propriedade assert.AssertionError
.
- O parâmetro legado
dbType
da função QueryUtilities.prototype.clauseWhereOfKeys
foi eliminado,
pois o seu uso não altera mais o resultado da função.
Extensão VS Code
- As opções de movimentação e reordenação no menu de contexto das bases de dados passam
a ser agrupadas no submenu “Move”.
Web Framework
- Os parâmetros de construção da página de login padrão do sistema enviados pela URL passam a
ser codificados de maneira a reduzir sua previsibilidade. Essa mudança é necessária, pois algumas
ferramentas automatizadas poderiam detectar o comportamento antigo como vulnerável a
Cross-site Request Forgery.
Última atualização em 14 Jul 2022