Saltar al contenido

Mvsql

Descripción General

mvSQL es el dialecto SQL propio de Vinyl. Permite a los usuarios aprender y utilizar un único conjunto de sintaxis y funciones, mientras que Vinyl traduce esa sintaxis a expresiones apropiadas para el proveedor. mvSQL se puede utilizar para consultar bases de datos relacionales, almacenamiento, REST, sistemas de archivos o cualquier otro tipo de proveedor de datos que admita Vinyl.

Versiones Mvsql

Las versiones de mvSQL compatibles con Vinyl se enumeran y la versión compatible más antigua aparece primero (Versión 1).

Versión 1

La versión heredada más antigua que admite Vinyl, la versión 1 mvSQL es incluso más estricta de lo que permitíamos antes de refactorizar la gramática y el analizador. La mayoría de las aplicaciones Vinyl heredadas deberían ejecutarse con esta versión.

Versión 2

La versión 2 de mvSQL mejora la sintaxis de transferencia, admite la capacidad de cerrarlo y reanudar expresiones mvSQL regulares y admite caracteres de escape.

Ejemplo

La versión 1 vería esto (en MS SQL Server) ${ [sintaxis del proveedor] } || 'my example' como ${ [sintaxis del proveedor] || 'my example' } representación [vendor syntax] || 'my example'.

La versión 2 analizaría como debía ser y se presentaría como [vendor syntax] + 'my example'. Tenga en cuenta que concat es apropiado para el proveedor).

Versión 3

La versión 3 de mvSQL requiere que los prefijos de las tablas sean correctos. Hasta esta versión, si el prefijo de la tabla era incorrecto y Vinyl podía inferirlo al verificar las otras columnas, permitíamos prefijos de tabla incorrectos.

Ejemplo

En versiones anteriores de mvSQL, usar un alias de tabla que no existe, o incluso uno que sí existe pero que no tiene la columna a la que se hace referencia, aún funcionaría siempre que el nombre de la columna solo apareciera en una de las fuentes. Este escenario presenta un problema cuando el mismo nombre de columna se agrega a otra fuente y la regla comercial deja de funcionar.

Versión 4

En la versión 4 de mvSQL, las funciones de tiempo de ejecución generan un tipo adecuado, en lugar de ser siempre una cadena, y los valores nulos no se fusionan en una cadena vacía.

Ejemplo

Shared(ColumnName, numeric)

  • Antes de la versión 4, Vinyl saldría '0' si la columna no se proporcionó, o '1' si lo fuera (tenga en cuenta que se representa como una cadena, asumiendo que el valor compartido aquí es 1 por supuesto)
  • A partir de la versión 4, ahora se produce Vinyl. null si no fue proporcionado, y 1 (sin las comillas), también parametrizamos si el proveedor lo admite (@p0), ya que esto puede aprovechar un mejor rendimiento del proveedor.
  • Esto también significa que es más fácil fusionar el valor; antes, si deseaba cambiar el valor si no se proporcionaba, necesitaría algo como IIF(Shared(ColumnName) = '', -1, Shared(ColumnName, numeric)), ahora puedes usar ISNULL(Shared(ColumnName, numeric), -1)
  • Las nuevas reglas se crean usando la versión más alta disponible (versión 4 en Vinyl 3.3), pero para evitar romper las reglas heredadas, las mantuvimos como estaban. Si se realizan cambios en una regla que no se verá afectada por esto (principalmente reglas sin funciones de tiempo de ejecución ), Vinyl actualizará automáticamente la versión de mvSQL.

Recursos