breaking changes
- drop support for lots of unsupported database versions (technically a breaking change, hence major bump)
new features
- timestamps in headlines are now pulled into database (thanks aviav)
bugfixes
- fix compilation and documentation errors (thanks aviav)
- fix whitespace issues with go-sqlcmd
- fix compiler errors and warnings
- fix typo in cask file preventing build from properly testing
- fix error when using pull for files with no preamble
- fix typos in
org-sql-user-push
/org-sql-user-pull
- fix bug timestamp bug when using org-mode 9.4
- new features
- add preamble (the text before headlines) to
outlines
table - add
org-sql-pull-from-db
- add preamble (the text before headlines) to
- breaking changes
- drop MySQL 5.7 support due to need for recursive queries
org-sql-dump-table
now returns deserialized output (eg output is converted to real numbers, symbols, and strings)
- bug fixes
- properly handle strings with newlines, tabs, and other control characters
- property handle strings that literally say "NULL"
- add habits to the
timestamp_repeater
table - add headline_index column to
headlines
table to denote order - add level column to
headlines
table - fix constraints to agree with intended cardinality
- fix compile errors
- new features
- added support for SQL-Server, MySQL/MariaDB, and added testing for all current versions of listed databases
- added entity relationship diagrams to documentation
- added hooks (eg
org-sql-post-push-hook
and related) to allow custom SQL commands to be run :args
and:env
options to extend the client program call as needed- comprehensive public API for manipulating the database (in addition to the 'interactive' functions)
- statistics cookies are now tracked in the
headlines
table
- performance improvements
- option to spawn asynchronous client process (
org-sql-async
) - optional
:unlogged
tables for Postgres - now use one-line bulk INSERT syntax
- option to spawn asynchronous client process (
- changes (all of which are breaking changes)
- switched role of
file_hash
andfile_path
; the former now has a one-to-many relationship with the latter which allows identical org-files to exist in the database where they couldn't before - all tables now use surrogate keys, which is much faster (possibly two orders of magnitude) and doesn't require buffer-specific information to make a primary key which would be unknown for new rows
files
table renamed tooutlines
andfile_metadata
table addedmd5
column has been renamed tooutline_hash
file_properties
was removed (it was redundant)headline_id
removed fromplanning_entries
table- warning and repeater information in the
timestamps
table has been split off into separate tables - removed
ON UPDATE CASCADE
from all tables (no longer needed) - split
org-sql-user-reset
into-reset
and-init
functions (which are functionally inverses of each other) org-sql-user-update
was renamed toorg-sql-user-push
...to make room for a-pull
;)
- switched role of
- recognize all effort formats (not just
MM
andHH:MM
) - fix f.el dependency
- use latest logbook/contents code from
org-ml
- added
org-sql-log-note-headings-overrides
- various bugfixes
- use
org-ml
to simplify code - add support for postgres
- use subprocesses for SQL interaction instead of built-in Emacs SQL comint mode
- various performance improvements
- add tests (stateless and stateful)
- total rewrite of the schema:
- moved/added file tags, file properties, headline closures, headline tags, headline properties, and planning entries as seperate tables
- no longer defer foreign keys
- use enum where fixed data types are expected (not sqlite)