Versão 39

Novidades

Execução de código na extensão do VS Code

A extensão do VS Code passa a contar com a execução de códigos Javascript ou SQL e exibição dos resultados.

Execution example

Mais detalhes em https://nginstack.com/pt/docs/vscode/source-execution/.

Melhorias

Admin

  • Foi criado o processo “Admin > Base de dados > Análise do esquema da base de dados” com o objetivo de comparar e apresentar as eventuais divergências no modelo de dados declarado nos arquivos do tipo x-model e x-class com o esquema atual da base de dados.

Engine

  • Foi criada a propriedade ModelDef.prototype.managedDatabaseSchema com o objetivo de indicar se o esquema da tabela na base de dados é gerenciado pelo sistema. Esta propriedade torna obsoleta a ModelDef.prototype.upgradeChangesTableStructure.
  • Foi criado o método Request.prototype.isHttps para identificar se a requisição atendida pelo Engine foi estabelecida utilizando o protocolo HTTPS.
  • Foi criada a classe MultipartFormDataReader com o objetivo de realizar o processamento de requisições HTTP no formato multipart/form-data.
  • Foi criada a classe DataModelSchema com o objetivo de consultar as tabelas, colunas e índices configurados via arquivos do tipo x-model e x-class da Virtual File System.
  • O método DBCache.prototype.refresh passa a retornar um valor booleano indicando se o sincronismo do cache local foi realizado com sucesso dentro do tempo de espera informado.
  • Foi implementada uma tela de login em HTML para o Manage. Os antigos métodos de autenticação, através de autenticação HTTP Básica ou Digest, estão desligados, mas podem ser ativados pelo parâmetro de comando de linha --EnableStandardManageAuthentication.
  • Foi criada a classe HtmlSanitizer, que possibilita a sanitização de conteúdos HTML de origem não confiável.

Defeitos corrigidos

Engine

  • A função ngin.classes.getRemoteChildren retornava [NaN] em vez um array vazio se a chave informada não existisse na base destino consultada.
  • Erros de conexão à base de dados durante a verificação dos tokens de autorização eram retornados com status 401 (Unauthorized) pelas rotas HTTP, levando o cliente a acreditar que a credencial informada estava inválida. Agora o Engine passa a retornar esses erros com o status 503 (Service Unavailable).
  • A classe Barcode e a URL “/CreateBarcode” criavam códigos de barra do tipo EAN-13 inválidos caso fosse informado o código completo com 13 caracteres, incluindo o dígito verificador.
  • Poderia ocorrer um erro de Access Violation no Engine ao usar o objeto OSApplication.

Extensão VS Code

  • Algumas buscas no Search Editor da extensão apresentavam graves picos de uso de memória tanto no cliente quanto no servidor.

Web Framework

  • Os caracteres “<”, “>” e “&” poderiam ser removidos indevidamente ao preencher o valor de um campo.
  • A posição do registro corrente de grades com agregação de colunas poderia ser alterada indevidamente ao mudar o foco da grade.
  • As propriedades negativeInRed, width e height da classe Column de um SimpleLayout eram ignoradas quando era informada a opção cssStyle no writeColumn ou quando eram informadas as propriedades textAlign ou verticalAlign da coluna.
  • As opções cssStyle, showTopLine, showBottomLine eram ignoradas pelo método SimpleLayout.prototype.writeColumn quando era exibido um relatório em árvore.
  • Os links configurados em uma coluna de um relatório em árvore não eram exibidos pelo método SimpleLayout.prototype.writeColumn, sendo requerido o uso do método writeLink mesmo quando os links não recebiam parâmetros.

Outras alterações

Admin

  • O estado de conta de usuário “Expirado” foi renomeado para “Senha expirada”. O objetivo da alteração é tornar mais claro que a conta do usuário continua válida e que apenas a senha encontra-se expirada, sendo necessária a sua alteração.

Desenvolvimento

  • Os processos “Desenvolvimento > Análise do consumo de memória” e “Desenvolvimento > Análise do log do Banco de Dados” foram removidos. Esses processos apresentavam informações incompletas e menos relevantes que as obtidas com a Análise do Log do Profiler e com o plano de execução gerado pelo SGBD.
  • O relatório “Desenvolvimento > Base de dados > Oracle > Índices criados no banco de dados” foi removido, pois ele apresentava informações equivalentes às obtidas com o relatório “Desenvolvimento > Base de dados > Índices na base de dados”, sendo este último compatível com todos os SGBDs suportados pelo Engine.

Engine

  • As propriedades dbDataType, dsDataType e dataSize da classe Field foram renomeadas para databaseType, dataSetType e charLength respectivamente.
  • Cookies enviados pelo Engine passam a ser configurados como seguros quando a requisição for HTTPS.
  • A propriedade ModelDef.prototype.dbViews foi eliminada. Essa era uma funcionalidade experimental que não chegou a ser completamente implementada e foi substituída pelas “Tabelas de Soma”.
  • Os métodos DataSet.prototype.date e DBKey.prototype.date passam a retornar a componente de hora caso o tipo do campo obtido seja datetime, restaurando o comportamento anterior à versão 32.
  • O cache local do Engine passa a ignorar as tabelas configuradas na classe “Tabelas do Sistema” (-1898144802) que não existem na base de dados. O objetivo dessa alteração é tornar mais simples a correção dessa inconsistência, normalmente introduzida por atualizações de sistema interrompidas durante a atualização do esquema da base de dados. Antes desta alteração, a inicialização do Engine somente era possível com a ativação da opção “safeMode” via parâmetros de linha de comando.
  • O Engine passa a configurar o parâmetro “KeepAliveTime” com um valor de 5 minutos nas requisições atendidas pelo servidor HTTP em vez de utilizar o valor padrão configurado no sistema operacional, normalmente de 2 horas. O objetivo da alteração é preservar as conexões que passam por firewalls com limite de tempo de inatividade, mesmo quando o cliente não configura um “KeepAlive” adequado.
  • Foi desligado o protocolo TLS 1.1 no servidor HTTP. Caso seja necessário, é possível ativá-lo através do parâmetro de comando de linha --EnableHttpServerTLSV11.