Table of Contents

DISQLite3: Version History

DISQLite3 implements a self-contained, embeddable, zero-configuration SQL database engine for Delphi (Embarcadero / CodeGear / Borland).

DISQLite3 v5.50.0 – 8 Nov 2024

Update to SQLite Version 3.47.0.

Performance optimizations:

FTS5 Changes:

DISQLite3 v5.49.1 – 14 Aug 2024

Update to SQLite Version 3.46.1.

DISQLite3 v5.49.0 – 30 Mar 2024

Update to SQLite Version 3.46.0.

DISQLite3 v5.48.3 – 17 Apr 2024

DISQLite3 v5.48.2 – 13 Mar 2024

DISQLite3 v5.48.1 – 31 Jan 2024

DISQLite3 v5.48.0 – 19 Jan 2024

DISQLite3 v5.47.1 – 27 Nov 2023

DISQLite3 v5.47.0 – 22 Nov 2023

DISQLite3 v5.46.1 – 11 Oct 2023

Update to SQLite Version 3.43.2.

DISQLite3 v5.46.0 – 13 Sep 2023

Update to SQLite Version 3.43.1.

DISQLite3 v5.45.0 – 26 Aug 2023

Update to SQLite Version 3.43.0.

Key enhancements include added support for Contentless-Delete FTS5 Indexes, and performance improvements in JSON processing.

Details:

DISQLite3 v5.44.0 – 17 May 2023

DISQLite3 v5.43.2 – 24 Mar 2023

DISQLite3 v5.43.1 – 13 Mar 2023

DISQLite3 v5.43.0 – 24 Feb 2023

DISQLite3 v5.42.1 – 3 Jan 2023

DISQLite3 v5.42.0 – 16 Nov 2022

DISQLite3 v5.41.4 – 5 Oct 2022

This is a security release that addresses a single long-standing problem in the FTS3 extension. An attacker who is able to execute arbitrary SQL statements and who can create a corrupt database that is 2GB or larger in size might be able to trick FTS3 into overflowing an integer used to size a memory allocation, causing the allocation to be too small and ultimately resulting in a buffer overrun. It also includes fixes for other obscure weaknesses.

DISQLite3 v5.41.3 – 7 Sep 2022

DISQLite3 v5.41.2 – 22 Jul 2022

DISQLite3 v5.41.1 – 14 Jul 2022

DISQLite3 v5.41.0 – 6 Jul 2022

DISQLite3 v5.40.2 – 5 Apr 2022

DISQLite3 v5.40.1 – 14 Mar 2022

DISQLite3 v5.40.0 – 25 Feb 2022

DISQLite3 v5.39.2 – 7 Jan 2022

DISQLite3 v5.39.1 – 3 Jan 2022

DISQLite3 v5.39.0 – 6 Dec 2021

DISQLite3 5.38.0 – 16 Sep 2021

DISQLite3 5.37.0 – 24 Jun 2021

Incremental feature and performance improvements:

New APIs:

DISQLite3 5.36.5 – 20 Apr 2021

DISQLite3 5.36.4 – 7 Apr 2021

Yet another patch release to fix obscure problems in features associated with SQLite 3.35.0:

DISQLite3 5.36.3 – 27 Mar 2021

Fix a handful of problems discovered in prior releases:

DISQLite3 5.36.2 – 18 Mar 2021

This is a patch release to fix problems that were discovered shortly after the previous release:

DISQLite3 5.36.1 – 16 Mar 2021

DISQLite3 5.36.0 – 13 Mar 2021

Bug fixes:

DISQLite3 5.35.1 – 26 Jan 2021

DISQLite3 5.35.0 – 3 Dec 2020

DISQLite3 5.34.0 – 19 Aug 2020

DISQLite3 5.33.2 – 26 Jun 2020

DISQLite3 5.33.1 – 8 Jun 2020

DISQLite3 5.33.0 – 5 Jun 2020

