Re: Error with Tag->data in actionmap after upgrade to Centos 7.4 mysql 5.7.21
Andrew Baerg <[email protected]> Mon, 12 Mar 2018 22:08:20 -0600
| Newsgroups | gmane.comp.web.interchange.users |
|---|---|
| Message-ID | <[email protected]> |
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