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.
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 aModelDef.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 formatomultipart/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
eheight
da classeColumn
de umSimpleLayout
eram ignoradas quando era informada a opçãocssStyle
nowriteColumn
ou quando eram informadas as propriedadestextAlign
ouverticalAlign
da coluna. - As opções
cssStyle
,showTopLine
,showBottomLine
eram ignoradas pelo métodoSimpleLayout.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étodowriteLink
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
edataSize
da classeField
foram renomeadas paradatabaseType
,dataSetType
echarLength
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
eDBKey.prototype.date
passam a retornar a componente de hora caso o tipo do campo obtido sejadatetime
, 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
.