txn_method.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1996-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: txn_method.c,v 11.62 2002/05/09 20:09:35 bostic Exp $";
  10. #endif /* not lint */
  11. #ifndef NO_SYSTEM_INCLUDES
  12. #include <sys/types.h>
  13. #ifdef HAVE_RPC
  14. #include <rpc/rpc.h>
  15. #endif
  16. #include <string.h>
  17. #endif
  18. #include "db_int.h"
  19. #include "dbinc/txn.h"
  20. #ifdef HAVE_RPC
  21. #include "dbinc_auto/db_server.h"
  22. #include "dbinc_auto/rpc_client_ext.h"
  23. #endif
  24. static int __txn_set_tx_max __P((DB_ENV *, u_int32_t));
  25. static int __txn_set_tx_timestamp __P((DB_ENV *, time_t *));
  26. /*
  27.  * __txn_dbenv_create --
  28.  * Transaction specific initialization of the DB_ENV structure.
  29.  *
  30.  * PUBLIC: void __txn_dbenv_create __P((DB_ENV *));
  31.  */
  32. void
  33. __txn_dbenv_create(dbenv)
  34. DB_ENV *dbenv;
  35. {
  36. /*
  37.  * !!!
  38.  * Our caller has not yet had the opportunity to reset the panic
  39.  * state or turn off mutex locking, and so we can neither check
  40.  * the panic state or acquire a mutex in the DB_ENV create path.
  41.  */
  42. dbenv->tx_max = DEF_MAX_TXNS;
  43. #ifdef HAVE_RPC
  44. if (F_ISSET(dbenv, DB_ENV_RPCCLIENT)) {
  45. dbenv->set_tx_max = __dbcl_set_tx_max;
  46. dbenv->set_tx_timestamp = __dbcl_set_tx_timestamp;
  47. dbenv->txn_checkpoint = __dbcl_txn_checkpoint;
  48. dbenv->txn_recover = __dbcl_txn_recover;
  49. dbenv->txn_stat = __dbcl_txn_stat;
  50. dbenv->txn_begin = __dbcl_txn_begin;
  51. } else
  52. #endif
  53. {
  54. dbenv->set_tx_max = __txn_set_tx_max;
  55. dbenv->set_tx_timestamp = __txn_set_tx_timestamp;
  56. dbenv->txn_checkpoint = __txn_checkpoint;
  57. #ifdef CONFIG_TEST
  58. dbenv->txn_id_set = __txn_id_set;
  59. #endif
  60. dbenv->txn_recover = __txn_recover;
  61. dbenv->txn_stat = __txn_stat;
  62. dbenv->txn_begin = __txn_begin;
  63. }
  64. }
  65. /*
  66.  * __txn_set_tx_max --
  67.  * Set the size of the transaction table.
  68.  */
  69. static int
  70. __txn_set_tx_max(dbenv, tx_max)
  71. DB_ENV *dbenv;
  72. u_int32_t tx_max;
  73. {
  74. ENV_ILLEGAL_AFTER_OPEN(dbenv, "set_tx_max");
  75. dbenv->tx_max = tx_max;
  76. return (0);
  77. }
  78. /*
  79.  * __txn_set_tx_timestamp --
  80.  * Set the transaction recovery timestamp.
  81.  */
  82. static int
  83. __txn_set_tx_timestamp(dbenv, timestamp)
  84. DB_ENV *dbenv;
  85. time_t *timestamp;
  86. {
  87. ENV_ILLEGAL_AFTER_OPEN(dbenv, "set_tx_timestamp");
  88. dbenv->tx_timestamp = *timestamp;
  89. return (0);
  90. }