Hi Joe,

As you can see in the log where only TR-values was used, the server does
the following when updating the records:
UPDATE T130 SET C610000003='TR',C5='miz',C6=1191493444 WHERE C1 =
'000000000000001' AND ((C6 <= 1191493441) OR (C5 = 'miz'))

It apparently appends my original Modify-Date to the update, and handles
the situation where someone else has beaten me to the database.

As you see, the only value updated, ar the field I changed, i.e. C610000003.

Here is the log that shows this:
http://www.rrr.se/tmp/TestAssignedToTR.html

        Best Regards - Misi, RRR AB, http://www.rrr.se

Products from RRR Scandinavia:
* RRR|License - Not enough Remedy licenses? Save money by optimizing.
* RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
* RRR|Translator - Manage and automate your language translations.
Find these products, and many free tools and utilities, at http://rrr.se.

> That's what I thought that it should perform a fetch for DB values too.
> The
> DB value could be changed by another user after the initial fetch of the
> record, hence what displays on the client tool after the initial fetch of
> the record, may not represent the true DB value.
>
> I wonder though what would happen if lets say the value of a field is
> "XYZ".
> User 1 opens the record..
>
> At about the same time User 2 opens the same record, and changes the value
> of "XYZ" to "abc" and performs the save.
>
> User 1 then changes what he sees on his screen "XYZ" to "abc". Considering
> that the DB value now is already "abc" due to the change done earlier by
> User 2, would the TR value now be NULL? Or would it be "abc"?
>
>>From your conclusion based on the SQL logs that TR doesn't perform a
>> fetch,
> the system would not know that the value has changed. Isn't that a flaw in
> the design?
>
> Joe D'Souza
>
> -----Original Message-----
> From: Action Request System discussion list(ARSList)
> [mailto:[EMAIL PROTECTED] Behalf Of Misi Mladoniczky
> Sent: Thursday, October 04, 2007 6:31 AM
> To: arslist@ARSLIST.ORG
> Subject: Re: Filter Problem
>
>
> Hi,
>
> You are correct in the assumption that TR-values can save a little bit on
> performance.
>
> The server looks through the run-if-qualification of all filters.
>
> If anywhere there is a 'Field' or 'DB.Field', the server will need fetch
> these values from the database. And the values of all other fields of the
> form as well!
>
> If you only have 'TR.Field', static values or keywords. This fetch is not
> needed.
>
> Note that my test form has a lot of fields, and only two filters. One is
> disabled and one is enabled in the samples below:
>
> ('TR.Assigned To' != $NULL$)
> http://www.rrr.se/tmp/TestAssignedToTR.html
>
> ('Assigned To' != 'DB.Assigned To' AND 'Assigned To' != $NULL$)
> http://www.rrr.se/tmp/TestAssignedToDB.html
>
> All fields will be fetched as soon as you have one 'Field' or 'DB.Field'
> in
> your filters, so adding fields will do nothing to performance.
>
> I have noticed this behaviour in previous versions. The verion I am
> testing
> is version 7.0.1 patch 003.
>
> I think that the TR-values can have a legitimate use sometimes. Either for
> the reason of performance, or the reason of simplifying your run-ifs:
>
> Example 1: ('TR.CustID' != $NULL$)
> Your filter makes sure that the CustName is in sync with your CustID. It
> does not matter much if this filter sometimes run when it is not really
> neccessary.
>
> Example 2: ('TR.Assigned To' != $NULL$ AND 'TR.Assigned To' != $USER$)
> Your filter sends a notification to the assigned person. If the field has
> not really been changed, an extra notification is sent, but does no real
> damage.
>
> Example 3: ('TR.Status' != $NULL$)
> Your filter controls something or other connected with the status. Extra
> controls may happen, but does not affect things much.
>
>         Best Regards - Misi, RRR AB, http://www.rrr.se
>
> Products from RRR Scandinavia:
> * RRR|License - Not enough Remedy licenses? Save money by optimizing.
> * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
> * RRR|Translator - Manage and automate your language translations.
> Find these products, and many free tools and utilities, at http://rrr.se.
>
>> While the TR is confusing isn't there a performance benefit? If I
>> remember
>> correctly a TR check will not run a query against the database (I
>> haven't
>> actually logged it to verify).
>>
>> Say you run a daily import of 500k employees (the requirement is to do
>> it
>> during the business hours for whatever reason) and are looking to see if
>> their employment status has changed, if so create a request to take
>> action.
>>
>> The import will perform an initial query the DB to find the existing
>> record
>> to update but then you have a filter that runs if 'EMP_Status' !=
>> 'DB.EMP_Status' (a required field). Wouldn't that cause an additional
>> query
>> on the database to retrieve the record you just retrieved? Using
>> 'EMP_Status' != 'TR.EMP_Status' would check the server's memory if the
>> value
>> has changed and eliminate a redundant trip to the DB. In this case using
>> a
>> TR would eliminate 500k less queries to the database. During business
>> hours
>> that may be a huge savings (so I added the business hours part to help
>> my
>> example).
>>
>> Is my scenario correct?
>>
>> Jason
>>
>> -----Original Message-----
>> From: Action Request System discussion list(ARSList)
>> [mailto:[EMAIL PROTECTED] On Behalf Of Rabi Tripathi
>> Sent: Wednesday, October 03, 2007 6:09 PM
>> To: arslist@ARSLIST.ORG
>> Subject: Re: Filter Problem
>>
>> Thad, I'm glad there's at least one person in the
>> world who has settled on the same rule regarding use
>> of TR values. Don't!
>>
>> Cause it's not necessary. There's no qualification you
>> can't build without using TR. It's nothing but
>> trouble.
>>
>> TR values tend to confuse people, as is evident from
>> this thread. Even if you completely understand the
>> nuances, there are many instances (many ways data can
>> change) in which TR value will not be what you think.
>>
>> TR values give you what you expect only if the update
>> is being done in Remedy user from a record that is "on
>> display". If the update is being done from a dialog
>> (common in ITSM 6), or if workflow is doing a query to
>> get values and then pushing it back, use of TR values
>> will drive you crazy. Why do you want to be driven
>> crazy, I ask. There are enough opportunities to be
>> driven crazy other ways.
>>
>> It has been around 5 years since I stopped using TR
>> values.
>>
>> In with 'Field Name' != 'DB.Field Name'
>>
>> In with 'Field Name' != 'DB.Field Name' AND 'Field
>> Name'!= $NULL$
>>
>> Out with 'TR.Field Name' = $NULL$ (which misses
>> blanking out of data anyway)
>>
>> --- Thad K Esser <[EMAIL PROTECTED]> wrote:
>>
>>> Also, it could have a value if the record update is
>>> the result of a push
>>> fields from somewhere else.  One way to get a handle
>>> on this is to run a
>>> short SQL log and find the update statements.  If a
>>> field is included in
>>> the SET clause, the "TR" concept applies, whatever
>>> the actual value.
>>>
>>> My two rules for TR and DB values:
>>>         1.  Don't use TR values (DB values are
>>> useful & good).
>>>         2.  If you need to use a TR value, see rule
>>> #1.
>>>
>>> Thad Esser
>>> Remedy Developer
>>> "Argue for your limitations, and sure enough,
>>> they're yours."-- Richard
>>> Bach
>>>
>>>
>>>
>>> "Mayfield, Andy L." <[EMAIL PROTECTED]>
>>> Sent by: "Action Request System discussion
>>> list(ARSList)"
>>> <arslist@ARSLIST.ORG>
>>> 10/03/2007 07:55 AM
>>> Please respond to
>>> arslist@ARSLIST.ORG
>>>
>>>
>>> To
>>> arslist@ARSLIST.ORG
>>> cc
>>>
>>> Subject
>>> Re: Filter Problem
>>>
>>>
>>>
>>>
>>>
>>>
>>> OK, I think after a few cups of coffee I am now able
>>> to comprehend this.
>>>
>>> TR.Field != $NULL$ should fire anytime the field is
>>> changed, unless it
>>> is actually set to NULL.
>>>
>>> That is rather confusing to simple minded folk such
>>> as myself (-:
>>>
>>> Andy L. Mayfield
>>> Sr. System Operation Specialist
>>> Alabama Power Company
>>> Office: 8-226-1805
>>>
>>>
>>> -----Original Message-----
>>> From: Action Request System discussion list(ARSList)
>>> [mailto:[EMAIL PROTECTED] On Behalf Of Shellman,
>>> David
>>> Sent: Wednesday, October 03, 2007 9:16 AM
>>> To: arslist@ARSLIST.ORG
>>> Subject: Re: Filter Problem
>>>
>>> Andy,
>>>
>>> As Axton said TR.field really is the value of the
>>> transaction.
>>>
>>> If a field doesn't change then the TR.field is null.
>>>  There isn't a
>>> transaction because the DB.field and field are the
>>> same.
>>>
>>> If a field changes TR.field evaluates to what was
>>> just entered.  So if
>>> you change a field from Hello World to Good Morning,
>>> TR.field will
>>> evaluate to Good Morning, DB.field evaluates to
>>> Hello World, and the
>>> field evaluates to Good Morning.
>>>
>>> The tricky one is where the field was Hello World
>>> but is now set to
>>> NULL.  The DB.field is Hello World and the field
>>> value is NULL.  Because
>>> there is a change there is a transaction but the
>>> TR.field evaluates to
>>> NULL because the field is actually set to NULL.
>>>
>>> Dave
>>>
>>> -----Original Message-----
>>> From: Action Request System discussion list(ARSList)
>>> [mailto:[EMAIL PROTECTED] On Behalf Of Mayfield,
>>> Andy L.
>>> Sent: Wednesday, October 03, 2007 10:06 AM
>>> To: arslist@ARSLIST.ORG
>>> Subject: Re: Filter Problem
>>>
>>> I thought everyone was saying that if I set a field
>>> to NULL (that
>>> previously had a value), the TR value would NOT be
>>> NULL?
>>>
>>> I am getting confused. I may need to take a break
>>> for coffee and a
>>> cigarette to clear my head (-:
>>>
>>> >Andy L. Mayfield
>>>                  Sr. System Operation Specialist
>>> >Alabama Power Company
>>>                  Office: 8-226-1805
>>>
>>>
>>> -----Original Message-----
>>> From: Action Request System discussion list(ARSList)
>>> [mailto:[EMAIL PROTECTED] On Behalf Of Axton
>>> Sent: Wednesday, October 03, 2007 8:41 AM
>>> To: arslist@ARSLIST.ORG
>>> Subject: Re: Filter Problem
>>>
>>> This one that probably often trips people up; if you
>>> set the field to
>>> null, the TR value will be null.
>>>
>>> The TR value represent the current transactions
>>> value, if no change
>>> occurred in the transaction, then the TR value is
>>> null
>>>
>>> The DB value represents what was last committed to
>>> the database; prior
>>> to the current transaction
>>>
>>> The value represents the current value, regardless
>>> of the TR or DB
>>> values
>>>
>>> Axton Grams
>>>
>>> On 10/3/07, Mayfield, Andy L.
>>> <[EMAIL PROTECTED]> wrote:
>>> > **
>>> >
>>> >
>>> >
>>> > OK, I thought I had this figured.  So if while
>>> modifying a ticket, you
>>> > change a field that previously had a value, to
>>> NULL (blank) then the
>>> TR
>>> > value is NOT NULL.
>>> >
>>> >
>>> >
>>> > I need more coffee.
>>> >
>>> >
>>> >
>>> >
>>> > Andy L. Mayfield
>>> >  Sr. System Operation Specialist
>>> >  Alabama Power Company
>>> >  Office: 8-226-1805
>>> >
>>> >  ________________________________
>>> >
>>> >
>>> > From: Action Request System discussion
>>> list(ARSList)
>>> > [mailto:[EMAIL PROTECTED] On Behalf Of Joe
>>> D'Souza
>>> >  Sent: Tuesday, October 02, 2007 10:57 PM
>>> >
>>> >  To: arslist@ARSLIST.ORG
>>> >  Subject: Re: Filter Problem
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > Yes the TR value is NULL if there is no
>>> modification even if there is
>>> a DB
>>> > value to that field..
>>> >
>>> >
>>> >
>>> >
>>> >
>>> > This is how it works.. when you are submitting a
>>> new record, and if
>>> there is
>>> > a value in the field, then the TR value is not
>>> NULL (obviously). The
>>> DB
>>>
>> === message truncated ===
>
> _______________________________________________________________________________
> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where
> the Answers Are"
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org ARSlist:"Where the 
Answers Are"

Reply via email to