Tim Bunce wrote:
On Tue, Mar 29, 2005 at 11:46:26PM -0500, Stas Bekman wrote:

take_imp_data support for DBD::mysql. it seems to be too simple,


The sign of a good solution... if it works :)

it seems to work, at least for the test that I wrote.

Index: lib/DBD/mysql.pm
-    # Call msqlConnect func in mSQL.xs file
-    # and populate internal handle data.
-    DBD::mysql::db::_login($this, $dsn, $username, $password)
-         or $this = undef;
+    # if dbi_imp_data is passed then we should already have a handle,
+    # with a valid connection
+    unless ($privateAttrHash->{dbi_imp_data}) {
+        # Call msqlConnect func in mSQL.xs file
+        # and populate internal handle data.
+        DBD::mysql::db::_login($this, $dsn, $username, $password)
+              or $this = undef;
+    }


I think it's important to not change this code but put the "am I
reusing imp_data" logic into the drivers _MyLogin() function. Like this:

    if (DBIc_IMPSET(imp_xxh)) {
        ...reusing imp_data...
    }
    else {
        ...existing code...
    }

That way the rest of the imp_dbh_t structure gets initialised properly
(and it's how most drivers will need to do it).

OK, will work on that.

Index: dbdimp.c
+SV *mysql_take_imp_data(SV *h, imp_xxh_t *imp_xxh, void *foo)
+{
+    D_imp_dbh(h);
+    DBIc_ACTIVE_off(imp_dbh);
+    if (dbis->debug >= 2)
+        PerlIO_printf(DBILOGFP, "&imp_dbh->mysql: %lx\n",
+                     (long) &imp_dbh->mysql);
+    return &PL_sv_yes;
+}


The DBIc_ACTIVE_off isn't needed. In fact, looking at DBD::Mysql's
struct imp_dbh_st, mysql_take_imp_data isn't needed at all.
There's no 'preparation' the driver needs to do.

You mean it should be just:

#define dbd_take_imp_data       &PL_sv_yes;

?

--
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Reply via email to