[ic] Error with Tag->data in actionmap after upgrade to Centos 7.4 mysql 5.7.21

Andrew Baerg andrew at pullingshots.ca
Tue Mar 13 04:08:20 UTC 2018


On 2018-03-11 09:24 PM, Peter wrote:
> On 12/03/18 16:12, Andrew Baerg wrote:
>> In case it helps anyone else, it doesn't seem to matter which
>> tablename you put into the perl ITL, so if you stick the following in
>> your catalog.cfg you can use $Tag->data for any table in all
>> ActionMap subs and [calc] blocks.
>>
>> AutoLoad [perl products][/perl]
> 
> I actually hadn't realized this, but it explains a lot.  Internally
> Interchange will share the same dbh handle for any tables that have the
> same DSN, the handle will be created when it is first needed.  This
> means that it's likely that the dbh handle can't be created in the Safe
> container, so by accessing a table outside of the safe container first
> the dbh handle is created and is then usable inside any Safe containers
> after that.
> 
> So your statement above is mostly, but not entirely true.  It would
> likely not work to open the products table ahead of time and then try to
> access a table on a completely different database (with a different DSN).
> 
> To be safe (no pun intended) I would pre-open the table(s) that you
> actually want to access.
> 
>> On a side note, it seems strange to me that catalog UserTag subs can
>> use the $Tag->data without any issue. The code must run in a slightly
>> different Safe container I suppose.
> 
> This would be because those usertags are accessed on page code in a
> place where the table (or at least a table on the same dbh) has already
> been opened previously.  Actionmaps, on the other hand, are run before
> any other page code and so no tables have been opened yet.
> 
> So it's not about running it on a different Safe container, it's about
> *when* the db access occurs in relation to other db accesses for the
> same dbh handle.
> 
> 

Thanks for the explanation Peter!

I have submitted a pull request to add better error messaging/handling when there is no access to a db/table in a Safe container.

https://github.com/interchange/interchange/pull/110

Cheers,

Andrew

-- 
https://github.com/pullingshots ... https://metacpan.org/author/BAERGAJ



More information about the interchange-users mailing list