Umm, okay. The key problem here is that DBD::DB2 isn't using the
Driver.xst 'driver template' file that the DBI provides.

This means that, apart from duplicating a bunch of code, you're also
missing out on a bunch of optimizations.

The Driver.xst file and related info is discussed in
http://search.cpan.org/~timb/DBI/lib/DBI/DBD.pm

Take a look at others drivers, like DBD::Sybase and/or DBD::Oracle, for more 
examples.

If you're desparate for a quick fix you can use this code instead:

        SV **svp = hv_fetch((HV*)SvRV(h), "CachedKids", 10, 0);
        if (svp && SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVHV) {
            hv_clear((HV*)SvRV(*svp));
        }

but you're likely to bump into similar issues in later versions.

Driver.xst is the way to go.

Tim.

On Tue, May 15, 2007 at 10:56:13AM -0500, Swetha Patel wrote:
>    Hi Mr. Bunce,
> 
>    I work for IBM, and was trying to update the DBD::DB2, so that it works 
> with DBI 1.55. In doing so I
>    came accross a compile error
>    "DB2.xs", line 115.9: 1506-025 (S) Operand must be a modifiable lvalue.
>    Line 115 is: DBIc_CACHED_KIDS(imp_dbh) = Nullhv.
> 
>    In our code it has effectd these three lines (in DB2.xs):
> 
>    if (DBIc_CACHED_KIDS(imp_dbh)) {
>    SvREFCNT_dec(DBIc_CACHED_KIDS(imp_dbh));
>    DBIc_CACHED_KIDS(imp_dbh) = Nullhv;
>    }
> 
>    I noticed that DBIc_CACHED_KIDS in DBI 1.53 was a macro for _imp2com(imp, 
> cached_kids).
>    And _imp2com(p,f) is a macro for ((p)->com.f).
> 
>    So in effect DBIc_CACHED_KIDS(imp_dbh) became imp->com.cached_kids in DBI 
> 1.53.
> 
>    But in DBI 1.55
>    #define DBIc_CACHED_KIDS(imp) Nullhv
>    And in effect in DBI 1.55 it becomes
>    Nullhv = Nullhv;
>    And hence the compile error.
>    I am not sure what imp->com.cached_kids is used for.
>    I have also done a diff on the two versions of DBI.xs, and noticed that 
> these three lines where deleted
>    in the new DBI.xs, although there were some other things added.
>    Any information on this change and information regarding the replacement 
> for this change is greatly
>    appreciated.
> 
>    Thanks,
>    Swetha Patel
>    [EMAIL PROTECTED]

Reply via email to