--- BDB/BDB.xs 2007/12/04 10:13:50 1.20 +++ BDB/BDB.xs 2007/12/10 21:19:07 1.26 @@ -104,7 +104,7 @@ REQ_QUIT, REQ_ENV_OPEN, REQ_ENV_CLOSE, REQ_ENV_TXN_CHECKPOINT, REQ_ENV_LOCK_DETECT, REQ_ENV_MEMP_SYNC, REQ_ENV_MEMP_TRICKLE, - REQ_DB_OPEN, REQ_DB_CLOSE, REQ_DB_COMPACT, REQ_DB_SYNC, + REQ_DB_OPEN, REQ_DB_CLOSE, REQ_DB_COMPACT, REQ_DB_SYNC, REQ_DB_UPGRADE, REQ_DB_PUT, REQ_DB_GET, REQ_DB_PGET, REQ_DB_DEL, REQ_DB_KEY_RANGE, REQ_TXN_COMMIT, REQ_TXN_ABORT, REQ_TXN_FINISH, REQ_C_CLOSE, REQ_C_COUNT, REQ_C_PUT, REQ_C_GET, REQ_C_PGET, REQ_C_DEL, @@ -328,6 +328,12 @@ dbt_to_sv (req->sv3, &req->dbt3); break; + case REQ_DB_PUT: + case REQ_C_PUT: + dbt_to_sv (0, &req->dbt1); + dbt_to_sv (0, &req->dbt2); + break; + case REQ_DB_KEY_RANGE: { AV *av = newAV (); @@ -346,9 +352,9 @@ SvREADONLY_off (req->sv1); if (sizeof (IV) > 4) - sv_setiv_mg (req->sv1, req->seq_t); + sv_setiv_mg (req->sv1, (IV)req->seq_t); else - sv_setnv_mg (req->sv1, req->seq_t); + sv_setnv_mg (req->sv1, (NV)req->seq_t); SvREFCNT_dec (req->sv1); break; @@ -383,6 +389,9 @@ static void create_respipe () { +#ifdef _WIN32 + int arg; /* argg */ +#endif int old_readfd = respipe [0]; if (respipe [1] >= 0) @@ -405,7 +414,7 @@ } #ifdef _WIN32 - int arg = 1; + arg = 1; if (ioctlsocket (TO_SOCKET (respipe [0]), FIONBIO, &arg) || ioctlsocket (TO_SOCKET (respipe [1]), FIONBIO, &arg)) #else @@ -732,6 +741,10 @@ req->result = req->db->sync (req->db, req->uint1); break; + case REQ_DB_UPGRADE: + req->result = req->db->upgrade (req->db, req->buf1, req->uint1); + break; + case REQ_DB_PUT: req->result = req->db->put (req->db, req->txn, &req->dbt1, &req->dbt2, req->uint1); break; @@ -1086,7 +1099,6 @@ const_iv (NOSERVER_HOME) const_iv (NOSERVER_ID) const_iv (NOTFOUND) - const_iv (OLD_VERSION) const_iv (PAGE_NOTFOUND) const_iv (REP_DUPMASTER) const_iv (REP_HANDLE_DEAD) @@ -1133,8 +1145,8 @@ for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; ) newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); - newCONSTSUB (stash, "DB_VERSION", newSVnv (DB_VERSION_MAJOR + DB_VERSION_MINOR * .1)); - newCONSTSUB (stash, "DB_VERSION_STRING", newSVpv (DB_VERSION_STRING, 0)); + newCONSTSUB (stash, "VERSION", newSVnv (DB_VERSION_MAJOR + DB_VERSION_MINOR * .1)); + newCONSTSUB (stash, "VERSION_STRING", newSVpv (DB_VERSION_STRING, 0)); create_respipe (); @@ -1446,6 +1458,17 @@ } void +db_upgrade (DB *db, octetstring file, U32 flags = 0, SV *callback = &PL_sv_undef) + CODE: +{ + dREQ (REQ_DB_SYNC); + req->db = db; + req->buf1 = strdup (file); + req->uint1 = flags; + REQ_SEND; +} + +void db_key_range (DB *db, DB_TXN_ornull *txn, SV *key, SV *key_range, U32 flags = 0, SV *callback = &PL_sv_undef) CODE: { @@ -1726,7 +1749,7 @@ OUTPUT: RETVAL -int set_flags (DB_ENV *env, U32 flags, int onoff) +int set_flags (DB_ENV *env, U32 flags, int onoff = 1) CODE: RETVAL = env->set_flags (env, flags, onoff); OUTPUT: @@ -1740,7 +1763,7 @@ CODE: env->set_msgfile (env, msgfile); -int set_verbose (DB_ENV *env, U32 which, int onoff = 1) +int set_verbose (DB_ENV *env, U32 which = -1, int onoff = 1) CODE: RETVAL = env->set_verbose (env, which, onoff); OUTPUT: @@ -1812,6 +1835,30 @@ OUTPUT: RETVAL +int mutex_set_max (DB_ENV *env, U32 max) + CODE: + RETVAL = env->mutex_set_max (env, max); + OUTPUT: + RETVAL + +int mutex_set_increment (DB_ENV *env, U32 increment) + CODE: + RETVAL = env->mutex_set_increment (env, increment); + OUTPUT: + RETVAL + +int mutex_set_tas_spins (DB_ENV *env, U32 tas_spins) + CODE: + RETVAL = env->mutex_set_tas_spins (env, tas_spins); + OUTPUT: + RETVAL + +int mutex_set_align (DB_ENV *env, U32 align) + CODE: + RETVAL = env->mutex_set_align (env, align); + OUTPUT: + RETVAL + DB_TXN * txn_begin (DB_ENV *env, DB_TXN_ornull *parent = 0, U32 flags = 0) CODE: