X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=ChangeLog;h=0440489e09a282cfac83a5c8124203d8df042151;hp=4caaa4b0e80a3527184919909c684452d40f3ca3;hb=906d7a71b35ee1cd6d281623694bc90ced22c339;hpb=a244caf265fff60cc9d00083e15951762dd7f1ca diff --git a/ChangeLog b/ChangeLog index 4caaa4b..0440489 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,514 @@ - 10 Dec 2009 Kevin Rosenberg +2013-01-09 Russ Tyndall + 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 + * Version 6.4 + +2012-11-20 Russ Tyndall + ## 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 + + * 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 + * 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 + * Version 6.3 released + +2012-09-04 Russ Tyndall + * 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 + * 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 + * db-postgresql-socket3/package.lisp - shadow + postgresql-notification for compatibility with new + cl-postgres (Thanks Zach) + +2012-07-09 Russ Tyndall + * 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 + * 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 + * 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 + * Version 6.2 released: thanks to all the contributors! + +2012-04-25 Nathan Bird + + * doc/threading-warnings.txt: Adding some notes from J.T.Klein + about the current state of thread-safety in clsql. This should be + incorporated into the main docs at some point. + +2012-04-25 Russ Tyndall + * sql/expressions.lisp (output-sql): on rendering update/insert + expression values, ensure that *in-subselect* is bound to T + so that the values will be correctly paren delimited + +2012-04-24 Nathan Bird + + * sql/expressions.lisp (output-sql): on mysql CREATE TABLE + statements use 'ENGINE=innodb' instead of 'Type=InnoDB'. This has + apparently been preferred since mysql 4.1 and mysql 5.5 removed + type as a valid keyword. + +2012-03-28 Russ Tyndall + + * sql/sequences.lisp: [A Patch FROM 2011-07-28 changed sequences. + They were previously prefixed with _CLSQL_SEQ_ but are now + suffixed with _CLSQL_SEQ. This is likely to break existing + implementations using the default sequence names + + setting *old-sequence-names* to T, should force using the older + naming scheme + +2012-03-27 Ryan Davis + + * sql/expressions.lisp: Fixed bug with subqueries in the where + clause of update-records and delete-records generating invalid + SQL. Previously subselects in where clauses would not have enough + parentheses, for example: "WHERE Id IN SELECT foo_id FROM bar" + vs. "WHERE Id IN (SELECT foo_id FROM bar)" + * tests/test-syntax.lisp: Added tests for using subqueries in the + where clause in update-records and delete-records. Moved asserts + in the test-output-sql/sql-ident-table function into the standard + test framework. + * doc/appendix.xml: added :connection-string to the information on + ODBC connection specs, and added example code connecting to ODBC + databases. + +2012-01-05 Nathan Bird + + * db-odbc/odbc-dbi.lisp: handle sql decimal type in the same way + as numeric type-- read into a double float. + +2011-01-04 Russ Tyndall + * sql/operations.lisp + + Fixed bug reported by JTK related to the not-null sql-expression + especially as used in conjunction with the is operator. + + Made null called with more than one argument throw an exception + instead of silently discarding all arguments past the first + +2012-01-04 Nathan Bird + + * db-odbc/odbc-api.lisp (%sql-driver-connect): in the call to + odbc's SQLDriverConnect default the WindowHandle argument to a null ptr so + that connecting with :connection-string will work in the default + case of SQL_DRIVER_NOPROMPT. + + I.e. you can now do things like: + (clsql:connect '("DsnName" "UserName" "" :connection-string + "DRIVER={FreeTDS};SERVER=...;DATABASE=...;UID=...;PWD=...;PORT=1433;TDS_Version=8.0;APP=clsql") + :database-type :odbc) + + I believe the DsnName and Username at that point are only used when + printing the connection information. + +2011-12-20 Kevin Rosenberg + * Version 6.1.1 + * db-oracle/oracle.lisp: Typo correction (Elias Martenson) + +2011-12-19 Kevin Rosenberg + * Version 6.1.0 + * db-oracle/oracle.lisp: Change length function to + uffi:foreign-string-length to handle foreign encodings. + Thanks to Elias Martenson. + +2011-11-28 Russ Tyndall + * db-odbc/odbc-api.lisp, tests/test-time.lisp + + In ODBC backend, avoid going through the common lisp + universal-time type (because it lacks support for historic dates) + + *time-conversion-function* renamed to *time-format* + + Patch from: Francisco Vides Fernandez + +2011-10-18 Russ Tyndall + * db-odbc/odbc-api.lisp + + Added type specifier so MSSQL nvarchar fields can make it through + +2011-09-12 Russ Tyndall + * sql/fddl.lisp sql/generic-postgres.lisp db-mysql/mysql-sql.lisp + sql/generic-odbc.lisp sql/odbc-api.lisp sql/odbc-dbi.lisp + + Fix bugs in list-attribute(s|-types) where passing an escaped, + instead of unescaped column name, caused these functions to return + less data than they should have. + +2011-08-03 Kevin Rosenberg + * CLSQL 6.0.0 released + +2011-07-28 Russ Tyndall + + * db-postgresql-socket3/: Added a backend that utilized postgres + socket api version 3. Uses the cl-postgres project (from + postmodern) to handle this. Allows use of parameterized / + prepared queries using clsql:command-object + + * sql/{expressions,fddl, generic-postgresql, ooddl}.lisp: + Change how database identifiers are emitted to hopefully make this + less brittle, and more easily intuitable. + + Previously every code path that wanted to emit a + database identifier was responsible for coercing what was provided + into a correctly escaped string. Sometimes two or three functions + in a row were trying to correctly quote and output that string. I + have tried to centralize this type coercion and logic into a + single code path. + + everything should now call (escaped-database-identifier thing) + immediately before splicing a database identifier into string being + sent to the database + + * sql/oodml.lisp: added method choose-database-for-instance, which + allows overriding which database connections are used based on + object type. Can be used to prevent connection conflicts in + multi-threaded environments + + * sql/syntax.lisp: [foo bar] and [foo.bar] read into the same + clsql expression now (they used to be output the same, but after + the above database-identifier change, they were output separately + + * test/: Better, more tests, better type coercion in tests and + throughout (%get-int) + + [edit 2012-03-28 - RT] + * sql/sequences.lisp: Sequences were previously prefixed with + _CLSQL_SEQ_ but are now suffixed with _CLSQL_SEQ. This is likely + to break existing implementations using the default sequence names + + setting *old-sequence-names* to T, should force using the older + naming scheme + + +2011-07-16 Kevin Rosenberg + * Version 5.4.0 release + +2011-06-27 Nathan Bird + * db-odbc/: memory management improvements: leak slower + * MSSQL: TOP + DISTINCT work together + +2011-06-20 Nathan Bird + + * sql/time.lisp: Handle parsing already parsed objects. + * sql/oodml.lisp: raise exception if we generate an update with no + where clause; incorporate Ryszard Szopa's patch for functional + expressions in :order-by + * sql/expressions.lisp: (listify nil) => nil instead of (nil). + * db-odbc/: bugfixes for working with older versions of FreeTDS; + support for bigints that works on mssql and postgres + * MSSQL improvements: use top instead of limit, IDENTITY can be a + column constraint, clsql:date becomes 'smalldatetime' + +2011-06-20 Nathan Bird + + * Version 5.3.4 + * db-postgresql-socket/postgresql-socket-api.lisp: Addendum + to Otto Diesenbacher's patch that had a spurious write a 0 + byte (to terminate string) that should have been just CCL. + +2011-06-12 Kevin Rosenberg + * Version 5.3.3 + * db-postgresql-socket/postgresql-socket-api.lisp: + Patch from Otto Diesenbacher for UTF8 encoded strings + for CCL. FIXME: The best patch would be to use the + user-set encoding from the database object and use + UFFI's encoding strings to/from octet vectors rather + than SB-UNICODE and CCL specific code in this file. + +2011-04-21 Kevin Rosenberg + * sql/generics.lisp: Add defgeneric for new + database-last-auto-increment-id + +2011-04-01 Kevin Rosenberg + * Version 5.3.2 + * db-mysql/mysql-client-info.lisp: Add recognition of + version 6 of MySQL client library. + * sql/metaclass.lisp: Fix the fix in the reader conditional + +2011-03-30 Kevin Rosenberg + * Version 5.3.1 + * sql/metaclasses.lisp: Fix previous patch to work + on non-SBCL systems + +2011-03-29 Kevin Rosenberg + * Version 5.3.0 + * sql/metaclasses.lisp: Apply one-line patch to fix + for newer SBCL (thanks to Nikodemus Siivola) + * many_files: Applied multiple patches from Holger Schauer + to improve autoincrement capability. + +2010-10-24 Kevin Rosenberg + * Version 5.2.0 + * db-odbc/odbc-api.lisp: Change from SBCL-specific + to UFFI version of octets-to-strings. Reported by + Daniel Brunner + * sql/oodml.lisp: Apply patch from Rupert Swarbrick + : Fix behaviour with auto-inc + primary keys. + * sql/expressions.lisp, tests/test-syntax.lisp: Apply + patch from Russ Tyndall to quote identifiers with space + or special character. + +2010-09-20 Kevin Rosenberg + * Version 5.1.4 + * sql/{pool,database}.lisp: Pass encoding argument to + connections made from pool and with reconnect. + +2010-08-16 Kevin Rosenberg + * Version 5.1.3 + * db-odbc/odbc-{api,dbi}.lisp: Commit patch from + Memet Bilgin to fix issue with unicode and ODBC. + +2010-08-16 Kevin Rosenberg + * Version 5.1.2 + * uffi/clsql-uffi.lisp: Commit patch from JT Klein fixing + invocation of uffi:convert-from-foreign-string macro. When + time allows, I'll investigate changing UFFI's macro to + a function call and then revert this patch. + +2010-06-15 Kevin Rosenberg + * Version 5.1.1 + * clsql-{uffi,mysql}.asd: Modify operation-done-p functions + to guard against change introduced in new ASDF traversing. + +2010-04-20 Kevin Rosenberg + * Version 5.1.0 [DEPENDENCY UPGRADE: UFFI 2.x needed] + * clsql-uffi.asd: Depend on UFFI version >= 2.0 + to support foreign encoding of strings. + +2010-04-16 Kevin Rosenberg + * Version 5.0.6 + * db-postgresql.lisp, sql/fddl.lisp: Fix typos [Thanks to + Walter C. Pelissero] + * sql/metaclasses.lisp: Work around type-check-function being set + during defclass expansion in SBCL [Thanks to Walter C. Pelissero] + * uffi/clsql-uffi.lisp: In call to uffi:convert-from-foreign-string, + Set null-terminated-p to T when length not specified. + [Thanks to Walter C. Pelissero] + +2010-03-21 Kevin Rosenberg + * Version 5.0.5 + * sql/fdml.lisp: Fix DO-QUERY to actually return the last value of + the body. + +2010-03-02 Nathan Bird + * doc/: Added a README on how to build doc; now builds on Ubuntu. + * sql/oodml.lisp: READ-SQL-VALUE now has explicit method for + handling double-floats and the default method will no longer + attempt to convert values that have already been converted. + * sql/syntax.lisp: Introduce file-enable-sql-reader-syntax which + enables the syntax for the scope of the file without trying to + keep track of the current syntax state. + * sql/pool.lisp: Introduce + clsql-sys:*db-pool-max-free-connections* which is a heuristic + threshold for when to disconnect a connection rather than + returning it to the pool. + * sql/pool.lisp: Check connections for validity before returning + to the user. + +2010-03-01 Kevin Rosenberg + * db-mysql/mysql-api.lisp: Remove spurious enumeration + +2010-02-16 Kevin Rosenberg + * Version 5.0.4 + * db-mysql/mysql-api.lisp: Fix mysql_options UFFI parameter list + * doc/ref-connect.xml: Document the MySQL options parameter as + part of the connection-spec. + +2010-02-15 Kevin Rosenberg + * db-mysql/mysql-{api,sql}.lisp: Support sending options + to MySQL using mysql_options, which occurs between the API calls + of mysql_init and mysql_real_connect. + +2010-02-11 Kevin Rosenberg + * Version 5.0.3 + * multiple-files: Further internationalization. Change + UFFI:CONVERT-RAW-FIELD and UFFI:CONVERT-FROM-FOREIGN-STRINGS + invocations to use the foreign character set encoding of the + database object. Requires UFFI v.1.8.6 + * Makefile.common: Fix OS_DARWIN64 setting + +2010-02-11 Nathan Bird + * MSSQL: better support for fddl 'date type. + +2010-02-11 Kevin Rosenberg + * Makefile.common, uffi/Makefile, db-mysql/Makefile: + Better support OS X Snow Leopard by building universal + (x86_64,i386) dylib bundles + +2010-02-08 Kevin Rosenberg + * Version 5.0.2 + * sql/database.lisp: Fix missing slot-accessor + (Thanks to Stelian Ionescu) + * sql/generics.lisp: Add missing keyword to defgeneric + (Thanks to Stelian Ionescu) + +2010-02-07 Kevin Rosenberg + * Version 5.0.1 + * sql/{base-classes,database}.lisp: Add encoding slot for + non-ASCII strings. + * db-mysql/mysql-sql.lisp: Use UFFI:FOREIGN-ENCODED-OCTET-COUNT. + Requires UFFI version 1.8.2 or above. + +2010-02-06 Kevin Rosenberg + * Version 5.0.0: First release of CLSQL to formally and + consistently support non-ASCII strings with encoding of external + formats for SQL strings. UFFI version 1.8.1 is higher is required. + + This change may introduce some differences in string handling for + people who are using non-ASCII encoded characters. Thus, because + of the risk of BACKWARD INCOMPATIBILITY, the major version number + was incremented with this release. + +2010-02-06 Kevin Rosenberg + * tests/test-i18n.lisp: Bind UFFI:*DEFAULT-EXTERNAL-FORMAT* + for testing multibyte encodings. + * uffi/clsql-uffi.lisp: Changes for UFFI 1.7.4's new support + for encoding foreign strings with a specified external format. + +2010-02-06 Kevin Rosenberg + * sql/metaclasses.lisp: If no declared slot type in + compute-lisp-type-from-specified-type, then use t as lisp type. + Issue noted when testing Clozure CL 1.4. + +2010-02-06 Kevin Rosenberg + * tests/test-init.lisp: Turn off the benign console notices for + testing on postgres. + +2010-02-05 Kevin Rosenberg + * clsql-test.asd, tests/{test-i18n,test-init}.lisp: + Load test-i18n.lisp and use its tests as long as 'uffi:no-i18n is + not present in cl:*features*. This requires UFFI 1.7.2 or above. + +2010-02-05 Kevin Rosenberg + * sql/utils.lisp: Reading #\no-break_space causes an + error for non-unicode SBCL. Conditionalize read of + #\no-break_space for non-unicode SBCL and 8-bit string + Allegro. + +2010-02-03 Kevin Rosenberg + * tests/test-init.lisp: Add *test-report-width* variable + and word-wrap skipped test reason field. + +2010-01-29 Kevin Rosenberg + * Version 4.3.3 + * clsql-cffi.asd: New file that causes CLSQL to use + CFFI-UFFI-COMPAT library rather than UFFI. Perform 'asdf:load-op + on CLSQL-CFFI rather than CLSQL system to use CFFI-UFFI-COMPAT. + +2010-01-29 Nathan Bird + * tests/*.lisp: A lot more tests and test setup tweaks. + * sql/expressions.lisp: output-sql on sql-relational-exp does + better arity checking now. (apply #'sql-and some-list) gives + better results. + +29 Jan 2009 Kevin Rosenberg + * sql/oodml.lisp: Fix for UPDATE-RECORD-FROM-SLOTS for normalized + view classes + +28 Jan 2009 Kevin Rosenberg + * Version 4.3.2 + * Change "normalise" from British spelling for consistency with + other American spellings in CLSQL. + +28 Jan 2009 Kevin Rosenberg + * db-mysql/Makefile: Add directory for Fedora 11/12 on 64-bit + platform (Thanks to Michael Pheasant) and remove a 32-bit directory + +28 Jan 2009 Kevin Rosenberg + * Version 4.3.1 + * sql/utils.lisp: Ensure Lispworks 6 lock is created in sharing mode + +20 Jan 2009 Nathan Bird + * Version 4.3.0 + * Rewrite tests to use datasets + +07 Jan 2009 Kevin Rosenberg + * sql/utils.lisp: Changes to support Lispworks 6 + +10 Dec 2009 Kevin Rosenberg + * Version 4.2.0 + * doc/ref-ooddl.lisp: Add needed CDATA escapes + * doc/clsql.pdf, doc/html.tar.gz: Build new manuals with + normalized view classes. + +10 Dec 2009 Kevin Rosenberg Large patch from Thijs Oppermann to add support for normalized view classes. When having view class that inherit from others, CLSQL by default builds tab all the columns