mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
merge 1032 to 1032b. addresses #1231
git-svn-id: file:///svn/toku/tokudb.1032b@7815 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
6b3a1715b1
commit
7fe32bcba4
4 changed files with 108 additions and 100 deletions
|
@ -1,30 +1,26 @@
|
||||||
#ident "Copyright (c) 2007 Tokutek Inc. All rights reserved."
|
|
||||||
|
|
||||||
# standard build: make
|
# standard build: make
|
||||||
# build with Berkeley DB 4.1: make BDBDIR=/usr/local/BerkeleyDB.4.1
|
# build with Berkeley DB 4.1: make BDBDIR=/usr/local/BerkeleyDB.4.1
|
||||||
# build with TokuDB: make BDBDIR=~/svn/tokudb
|
# build with TokuDB: make BDBDIR=~/svn/tokudb
|
||||||
# build with g++: make CC=g++
|
# build with g++: make CC=g++
|
||||||
|
#ident "Copyright (c) 2007 Tokutek Inc. All rights reserved."
|
||||||
|
# -*- Mode: Makefile -*-
|
||||||
|
|
||||||
|
.DEFAULT_GOAL= build
|
||||||
|
TOKUROOT=../
|
||||||
|
INCLUDEDIRS=-I. -I../ -I$(TOKUROOT)newbrt -I../range_tree -I../lock_tree
|
||||||
|
DEPEND_COMPILE += \
|
||||||
|
../*.h \
|
||||||
|
../range_tree/*.h \
|
||||||
|
../lock_tree/*.h \
|
||||||
|
test.h \
|
||||||
|
#end
|
||||||
|
|
||||||
|
SKIP_NORETURN=1 #Do not add the -Wmissing-noreturn flag
|
||||||
HERE = db-benchmark-test
|
HERE = db-benchmark-test
|
||||||
ifeq ($(SUMMARIZE),1)
|
include $(TOKUROOT)include/Makefile.include
|
||||||
SUMMARIZE_CMD = ;if test $$? = 0; then printf "%-60sPASS\n" $(HERE)/$@; else printf "%-60sFAIL\n" $(HERE)/$@ ; test 0 = 1; fi
|
|
||||||
QUIET = -q
|
|
||||||
else
|
|
||||||
SUMMARIZE_CMD =
|
|
||||||
QUIET =
|
|
||||||
endif
|
|
||||||
|
|
||||||
BENCHDBS = bench.bdb/ bench.tokudb ptest*.dir/ x.dir/ xfast.dir/
|
BENCHDBS = bench.bdb/ bench.tokudb ptest*.dir/ x.dir/ xfast.dir/
|
||||||
|
|
||||||
OPTFLAGS = -O2
|
|
||||||
CFLAGS = -Wall -Werror -g $(OPTFLAGS) $(GCOV_FLAGS) $(PROF_FLAGS)
|
|
||||||
# CFLAGS += -pg
|
|
||||||
|
|
||||||
ifeq ($(CC),icc)
|
|
||||||
CFLAGS += -diag-disable 981
|
|
||||||
endif
|
|
||||||
|
|
||||||
LDFLAGS += -lpthread
|
|
||||||
ifdef BDBDIR
|
ifdef BDBDIR
|
||||||
BDB_CPPFLAGS = -I$(BDBDIR)/include
|
BDB_CPPFLAGS = -I$(BDBDIR)/include
|
||||||
BDB_LDFLAGS = -L$(BDBDIR)/lib -ldb -Wl,-rpath,$(BDBDIR)/lib -lpthread
|
BDB_LDFLAGS = -L$(BDBDIR)/lib -ldb -Wl,-rpath,$(BDBDIR)/lib -lpthread
|
||||||
|
@ -32,57 +28,80 @@ else
|
||||||
BDB_CPPFLAGS =
|
BDB_CPPFLAGS =
|
||||||
BDB_LDFLAGS = -ldb
|
BDB_LDFLAGS = -ldb
|
||||||
endif
|
endif
|
||||||
TDB_CPPFLAGS = -I../include
|
TOKUDB=libtokudb.$(SOEXT)
|
||||||
TDB_LDFLAGS = -L../lib -ltokudb -Wl,-rpath,$(PWD)/../lib -lpthread -lz
|
TDB_DLINK_FILES = $(TOKUROOT)lib/$(TOKUDB)
|
||||||
|
|
||||||
TARGET_BDB = db-benchmark-test-bdb
|
TARGET_BDB = db-benchmark-test-bdb$(BINSUF)
|
||||||
TARGET_TDB = db-benchmark-test-tokudb
|
TARGET_TDB = db-benchmark-test-tokudb$(BINSUF)
|
||||||
TARGETS = $(TARGET_BDB) scanscan-bdb $(TARGET_TDB) scanscan-tokudb
|
SCANSCAN_TDB = scanscan-tokudb$(BINSUF)
|
||||||
|
TARGETS = $(TARGET_BDB) $(TARGET_TDB) $(SCANSCAN_TDB)
|
||||||
|
|
||||||
default: build
|
default: build
|
||||||
build: $(TARGETS)
|
build: $(TARGETS)
|
||||||
|
build.tdb: $(TARGET_TDB) $(SCANSCAN_TDB)
|
||||||
|
|
||||||
check: check-default check-xfast check-x
|
check: check-default check-xfast check-x
|
||||||
|
|
||||||
check-default: $(TARGET_TDB)
|
check-default: $(TARGET_TDB)
|
||||||
$(VGRIND) ./$(TARGET_TDB) $(QUIET) $(SUMMARIZE_CMD)
|
$(MAYBEATSIGN)$(VGRIND) ./$(TARGET_TDB) $(QUIET) $(SUMMARIZE_CMD)
|
||||||
|
|
||||||
check-x: $(TARGET_TDB)
|
check-x: $(TARGET_TDB)
|
||||||
$(VGRIND) ./$(TARGET_TDB) $(QUIET) -x --xcount 1000 --periter 100000 --env x.dir 10 $(SUMMARIZE_CMD)
|
$(MAYBEATSIGN)$(VGRIND) ./$(TARGET_TDB) $(QUIET) -x --xcount 1000 --periter 100000 --env x.dir 10 $(SUMMARIZE_CMD)
|
||||||
|
|
||||||
|
|
||||||
# A fast transaction test that detects #455.
|
# A fast transaction test that detects #455.
|
||||||
check-xfast: $(TARGET_TDB)
|
check-xfast: $(TARGET_TDB)
|
||||||
./$(TARGET_TDB) $(QUIET) --noserial -x --valsize 1000 --cachesize 8000000 --xcount 1000 --periter 20000 --env xfast.dir 1 $(SUMMARIZE_CMD)
|
$(MAYBEATSIGN)./$(TARGET_TDB) $(QUIET) --noserial -x --valsize 1000 --cachesize 8000000 --xcount 1000 --periter 20000 --env xfast.dir 1 $(SUMMARIZE_CMD)
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(TARGETS) $(BENCHDBS) *.gcno *.gcda *.gcov
|
$(MAYBEATSIGN)rm -f $(TARGETS)
|
||||||
|
$(MAYBEATSIGN)rm -rf $(BENCHDBS)
|
||||||
|
|
||||||
|
$(TARGET_TDB) $(SCANSCAN_TDB): BIN_FROM_C_FLAGS += -DDIRSUF=tokudb
|
||||||
|
|
||||||
|
ifneq ($(PROF),)
|
||||||
|
USE_STATIC=1
|
||||||
|
endif
|
||||||
|
|
||||||
# A hack to make gprof work. See #515.
|
# A hack to make gprof work. See #515.
|
||||||
ifeq ($(PROF_FLAGS),-pg)
|
ifneq ($(USE_STATIC),)
|
||||||
|
$(TARGET_TDB) $(SCANSCAN_TDB): DLINK_FILES=
|
||||||
|
|
||||||
OFILES = \
|
OFILES = \
|
||||||
../src/ydb.o ../src/errors.o ../src/elocks.o \
|
$(TOKUROOT)src/ydb.lib \
|
||||||
../newbrt/newbrt.o \
|
$(TOKUROOT)src/range_tree/rangetree.lib \
|
||||||
../src/lock_tree/locktree.o ../src/lock_tree/rth.o ../src/lock_tree/lth.o ../src/lock_tree/idlth.o ../src/lock_tree/db_id.o \
|
$(TOKUROOT)src/lock_tree/locktree.lib \
|
||||||
../src/range_tree/rangetree.o
|
$(TOKUROOT)newbrt/newbrt.lib \
|
||||||
db-benchmark-test-tokudb: db-benchmark-test.c
|
$(LIBPORTABILITY) \
|
||||||
$(CC) $(CFLAGS) $(TDB_CPPFLAGS) $(OFILES) -lz $< -o $@ -DDIRSUF=tokudb
|
#end
|
||||||
scanscan-tokudb: scanscan.c
|
|
||||||
$(CC) $(CFLAGS) $(TDB_CPPFLAGS) $(OFILES) -lz $< -o $@ -DDIRSUF=tokudb
|
$(TARGET_TDB): db-benchmark-test.c
|
||||||
|
$(MAYBEATSIGN)$(CC) $< $(BIN_FROM_C_FLAGS) $(OFILES)
|
||||||
|
$(SCANSCAN_TDB): scanscan.c
|
||||||
|
$(MAYBEATSIGN)$(CC) $< $(BIN_FROM_C_FLAGS) $(OFILES)
|
||||||
else
|
else
|
||||||
db-benchmark-test-tokudb: db-benchmark-test.c
|
$(TARGET_TDB) $(SCANSCAN_TDB): DLINK_FILES=$(TDB_DLINK_FILES)
|
||||||
$(CC) $(CFLAGS) $(TDB_CPPFLAGS) $(TDB_LDFLAGS) $< -o $@ -DDIRSUF=tokudb
|
ifeq ($(SOEXT),dll) #Windows does not support rpath.
|
||||||
scanscan-tokudb: scanscan.c
|
$(TOKUDB): $(TOKUROOT)lib/$(TOKUDB)
|
||||||
$(CC) $(CFLAGS) $(TDB_CPPFLAGS) $(TDB_LDFLAGS) $< -o $@ -DDIRSUF=tokudb
|
$(MAYBEATSIGN)cp $< $@
|
||||||
|
$(TOKUROOT)lib/$(TOKUDB):
|
||||||
|
$(MAYBEATSIGN)cd $(@D) && $(MAKE) $(@F).install
|
||||||
|
$(TARGET_TDB) $(SCANSCAN_TDB): $(TOKUDB)
|
||||||
endif
|
endif
|
||||||
db-benchmark-test-bdb: db-benchmark-test.c
|
$(TARGET_TDB) $(SCANSCAN_TDB): RPATH_DIRS=$(dir $(TDB_DLINK_FILES))
|
||||||
$(CC) $(CFLAGS) $(BDB_CPPFLAGS) $(BDB_LDFLAGS) $< -o $@ -DDIRSUF=bdb
|
$(TARGET_TDB): db-benchmark-test.c
|
||||||
scanscan-bdb: scanscan.c
|
$(MAYBEATSIGN)$(CC) $< $(BIN_FROM_C_FLAGS)
|
||||||
|
$(SCANSCAN_TDB): scanscan.c
|
||||||
|
$(MAYBEATSIGN)$(CC) $< $(BIN_FROM_C_FLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(TARGET_BDB): db-benchmark-test.c
|
||||||
$(CC) $(CFLAGS) $(BDB_CPPFLAGS) $(BDB_LDFLAGS) $< -o $@ -DDIRSUF=bdb
|
$(CC) $(CFLAGS) $(BDB_CPPFLAGS) $(BDB_LDFLAGS) $< -o $@ -DDIRSUF=bdb
|
||||||
|
|
||||||
PARGS =
|
PARGS =
|
||||||
ptest0 ptest1 ptest2 ptest3 ptest4 ptest5 ptest6 ptest7: db-benchmark-test-tokudb
|
|
||||||
./db-benchmark-test-tokudb --env $@.dir $(PARGS)
|
ptest%: $(TARGET_TDB)
|
||||||
|
./$< --env $@.dir $(PARGS)
|
||||||
parallel-test-8: ptest0 ptest1 ptest2 ptest3 ptest4 ptest5 ptest6 ptest7
|
parallel-test-8: ptest0 ptest1 ptest2 ptest3 ptest4 ptest5 ptest6 ptest7
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,13 @@
|
||||||
#ident "Copyright (c) 2007, 2008 Tokutek Inc. All rights reserved."
|
#ident "Copyright (c) 2007, 2008 Tokutek Inc. All rights reserved."
|
||||||
|
|
||||||
/* Insert a bunch of stuff */
|
/* Insert a bunch of stuff */
|
||||||
|
|
||||||
|
#include <portability.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <db.h>
|
#include <db.h>
|
||||||
|
@ -53,15 +54,13 @@ static void do_prelock(DB* db, DB_TXN* txn) {
|
||||||
#if !defined(NO_DB_PRELOCKED)
|
#if !defined(NO_DB_PRELOCKED)
|
||||||
int r = db->pre_acquire_table_lock(db, txn);
|
int r = db->pre_acquire_table_lock(db, txn);
|
||||||
assert(r==0);
|
assert(r==0);
|
||||||
#else
|
|
||||||
db = db; txn = txn;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define STRINGIFY2(s) #s
|
#define STRINGIFY2(s) #s
|
||||||
#define STRINGIFY(s) STRINGIFY2(s)
|
#define STRINGIFY(s) STRINGIFY2(s)
|
||||||
const char *dbdir = "./bench." STRINGIFY(DIRSUF) "/"; /* DIRSUF is passed in as a -D argument to the compiler. */
|
const char *dbdir = "./bench." STRINGIFY(DIRSUF); /* DIRSUF is passed in as a -D argument to the compiler. */
|
||||||
char *dbfilename = "bench.db";
|
char *dbfilename = "bench.db";
|
||||||
char *dbname;
|
char *dbname;
|
||||||
|
|
||||||
|
@ -70,7 +69,7 @@ DB *db;
|
||||||
DB_TXN *tid=0;
|
DB_TXN *tid=0;
|
||||||
|
|
||||||
|
|
||||||
static void setup (void) {
|
static void benchmark_setup (void) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -79,8 +78,10 @@ static void setup (void) {
|
||||||
//printf("unlink_cmd=%s\n", unlink_cmd);
|
//printf("unlink_cmd=%s\n", unlink_cmd);
|
||||||
system(unlink_cmd);
|
system(unlink_cmd);
|
||||||
}
|
}
|
||||||
if (strcmp(dbdir, ".") != 0)
|
if (strcmp(dbdir, ".") != 0) {
|
||||||
mkdir(dbdir, 0755);
|
r = os_mkdir(dbdir,S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH);
|
||||||
|
assert(r == 0);
|
||||||
|
}
|
||||||
|
|
||||||
r = db_env_create(&dbenv, 0);
|
r = db_env_create(&dbenv, 0);
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
|
@ -103,7 +104,7 @@ static void setup (void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
r = dbenv->open(dbenv, dbdir, env_open_flags, 0644);
|
r = dbenv->open(dbenv, dbdir, env_open_flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +123,7 @@ static void setup (void) {
|
||||||
r = db->set_flags(db, dupflags);
|
r = db->set_flags(db, dupflags);
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
}
|
}
|
||||||
r = db->open(db, tid, dbfilename, NULL, DB_BTREE, DB_CREATE, 0644);
|
r = db->open(db, tid, dbfilename, NULL, DB_BTREE, DB_CREATE, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
|
||||||
if (r!=0) fprintf(stderr, "errno=%d, %s\n", errno, strerror(errno));
|
if (r!=0) fprintf(stderr, "errno=%d, %s\n", errno, strerror(errno));
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
if (do_transactions) {
|
if (do_transactions) {
|
||||||
|
@ -135,7 +136,7 @@ static void setup (void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shutdown (void) {
|
static void benchmark_shutdown (void) {
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (do_transactions && singlex) {
|
if (do_transactions && singlex) {
|
||||||
|
@ -167,7 +168,7 @@ static void fill_array (unsigned char *data, int size) {
|
||||||
if (compressibility>0) {
|
if (compressibility>0) {
|
||||||
int i;
|
int i;
|
||||||
for (i=0; i<size/compressibility; i++) {
|
for (i=0; i<size/compressibility; i++) {
|
||||||
data[i] = (unsigned char)random();
|
data[i] = (unsigned char) random();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -380,11 +381,11 @@ int main (int argc, const char *argv[]) {
|
||||||
if (!norandom) printf("random ");
|
if (!norandom) printf("random ");
|
||||||
printf("insertions of %d per batch%s\n", items_per_iteration, do_transactions ? " (with transactions)" : "");
|
printf("insertions of %d per batch%s\n", items_per_iteration, do_transactions ? " (with transactions)" : "");
|
||||||
}
|
}
|
||||||
setup();
|
benchmark_setup();
|
||||||
gettimeofday(&t1,0);
|
gettimeofday(&t1,0);
|
||||||
biginsert(total_n_items, &t1);
|
biginsert(total_n_items, &t1);
|
||||||
gettimeofday(&t2,0);
|
gettimeofday(&t2,0);
|
||||||
shutdown();
|
benchmark_shutdown();
|
||||||
gettimeofday(&t3,0);
|
gettimeofday(&t3,0);
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
printf("Shutdown %9.6fs\n", tdiff(&t3, &t2));
|
printf("Shutdown %9.6fs\n", tdiff(&t3, &t2));
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
/* Scan the bench.tokudb/bench.db over and over. */
|
/* Scan the bench.tokudb/bench.db over and over. */
|
||||||
|
|
||||||
|
#include <portability.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <db.h>
|
#include <db.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/resource.h>
|
//#include <sys/resource.h>
|
||||||
#include <sys/time.h>
|
//#include <sys/time.h>
|
||||||
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
const char *pname;
|
const char *pname;
|
||||||
|
@ -32,12 +34,8 @@ static void parse_args (int argc, const char *argv[]) {
|
||||||
if (specified_run_mode && run_mode!=RUN_VERIFY) goto two_modes;
|
if (specified_run_mode && run_mode!=RUN_VERIFY) goto two_modes;
|
||||||
run_mode = RUN_HWC;
|
run_mode = RUN_HWC;
|
||||||
} else if (strcmp(*argv, "--prelock")==0) prelock=1;
|
} else if (strcmp(*argv, "--prelock")==0) prelock=1;
|
||||||
#if defined(DB_PRELOCKED)
|
else if (strcmp(*argv, "--prelockflag")==0) { prelockflag=1; lock_flag = DB_PRELOCKED; }
|
||||||
else if (strcmp(*argv, "--prelockflag")==0) { prelockflag=1; lock_flag = DB_PRELOCKED; }
|
|
||||||
#endif
|
|
||||||
#if defined(DB_PRELOCKED_WRITE)
|
|
||||||
else if (strcmp(*argv, "--prelockwriteflag")==0) { prelockflag=1; lock_flag = DB_PRELOCKED_WRITE; }
|
else if (strcmp(*argv, "--prelockwriteflag")==0) { prelockflag=1; lock_flag = DB_PRELOCKED_WRITE; }
|
||||||
#endif
|
|
||||||
else if (strcmp(*argv, "--nox")==0) { do_txns=0; }
|
else if (strcmp(*argv, "--nox")==0) { do_txns=0; }
|
||||||
else if (strcmp(*argv, "--count")==0) {
|
else if (strcmp(*argv, "--count")==0) {
|
||||||
char *end;
|
char *end;
|
||||||
|
@ -59,7 +57,7 @@ static void parse_args (int argc, const char *argv[]) {
|
||||||
fprintf(stderr, " --nox no transactions\n");
|
fprintf(stderr, " --nox no transactions\n");
|
||||||
fprintf(stderr, " --count <count> read the first COUNT rows and then stop.\n");
|
fprintf(stderr, " --count <count> read the first COUNT rows and then stop.\n");
|
||||||
fprintf(stderr, " --cachesize <n> set the env cachesize to <n>\n");
|
fprintf(stderr, " --cachesize <n> set the env cachesize to <n>\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
|
@ -73,22 +71,21 @@ DB_TXN *tid=0;
|
||||||
|
|
||||||
#define STRINGIFY2(s) #s
|
#define STRINGIFY2(s) #s
|
||||||
#define STRINGIFY(s) STRINGIFY2(s)
|
#define STRINGIFY(s) STRINGIFY2(s)
|
||||||
const char *dbdir = "./bench." STRINGIFY(DIRSUF) "/"; /* DIRSUF is passed in as a -D argument to the compiler. */
|
const char *dbdir = "./bench." STRINGIFY(DIRSUF); /* DIRSUF is passed in as a -D argument to the compiler. */
|
||||||
int env_open_flags_yesx = DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL|DB_INIT_TXN|DB_INIT_LOG|DB_INIT_LOCK;
|
int env_open_flags_yesx = DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL|DB_INIT_TXN|DB_INIT_LOG|DB_INIT_LOCK;
|
||||||
int env_open_flags_nox = DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL;
|
int env_open_flags_nox = DB_CREATE|DB_PRIVATE|DB_INIT_MPOOL;
|
||||||
char *dbfilename = "bench.db";
|
char *dbfilename = "bench.db";
|
||||||
|
|
||||||
static void setup (void) {
|
static void scanscan_setup (void) {
|
||||||
int r;
|
int r;
|
||||||
r = db_env_create(&env, 0); assert(r==0);
|
r = db_env_create(&env, 0); assert(r==0);
|
||||||
r = env->set_cachesize(env, 0, cachesize, 1); assert(r==0);
|
r = env->set_cachesize(env, 0, cachesize, 1); assert(r==0);
|
||||||
r = env->open(env, dbdir, do_txns? env_open_flags_yesx : env_open_flags_nox, 0644); assert(r==0);
|
r = env->open(env, dbdir, do_txns? env_open_flags_yesx : env_open_flags_nox, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); assert(r==0);
|
||||||
r = db_create(&db, env, 0); assert(r==0);
|
r = db_create(&db, env, 0); assert(r==0);
|
||||||
if (do_txns) {
|
if (do_txns) {
|
||||||
r = env->txn_begin(env, 0, &tid, 0); assert(r==0);
|
r = env->txn_begin(env, 0, &tid, 0); assert(r==0);
|
||||||
}
|
}
|
||||||
r = db->open(db, tid, dbfilename, NULL, DB_BTREE, 0, 0644); assert(r==0);
|
r = db->open(db, tid, dbfilename, NULL, DB_BTREE, 0, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); assert(r==0);
|
||||||
#if defined(DB_PRELOCKED)
|
|
||||||
if (prelock) {
|
if (prelock) {
|
||||||
r = db->pre_acquire_read_lock(db,
|
r = db->pre_acquire_read_lock(db,
|
||||||
tid,
|
tid,
|
||||||
|
@ -96,17 +93,17 @@ static void setup (void) {
|
||||||
db->dbt_pos_infty(), db->dbt_pos_infty());
|
db->dbt_pos_infty(), db->dbt_pos_infty());
|
||||||
assert(r==0);
|
assert(r==0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void shutdown (void) {
|
static void scanscan_shutdown (void) {
|
||||||
int r;
|
int r;
|
||||||
|
r = db->close(db, 0); assert(r==0);
|
||||||
if (do_txns) {
|
if (do_txns) {
|
||||||
r = tid->commit(tid, 0); assert(r==0);
|
r = tid->commit(tid, 0); assert(r==0);
|
||||||
}
|
}
|
||||||
r = db->close(db, 0); assert(r==0);
|
|
||||||
r = env->close(env, 0); assert(r==0);
|
r = env->close(env, 0); assert(r==0);
|
||||||
#if 0
|
|
||||||
|
#if 0 && defined TOKUDB
|
||||||
{
|
{
|
||||||
extern unsigned long toku_get_maxrss(void);
|
extern unsigned long toku_get_maxrss(void);
|
||||||
printf("maxrss=%.2fMB\n", toku_get_maxrss()/256.0);
|
printf("maxrss=%.2fMB\n", toku_get_maxrss()/256.0);
|
||||||
|
@ -149,8 +146,6 @@ static void scanscan_hwc (void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(TOKUDB)
|
|
||||||
|
|
||||||
struct extra_count {
|
struct extra_count {
|
||||||
long long totalbytes;
|
long long totalbytes;
|
||||||
int rowcounter;
|
int rowcounter;
|
||||||
|
@ -186,16 +181,12 @@ static void scanscan_lwc (void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct extra_verify {
|
struct extra_verify {
|
||||||
long long totalbytes;
|
long long totalbytes;
|
||||||
int rowcounter;
|
int rowcounter;
|
||||||
DBT k,v; // the k and v are gotten using the old cursor
|
DBT k,v; // the k and v are gotten using the old cursor
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(TOKUDB)
|
|
||||||
|
|
||||||
static void checkbytes (DBT const *key, DBT const *data, void *extrav) {
|
static void checkbytes (DBT const *key, DBT const *data, void *extrav) {
|
||||||
struct extra_verify *e=extrav;
|
struct extra_verify *e=extrav;
|
||||||
e->totalbytes += key->size + data->size;
|
e->totalbytes += key->size + data->size;
|
||||||
|
@ -208,7 +199,6 @@ static void checkbytes (DBT const *key, DBT const *data, void *extrav) {
|
||||||
assert(e->v.data != data->data);
|
assert(e->v.data != data->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void scanscan_verify (void) {
|
static void scanscan_verify (void) {
|
||||||
int r;
|
int r;
|
||||||
|
@ -230,14 +220,11 @@ static void scanscan_verify (void) {
|
||||||
c_get_flags |= lock_flag;
|
c_get_flags |= lock_flag;
|
||||||
}
|
}
|
||||||
while (1) {
|
while (1) {
|
||||||
int r2 = dbc1->c_get(dbc1, &v.k, &v.v, c_get_flags);
|
int r1,r2;
|
||||||
#if defined(TOKUDB)
|
r2 = dbc1->c_get(dbc1, &v.k, &v.v, c_get_flags);
|
||||||
int r1 = dbc2->c_getf_next(dbc2, f_flags, checkbytes, &v);
|
r1 = dbc2->c_getf_next(dbc2, f_flags, checkbytes, &v);
|
||||||
assert(r1==r2);
|
assert(r1==r2);
|
||||||
if (r1) break;
|
if (r1) break;
|
||||||
#else
|
|
||||||
if (r2) break;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
r = dbc1->c_close(dbc1); assert(r==0);
|
r = dbc1->c_close(dbc1); assert(r==0);
|
||||||
r = dbc2->c_close(dbc2); assert(r==0);
|
r = dbc2->c_close(dbc2); assert(r==0);
|
||||||
|
@ -252,17 +239,15 @@ int main (int argc, const char *argv[]) {
|
||||||
|
|
||||||
parse_args(argc,argv);
|
parse_args(argc,argv);
|
||||||
|
|
||||||
setup();
|
scanscan_setup();
|
||||||
switch (run_mode) {
|
switch (run_mode) {
|
||||||
case RUN_HWC: scanscan_hwc(); break;
|
case RUN_HWC: scanscan_hwc(); goto ok;
|
||||||
#if defined(TOKUDB)
|
case RUN_LWC: scanscan_lwc(); goto ok;
|
||||||
case RUN_LWC: scanscan_lwc(); break;
|
case RUN_VERIFY: scanscan_verify(); goto ok;
|
||||||
#endif
|
|
||||||
case RUN_VERIFY: scanscan_verify(); break;
|
|
||||||
|
|
||||||
default: assert(0);
|
|
||||||
}
|
}
|
||||||
shutdown();
|
assert(0);
|
||||||
|
ok:
|
||||||
|
scanscan_shutdown();
|
||||||
|
|
||||||
#if 0 && defined TOKUDB
|
#if 0 && defined TOKUDB
|
||||||
if (0) {
|
if (0) {
|
||||||
|
@ -276,6 +261,7 @@ int main (int argc, const char *argv[]) {
|
||||||
extern void toku_print_trace_mem();
|
extern void toku_print_trace_mem();
|
||||||
toku_print_trace_mem();
|
toku_print_trace_mem();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#if defined __linux__ && __linux__
|
#if defined __linux__ && __linux__
|
||||||
char fname[256];
|
char fname[256];
|
||||||
sprintf(fname, "/proc/%d/status", getpid());
|
sprintf(fname, "/proc/%d/status", getpid());
|
||||||
|
@ -289,7 +275,6 @@ int main (int argc, const char *argv[]) {
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -771,6 +771,7 @@ static int toku_env_txn_stat(DB_ENV * env, DB_TXN_STAT ** statp, u_int32_t flags
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1
|
#if DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 1
|
||||||
static void toku_default_errcall(const char *errpfx, char *msg) {
|
static void toku_default_errcall(const char *errpfx, char *msg) {
|
||||||
fprintf(stderr, "YDB: %s: %s", errpfx, msg);
|
fprintf(stderr, "YDB: %s: %s", errpfx, msg);
|
||||||
|
@ -781,6 +782,7 @@ static void toku_default_errcall(const DB_ENV *env, const char *errpfx, const ch
|
||||||
fprintf(stderr, "YDB: %s: %s", errpfx, msg);
|
fprintf(stderr, "YDB: %s: %s", errpfx, msg);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
static int locked_env_open(DB_ENV * env, const char *home, u_int32_t flags, int mode) {
|
static int locked_env_open(DB_ENV * env, const char *home, u_int32_t flags, int mode) {
|
||||||
toku_ydb_lock(); int r = toku_env_open(env, home, flags, mode); toku_ydb_unlock(); return r;
|
toku_ydb_lock(); int r = toku_env_open(env, home, flags, mode); toku_ydb_unlock(); return r;
|
||||||
|
@ -862,7 +864,7 @@ static int toku_env_create(DB_ENV ** envp, u_int32_t flags) {
|
||||||
MALLOC(result);
|
MALLOC(result);
|
||||||
if (result == 0) { r = ENOMEM; goto cleanup; }
|
if (result == 0) { r = ENOMEM; goto cleanup; }
|
||||||
memset(result, 0, sizeof *result);
|
memset(result, 0, sizeof *result);
|
||||||
result->err = toku_locked_env_err;
|
result->err = (void (*)(const DB_ENV * env, int error, const char *fmt, ...)) toku_locked_env_err;
|
||||||
result->open = locked_env_open;
|
result->open = locked_env_open;
|
||||||
result->close = locked_env_close;
|
result->close = locked_env_close;
|
||||||
result->txn_checkpoint = locked_env_txn_checkpoint;
|
result->txn_checkpoint = locked_env_txn_checkpoint;
|
||||||
|
@ -1138,8 +1140,9 @@ int txn_commit(DB_TXN * txn, u_int32_t flags) {
|
||||||
int log_compare(const DB_LSN * a, const DB_LSN * b) {
|
int log_compare(const DB_LSN * a, const DB_LSN * b) {
|
||||||
toku_ydb_lock();
|
toku_ydb_lock();
|
||||||
fprintf(stderr, "%s:%d log_compare(%p,%p)\n", __FILE__, __LINE__, a, b);
|
fprintf(stderr, "%s:%d log_compare(%p,%p)\n", __FILE__, __LINE__, a, b);
|
||||||
abort();
|
assert(0);
|
||||||
toku_ydb_unlock();
|
toku_ydb_unlock();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int maybe_do_associate_create (DB_TXN*txn, DB*primary, DB*secondary) {
|
static int maybe_do_associate_create (DB_TXN*txn, DB*primary, DB*secondary) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue