diff --git a/lib/modules/Sql.pmod/Sql.pike b/lib/modules/Sql.pmod/Sql.pike index 351951a4082b08baf548d55ff855b605ebf69cc8..618f0a2a259a32033ef24f25bc9b429c51a801d7 100644 --- a/lib/modules/Sql.pmod/Sql.pike +++ b/lib/modules/Sql.pmod/Sql.pike @@ -1,5 +1,5 @@ /* - * $Id: Sql.pike,v 1.83 2005/10/05 07:51:32 nilsson Exp $ + * $Id: Sql.pike,v 1.84 2005/11/24 23:15:57 nilsson Exp $ * * Implements the generic parts of the SQL-interface * @@ -300,20 +300,30 @@ static private array(mapping(string:mixed)) res_obj_to_array(object res_obj) array(mapping(string:mixed)) res = ({}); array(string) fieldnames; array(mixed) row; + array(mapping) fields = res_obj->fetch_fields(); + if(!sizeof(fields)) return ({}); + + int has_table = fields[0]->table && fields[0]->table!=""; - fieldnames = (map(fields, - lambda (mapping(string:mixed) m) { - return (m->table||"") + "." + m->name; - }) + - fields->name); + if(has_table) + fieldnames = (map(fields, + lambda (mapping(string:mixed) m) { + return (m->table||"") + "." + m->name; + }) + + fields->name); + else + fieldnames = fields->name; if (case_convert) fieldnames = map(fieldnames, lower_case); - - while (row = res_obj->fetch_row()) - res += ({ mkmapping(fieldnames, row + row) }); + if(has_table) + while (row = res_obj->fetch_row()) + res += ({ mkmapping(fieldnames, row + row) }); + else + while (row = res_obj->fetch_row()) + res += ({ mkmapping(fieldnames, row) }); return res; }