Se ha publicado el lanzamiento de SQLite 3.51, un DBMS liviano diseñado como una biblioteca de complementos. El código SQLite se distribuye como dominio público, es decir. Puede utilizarse sin restricciones y de forma gratuita para cualquier fin. El apoyo financiero a los desarrolladores de SQLite lo proporciona un consorcio especialmente creado.
Cambios importantes:
- Se han añadido nuevas funciones JSON, jsonb_each() y jsonb_tree(), que difieren de las funciones json_each() y json_tree() disponibles anteriormente en que devuelven un valor JSONB para tipos de datos de matriz u objeto.
- El código de extensión para las extensiones de carray y percentile se ha trasladado al archivo principal "sqlite3.c", que incluye código SQLite integrado. Estas extensiones están deshabilitadas por defecto y requieren los parámetros de compilación "-DSQLITE_ENABLE_CARRAY" y "-DSQLITE_ENABLE_PERCENTILE".
- Se ha mejorado la interfaz para usar SQLite en scripts Tcl. El comando «eval» ahora incluye la opción «-asdict» para establecer filas usando el tipo «dict» en lugar de «array». También se ha añadido la capacidad de interrumpir funciones definidas por el usuario para que devuelvan un valor NULL.
- Cambios en la interfaz de la línea de comando:
- La precisión del comando ".timer" se ha incrementado a microsegundos;
- Ahora se admiten caracteres de doble ancho en los modos de formato "cuadro" y "columna";
- El comando ".imposter" ahora puede proporcionar tablas impostoras de solo lectura (que permiten el acceso a los datos de un índice como una tabla) que funcionan con la operación VACUUM y no requieren ejecutarse con la bandera "--unsafe-testing";
- Se ha añadido la opción "--ifexists" a la utilidad sqlite y al comando ".open".
- El ancho máximo de línea, que se establece mediante el comando ".width", está limitado a 30000 caracteres.
- Se han realizado optimizaciones de rendimiento:
- Reducción de la carga de la CPU al confirmar transacciones con acceso limitado a lectura;
- Mejora en la detección de operaciones JOIN que no devuelven filas porque una o más tablas no contienen filas;
- Se excluye la ejecución de subconsultas escalares que no afecten al resultado;
- Las funciones de ventana se han acelerado en consultas con la expresión "BETWEEN 😡 FOLLOWING AND :y FOLLOWING" y un valor ":y" muy grande.
- Se agregó la directiva "PRAGMA wal_checkpoint=NOOP" y la función de la API sqlite3_wal_checkpoint() para confirmar los cambios en el registro WAL.
- Se han añadido las funciones sqlite3_set_errmsg() y sqlite3_db_status64() a la API.
- La versión JavaScript/WASM de SQLite implementa soporte para el ensamblaje en representación WebAssembly con punteros de 64 bits.
- Mayor resistencia a la corrupción de bases de datos en aplicaciones que liberan bloqueos POSIX mediante la llamada a close().
- Soporte mejorado para la plataforma VxWorks.
Fuente: opennet.ru
