+2018-02-04 Russ Tyndall <russ@acceleration.net>
+ * sql/generic-postgres.lisp:
+ Wall times default to being timestamptz in postgresql now.
+ There was a TODO questioning why it was storing zoneless by
+ default - it was because of the bugs about tracking UTC
+ vs zoneless
+
+
+2018-02-03 Russ Tyndall <russ@acceleration.net>
+ * sql/time.lisp, tests/time.lisp:
+ Better distinguishing between zoneless timestamps and UTC times,
+ particularly as relates to postgresql-socket(3) backends. Without
+ this change, timestamptzs are read as localtimes and saved as
+ localtimes, when they should be read and printed as UTC times,
+ this bug will lead to dates changing every save as they are being
+ reconverted to UTC again.
+
+ We followed a minimal approach (following postgresql' lead), we
+ simply add a is-utc? boolean. Before this, zoned times were
+ converted to UTC, but since we never tracked that it was a UTC
+ time vs a zoneless time, there was conflation between the two. In
+ order to preserver comparability between dates and times that are
+ local vs UTC. I wrote a `time-to-utc` utilizing decode-time's
+ implementation dependent timezone defaulting.
+ (I verified the math by comparing results to the local-time
+ library from quicklisp).
+
+ Ultimately, adoption of a third party datetime library is my
+ strong preference (eg: local-time). While this project has, as a
+ whole refrained from outside requirements, I think that we should
+ consider moving to local-time as our date / time format, or
+ providing that as an option, both to support a semi standardized
+ eco system, and also to have a more robust timestamp implementation.
+
+
+2016-01-26 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.7.0 release
+ * sql/utils.lisp: Apply patch from Martin Simmons for
+ Lispworks 7 compatiblity
+
+2016-01-17 Russ Tyndall <russ@acceleration.net>
+ * applied patches from Javeier Olaechea
+ * allows unix socket connections in clsql-postgressql-socket3
+ * modernize asd slightly
+
+2015-10-09 Russ Tyndall <russ@acceleration.net>
+ * add decimals.lisp file https://github.com/tlikonen/cl-decimals
+ * use this for safe parsing of numeric / decimal / rational types
+ * Added because newer postgres print money types as currency strings
+
+2015-08-12 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.6.3 release
+ * db-oracle/oracle-sql.lisp: Patch for PostgreSQL socket interface
+ for unicode characters. Thanks to Jason Melbye.
+
+2015-06-02 Daniel KochmaĆski <dkochmanski@turtle-solutions.eu>
+ * clsql.asd, sql/package.lisp: Add ECL compatibility fixes
+ * sql/db-interface.lisp: Fix declaration typo
+
+2015-04-06 Russ Tyndall <russ@acceleration.net>
+ * sql/operations, sql/expressions: add postgresql E-string
+ operator / expression. Needed for correct regex handling
+ EG: [E "some string"]=> E'some string'
+
+2015-03-30 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.6.2 release
+ * db-oracle/oracle-sql.lisp: Remove extra hyphen, thanks to
+ Thomas Vossen
+
+2015-03-24 Russ Tyndall <russ@acceleration.net>
+ * sql/oodml.lisp: fixed call-next-method in the base of
+ read-sql-value and replaced with a continuable
+ sql-value-conversion-error
+ * default read-sql-value for list
+ * tests for sql-value-conversion-errors and list
+
+2015-03-18 Russ Tyndall <russ@acceleration.net>
+ * {uffi,db-mysql}/Makefile: remove -pie build hardening for
+ which caused load issues for Linux Mint
+
+2015-03-18 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.6.1 release
+ * {uffi,db-mysql}/Makefile: Remove pie from build
+ hardening options for Debian/Ubuntu systems. Thanks to
+ DJ <jakep@arqux.com> and Russ Tyndall <russ@acceleration.net>
+
+2015-02-26 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.6.0 release
+ * {uffi,db-mysql}/Makefile: Add build hardening for Debian
+
+2015-02-24 Russ Tyndall <russ@acceleration.net>
+ * mysql-sql.lisp
+ an error in type declarations generating a compilation warning
+ was being treated as an error in recent SBCLs, fixed the type
+ warning by correcting the type (still a ton of compliation
+ notes)
+
+2015-02-23 Russ Tyndall <russ@acceleration.net>
+ * sql/metaclasses.lisp
+ made reinitialize-instance return the instance passed to it as
+ SBCL now expected (mentioned on the SBCL-devel mailing list by
+ Stas
+
+2014-12-03 Russ Tyndall <russ@acceleration.net>
+ * sqlite-sql.lisp
+ Added database arg to `canonicalize-result-types` so that it could
+ correctly call `sqlite-aref` with the required number of arguments
+ Thanks Zach Beane for the bug report.
+
+2014-07-29 Russ Tyndall <russ@acceleration.net>
+ * mysql-api.lisp, mysql-sql.lisp, test-connection.lisp
+ Added code to the mysql backend to pull all result sets as
+ multiple args. This fixes a bug in the mysql backend where trying
+ to query after executing a stored procedure (even on a pooled
+ connection) would raise an error about the connection being out of
+ sync. The second result set for the stored procedure seems to be
+ empty, so not sure why we need to iterate past it.
+
+ patch / bugreport provided by: Ilya Khaprov deadtrickster@github
+
+2014-06-11 Russ Tyndall <russ@acceleration.net>
+ * databases.lisp, sqlite3-sql.lisp
+ Similar to and overriding the patch 2014-01-30 937a3d, adds a
+ default-encoding variable uses that in places where a nil encoding
+ was being passed. Defaults to :utf-8. This is mostly in place so
+ that uffi and cffi both work similarly (by moving the default into
+ clsql instead of clsql-uffi). This allows my automated build
+ environment to do its job
+
+2014-06-10 Russ Tyndall <russ@acceleration.net>
+
+ * db-mysql/Makefile - the results of dpkg-buildflags --get LDFLAGS
+ seem to have changed on my system and and sed was returning
+ invalid command line arguments to ld. To resolve this I changed
+ sed to emit valid args, which seems to have resolved the issue.
+
+2014-04-24 Russ Tyndall <russ@acceleration.net>
+ * oodml.lisp, test-oodml.lisp Better handling of view-slots of
+ type symbol/keyword. Better handling of printing and reading
+ bindings (per mailing list request, always read and write in base
+ 10)
+
+2014-03-04 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.5.0: New release
+ * makefile.common: Check for /usr/bin/dpkg-buildflags
+ * {db-mysql,uffi}/Makefile: Use debian buildflags
+
+2014-02-24 Russ Tyndall <russ@acceleration.net>
+ * oodml.lisp bind *print-length* to nil before printing
+ lists/arrays to the database.
+
+2014-01-30 Russ Tyndall <russ@acceleration.net>
+ * sqlite3-sql.lisp specify :utf-8 as the default encoding if there
+ is not one (allows :clsql-cffi to be closer to working for this
+ backend).
+
+ I ran the test suite successfully once with :clsql-cffi, but there
+ after I got spurious errors and especially unrecoverable errors
+ while connecting about the database being locked
+
+2014-01-30 Russ Tyndall <russ@acceleration.net>
+ * sqlite3-sql.lisp, fddl.lisp Dont compare database-identifiers
+ with invalid comparison operators
+
+2014-01-30 Russ Tyndall <russ@acceleration.net>
+ * generic-odbc.lisp, ooddl.lisp, generic-postgresql.lisp,
+ test-init.lisp, ds-nodes.lisp, generic-odbc.lisp, odbc-sql.lisp
+
+ auto-increment-column support improvement (mssql esp, now will
+ auto-fill after insert). Use +auto-increment-names+ to determine
+ auto-increment-column-p.
+
+ This triggered much test failing as regards normalized classes /
+ autoincrement primary key stuff.
+
+ New odbc-postgresql-database sub-type
+
+ POSSIBLY BREAKING CHANGES:
+ 1 ) Previously all classes in a normalized heirachy had their p-key
+ marked as "auto-increment". Usually auto-increment means a key
+ supplied by the database system, so this was decidedly
+ non-standard usage (clsql is explicitly providing the key for all
+ normalized subclasses of any given parent see ds-nodes.lisp). Some
+ RDMS will not allow insertion/updates of autoincrement columns
+ without hoop jumping and, as it doesnt really make much sense, I
+ removed the "auto-increment" aspects of normalized sub-classes.
+ Now the primary keys are chained regardless. The parent-most key
+ can be autoincrement or not.
+
+ 2 ) ODBC Postgresql connections are now both GENERIC-ODBC-DATABASE
+ and GENERIC-POSTGRESQL-DATABASE. Probably not a widely used path,
+ but this change allows most of the previously failing tests to
+ pass on this backend (we now format stuff correctly for postgres).
+ I anticipate this probably is not perfect yet (IE: I probably
+ missed something)
+
+2014-01-29 Russ Tyndall <russ@acceleration.net>
+ * oodml.lisp, generics.lisp - added
+ clsql-sys::view-classes-and-storable-slots generic (added method
+ previously). Also added to-database-p keyword to allow overrides
+ to distinguish between the two situations. Mostly so that
+ clsql-helper:dirty-slots-mixin can filter slots when writing
+ values to the database but still allow all slots to be read from
+ the database
+
+2014-01-17 Russ Tyndall <russ@acceleration.net>
+ * oodml.lisp, generics.lisp - added filter-select-list generic
+ to allow fine grained control of generated query/object mappings
+
+2014-01-07 Russ Tyndall <russ@acceleration.net>
+ * clsql-uffi.lisp, sqlite3 auto-increment support
+ * clsql-uffi.lisp, test-basic.lisp, fixes related to unsigned vs
+ signed ints (thanks Aaron Burrow)
+ * cleaning and testing
+
+2013-09-27 Russ Tyndall <russ@acceleration.net>
+ * fixed bug converting to boolean in db-mysql/mysql-sql.lisp
+ from github user Sectoid https://github.com/UnwashedMeme/clsql/pull/1
+
+2013-06-19 Russ Tyndall <russ@acceleration.net>
+ * sql/oodml.lisp, db-postgresql-socket3/sql.lisp,
+ db-mysql/mysql-objects.lisp, sql/generic-odbc.lisp
+ Refactored read-sql-value similar to the other recent refactorings
+
+ * the symbol case now uses intern instead of read-from-string
+ (which may not return a symbol and could have security issues
+ since read-eval was not being unset)
+
+ * read-eval is now off for all cases
+
+ * centralized logic into a single case statement, hopefully making
+ this more readable and debuggable
+
+ * TODO: make these refactorings to the oracle backend (I cannot
+ test against oracle and am loathe to change without testing
+
+2013-06-19 Russ Tyndall <russ@acceleration.net>
+ * sql/mysql-objects.lisp
+ Found and refactored a way some more eql specified methods of
+ database-get-type-specifier in mysql
+
+2013-06-18 Russ Tyndall <russ@acceleration.net>
+ * sql/oodml.lisp, sql/mysql-objects.lisp
+ refactored database-output-sql-as-type in a similar fashion to
+ the previous refactor of database-get-type-specifier (fewer
+ methods using case instead of eql specifiers)
+
+ * removed very strange definition of outputing floats as strings
+ for something sane (it was previously doing silly work like
+ setting the default read float type (which AFAICT doesnt affect
+ printing))
+
+ * half of the cases nil returned "" other times it returned nil,
+ now if we get a null value we return nil always
+
+ * removed odd-logic (seemingly untouched since the initial import),
+ that removed null characters from printed lists. If we have #\null
+ in a printed list, we had probably better figure out what went wrong
+ there rather than destructively modifying the list output on the way
+ to the DB ;; removed (substitute-char-string escaped #\Null " ")
+
+2013-06-18 Russ Tyndall <russ@acceleration.net>
+ * sql/generic-odbc.lisp, sql/generic-postgresql.lisp, sql/oodml.lisp
+ tests/test-fddl.lisp
+
+ refactored database-get-type-specifier for postgres and mssql
+
+ Single methods with a case on the symbol arg (similar to the recent
+ refactoring in oodml.lisp)
+
+ This reduces line count and generally makes it easier to find and
+ read all the backend-specific types
+
+2013-06-10 Russ Tyndall <russ@acceleration.net>
+ * sql/oodml.lisp, sql/generic-postgresql.lisp, doc/ref-fddl.xml,
+ sql/packages.lisp
+
+ Updated get-database-type-specifier to handle text/longchar type
+ and refactored
+
+ * added a warning above defaulting to VARCHAR (since its probably
+ NOT what is expected on a bad type specifier).
+
+ * added a case where the specified type being a string, passes
+ that string directly (to better/more easily allow db-specific
+ data-types).
+
+ * added cases where longchar or text converts to text, and
+ exported those symbols (as this seemed type seemed to be missing
+ from fddl/oddl anyway).
+
+ * reorganized these default methods into a single method with a
+ case statement rather than many eql specified methods (about half
+ the code)
+
+ * updated the docs to use text instead of longchar since text is
+ a more standard db-type (pg,my,and ms all use text)
+
+2013-11-23 Kiss Kalman <kami@zalaszam.hu>
+ * utils/sql.lisp: Commit patch adding ccl getenv support
+
+2013-04-17 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.4.1
+ * sql/utils.lisp: Patch from Ben Hyde to add weak hash table
+ support for CCL.
+
+2013-03-07 Ryan Davis <ryan@acceleration.net>
+ * db-postgresql-socket/postgresql-socket-api.lisp - bugfix to
+ adapt to changes in md5:md5sum-sequence. CLSQL now requires a
+ version of MD5 released on or after 2012-11-25 (the latest version
+ currenty in quicklisp). Thanks to Nicolas Neuss for the bug
+ report.
+ * db-odbc/odbc-sql.lisp - keep a reference to the original
+ connection spec used to create `odbc-database` connections
+
+2013-01-09 Russ Tyndall <russ@acceleration.net>
+ sql/oodml.lisp - changed view-classes-and-storable-slots to a
+ method (as it was intended to be all along)
+
+2012-12-19 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.4
+
+2012-11-20 Russ Tyndall <russ@acceleration.net>
+ ## Large refactoring of sql/oodml.lisp and surrounding code
+ * cleaned up update-records-from-* to utilize a single codepath
+ previously there was much duplicate code
+ * tried to further unify direct/effective slot-defs
+ * cleaned up much of the normalized classes code to be more
+ consistent in how it operated, and the code it used (less
+ copy/paste more functions)
+ * tried to standardize iteration a bit, previously almost all
+ of the iteration constructs in CL were used. Tried to
+ standardize on loop for readability / cohesiveness
+ * made functions to more easily look up particular slots, since
+ this was being done differently in each function
+ * added more doc-strings and updated documentation about
+ normalized classes
+ * inner-joins that are referenced in where clauses are no longer
+ added to the select table list (since they are also referenced
+ in the join position and this led to sql errors)
+ * collect-table-references methods added for sql-ident-table and
+ list
+
+ ## Semantic changes
+ * disallow where-less updates from objects (ie cannot call
+ update-records-from* with a keyless object)
+ * ordered-class-direct-slots now returns direct-slot-definitions
+ instead of effective-slot-definitions (as per name)
+ * direct-slot-definitions now contain the db-info hash table (same
+ as effective slots)
+ * removed this-class arg from update-instance-from-records - used to
+ be used for normalized code, no longer needed for that.
+ * find-all - bug fixes in table references, previously where clauses
+ surrounded by a list would have none of their references added to
+ the select. This was being exploited by certain code paths. Now
+ all where clauses are searched
+ - No longer includes order-by and distinct as columns in the select
+ list. The values seemed to be ignored in every code path and distinct
+ seemed to be intended to be used as a boolean anyway
+
+
+2012-11-20 Nathan Bird <nathan@acceleration.net>
+
+ * update-objects-joins - changed the default of slot from t (which
+ used to mean :deferred) to :immediate (to match the default
+ behavior of other parts of the system). It also seemed like a bad
+ default to pull all the slots that were explicitly specified to be
+ not pulled by default. This function now accepts more special
+ values (:immediate, :deferred, :all, or a list of slots). To get
+ the old behavior call with :slots :deferred.
+
+
+2012-10-30 Russ Tyndall <russ@acceleration.net>
+ * sql/command-object.lisp - added dates/times to the parameter value
+ coersion and pulled this into a new generic prepare-sql-parameter
+
+2012-09-04 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.3 released
+
+2012-09-04 Russ Tyndall <russ@acceleration.net>
+ * sql/expressions.lisp - Try to respect the casing of symbols
+ where it seems intentional (ie: is not default). This should fix
+ a failing test case, and I think behaves more understandibly.
+
+ If you specify a casing '|Foo Bar| lets treat that a string "Foo Bar"
+ and output it escaped
+
+2012-08-28 Ryan Davis <ryan@acceleration.net>
+ * db-sqlite3/sqlite3-api.lisp - allow pathnames in the connection
+ settings, so '("/db/my.sqlite") and '(#P"/db/my.sqlite") are
+ equivalent. Updated the docs to match.
+
+2012-08-17 Russ Tyndall <russ@acceleration.net>
+ * db-postgresql-socket3/package.lisp - shadow
+ postgresql-notification for compatibility with new
+ cl-postgres (Thanks Zach)
+
+2012-07-09 Russ Tyndall <russ@acceleration.net>
+ * sql/oodml.lisp - fixed a bug where the order by was being
+ destructively modified, causing odd caching issues when the
+ selected object was not statically known (eg unreferenced tables
+ could show up in the query if they were cached by a previous call
+ through this function. I replaced this code with a
+ non-destructive variant which should solve this.
+
+ Thanks to Philipp Marek for the bug report
+
+2012-06-25 Russ Tyndall <russ@acceleration.net>
+ * sql/util.lisp, sql/metaclasses.lisp
+ Dequote database-identifiers if needed (passed a quoted symbol)
+ Metaclass args come through unquoted, so this eases interactions
+ with them
+
+2012-06-22 Russ Tyndall <russ@acceleration.net>
+ * sql/metaclasses.lisp: Changed compute-effective-slot-definition
+ to correctly copy the autoincrement-sequence slot to the ESD
+ previously it was being skipped (seemingly by accident). Thanks
+ to flip214 on #lisp for the bug report
+
+2012-04-26 Kevin Rosenberg <kevin@rosenberg.net>
+ * Version 6.2 released: thanks to all the contributors!
+