Re: Fwd: [rt.cpan.org #81516] Test failures due to hash randomisation in perl 5.17.6
Jens Rehsack <[email protected]>
| Newsgroups | gmane.comp.lang.perl.modules.dbi.sybase.devel |
|---|---|
| Organization | Comprehensive Perl Archive Network |
| Message-ID | <[email protected]> |
On 01.12.12 23:14, Tim Bunce wrote:
> On Thu, Nov 29, 2012 at 10:15:19PM +0100, Jens Rehsack wrote:
>>
>> But back to the issue - now it seems dbm_tables is fetched earlier
>> in some cases than f_dir which causes an invocation of
>> DBI::DBD::SqlEngine::Table::get_table_meta (including
>> DBI::DBD::SqlEngine::Table::bootstrap_table_meta) before f_dir
>> has been set. This causes $dbh->{sql_meta}->{fred}->{f_dir} being
>> initialized to the default value of $dbh->{f_dir} which is
>> always cur_dir().
>>
>> Looking into DBI::DBD::SqlEngine::dr::connect around line 180
>> it could be seen that there's already some magic for "some
>> settings must be done before others".
>>
>> A quick fix for "now" could be: keys: ("sql_meta", $dbh->{dbm_meta},
>> ...) must be initialized last - after any other k/v pair from %$attrs.
>> Another quick should could be forbid setting meta info during connect(),
>> as it's documented - but this would be a hugh step backwards in my
>> effort making DBI::DBD::SqlEngine and derived DBD's usable through
>> Gofer proxy. So I'd prefer the first quick shot ...
>>
>> For longer way, I'd like to refactor the order procedure to a
>> more flexible way:
>> $dbh->{dbd_init_order} = [
>> [qw(Profile RaiseError PrintError AutoCommit)],
>> [qw(ReadOnly ...)],
>> ...
>> [qw(sql_meta dbm_tables ...)]
>> ];
>>
>> Remaining question in that proposal: where's the fence between "must
>> be last" and "insert unnamed attrs here"?
>
> I don't know, but I would like a working DBI for 5.17.6+ before too long.
Well, we developed two patches for now:
1) Merijn's patch - http://pasta.test-smoke.org/385
+ looks simple, easy to understand
- makes assumptions about attribute names of derived DBD's
(e.g. dbm_tables, but this can be easily renamed by assigning
new name for it to $dbh->{dbm_meta} (by driver author), eg.
$dbh->{dbm_meta} = "dbm_sources")
- increases complexitiy when more issues came up with similar
patterns (eg. /_meta$/ can't be set from outside, but from
derived driver)
2) Jens' patch - http://pasta.test-smoke.org/387
+ backward compatible to ancient attributes (csv_file, csv_ext, ...)
+ no assumptions on derived DBD's
+ no false positives on pattern match
- more complicated for quick review
Any other +/- comments?
In general both versions would fix the root cause of RT#81516,
while the maintainers (Merijn, me) cannot choose the right one.
Jens