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

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1996, 1997, 1998, 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: qam_upgrade.c,v 11.7 2000/11/30 00:58:44 ubell Exp $";
  10. #endif /* not lint */
  11. #ifndef NO_SYSTEM_INCLUDES
  12. #include <sys/types.h>
  13. #include <limits.h>
  14. #include <string.h>
  15. #endif
  16. #include "db_int.h"
  17. #include "db_page.h"
  18. #include "db_swap.h"
  19. #include "db_am.h"
  20. #include "db_upgrade.h"
  21. /*
  22.  * __qam_31_qammeta --
  23.  * Upgrade the database from version 1 to version 2.
  24.  *
  25.  * PUBLIC: int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
  26.  */
  27. int
  28. __qam_31_qammeta(dbp, real_name, buf)
  29. DB *dbp;
  30. char *real_name;
  31. u_int8_t *buf;
  32. {
  33. QMETA31 *newmeta;
  34. QMETA30 *oldmeta;
  35. COMPQUIET(dbp, NULL);
  36. COMPQUIET(real_name, NULL);
  37. newmeta = (QMETA31 *)buf;
  38. oldmeta = (QMETA30 *)buf;
  39. /*
  40.  * Copy the fields to their new locations.
  41.  * They may overlap so start at the bottom and use memmove().
  42.  */
  43. newmeta->rec_page = oldmeta->rec_page;
  44. newmeta->re_pad = oldmeta->re_pad;
  45. newmeta->re_len = oldmeta->re_len;
  46. newmeta->cur_recno = oldmeta->cur_recno;
  47. newmeta->first_recno = oldmeta->first_recno;
  48. newmeta->start = oldmeta->start;
  49. memmove(newmeta->dbmeta.uid,
  50.     oldmeta->dbmeta.uid, sizeof(oldmeta->dbmeta.uid));
  51. newmeta->dbmeta.flags = oldmeta->dbmeta.flags;
  52. newmeta->dbmeta.record_count = 0;
  53. newmeta->dbmeta.key_count = 0;
  54. ZERO_LSN(newmeta->dbmeta.unused3);
  55. /* Update the version. */
  56. newmeta->dbmeta.version = 2;
  57. return (0);
  58. }
  59. /*
  60.  * __qam_32_qammeta --
  61.  * Upgrade the database from version 2 to version 3.
  62.  *
  63.  * PUBLIC: int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
  64.  */
  65. int
  66. __qam_32_qammeta(dbp, real_name, buf)
  67. DB *dbp;
  68. char *real_name;
  69. u_int8_t *buf;
  70. {
  71. QMETA32 *newmeta;
  72. QMETA31 *oldmeta;
  73. COMPQUIET(dbp, NULL);
  74. COMPQUIET(real_name, NULL);
  75. newmeta = (QMETA32 *)buf;
  76. oldmeta = (QMETA31 *)buf;
  77. /*
  78.  * Copy the fields to their new locations.
  79.  * We are dropping the first field so move
  80.  * from the top.
  81.  */
  82. newmeta->first_recno = oldmeta->first_recno;
  83. newmeta->cur_recno = oldmeta->cur_recno;
  84. newmeta->re_len = oldmeta->re_len;
  85. newmeta->re_pad = oldmeta->re_pad;
  86. newmeta->rec_page = oldmeta->rec_page;
  87. newmeta->page_ext = 0;
  88. /* cur_recno now points to the first free slot. */
  89. newmeta->cur_recno++;
  90. if (newmeta->first_recno == 0)
  91. newmeta->first_recno = 1;
  92. /* Update the version. */
  93. newmeta->dbmeta.version = 3;
  94. return (0);
  95. }