qam_upgrade.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: qam_upgrade.c,v 11.12 2002/03/29 20:46:48 bostic 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 "dbinc/db_upgrade.h"
  18. /*
  19.  * __qam_31_qammeta --
  20.  * Upgrade the database from version 1 to version 2.
  21.  *
  22.  * PUBLIC: int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
  23.  */
  24. int
  25. __qam_31_qammeta(dbp, real_name, buf)
  26. DB *dbp;
  27. char *real_name;
  28. u_int8_t *buf;
  29. {
  30. QMETA31 *newmeta;
  31. QMETA30 *oldmeta;
  32. COMPQUIET(dbp, NULL);
  33. COMPQUIET(real_name, NULL);
  34. newmeta = (QMETA31 *)buf;
  35. oldmeta = (QMETA30 *)buf;
  36. /*
  37.  * Copy the fields to their new locations.
  38.  * They may overlap so start at the bottom and use memmove().
  39.  */
  40. newmeta->rec_page = oldmeta->rec_page;
  41. newmeta->re_pad = oldmeta->re_pad;
  42. newmeta->re_len = oldmeta->re_len;
  43. newmeta->cur_recno = oldmeta->cur_recno;
  44. newmeta->first_recno = oldmeta->first_recno;
  45. newmeta->start = oldmeta->start;
  46. memmove(newmeta->dbmeta.uid,
  47.     oldmeta->dbmeta.uid, sizeof(oldmeta->dbmeta.uid));
  48. newmeta->dbmeta.flags = oldmeta->dbmeta.flags;
  49. newmeta->dbmeta.record_count = 0;
  50. newmeta->dbmeta.key_count = 0;
  51. ZERO_LSN(newmeta->dbmeta.unused3);
  52. /* Update the version. */
  53. newmeta->dbmeta.version = 2;
  54. return (0);
  55. }
  56. /*
  57.  * __qam_32_qammeta --
  58.  * Upgrade the database from version 2 to version 3.
  59.  *
  60.  * PUBLIC: int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
  61.  */
  62. int
  63. __qam_32_qammeta(dbp, real_name, buf)
  64. DB *dbp;
  65. char *real_name;
  66. u_int8_t *buf;
  67. {
  68. QMETA32 *newmeta;
  69. QMETA31 *oldmeta;
  70. COMPQUIET(dbp, NULL);
  71. COMPQUIET(real_name, NULL);
  72. newmeta = (QMETA32 *)buf;
  73. oldmeta = (QMETA31 *)buf;
  74. /*
  75.  * Copy the fields to their new locations.
  76.  * We are dropping the first field so move
  77.  * from the top.
  78.  */
  79. newmeta->first_recno = oldmeta->first_recno;
  80. newmeta->cur_recno = oldmeta->cur_recno;
  81. newmeta->re_len = oldmeta->re_len;
  82. newmeta->re_pad = oldmeta->re_pad;
  83. newmeta->rec_page = oldmeta->rec_page;
  84. newmeta->page_ext = 0;
  85. /* cur_recno now points to the first free slot. */
  86. newmeta->cur_recno++;
  87. if (newmeta->first_recno == 0)
  88. newmeta->first_recno = 1;
  89. /* Update the version. */
  90. newmeta->dbmeta.version = 3;
  91. return (0);
  92. }