transactd 2.4.5 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +1 -1
  3. data/README-JA.md +52 -529
  4. data/README.md +52 -523
  5. data/bin/common/tdclc_32_3_0.dll +0 -0
  6. data/bin/common/tdclc_64_3_0.dll +0 -0
  7. data/build/common/system.cmake +2 -1
  8. data/build/common/transactd_cl_common.cmake +3 -6
  9. data/build/swig/ruby/ruby.swg +85 -28
  10. data/build/swig/ruby/tdclrb_wrap.cpp +3195 -1578
  11. data/build/swig/tdcl.i +161 -5
  12. data/build/tdclc/CMakeLists.txt +1 -0
  13. data/build/tdclc/tdclc.cbproj +7 -1
  14. data/build/tdclc/tdclc.rc +4 -4
  15. data/build/tdclcpp/tdclcpp.rc +4 -4
  16. data/build/tdclcpp/tdclcpp_bc.cbproj +2 -5
  17. data/build/tdclrb/tdclrb.rc +4 -4
  18. data/source/bzs/db/blobStructs.h +1 -1
  19. data/source/bzs/db/engine/mysql/database.cpp +199 -74
  20. data/source/bzs/db/engine/mysql/database.h +47 -18
  21. data/source/bzs/db/engine/mysql/dbManager.cpp +1 -0
  22. data/source/bzs/db/engine/mysql/mysqlInternal.h +32 -8
  23. data/source/bzs/db/protocol/tdap/btrDate.cpp +110 -75
  24. data/source/bzs/db/protocol/tdap/btrDate.h +46 -21
  25. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +18 -18
  26. data/source/bzs/db/protocol/tdap/client/activeTable.h +25 -25
  27. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +10 -4
  28. data/source/bzs/db/protocol/tdap/client/client.cpp +6 -5
  29. data/source/bzs/db/protocol/tdap/client/client.h +82 -15
  30. data/source/bzs/db/protocol/tdap/client/database.cpp +531 -142
  31. data/source/bzs/db/protocol/tdap/client/database.h +19 -6
  32. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +461 -408
  33. data/source/bzs/db/protocol/tdap/client/dbDef.h +11 -17
  34. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +61 -13
  35. data/source/bzs/db/protocol/tdap/client/field.cpp +1592 -1398
  36. data/source/bzs/db/protocol/tdap/client/field.h +110 -121
  37. data/source/bzs/db/protocol/tdap/client/fields.h +40 -10
  38. data/source/bzs/db/protocol/tdap/client/filter.h +69 -55
  39. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +296 -164
  40. data/source/bzs/db/protocol/tdap/client/groupQuery.h +77 -25
  41. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +31 -13
  42. data/source/bzs/db/protocol/tdap/client/memRecord.h +31 -21
  43. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
  44. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
  45. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +69 -24
  46. data/source/bzs/db/protocol/tdap/client/nsTable.h +3 -1
  47. data/source/bzs/db/protocol/tdap/client/recordset.cpp +1 -0
  48. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +46 -27
  49. data/source/bzs/db/protocol/tdap/client/request.h +2 -1
  50. data/source/bzs/db/protocol/tdap/client/serializer.cpp +44 -9
  51. data/source/bzs/db/protocol/tdap/client/serializer.h +1 -1
  52. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +182 -76
  53. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +23 -12
  54. data/source/bzs/db/protocol/tdap/client/stringConverter.h +8 -10
  55. data/source/bzs/db/protocol/tdap/client/table.cpp +172 -93
  56. data/source/bzs/db/protocol/tdap/client/table.h +112 -37
  57. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +17 -0
  58. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +0 -1
  59. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +0 -2
  60. data/source/bzs/db/protocol/tdap/client/trdormapi.h +1 -1
  61. data/source/bzs/db/protocol/tdap/fieldComp.h +698 -14
  62. data/source/bzs/db/protocol/tdap/myDateTime.cpp +723 -307
  63. data/source/bzs/db/protocol/tdap/myDateTime.h +294 -0
  64. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +164 -54
  65. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +6 -3
  66. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +133 -550
  67. data/source/bzs/db/protocol/tdap/mysql/request.h +6 -5
  68. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +217 -82
  69. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +1 -1
  70. data/source/bzs/db/protocol/tdap/tdapRequest.h +4 -9
  71. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +808 -17
  72. data/source/bzs/db/protocol/tdap/tdapSchema.h +656 -164
  73. data/source/bzs/db/protocol/tdap/tdapcapi.h +130 -28
  74. data/source/bzs/db/protocol/tdap/uri.h +40 -32
  75. data/source/bzs/db/transactd/connManager.cpp +1 -1
  76. data/source/bzs/db/transactd/transactd.cpp +7 -0
  77. data/source/bzs/env/compiler.h +107 -94
  78. data/source/bzs/env/crosscompile.cpp +24 -12
  79. data/source/bzs/env/crosscompile.h +75 -6
  80. data/source/bzs/env/mbcswchrLinux.cpp +2 -2
  81. data/source/bzs/env/tcharMinGW.h +4 -0
  82. data/source/bzs/example/changeSchema.cpp +22 -17
  83. data/source/bzs/example/queryData.cpp +4 -0
  84. data/source/bzs/netsvc/client/iconnection.h +3 -1
  85. data/source/bzs/netsvc/client/tcpClient.h +10 -3
  86. data/source/bzs/rtl/stringBuffers.cpp +7 -0
  87. data/source/bzs/test/tdclatl/bench_query_atl.js +6 -0
  88. data/source/bzs/test/tdclatl/bench_tdclatl.js +8 -1
  89. data/source/bzs/test/tdclatl/test_query_atl.js +22 -2
  90. data/source/bzs/test/tdclatl/test_v3.js +1017 -0
  91. data/source/bzs/test/tdclphp/transactd_Test.php +55 -21
  92. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +0 -5
  93. data/source/bzs/test/tdclphp/transactd_pool_Test.php +2 -0
  94. data/source/bzs/test/tdclphp/transactd_v3_Test.php +743 -0
  95. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -5
  96. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +2 -0
  97. data/source/bzs/test/tdclrb/transactd_spec.rb +39 -16
  98. data/source/bzs/test/tdclrb/transactd_v3_spec.rb +748 -0
  99. data/source/bzs/test/transactdBench/transactdBench.cpp +55 -58
  100. data/source/bzs/test/transactdBench/transactdBench2.cpp +1 -3
  101. data/source/bzs/test/trdclengn/testField.h +3305 -0
  102. data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +1050 -0
  103. data/source/bzs/test/trdclengn/test_trdclengn.cpp +112 -190
  104. data/source/bzs/test/trdclengn/testbase.h +137 -0
  105. data/source/global/ormsrcgen/srcgen.cpp +23 -12
  106. data/source/global/ormsrcgen/template/ormDataClass_template.h +2 -0
  107. data/source/global/querystmts/querystmts.cpp +2 -3
  108. data/source/global/tdclatl/Bitset.cpp +38 -0
  109. data/source/global/tdclatl/Bitset.h +63 -0
  110. data/source/global/tdclatl/Database.cpp +59 -18
  111. data/source/global/tdclatl/Database.h +7 -4
  112. data/source/global/tdclatl/DbDef.cpp +6 -6
  113. data/source/global/tdclatl/DbDef.h +2 -1
  114. data/source/global/tdclatl/Field.cpp +112 -0
  115. data/source/global/tdclatl/Field.h +19 -5
  116. data/source/global/tdclatl/FieldDef.cpp +137 -16
  117. data/source/global/tdclatl/FieldDef.h +18 -2
  118. data/source/global/tdclatl/FieldDefs.cpp +54 -1
  119. data/source/global/tdclatl/FieldDefs.h +3 -0
  120. data/source/global/tdclatl/GroupQuery.cpp +8 -8
  121. data/source/global/tdclatl/QueryBase.cpp +65 -0
  122. data/source/global/tdclatl/QueryBase.h +10 -0
  123. data/source/global/tdclatl/Record.cpp +33 -2
  124. data/source/global/tdclatl/Record.h +3 -1
  125. data/source/global/tdclatl/RecordsetQuery.cpp +42 -0
  126. data/source/global/tdclatl/RecordsetQuery.h +8 -0
  127. data/source/global/tdclatl/Table.cpp +127 -3
  128. data/source/global/tdclatl/Table.h +10 -1
  129. data/source/global/tdclatl/TableDef.cpp +41 -8
  130. data/source/global/tdclatl/TableDef.h +7 -2
  131. data/source/global/tdclatl/activeTable.cpp +40 -71
  132. data/source/global/tdclatl/resource.h +0 -0
  133. data/source/global/tdclatl/tdclatl.idl +222 -28
  134. data/source/linux/tchar.h +100 -96
  135. data/transactd.gemspec +2 -2
  136. metadata +13 -11
  137. data/BUILD_UNIX-JA.md +0 -161
  138. data/BUILD_WIN-JA.md +0 -326
  139. data/README_ORMSRCGEN-JA.md +0 -115
  140. data/README_ORMSRCGEN.md +0 -118
  141. data/RELEASE_NOTE-JA.md +0 -356
  142. data/RELEASE_NOTE.md +0 -360
  143. data/bin/common/tdclc_32_2_4.dll +0 -0
  144. data/bin/common/tdclc_64_2_4.dll +0 -0
  145. data/source/bzs/test/trdclengn/test_blob.cpp +0 -375
