bt_reclaim.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1998, 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: bt_reclaim.c,v 11.5 2000/03/22 04:21:01 ubell Exp $";
  10. #endif /* not lint */
  11. #ifndef NO_SYSTEM_INCLUDES
  12. #include <sys/types.h>
  13. #include <string.h>
  14. #endif
  15. #include "db_int.h"
  16. #include "db_page.h"
  17. #include "db_shash.h"
  18. #include "lock.h"
  19. #include "btree.h"
  20. /*
  21.  * __bam_reclaim --
  22.  * Free a database.
  23.  *
  24.  * PUBLIC: int __bam_reclaim __P((DB *, DB_TXN *));
  25.  */
  26. int
  27. __bam_reclaim(dbp, txn)
  28. DB *dbp;
  29. DB_TXN *txn;
  30. {
  31. DBC *dbc;
  32. int ret, t_ret;
  33. /* Acquire a cursor. */
  34. if ((ret = dbp->cursor(dbp, txn, &dbc, 0)) != 0)
  35. return (ret);
  36. /* Walk the tree, freeing pages. */
  37. ret = __bam_traverse(dbc,
  38.     DB_LOCK_WRITE, dbc->internal->root, __db_reclaim_callback, dbc);
  39. /* Discard the cursor. */
  40. if ((t_ret = dbc->c_close(dbc)) != 0 && ret == 0)
  41. ret = t_ret;
  42. return (ret);
  43. }