Index: src/bin/psql/command.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/psql/command.c,v retrieving revision 1.174 diff -c -r1.174 command.c *** src/bin/psql/command.c 6 Oct 2006 17:14:00 -0000 1.174 --- src/bin/psql/command.c 13 Dec 2006 16:32:07 -0000 *************** *** 20,25 **** --- 20,26 ---- #include /* for umask() */ #include /* for stat() */ #include /* open() flags */ + #include /* for gettimeofday() */ #include /* for geteuid(), getpid(), stat() */ #else #include *************** *** 28,33 **** --- 29,35 ---- #include #include /* for umask() */ #include /* for stat() */ + #include /* for _ftime() - used in GETTIMEOFDAY */ #endif #include "libpq-fe.h" *************** *** 303,312 **** /* \copy */ else if (pg_strcasecmp(cmd, "copy") == 0) { char *opt = psql_scan_slash_option(scan_state, OT_WHOLE_LINE, NULL, false); ! success = do_copy(opt); free(opt); } --- 305,331 ---- /* \copy */ else if (pg_strcasecmp(cmd, "copy") == 0) { + /* Default fetch-it-all-and-print mode */ + TimevalStruct before, + after; + double elapsed_msec = 0; + char *opt = psql_scan_slash_option(scan_state, OT_WHOLE_LINE, NULL, false); ! if (pset.timing) ! GETTIMEOFDAY(&before); ! success = do_copy(opt); + + if (pset.timing) + { + GETTIMEOFDAY(&after); + elapsed_msec = DIFF_MSEC(&after, &before); + if (success) + printf(_("Time: %.3f ms\n"), elapsed_msec); + + } + free(opt); } Index: src/bin/psql/common.c =================================================================== RCS file: /cvsroot/pgsql/src/bin/psql/common.c,v retrieving revision 1.130 diff -c -r1.130 common.c *** src/bin/psql/common.c 4 Oct 2006 00:30:05 -0000 1.130 --- src/bin/psql/common.c 13 Dec 2006 16:32:08 -0000 *************** *** 28,55 **** #include "mbprint.h" - /* Workarounds for Windows */ - /* Probably to be moved up the source tree in the future, perhaps to be replaced by - * more specific checks like configure-style HAVE_GETTIMEOFDAY macros. - */ - #ifndef WIN32 - - typedef struct timeval TimevalStruct; - - #define GETTIMEOFDAY(T) gettimeofday(T, NULL) - #define DIFF_MSEC(T, U) \ - ((((int) ((T)->tv_sec - (U)->tv_sec)) * 1000000.0 + \ - ((int) ((T)->tv_usec - (U)->tv_usec))) / 1000.0) - #else - - typedef struct _timeb TimevalStruct; - - #define GETTIMEOFDAY(T) _ftime(T) - #define DIFF_MSEC(T, U) \ - (((T)->time - (U)->time) * 1000.0 + \ - ((T)->millitm - (U)->millitm)) - #endif - static bool ExecQueryUsingCursor(const char *query, double *elapsed_msec); static bool command_no_begin(const char *query); --- 28,33 ---- Index: src/bin/psql/common.h =================================================================== RCS file: /cvsroot/pgsql/src/bin/psql/common.h,v retrieving revision 1.51 diff -c -r1.51 common.h *** src/bin/psql/common.h 4 Oct 2006 00:30:05 -0000 1.51 --- src/bin/psql/common.h 13 Dec 2006 16:32:08 -0000 *************** *** 63,66 **** --- 63,88 ---- extern char *expand_tilde(char **filename); + /* Workarounds for Windows */ + /* Probably to be moved up the source tree in the future, perhaps to be replaced by + * more specific checks like configure-style HAVE_GETTIMEOFDAY macros. + */ + #ifndef WIN32 + + typedef struct timeval TimevalStruct; + + #define GETTIMEOFDAY(T) gettimeofday(T, NULL) + #define DIFF_MSEC(T, U) \ + ((((int) ((T)->tv_sec - (U)->tv_sec)) * 1000000.0 + \ + ((int) ((T)->tv_usec - (U)->tv_usec))) / 1000.0) + #else + + typedef struct _timeb TimevalStruct; + + #define GETTIMEOFDAY(T) _ftime(T) + #define DIFF_MSEC(T, U) \ + (((T)->time - (U)->time) * 1000.0 + \ + ((T)->millitm - (U)->millitm)) + #endif + #endif /* COMMON_H */