static void esql_mysac_res(Esql_Res *res) { MYSAC_ROW *row; MYSAC_RES *re; MYSAC *m; Esql_Row *r; re = res->backend.res = mysac_get_res(res->e->backend.db); if (!re) return; m = res->e->backend.db; res->desc = esql_module_desc_get(re->nb_cols, (Esql_Module_Setup_Cb)esql_module_setup_cb, res); mysac_first_row(re); row = mysac_fetch_row(re); if (!row) /* must be insert/update/etc */ { res->affected = m->affected_rows; res->id = m->insert_id; return; } res->row_count = mysac_num_rows(re); do { r = esql_row_calloc(1); EINA_SAFETY_ON_NULL_RETURN(r); r->res = res; esql_mysac_row_init(r, row); res->rows = eina_inlist_append(res->rows, EINA_INLIST_GET(r)); } while ((row = mysac_fetch_row(re))); }
static void esql_postgresql_res(Esql_Res *res) { Esql_Row *r; PGresult *pres; int i; pres = res->backend.res = PQgetResult(res->e->backend.db); EINA_SAFETY_ON_NULL_RETURN(pres); switch (PQresultStatus(pres)) { case PGRES_COMMAND_OK: { const char *a; a = PQcmdTuples(pres); if (a && (*a)) res->affected = strtol(a, NULL, 10); res->id = PQoidValue(pres); } return; case PGRES_TUPLES_OK: break; default: res->error = PQresultErrorMessage(pres); ERR("Error %s:'%s'!", PQresStatus(PQresultStatus(pres)), res->error); return; } res->desc = esql_module_desc_get(PQntuples(pres), (Esql_Module_Setup_Cb)esql_module_setup_cb, res); for (i = 0; i < res->row_count; i++) { r = esql_row_calloc(1); EINA_SAFETY_ON_NULL_RETURN(r); r->res = res; esql_postgresql_row_init(r, i); res->rows = eina_inlist_append(res->rows, EINA_INLIST_GET(r)); } }