Hello,
I'm new to this. Just read most of Nick Kew's book and am trying to
write a module that is a thin-as-possible layer between an AJAX type
rich client web app and an SQL database. I then hope to build a small
CMS on top of that.
Currently I'm running into a road block with a segfault every time I run
the query. I'm using Postgres 8.4 from the Ubuntu repos and a
custom-compiled Apache 2.2.14 with the Worker MPM. Here is the relevant
code:
void sql_template(ap_dbd_t *con, request_rec *r, apr_hash_t *formdata) {
apr_dbd_results_t *res;
apr_dbd_row_t *row;
int rv;
rv = apr_dbd_select(con->driver, r->pool, con->handle, &res, "select *
from topics;", 0);
if (!rv)
ap_rputs("Failed to run query.\n", r);
while (apr_dbd_get_row(con->driver, r->pool, res, &row, 0) != -1) {
ap_rputs("*** Row data *** ", r);
ap_rputs(apr_dbd_get_entry(con->driver, row, 0), r);
ap_rputs(" ... ", r);
ap_rputs(apr_dbd_get_entry(con->driver, row, 1), r);
}
}
This is being called from the main handler function.
apr_hash_t *formdata;
ap_dbd_t *con;
[...]
if (r->method_number == M_GET)
formdata = parse_form_from_string(r, r->args);
[...]
con = ap_dbd_acquire(r);
if (!con) return HTTP_INTERNAL_SERVER_ERROR;
sql_template(con, r, formdata);
Kind of ugly but I'm just trying to get the concepts to work.
I've run it through GDB and sometimes the segfault is on apr_dbd_select
line and sometimes it is on the apr_dbd_get_row line. The arguments
passed into my sql_template function seem to be valid.
Am I doing anything obviously wrong? Or can someone point to a simple
handler module that does a SELECT? (mod_auth_dbd appears to use a
different method and introduces other complexities.)
Thanks,
Micah