Bug in sql/oodml.lisp
Nicolas Neuss <[email protected]> Thu, 20 Feb 2014 17:14:30 +0100
| Newsgroups | gmane.lisp.clsql.general |
|---|---|
| Message-ID | <[email protected]> |
Hello, I got bitten by the following problem: When I have *print-length* set to some number for preventing output of undesired length elsewhere, lists longer than that number are not written correctly to the database when using UPDATE-RECORDS-FROM-INSTANCE. The correct remedy for this special problem is probably to change the PROGV special variable list in certain method definitions of DATABASE-OUTPUT-SQL-AS-TYPE in the file "sql/oodml.lisp" to include also setting *PRINT-LENGTH* to NIL, i.e. (defmethod database-output-sql-as-type ((type (eql 'list)) val database db-type) (declare (ignore database db-type)) (progv '(*print-circle* *print-array*) '(t t) ...)) becomes (defmethod database-output-sql-as-type ((type (eql 'list)) val database db-type) (declare (ignore database db-type)) (progv '(*print-circle* *print-array* *print-length*) '(t t nil) ...)) Note that the same change has to be performed for the specializations of this generic function to vectors and arrays later in that file: (defmethod database-output-sql-as-type ((type (eql 'vector)) val ...) ...) (defmethod database-output-sql-as-type ((type (eql 'array)) val ...) ...) Yours, Nicolas P.S.: What about *PRINT-BASE*?