static struct ast_variable *realtime_pgsql(const char *database, const char *tablename, const struct ast_variable *fields)
{
RAII_VAR(PGresult *, result, NULL, PQclear);
- int num_rows = 0, pgresult;
+ int pgresult;
struct ast_str *sql = ast_str_thread_get(&sql_buf, 100);
struct ast_str *escapebuf = ast_str_thread_get(&escapebuf_buf, 100);
char *stringp;
ast_str_append(&sql, 0, " AND %s%s '%s'%s", field->name, op, ast_str_buffer(escapebuf), escape);
}
+ ast_str_append(&sql, 0, " LIMIT 1");
/* We now have our complete statement; Lets connect to the server and execute it. */
if (pgsql_exec(database, tablename, ast_str_buffer(sql), &result) != 0) {
ast_debug(1, "PostgreSQL RealTime: Result=%p Query: %s\n", result, ast_str_buffer(sql));
- if ((num_rows = PQntuples(result)) > 0) {
+ if (PQntuples(result) > 0) {
int i = 0;
- int rowIndex = 0;
int numFields = PQnfields(result);
char **fieldnames = NULL;
- ast_debug(1, "PostgreSQL RealTime: Found %d rows.\n", num_rows);
+ ast_debug(1, "PostgreSQL RealTime: Found a row.\n");
if (!(fieldnames = ast_calloc(1, numFields * sizeof(char *)))) {
ast_mutex_unlock(&pgsql_lock);
}
for (i = 0; i < numFields; i++)
fieldnames[i] = PQfname(result, i);
- for (rowIndex = 0; rowIndex < num_rows; rowIndex++) {
- for (i = 0; i < numFields; i++) {
- stringp = PQgetvalue(result, rowIndex, i);
- while (stringp) {
- chunk = strsep(&stringp, ";");
- if (chunk && !ast_strlen_zero(ast_realtime_decode_chunk(ast_strip(chunk)))) {
- if (prev) {
- prev->next = ast_variable_new(fieldnames[i], chunk, "");
- if (prev->next) {
- prev = prev->next;
- }
- } else {
- prev = var = ast_variable_new(fieldnames[i], chunk, "");
+ for (i = 0; i < numFields; i++) {
+ stringp = PQgetvalue(result, 0, i);
+ while (stringp) {
+ chunk = strsep(&stringp, ";");
+ if (chunk && !ast_strlen_zero(ast_realtime_decode_chunk(ast_strip(chunk)))) {
+ if (prev) {
+ prev->next = ast_variable_new(fieldnames[i], chunk, "");
+ if (prev->next) {
+ prev = prev->next;
}
+ } else {
+ prev = var = ast_variable_new(fieldnames[i], chunk, "");
}
}
}