Download SQLite 3.38.0
SQLite is a database system developed in C that can be used for websites and embedded applications, among other things. According to the developers, SQLite requires no installation and administration, supports databases up to two terabytes in size and stores an entire database in one file. Furthermore, it supports almost the full SQL92 specification and it is easy via, among others Tcl/Tk to guide. Version 3.38.0 has been released and since version 3.36.0 the following changes have been made:
SQLite Release 3.38.0
- Added the -> and ->> operators for easier processing of JSON. The new operators are compatible with MySQL and PostgreSQL.
- The JSON functions are now built-ins. It is no longer necessary to use the -DSQLITE_ENABLE_JSON1 compile-time option to enable JSON support. JSON is on by default. Disable the JSON interface using the new -DSQLITE_OMIT_JSON compile time option.
- Enhancements to date and time functions†
- Added the unixepoch() function†
- Added the car modifier and the julianday modifier†
- Rename the printf() SQL function to format() for better compatibility. The original printf() name is retained as an alias for backwards compatibility.
- Added the sqlite3_error_offset() interface, which can sometimes help to localize an SQL error to a specific character in the input SQL text, so that applications can provide better error messages.
- Enhanced the interface to virtual tables as follows:
- Added the sqlite3_vtab_distinct() interface.
- Added the sqlite3_vtab_rhs_value() interface.
- Added new operator types SQLITE_INDEX_CONSTRAINT_LIMIT and SQLITE_INDEX_CONSTRAINT_OFFSET†
- Added the sqlite3_vtab_in() interface (and related) to enable a virtual table to process IN operator constraints all at once, rather than processing each value of the right-hand side of the IN operator separately.
- CLIA enhancements:
- Columnar output modes are enhanced to correctly handle tabs and newlines embedded in text.
- Added options like “–wrap N”, “–wordwrap on”, and “–quote” to the columnar output modes†
- Added the .mode qbox alias.
- the .import command automatically disambiguates column names.
- Use the new sqlite3_error_offset() interface to provide better error messages.
- Query scheduler enhancements:
- Use a Bloom filter to speed up large analytical queries.
- Use a balanced merge tree to evaluate UNION or UNION ALL compound SELECT statements that have an ORDER BY clause.
- the ALTER TABLE statement is changed to silently ignores entries in the sqlite_schema table that don’t parse when PRAGMA writable_schema=ON†
SQLite Release 3.37.2
- fix a bug introduced in version 3.35.0 (2021-03-12) that can cause database corruption if a SAVE POINT is rolled back while in PRAGMA temp_store=MEMORY mode, and other changes are made, and then the outer transaction commits. Check in 73c2b50211d3ae26
- Fix a long-standing problem with ON DELETE CASCADE and ON UPDATE CASCADE in which a cache of the byte code used to implement the cascading change was not being reset following a local DDL change. Check in 5232c9777fe4fb13†
- Other minor fixes that should not impact production builds.
SQLite Release 3.37.1
- Fix a bug introduced by the UPSERT enhancements of version 3.35.0 that can cause incorrect byte-code to be generated for some obscure but valid SQL, possibly resulting in a NULL-pointer dereference.
- Fix an OOB read that can occur in FTS5 when reading corrupt database files.
- Improved robustness of the –safe option in the CLIA†
- Other minor fixes to assert() statements and test cases.
SQLite Release 3.37.0
- STRICT tables provide a prescriptive style of data type management, for developers who prefer that kind of thing.
- When adding columns that contain a CHECK constraint or a generated column containing a NOT NULL constraintthe ALTER TABLE ADD COLUMN now checks new constraints against preexisting rows in the database and will only proceed if no constraints are violated.
- Added the PRAGMA table_list statement.
- CLIA enhancements:
- Add the .connection command, allowing the CLI to keep multiple database connections open at the same time.
- Add the –safe command-line option that disables dot commands and SQL statements that might cause side-effects that extend beyond the single database file named on the command-line.
- Performance improvements when reading SQL statements that span many lines.
- Added the sqlite3_autovacuum_pages() interface.
- the sqlite3_deserialize() does not and has never worked for the TEMP database. That limitation is now noted in the documentation.
- The query planner now omits ORDER BY clauses on subqueries and views if removing those clauses does not change the semantics of the query.
- the generate_series table-valued function extension is modified so that the first parameter (“START”) is now required. This is done as a way to demonstrate how to write table-valued functions with required parameters. The legacy behavior is available using the -DZERO_ARGUMENT_GENERATE_SERIES compile-time option.
- Added new sqlite3_changes64() and sqlite3_total_changes64() interfaces.
- Added the SQLITE_OPEN_EXRESCODE flag option to sqlite3_open_v2()†
- Use less memory to hold the database schema.
Version number | 3.38.0 |
Release status | Final |
Operating systems | Windows 7, Android, Linux, BSD, macOS, Windows 8, Windows 10, Windows 11 |
Website | SQLite |
Download | |
License type | GPL |