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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.