Kamen,

what you describes looks to me as if the :transient does not have any effect at all, so the question is what you'd want to use this as a feature for :)  -  Seriously, what you describe seems to be a bug, as :transient slots should never be logged.  In fact, I am depending on this behavior in several places and I wonder how the store serializes the slots that I'm using.

I'd recommend to use :transient the way that is described in the documentation, i.e. assume that such slots will not be restored.  I will eventually fix this, but it will propably take a few days until I commit.

-Hans

2007/7/6, Kamen TOMOV <kamen@cybuild.com>:
Hello Hans,

Lets define a class:

(define-persistent-class a ()
  ((s1 :update :transient t)
   (s2 :update)))

and make an instance of it:

(let ((obj (make-object 'a :s1 23 :s2 "ar")))
...

and then modify its transient slot:

(setf (a-s1 obj) 3)

When I stop and start Lisp and do:

(make-instance 'mp-store....

I get:

(slot-value obj 's1)
=> 23
(slot-value obj 's2)
=> "ar"

s1 is transient and one might expect it to be unbound, but it is not,
so I wondered if it is a bug or a feature, cause I might decide to use
it as a feature :-)

However, I guess that if I snapshot and then restore the database the
transient slot would be unbound (and that would prevent me from using
it as a feature, but I probably need a persistent slot anyway). Am I
correct?


Regards,

--
§¬§Ñ§Þ§Ö§ß


----- Original Message -----
From: Hans H¨¹bner
Sent: 06 §À§Ý§Ú 2007 at 13:47
Subject: Re: [bknr-devel] objects with transient slots

Hi Kamen,

are you saying that your transient slots are written to the transaction log
and snapshot?  This is not the intended behavior.  Can you verify the bug by
writing some distinctive string to such a slot, snapshot and then look in
the snapshot file for that string?  Do you see the the value retained when
restoring or when starting your lisp afresh?

Thanks,
Hans

2007/7/6, Kamen TOMOV <kamen@cybuild.com >:
>
> Hi,
>
> It is said in the datastore-manual:
>
> "... you can specify that a certain slot is transient, which means
> that it will not be snapshotted and that its value can be changed
> outside of a transaction."
>
> In my application the value of a transient slot is specified on object
> creation. When reloading the transaction log (server restart) the
> transient slot is bound and its value is correct. Is this intended
> behaviour or not? How is snapshotting the database different in that
> context?
>
> Thanks in advance,
>
> --
> Kamen
> _______________________________________________
> bknr-devel mailing list
> bknr-devel@common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/bknr-devel
>