Databases 4 min read

SQLite 3.38.0 Released with New JSON Operators, Enhanced Date/Time Functions, and Query Planner Improvements

SQLite version 3.38.0 introduces new JSON operators compatible with MySQL and PostgreSQL, built‑in JSON functions, added unixepoch() and auto/julianday modifiers for date/time, renamed printf() to format(), enhanced virtual table interfaces, CLI columnar output options, and query planner optimizations using Bloom filters and balanced merge trees.

Laravel Tech Community
Laravel Tech Community
Laravel Tech Community
SQLite 3.38.0 Released with New JSON Operators, Enhanced Date/Time Functions, and Query Planner Improvements

SQLite 3.38.0 has been released. SQLite is a C‑implemented SQL database engine known for its small size, speed, self‑containment, high reliability, and full‑featured nature; it is embedded in virtually all mobile devices and many desktop applications.

Main changes:

Added -> and ->> operators for easier JSON handling, compatible with MySQL and PostgreSQL.

JSON functions are now built‑in; the compile‑time option -DSQLITE_ENABLE_JSON1 is no longer required. JSON support is enabled by default, and can be disabled with -DSQLITE_OMIT_JSON .

Enhancements to date and time functions: Added the unixepoch() function. Added the auto and julianday modifiers.

Renamed the printf() SQL function to format() for better compatibility; the original name remains as an alias for backward compatibility.

Added the sqlite3_error_offset() interface, which can help pinpoint the exact character in an input SQL string that caused an error, enabling richer error messages for applications.

Virtual‑table interface enhancements: Added sqlite3_vtab_distinct() interface. Added sqlite3_vtab_rhs_value() interface. Introduced new operator types SQLITE_INDEX_CONSTRAINT_LIMIT and SQLITE_INDEX_CONSTRAINT_OFFSET . Added sqlite3_vtab_in() (and related interfaces) so a virtual table can process all IN operator constraints in a single step rather than handling each right‑hand value individually.

CLI enhancements: Columnar output mode is improved to correctly handle embedded tabs and newlines. New options --wrap N , --wordwrap on , and --quote added to columnar mode. Added alias .mode qbox . The .import command now automatically disambiguates column names. Better error messages via the new sqlite3_error_offset() interface.

Query planner enhancements: Bloom filter support added to accelerate large analytical queries. Balanced merge‑tree algorithm used to evaluate UNION or UNION ALL queries that contain an ORDER BY clause.

The ALTER TABLE statement now silently ignores entries in the sqlite_schema table that cannot be parsed, especially when PRAGMA writable_schema=ON is set.

CLIJSONSQLitereleasedatabase engineQuery PlannerVirtual Tables
Laravel Tech Community
Written by

Laravel Tech Community

Specializing in Laravel development, we continuously publish fresh content and grow alongside the elegant, stable Laravel framework.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.