void PopulateTableFromQuery(lua_State* state, Query* query) { Results results = query->GetResults(); int resultid = 1; for (Results::iterator it = results.begin(); it != results.end(); ++it) { Result* result = *it; LUA->PushNumber(resultid++); LUA->CreateTable(); { bool status = result->GetErrorID() == 0; LUA->PushBool(status); LUA->SetField(-2, "status"); if (!status) { LUA->PushString(result->GetError().c_str()); LUA->SetField(-2, "error"); LUA->PushNumber(result->GetErrorID()); LUA->SetField(-2, "errorid"); } else { LUA->PushNumber(result->GetAffected()); LUA->SetField(-2, "affected"); LUA->PushNumber(result->GetLastID()); LUA->SetField(-2, "lastid"); LUA->CreateTable(); PopulateTableFromResult(state, result->GetResult(), query->GetUseNumbers()); LUA->SetField(-2, "data"); } #ifdef ENABLE_QUERY_TIMERS LUA->PushNumber(query->GetQueryTime()); LUA->SetField(-2, "time"); #endif } LUA->SetTable(-3); } }