mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 12:01:42 +01:00
git-svn-id: file:///svn/tokudb@1261 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
f31f24c237
commit
6530c1c216
1 changed files with 39 additions and 23 deletions
|
@ -17,11 +17,21 @@ int errors;
|
||||||
|
|
||||||
void db_put(DB *db, int k, int v, u_int32_t put_flags, int rexpect) {
|
void db_put(DB *db, int k, int v, u_int32_t put_flags, int rexpect) {
|
||||||
DBT key, val;
|
DBT key, val;
|
||||||
|
// Turn off error messages if we expect there to be an error.
|
||||||
|
if (rexpect!=0) {
|
||||||
|
db->set_errfile(db, 0);
|
||||||
|
} else {
|
||||||
|
db->set_errfile(db, stderr);
|
||||||
|
}
|
||||||
int r = db->put(db, 0, dbt_init(&key, &k, sizeof k), dbt_init(&val, &v, sizeof v), put_flags);
|
int r = db->put(db, 0, dbt_init(&key, &k, sizeof k), dbt_init(&val, &v, sizeof v), put_flags);
|
||||||
if (r != rexpect) {
|
if (r != rexpect) {
|
||||||
#if USE_TDB
|
#if USE_TDB
|
||||||
if (r == EINVAL && put_flags == DB_NODUPDATA) {
|
if (r == EINVAL && put_flags == DB_NODUPDATA) {
|
||||||
printf("%s:%d:WARNING:tokdub does not support DB_NODUPDATA yet\n", __FILE__, __LINE__);
|
static int did_warn = 0;
|
||||||
|
if (!did_warn) {
|
||||||
|
printf("%s:%d:WARNING:tokdub does not support DB_NODUPDATA yet\n", __FILE__, __LINE__);
|
||||||
|
did_warn=1;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,6 +40,19 @@ void db_put(DB *db, int k, int v, u_int32_t put_flags, int rexpect) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int maybe_do_db_dup_warning (int r, int dup_mode) {
|
||||||
|
#if USE_TDB
|
||||||
|
static int did_warn=0;
|
||||||
|
if (r != 0 && dup_mode == DB_DUP) {
|
||||||
|
if (did_warn==0) {
|
||||||
|
did_warn=1;
|
||||||
|
printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
void test_dup_key(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdupdup) {
|
void test_dup_key(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdupdup) {
|
||||||
if (verbose) printf("test_dup_key: %d, %u, %d, %d\n", dup_mode, put_flags, rexpect, rexpectdupdup);
|
if (verbose) printf("test_dup_key: %d, %u, %d, %d\n", dup_mode, put_flags, rexpect, rexpectdupdup);
|
||||||
|
|
||||||
|
@ -45,13 +68,10 @@ void test_dup_key(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdup
|
||||||
r = db_create(&db, null_env, 0); assert(r == 0);
|
r = db_create(&db, null_env, 0); assert(r == 0);
|
||||||
db->set_errfile(db, stderr);
|
db->set_errfile(db, stderr);
|
||||||
r = db->set_flags(db, dup_mode);
|
r = db->set_flags(db, dup_mode);
|
||||||
#if USE_TDB
|
if (maybe_do_db_dup_warning(r, dup_mode)) {
|
||||||
if (r != 0 && dup_mode == DB_DUP) {
|
|
||||||
printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
|
|
||||||
r = db->close(db, 0); assert(r == 0);
|
r = db->close(db, 0); assert(r == 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
r = db->set_pagesize(db, 4096); assert(r == 0);
|
r = db->set_pagesize(db, 4096); assert(r == 0);
|
||||||
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
|
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
|
||||||
|
@ -96,13 +116,10 @@ void test_dup_dup(int dup_mode, u_int32_t put_flags, int rexpect, int rexpectdup
|
||||||
r = db_create(&db, null_env, 0); assert(r == 0);
|
r = db_create(&db, null_env, 0); assert(r == 0);
|
||||||
db->set_errfile(db, stderr);
|
db->set_errfile(db, stderr);
|
||||||
r = db->set_flags(db, dup_mode);
|
r = db->set_flags(db, dup_mode);
|
||||||
#if USE_TDB
|
if (maybe_do_db_dup_warning(r, dup_mode)) {
|
||||||
if (r != 0 && dup_mode == DB_DUP) {
|
|
||||||
printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
|
|
||||||
r = db->close(db, 0); assert(r == 0);
|
r = db->close(db, 0); assert(r == 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
r = db->set_pagesize(db, 4096); assert(r == 0);
|
r = db->set_pagesize(db, 4096); assert(r == 0);
|
||||||
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
|
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
|
||||||
|
@ -147,13 +164,10 @@ void test_put_00_01_01(int dup_mode, u_int32_t put_flags) {
|
||||||
r = db_create(&db, null_env, 0); assert(r == 0);
|
r = db_create(&db, null_env, 0); assert(r == 0);
|
||||||
db->set_errfile(db, stderr);
|
db->set_errfile(db, stderr);
|
||||||
r = db->set_flags(db, dup_mode);
|
r = db->set_flags(db, dup_mode);
|
||||||
#if USE_TDB
|
if (maybe_do_db_dup_warning(r, dup_mode)) {
|
||||||
if (r != 0 && dup_mode == DB_DUP) {
|
|
||||||
printf("%s:%d:WARNING: tokudb does not support DB_DUP\n", __FILE__, __LINE__);
|
|
||||||
r = db->close(db, 0); assert(r == 0);
|
r = db->close(db, 0); assert(r == 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
assert(r == 0);
|
assert(r == 0);
|
||||||
r = db->set_pagesize(db, 4096); assert(r == 0);
|
r = db->set_pagesize(db, 4096); assert(r == 0);
|
||||||
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
|
r = db->open(db, null_txn, fname, "main", DB_BTREE, DB_CREATE, 0666); assert(r == 0);
|
||||||
|
@ -194,6 +208,11 @@ void test_put_00_01_01(int dup_mode, u_int32_t put_flags) {
|
||||||
|
|
||||||
int main(int argc, const char *argv[]) {
|
int main(int argc, const char *argv[]) {
|
||||||
|
|
||||||
|
int yes_overwrite=0;
|
||||||
|
#ifdef USE_TDB
|
||||||
|
yes_overwrite = DB_YESOVERWRITE;
|
||||||
|
#endif
|
||||||
|
|
||||||
parse_args(argc, argv);
|
parse_args(argc, argv);
|
||||||
|
|
||||||
system("rm -rf " DIR);
|
system("rm -rf " DIR);
|
||||||
|
@ -202,11 +221,8 @@ int main(int argc, const char *argv[]) {
|
||||||
test_put_00_01_01(0, 0);
|
test_put_00_01_01(0, 0);
|
||||||
test_put_00_01_01(0, DB_NOOVERWRITE);
|
test_put_00_01_01(0, DB_NOOVERWRITE);
|
||||||
|
|
||||||
test_put_00_01_01(DB_DUP | DB_DUPSORT, 0);
|
test_put_00_01_01(DB_DUP | DB_DUPSORT, yes_overwrite);
|
||||||
test_put_00_01_01(DB_DUP | DB_DUPSORT, DB_NOOVERWRITE);
|
test_put_00_01_01(DB_DUP | DB_DUPSORT, DB_NOOVERWRITE);
|
||||||
#if USE_TDB
|
|
||||||
test_put_00_01_01(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* dup key uniq data */
|
/* dup key uniq data */
|
||||||
test_dup_key(0, 0, 0, 0);
|
test_dup_key(0, 0, 0, 0);
|
||||||
|
@ -218,8 +234,8 @@ int main(int argc, const char *argv[]) {
|
||||||
test_dup_key(DB_DUP, DB_NOOVERWRITE, 0, DB_KEYEXIST);
|
test_dup_key(DB_DUP, DB_NOOVERWRITE, 0, DB_KEYEXIST);
|
||||||
|
|
||||||
#if USE_TDB
|
#if USE_TDB
|
||||||
// test_dup_key(DB_DUP | DB_DUPSORT, 0, EINVAL, EINVAL);
|
test_dup_key(DB_DUP | DB_DUPSORT, 0, EINVAL, EINVAL);
|
||||||
test_dup_key(DB_DUP | DB_DUPSORT, 0, 0, 0);
|
//test_dup_key(DB_DUP | DB_DUPSORT, 0, 0, 0);
|
||||||
test_dup_key(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE, 0, 0);
|
test_dup_key(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE, 0, 0);
|
||||||
#else
|
#else
|
||||||
test_dup_key(DB_DUP | DB_DUPSORT, 0, 0, 0);
|
test_dup_key(DB_DUP | DB_DUPSORT, 0, 0, 0);
|
||||||
|
@ -238,7 +254,7 @@ int main(int argc, const char *argv[]) {
|
||||||
|
|
||||||
#if USE_TDB
|
#if USE_TDB
|
||||||
// test_dup_dup(DB_DUP | DB_DUPSORT, 0, EINVAL, EINVAL);
|
// test_dup_dup(DB_DUP | DB_DUPSORT, 0, EINVAL, EINVAL);
|
||||||
test_dup_dup(DB_DUP | DB_DUPSORT, 0, 0, DB_KEYEXIST);
|
//test_dup_dup(DB_DUP | DB_DUPSORT, 0, 0, DB_KEYEXIST);
|
||||||
test_dup_dup(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE, 0, 0);
|
test_dup_dup(DB_DUP | DB_DUPSORT, DB_YESOVERWRITE, 0, 0);
|
||||||
#else
|
#else
|
||||||
test_dup_dup(DB_DUP | DB_DUPSORT, 0 , 0, DB_KEYEXIST);
|
test_dup_dup(DB_DUP | DB_DUPSORT, 0 , 0, DB_KEYEXIST);
|
||||||
|
|
Loading…
Add table
Reference in a new issue