DISQLite3 5.32.0 – 27 May 2020

DISQLite3 5.31.1 – 5 Feb 2020

DISQLite3 5.31.0 – 31 Jan 2020

DISQLite3 5.30.0 – 15 Oct 2019

DISQLite3 5.29.0 – 8 Oct 2019

DISQLite3 5.28.0 – 27 May 2019

DISQLite3 5.27.0 – 1 Mar 2019

Bug fixes:

DISQLite3 5.26.1 – 4 Jan 2019

DISQLite3 5.26.0 – 24 Dec 2018

Enhancements:

Performance:

Bug fixes:

DISQLite3 5.24.0 – 18 Apr 2018

DISQLite3 5.23.0 – 26 Jan 2018

DISQLite3 5.22.0 – Nov 16 2017

Bug fixes:

DISQLite3 5.21 – Aug 10 2017

Bug Fixes:

DISQLite3 5.20.1 – Jun 14 2017

DISQLite3 5.20.0 – May 30 2017

Bug Fixes:

DISQLite3 5.19.0 – 3 Apr 2017

Bug Fixes:

DISQLite3 5.18.0 – 16 Feb 2017

Bug Fixes:

DISQLite3 5.17.1 – 7 Jan 2017

DISQLite3 5.17.0 – 4 Jan 2017

Bug Fixes:

DISQLite3 5.16.1 – 9 Dec 2016

DISQLite3 5.16.0 – 3 Nov 2016

Bug Fixes:

DISQLite3 5.15.0 – 21 Oct 2016

Bug Fixes:

DISQLite3 5.14.0 – 20 Sep 2016

Bug Fixes:

DISQLite3 5.13.0 – 21 May 2016

Bug fixes:

DISQLite3 5.12.0 – 7 May 2016

DISQLite3 5.11.0 – 19 Apr 2016

DISQLite3 5.10.0 – 30 Mar 2016

DISQLite3 5.9.0 – 18 Mar 2016

Potentially Disruptive Change:

Backwards Compatibility:

New features:

Performance enhancements:

General improvements:

Bug fixes:

DISQLite3 5.8.4 – 5 Nov 2015

DISQLite3 5.8.3 – 20 Oct 2015

DISQLite3 5.8.2 – 22 Sep 2015

This is a bug fix release:

DISQLite3 5.8.1 – 15 Sep 2015

New Features And Enhancements:

Other changes:

Fixes:

DISQLite3 5.8.0 – 5 Aug 2015

DISQLite3 5.7.8 – 21 May 2015

DISQLite3 5.7.7 – 14 May 2015

DISQLite3 5.7.6 – 30 Apr 2015

DISQLite3 5.7.5 – 25 Apr 2015

DISQLite3 5.7.4 – 27 Feb 2015

DISQLite3 5.7.3 – 13 Feb 2015

New Features:

Performance Enhancements:

Bug fixes:

DISQLite3 5.7.2 – 16 Dec 2014

DISQLite3 5.7.1 – 19 Nov 2014

DISQLite3 5.7.0 – 29 Oct 2014

Performance Enhancements:

New Features:

Bug Fixes:

DISQLite3 5.6.0 – 3 Oct 2014

DISQLite3 5.5.2 – 20 Aug 2014

Performance Enhancements:

Bug Fixes:

DISQLite3 5.5.1 – 4 Jun 2014

Bug Fixes:

DISQLite3 5.5.0 – 28 Apr 2014

DISQLite3 5.0.7 – 8 Apr 2014

DISQLite3 5.0.6 – 27 Mar 2014

DISQLite3 5.0.5 – 12 Mar 2014

DISQLite3 5.0.4 – 11 Feb 2014

DISQLite3 5.0.3 – 7 Feb 2014

DISQLite3 5.0.2 – 2 Jan 2014

DISQLite3 5.0.1 – 21 Oct 2013

DISQLite3 5.0.0 – 25 Sep 2013

DISQLite3 4.5.3 – 6 Sep 2013