@@ -1,375 +0,0 @@
1
- /* =================================================================
2
- Copyright (C) 2014 BizStation Corp All rights reserved.
3
-
4
- This program is free software; you can redistribute it and/or
5
- modify it under the terms of the GNU General Public License
6
- as published by the Free Software Foundation; either version 2
7
- of the License, or (at your option) any later version.
8
-
9
- This program is distributed in the hope that it will be useful,
10
- but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
- GNU General Public License for more details.
13
-
14
- You should have received a copy of the GNU General Public License
15
- along with this program; if not, write to the Free Software
16
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
- 02111-1307, USA.
18
- ================================================================= */
19
- #include <boost/test/included/unit_test.hpp>
20
- #include <bzs/db/protocol/tdap/client/database.h>
21
- #include <bzs/db/protocol/tdap/client/table.h>
22
- #include <bzs/db/protocol/tdap/client/dbDef.h>
23
- #include <bzs/db/protocol/tdap/mysql/characterset.h>
24
- #include <bzs/db/protocol/tdap/tdapcapi.h>
25
- #include <bzs/db/protocol/tdap/client/stringConverter.h>
26
- #include <stdio.h>
27
- #include <bzs/db/protocol/tdap/client/filter.h>
28
-
29
- using namespace bzs::db::protocol::tdap::client;
30
- using namespace bzs::db::protocol::tdap;
31
- using namespace std;
32
- #define ISOLATION_READ_COMMITTED
33
-
34
- #define URL _T("tdap://localhost/testString?dbfile=test.bdf")
35
- #define TABLE_NAME _T("comments")
36
- #define TABLE_ID 1
37
-
38
- #define FDN_ID _T("id")
39
- #define FDN_USER _T("user_id")
40
- #define FDN_BODY _T("body")
41
- #define FDN_IMAGE _T("image")
42
- #define FDI_ID (short)0
43
- #define FDI_USER (short)1
44
- #define FDI_BODY (short)2
45
- #define FDI_IMAGE (short)3
46
-
47
- boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]);
48
-
49
- boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[])
50
- {
51
- return 0;
52
- }
53
-
54
- class fixture
55
- {
56
- mutable database* m_db;
57
-
58
- public:
59
- fixture() : m_db(NULL)
60
- {
61
- m_db = database::create();
62
- if (!m_db)
63
- printf("Error database::create()\n");
64
- }
65
-
66
- ~fixture()
67
- {
68
- if (m_db)
69
- database::destroy(m_db);
70
- }
71
-
72
- ::database* db() const { return m_db; }
73
- };
74
-
75
- // ------------------------------------------------------------------------
76
-
77
- void doInsertStringFileter(table* tb)
78
- {
79
- tb->clearBuffer();
80
- tb->setFV(FDI_USER, 1);
81
- tb->setFV(FDI_BODY, _T("1\ntest\nテスト\n\nあいうえおあいうえおb"));
82
- tb->setFV(FDI_IMAGE, _T("1\ntest\nテスト\n\nあいうえおあいうえおi"));
83
- tb->insert();
84
-
85
- tb->clearBuffer();
86
- tb->setFV(FDI_USER, 1);
87
- tb->setFV(FDI_BODY, _T("2\ntest\nテスト\n\nあいうえおあいうえおb"));
88
- tb->setFV(FDI_IMAGE, _T("2\ntest\nテスト\n\nあいうえおあいうえおi"));
89
- tb->insert();
90
-
91
- tb->clearBuffer();
92
- tb->setFV(FDI_USER, 2);
93
- tb->setFV(FDI_BODY, _T("3\ntest\nテスト\n\nあいうえおあいうえおb"));
94
- tb->setFV(FDI_IMAGE, _T("3\ntest\nテスト\n\nあいうえおあいうえおi"));
95
- tb->insert();
96
- }
97
-
98
- void doTestSeek(table* tb)
99
- {
100
- uint_td dummy = 0;
101
- // 1
102
- tb->clearBuffer();
103
- tb->setFV(FDI_ID, 1);
104
- tb->seek();
105
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestSeek - stat 1");
106
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 1, "doTestSeek - id 1");
107
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 1, "doTestSeek - user_id 1");
108
- BOOST_CHECK_MESSAGE(
109
- _tstring(tb->getFVstr(FDI_BODY)) ==
110
- _tstring(_T("1\ntest\nテスト\n\nあいうえおあいうえおb")),
111
- "doTestSeek - body 1");
112
- // 2
113
- tb->seekNext();
114
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestSeek - stat 2");
115
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 2, "doTestSeek - id 2");
116
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 1, "doTestSeek - user_id 2");
117
- BOOST_CHECK_MESSAGE(
118
- _tstring(tb->getFVstr(FDI_BODY)) ==
119
- _tstring(_T("2\ntest\nテスト\n\nあいうえおあいうえおb")),
120
- "doTestSeek - body 2");
121
- // 3
122
- tb->seekNext();
123
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestSeek - stat 3");
124
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 3, "doTestSeek - id 3");
125
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 2, "doTestSeek - user_id 3");
126
- BOOST_CHECK_MESSAGE(
127
- _tstring(tb->getFVstr(FDI_BODY)) ==
128
- _tstring(_T("3\ntest\nテスト\n\nあいうえおあいうえおb")),
129
- "doTestSeek - body 3");
130
- // 2
131
- tb->seekPrev();
132
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestSeek - stat 2");
133
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 2, "doTestSeek - id 2");
134
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 1, "doTestSeek - user_id 2");
135
- BOOST_CHECK_MESSAGE(
136
- _tstring(tb->getFVstr(FDI_BODY)) ==
137
- _tstring(_T("2\ntest\nテスト\n\nあいうえおあいうえおb")),
138
- "doTestSeek - body 2");
139
- }
140
-
141
- void doTestFind(table* tb)
142
- {
143
- tb->setKeyNum(0);
144
- tb->clearBuffer();
145
-
146
- tb->setFilter(_T("id >= 1 and id < 3"), 1, 0);
147
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestFind - setFilter");
148
-
149
- tb->setFV(FDI_ID, 1);
150
- tb->find(table::findForword);
151
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestFind - find");
152
- BOOST_CHECK_MESSAGE(1 == tb->getFVint(FDI_ID), "doTestFind - getFVint 1");
153
-
154
- tb->findNext(true);
155
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestFind - findNext");
156
- BOOST_CHECK_MESSAGE(2 == tb->getFVint(FDI_ID), "doTestFind - getFVint 2");
157
- BOOST_CHECK_MESSAGE(
158
- _tstring(_T("2\ntest\nテスト\n\nあいうえおあいうえおb")) ==
159
- _tstring(tb->getFVstr(FDI_BODY)),
160
- "doTestFind - getFVstr 2");
161
- tb->findNext(true);
162
- BOOST_CHECK_MESSAGE(9 == tb->stat(), "doTestFind - findNext");
163
- // 2
164
- // tb->findPrev(true);
165
- // BOOST_CHECK_MESSAGE(tb->stat() == STATUS_PROGRAM_ERROR, "doTestFind -
166
- // findPrev");
167
- }
168
-
169
- void doTestUpdate(table* tb)
170
- {
171
- // select 1
172
- tb->clearBuffer();
173
- tb->setFV(FDI_ID, 1);
174
- tb->seek();
175
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - stat 1");
176
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 1, "doTestUpdate - id 1");
177
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 1,
178
- "doTestUpdate - user_id 1");
179
- BOOST_CHECK_MESSAGE(
180
- _tstring(tb->getFVstr(FDI_BODY)) ==
181
- _tstring(_T("1\ntest\nテスト\n\nあいうえおあいうえおb")),
182
- "doTestUpdate - body 1");
183
- // update
184
- tb->setFV(FDI_USER, 11);
185
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - setFV stat 1");
186
- tb->setFV(FDI_BODY, "1\nテスト\ntest\n\nABCDEFG");
187
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - setFV stat 1");
188
- tb->update();
189
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - update stat 1");
190
- // select 2
191
- tb->seekNext();
192
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - stat 2");
193
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 2, "doTestUpdate - id 2");
194
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 1,
195
- "doTestUpdate - user_id 2");
196
- BOOST_CHECK_MESSAGE(
197
- _tstring(tb->getFVstr(FDI_BODY)) ==
198
- _tstring(_T("2\ntest\nテスト\n\nあいうえおあいうえおb")),
199
- "doTestUpdate - body 2");
200
- // update
201
- tb->setFV(FDI_USER, 12);
202
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - setFV stat 2");
203
- tb->setFV(FDI_BODY, "2\nテスト\ntest\n\nABCDEFG");
204
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - setFV stat 2");
205
- tb->update();
206
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - update stat 2");
207
- // check 1
208
- tb->seekPrev();
209
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - stat 2 1");
210
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 1, "doTestUpdate - id 2 1");
211
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 11,
212
- "doTestUpdate - user_id 2 1");
213
- BOOST_CHECK_MESSAGE(_tstring(tb->getFVstr(FDI_BODY)) ==
214
- _tstring(_T("1\nテスト\ntest\n\nABCDEFG")),
215
- "doTestUpdate - body 2 1");
216
- // check 2
217
- tb->seekNext();
218
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestUpdate - stat 2 2");
219
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 2, "doTestUpdate - id 2 2");
220
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 12,
221
- "doTestUpdate - user_id 2 2");
222
- BOOST_CHECK_MESSAGE(_tstring(tb->getFVstr(FDI_BODY)) ==
223
- _tstring(_T("2\nテスト\ntest\n\nABCDEFG")),
224
- "doTestUpdate - body 2 2");
225
- }
226
-
227
- void doTestDelete(table* tb)
228
- {
229
- // delete 2
230
- tb->clearBuffer();
231
- tb->setFV(FDI_ID, 2);
232
- tb->seek();
233
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestDelete - seek 2");
234
- tb->del();
235
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestDelete - delete 2");
236
- // select 1
237
- tb->clearBuffer();
238
- tb->setFV(FDI_ID, 1);
239
- tb->seek();
240
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestDelete - stat 1");
241
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 1, "doTestDelete - id 1");
242
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 11,
243
- "doTestDelete - user_id 1");
244
- BOOST_CHECK_MESSAGE(_tstring(tb->getFVstr(FDI_BODY)) ==
245
- _tstring(_T("1\nテスト\ntest\n\nABCDEFG")),
246
- "doTestDelete - body 1");
247
- // next is 3
248
- tb->seekNext();
249
- BOOST_CHECK_MESSAGE(0 == tb->stat(), "doTestDelete - stat 3");
250
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_ID) == 3, "doTestDelete - id 3");
251
- BOOST_CHECK_MESSAGE(tb->getFVint(FDI_USER) == 2,
252
- "doTestDelete - user_id 3");
253
- BOOST_CHECK_MESSAGE(
254
- _tstring(tb->getFVstr(FDI_BODY)) ==
255
- _tstring(_T("3\ntest\nテスト\n\nあいうえおあいうえおb")),
256
- "doTestDelete - body 3");
257
- // eof
258
- tb->seekNext();
259
- BOOST_CHECK_MESSAGE(tb->stat() == STATUS_EOF, "doTestDelete - eof 3");
260
- }
261
-
262
- void createDatabase(database* db)
263
- {
264
- db->create(URL);
265
- if (db->stat() == STATUS_TABLE_EXISTS_ERROR)
266
- {
267
- db->open(URL, 0, 0);
268
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase 1");
269
- db->drop();
270
- BOOST_CHECK_MESSAGE(0 == db->stat(), "drop stat=" << db->stat());
271
- db->create(URL);
272
- }
273
- BOOST_CHECK_MESSAGE(0 == db->stat(), "createNewDataBase");
274
- }
275
-
276
- void createTable(database* db)
277
- {
278
- // create table
279
- dbdef* def = db->dbDef();
280
- tabledef td;
281
- memset(&td, 0, sizeof(td));
282
- td.setTableName(TABLE_NAME);
283
- _TCHAR buf[267];
284
- _tcscpy_s(buf, 100, TABLE_NAME);
285
- _tcscat_s(buf, 100, _T(".dat"));
286
- td.setFileName(buf);
287
- td.id = TABLE_ID;
288
- td.primaryKeyNum = -1;
289
- td.parentKeyNum = -1;
290
- td.replicaKeyNum = -1;
291
- td.pageSize = 2048;
292
- td.charsetIndex = CHARSET_UTF8B4;
293
-
294
- def->insertTable(&td);
295
- BOOST_CHECK_MESSAGE(0 == def->stat(), "insertTable stat = " << def->stat());
296
-
297
- fielddef* fd = def->insertField(TABLE_ID, FDI_ID);
298
- fd->setName(FDN_ID);
299
- fd->type = ft_autoinc;
300
- fd->len = (ushort_td)4;
301
- def->updateTableDef(TABLE_ID);
302
- BOOST_CHECK_MESSAGE(0 == def->stat(),
303
- "updateTableDef 1 stat = " << def->stat());
304
-
305
- fd = def->insertField(TABLE_ID, FDI_USER);
306
- fd->setName(FDN_USER);
307
- fd->type = ft_integer;
308
- fd->len = (ushort_td)4;
309
- def->updateTableDef(TABLE_ID);
310
- BOOST_CHECK_MESSAGE(0 == def->stat(),
311
- "updateTableDef 1 stat = " << def->stat());
312
-
313
- fd = def->insertField(TABLE_ID, FDI_BODY);
314
- fd->setName(FDN_BODY);
315
- fd->type = ft_mytext;
316
- fd->len = 10;
317
- def->updateTableDef(TABLE_ID);
318
- BOOST_CHECK_MESSAGE(0 == def->stat(),
319
- "updateTableDef 2 stat = " << def->stat());
320
-
321
- fd = def->insertField(TABLE_ID, FDI_IMAGE);
322
- fd->setName(FDN_IMAGE);
323
- fd->type = ft_myblob;
324
- fd->len = 10;
325
- def->updateTableDef(TABLE_ID);
326
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 3");
327
-
328
- keydef* kd = def->insertKey(TABLE_ID, 0);
329
- kd->segments[0].fieldNum = 0;
330
- kd->segments[0].flags.bit8 = 1; // extended key type
331
- kd->segments[0].flags.bit1 = 1; // changeable
332
- kd->segmentCount = 1;
333
- def->updateTableDef(TABLE_ID);
334
- BOOST_CHECK_MESSAGE(0 == def->stat(), "updateTableDef 4");
335
- }
336
-
337
- void testStringFileter(database* db)
338
- {
339
- createDatabase(db);
340
-
341
- db->open(URL, 0, 0);
342
- BOOST_CHECK_MESSAGE(0 == db->stat(),
343
- "createNewDataBase 1 stat = " << db->stat());
344
-
345
- createTable(db);
346
-
347
- table* tb = db->openTable(TABLE_ID);
348
- BOOST_CHECK_MESSAGE(0 == db->stat(), "openTable");
349
-
350
- doInsertStringFileter(tb);
351
- doTestSeek(tb);
352
- doTestFind(tb);
353
- doTestUpdate(tb);
354
- doTestDelete(tb);
355
-
356
- tb->release();
357
-
358
- db->close();
359
-
360
- db->open(URL, 0, 0);
361
- BOOST_CHECK_MESSAGE(0 == db->stat(), "drop 1");
362
- db->drop();
363
- BOOST_CHECK_MESSAGE(0 == db->stat(), "drop stat=" << db->stat());
364
- }
365
-
366
- // ------------------------------------------------------------------------
367
- BOOST_AUTO_TEST_SUITE(filter)
368
-
369
- BOOST_FIXTURE_TEST_CASE(stringFileter, fixture)
370
- {
371
- testStringFileter(db());
372
- }
373
-
374
- BOOST_AUTO_TEST_SUITE_END()
375
- // ------------------------------------------------------------------------