X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql%2Foodml.lisp;h=4644bf1c1589fdb351bb5ea1833f688d68c7daa1;hb=9172cacc5ce2c8e36bf81ca0cede1179820edf8e;hp=7f606636631fb913e8d4624c8c371f7e6f155946;hpb=952ec6d5f4eeec95f2b9b077a49723b51912d38c;p=clsql.git diff --git a/sql/oodml.lisp b/sql/oodml.lisp index 7f60663..4644bf1 100644 --- a/sql/oodml.lisp +++ b/sql/oodml.lisp @@ -211,9 +211,8 @@ (error "Unable to update records")))) (values)) -(defmethod update-records-from-instance ((obj standard-db-object) - &key (database *default-database*)) - (let ((database (or (view-database obj) database))) +(defmethod update-records-from-instance ((obj standard-db-object) &key database) + (let ((database (or database (view-database obj) *default-database*))) (labels ((slot-storedp (slot) (and (member (view-class-slot-db-kind slot) '(:base :key)) (slot-boundp obj (slot-definition-name slot)))) @@ -248,6 +247,7 @@ (if vd (let ((qualifier (key-qualifier-for-instance instance :database vd))) (delete-records :from vt :where qualifier :database vd) + (setf (record-caches vd) nil) (setf (slot-value instance 'view-database) nil) (values)) (signal-no-database-error vd)))) @@ -642,7 +642,8 @@ :attribute (gethash :home-key tdbi) :table jc-view-table)) :where jq - :result-types :auto))) + :result-types :auto + :database (view-database object)))) (mapcar #'(lambda (i) (let* ((instance (car i)) (jcc (make-instance jc :view-database (view-database instance)))) @@ -667,7 +668,8 @@ (list instance jcc))) (select (sql-expression :attribute (gethash :foreign-key tdbi) :table jc-view-table) :from (sql-expression :table jc-view-table) - :where jq))))))) + :where jq + :database (view-database object)))))))) ;;; Remote Joins