mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
Fixes #2276. closes[t:2276]
git-svn-id: file:///svn/toku/tokudb@16801 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
e7136edbd1
commit
798429c3cb
15 changed files with 124 additions and 81 deletions
|
@ -15,7 +15,11 @@ BDB = 4_6
|
||||||
BDBDIR = ../../../berkeleydb
|
BDBDIR = ../../../berkeleydb
|
||||||
MYSQL_H = -I$(BDBDIR)/db-4.1.25/build_unix/
|
MYSQL_H = -I$(BDBDIR)/db-4.1.25/build_unix/
|
||||||
OPTFLAGS = -O2
|
OPTFLAGS = -O2
|
||||||
CFLAGS = -Wall -W -Werror -g $(OPTFLAGS)
|
ifeq ($(GCCVERSION),4.4.2)
|
||||||
|
GCC_VERSION_SPECIFIC_WARNINGS = -Wno-strict-aliasing -Wno-deprecated
|
||||||
|
endif
|
||||||
|
CFLAGS = $(GCC_VERSION_SPECIFIC_WARNINGS) -Wall -W -Werror -g $(OPTFLAGS)
|
||||||
|
CPPFLAGS = -I. -I../toku_include
|
||||||
|
|
||||||
runs: runs_mysql runs_installed
|
runs: runs_mysql runs_installed
|
||||||
samples: sample_offsets_4_6 sample_offsets_4_5 sample_offsets_4_4 sample_offsets_4_3 sample_offsets_4_1
|
samples: sample_offsets_4_6 sample_offsets_4_5 sample_offsets_4_4 sample_offsets_4_3 sample_offsets_4_1
|
||||||
|
@ -25,60 +29,60 @@ runs_mysql: ./sample_offsets_mysql
|
||||||
./sample_offsets_mysql
|
./sample_offsets_mysql
|
||||||
runs_installed: sample_offsets
|
runs_installed: sample_offsets
|
||||||
./sample_offsets
|
./sample_offsets
|
||||||
sample_offsets_mysql: CPPFLAGS=$(MYSQL_H)
|
sample_offsets_mysql: CPPFLAGS+=$(MYSQL_H)
|
||||||
sample_offsets_mysql: sample_offsets.c
|
sample_offsets_mysql: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@
|
||||||
|
|
||||||
make_db_h_4_1.o: make_db_h.c sample_offsets_32_4_1.h sample_offsets_64_4_1.h
|
make_db_h_4_1.o: make_db_h.c sample_offsets_32_4_1.h sample_offsets_64_4_1.h
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.1.25/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=1 -DTDB_NATIVE=0
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.1.25/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=1 -DTDB_NATIVE=0
|
||||||
db.h_4_1: make_db_h_4_1
|
db.h_4_1: make_db_h_4_1
|
||||||
./make_db_h_4_1 > $@
|
./make_db_h_4_1 > $@
|
||||||
sample_offsets_4_1: sample_offsets.c
|
sample_offsets_4_1: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.1.25/build_unix $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.1.25/build_unix $< -o $@
|
||||||
./sample_offsets_4_1
|
./sample_offsets_4_1
|
||||||
|
|
||||||
make_db_h_4_3.o: make_db_h.c sample_offsets_32_4_3.h sample_offsets_64_4_3.h
|
make_db_h_4_3.o: make_db_h.c sample_offsets_32_4_3.h sample_offsets_64_4_3.h
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.3.29/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=3 -DTDB_NATIVE=0
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.3.29/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=3 -DTDB_NATIVE=0
|
||||||
db.h_4_3: make_db_h_4_3
|
db.h_4_3: make_db_h_4_3
|
||||||
./make_db_h_4_3 > $@
|
./make_db_h_4_3 > $@
|
||||||
sample_offsets_4_3: sample_offsets.c
|
sample_offsets_4_3: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.3.29/build_unix $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.3.29/build_unix $< -o $@
|
||||||
./sample_offsets_4_3
|
./sample_offsets_4_3
|
||||||
|
|
||||||
make_db_h_4_4.o: make_db_h.c sample_offsets_32_4_4.h sample_offsets_64_4_4.h
|
make_db_h_4_4.o: make_db_h.c sample_offsets_32_4_4.h sample_offsets_64_4_4.h
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.4.20/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=4 -DTDB_NATIVE=0
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.4.20/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=4 -DTDB_NATIVE=0
|
||||||
db.h_4_4: make_db_h_4_4
|
db.h_4_4: make_db_h_4_4
|
||||||
./make_db_h_4_4 > $@
|
./make_db_h_4_4 > $@
|
||||||
sample_offsets_4_4: sample_offsets.c
|
sample_offsets_4_4: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.4.20/build_unix $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.4.20/build_unix $< -o $@
|
||||||
./sample_offsets_4_4
|
./sample_offsets_4_4
|
||||||
|
|
||||||
make_db_h_4_5.o: make_db_h.c sample_offsets_32_4_5.h sample_offsets_64_4_5.h
|
make_db_h_4_5.o: make_db_h.c sample_offsets_32_4_5.h sample_offsets_64_4_5.h
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.5.20/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=5 -DTDB_NATIVE=0
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.5.20/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=5 -DTDB_NATIVE=0
|
||||||
db.h_4_5: make_db_h_4_5
|
db.h_4_5: make_db_h_4_5
|
||||||
./make_db_h_4_5 > $@
|
./make_db_h_4_5 > $@
|
||||||
sample_offsets_4_5: sample_offsets.c
|
sample_offsets_4_5: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.5.20/build_unix $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.5.20/build_unix $< -o $@
|
||||||
./sample_offsets_4_5
|
./sample_offsets_4_5
|
||||||
|
|
||||||
make_db_h_4_6.o: make_db_h.c sample_offsets_32_4_6.h sample_offsets_64_4_6.h
|
make_db_h_4_6.o: make_db_h.c sample_offsets_32_4_6.h sample_offsets_64_4_6.h
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.6.19/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=6 -DTDB_NATIVE=0
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.6.19/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=6 -DTDB_NATIVE=0
|
||||||
db.h_4_6: make_db_h_4_6
|
db.h_4_6: make_db_h_4_6
|
||||||
./make_db_h_4_6 > $@
|
./make_db_h_4_6 > $@
|
||||||
sample_offsets_4_6: sample_offsets.c
|
sample_offsets_4_6: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.6.19/build_unix $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.6.19/build_unix $< -o $@
|
||||||
./sample_offsets_4_6
|
./sample_offsets_4_6
|
||||||
|
|
||||||
make_tdb_h.o: make_db_h.c
|
make_tdb_h.o: make_db_h.c
|
||||||
$(CC) $(CFLAGS) -I. -I$(BDBDIR)/db-4.6.19/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=6 -DTDB_NATIVE=1
|
$(CC) $(CFLAGS) $(CPPFLAGS) -I$(BDBDIR)/db-4.6.19/build_unix $< -c -o $@ -DUSE_MAJOR=4 -DUSE_MINOR=6 -DTDB_NATIVE=1
|
||||||
tdb.h: make_tdb_h
|
tdb.h: make_tdb_h
|
||||||
./make_tdb_h > $@
|
./make_tdb_h > $@
|
||||||
|
|
||||||
sample_offsets:
|
sample_offsets:
|
||||||
sample_offsets_local: ./db.h
|
sample_offsets_local: ./db.h
|
||||||
sample_offsets_local: sample_offsets.c
|
sample_offsets_local: sample_offsets.c
|
||||||
$(CC) $(CFLAGS) -I. -DLOCAL $< -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) -DLOCAL $< -o $@
|
||||||
|
|
||||||
hfiles: db.h_4_1 db.h_4_3 db.h_4_4 db.h_4_5 db.h_4_6 tdb.h
|
hfiles: db.h_4_1 db.h_4_3 db.h_4_4 db.h_4_5 db.h_4_6 tdb.h
|
||||||
|
|
||||||
check32: sample_offsets_local
|
check32: sample_offsets_local
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -319,11 +322,9 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
||||||
struct __toku_db_txn_internal *i;
|
|
||||||
#define db_txn_struct_i(x) ((x)->i)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void* __toku_dummy0[6];
|
void* __toku_dummy0[7];
|
||||||
char __toku_dummy1[24];
|
char __toku_dummy1[24];
|
||||||
void *api_internal; /* 32-bit offset=68 size=4, 64=bit offset=112 size=8 */
|
void *api_internal; /* 32-bit offset=68 size=4, 64=bit offset=112 size=8 */
|
||||||
void* __toku_dummy2[1];
|
void* __toku_dummy2[1];
|
||||||
|
@ -332,6 +333,8 @@ struct __toku_db_txn {
|
||||||
void* __toku_dummy3[1];
|
void* __toku_dummy3[1];
|
||||||
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=88 size=4, 64=bit offset=152 size=8 */
|
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=88 size=4, 64=bit offset=152 size=8 */
|
||||||
void* __toku_dummy4[3]; /* Padding at the end */
|
void* __toku_dummy4[3]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
void* __toku_dummy0[1];
|
void* __toku_dummy0[1];
|
||||||
|
@ -344,8 +347,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
struct __toku_dbc_internal *i;
|
|
||||||
#define dbc_struct_i(x) ((x)->i)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -363,7 +364,7 @@ struct __toku_dbc {
|
||||||
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
void* __toku_dummy0[2];
|
void* __toku_dummy0[3];
|
||||||
char __toku_dummy1[104];
|
char __toku_dummy1[104];
|
||||||
int (*c_close) (DBC *); /* 32-bit offset=188 size=4, 64=bit offset=272 size=8 */
|
int (*c_close) (DBC *); /* 32-bit offset=188 size=4, 64=bit offset=272 size=8 */
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=192 size=4, 64=bit offset=280 size=8 */
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=192 size=4, 64=bit offset=280 size=8 */
|
||||||
|
@ -371,6 +372,8 @@ struct __toku_dbc {
|
||||||
void* __toku_dummy2[1];
|
void* __toku_dummy2[1];
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
|
||||||
void* __toku_dummy3[11]; /* Padding at the end */
|
void* __toku_dummy3[11]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -335,11 +338,9 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
||||||
struct __toku_db_txn_internal *i;
|
|
||||||
#define db_txn_struct_i(x) ((x)->i)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void* __toku_dummy0[11];
|
void* __toku_dummy0[12];
|
||||||
char __toku_dummy1[24];
|
char __toku_dummy1[24];
|
||||||
void *api_internal; /* 32-bit offset=88 size=4, 64=bit offset=152 size=8 */
|
void *api_internal; /* 32-bit offset=88 size=4, 64=bit offset=152 size=8 */
|
||||||
void* __toku_dummy2[2];
|
void* __toku_dummy2[2];
|
||||||
|
@ -348,6 +349,8 @@ struct __toku_db_txn {
|
||||||
void* __toku_dummy3[1];
|
void* __toku_dummy3[1];
|
||||||
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=112 size=4, 64=bit offset=200 size=8 */
|
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=112 size=4, 64=bit offset=200 size=8 */
|
||||||
void* __toku_dummy4[4]; /* Padding at the end */
|
void* __toku_dummy4[4]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
void* __toku_dummy0[1];
|
void* __toku_dummy0[1];
|
||||||
|
@ -360,8 +363,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
struct __toku_dbc_internal *i;
|
|
||||||
#define dbc_struct_i(x) ((x)->i)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -379,13 +380,16 @@ struct __toku_dbc {
|
||||||
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
char __toku_dummy0[112];
|
void* __toku_dummy0[1];
|
||||||
|
char __toku_dummy1[112];
|
||||||
int (*c_close) (DBC *); /* 32-bit offset=188 size=4, 64=bit offset=264 size=8 */
|
int (*c_close) (DBC *); /* 32-bit offset=188 size=4, 64=bit offset=264 size=8 */
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=192 size=4, 64=bit offset=272 size=8 */
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=192 size=4, 64=bit offset=272 size=8 */
|
||||||
int (*c_del) (DBC *, u_int32_t); /* 32-bit offset=196 size=4, 64=bit offset=280 size=8 */
|
int (*c_del) (DBC *, u_int32_t); /* 32-bit offset=196 size=4, 64=bit offset=280 size=8 */
|
||||||
void* __toku_dummy1[1];
|
void* __toku_dummy2[1];
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=296 size=8 */
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=296 size=8 */
|
||||||
void* __toku_dummy2[10]; /* Padding at the end */
|
void* __toku_dummy3[10]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -342,11 +345,9 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
||||||
struct __toku_db_txn_internal *i;
|
|
||||||
#define db_txn_struct_i(x) ((x)->i)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void* __toku_dummy0[14];
|
void* __toku_dummy0[15];
|
||||||
char __toku_dummy1[8];
|
char __toku_dummy1[8];
|
||||||
void *api_internal; /* 32-bit offset=84 size=4, 64=bit offset=160 size=8 */
|
void *api_internal; /* 32-bit offset=84 size=4, 64=bit offset=160 size=8 */
|
||||||
void* __toku_dummy2[2];
|
void* __toku_dummy2[2];
|
||||||
|
@ -355,6 +356,8 @@ struct __toku_db_txn {
|
||||||
void* __toku_dummy3[2];
|
void* __toku_dummy3[2];
|
||||||
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=112 size=4, 64=bit offset=216 size=8 */
|
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=112 size=4, 64=bit offset=216 size=8 */
|
||||||
void* __toku_dummy4[5]; /* Padding at the end */
|
void* __toku_dummy4[5]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
void* __toku_dummy0[1];
|
void* __toku_dummy0[1];
|
||||||
|
@ -367,8 +370,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
struct __toku_dbc_internal *i;
|
|
||||||
#define dbc_struct_i(x) ((x)->i)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -386,7 +387,7 @@ struct __toku_dbc {
|
||||||
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
void* __toku_dummy0[2];
|
void* __toku_dummy0[3];
|
||||||
char __toku_dummy1[104];
|
char __toku_dummy1[104];
|
||||||
int (*c_close) (DBC *); /* 32-bit offset=188 size=4, 64=bit offset=272 size=8 */
|
int (*c_close) (DBC *); /* 32-bit offset=188 size=4, 64=bit offset=272 size=8 */
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=192 size=4, 64=bit offset=280 size=8 */
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=192 size=4, 64=bit offset=280 size=8 */
|
||||||
|
@ -394,6 +395,8 @@ struct __toku_dbc {
|
||||||
void* __toku_dummy2[1];
|
void* __toku_dummy2[1];
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
|
||||||
void* __toku_dummy3[10]; /* Padding at the end */
|
void* __toku_dummy3[10]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -343,11 +346,9 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
||||||
struct __toku_db_txn_internal *i;
|
|
||||||
#define db_txn_struct_i(x) ((x)->i)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void* __toku_dummy0[14];
|
void* __toku_dummy0[15];
|
||||||
char __toku_dummy1[8];
|
char __toku_dummy1[8];
|
||||||
void *api_internal; /* 32-bit offset=84 size=4, 64=bit offset=160 size=8 */
|
void *api_internal; /* 32-bit offset=84 size=4, 64=bit offset=160 size=8 */
|
||||||
void* __toku_dummy2[2];
|
void* __toku_dummy2[2];
|
||||||
|
@ -356,6 +357,8 @@ struct __toku_db_txn {
|
||||||
void* __toku_dummy3[2];
|
void* __toku_dummy3[2];
|
||||||
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=112 size=4, 64=bit offset=216 size=8 */
|
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=112 size=4, 64=bit offset=216 size=8 */
|
||||||
void* __toku_dummy4[5]; /* Padding at the end */
|
void* __toku_dummy4[5]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
void* __toku_dummy0[1];
|
void* __toku_dummy0[1];
|
||||||
|
@ -368,8 +371,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
struct __toku_dbc_internal *i;
|
|
||||||
#define dbc_struct_i(x) ((x)->i)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -387,7 +388,7 @@ struct __toku_dbc {
|
||||||
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
void* __toku_dummy0[6];
|
void* __toku_dummy0[7];
|
||||||
char __toku_dummy1[104];
|
char __toku_dummy1[104];
|
||||||
int (*c_close) (DBC *); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
|
int (*c_close) (DBC *); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=208 size=4, 64=bit offset=312 size=8 */
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=208 size=4, 64=bit offset=312 size=8 */
|
||||||
|
@ -395,6 +396,8 @@ struct __toku_dbc {
|
||||||
void* __toku_dummy2[1];
|
void* __toku_dummy2[1];
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=220 size=4, 64=bit offset=336 size=8 */
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=220 size=4, 64=bit offset=336 size=8 */
|
||||||
void* __toku_dummy3[10]; /* Padding at the end */
|
void* __toku_dummy3[10]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -347,11 +350,9 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
DB_TXN *parent; /* 32-bit offset=4 size=4, 64=bit offset=8 size=8 */
|
||||||
struct __toku_db_txn_internal *i;
|
|
||||||
#define db_txn_struct_i(x) ((x)->i)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void* __toku_dummy0[15];
|
void* __toku_dummy0[16];
|
||||||
char __toku_dummy1[8];
|
char __toku_dummy1[8];
|
||||||
void *api_internal; /* 32-bit offset=88 size=4, 64=bit offset=168 size=8 */
|
void *api_internal; /* 32-bit offset=88 size=4, 64=bit offset=168 size=8 */
|
||||||
void* __toku_dummy2[2];
|
void* __toku_dummy2[2];
|
||||||
|
@ -360,6 +361,8 @@ struct __toku_db_txn {
|
||||||
void* __toku_dummy3[2];
|
void* __toku_dummy3[2];
|
||||||
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=116 size=4, 64=bit offset=224 size=8 */
|
u_int32_t (*id) (DB_TXN *); /* 32-bit offset=116 size=4, 64=bit offset=224 size=8 */
|
||||||
void* __toku_dummy4[5]; /* Padding at the end */
|
void* __toku_dummy4[5]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
void* __toku_dummy0[2];
|
void* __toku_dummy0[2];
|
||||||
|
@ -373,8 +376,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
DB *dbp; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
|
||||||
struct __toku_dbc_internal *i;
|
|
||||||
#define dbc_struct_i(x) ((x)->i)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -392,7 +393,7 @@ struct __toku_dbc {
|
||||||
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *);
|
||||||
void* __toku_dummy0[16];
|
void* __toku_dummy0[17];
|
||||||
char __toku_dummy1[104];
|
char __toku_dummy1[104];
|
||||||
int (*c_close) (DBC *); /* 32-bit offset=244 size=4, 64=bit offset=384 size=8 */
|
int (*c_close) (DBC *); /* 32-bit offset=244 size=4, 64=bit offset=384 size=8 */
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=248 size=4, 64=bit offset=392 size=8 */
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t); /* 32-bit offset=248 size=4, 64=bit offset=392 size=8 */
|
||||||
|
@ -400,6 +401,8 @@ struct __toku_dbc {
|
||||||
void* __toku_dummy2[1];
|
void* __toku_dummy2[1];
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=260 size=4, 64=bit offset=416 size=8 */
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=260 size=4, 64=bit offset=416 size=8 */
|
||||||
void* __toku_dummy3[10]; /* Padding at the end */
|
void* __toku_dummy3[10]; /* Padding at the end */
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -197,7 +197,9 @@ struct fieldinfo {
|
||||||
#error
|
#error
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void print_struct (const char *structname, int need_internal, struct fieldinfo *fields32, struct fieldinfo *fields64, unsigned int N, const char *extra_decls[]) {
|
enum need_internal_type { NO_INTERNAL=0, INTERNAL_NAMED=1, INTERNAL_AT_END=2};
|
||||||
|
|
||||||
|
void print_struct (const char *structname, enum need_internal_type need_internal, struct fieldinfo *fields32, struct fieldinfo *fields64, unsigned int N, const char *extra_decls[]) {
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int current_32 = 0;
|
unsigned int current_32 = 0;
|
||||||
unsigned int current_64 = 0;
|
unsigned int current_64 = 0;
|
||||||
|
@ -205,6 +207,7 @@ void print_struct (const char *structname, int need_internal, struct fieldinfo *
|
||||||
int did_toku_internal=0;
|
int did_toku_internal=0;
|
||||||
// int total32 = fields32[N-1].size;
|
// int total32 = fields32[N-1].size;
|
||||||
// int total64 = fields32[N-1].size;
|
// int total64 = fields32[N-1].size;
|
||||||
|
assert(need_internal==NO_INTERNAL || need_internal==INTERNAL_NAMED || need_internal==INTERNAL_AT_END);
|
||||||
printf("struct __toku_%s {\n", structname);
|
printf("struct __toku_%s {\n", structname);
|
||||||
for (i=0; i<N-1; i++) {
|
for (i=0; i<N-1; i++) {
|
||||||
unsigned int this_32 = fields32[i].off;
|
unsigned int this_32 = fields32[i].off;
|
||||||
|
@ -217,7 +220,7 @@ void print_struct (const char *structname, int need_internal, struct fieldinfo *
|
||||||
if (diff32!=diff64) {
|
if (diff32!=diff64) {
|
||||||
unsigned int diff = diff64-diff32;
|
unsigned int diff = diff64-diff32;
|
||||||
unsigned int n_dummys = diff/4;
|
unsigned int n_dummys = diff/4;
|
||||||
if (need_internal && !did_toku_internal) {
|
if (need_internal==INTERNAL_NAMED && !did_toku_internal) {
|
||||||
if (TDB_NATIVE &&
|
if (TDB_NATIVE &&
|
||||||
(strcmp(structname, "dbc")==0 ||
|
(strcmp(structname, "dbc")==0 ||
|
||||||
strcmp(structname, "db_txn")==0)) {
|
strcmp(structname, "db_txn")==0)) {
|
||||||
|
@ -295,6 +298,11 @@ void print_struct (const char *structname, int need_internal, struct fieldinfo *
|
||||||
printf(" /* %d more bytes of alignment in the 64-bit case. */\n", diff64);
|
printf(" /* %d more bytes of alignment in the 64-bit case. */\n", diff64);
|
||||||
assert(diff64<8); /* there could be a few left from alignment. */
|
assert(diff64<8); /* there could be a few left from alignment. */
|
||||||
}
|
}
|
||||||
|
if (need_internal==INTERNAL_AT_END) {
|
||||||
|
printf(" char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));\n");
|
||||||
|
printf("#define %s_struct_i(x) ((struct __toku_%s_internal *)(&(x)->iic))\n", structname, structname);
|
||||||
|
did_toku_internal = 1;
|
||||||
|
}
|
||||||
printf("};\n");
|
printf("};\n");
|
||||||
assert(did_toku_internal || !need_internal);
|
assert(did_toku_internal || !need_internal);
|
||||||
}
|
}
|
||||||
|
@ -354,6 +362,8 @@ int main (int argc __attribute__((__unused__)), char *argv[] __attribute__((__un
|
||||||
|
|
||||||
printf("#include <tdb-internal.h>\n");
|
printf("#include <tdb-internal.h>\n");
|
||||||
|
|
||||||
|
printf("#ifndef __BIGGEST_ALIGNMENT__\n #define __BIGGEST_ALIGNMENT__ 16\n#endif\n");
|
||||||
|
|
||||||
//stat64
|
//stat64
|
||||||
printf("typedef struct __toku_db_btree_stat64 {\n");
|
printf("typedef struct __toku_db_btree_stat64 {\n");
|
||||||
printf(" u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */\n");
|
printf(" u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */\n");
|
||||||
|
@ -486,7 +496,7 @@ int main (int argc __attribute__((__unused__)), char *argv[] __attribute__((__un
|
||||||
"struct { void *next, *prev; } open_txns",
|
"struct { void *next, *prev; } open_txns",
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
print_struct("db_txn", 1, db_txn_fields32, db_txn_fields64, sizeof(db_txn_fields32)/sizeof(db_txn_fields32[0]), extra);
|
print_struct("db_txn", INTERNAL_AT_END, db_txn_fields32, db_txn_fields64, sizeof(db_txn_fields32)/sizeof(db_txn_fields32[0]), extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(sizeof(db_txn_stat_fields32)==sizeof(db_txn_stat_fields64));
|
assert(sizeof(db_txn_stat_fields32)==sizeof(db_txn_stat_fields64));
|
||||||
|
@ -515,7 +525,7 @@ int main (int argc __attribute__((__unused__)), char *argv[] __attribute__((__un
|
||||||
"int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *)",
|
"int (*c_getf_get_both_range_reverse)(DBC *, u_int32_t, DBT *, DBT *, YDB_CALLBACK_FUNCTION, void *)",
|
||||||
NULL};
|
NULL};
|
||||||
assert(sizeof(dbc_fields32)==sizeof(dbc_fields64));
|
assert(sizeof(dbc_fields32)==sizeof(dbc_fields64));
|
||||||
print_struct("dbc", 1, dbc_fields32, dbc_fields64, sizeof(dbc_fields32)/sizeof(dbc_fields32[0]), extra);
|
print_struct("dbc", INTERNAL_AT_END, dbc_fields32, dbc_fields64, sizeof(dbc_fields32)/sizeof(dbc_fields32[0]), extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("#ifdef _TOKUDB_WRAP_H\n#define txn_begin txn_begin_tokudb\n#endif\n");
|
printf("#ifdef _TOKUDB_WRAP_H\n#define txn_begin txn_begin_tokudb\n#endif\n");
|
||||||
|
|
|
@ -11,6 +11,8 @@ struct fieldinfo db_env_fields64[] = {
|
||||||
{"void *app_private", 216, 8},
|
{"void *app_private", 216, 8},
|
||||||
{"void *api1_internal", 224, 8},
|
{"void *api1_internal", 224, 8},
|
||||||
{"int (*close) (DB_ENV *, u_int32_t)", 408, 8},
|
{"int (*close) (DB_ENV *, u_int32_t)", 408, 8},
|
||||||
|
{"int (*dbremove) (DB_ENV *, DB_TXN *, const char *, const char *, u_int32_t)", 416, 8},
|
||||||
|
{"int (*dbrename) (DB_ENV *, DB_TXN *, const char *, const char *, const char *, u_int32_t)", 424, 8},
|
||||||
{"void (*err) (const DB_ENV *, int, const char *, ...)", 432, 8},
|
{"void (*err) (const DB_ENV *, int, const char *, ...)", 432, 8},
|
||||||
{"int (*get_cachesize) (DB_ENV *, u_int32_t *, u_int32_t *, int *)", 472, 8},
|
{"int (*get_cachesize) (DB_ENV *, u_int32_t *, u_int32_t *, int *)", 472, 8},
|
||||||
{"int (*get_flags) (DB_ENV *, u_int32_t *)", 520, 8},
|
{"int (*get_flags) (DB_ENV *, u_int32_t *)", 520, 8},
|
||||||
|
|
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -293,14 +296,14 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/;
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/;
|
||||||
DB_TXN *parent;
|
DB_TXN *parent;
|
||||||
struct __toku_db_txn_internal ii;
|
|
||||||
#define db_txn_struct_i(x) (&(x)->ii)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void *api_internal;
|
void *api_internal;
|
||||||
int (*abort) (DB_TXN *);
|
int (*abort) (DB_TXN *);
|
||||||
int (*commit) (DB_TXN*, u_int32_t);
|
int (*commit) (DB_TXN*, u_int32_t);
|
||||||
u_int32_t (*id) (DB_TXN *);
|
u_int32_t (*id) (DB_TXN *);
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
u_int32_t st_nactive;
|
u_int32_t st_nactive;
|
||||||
|
@ -308,8 +311,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp;
|
DB *dbp;
|
||||||
struct __toku_dbc_internal ii;
|
|
||||||
#define dbc_struct_i(x) (&(x)->ii)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -331,6 +332,8 @@ struct __toku_dbc {
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t);
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t);
|
||||||
int (*c_del) (DBC *, u_int32_t);
|
int (*c_del) (DBC *, u_int32_t);
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t);
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t);
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -20,7 +20,7 @@ include $(TOKUROOT)toku_include/Makefile.include
|
||||||
BENCHDBS = bench.bdb/ bench.tokudb
|
BENCHDBS = bench.bdb/ bench.tokudb
|
||||||
|
|
||||||
OPTFLAGS = -O2
|
OPTFLAGS = -O2
|
||||||
CXXFLAGS = -Wall -Werror -g $(OPTFLAGS) $(GCOV_FLAGS)
|
CXXFLAGS = $(GCC_VERSION_SPECIFIC) -Wall -Werror -g $(OPTFLAGS) $(GCOV_FLAGS)
|
||||||
# CFLAGS += -pg
|
# CFLAGS += -pg
|
||||||
|
|
||||||
ifdef BDBDIR
|
ifdef BDBDIR
|
||||||
|
|
11
include/db.h
11
include/db.h
|
@ -37,6 +37,9 @@ typedef int(*YDB_CALLBACK_FUNCTION)(DBT const*, DBT const*, void*);
|
||||||
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
typedef int(*YDB_HEAVISIDE_CALLBACK_FUNCTION)(DBT const *key, DBT const *value, void *extra_f, int r_h);
|
||||||
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
typedef int(*YDB_HEAVISIDE_FUNCTION)(const DBT *key, const DBT *value, void *extra_h);
|
||||||
#include <tdb-internal.h>
|
#include <tdb-internal.h>
|
||||||
|
#ifndef __BIGGEST_ALIGNMENT__
|
||||||
|
#define __BIGGEST_ALIGNMENT__ 16
|
||||||
|
#endif
|
||||||
typedef struct __toku_db_btree_stat64 {
|
typedef struct __toku_db_btree_stat64 {
|
||||||
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
u_int64_t bt_nkeys; /* how many unique keys (guaranteed only to be an estimate, even when flattened) */
|
||||||
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
u_int64_t bt_ndata; /* how many key-value pairs (an estimate, but exact when flattened) */
|
||||||
|
@ -293,14 +296,14 @@ struct txn_stat {
|
||||||
struct __toku_db_txn {
|
struct __toku_db_txn {
|
||||||
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/;
|
DB_ENV *mgrp /*In TokuDB, mgrp is a DB_ENV not a DB_TXNMGR*/;
|
||||||
DB_TXN *parent;
|
DB_TXN *parent;
|
||||||
struct __toku_db_txn_internal ii;
|
|
||||||
#define db_txn_struct_i(x) (&(x)->ii)
|
|
||||||
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
int (*txn_stat)(DB_TXN *, struct txn_stat **);
|
||||||
struct { void *next, *prev; } open_txns;
|
struct { void *next, *prev; } open_txns;
|
||||||
void *api_internal;
|
void *api_internal;
|
||||||
int (*abort) (DB_TXN *);
|
int (*abort) (DB_TXN *);
|
||||||
int (*commit) (DB_TXN*, u_int32_t);
|
int (*commit) (DB_TXN*, u_int32_t);
|
||||||
u_int32_t (*id) (DB_TXN *);
|
u_int32_t (*id) (DB_TXN *);
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define db_txn_struct_i(x) ((struct __toku_db_txn_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
struct __toku_db_txn_stat {
|
struct __toku_db_txn_stat {
|
||||||
u_int32_t st_nactive;
|
u_int32_t st_nactive;
|
||||||
|
@ -308,8 +311,6 @@ struct __toku_db_txn_stat {
|
||||||
};
|
};
|
||||||
struct __toku_dbc {
|
struct __toku_dbc {
|
||||||
DB *dbp;
|
DB *dbp;
|
||||||
struct __toku_dbc_internal ii;
|
|
||||||
#define dbc_struct_i(x) (&(x)->ii)
|
|
||||||
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_first)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_last)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
int (*c_getf_next)(DBC *, u_int32_t, YDB_CALLBACK_FUNCTION, void *);
|
||||||
|
@ -331,6 +332,8 @@ struct __toku_dbc {
|
||||||
int (*c_count) (DBC *, db_recno_t *, u_int32_t);
|
int (*c_count) (DBC *, db_recno_t *, u_int32_t);
|
||||||
int (*c_del) (DBC *, u_int32_t);
|
int (*c_del) (DBC *, u_int32_t);
|
||||||
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t);
|
int (*c_get) (DBC *, DBT *, DBT *, u_int32_t);
|
||||||
|
char iic[0] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
|
||||||
|
#define dbc_struct_i(x) ((struct __toku_dbc_internal *)(&(x)->iic))
|
||||||
};
|
};
|
||||||
#ifdef _TOKUDB_WRAP_H
|
#ifdef _TOKUDB_WRAP_H
|
||||||
#define txn_begin txn_begin_tokudb
|
#define txn_begin txn_begin_tokudb
|
||||||
|
|
|
@ -18,21 +18,5 @@ struct simple_dbt {
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct __toku_db_txn_internal {
|
|
||||||
//TXNID txnid64; /* A sixty-four bit txn id. */
|
|
||||||
struct tokutxn *tokutxn;
|
|
||||||
struct __toku_lth *lth; //Hash table holding list of dictionaries this txn has touched
|
|
||||||
u_int32_t flags;
|
|
||||||
DB_TXN *child;
|
|
||||||
struct toku_list dbs_that_must_close_before_abort;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct __toku_dbc_internal {
|
|
||||||
struct brt_cursor *c;
|
|
||||||
DB_TXN *txn;
|
|
||||||
struct simple_dbt skey_s,sval_s;
|
|
||||||
struct simple_dbt *skey,*sval;
|
|
||||||
};
|
|
||||||
|
|
||||||
// end of _TDB_INTERNAL_H:
|
// end of _TDB_INTERNAL_H:
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -163,4 +163,20 @@ int toku_env_is_panicked(DB_ENV *dbenv);
|
||||||
void toku_locked_env_err(const DB_ENV * env, int error, const char *fmt, ...)
|
void toku_locked_env_err(const DB_ENV * env, int error, const char *fmt, ...)
|
||||||
__attribute__((__format__(__printf__, 3, 4)));
|
__attribute__((__format__(__printf__, 3, 4)));
|
||||||
|
|
||||||
|
struct __toku_db_txn_internal {
|
||||||
|
//TXNID txnid64; /* A sixty-four bit txn id. */
|
||||||
|
struct tokutxn *tokutxn;
|
||||||
|
struct __toku_lth *lth; //Hash table holding list of dictionaries this txn has touched
|
||||||
|
u_int32_t flags;
|
||||||
|
DB_TXN *child;
|
||||||
|
struct toku_list dbs_that_must_close_before_abort;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct __toku_dbc_internal {
|
||||||
|
struct brt_cursor *c;
|
||||||
|
DB_TXN *txn;
|
||||||
|
struct simple_dbt skey_s,sval_s;
|
||||||
|
struct simple_dbt *skey,*sval;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
10
src/ydb.c
10
src/ydb.c
|
@ -1737,10 +1737,11 @@ static int toku_txn_begin(DB_ENV *env, DB_TXN * stxn, DB_TXN ** txn, u_int32_t f
|
||||||
return toku_ydb_do_error(env, EINVAL, "DB_ENV->txn_begin: Child transaction isolation level must match parent's isolation level.\n");
|
return toku_ydb_do_error(env, EINVAL, "DB_ENV->txn_begin: Child transaction isolation level must match parent's isolation level.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
DB_TXN *MALLOC(result);
|
size_t result_size = sizeof(DB_TXN)+sizeof(struct __toku_db_txn_internal); // the internal stuff is stuck on the end.
|
||||||
|
DB_TXN *result = toku_malloc(result_size);
|
||||||
if (result == 0)
|
if (result == 0)
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
memset(result, 0, sizeof *result);
|
memset(result, 0, result_size);
|
||||||
//toku_ydb_notef("parent=%p flags=0x%x\n", stxn, flags);
|
//toku_ydb_notef("parent=%p flags=0x%x\n", stxn, flags);
|
||||||
result->mgrp = env;
|
result->mgrp = env;
|
||||||
result->abort = locked_txn_abort;
|
result->abort = locked_txn_abort;
|
||||||
|
@ -3599,10 +3600,11 @@ static int toku_db_cursor(DB * db, DB_TXN * txn, DBC ** c, u_int32_t flags, int
|
||||||
HANDLE_DB_ILLEGAL_WORKING_PARENT_TXN(db, txn);
|
HANDLE_DB_ILLEGAL_WORKING_PARENT_TXN(db, txn);
|
||||||
if (flags != 0)
|
if (flags != 0)
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
DBC *MALLOC(result);
|
size_t result_size = sizeof(DBC)+sizeof(struct __toku_dbc_internal); // internal stuff stuck on the end
|
||||||
|
DBC *result = toku_malloc(result_size);
|
||||||
if (result == 0)
|
if (result == 0)
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
memset(result, 0, sizeof *result);
|
memset(result, 0, result_size);
|
||||||
#define SCRS(name) result->name = locked_ ## name
|
#define SCRS(name) result->name = locked_ ## name
|
||||||
SCRS(c_get);
|
SCRS(c_get);
|
||||||
SCRS(c_close);
|
SCRS(c_close);
|
||||||
|
|
|
@ -100,7 +100,7 @@ endif
|
||||||
# -Wno-deprecated is needed on gcc 4.4.2 to make the #ident complaints go away.
|
# -Wno-deprecated is needed on gcc 4.4.2 to make the #ident complaints go away.
|
||||||
# -Wno-strict-aliasing is needed on gcc 4.4.2 to make certain gratuitous warnings go away.
|
# -Wno-strict-aliasing is needed on gcc 4.4.2 to make certain gratuitous warnings go away.
|
||||||
ifeq ($(GCCVERSION),4.4.2)
|
ifeq ($(GCCVERSION),4.4.2)
|
||||||
GCC_VERSION_SPECIFIC = -Wno-strict-aliasing -Wno-deprecated
|
GCC_VERSION_SPECIFIC = -Wno-deprecated
|
||||||
endif
|
endif
|
||||||
WALL = $(GCC_VERSION_SPECIFIC) -Wall -Wextra -Wcast-align -Wbad-function-cast -Wno-missing-noreturn -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
|
WALL = $(GCC_VERSION_SPECIFIC) -Wall -Wextra -Wcast-align -Wbad-function-cast -Wno-missing-noreturn -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
|
||||||
|
|
||||||
|
@ -116,6 +116,9 @@ SYMBOLS = -g3 -ggdb3
|
||||||
PORTABILITY=
|
PORTABILITY=
|
||||||
SKIP_WARNING=
|
SKIP_WARNING=
|
||||||
COMBINE_C = -combine -c
|
COMBINE_C = -combine -c
|
||||||
|
ifeq ($(GCCVERSION),4.4.2)
|
||||||
|
COMBINE_C += -Wno-strict-aliasing
|
||||||
|
endif
|
||||||
LIBPORTABILITY = $(TOKUROOT)lib/libtokuportability.$(AEXT)
|
LIBPORTABILITY = $(TOKUROOT)lib/libtokuportability.$(AEXT)
|
||||||
LIBPORTABILITY_BUNDLE = $(TOKUROOT)lib/libtokuportability.bundle
|
LIBPORTABILITY_BUNDLE = $(TOKUROOT)lib/libtokuportability.bundle
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue