16 #if defined(_RPMDB_INTERNAL)
24 #if defined(_RPMDB_INTERNAL)
39 typedef struct rpmdb_s *
rpmdb;
60 #if defined(_RPMDB_INTERNAL)
69 struct _dbiIndexItem {
79 struct _dbiIndexItem *
recs;
87 const char * dbv_version;
108 int (*close) (
dbiIndex dbi,
unsigned int flags)
118 int (*sync) (
dbiIndex dbi,
unsigned int flags)
131 int (*callback) (
DB *,
const DBT *,
const DBT *,
DBT *),
145 int (*callback) (
DB *,
const DBT *,
DBT *,
const DBT *,
int *),
170 int (*exists) (
dbiIndex dbi,
DBT * key,
unsigned int flags)
181 int (*seqno) (
dbiIndex dbi, int64_t * seqnop,
unsigned int flags)
194 DBC ** dbcp,
unsigned int dbiflags)
205 int (*cclose) (
dbiIndex dbi,
DBC * dbcursor,
unsigned int flags)
261 DBT * key,
DBT * pkey,
DBT * data,
unsigned int flags)
288 unsigned int * countp,
308 int (*stat) (
dbiIndex dbi,
unsigned int flags)
319 const char * dbi_root;
321 const char * dbi_home;
323 const char * dbi_file;
325 const char * dbi_subfile;
327 const char * dbi_tmpdir;
353 unsigned long dbi_cl_timeout;
354 unsigned long dbi_sv_timeout;
360 void (*db_errcall) (
void * dbenv,
const char *db_errpfx,
char *buffer)
365 const char * dbi_errpfx;
367 unsigned int dbi_thread_count;
376 const char * dbi_seq_id;
377 unsigned int dbi_seq_cachesize;
378 unsigned int dbi_seq_flags;
379 int64_t dbi_seq_initial;
386 int (*dbi_tx_recover) (
DB_ENV *dbenv,
DBT *log_rec,
387 DB_LSN *lsnp,
int redo,
void *info)
394 int dbi_heap_regionsize;
396 void * (*dbi_malloc) (
size_t nbytes)
399 unsigned int dbi_h_ffactor;
400 unsigned int (*dbi_h_hash_fcn) (
DB *,
const void *bytes,
403 unsigned int dbi_h_nelem;
404 unsigned int dbi_h_flags;
405 int (*dbi_h_dup_compare_fcn) (
DB *,
const DBT *,
const DBT *)
410 int (*dbi_bt_compare_fcn) (
DB *,
const DBT *,
const DBT *)
412 int (*dbi_bt_dup_compare_fcn) (
DB *,
const DBT *,
const DBT *)
414 size_t (*dbi_bt_prefix_fcn) (
DB *,
const DBT *,
const DBT *)
419 unsigned int dbi_re_len;
421 const char * dbi_re_source;
423 unsigned int dbi_q_extentsize;
426 const char * dbi_primary;
428 const char * dbi_foreign;
436 int dbi_table_exists;
448 const struct _dbiVec * dbi_vec;
459 const char * db_root;
461 const char * db_home;
467 const char * db_errpfx;
473 void (*db_errcall) (
const char * db_errpfx,
char * buffer)
478 void * (*db_malloc) (
size_t nbytes)
481 void * (*db_realloc) (
void * ptr,
size_t nbytes)
483 void (*db_free) (
void * ptr)
508 #if defined(__LCLINT__)
519 #if defined(_RPMDB_INTERNAL)
521 #if defined(WITH_DB) || defined(WITH_SQLITE)
542 #define db3Free(_dbi) \
543 ((dbiIndex)rpmioFreePoolItem((rpmioItem)(_dbi), __FUNCTION__, __FILE__, __LINE__))
553 extern const char * prDbiOpenFlags(
int dbflags,
int print_dbenv_flags)
591 DBC ** dbcp,
unsigned int flags)
595 return (*dbi->dbi_vec->copen) (dbi, txnid, dbcp, flags);
606 int dbiCclose(
dbiIndex dbi,
DBC * dbcursor,
unsigned int flags)
610 return (*dbi->dbi_vec->cclose) (dbi, dbcursor, flags);
626 return (*dbi->dbi_vec->cdup) (dbi, dbcursor, dbcp, flags);
646 assert(key->
data != NULL && key->
size > 0);
648 rc = (dbi->dbi_vec->cdel) (dbi, dbcursor, key, data, flags);
671 rc = (dbi->dbi_vec->cget) (dbi, dbcursor, key, data, flags);
688 DBT * key,
DBT * pkey,
DBT * data,
unsigned int flags)
695 rc = (dbi->dbi_vec->cpget) (dbi, dbcursor, key, pkey, data, flags);
717 assert(key->
data != NULL && key->
size > 0 && data->
data != NULL && data->
size > 0);
719 rc = (dbi->dbi_vec->cput) (dbi, dbcursor, key, data, flags);
733 int dbiCount(
dbiIndex dbi,
DBC * dbcursor,
unsigned int * countp,
738 return (*dbi->dbi_vec->ccount) (dbi, dbcursor, countp, flags);
748 int dbiClose(
dbiIndex dbi,
unsigned int flags)
752 return (*dbi->dbi_vec->close) (dbi, flags);
762 int dbiSync (
dbiIndex dbi,
unsigned int flags)
766 return (*dbi->dbi_vec->sync) (dbi, flags);
777 int dbiExists(
dbiIndex dbi,
DBT * key,
unsigned int flags)
781 return (*dbi->dbi_vec->exists) (dbi, key, flags);
792 int dbiSeqno(
dbiIndex dbi, int64_t * seqnop,
unsigned int flags)
796 return (*dbi->dbi_vec->seqno) (dbi, seqnop, flags);
809 int (*callback) (
DB *,
const DBT *,
const DBT *,
DBT *),
814 return (*dbi->dbi_vec->associate) (dbi, dbisecondary, callback, flags);
831 return (*dbi->dbi_vec->join) (dbi, curslist, dbcp, flags);
843 return (*dbi->dbi_vec->byteswapped) (dbi);
853 int dbiStat(
dbiIndex dbi,
unsigned int flags)
856 return (*dbi->dbi_vec->stat) (dbi, flags);
869 DB_TXN * _txn = (
DB_TXN*)(rpmdb ? rpmdb->db_txn : NULL);
873 #if defined(_RPMDB_INTERNAL)
875 #if !defined(__LCLINT__)
877 int rpmlkId(rpmdb rpmdb, uint32_t *_idp)
880 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080)
881 ? dbenv->lock_id(dbenv, _idp) : ENOTSUP;
883 fprintf(stderr,
"<-- %s(%p,%p) id 0x%x rc %d\n",
"dbenv->lock_id", dbenv, _idp, *_idp, rc);
888 int rpmlkIdFree(rpmdb rpmdb, uint32_t _id)
891 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080)
892 ? dbenv->lock_id_free(dbenv, _id) : ENOTSUP;
894 fprintf(stderr,
"<-- %s(%p,%u) rc %d\n",
"dbenv->lock_id_free", dbenv, (
unsigned)_id, rc);
899 int rpmlkGet(rpmdb rpmdb,
DBT * _object, uint32_t _lockmode,
void * _lock)
902 uint32_t _locker = 0x12344321;
904 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080)
905 ? dbenv->lock_get(dbenv, _locker, _flags, _object, (db_lockmode_t)_lockmode, (DB_LOCK*)_lock)
908 fprintf(stderr,
"<-- %s(%p,0x%x,0x%x,%p,0x%x,%p) rc %d\n",
"dbenv->lock_get", dbenv, _locker, _flags, _object, _lockmode, _lock, rc);
913 int rpmlkPut(rpmdb rpmdb,
void * _lock)
916 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x080)
917 ? dbenv->lock_put(dbenv, (DB_LOCK*)_lock)
920 fprintf(stderr,
"<-- %s(%p,%p) rc %d\n",
"dbenv->lock_put", dbenv, _lock, rc);
925 int rpmlgcOpen(rpmdb rpmdb)
928 DB_LOGC * _logc = NULL;
930 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100)
931 ? dbenv->log_cursor(dbenv, &_logc, _flags) : ENOTSUP;
932 rpmdb->db_logc = (!rc ? _logc : NULL);
934 fprintf(stderr,
"<-- %s(%p,%p,0x%x) logc %p rc %d\n",
"dbenv->log_cursor", dbenv, &_logc, _flags, _logc, rc);
939 int rpmlgcGet(rpmdb rpmdb, DB_LSN * _lsn,
DBT * data, uint32_t flags)
941 DB_LOGC * _logc = rpmdb->db_logc;
942 int rc = (_logc ? _logc->get(_logc, _lsn, data, flags) : ENOTSUP);
944 fprintf(stderr,
"<-- %s(%p,%p,%p,0x%x) rc %d\n",
"logc->get", _logc, _lsn, data, flags, rc);
949 int rpmlgcClose(rpmdb rpmdb)
951 DB_LOGC * _logc = rpmdb->db_logc;
953 int rc = (_logc ? _logc->close(_logc, _flags) : ENOTSUP);
954 rpmdb->db_logc = NULL;
956 fprintf(stderr,
"<-- %s(%p) rc %d\n",
"logc->close", _logc, rc);
961 int rpmlgcFile(rpmdb rpmdb,
const DB_LSN * _lsn,
char *
name,
size_t len)
964 int rc = dbenv->log_file(dbenv, _lsn, name, len);
966 fprintf(stderr,
"<-- %s(%p,%p,%p[%u]) \"%s\" rc %d\n",
"dbenv->log_file", dbenv, _lsn, name, (
unsigned)len, name, rc);
971 int rpmlgcFlush(rpmdb rpmdb,
const DB_LSN * _lsn)
974 int rc = dbenv->log_flush(dbenv, _lsn);
976 fprintf(stderr,
"<-- %s(%p,%p) rc %d\n",
"dbenv->log_flush", dbenv, _lsn, rc);
981 int rpmlgcPrintf(rpmdb rpmdb,
const char * fmt,
void *_A1,
void *_A2,
void *_A3,
void *_A4,
void *_A5)
985 int rc = dbenv->log_printf(dbenv, _txnid, fmt, _A1, _A2, _A3, _A4, _A5);
987 fprintf(stderr,
"<-- %s(%p,%p,\"%s\", ...) rc %d\n",
"dbenv->log_printf", dbenv, _txnid, fmt, rc);
992 int rpmlgcPut(rpmdb rpmdb, DB_LSN * _lsn,
const DBT * data, uint32_t flags)
995 int rc = dbenv->log_put(dbenv, _lsn, data, flags);
997 fprintf(stderr,
"<-- %s(%p,%p,%p,0x%x) rc %d\n",
"dbenv->log_put", dbenv, _lsn, data, flags, rc);
1002 int rpmmpfSyncAll(rpmdb rpmdb)
1005 DB_LSN * _lsn = NULL;
1006 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100)
1007 ? dbenv->memp_sync(dbenv, _lsn) : ENOTSUP;
1009 fprintf(stderr,
"<-- %s(%p,%p) rc %d\n",
"dbenv->memp_sync", dbenv, _lsn, rc);
1014 int rpmmpfTrickle(rpmdb rpmdb)
1019 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100)
1020 ? dbenv->memp_trickle(dbenv, _percent, &_nwrote) : ENOTSUP;
1022 fprintf(stderr,
"<-- %s(%p,%d) nwrote %d rc %d\n",
"dbenv->memp_trickle", dbenv, _percent, _nwrote, rc);
1027 int rpmmpfClose(rpmdb rpmdb)
1029 DB_MPOOLFILE * mpf = rpmdb->db_mpf;
1030 uint32_t _flags = 0;
1031 int rc = (mpf ? mpf->close(mpf, _flags) : ENOTSUP);
1032 rpmdb->db_mpf = NULL;
1034 fprintf(stderr,
"<-- %s(%p) rc %d\n",
"mpf->close", mpf, rc);
1039 int rpmmpfGet(rpmdb rpmdb, uint32_t * _pgnop, uint32_t _flags,
void ** _pagep)
1041 DB_MPOOLFILE * mpf = rpmdb->db_mpf;
1043 int rc = mpf->get(mpf, _pgnop, _txnid, _flags, _pagep);
1045 fprintf(stderr,
"<-- %s(%p,%p,%p,0x%x,%p) rc %d\n",
"mpf->get", mpf, _pgnop, _txnid, _flags, _pagep, rc);
1050 int rpmmpfOpen(rpmdb rpmdb,
const char * fn, uint32_t flags)
1053 DB_MPOOLFILE * mpf = NULL;
1054 int _perms = rpmdb->_dbi[0]->dbi_perms;
1055 size_t _pagesize = BUFSIZ;
1056 uint32_t _fcreate_flags = 0;
1057 int rc = (rpmdb->_dbi[0]->dbi_eflags & 0x100)
1058 ? dbenv->memp_fcreate(dbenv, &mpf, _fcreate_flags) : ENOTSUP;
1061 fprintf(stderr,
"<-- %s(%p,&mpf,0x%x) mpf %p rc %d\n",
"dbenv->memp_fcreate", dbenv, _fcreate_flags, mpf, rc);
1063 rc = mpf->open(mpf, fn, flags, _perms, _pagesize);
1064 rpmdb->db_mpf = (!rc ? mpf : NULL);
1066 fprintf(stderr,
"<-- %s(%p,%s,0x%x) rc %d\n",
"mpf->open", mpf, fn, flags, rc);
1073 int rpmmpfPut(rpmdb rpmdb,
void * _page, uint32_t flags)
1075 DB_MPOOLFILE * mpf = rpmdb->db_mpf;
1076 uint32_t _priority = DB_PRIORITY_DEFAULT;
1077 int rc = mpf->put(mpf, _page, (DB_CACHE_PRIORITY)_priority, flags);
1079 fprintf(stderr,
"<-- %s(%p,%p,0x%x,0x%x) rc %d\n",
"mpf->put", mpf, _page, _priority, flags, rc);
1084 int rpmmpfSync(rpmdb rpmdb)
1086 DB_MPOOLFILE * mpf = rpmdb->db_mpf;
1087 int rc = (mpf ? mpf->sync(mpf) : ENOTSUP);
1089 fprintf(stderr,
"<-- %s(%p) rc %d\n",
"mpf->close", mpf, rc);
1145 #define rpmdbUnlink(_db, _msg) \
1146 ((rpmdb)rpmioUnlinkPoolItem((rpmioItem)(_db), _msg, __FILE__, __LINE__))
1155 rpmdb
rpmdbLink (rpmdb db,
const char * msg)
1157 #define rpmdbLink(_db, _msg) \
1158 ((void *)rpmioLinkPoolItem((rpmioItem)(_db), _msg, __FILE__, __LINE__))
1165 int mode, mode_t perms,
int flags)
1178 int mode, mode_t perms)
1230 const void * keyp,
size_t keylen)
1276 const uint32_t * hdrNums,
int nHdrNums)
1306 uint32_t * hdrNums,
int nHdrNums,
int sorted)
1351 const void * keyp,
size_t keylen)
1396 #define rpmmiUnlink(_mi) \
1397 ((rpmmi)rpmioUnlinkPoolItem((rpmioItem)(_mi), __FUNCTION__, __FILE__, __LINE__))
1408 #define rpmmiLink(_mi) \
1409 ((rpmmi)rpmioLinkPoolItem((rpmioItem)(_mi), __FUNCTION__, __FILE__, __LINE__))
1420 #define rpmmiFree(_mi) \
1421 ((rpmmi)rpmioFreePoolItem((rpmioItem)(_mi), __FUNCTION__, __FILE__, __LINE__))
1433 const char *** argvp)
1459 int rpmdbRemove( rpmdb db,
int rid, uint32_t hdrNum,
1470 int (*cmp) (
const void *,
const void *))