X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=ChangeLog;h=0440489e09a282cfac83a5c8124203d8df042151;hp=0311cb2c718ab273239528a496f555730a871900;hb=906d7a71b35ee1cd6d281623694bc90ced22c339;hpb=ef1af699cee8a79486bb3db7f75193bc32121f44 diff --git a/ChangeLog b/ChangeLog index 0311cb2..0440489 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,507 @@ +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