Versão 63

Melhorias

Engine

Web Framework

  • O campo “Peso” da grade “Colunas selecionadas” do Gerador de Relatórios (acessado via “Perfil do usuário > Meus relatórios”) passa a ser apresentado apenas em modo formulário, e seu texto de ajuda agora é mais claro, sinalizando que o campo deve ser preenchido com o nome de uma coluna de pesos para cálculo da média aritmética ponderada. O campo também deixa de ter como preenchimento um texto livre e passa a apresentar as colunas de valores numéricos disponíveis na fonte de dados que está sendo utilizada.
  • Foi criada a propriedade ViewDefField.prototype.enterKeyAction que permite ao desenvolvedor especificar o comportamento do campo quando for digitada a tecla ENTER.

Defeitos corrigidos

Engine

  • Índices com expressões lookups poderiam perder a integridade após a criação ou remoção de uma classe de dados. Essa falha eventualmente se manifestava com o erro “Error updating index” durante o sincronismo do cache local, impedindo o uso do sistema.
  • A pesquisa em índices com expressões lookups poderia falhar em DataSets temporários caso os registros das tabelas associadas à expressão lookup fossem modificados.
  • A classe XMLHttpRequest sempre adicionava o parâmetro “charset” no cabeçalho “content-type” quando o conteúdo enviado era um texto. Esse comportamento poderia gerar um cabeçalho incorreto para os tipos de mídia textuais que não esperam esse parâmetro, como o “multipart/form-data”. A partir desta versão, o sistema passa a adicionar esse parâmetro automaticamente apenas para os tipos de mídia “text/*”, “application/xml” e “*/*+xml”. Para os demais tipos, o “charset” precisa ser explicitamente definido pelo desenvolvedor no cabeçalho via setRequestHeader.
  • O método XMLHttpRequest.prototype.setRequestHeader gerava uma requisição HTTP inválida caso o valor do cabeçalho informado contivesse um salto de linha. Saltos de linha e espaços, no início e no fim do valor do cabeçalho, passam a ser removidos, conforme especificação da API XMLHttpRequest.
  • Na integração com Java, não era possível a partir de uma classe Java invocar a execução de um script do Engine se a chave do script fosse de 64 bits.
  • A classe DBTracker, utilizada para rastrear as alterações dos testes de integração, poderia falhar caso houvesse mais de uma execução de testes ao mesmo tempo.
  • O valor informado no parâmetro recursive do método File.deleteDirectory era ignorado e o método sempre removia o diretório, mesmo que houvesse conteúdo nele. Esse método agora passa a se comportar conforme a sua documentação e, caso o parâmetro recursive não seja informado ou seja falso, o diretório somente será removido se estiver vazio.

Extensão VS Code

  • Os botões “Go to File” e “Rerun on Engine” da aba de resultados da execução de código apresentavam funcionamento incorreto. O primeiro botão deveria abrir o arquivo originalmente executado e o segundo deveria reexecutar esse arquivo (ou uma determinada seleção dele). Em certas ocasiões, esses botões estavam utilizando outro arquivo de código fonte de uma execução paralela, e não o arquivo correto.

Web Framework

  • O campo “Derivação” da grade “Colunas selecionadas” do Gerador de Relatórios (acessado via “Perfil do usuário > Meus relatórios”) reapresentava as exatas mesmas opções caso a opção de derivação selecionada fosse a mesma que foi digitada no campo no momento da busca.
  • A navegação entre os campos de um FormDialog não ocorria da mesma forma que a navegação entre os campos da grade. Agora o formulário também passa a permitir a navegação com a tecla ENTER em todos os tipos de campos e o uso da tecla F2 para iniciar a edição do campo desejado.

Outras alterações

Engine

  • A assinatura dos métodos Crypto.encryptBytes e Crypto.decryptBytes foi alterada e os parâmetros cipher e iv passam a ser obrigatórios. Esses métodos também passam a rejeitar chaves e vetores de inicialização com tamanho diferente do esperado pelo algoritmo de criptografia.
  • O método Dataset.prototype.sum passa a evitar arredondar valores numéricos utilizados para agrupamento caso eles sejam inteiros. Essa alteração tenta evitar a introdução de erros de precisão de ponto flutuante em eventuais chaves que erroneamente estejam gravadas em campos do tipo number. É importante ressaltar que chaves sempre devem ser armazenadas em campos e colunas do tipo int64 no DataSet e BIGINT na base de dados, evitando a imprecisão inerente da aritmética de ponto flutuante do tipo number.
  • O valor padrão da propriedade Scheduler.prototype.maxSimultaneousTasks foi alterado de 2 para 4. A alteração dessa propriedade também passa a gerar um erro caso o valor informado seja inferior a 1.