Versão 38

Melhorias

Admin

  • O processo “Admin > Monitoramento > Sessões de aplicativo” passa a apresentar a grade “Utilização por Engine”. Nela são totalizadas as quantidades de usuários e sessões por Engine.
  • Foi criado o escopo de autorização “security.managePermissions” com o objetivo de limitar os usuários que têm autorização para modificar as permissões do sistema. Por padrão, o grupo “Administrators” passa a ter esse escopo de autorização. Demais grupos que precisem desse privilégio devem ser revistos para incluir o novo escopo de autorização.
  • Nos detalhes técnicos da ajuda do sistema passa a ser exibido o link “configurar permissões” ao lado dos nomes dos processos, relatórios e classes de dados. Ao clicar no link, é aberto o processo para configurar as permissões do recurso desejado. Esse atalho é visível apenas para os usuários com privilégio de configurar as permissões do sistema.
  • Foi criada a consulta “Admin > Auditoria > Eventos de erro” com o objetivo de recuperar as mensagens de erro que foram exibidas para os usuários na utilização da interface web padrão do sistema. Nessa consulta, são exibidos os detalhes técnicos que possam ter sido eventualmente suprimidos em razão dos privilégios do usuário que estava utilizando o sistema. Os registros de eventos de erro serão mantidos por 90 dias, sendo descartados automaticamente pelas rotinas de limpeza do log transacional.

Engine

  • Foi criado o método DatabaseSchema.prototype.alterTableColumns com o objetivo de alterar o tipo e as restrições das colunas de uma tabela da base de dados.
  • Os métodos DatabaseSchema.prototype.getTables e DatabaseSchema.prototype.getViews passam a permitir indicar os nomes das tabelas e visões cujas informações de esquema devem ser retornadas.
  • Foi criado o método DatabaseSchema.prototype.alterTable com o objetivo de alterar as configurações gerais de uma tabela, incluindo a sua chave primária.
  • Foram criados os métodos createTableIndex, renameTableIndex e dropTableIndex na classe DatabaseSchema com o objetivo criar, renomear e excluir índices da base de dados.
  • Os nomes dos Engines cadastrados automaticamente pelos processos de monitoramento (“Admin > Monitoramento”) passam a incluir a porta HTTP padrão. Essa alteração tem o objetivo de facilitar a identificação dos Engines quando há várias instâncias instaladas em um mesmo servidor.
  • O Engine passa a suportar o tipo “variant” no Microsoft SQL Server. Valores desse tipo serão convertidos para texto e retornados em uma coluna do tipo “varchar(8000)”.
  • O Engine passa a suportar datas no intervalo de 01/01/0100 a 01/01/1000 no Microsoft SQL Server e PostgreSQL. Esse intervalo já era suportado no Oracle e essa melhoria simplifica a migração de bases de dados Oracle para os demais SGBDs suportados pelo Engine.
  • O método Response.prototype.setCookie passa a permitir configurar os parâmetros “SameSite” e “HttpOnly” do cookie.
  • A função validateString passa a suportar o tipo 'int64'.
  • Agora é possível desligar a rotina de backup automático do Cache Local definindo a variável de ambiente NGIN_DBCACHE_AUTO_BKP do sistema operacional com o valor off.
  • Foi criada a função toSqlIdentifier com o objetivo de remover os caracteres inválidos em identificadores SQL, como nomes de tabelas e colunas.
  • Foi criada a propriedade Task.prototype.scriptURI com o objetivo de permitir a criação de tarefas que executem scripts da Union File System. O uso da propriedade Task.prototype.scriptName, restrita aos arquivos da Virtual File System, deixa de ser recomendado após esta alteração.
  • Foi criada a propriedade DataSet.prototype.sqlStatement com o objetivo de obter a expressão SQL que originou o DataSet.
  • Foi implementado no Manage o suporte a autenticação por Digest.

Web Framework

  • As propriedades decimalPrecision, minDecimalPrecision e maxDecimalPrecision passam a ser suportadas nos campos do FormDialog
  • Os detalhes técnicos das mensagens de erro e nos diálogos de ajuda passam a ser exibidos apenas para os usuários com permissão ao novo escopo de autorização “security.viewTechnicalInfo”. Esse novo escopo passa a ser atribuído por padrão apenas aos grupos “Administrators” e “Developers”. Mais detalhes em https://nginstack.com/pt/docs/web-framework/faq.
  • As mensagens de erros exibidas pelo Web Framework passam a exibir um ticket associado ao erro. A informação do ticket é apresentada quando o usuário seleciona a opção “Exibir detalhes” no diálogo do erro. O ticket é um identificador único do erro que também é gravado nos logs do sistema, facilitando a pesquisa dos detalhes técnicos do erro que agora passam a ser suprimidos para os usuários que não participam dos grupos “Administrators” e “Developers”.

Defeitos corrigidos

Desenvolvimento

  • O campo “Destinos recentes” dos processos de atualização sugeria indevidamente a porta 80 para endereços de servidores HTTPS. O histórico de destinos também passa a consolidar uma única entrada por base de dados e endereço do servidor, independente do usuário que executou o processo, reduzindo assim a quantidade de entradas similares no histórico.

Engine

  • Uma consulta DNS reversa era realizada indevidamente a cada requisição HTTP atendida pelo Engine. Essa consulta passa a ser executada sob demanda, quando for solicitado o nome do computador associado a um endereço IP.
  • Ao entrar no sistema com o usuário “administrator” poderia ocorrer o erro “Foi detectada uma alteração indevida no registro do usuário” logo após o primeiro licenciamento da base de dados.
  • Requisições HTTPS encerradas pelo cliente poderiam ser exibidas indevidamente com o status “Reading request information” no Manage.
  • O agendador de scripts poderia acumular tarefas com o nome “Authentication failed (xxx)” caso uma conta de usuário utilizada em mais de um Engine fosse bloqueada.
  • A função toSqlString convertia indevidamente o parâmetro informado do tipo string para number quando ele era uma representação textual de um número inteiro.

Web Framework

  • A tecla enter não avançava para o próximo campo quando usada no FormDialog.
  • Ao pressionar enter no último campo de um formulário, o usuário poderia ser redirecionado para a tela de login.
  • Os totais da grade poderiam ser exibidos vazios em vez de apresentarem o valor zero.
  • Ao utilizar o método Process.prototype.download ocorria um erro que não permitia o download do arquivo quando o tráfego era intermediado por um balanceador de cargas do Google Cloud Platform.
  • Ao utilizar o método Process.prototype.download ocorria uma alteração indevida no nome do arquivo transferido caso ele contivesse acentos ou caracteres especiais.

Outras alterações

Engine

  • A memória consumida pelo método DataSet.prototype.append, quando informado um DataSet, passa a ser limitada em aproximadamente 2MB. Após esse valor, o método passa a utilizar um arquivo temporário em disco para realizar a cópia dos dados.
  • O método QueryUtilities.prototype.clauseWhereOfKeys() passa a gerar erro se o valor informado não for uma lista de chaves válida.
  • O protocolo TLS 1.0 passa a ser desativado por padrão nas portas HTTPS.