* All objects that can be closed implement __bool__() which
returns True while open and False when closed - Connection,
Cursor, Backup, Blob, Session, ChangesetBuilder, Rebaser.
- update to 3.51.0.0:
* JSON can be used as though it is a native type of SQLite,
with automatic conversion of Python objects on writing and
reading. (example)
* Connection.convert_binding (and Cursor.convert_binding)
callback to allow conversion of bindings when executing SQL.
* Connection.convert_jsonb (and Cursor.convert_jsonb) callback
to allow conversion of JSONB when reading query results.
(JSONB is SQLite’s binary internal parsed format for quick
operations on JSON.)
* 3 functions for working directly with JSONB allowing direct
conversion between Python objects and JSONB, without having
to go through the intermediate JSON text format.
* Added apsw.ext.Function() for calling SQL functions directly
from Python.
* When using with (Connection context manager) you can set the
outer transaction mode to DEFERRED (default) / IMMEDIATE /
EXCLUSIVE. (APSW issue 578)
* Changeset.apply() now takes filter_change parameter for
allowing filtering on individual change level, taking
advantage of sqlite3changeset_apply_v3
* Updated Connection.status() to use 64 bit API, and
apsw.ext.ShowResourceUsage() to show TEMPBUF_SPILL. (pragma
cache_size controls the amount of temp/cache memory
available.)
* The percentile extension is enabled when enabling all
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=63
* PyPI binary builds are available for:
* Python 3.14
* Windows ARM
* Python 3.14 `free threaded`__ (no GIL). The GIL will be
enabled when APSW is loaded. APSW will be free threaded
in the future (#568)
- from version 3.50.3.0
* preupdate_hook` is available. The `commit` and `rollback`
hooks let you provide multiple callbacks, multiplex by APSW.
`apsw.ext.Trace` can now show updates, and transaction begin,
commit, and rollback.
- from version 3.50.2.0
* PyPi builds now use `cibuildwheel version 3` which advances
the minimum supported Linux distribution. It is configured
to continue building both 32 and 64 bit binaries.
- from version 3.50.1.0
* No user visible changes.
- from version 3.50.0.0
* Full support for the `session`
* Added `Connection.setlk_timeout`, `apsw.mapping_setlk_timeout_flags`,
and enabled the timeout for amalgamation builds such as PyPI.
* Shell `open command <shell-cmd-open>` allows specifying flags to
open a connection, and `connection command <shell-cmd-connection>`
shows flags used for each open. (#557)
* Type stubs updated to `collections.abc.Buffer` (Python 3.12+)
wherever some bytes are taken. `Buffers `__ have always been used,
but Python 3.12 added typing.
- from version 3.49.2.0
* Shell dump command handles generated columns correctly. (#556)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=61
- update to 3.46.0.1:
* :func:`apsw.ext.query_info` provides the count and names of
bindings parameters. (:issue:`528`)
* Address how errors are handled in VFS xRandomness routine,
that is only called once by SQLite to seed its random number
generator. (:issue:`526`)
* Added :meth:`Connection.vfsname` and updated corresponding
shell command to get the diagnostic names of the vfs stack
for the connection. (:issue:`525`)
* Do not cache :meth:`Connection.pragma` statements to avoid
encryption keys, or pragmas that run during prepare from
being retained. (:issue:`522`)
* :meth:`Connection.pragma` adds keyword schema argument to run
pragma against attached databases. (:issue:`524`)
OBS-URL: https://build.opensuse.org/request/show/1184155
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=26
* :func:`apsw.ext.query_info` provides the count and names of
bindings parameters. (:issue:`528`)
* Address how errors are handled in VFS xRandomness routine,
that is only called once by SQLite to seed its random number
generator. (:issue:`526`)
* Added :meth:`Connection.vfsname` and updated corresponding
shell command to get the diagnostic names of the vfs stack
for the connection. (:issue:`525`)
* Do not cache :meth:`Connection.pragma` statements to avoid
encryption keys, or pragmas that run during prepare from
being retained. (:issue:`522`)
* :meth:`Connection.pragma` adds keyword schema argument to run
pragma against attached databases. (:issue:`524`)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=57
* Adjusted levels in :func:`apsw.ext.log_sqlite` to be lower
for some SQLite messages like SQLITE_SCHEMA and
SQLITE_NOTICE_RECOVER_WAL (:issue:`518`)
* Previous source releases were signed with PGP. Starting with
this release Sigstore's cosign tool is used
(:ref:`instructions <verifydownload>`). (:issue:`512`)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=55
- update to 3.44.2.0:
* Added `logger` parameter to :func:`apsw.ext.log_sqlite` to
use a specific :class:`logging.Logger` (:issue:`493`)
* Added :func:`apsw.ext.result_string` to turn an result code
into a string, taking into account if it is extended or not.
* Provide detail when C implemented objects are printed. For
example :class:`connections <Connection>` include the filename.
* Added :meth:`URIFilename.parameters` (:issue:`496`)
* :class:`URIFilename` are only valid for the duration of the
:meth:`VFS.xOpen` call. If you save and use the object later
you will get an exception. (:issue:`501`)
OBS-URL: https://build.opensuse.org/request/show/1130519
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=20
* Added `logger` parameter to :func:`apsw.ext.log_sqlite` to
use a specific :class:`logging.Logger` (:issue:`493`)
* Added :func:`apsw.ext.result_string` to turn an result code
into a string, taking into account if it is extended or not.
* Provide detail when C implemented objects are printed. For
example :class:`connections <Connection>` include the filename.
* Added :meth:`URIFilename.parameters` (:issue:`496`)
* :class:`URIFilename` are only valid for the duration of the
:meth:`VFS.xOpen` call. If you save and use the object later
you will get an exception. (:issue:`501`)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=45
- update to 3.44.0.0:
* Added virtual table :meth:`VTTable.Integrity` support.
* On 64 bit platforms with the amalgamation,
`SQLITE_MAX_MMAP_SIZE SQLite's default limit is 2GB.
* :meth:`Connection.create_aggregate_function` can take a class
with step and final methods. (:issue:`421`)
* Corrected non :pep:`8` :ref:`compliant names <renaming>`.
The old names remain as aliases to the new ones, and your
code will not break.
* :doc:`Exception <exceptions>` handling has been updated, with
multiple exceptions in the same SQLite control flow being
chained together.
- Reduced overhead of the Column method when using
Connection or Cursor
- Fix loadable extensions are missing,
* Added constants: SQLITE_IOERR_CORRUPTFS
OBS-URL: https://build.opensuse.org/request/show/1126235
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=19
* Added virtual table :meth:`VTTable.Integrity` support.
* On 64 bit platforms with the amalgamation,
`SQLITE_MAX_MMAP_SIZE SQLite's default limit is 2GB.
* :meth:`Connection.create_aggregate_function` can take a class
with step and final methods. (:issue:`421`)
* Corrected non :pep:`8` :ref:`compliant names <renaming>`.
The old names remain as aliases to the new ones, and your
code will not break.
* :doc:`Exception <exceptions>` handling has been updated, with
multiple exceptions in the same SQLite control flow being
chained together.
- Reduced overhead of the Column method when using
Connection or Cursor
- Fix loadable extensions are missing,
* Added constants: SQLITE_IOERR_CORRUPTFS
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=43
- Update to 3.43.1.0
- All C code calling into Python and all C code called by Python
uses vectorcall / fastcall (see PEP 590) which reduces the
overhead of passing and receiving positional and keyword
arguments. (APSW issue 477 APSW issue 446):
* Conversion of arguments from Python values to C values drops
generic PyArg_ParseTupleAndKeywords in favour of direct
processing which is more efficient and allows better
exception messages.
* Running speedtest with a VFS that inherits all methods went
from being 17% slower than pure SQLite to 2% slower.
* A virtual table benchmark takes 35% less time. (Remember that
benchmarks are best case!)
- The shell JSON output modes have been fixed. Mode 'json'
outputs a json array, while mode 'jsonl' does newline delimited
json objects, aka json lines. (APSW issue 483)
- Changes from 3.43.1.0
- This is the last version that supports Python 3.6 and
Python 3.7 (both end of life). The policy as stated in the
about page is that there will be one more APSW release after
a Python version goes end of life supporting that Python
version. (APSW issue 471)
- Added best practice module (APSW issue 460)
- apsw.ext.log_sqlite() outputs SQLite warnings at warning level.
(APSW issue 472)
- sqlite3_stmt_explain is wrapped available as a explain keyword
parameter on execute/executemany methods. (APSW issue 474)
- Added documentation and helper class for implementing custom
pragmas in your own Virtual File System (VFS) (APSW issue 464)
- Reduced overhead of the Column method when using
apsw.ext.make_virtual_module() (APSW issue 465)
OBS-URL: https://build.opensuse.org/request/show/1115988
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=41
- Update to 3.42.0.1:
- Work with SQLite compiled with
SQLITE_OMIT_DEPRECATED. Connection.setprofile() was changed
from using the deprecated sqlite3_profile to sqlite3_trace_v2
giving the same results. When including the amalgamation,
SQLITE_OMIT_DEPRECATED is defined. (APSW issue 443)
- Shell updates adding various commands to match the SQLite
shell, as well as code and documentation improvements. (APSW
issue 397)
- Added Connection.read() and apsw.ext.dbinfo() to provide
information from the database and journal/wal files. The
shell command .dbinfo displays it.
- Added apsw.vfs_details(). The shell command .vfslist displays
it.
- Implemented VFS method xCurrentTimeInt64. The default SQLite
VFS no longer provide xCurrentTime (floating point version)
if SQLITE_OMIT_DEPRECATED is defined, so this is needed for
inheritance to work. (APSW issue 451)
- Backwards incompatible change: VFS If you override
xCurrentTime, then you will need to override
xCurrentTimeInt64 in the same way, or exclude
xCurrentTimeInt64 in VFS, or use iVersion of 1.
- speedtest now shows summary statistics, and improved help
text. (APSW issue 444)
- Clean up the SPEC file, use %pyproject_* macros instead.
- Make the test suite pass again (gh#rogerbinns/apsw#462).
OBS-URL: https://build.opensuse.org/request/show/1100912
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=17
- Work with SQLite compiled with
SQLITE_OMIT_DEPRECATED. Connection.setprofile() was changed
from using the deprecated sqlite3_profile to sqlite3_trace_v2
giving the same results. When including the amalgamation,
SQLITE_OMIT_DEPRECATED is defined. (APSW issue 443)
- Shell updates adding various commands to match the SQLite
shell, as well as code and documentation improvements. (APSW
issue 397)
- Added Connection.read() and apsw.ext.dbinfo() to provide
information from the database and journal/wal files. The
shell command .dbinfo displays it.
- Added apsw.vfs_details(). The shell command .vfslist displays
it.
- Implemented VFS method xCurrentTimeInt64. The default SQLite
VFS no longer provide xCurrentTime (floating point version)
if SQLITE_OMIT_DEPRECATED is defined, so this is needed for
inheritance to work. (APSW issue 451)
- Backwards incompatible change: VFS If you override
xCurrentTime, then you will need to override
xCurrentTimeInt64 in the same way, or exclude
xCurrentTimeInt64 in VFS, or use iVersion of 1.
- speedtest now shows summary statistics, and improved help
text. (APSW issue 444)
- Clean up the SPEC file, use %pyproject_* macros instead.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=37
- update to 3.42.0.0:
* Shell: Errors when SQLite are preparing a statement now show
the relevant extract of the query, and where the error was
detected.
* Shell: Output modes table (ASCII line drawing, lots of
sanitization), box (Unicode line drawing) and
qbox (box with quoted values) available.
* Shell: if started interactively then box is the default mode
(list remains the default in non-interactive)
* Added :meth:`Connection.pragma` to execute pragmas
and get results.
* Added :attr:`Cursor.get` returning query results with the
least amount of structure.
* Fixed execution tracers should return comment text for
comment only queries, and add :attr:`Cursor.has_vdbe`.
* Ensure that all applicable options are implemented for
:func:`apsw.config`, :meth:`Connection.config` and similar.
* Added :func:`apsw.sleep`
* Strings for :meth:`apsw.VFS.xNextSystemCall` are interned
* Detect unbound recursion not handled by CPython, and handle
better.
OBS-URL: https://build.opensuse.org/request/show/1089348
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=15
* Shell: Errors when SQLite are preparing a statement now show
the relevant extract of the query, and where the error was
detected.
* Shell: Output modes table (ASCII line drawing, lots of
sanitization), box (Unicode line drawing) and
qbox (box with quoted values) available.
* Shell: if started interactively then box is the default mode
(list remains the default in non-interactive)
* Added :meth:`Connection.pragma` to execute pragmas
and get results.
* Added :attr:`Cursor.get` returning query results with the
least amount of structure.
* Fixed execution tracers should return comment text for
comment only queries, and add :attr:`Cursor.has_vdbe`.
* Ensure that all applicable options are implemented for
:func:`apsw.config`, :meth:`Connection.config` and similar.
* Added :func:`apsw.sleep`
* Strings for :meth:`apsw.VFS.xNextSystemCall` are interned
* Detect unbound recursion not handled by CPython, and handle
better.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=33
- update to 3.41.2.0:
* Fixed :issue:`412` in :meth:`apsw.ext.make_virtual_module`.
* Added :meth:`apsw.connections` to get all connections.
* :func:`sys.unraisablehook` is called correctly (:issue:`410`)
* Be stricter where :class:`bool` values are expected (eg
* :meth:`VTTable.BestIndex`), only accepting :class:`int` and
:class:`bool`. Previously you could for example supply
strings and lists, which were almost certainly unintended
errors.
OBS-URL: https://build.opensuse.org/request/show/1079739
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=14
* Fixed :issue:`412` in :meth:`apsw.ext.make_virtual_module`.
* Added :meth:`apsw.connections` to get all connections.
* :func:`sys.unraisablehook` is called correctly (:issue:`410`)
* Be stricter where :class:`bool` values are expected (eg
* :meth:`VTTable.BestIndex`), only accepting :class:`int` and
:class:`bool`. Previously you could for example supply
strings and lists, which were almost certainly unintended
errors.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=31
- update to 3.40.1.0:
* Implemented `window functions
* Function flags can be specified to
Connection.createscalarfunction and
Connection.createaggregatefunction
* Added apsw.mapping_function_flags
* Added Connection.trace_v2` with apsw.mapping_trace_codes
and apsw.mapping_statement_status
* Ensure all SQLite APIs are wrapped.
* When an unraisable exception happens, sqlite3_log is
now called so you will have context within SQLite's actions.
* sys.unraisablehook now called first, and if it doesn't exist then
sys.excepthook as before.
* When the wrong type is given for a function argument, the
error message now includes the parameter name and function
signature.
* Let SQLite do size checking instead of APSW for strings and
blobs.
* Added :meth:`apsw.ext.log_sqlite` which installs a handler
that forwards SQLite messages to the logging module
* Added set_default_vfs and unregister_vfs taking vfs
names.
OBS-URL: https://build.opensuse.org/request/show/1064204
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=13
* Implemented `window functions
* Function flags can be specified to
Connection.createscalarfunction and
Connection.createaggregatefunction
* Added apsw.mapping_function_flags
* Added Connection.trace_v2` with apsw.mapping_trace_codes
and apsw.mapping_statement_status
* Ensure all SQLite APIs are wrapped.
* When an unraisable exception happens, sqlite3_log is
now called so you will have context within SQLite's actions.
* sys.unraisablehook now called first, and if it doesn't exist then
sys.excepthook as before.
* When the wrong type is given for a function argument, the
error message now includes the parameter name and function
signature.
* Let SQLite do size checking instead of APSW for strings and
blobs.
* Added :meth:`apsw.ext.log_sqlite` which installs a handler
that forwards SQLite messages to the logging module
* Added set_default_vfs and unregister_vfs taking vfs
names.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=29
- update to 3.40.0.0:
* Fixed regression in statement cache update (version 3.38.1-r1) where
trailing whitespace in queries would be incorrectly treated as
incomplete execution (APSW issue 376)
* Added Various interesting and useful bits of functionality (APSW issue
369)
* Added more Pythonic attributes as an alternative to getters and setters,
including Connection.in_transaction, Connection.exectrace,
Connection.rowtrace, Cursor.exectrace, Cursor.rowtrace,
Cursor.connection (APSW issue 371)
* Completed: To the extent permitted by CPython APIs every item has the
same docstring as this documentation. Every API can use named
parameters. The type stubs cover everything including constants. The
type stubs also include documentation for everything, which for example
Visual Studio Code displays as you type or hover. There is a single
source of documentation in the source code, which is then automatically
extracted to make this documentation, docstrings, and docstrings in the
type stubs.
* Example/Tour updated and appearance improved (APSW issue 367).
* Added Connection.cache_stats() to provide more information about the
statement cache.
* Cursor.execute() now uses sqlite_prepare_v3 which allows supplying
flags.
* Cursor.execute() has a new can_cache parameter to control whether the
query can use the statement cache. One example use is with authorizers
because they only run during prepare, which doesn’t happen with already
cached statements.
* (The Cursor.execute() additional parameters are keyword only and also
present in Cursor.executemany(), and the corresponding
Connection.execute() and Connection.executemany() methods.)
OBS-URL: https://build.opensuse.org/request/show/1040441
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=12
* Fixed regression in statement cache update (version 3.38.1-r1) where
trailing whitespace in queries would be incorrectly treated as
incomplete execution (APSW issue 376)
* Added Various interesting and useful bits of functionality (APSW issue
369)
* Added more Pythonic attributes as an alternative to getters and setters,
including Connection.in_transaction, Connection.exectrace,
Connection.rowtrace, Cursor.exectrace, Cursor.rowtrace,
Cursor.connection (APSW issue 371)
* Completed: To the extent permitted by CPython APIs every item has the
same docstring as this documentation. Every API can use named
parameters. The type stubs cover everything including constants. The
type stubs also include documentation for everything, which for example
Visual Studio Code displays as you type or hover. There is a single
source of documentation in the source code, which is then automatically
extracted to make this documentation, docstrings, and docstrings in the
type stubs.
* Example/Tour updated and appearance improved (APSW issue 367).
* Added Connection.cache_stats() to provide more information about the
statement cache.
* Cursor.execute() now uses sqlite_prepare_v3 which allows supplying
flags.
* Cursor.execute() has a new can_cache parameter to control whether the
query can use the statement cache. One example use is with authorizers
because they only run during prepare, which doesn’t happen with already
cached statements.
* (The Cursor.execute() additional parameters are keyword only and also
present in Cursor.executemany(), and the corresponding
Connection.execute() and Connection.executemany() methods.)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=27
- update to 3.37.0-r1:
* Allow breaking of reference cycles between objects that contain a
Connection or Cursor
* Fixed custom VFS extension loading failure could leave the error message
unterminated
* Updated size of mutex array used by the fork checker
* Connections are opened with SQLITE_OPEN_EXRESCODE so open errors will also
include extended result codes
* Connection.changes() and Connection.totalchanges() use the new SQLite APIs
that return 64 bit values
* Added Connection.autovacuum_pages()
* Implemented Connection.serialize() and Connection.deserialize().
* Allow any subclass of VFS to implement WAL, not just direct subclasses
OBS-URL: https://build.opensuse.org/request/show/947056
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=11
* Allow breaking of reference cycles between objects that contain a
Connection or Cursor
* Fixed custom VFS extension loading failure could leave the error message
unterminated
* Updated size of mutex array used by the fork checker
* Connections are opened with SQLITE_OPEN_EXRESCODE so open errors will also
include extended result codes
* Connection.changes() and Connection.totalchanges() use the new SQLite APIs
that return 64 bit values
* Added Connection.autovacuum_pages()
* Implemented Connection.serialize() and Connection.deserialize().
* Allow any subclass of VFS to implement WAL, not just direct subclasses
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=26
- Update to 3.35.4-r1:
- Updates for SQLite download url (the year is part of the urls).
- Added enable flag for built-in SQL math functions, and enable
it by default with –enable-all-extensions.
- Use the newer buffer API for Python 3
(old API removed in Python 3.10).
- Fix loadable extensions are missing,
so insert --enable-all-extensions and --enable=load_extension.
See: https://rogerbinns.github.io/apsw/build.html#building
This version ist needed for calibre and also the build parameters " --enable-all-extensions and --enable=load_extension".
Without this parameters calibre find no sqlite-extension.
OBS-URL: https://build.opensuse.org/request/show/909410
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-apsw?expand=0&rev=24
- Fix the source url to really match reality
- Update to 3.33.0-r1:
* Small performance improvement in string handling
* apsw module exposes Cursor, Blob, and Backup types (issue #273)
* pkg-config is used to detect International Components for
Unicode (ICU) sdk when the SQLite ICU extension is enabled. It
falls back to icu-config as before. (issue #268).
- Update to 3.32.2-r2:
* Added some constants
* Minor documentation updates
- Fix source URL
OBS-URL: https://build.opensuse.org/request/show/836079
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-apsw?expand=0&rev=8