Ir para o conteúdo

mvSQL

Visão Geral

mvSQL é o dialeto SQL do próprio Vinyl. Ele permite que os usuários aprendam e usem um único conjunto de sintaxe e funções, enquanto o Vinyl traduz essa sintaxe para expressões apropriadas do fornecedor. mvSQL pode ser usado para consultar banco de dados relacional, armazenamento, REST, sistemas de arquivos ou qualquer outro tipo de provedor de dados compatível com o Vinyl.

Versões mvSQL

As versões mvSQL suportadas pelo Vinyl são listadas com a versão mais antiga suportada aparecendo primeiro (Versão 1).

Versão 1

A versão legada mais antiga que o Vinyl suporta, a versão 1 mvSQL é ainda mais rigorosa do que permitíamos antes de refatorar a gramática e o analisador. A maioria dos aplicativos antigos do Vinyl devem ser executados usando esta versão.

Versão 2

A versão 2 do mvSQL melhora a sintaxe de passagem, oferece suporte à capacidade de fechá-lo e retomar expressões mvSQL regulares e oferece suporte a 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 exige que os prefixos da tabela estejam corretos. Até esta versão, se o prefixo da tabela estivesse incorreto e o Vinyl pudesse inferi-lo verificando as outras colunas, permitiríamos prefixos de tabela incorretos.

Exemplo

Nas versões anteriores do mvSQL, usar um alias de tabela que não existe, ou mesmo um que exista, mas que não tenha a coluna referenciada, ainda funcionaria, desde que o nome da coluna só aparecesse em um dos as 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 geram um tipo adequado, em vez de sempre ser uma string, e os valores nulos não são agrupados em uma string vazia.

Exemplo

Shared(ColumnName, numeric)

  • Antes da versão 4, o Vinyl produzia '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, o Vinyl agora produz null se não foi fornecido, e 1 (sem as aspas), também parametrizamos se o fornecedor oferece suporte (@p0), pois isso pode alavancar um melhor desempenho do fornecedor.
  • Isso também significa que é mais fácil unir o valor, antes se você quisesse alterar o valor se não fosse fornecido, você precisaria de algo como IIF(Shared(ColumnName) = '', -1, Shared(ColumnName, numeric)), agora você pode usar ISNULL(Shared(ColumnName, numeric), -1)
  • Novas regras são criadas usando a versão mais recente disponível (versão 4 no Vinyl 3.3), mas para evitar quebrar regras legadas, nós as mantivemos como estavam. Se forem feitas alterações em uma regra que não será afetada por isso (principalmente regras sem funções de tempo de execução ), o Vinyl atualizará automaticamente a versão do mvSQL.

Versão 5

Na versão 5, o mvSQL trata qualquer passagem como compatível com GROUP quando parte de uma consultar agregada.

Para indicar que uma expressão é uma agregação, chame-a com o Expression() função.

Exemplo

Expression(${Count(1)})

Recursos