DISQLite3 4.5.2 – 30 Aug 2013

DISQLite3 4.5.1 – 28 Aug 2013

DISQLite3 4.5.0 – 14 Jun 2013

DISQLite3 4.2.1 – 19 Apr 2013

DISQLite3 4.2.0 – 31 Mar 2013

DISQLite3 4.1.2 – 9 Jan 2013

DISQLite3 4.1.1 – 20 Dec 2012

DISQLite3 4.1.0 – 13 Dec 2012

DISQLite3 4.0.0 – 4 Oct 2012

DISQLite3 3.1.5 – 14 Jun 2012

DISQLite3 3.1.4.1 – 23 May 2012

DISQLite3 3.1.4 – 14 May 2012

DISQLite3 3.1.3 – 23 Mar 2012

DISQLite3 3.1.2 – 19 Jan 2012

DISQLite3 3.1.1 – 3 Dec 2011

DISQLite3 3.1.0 – 8 Nov 2011

DISQLite3 3.0.0 – 15 Oct 2011

DISQLite3 2.4.5 – 1 Jul 2011

DISQLite3 2.4.4 – 12 Apr 2011

DISQLite3 2.4.3 – 2 Mar 2011

This is an intermediate release based on an a pre SQLite 3.7.6 snapshot. Recommended only to make use of the newly added functionality.

DISQLite3 2.4.2 – 1 Feb 2011

DISQLite3 2.4.1 – 29 Dec 2010

DISQLite3 2.4.0 – 28 Sep 2010

DISQLite3 2.3.1 – 31 Aug 2010

DISQLite3 2.3.0.1 – 05 Aug 2010

The differences between DISQLite3 2.3.0.1 and DISQLite3 2.3.0 are minimal, but because of the possibility of database corruption, upgrading is highly recommended.

DISQLite3 2.3.0 – 28 Jul 2010

DISQLite3 2.2.2 – 31 Mar 2010

DISQLite3 2.2.1 – 17 Mar 2010

DISQLite3 2.2.0 – 9 Jan 2010

IMPORTANT INCOMPATIBILITY CHANGE – please read carefully:

Up to this version, the sqlite3 type was an untyped Pointer. This worked fine when used correctly, but caused hard to identify errors when not. Incompatible variable types are usually detected by the compiler's type checking. But as a matter of fact, Delphi does not generate type errors for untyped Pointer. Code would compile happily if sqlite3 was used instead of sqlite3_stmt, and Delphi would not even object to TDISQLite3Database in place of sqlite3.

Instead, problems surfaced at runtime. They often materialized as access violations with no meaningful error message and could drive helpless developers into despair. When contacting support, some of them even attributed the problem to a bug in DISQLite3. Even though this was not correct, they certainly had a point. So after careful consideration I decided to change all untyped Pointer types to pointers to record structures.

For record pointers, Delphi can detect type conflicts at compile time, so the likelihood of critical runtime errors is greatly reduced. For most stringent type checking, I recommend to compile with “Typed @ operator” always enabled. This can be set as a project option or in code using {$T+} or {$TYPEDADDRESS ON}. With typed @ operator enabled, Delphi also detects incompatible output variable types passed to sqlite3_open, sqlite3_prepare_v2, and similar routines.

Unfortunately, the modified strong typing might ask to change existing code before it compiles. Luckily, however, with {$TYPEDADDRESS ON} Delphi now catches all type incompatibilities so they can be fixed easily. For smaller projects, this is a simple search and replace (older IDEs) or code refactoring (newer ones).

Automatic conversion for larger projects is at hand here:

DISQLite3_Type_Converter.zip contains a precompiled version of the JVCLConverter utility plus the conversion data file. It takes less than a minute to update the DISQLite3 Demos from previous versions: Run JVCLConverter.exe, select the source code folder, and convert. Converting other projects should be just as quickly.

