diff -cpr HEAD/src/backend/storage/buffer/bufmgr.c NDirectFileReadWrite/src/backend/storage/buffer/bufmgr.c
*** HEAD/src/backend/storage/buffer/bufmgr.c	Fri Aug  1 22:16:08 2008
--- NDirectFileReadWrite/src/backend/storage/buffer/bufmgr.c	Tue Aug  5 15:00:26 2008
*************** int			bgwriter_lru_maxpages = 100;
*** 65,73 ****
  double		bgwriter_lru_multiplier = 2.0;
  
  
! long		NDirectFileRead;	/* some I/O's are direct file access. bypass
! 								 * bufmgr */
! long		NDirectFileWrite;	/* e.g., I/O in psort and hashjoin. */
  
  
  /* local state for StartBufferIO and related functions */
--- 65,76 ----
  double		bgwriter_lru_multiplier = 2.0;
  
  
! /*
!  * Some I/O's are direct file access and bypass bufmgr. They are typically
!  * disk sorting and materializing using BufFile.
!  */
! long		NDirectFileRead;
! long		NDirectFileWrite;
  
  
  /* local state for StartBufferIO and related functions */
diff -cpr HEAD/src/backend/storage/file/buffile.c NDirectFileReadWrite/src/backend/storage/file/buffile.c
*** HEAD/src/backend/storage/file/buffile.c	Fri May  2 10:08:27 2008
--- NDirectFileReadWrite/src/backend/storage/file/buffile.c	Tue Aug  5 15:00:26 2008
*************** BufFileLoadBuffer(BufFile *file)
*** 238,243 ****
--- 238,244 ----
  		file->nbytes = 0;
  	file->offsets[file->curFile] += file->nbytes;
  	/* we choose not to advance curOffset here */
+ 	NDirectFileRead++;
  }
  
  /*
*************** BufFileDumpBuffer(BufFile *file)
*** 300,305 ****
--- 301,307 ----
  		file->offsets[file->curFile] += bytestowrite;
  		file->curOffset += bytestowrite;
  		wpos += bytestowrite;
+ 		NDirectFileWrite++;
  	}
  	file->dirty = false;
  
diff -cpr HEAD/src/include/executor/execdebug.h NDirectFileReadWrite/src/include/executor/execdebug.h
*** HEAD/src/include/executor/execdebug.h	Wed Jan  2 04:45:57 2008
--- NDirectFileReadWrite/src/include/executor/execdebug.h	Tue Aug  5 15:00:26 2008
*************** extern int	NIndexTupleInserted;
*** 190,208 ****
  #define MJ_DEBUG_PROC_NODE(slot)
  #endif   /* EXEC_MERGEJOINDEBUG */
  
- /* ----------------------------------------------------------------
-  *		DO NOT DEFINE THESE EVER OR YOU WILL BURN!
-  * ----------------------------------------------------------------
-  */
- /* ----------------
-  *		NOTYET is placed around any code not yet implemented
-  *		in the executor.  Only remove these when actually implementing
-  *		said code.
-  * ----------------
-  */
- #undef NOTYET
- 
- extern long NDirectFileRead;
- extern long NDirectFileWrite;
- 
  #endif   /* ExecDebugIncluded */
--- 190,193 ----
diff -cpr HEAD/src/include/storage/buffile.h NDirectFileReadWrite/src/include/storage/buffile.h
*** HEAD/src/include/storage/buffile.h	Tue Mar 11 05:06:27 2008
--- NDirectFileReadWrite/src/include/storage/buffile.h	Tue Aug  5 15:00:26 2008
***************
*** 30,35 ****
--- 30,39 ----
  
  typedef struct BufFile BufFile;
  
+ /* event counters in buffile.c */
+ extern long NDirectFileRead;
+ extern long NDirectFileWrite;
+ 
  /*
   * prototypes for functions in buffile.c
   */
