I'm trying to wrap my head around this, so please excuse me for jumping 
in.  If I understand this correctly, the query result is an object 
placed in memory when execution is complete, and variables.qry is merely 
a pointer to that object.  When the <cfset session.myQry = 
variables.qry> is executed, a second pointer to the query object is 
created, in the session scope.  When page execution completes, the 
variables.qry pointer disappears (and I assume is garbage collected at 
some point), but because the session.myQry pointer still exists in the 
session scope, the query object remains in memory instead of being 
garbage collected.  Once the session times out, assuming there are no 
other pointers to the query object existing, it would then be garbage 
collected.

Is this a correct understanding, or am I completely off my rocker?
Thanks,
Carl

On 3/24/2011 12:59 PM, Brian Kotek wrote:
> All complex data types are always passed by reference. Where you set them
> makes no difference. (Except arrays, which are passed by value due to a
> staggeringly poor decision eons ago.)
>
>
> On Thu, Mar 24, 2011 at 3:49 PM, Eric Cobb<cft...@ecartech.com>  wrote:
>
>> I know that complex data types (structs, CFCs, queries, COM/JavaObjects,
>> etc...) are passed by reference, not by value.  But I'm wondering how
>> that works when storing them in the session scope.
>>
>> For example, let's say I have a query that returns a really large result
>> set, and after that query runs I store the query results as a variable
>> in the session scope.
>>
>> <cfquery name="variables.qry">
>>      select    *
>>      FROM    bigTable
>> </cfquery>
>>
>> <cfset session.myQry = variables.qry>
>>
>> Would the above code just create a reference to the result set already
>> in memory, or would it actually create a copy of the results in the
>> session?
>
>> In a similar scenario, what would happen if I had a CFC object stored in
>> the session, then passed my query results to it to be stored in that
>> CFCs "variables" scope?
>>
>> <cfquery name="variables.qry">
>>      select    *
>>      FROM    bigTable
>> </cfquery>
>>
>> <cfset session.myCFC.blah(variables.qry)>
>>
>> --
>>
>> Thanks,
>>
>> Eric Cobb
>> http://www.cfgears.com
>> Help me make a difference this summer. http://bit.ly/i8dJvQ
>>
>>
>>
>>
>>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive: 
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:343255
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm

Reply via email to