int tdb1_transaction_recover(struct tdb_context *tdb);
int tdb1_transaction_cancel(struct tdb_context *tdb);
+/* tdb1_tdb.c: */
+int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
+
/* tdb.c: */
enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
enum TDB_ERROR ecode,
struct tdb_used_record rec;
enum TDB_ERROR ecode;
+ if (tdb->flags & TDB_VERSION1) {
+ if (tdb1_store(tdb, key, dbuf, flag) == -1)
+ return tdb->last_error;
+ return TDB_SUCCESS;
+ }
+
off = find_and_lock(tdb, key, F_WRLCK, &h, &rec, NULL);
if (TDB_OFF_IS_ERR(off)) {
return tdb->last_error = off;
int tdb1_delete(struct tdb_context *tdb, TDB_DATA key);
-int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
-
int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf);
TDB_DATA tdb1_firstkey(struct tdb_context *tdb);
*/
#include "tdb1_private.h"
+#include <assert.h>
TDB_DATA tdb1_null;
uint32_t hash;
int ret;
+ assert(tdb->flags & TDB_VERSION1);
+
if ((tdb->flags & TDB_RDONLY) || tdb->tdb1.traverse_read) {
tdb->last_error = TDB_ERR_RDONLY;
return -1;
orig_data.dsize = strlen("world");
orig_data.dptr = (void *)"world";
- ok1(tdb1_store(tdb, key, orig_data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, orig_data, TDB_INSERT) == TDB_SUCCESS);
data = tdb1_fetch(tdb, key);
ok1(data.dsize == strlen("world"));
/* Transactions should work. */
ok1(tdb1_transaction_start(tdb) == 0);
- ok1(tdb1_store(tdb, key, orig_data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, orig_data, TDB_INSERT) == TDB_SUCCESS);
data = tdb1_fetch(tdb, key);
ok1(data.dsize == strlen("world"));
data.dsize = strlen("world");
data.dptr = (void *)"world";
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
ok1(tdb1_check(tdb, NULL, NULL) == 0);
tdb_close(tdb);
for (key.dsize = 1; key.dsize <= 5; key.dsize++) {
ksize += key.dsize;
dsize += data.dsize;
- if (tdb1_store(tdb, key, data, TDB_INSERT) != 0)
+ if (tdb_store(tdb, key, data, TDB_INSERT) != TDB_SUCCESS)
abort();
}
/* Put key for agent to fetch. */
key.dsize = strlen(KEY_STRING);
key.dptr = (void *)KEY_STRING;
- if (tdb1_store(tdb, key, key, TDB_INSERT) != 0)
+ if (tdb_store(tdb, key, key, TDB_INSERT) != TDB_SUCCESS)
return false;
/* This is the key we insert in transaction. */
if (tdb1_transaction_start(tdb) != 0)
return false;
- if (tdb1_store(tdb, key, key, TDB_INSERT) != 0)
+ if (tdb_store(tdb, key, key, TDB_INSERT) != TDB_SUCCESS)
return false;
if (tdb1_transaction_commit(tdb) != 0)
hsize.base.next = &tap_log_attr;
hsize.tdb1_hashsize.hsize = 1024;
- plan_tests(13);
+ plan_tests(11);
tdb = tdb_open("run-endian.tdb1",
TDB_VERSION1|TDB_CONVERT,
O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
data.dsize = strlen("world");
data.dptr = (void *)"world";
- ok1(tdb1_store(tdb, key, data, TDB_MODIFY) < 0);
- ok1(tdb_error(tdb) == TDB_ERR_NOEXIST);
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) < 0);
- ok1(tdb_error(tdb) == TDB_ERR_EXISTS);
- ok1(tdb1_store(tdb, key, data, TDB_MODIFY) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_ERR_NOEXIST);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_ERR_EXISTS);
+ ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_SUCCESS);
data = tdb1_fetch(tdb, key);
ok1(data.dsize == strlen("world"));
ok1(log_count == 0);
d.dptr = (void *)"Hello";
d.dsize = 5;
- ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
tdb_close(tdb);
/* Should not have marked rwlocks field. */
ok1(log_count == 0);
d.dptr = (void *)"Hello";
d.dsize = 5;
- ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
tdb_close(tdb);
/* Should have marked rwlocks field. */
ok1(log_count == 0);
d.dptr = (void *)"Hello";
d.dsize = 5;
- ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
tdb_close(tdb);
/* FIXME: Should have marked rwlocks field. */
ok1(tdb1_transaction_start(tdb) == 0);
data.dptr = (void *)"world";
data.dsize = strlen("world");
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
data = tdb1_fetch(tdb, key);
ok1(data.dsize == strlen("world"));
ok1(memcmp(data.dptr, "world", strlen("world")) == 0);
data.dptr = (void *)"world";
data.dsize = strlen("world");
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
tdb1_traverse(tdb, traverse1, NULL);
tdb1_traverse_read(tdb, traverse1, NULL);
tdb_close(tdb);
data.dsize = strlen("world");
data.dptr = (void *)"world";
- if (tdb1_store(tdb, key, data, 0) != 0)
+ if (tdb_store(tdb, key, data, 0) != TDB_SUCCESS)
return false;
}
return true;
data.dptr = (void *)"world";
data.dsize = strlen("world");
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
ok1(tdb1_transaction_commit(tdb) == 0);
ok(!errors, "We had %u open errors", errors);
hsize.base.next = &tap_log_attr;
hsize.tdb1_hashsize.hsize = 1024;
- plan_tests(11);
+ plan_tests(10);
tdb = tdb_open("run-readonly-check.tdb1",
TDB_VERSION1,
O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
data.dsize = strlen("world");
data.dptr = (void *)"world";
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
ok1(tdb1_check(tdb, NULL, NULL) == 0);
/* We are also allowed to do a check inside a transaction. */
TDB_DEFAULT, O_RDONLY, 0, &tap_log_attr);
ok1(tdb);
- ok1(tdb1_store(tdb, key, data, TDB_MODIFY) == -1);
- ok1(tdb_error(tdb) == TDB_ERR_RDONLY);
+ ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_ERR_RDONLY);
ok1(tdb1_check(tdb, NULL, NULL) == 0);
ok1(tdb_close(tdb) == 0);
for (j = 0; j < 500; j++) {
/* Make sure padding varies to we get some graphs! */
data.dsize = j % (sizeof(j) + 1);
- if (tdb1_store(tdb, key, data, TDB_REPLACE) != 0)
+ if (tdb_store(tdb, key, data, TDB_REPLACE)
+ != TDB_SUCCESS) {
fail("Storing in tdb");
+ }
}
summary = tdb1_summary(tdb);
data.dptr = (void *)"world";
data.dsize = strlen("world");
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
ok1(external_agent_operation1(agent, OPEN, tdb->name) == SUCCESS);
ok1(log_count == 0);
d.dptr = (void *)"Hello";
d.dsize = 5;
- ok1(tdb1_store(tdb, d, d, TDB_INSERT) == 0);
+ ok1(tdb_store(tdb, d, d, TDB_INSERT) == TDB_SUCCESS);
tdb_close(tdb);
/* Fail to open with different hash. */
hsize.base.next = &tap_log_attr;
hsize.tdb1_hashsize.hsize = 1024;
- plan_tests(10);
+ plan_tests(8);
tdb = tdb_open("run.tdb1", TDB_VERSION1,
O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize);
data.dsize = strlen("world");
data.dptr = (void *)"world";
- ok1(tdb1_store(tdb, key, data, TDB_MODIFY) < 0);
- ok1(tdb_error(tdb) == TDB_ERR_NOEXIST);
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) == 0);
- ok1(tdb1_store(tdb, key, data, TDB_INSERT) < 0);
- ok1(tdb_error(tdb) == TDB_ERR_EXISTS);
- ok1(tdb1_store(tdb, key, data, TDB_MODIFY) == 0);
+ ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_ERR_NOEXIST);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_SUCCESS);
+ ok1(tdb_store(tdb, key, data, TDB_INSERT) == TDB_ERR_EXISTS);
+ ok1(tdb_store(tdb, key, data, TDB_MODIFY) == TDB_SUCCESS);
data = tdb1_fetch(tdb, key);
ok1(data.dsize == strlen("world"));
free(data.dptr);
break;
case STORE:
- ret = tdb1_store(tdb, k, k, 0) == 0 ? SUCCESS : OTHER_FAILURE;
+ if (tdb_store(tdb, k, k, 0) == TDB_SUCCESS)
+ ret = SUCCESS;
+ else
+ ret = OTHER_FAILURE;
break;
case TRANSACTION_COMMIT:
ret = tdb1_transaction_commit(tdb)==0 ? SUCCESS : OTHER_FAILURE;