Tue Mar 9 21:51:57 EST 2010 Daniel White * Add function, within-transaction-p, to determine if a transaction is open New patches: [Add function, within-transaction-p, to determine if a transaction is open Daniel White **20100309105157 Ignore-this: 8f4b353e7f892debf089f7de1c581a6e ] { hunk ./doc/postmodern.html 337

Roll back the given database transaction.

+

+ function + + within-transaction-p () +

+ +

Returns a boolean indicating whether a transaction is open within the current scope.

+

macro hunk ./doc/postmodern.html 895

  • with-connection
  • with-savepoint
  • with-transaction
  • +
  • within-transaction-p
  • hunk ./postmodern/package.lisp 26 #:sequence-next #:list-sequences #:sequence-exists-p #:list-tables #:table-exists-p #:table-description #:list-views #:view-exists-p - #:with-transaction #:commit-transaction #:abort-transaction + #:with-transaction #:commit-transaction #:abort-transaction #:within-transaction-p #:with-savepoint #:rollback-savepoint #:release-savepoint #:db-null #:coalesce hunk ./postmodern/tests.lisp 105 (test transaction (with-test-connection (execute (:create-table test-data ((value :type integer)))) + (is (not (within-transaction-p))) (ignore-errors (with-transaction () hunk ./postmodern/tests.lisp 108 + (is (within-transaction-p)) (execute (:insert-into 'test-data :set 'value 2)) (error "no wait"))) (is (length (query (:select '* :from 'test-data))) 0) hunk ./postmodern/tests.lisp 116 (with-transaction (transaction) (execute (:insert-into 'test-data :set 'value 2)) (commit-transaction transaction) + (is (within-transaction-p)) (error "no wait!!"))) (is (length (query (:select '* :from 'test-data))) 1) (with-transaction (transaction) hunk ./postmodern/tests.lisp 121 (execute (:insert-into 'test-data :set 'value 44)) - (abort-transaction transaction)) + (abort-transaction transaction) + (is (within-transaction-p))) (is (length (query (:select '* :from 'test-data))) 1) hunk ./postmodern/tests.lisp 124 + (is (not (within-transaction-p))) (execute (:drop-table 'test-data)))) (defclass test-data () hunk ./postmodern/util.lisp 77 associated database connection of a transaction. When open-p is nil, the transaction has been aborted or committed.")) +(defvar *transaction* nil + "Special holding the current transaction.") + +(defun within-transaction-p () + "Returns a boolean indicating whether a transaction is open within the current scope." + (when *transaction* t)) + (defmacro with-transaction ((&optional name) &body body) "Execute the body within a database transaction, committing when the body exits normally, and aborting otherwise. An optional name can be hunk ./postmodern/util.lisp 90 given to the transaction, which can be used to force a commit or abort before the body unwinds." (let ((name (or name (gensym)))) - `(let ((,name (make-instance 'transaction-handle))) + `(let* ((*transaction* (make-instance 'transaction-handle)) + (,name *transaction*)) (execute "BEGIN") (unwind-protect (prog1 (progn ,@body) } Context: [Add :between-symmetric operator Daniel White **20100123093455 Ignore-this: bfa515cf45b0bb47080a2d03f9f93b88 ] [allow functions to be applied in 'name lists' (for exampke the columns for an index) because, apparently, one can create indices on the result of functions marijnh@gmail.com**20100104172454 Ignore-this: 51ffb2e4e9838c13906f5287035a335d ] [add support for ghost slots marijnh@gmail.com**20091027092803 Ignore-this: c19a0913f6066d1ed4ccf6125264e6d3 ] [fix broken with-column-writers marijnh@gmail.com**20091027074229 Ignore-this: c987d003d301783237322d1639cdd78b ] [Add :add-column action to :alter-table Daniel White **20090825123417 Ignore-this: eef311a1f7d7255dc678b889cbf46222 ] [add :if-exists arg to :drop-... operators marijnh@gmail.com**20090528171136 Ignore-this: e083892c397a559a112cea1b66d0f105 ] [make with-connection docstring less confusing marijnh@gmail.com**20090526055151 Ignore-this: 801c62dd25b3c4511e6b5b8fd850f98d ] [call license zlib-like, not BSD-like marijnh@gmail.com**20090418183111 Ignore-this: 7685218504a778e47ab3ed6327eb8c46 ] [Make sure simple-date postgres glue is loaded in all asdf configurations. asf@boinkor.net**20090417101916 Split out the glue into an asdf system of its own and add :after load-op methods for cl-postgres and simple-date that ensure the glue is loaded if the other system has been loaded, as well. ] [fix bug in decoding 29th February dates in simple-date marijnh@gmail.com**20090415104648 Ignore-this: 7eed7ac4863f6ce60c4bbb4a8ecfe532 ] [support natural joins, don't require :on clause for cross joins marijnh@gmail.com**20090409133503 Ignore-this: 4674b8335ec8c3d0767885bc5df84a93 ] [make sure prompt is visible before asking for input in test suite marijnh@gmail.com**20090311124809 Ignore-this: fec903b2178c1d096e5e31ce4b034565 ] [don't use usocket on allegro CL (reducing dependencies) marijnh@gmail.com**20090311124503 Ignore-this: 3bf1a6d7c66bb53424605af630dae59f ] [make sure direct-keys of a class are cleared when it is redefined without a keys option marijnh@gmail.com**20090311084048 Ignore-this: 5c32ec446b320a07ced7b2f780d42c59 ] [suppress warnings marijnh@gmail.com**20090311082328 Ignore-this: a2ea27d684f4e12f1a50b0a3341046db ] [allow non-column slots to be defined as columns marijnh@gmail.com**20090311082018 Ignore-this: 7227932681a3c3439026d39eb70f85f6 ] [mark release 1.14 marijnh@gmail.com**20090307122340 Ignore-this: fc6b7d33be599bfd5b7e08c109e39b02 ] [revise rational-writing behaviour, add *silently-truncate-rationals* marijnh@gmail.com**20090206150926 Ignore-this: 1e00e7831455c35325af44d457aefc4f ] [added a write-rational-as-foating-point function and use it to serialize rationals when sending them to Postgres. attila.lendvai@gmail.com**20090206112412 Ignore-this: 45c9cc579792d173983382218dbfbac1 it limits their length at 38 digits and throws an error if they don't fit (instead of silently losing precision as it did before). with this change storing 0.7 into a NUMERIC column will properly read back as 0.7. ] [Added :cascade op to drop any object recursively. tsufiev@gmail.com**20090119074804 Ignore-this: c30f340ba5a5e17c4bf21218ae4dac91 'DROP TABLE p_channels; NOTICE: constraint p_channels_history_p_channel_id_fkey on table p_channels_history depends on table p_channels channels ERROR: cannot drop table p_channels because other objects depend on it HINT: Use DROP ... CASCADE to drop the dependent objects too.' The error message and a hint described above suggested this patch. ] [wrong term in symbol index in cl-postgres doc marijnh@gmail.com**20081229073715] [Add query callback feature to cl-postgres. Maciej Pasternacki **20081221223846] [document :delete-from :returning support marijnh@gmail.com**20081218105519] [support RETURNING in :delete-from (courtesy Timur Sufiev) marijnh@gmail.com**20081217075326] [use a custom error type for S-SQL parsing errors marijnh@gmail.com**20081217075031] [fix use of wrong oid for oid datatype marijnh@gmail.com**20081217075009] [fix stupid typo in !foreign marijnh@gmail.com**20081216161327] [add interpreter spec for oid datatype marijnh@gmail.com**20081216160824] [fix another ACL modern-mode incompatibility marijnh@gmail.com**20081216155519] [escape exclamation marks in symbol names, to prevent breaking when allegrograph is loaded marijnh@gmail.com**20081215161255] [DAO-KEYS method for DAOs. Maciej Pasternacki **20081125004221] [Export DAO-KEYS. Maciej Pasternacki **20081125002818] [added transaction-rollback error codes, including deadlock-detected attila.lendvai@gmail.com**20081124150038 Ignore-this: af1d8d6f9b64498aeeb0e1f0fe7c054c ] [add :insert-rows-into marijnh@gmail.com**20081112090408] [S-SQL support for UPDATE ... RETURNING. Maciej Pasternacki **20081022110923] [fix last patch marijnh@gmail.com**20081022144519] [make sure :nextval works with sql-compile marijnh@gmail.com**20081022144430] [add a :nextval op so that both symbols and strings can be given to that operator marijnh@gmail.com**20081022143128] [s-sql-op :alter-table to support adding and dropping constraints. Maciej Pasternacki **20081021135242] [Add support for named constraints. Maciej Pasternacki **20081021134600] [Fix compiler warning in a loop. Maciej Pasternacki **20081021131355] [Factor out table constraints to separate function. Maciej Pasternacki **20081021131210] [Documentation typo fix: enable-sql-syntax -> enable-s-sql-syntax Maciej Pasternacki **20081021130515] [document nulls-first, nulls-last marijnh@gmail.com**20081009071426] [s-sql ops: nulls-last, nulls-first Ryszard Szopa **20081008192233] [Detect Clozure CL's Unicode properly. Maciej Pasternacki **20081008213910] [clafify doquery documentation marijnh@gmail.com**20081001061950] [bugfix: (def-sql-op :create-rule) Ryszard Szopa **20080928221955] [the table code in create-table is executed in a transaction Ryszard Szopa **20080928221914] [In (def-sql-op :create-domain) dissect-type was getting a list whose Ryszard Szopa **20080928162227 only element was the type instead of the type. ] [document :create-view marijnh@gmail.com**20080928072632] [clean up create-view, create-rule, create-domain ops marijnh@gmail.com**20080928072356] [make :create-rule accept many arguments to DO Ryszard Szopa **20080925231220] [create-view takes the view-name as an unquoted symbol (like create-table) Ryszard Szopa **20080925000803] [create view Ryszard Szopa **20080924113910] [sql-ops: create rule, drop rule Ryszard Szopa **20080924030332] [sql-operators: create-domain, drop-domain Ryszard Szopa **20080923180708] [sql-operators: create-enum, drop-enum Ryszard Szopa **20080923180116] [mark release 1.13 marijnh@gmail.com**20080828075110] [Correct rational (double-float) formatting Arjan Wekking **20080725135212 On Clozure CL (PPC32), (format "~f" (coerce 1/123 'double-float)) returns "0.008130081300813009D0" which is not a number syntax PostgreSQL understands. In order to be sure that a format is used that is always supported, the formatting string was changed to generate the number in exponential notation which is accepted by PostgreSQL and which can be reliably generated by at least SBCL and Clozure CL (only CLs I've tested). The modified control string in this patch ("~,,,,,,'EE") will generate for the rational 1/123 "8.130081300813009E-3" which is accepted and interpreted properly by PostgreSQL. ] [fix wrong default argument in enc-read-string marijnh@gmail.com**20080713160237] [Add a few type declarations for speed. Stelian Ionescu **20080713154443] [Minor fix to WITH-QUERY to accomodate SBCL. Stelian Ionescu **20080713142541] [fix a stupid mistake (when you leave a single line untested, guess where the bug appears) marijnh@gmail.com**20080711203222] [fix the previous patch, forgot to save before recording! marijnh@gmail.com**20080710113408] [try to not break in Allegro's modern mode (though split-sequence is still broken there, it seems) marijnh@gmail.com**20080710112601] [add deftable (again, now with a different role) marijnh@gmail.com**20080710112121] [support outer joins (courtesy of Timur Sufiev) marijnh@gmail.com**20080704104331] [effected -> affected in docs marijnh@gmail.com**20080624195046] [evaluate queries for prepared statements only once marijnh@gmail.com**20080620005641] [use transactions instead of savepoints for the previous patch (since the second will fail when no transaction is active)" marijnh@gmail.com**20080516144345] [add a savepoint to save-dao to prevent it from aborting transactions marijnh@gmail.com**20080516090122] [fix mistake in docs marijnh@gmail.com**20080514141026] [more informative error reporting for malformed (or db-null ...) types marijnh@gmail.com**20080510081233] [mark release 1.12 marijnh@gmail.com**20080430120335] [touch up docs marijnh@gmail.com**20080430115210] [update reference to local-time marijnh@gmail.com**20080430113052] [make the ssl stuff rely on its caller to close the socket, as advertised marijnh@gmail.com**20080429204434] [add :case and :between operators to s-sql (courtesy of Drew Crampsie) marijnh@gmail.com**20080429194524] [add SSL support marijnh@gmail.com**20080429192910] [make execute return the amount of effected rows as first argument marijnh@gmail.com**20080429151223] [save-dao is back marijnh@gmail.com**20080429101908] [fix syncing, which was causing the library to hang on a socket read when an error happened at the wrong moment marijnh@gmail.com**20080428101038] [make error message more informative when *database* is nil marijnh@gmail.com**20080425093141] [resolve conflict in prev patches marijnh@gmail.com**20080425092754] [add with-column-writers form marijnh@gmail.com**20080425092016] [prevent table-names from 'sticking' to classes when the class is redefined without a table name marijnh@gmail.com**20080425081231] [make to-sql-name accept strings marijnh@gmail.com**20080424182642] [prevent going into an infinite loop when calling get-dao on a class with no key slots marijnh@gmail.com**20080421081223] [clarify errors raised by dao row readers when the wrong columns are read marijnh@gmail.com**20080419172600] [add :% to the list of n-ary sql operators marijnh@gmail.com**20080417140821] [provide a simple-date interpreter for timestamp-with-timezone values marijnh@gmail.com**20080414135654] [replace dashes with spaces in symbols that are interpreted as type names, allowing stuff like timestamp-with-time-zone to work marijnh@gmail.com**20080414135242] [prevent breaking when (for some reason) a postgres error does not contain an error code marijnh@gmail.com**20080410074649] [mark release 1.11 marijnh@gmail.com**20080409183707] [normalise links to postgres docs in pomo docs marijnh@gmail.com**20080409183459] [remove silly copyright footers from source files, put them in a single LICENSE file marijnh@gmail.com**20080409181724] [add *max-pool-size* parameter, allowing client code to cap the size of connection pools marijnh@gmail.com**20080409181140] [add timing information to *query-log* output marijnh@gmail.com**20080408160255] [always listen for ParameterStatus messages in message-case, since it seems to occur in a lot of contexts marijnh@gmail.com**20080407092524] [add :any and :all operators, which need a special case now because they are reserved words and are automatically escaped marijnh@gmail.com**20080405155530] [support for field names and types in :as marijnh@gmail.com**20080404070824] [support for EXTRACT operator in S-SQL marijnh@gmail.com**20080401155256] [handle ParameterStatus messages when reading in query results marijnh@gmail.com**20080401133953] [define a :distinct operator, since this is apparently not a regular function-style SQL operator, and must not be escaped marijnh@gmail.com**20080331131149] [properly recognise T and NIL as booleans, even when not quoted marijnh@gmail.com**20080331082153] [properly handle symbols with lowercase characters when looking for reserved words marijnh@gmail.com**20080330115001] [keep docstrings up to date marijnh@gmail.com**20080330114339] [add test case for auto-escaping of reserved words marijnh@gmail.com**20080330113846] [add automatic escaping of reserved words, undo previous patch which is no longer needed marijnh@gmail.com**20080330113252] [use 'person' instead of 'user' in the doc example, since 'user' is a reserved word marijnh@gmail.com**20080330103558] [give to-sql-name a second optional argument to directly control escaping, optimize it, and make sure the sql names stored in DAO slots are not escaped marijnh@gmail.com**20080330103104] [add :reconnect example to docs marijnh@gmail.com**20080327142642] [add coalesce util function marijnh@gmail.com**20080325091348] [mark release 1.10 marijnh@gmail.com**20080319211339] [add a few test cases for prepared statements marijnh@gmail.com**20080319210327] [update migration guide marijnh@gmail.com**20080319205126] [document the fact that update-dao and insert-dao return their arguments marijnh@gmail.com**20080319112149] [make update-dao and insert-dao return their argument marijnh@gmail.com**20080319112016] [Fix binding ratio's: only lose precision up to double-float's precision. attila.lendvai@gmail.com**20080317120016] [do not convert arguments to strings before passing them to exec-prepared marijnh@gmail.com**20080317130512] [Fix binding sql null's attila.lendvai@gmail.com**20080316174719] [update the default time readers to use useconds marijnh@gmail.com**20080316175738] [fix bug in previous patch marijnh@gmail.com**20080316175350] [add :timestamp-with-timezone argument to set-sql-datetime-readers marijnh@gmail.com**20080316174951] [document addition of time readers and use of microsecond resolution marijnh@gmail.com**20080316174141] [Do not round away usec resolution for timestamps attila.lendvai@gmail.com**20080316161622] [also make set-sql-reader return the readtable, for consistency marijnh@gmail.com**20080316173625] [Return the table from set-sql-datetime-readers for easier chaining attila.lendvai@gmail.com**20080316171204] [Reintroduce time reader attila.lendvai@gmail.com**20080316161945] [forgot to add a new file in previous patch marijnh@gmail.com**20080316140402] [move s-sql:sql-ize to cl-postgres:to-sql-string, make exec-prepared accept any sql-stringifyable parameters marijnh@gmail.com**20080316134815] [export sql readtables as objects that client code can manipulate marijnh@gmail.com**20080316122657] [slight fixes in docs marijnh@gmail.com**20080307221621] [have query-dao% test whether its subject class has been finalized marijnh@gmail.com**20080313143433] [document error recovery features marijnh@gmail.com**20080307220944] [update migrating document marijnh@gmail.com**20080307214949] [clean up documentation of new DAO system marijnh@gmail.com**20080307214252] [document dao-table-name marijnh@gmail.com**20080307210713] [make inheritance work for DAO classes marijnh@gmail.com**20080307210352] [initialize instances of DAO objects when read from the db (still ignores :default-initargs) marijnh@gmail.com**20080307112254] [export dao-table-name function marijnh@gmail.com**20080307112227] [rename database-stream-error to database-socket-error, add more :reconnect restarts marijnh@gmail.com**20080305155942] [fix really bad bug in with-connection marijnh@gmail.com**20080304122701] [add two error types to cl-postgres marijnh@gmail.com**20080304111021] [handle table-name specification in a more solid way marijnh@gmail.com**20080304091221] [make direct-slot-definition-class return a class rather than a class-name, to please CLISP marijnh@gmail.com**20080302190912] [make the selection of string-handling functions (for different encodings) in cl-postgres a little less scare (use separate files instead of reader macros all over the place) marijnh@gmail.com**20080302175903] [update postmodern testsuite for new changes marijnh@gmail.com**20080302173156] [make simple-date dependency for cl-postgres and s-sql optional, add some system-loading magic to make simple-date automatically hook into these libraries when it is loaded after them marijnh@gmail.com**20080302172657] [add version 1.10 migration doc (unfinished) marijnh@gmail.com**20080302093251] [small touches to documentation marijnh@gmail.com**20080302093211] [fix inconsistencies in docs marijnh@gmail.com**20080301233732] [update documentation index to reflect new DAO system marijnh@gmail.com**20080301232549] [make null slots with no given default default to :null marijnh@gmail.com**20080301223255] [ditch save-dao marijnh@gmail.com**20080301223243] [document new DAO system marijnh@gmail.com**20080301223202] [update tests for changes in dao system, fix bugs in said system marijnh@gmail.com**20080301212451] [fix tests to use with-connection correctly marijnh@gmail.com**20080301212359] [add standards-mode doctypes to the documentation marijnh@gmail.com**20080301212021] [make with-connection do what with-connection* used to do marijnh@gmail.com**20080301211901] [refine new DAO system a bit further marijnh@gmail.com**20080301200623] [unfinished dao-class metaclass implementation marijnh@gmail.com**20080223105219] [add closer-mop dependency, use *features* instead of reader-eval hack to manage compile-time options marijnh@gmail.com**20080223093119] [add support for SERIAL and SERIAL8 types to S-SQL marijnh@gmail.com**20080301203142] [optimize sql-compile -- and fix a mistake in :returning patch marijnh@gmail.com**20080301202538] [add suport for :returning to :insert-into marijnh@gmail.com**20080301202240] [handle special case of not passing any values to :insert-into (DEFAULT VALUES) marijnh@gmail.com**20080301200536] [fix spacing in documentation marijnh@gmail.com**20080226212920] [add :drop-view operator marijnh@gmail.com**20080226211943] [add :where keyword to :create-index/:create-unique-index forms marijnh@gmail.com**20080226201807] [allow ordering arguments to select-dao marijnh@gmail.com**20080228141158] [add :single! result type marijnh@gmail.com**20080228102820] [fix mistake in :reconnect patch marijnh@gmail.com**20080228102746] [ugly hack to fix the problem of daos with only a primary and no other columns **20080227145952] [raise an error when a :single, :alist, :str-alist, :list, or :row query yields a number of rows that is not 1 marijnh@gmail.com**20080228094458] [add :except-all and :intersect-all to s-sql marijnh@gmail.com**20080228094043] [export and document symbols introduced in previous patches marijnh@gmail.com**20080228092912] [remove disfunctional change-class trick, wrap stream-errors in a database-connection-error when they provide a :reconnect restart marijnh@gmail.com**20080228091651] [provide :reconnect restart in more situations, database-connection-error is now the condition that is raised when this restart is available marijnh@gmail.com**20080228084919] [remove inline declarations causing mysterious SBCL errors marijnh@gmail.com**20080227153544] [fix foo.* expanding to foo._ marijnh@gmail.com**20080226103631] [clean up md5-optimise patch marijnh@gmail.com**20080224073859] [Optimize md5-password attila.lendvai@gmail.com**20080223175249] [revert accidental de-alphabetization of symbol list in docs marijnh@gmail.com**20080223105834] [add *query-log* to cl-postgres marijnh@gmail.com**20080223104959] [add license blurb to new file marijnh@gmail.com**20080223093027] [add register-type-reader for custom interpretation of pg types marijnh@gmail.com**20080222222824] [add file forgotten in previous patch (errors.lisp), and shorten error names marijnh@gmail.com**20080222210710] [add cute asdf:test-op interface to tests marijnh@gmail.com**20080222205148] [add distinct types for useful error conditions marijnh@gmail.com**20080222201246] [Modify integer-reader so that it generates both the signed/unsigned version. attila.lendvai@gmail.com**20071111163119 This way it's more like the integer-writer. Also declaim inline the functions. ] [document sql-template marijnh@gmail.com**20080220203027] [disable pretty printing when generating sql templates marijnh@gmail.com**20080220195541] [remove superfluous check in sequence-next marijnh@gmail.com**20080218221709] [add a way to precompute sql templates, storing them in functions marijnh@gmail.com**20080218221642] [fix :set in the case it is given a dynamic argument that evaluates to nil marijnh@gmail.com**20080222165046] [make sure dead connections do not get repooled marijnh@gmail.com**20080213193556] [add support for 'union all' operator marijnh@gmail.com**20080207091001] [remove (the ...) form that causes probs in lispworks marijnh@gmail.com**20080204075046] [forgot a line in the previous patch marijnh@gmail.com**20080114143344] [allow :unique indices in deftable, retouch deftable docs marijnh@gmail.com**20080114141127] [mark release 1.05 marijnh@gmail.com**20080111222254] [change the meaning of the type (string N) from VARCHAR(N) to CHAR(N) in s-sql marijnh@gmail.com**20080111215306] [fix forgotten comma in previous patch marijnh@gmail.com**20080109172732] [make the interface for defining simple s-sql operators public marijnh@gmail.com**20080108194027] [make strcat take a list of strings instead of &rest args marijnh@gmail.com**20080108175954] [add an E prefix to strings to properly indicate that they are backslash-escaped, and add a mode for standard sql strings marijnh@gmail.com**20080106204435] [store the configuration parameters in a hash table for later reference marijnh@gmail.com**20080106200208] [fix and document the savepoint interface marijnh@gmail.com**20080105110131] [add savepoint interface (by Ivan Boldyrev) marijnh@gmail.com**20080105093551] [add type information to escaped representation of simple-date values marijnh@gmail.com**20080105093046] [be a bit more liberal in the forms that :insert-into allows (stuff like :union is also valid) marijnh@gmail.com**20080103151527] [mark release 1.04 marijnh@gmail.com**20071227092950] [recognise unicode support in Allegro (by Ivan Boldyrev) marijnh@gmail.com**20071227091922] [there is no apostrophe in to-dos! (it still looks funny) marijnh@gmail.com**20071118213523] [support :distinct-on, change place of :distinct marijnh@gmail.com**20071113232921] [add distinct option to :select operator marijnh@gmail.com**20071113134330] [+ corrected to * in split-on-keywords docstring. Ryszard Szopa **20071107221948] [make error messages for malformed joins a little less confusing marijnh@gmail.com**20071017115929] [optimize hex encoding in md5 authorisation marijnh@gmail.com**20070925131842] [mark release 1.03 marijnh@gmail.com**20070918171824] [missing comma in definition of `WITH-CONNECTION*'. Ryszard Szopa **20070918155338] [link to submarine from docs marijnh@gmail.com**20070917135653] [add my name to the docs marijnh@gmail.com**20070917132526] [*untested*: give some more practical alternatives to with-connection marijnh@gmail.com**20070917131631] [*untested*: fix weird use of loop, to hopefully fix a lispworks problem marijnh@gmail.com**20070917124449] [communicate.lisp: bugfix for CMUCL Ryszard Szopa **20070905130310 If CMUCL was used, declaring byte-length to be of type FIXNUM in read-ascii-string caused it to be optimized as non-NIL when given as first argument to WHEN. Fixed by declaring it to be of type (OR NULL FIXNUM). ] [make string-escaping and binary-data-escaping a *lot* faster by turning off *print-pretty* and not using format marijnh@gmail.com**20070730213308] [fix query to evaluate its arguments *before* it prepares its query marijnh@gmail.com**20070728153645] [add some check-type tests to prevent the connection from being screwed up in case a non-string value is passed as a query or query name marijnh@gmail.com**20070728074336] [tiny error in doc marijnh@gmail.com**20070724203257] [mark release 1.02 marijnh@gmail.com**20070724201043] [fix for the patch that added effected-rows output to query and execute marijnh@gmail.com**20070724200520] [make the query macro more picky about interpreting arguments as format specifiers marijnh@gmail.com**20070724194830] [detect server shutdown errors, close the connection when they happen marijnh@gmail.com**20070716124633] [use Attila's ensure-socket-is-closed in a few more places marijnh@gmail.com**20070716122115] [also add note about previous patch to postmodern documentation marijnh@gmail.com**20070716114659] [clean up effected-rows code marijnh@gmail.com**20070716114132] [Typo attila.lendvai@gmail.com**20070712173643] [Return the updated row count from CommandComplete attila.lendvai@gmail.com**20070712173609] [Make aborting transactions safer, properly close the socket attila.lendvai@gmail.com**20070523124441] [fix to previous patch, make dao-exists-p check for bound auto-id, not save-dao, because the slot name is not always id marijnh@gmail.com**20070622074026] [make save-dao work nicely with previous patch marijnh@gmail.com**20070621155617] [add :defer-id keyword to table class initializer marijnh@gmail.com**20070617205036] [release 1.01 marijnh@gmail.com**20070613105755] [sql-ize the name of fields when building index names marijnh@gmail.com**20070522161607] [Extended integer-writer to define write-int* functions. Use write-int4 where appropriate. levente.meszaros@gmail.com**20070503081639] [Use ecase at two places instead of case attila.lendvai@gmail.com**20070424113757] [mark release 1.0 in docs marijnh@gmail.com**20070515172832] [missed a :type-of in one-but-last patch marijnh@gmail.com**20070430004853] [use uninterned keywords for exports in all packages marijnh@gmail.com**20070430004807] [add :of-type keyword to type declarations in loops marijnh@gmail.com**20070430004023] [Support binding (vector (unsigned-byte 8)) in bind-message. IOW, support binary long objects. attila.lendvai@gmail.com**20070421142807] [Added vector-row-reader attila.lendvai@gmail.com**20070421001358] [FIX: ignore-row-reader was collecting unnecessarily attila.lendvai@gmail.com**20070421000500] [Added a simple blob test attila.lendvai@gmail.com**20070420234300] [Use uninterned symbols in the .asd attila.lendvai@gmail.com**20070420193639] [Signal an exported 'postgresql-warning so that it can be muffled attila.lendvai@gmail.com**20070420193528] [fix :limit sql operator marijnh@gmail.com**20070327113825] [release .24 marijnh@gmail.com**20070316081950] [make message-case macro continue with the next message if it encounters a warning (thanks to Bart Botta) marijnh@gmail.com**20070303133912] [make :reconnect restarts usable, document them marijnh@gmail.com**20070216075349] [allow extra arguments to query and execute to replace placeholders like $1 in the query marijnh@gmail.com**20070215190255] [minor corrections in docs marijnh@gmail.com**20070208194545] [release .23 marijnh@gmail.com**20070129085059] [fix bug in expansion of :create-table for NULL columns marijnh@gmail.com**20070129084832] [fix bug that made regexp operator expand to minus marijnh@gmail.com**20070127204150] [note release .22 in documentation marijnh@gmail.com**20070127094928] [revise syntax of create-table, allowing constraints, foreign keys, and default values to be specified marijnh@gmail.com**20070127093828] [remove typo from docs marijnh@gmail.com**20070126204028] [beautify the style of the docs a bit marijnh@gmail.com**20070126203826] [disallow recursive use of queries from row-readers marijnh@gmail.com**20070126200826] [make the transaction model less error-prone marijnh@gmail.com**20070126200631] [report release .21 in docs marijnh@gmail.com**20070122213642] [update create-table example to reflect changes in syntax marijnh@gmail.com**20070122211915] [fix typo in docs marijnh@gmail.com**20070122211559] [add support for regular expression matching and traditional like/ilike matching to s-sql marijnh@gmail.com**20070122211323] [make retrieving dao objects from a query result more robust marijnh@gmail.com**20070122205950] [move db-null type into S-SQL, and use it in :create-table marijnh@gmail.com**20070117142836] [switch from trivial-sockets to usocket marijnh@gmail.com**20070117135908] [a few corrections in the documentation marijnh@gmail.com**20061224074412] [correct typo in a link marijnh@gmail.com**20061222204441] [initial import marijnh@gmail.com**20061222202457] Patch bundle hash: 2fc2dbe49df6e67883c362ed1d9585e59242749b