# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: abudovski@gmail.com-20100105232413-b12d2vla2a5qbexl # target_branch: lp:mysql-server/5.4 # testament_sha1: 2006ecc4f55748152ee908b950c57b0ecd3e384a # timestamp: 2010-01-06 10:25:18 +1100 # base_revision_id: k.long@sun.com-20090721201009-ikszmudds8gwiyst # # Begin patch === modified file 'sql/sql_profile.cc' --- sql/sql_profile.cc 2009-02-13 16:41:47 +0000 +++ sql/sql_profile.cc 2010-01-05 23:24:13 +0000 @@ -134,6 +134,23 @@ #define RUSAGE_USEC(tv) ((tv).tv_sec*1000*1000 + (tv).tv_usec) #define RUSAGE_DIFF_USEC(tv1, tv2) (RUSAGE_USEC((tv1))-RUSAGE_USEC((tv2))) +#ifdef __WIN__ +inline ULONGLONG FileTimeToQuadWord(FILETIME *ft) +{ + ULONGLONG nrv = 0; + nrv |= ft->dwHighDateTime; + nrv <<= 32; + nrv |= ft->dwLowDateTime; + return nrv; +} + + +// Get time difference between to FILETIME objects in seconds. +inline double GetTimeDiffInSeconds(FILETIME *a, FILETIME *b) +{ + return ((FileTimeToQuadWord(a) - FileTimeToQuadWord(b)) / 1e7); +} +#endif PROF_MEASUREMENT::PROF_MEASUREMENT(QUERY_PROFILE *profile_arg, const char *status_arg) @@ -224,6 +241,9 @@ time_usecs= (double) my_getsystime() / 10.0; /* 1 sec was 1e7, now is 1e6 */ #ifdef HAVE_GETRUSAGE getrusage(RUSAGE_SELF, &rusage); +#elif defined(__WIN__) + FILETIME ftDummy; + GetProcessTimes(GetCurrentProcess(), &ftDummy, &ftDummy, &ftKernel, &ftUser); #endif } @@ -593,6 +613,23 @@ table->field[5]->store_decimal(&cpu_stime_decimal); table->field[4]->set_notnull(); table->field[5]->set_notnull(); +#elif defined(__WIN__) + my_decimal cpu_utime_decimal, cpu_stime_decimal; + + double2my_decimal(E_DEC_FATAL_ERROR, + GetTimeDiffInSeconds(&entry->ftUser, + &previous->ftUser), + &cpu_utime_decimal); + double2my_decimal(E_DEC_FATAL_ERROR, + GetTimeDiffInSeconds(&entry->ftKernel, + &previous->ftKernel), + &cpu_stime_decimal); + + // Store the result. + table->field[4]->store_decimal(&cpu_utime_decimal); + table->field[5]->store_decimal(&cpu_stime_decimal); + table->field[4]->set_notnull(); + table->field[5]->set_notnull(); #else /* TODO: Add CPU-usage info for non-BSD systems */ #endif === modified file 'sql/sql_profile.h' --- sql/sql_profile.h 2007-12-14 13:57:37 +0000 +++ sql/sql_profile.h 2009-12-23 00:32:41 +0000 @@ -186,6 +186,8 @@ char *status; #ifdef HAVE_GETRUSAGE struct rusage rusage; +#elif defined(__WIN__) + FILETIME ftKernel, ftUser; #endif char *function; # Begin bundle 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 OmQZkTr1q43D10iTH+LuSKcKEgrVIpxA