66 *
77 * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
88 *
9- * $PostgreSQL: pgsql/src/port/open.c,v 1.19 2007/02 /1302:06:22 momjian Exp $
9+ * $PostgreSQL: pgsql/src/port/open.c,v 1.20 2007/04 /1310:30:30 mha Exp $
1010 *
1111 *-------------------------------------------------------------------------
1212 */
@@ -53,7 +53,6 @@ openFlagsToCreateFileFlags(int openFlags)
5353
5454/*
5555 * - file attribute setting, based on fileMode?
56- * - handle other flags? (eg FILE_FLAG_NO_BUFFERING/FILE_FLAG_WRITE_THROUGH)
5756 */
5857int
5958pgwin32_open (const char * fileName ,int fileFlags ,...)
@@ -65,7 +64,7 @@ pgwin32_open(const char *fileName, int fileFlags,...)
6564/* Check that we can handle the request */
6665assert ((fileFlags & ((O_RDONLY |O_WRONLY |O_RDWR ) |O_APPEND |
6766 (O_RANDOM |O_SEQUENTIAL |O_TEMPORARY ) |
68- _O_SHORT_LIVED |O_DSYNC |
67+ _O_SHORT_LIVED |O_DSYNC |O_DIRECT |
6968 (O_CREAT |O_TRUNC |O_EXCL ) | (O_TEXT |O_BINARY )))== fileFlags );
7069
7170sa .nLength = sizeof (sa );
@@ -85,7 +84,8 @@ pgwin32_open(const char *fileName, int fileFlags,...)
8584 ((fileFlags & O_SEQUENTIAL ) ?FILE_FLAG_SEQUENTIAL_SCAN :0 ) |
8685 ((fileFlags & _O_SHORT_LIVED ) ?FILE_ATTRIBUTE_TEMPORARY :0 ) |
8786((fileFlags & O_TEMPORARY ) ?FILE_FLAG_DELETE_ON_CLOSE :0 ) |
88- ((fileFlags & O_DSYNC ) ?FILE_FLAG_WRITE_THROUGH :0 ),
87+ ((fileFlags & O_DIRECT ) ?FILE_FLAG_NO_BUFFERING :0 ) |
88+ ((fileFlags & O_DSYNC ) ?FILE_FLAG_WRITE_THROUGH :0 ),
8989NULL ))== INVALID_HANDLE_VALUE )
9090{
9191switch (GetLastError ())