Limit to auto-conversion: The PPointerArray type (mostly used in sqlite3_create_function callbacks) is a standard Delphi type. Converting this automatically might cause unintended side effects if used outside the DISQLite3 context. Therefore PPointerArray must be manually changed to sqlite3_value_ptr_array_ptr.

This table lists all modified, renamed, or deleted type names and their new counterparts. Only those at the top of the list should be in frequent use:

OldNew
sqlite3_ptrsqlite3_ptr_ptr
sqlite3sqlite3_ptr
TDISQLite3DatabaseHandlesqlite3_ptr
PDISQLite3DatabaseHandlesqlite3_ptr_ptr
sqlite3_stmt_ptrsqlite3_stmt_ptr_ptr
sqlite3_stmtsqlite3_stmt_ptr
TDISQLite3StatementHandlesqlite3_stmt_ptr
PDISQLite3StatementHandlesqlite3_stmt_ptr_ptr
sqlite3_blobsqlite3_blob_ptr
TDISQLite3BlobHandlesqlite3_blob_ptr
PDISQLite3BlobHandlesqlite3_blob_ptr_ptr
TSQLite3_Modulesqlite3_module
Psqlite3_modulesqlite3_module_ptr
Tsqlite3_tokenizersqlite3_tokenizer
Psqlite3_tokenizersqlite3_tokenizer_ptr
PPsqlite3_tokenizersqlite3_tokenizer_ptr_ptr
Tsqlite3_tokenizer_modulesqlite3_tokenizer_module
Psqlite3_tokenizer_modulesqlite3_tokenizer_module_ptr
Tsqlite3_tokenizer_cursorsqlite3_tokenizer_cursor
Psqlite3_tokenizer_cursorsqlite3_tokenizer_cursor_ptr
PPsqlite3_tokenizer_cursorsqlite3_tokenizer_cursor_ptr_ptr
Tsqlite3_vtabsqlite3_vtab
Psqlite3_vtabsqlite3_vtab_ptr
PPsqlite3_vtabsqlite3_vtab_ptr_ptr
Tsqlite3_vtab_cursorsqlite3_vtab_cursor
Psqlite3_vtab_cursorsqlite3_vtab_cursor_ptr
PPsqlite3_vtab_cursorsqlite3_vtab_cursor_ptr_ptr
TSQLite3_index_infosqlite3_index_info
Psqlite3_index_infosqlite3_index_info_ptr
Tsqlite3_index_constraintsqlite3_index_constraint
Tsqlite3_index_constraint_arraysqlite3_index_constraint_array
Psqlite3_index_constraint_arraysqlite3_index_constraint_array_ptr
Tsqlite3_index_orderbysqlite3_index_orderby
Tsqlite3_index_orderby_arraysqlite3_index_orderby_array
Psqlite3_index_orderby_arraysqlite3_index_orderby_array_ptr
Tsqlite3_index_constraint_usagesqlite3_index_constraint_usage
Tsqlite3_index_constraint_usage_arraysqlite3_index_constraint_usage_array
Psqlite3_index_constraint_usage_arraysqlite3_index_constraint_usage_array_ptr

Bugs fixed in this version:

DISQLite3 2.1.2 – 8 Dec 2009

DISQLite3 2.1.1 – 15 Oct 2009

DISQLite3 2.1.0 – 14 Sep 2009

DISQLite3 2.0.9 – 18 Aug 2009

DISQLite3 2.0.8 – 14 Jul 2009

DISQLite3 2.0.7 – 8 May 2009

DISQLite3 2.0.6 – 28 Apr 2009

DISQLite3 2.0.5 – 7 Apr 2009

DISQLite3 2.0.4 – 5 Mar 2009

DISQLite3 2.0.3 – 31 Jan 2009

DISQLite3 2.0.2 – 20 Dec 2008

DISQLite3 2.0.1 – 28 Nov 2008

DISQLite3 2.0.0 – 17 Nov 2008

DISQLite3 1.6.1 – 8 Aug 2008