auth_delay
Add a short delay after a failed authentication attempt, to make
- brute-force attacks on database passwords a bit harder.
+ brute-force attacks on database passwords a bit harder.
by KaiGai Kohei <kaigai@ak.jp.nec.com>
auto_explain -
earthdistance -
Functions for computing distances between two points on Earth
- by Bruno Wolff III <bruno@wolff.to> and Hal Snyder <hal@vailsys.com>
+ by Bruno Wolff III <bruno@wolff.to> and Hal Snyder <hal@vailsys.com>
fuzzystrmatch -
Levenshtein, metaphone, and soundex fuzzy string matching
Track statement execution times across a whole database cluster
by Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>
+pg_test_fsync -
+ Test different wal_sync_method settings
+ by Bruce Momjian <bruce@momjian.us>
+
pg_trgm -
Functions for determining the similarity of text based on trigram
matching.
/*
- * test_fsync.c
+ * pg_test_fsync.c
* tests all supported fsync() methods
*/
#include "postgres.h"
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <time.h>
+#include <unistd.h>
+
#include "getopt_long.h"
#include "access/xlog_internal.h"
#include "access/xlog.h"
#include "access/xlogdefs.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <string.h>
-
-/*
+/*
* put the temp files in the local directory
- * unless the user specifies otherwise
+ * unless the user specifies otherwise
*/
-#define FSYNC_FILENAME "./test_fsync.out"
+#define FSYNC_FILENAME "./pg_test_fsync.out"
#define WRITE_SIZE (8 * 1024) /* 8k */
main(int argc, char *argv[])
{
handle_args(argc, argv);
-
+
prepare_buf();
test_open();
-
+
/* Test using 1 8k write */
test_sync(1);
/* Test using 2 8k writes */
test_sync(2);
-
+
test_open_syncs();
test_file_descriptor_sync();
-
+
test_non_sync();
-
+
unlink(filename);
return 0;
if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-h") == 0 ||
strcmp(argv[1], "-?") == 0)
{
- fprintf(stderr, "test_fsync [-f filename] [ops-per-test]\n");
+ fprintf(stderr, "pg_test_fsync [-f filename] [ops-per-test]\n");
exit(0);
}
if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
{
- fprintf(stderr,"test_fsync " PG_VERSION "\n");
+ fprintf(stderr,"pg_test_fsync " PG_VERSION "\n");
exit(0);
}
}
case 'o':
ops_per_test = atoi(optarg);
break;
-
+
default:
fprintf(stderr,
"Try \"%s --help\" for more information.\n",
- "test_fsync");
+ "pg_test_fsync");
exit(1);
break;
}
{
int tmpfile;
- /*
- * test if we can open the target file
+ /*
+ * test if we can open the target file
*/
if ((tmpfile = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR)) == -1)
die("Cannot open output file.");
{
int tmpfile, ops, writes;
bool fs_warning = false;
-
+
if (writes_per_op == 1)
printf("\nCompare file sync methods using one 8k write:\n");
else
gettimeofday(&stop_t, NULL);
close(tmpfile);
print_elapse(start_t, stop_t);
-
+
/*
* If fsync_writethrough is available, test as well
- */
+ */
#ifdef HAVE_FSYNC_WRITETHROUGH
printf(LABEL_FORMAT, "fsync_writethrough");
fflush(stdout);
close(tmpfile);
print_elapse(start_t, stop_t);
}
-
+
#else
printf(NA_FORMAT, "open_sync", "n/a\n");
#endif
printf("(If the times are similar, fsync() can sync data written\n");
printf("on a different descriptor.)\n");
- /*
- * first write, fsync and close, which is the
+ /*
+ * first write, fsync and close, which is the
* normal behavior without multiple descriptors
*/
printf(LABEL_FORMAT, "write, fsync, close");
* This simulates processes fsyncing each other's
* writes.
*/
- printf(LABEL_FORMAT, "write, close, fsync");
- fflush(stdout);
+ printf(LABEL_FORMAT, "write, close, fsync");
+ fflush(stdout);
gettimeofday(&start_t, NULL);
for (ops = 0; ops < ops_per_test; ops++)
print_elapse(start_t, stop_t);
}
-/*
+/*
* print out the writes per second for tests
*/
void