Hi all,

I'm writing a module with apr dbd ( and mod_dbd for initialize dbd ).
post_read hook is used for dbd_acquire_fn , get statement, pvselect,
etc....

When use dbd with DBDriver pgsql , request fail after 5, 6 wget test,
after two with firefox refresh. No problem  with driver sqlite3 or
mysql. oracle, freetds or other are not tested.

Simple config for mod_dbd is:

        DBDriver pgsql
        DBDParams "dbname=vhost user=vhost password=vhost"


With postgresql 7.4 if use  DBDPersist off but if not use or force on
i'm error (idem with postgresql 8.3):

ex test: portoo ~ # wget -O index.html "http://vhost0.com";
vhost0.com is local :)

[Thu Apr 02 23:40:10 2009] [debug] mod_vhost_dbd.c(357): [client
192.168.100.1] vhost_dbd_post_read: path=/home/mysolo/test/vhost0
<----------- it's ok
.......
[Thu Apr 02 23:40:13 2009] [error] [client 192.168.100.1] Query
execution error looking up 'vhost0.com' in database
[Thu Apr 02 23:40:13 2009] [error] [client 192.168.100.1] another
command is already in progress\n

and if use DBDPersit off with postgresql 8.3 , it's error

[Fri Apr 03 00:16:16 2009] [error] (20014)Internal error: DBD: Can't
connect to pgsql
[Fri Apr 03 00:16:16 2009] [error] [client 192.168.100.1] Failed to
acquire database connection to look up host 'vhost0.com'

apr-util bug or bug in pqlib  of postgresql.  I'm searching bug list of
apr/apache or postgresql , or google and don't found response.

Helping for found problem with postgresql.

complete code is on https://svn.cynetek.com/pub/mod_vhost_dbd/trunk/

Excuse me for my english. I speak french only :)


I'm use standard code for acquire, get statement and pvselect.
....
    dbd = vhost_dbd_acquire_fn(r);
    if (dbd == NULL) {
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "Failed to acquire
database connection to look up host '%s'", host);
        return DECLINED;
    }

    statement = apr_hash_get(dbd->prepared, conf->label,
APR_HASH_KEY_STRING);
    if (statement == NULL) {
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "A prepared statement
could not be found for "
                        "VhostDBDQuery with the key '%s'", conf->label);
        return DECLINED;
    }

    /* execute the query of a statement and parameter host */
    if (rv = apr_dbd_pvselect(dbd->driver, r->pool, dbd->handle, &res,
statement, 0, host, NULL) != 0) {
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "Query execution error
looking up '%s' in database", host);
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
apr_dbd_error(dbd->driver, dbd->handle, rv));

        return DECLINED;
    }

    //   ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
"vhost_dbd_post_read: apr_dbd_get_row return : %d", rv);
    if (rv = apr_dbd_get_row(dbd->driver, r->pool, res, &row, -1)) {
        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, "No found results for
host '%s' in database", host);
        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "vhost_dbd_post_read:
result of apr_dbd_get_row=%d", rv);
        return DECLINED;
    }


Reply via email to