diff --git a/buildheader/db.h_4_1 b/buildheader/db.h_4_1
index 0eb23d7a955d37203f25c132fe085f771e11d027..f7de77b1662180b871fd8a41c364237138357b75 100644
--- a/buildheader/db.h_4_1
+++ b/buildheader/db.h_4_1
@@ -213,7 +213,8 @@ struct __toku_dbc {
   void* __toku_dummy3[1];
   int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
   int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); /* 32-bit offset=208 size=4, 64=bit offset=312 size=8 */
-  void* __toku_dummy4[10]; /* Padding at the end */ 
+  int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=212 size=4, 64=bit offset=320 size=8 */
+  void* __toku_dummy4[9]; /* Padding at the end */ 
 };
 struct __toku_dbt {
   void*data; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
diff --git a/buildheader/db.h_4_3 b/buildheader/db.h_4_3
index e4902cdd7890a4a528579d7bf973f9a197c2d1d8..522a7f320c6f56374fe02323f8026a87970cc0b5 100644
--- a/buildheader/db.h_4_3
+++ b/buildheader/db.h_4_3
@@ -225,7 +225,8 @@ struct __toku_dbc {
   void* __toku_dummy3[1];
   int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=296 size=8 */
   int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); /* 32-bit offset=208 size=4, 64=bit offset=304 size=8 */
-  void* __toku_dummy4[9]; /* Padding at the end */ 
+  int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=212 size=4, 64=bit offset=312 size=8 */
+  void* __toku_dummy4[8]; /* Padding at the end */ 
 };
 struct __toku_dbt {
   void*data; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
diff --git a/buildheader/db.h_4_4 b/buildheader/db.h_4_4
index fa3c2b561fc15e8dd6b176ecb2db3a3fe310f96f..0452486603481e63e468b8fd853eee9be58463e2 100644
--- a/buildheader/db.h_4_4
+++ b/buildheader/db.h_4_4
@@ -227,7 +227,8 @@ struct __toku_dbc {
   void* __toku_dummy3[1];
   int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
   int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); /* 32-bit offset=208 size=4, 64=bit offset=312 size=8 */
-  void* __toku_dummy4[9]; /* Padding at the end */ 
+  int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=212 size=4, 64=bit offset=320 size=8 */
+  void* __toku_dummy4[8]; /* Padding at the end */ 
 };
 struct __toku_dbt {
   void*data; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
diff --git a/buildheader/db.h_4_5 b/buildheader/db.h_4_5
index 92379b98503a3a7af91e9da5f8dbd471c72af2e7..ded6235f85f2e17cf3ac286d7805d28dd6cc735e 100644
--- a/buildheader/db.h_4_5
+++ b/buildheader/db.h_4_5
@@ -226,7 +226,8 @@ struct __toku_dbc {
   void* __toku_dummy3[1];
   int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=220 size=4, 64=bit offset=336 size=8 */
   int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); /* 32-bit offset=224 size=4, 64=bit offset=344 size=8 */
-  void* __toku_dummy4[9]; /* Padding at the end */ 
+  int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=228 size=4, 64=bit offset=352 size=8 */
+  void* __toku_dummy4[8]; /* Padding at the end */ 
 };
 struct __toku_dbt {
   void*data; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
diff --git a/buildheader/db.h_4_6 b/buildheader/db.h_4_6
index 694880a258732efc865c77b39770f961edc13d2b..cfe757777eab2b657256ec7c74d012a05ef0658d 100644
--- a/buildheader/db.h_4_6
+++ b/buildheader/db.h_4_6
@@ -230,7 +230,8 @@ struct __toku_dbc {
   void* __toku_dummy3[1];
   int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=260 size=4, 64=bit offset=416 size=8 */
   int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); /* 32-bit offset=264 size=4, 64=bit offset=424 size=8 */
-  void* __toku_dummy4[9]; /* Padding at the end */ 
+  int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=268 size=4, 64=bit offset=432 size=8 */
+  void* __toku_dummy4[8]; /* Padding at the end */ 
 };
 struct __toku_dbt {
   void*data; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */
diff --git a/buildheader/sample_offsets.c b/buildheader/sample_offsets.c
index 83d3bf9be8d74c3fd9f9415f0a1edafb2b9ce827..edbdfcc7fa7fc8fcb8ad7bc42cec09adba38bdcb 100644
--- a/buildheader/sample_offsets.c
+++ b/buildheader/sample_offsets.c
@@ -167,7 +167,8 @@ void sample_dbc_offsets (void) {
     STRUCT_SETUP(DBC, c_close, "int (*%s) (DBC *)");
     STRUCT_SETUP(DBC, c_del,   "int (*%s) (DBC *, u_int32_t)");
     STRUCT_SETUP(DBC, c_get,   "int (*%s) (DBC *, DBT *, DBT *, u_int32_t)");
-    STRUCT_SETUP(DBC, c_pget,   "int (*%s) (DBC *, DBT *, DBT *, DBT *, u_int32_t)");
+    STRUCT_SETUP(DBC, c_pget,  "int (*%s) (DBC *, DBT *, DBT *, DBT *, u_int32_t)");
+    STRUCT_SETUP(DBC, c_put,   "int (*%s) (DBC *, DBT *, DBT *, u_int32_t)");
     sort_and_dump_fields("dbc", sizeof(DBC));
 }
 
diff --git a/buildheader/sample_offsets_32_4_1.h b/buildheader/sample_offsets_32_4_1.h
index 21a290b7cf86099abd7101ae39566ef8d28d82b4..7a22124e1994c24bdec7ef8eb5da68713dc0dbfc 100644
--- a/buildheader/sample_offsets_32_4_1.h
+++ b/buildheader/sample_offsets_32_4_1.h
@@ -83,6 +83,7 @@ struct fieldinfo dbc_fields32[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 196, 4},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 204, 4},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 208, 4},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 212, 4},
   {0, 252, 252} /* size of whole struct */
 };
 struct fieldinfo dbt_fields32[] = {
diff --git a/buildheader/sample_offsets_32_4_3.h b/buildheader/sample_offsets_32_4_3.h
index 26cdd2b844c00be7ee04e8bd738207abb7945259..2da15dc132fbdee1698875b501535691e4660964 100644
--- a/buildheader/sample_offsets_32_4_3.h
+++ b/buildheader/sample_offsets_32_4_3.h
@@ -87,6 +87,7 @@ struct fieldinfo dbc_fields32[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 196, 4},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 204, 4},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 208, 4},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 212, 4},
   {0, 248, 248} /* size of whole struct */
 };
 struct fieldinfo dbt_fields32[] = {
diff --git a/buildheader/sample_offsets_32_4_4.h b/buildheader/sample_offsets_32_4_4.h
index 2e7a30672262ee106536ba3d36173a896a33df27..5628164446785d55bbf6507ab0847b05c57bc769 100644
--- a/buildheader/sample_offsets_32_4_4.h
+++ b/buildheader/sample_offsets_32_4_4.h
@@ -87,6 +87,7 @@ struct fieldinfo dbc_fields32[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 196, 4},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 204, 4},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 208, 4},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 212, 4},
   {0, 248, 248} /* size of whole struct */
 };
 struct fieldinfo dbt_fields32[] = {
diff --git a/buildheader/sample_offsets_32_4_5.h b/buildheader/sample_offsets_32_4_5.h
index ce117142ce3c0ef07d186b81c6fa1aca9824e288..82f520c96cbe2acfd415d735f7ef7376b8e6fa96 100644
--- a/buildheader/sample_offsets_32_4_5.h
+++ b/buildheader/sample_offsets_32_4_5.h
@@ -86,6 +86,7 @@ struct fieldinfo dbc_fields32[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 212, 4},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 220, 4},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 224, 4},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 228, 4},
   {0, 264, 264} /* size of whole struct */
 };
 struct fieldinfo dbt_fields32[] = {
diff --git a/buildheader/sample_offsets_32_4_6.h b/buildheader/sample_offsets_32_4_6.h
index 7d6ccb74d3bcf5b14cbb3e39bd93bdfd157bf364..1432bee574d45336e04b718b116237e6b69e24ba 100644
--- a/buildheader/sample_offsets_32_4_6.h
+++ b/buildheader/sample_offsets_32_4_6.h
@@ -86,6 +86,7 @@ struct fieldinfo dbc_fields32[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 252, 4},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 260, 4},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 264, 4},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 268, 4},
   {0, 304, 304} /* size of whole struct */
 };
 struct fieldinfo dbt_fields32[] = {
diff --git a/buildheader/sample_offsets_64_4_1.h b/buildheader/sample_offsets_64_4_1.h
index 45083868a0789cb619a6b616b72803d08221bb42..94174a4acac134b4ddbc9f5764b8f75c546d6cb4 100644
--- a/buildheader/sample_offsets_64_4_1.h
+++ b/buildheader/sample_offsets_64_4_1.h
@@ -83,6 +83,7 @@ struct fieldinfo dbc_fields64[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 288, 8},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 304, 8},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 312, 8},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 320, 8},
   {0, 400, 400} /* size of whole struct */
 };
 struct fieldinfo dbt_fields64[] = {
diff --git a/buildheader/sample_offsets_64_4_3.h b/buildheader/sample_offsets_64_4_3.h
index 307003b9ba9abd6fd87e1f0c5cd5e75f434ed751..6e82d414b775b73ac31e26f08b5942a1128f481f 100644
--- a/buildheader/sample_offsets_64_4_3.h
+++ b/buildheader/sample_offsets_64_4_3.h
@@ -87,6 +87,7 @@ struct fieldinfo dbc_fields64[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 280, 8},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 296, 8},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 304, 8},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 312, 8},
   {0, 384, 384} /* size of whole struct */
 };
 struct fieldinfo dbt_fields64[] = {
diff --git a/buildheader/sample_offsets_64_4_4.h b/buildheader/sample_offsets_64_4_4.h
index 8f65d07a8ca54ac23aab1284ace9eeffc23f5b34..47683084f004f79c8581dde42b423dd7f72ea32a 100644
--- a/buildheader/sample_offsets_64_4_4.h
+++ b/buildheader/sample_offsets_64_4_4.h
@@ -87,6 +87,7 @@ struct fieldinfo dbc_fields64[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 288, 8},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 304, 8},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 312, 8},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 320, 8},
   {0, 392, 392} /* size of whole struct */
 };
 struct fieldinfo dbt_fields64[] = {
diff --git a/buildheader/sample_offsets_64_4_5.h b/buildheader/sample_offsets_64_4_5.h
index d05a31775cba17b14c864aec9c813a7602ea8a3e..e344ebd325ff96be820f65451f6b37ca8b0baf1b 100644
--- a/buildheader/sample_offsets_64_4_5.h
+++ b/buildheader/sample_offsets_64_4_5.h
@@ -86,6 +86,7 @@ struct fieldinfo dbc_fields64[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 320, 8},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 336, 8},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 344, 8},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 352, 8},
   {0, 424, 424} /* size of whole struct */
 };
 struct fieldinfo dbt_fields64[] = {
diff --git a/buildheader/sample_offsets_64_4_6.h b/buildheader/sample_offsets_64_4_6.h
index 6ebca47943f418aac8e54c6a890008fc206ec674..b80194dedd74be134e36067c1bf81f73ba7ed313 100644
--- a/buildheader/sample_offsets_64_4_6.h
+++ b/buildheader/sample_offsets_64_4_6.h
@@ -86,6 +86,7 @@ struct fieldinfo dbc_fields64[] = {
   {"int (*c_del) (DBC *, u_int32_t)", 400, 8},
   {"int (*c_get) (DBC *, DBT *, DBT *, u_int32_t)", 416, 8},
   {"int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t)", 424, 8},
+  {"int (*c_put) (DBC *, DBT *, DBT *, u_int32_t)", 432, 8},
   {0, 504, 504} /* size of whole struct */
 };
 struct fieldinfo dbt_fields64[] = {
diff --git a/include/db.h b/include/db.h
index fa3c2b561fc15e8dd6b176ecb2db3a3fe310f96f..0452486603481e63e468b8fd853eee9be58463e2 100644
--- a/include/db.h
+++ b/include/db.h
@@ -227,7 +227,8 @@ struct __toku_dbc {
   void* __toku_dummy3[1];
   int (*c_get) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=204 size=4, 64=bit offset=304 size=8 */
   int (*c_pget) (DBC *, DBT *, DBT *, DBT *, u_int32_t); /* 32-bit offset=208 size=4, 64=bit offset=312 size=8 */
-  void* __toku_dummy4[9]; /* Padding at the end */ 
+  int (*c_put) (DBC *, DBT *, DBT *, u_int32_t); /* 32-bit offset=212 size=4, 64=bit offset=320 size=8 */
+  void* __toku_dummy4[8]; /* Padding at the end */ 
 };
 struct __toku_dbt {
   void*data; /* 32-bit offset=0 size=4, 64=bit offset=0 size=8 */