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

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 2000-2002
  5.  * Sleepycat Software.  All rights reserved.
  6.  *
  7.  * $Id: TestTruncate.cpp,v 1.5 2002/01/23 14:26:41 bostic Exp $
  8.  */
  9. /*
  10.  * Do some regression tests for constructors.
  11.  * Run normally (without arguments) it is a simple regression test.
  12.  * Run with a numeric argument, it repeats the regression a number
  13.  * of times, to try to determine if there are memory leaks.
  14.  */
  15. #include <db_cxx.h>
  16. #include <iostream.h>
  17. int main(int argc, char *argv[])
  18. {
  19. try {
  20. Db *db = new Db(NULL, 0);
  21. db->open(NULL, "my.db", NULL, DB_BTREE, DB_CREATE, 0644);
  22. // populate our massive database.
  23. // all our strings include null for convenience.
  24. // Note we have to cast for idiomatic
  25. // usage, since newer gcc requires it.
  26. Dbt *keydbt = new Dbt((char*)"key", 4);
  27. Dbt *datadbt = new Dbt((char*)"data", 5);
  28. db->put(NULL, keydbt, datadbt, 0);
  29. // Now, retrieve.  We could use keydbt over again,
  30. // but that wouldn't be typical in an application.
  31. Dbt *goodkeydbt = new Dbt((char*)"key", 4);
  32. Dbt *badkeydbt = new Dbt((char*)"badkey", 7);
  33. Dbt *resultdbt = new Dbt();
  34. resultdbt->set_flags(DB_DBT_MALLOC);
  35. int ret;
  36. if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
  37. cout << "get: " << DbEnv::strerror(ret) << "n";
  38. }
  39. else {
  40. char *result = (char *)resultdbt->get_data();
  41. cout << "got data: " << result << "n";
  42. }
  43. if ((ret = db->get(NULL, badkeydbt, resultdbt, 0)) != 0) {
  44. // We expect this...
  45. cout << "get using bad key: "
  46.      << DbEnv::strerror(ret) << "n";
  47. }
  48. else {
  49. char *result = (char *)resultdbt->get_data();
  50. cout << "*** got data using bad key!!: "
  51.      << result << "n";
  52. }
  53. // Now, truncate and make sure that it's really gone.
  54. cout << "truncating data...n";
  55. u_int32_t nrecords;
  56. db->truncate(NULL, &nrecords, 0);
  57. cout << "truncate returns " << nrecords << "n";
  58. if ((ret = db->get(NULL, goodkeydbt, resultdbt, 0)) != 0) {
  59. // We expect this...
  60. cout << "after truncate get: "
  61.      << DbEnv::strerror(ret) << "n";
  62. }
  63. else {
  64. char *result = (char *)resultdbt->get_data();
  65. cout << "got data: " << result << "n";
  66. }
  67. db->close(0);
  68. cout << "finished testn";
  69. }
  70. catch (DbException &dbe) {
  71. cerr << "Db Exception: " << dbe.what();
  72. }
  73. return 0;
  74. }