Mvsql
Visão Geral
mvSQL é App Builder dialeto próprio do SQL. Ele permite que os usuários aprendam e usem um único conjunto de sintaxe e funções, enquanto App Builder traduz essa sintaxe para expressões apropriadas do fornecedor. O mvSQL pode ser usado para consultar bancos de dados relacionais, armazenamento, REST, sistemas de arquivos ou qualquer outro tipo de provedor de dados App Builder suporta.
Versões do Mvsql
Versões do mvSQL suportadas por App Builder são listados com a versão mais antiga suportada aparecendo primeiro (Versão 1).
Versão 1
A versão mais antiga do legado App Builder suporta, a versão 1 do mvSQL é ainda mais rigorosa do que permitimos antes de refatorar a gramática e o analisador. A maioria dos legados App Builder os aplicativos devem rodar usando esta versão.
Versão 2
A versão 2 do mvSQL melhora a sintaxe passthrough, suporta a capacidade de fechá-lo e retomar expressões mvSQL regulares e suporta caracteres de escape.
Exemplo
A versão 1 veria isso (no MS SQL Server) ${
[sintaxe do fornecedor] } || 'my example'
como ${
[sintaxe do fornecedor] || 'my example' }
renderização [vendor syntax] || 'my example'
.
A versão 2 seria analisada como deveria ser e renderizada como [vendor syntax] + 'my example'
. Observe que o concat é apropriado para o fornecedor).
Versão 3
A versão 3 do mvSQL requer que os prefixos de tabela estejam corretos. Até esta versão, se o prefixo de tabela estivesse incorreto, e App Builder poderia inferir isso verificando as outras colunas, permitiríamos prefixos de tabela incorretos.
Exemplo
Em versões anteriores do mvSQL, usar um alias de tabela que não existe, ou mesmo um que existe, mas que não tem a coluna referenciada, ainda funcionaria, desde que o nome da coluna aparecesse apenas em uma das fontes. Este cenário apresenta um problema quando o mesmo nome de coluna é adicionado a outra fonte e a regra de negócios para de funcionar.
Versão 4
Na versão 4 do mvSQL, as funções de tempo de execução produzem um tipo apropriado, em vez de sempre ser uma string, e valores nulos não são coalescidos em uma string vazia.
Exemplo
Shared(ColumnName, numeric)
- Antes da versão 4, App Builder produziria
'0'
se a coluna não foi fornecida, ou'1'
se fosse (observe que é renderizado como uma string, assumindo que o valor compartilhado aqui é1
claro) - A partir da versão 4, App Builder agora produz
null
se não foi fornecido, e1
(sem as aspas), também parametrizamos se o fornecedor oferece suporte (@p0
), pois isso pode alavancar melhor desempenho do fornecedor. - Isso também significa que é mais fácil coalescer o valor, antes se você quisesse alterar o valor se ele não fosse fornecido, você precisaria de algo como
IIF(Shared(ColumnName) = '', -1, Shared(ColumnName, numeric))
, agora você pode usarISNULL(Shared(ColumnName, numeric), -1)
- Novas regras são criadas usando a versão mais alta disponível (versão 4), mas para evitar quebrar regras legadas, nós as mantivemos como estavam. Se mudanças forem feitas em uma regra que não será afetada por isso (principalmente regras sem funções de tempo de execução ) App Builder atualizará automaticamente a versão do mvSQL.
Versão 5
Na versão 5, o mvSQL trata qualquer passagem como GROUP-able quando faz parte de uma consultar agregada.
Para indicar que uma expressão é um agregado, chame-a com o Expression()
função.
Exemplo
Expression(${Count(1)})