transactd 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. metadata +267 -0
@@ -0,0 +1,141 @@
1
+ #include <stdio.h>
2
+ #include <bzs/db/protocol/tdap/client/database.h>
3
+ #include <bzs/db/protocol/tdap/client/table.h>
4
+ #include <bzs/db/protocol/tdap/client/dbdef.h>
5
+ #include <vector>
6
+
7
+ using namespace bzs::db::protocol::tdap::client;
8
+ using namespace bzs::db::protocol::tdap;
9
+
10
+ /**
11
+ @brief read records and manual O/R mapping example
12
+
13
+ This program read records of the "user" table where group = 3.
14
+ And O/R mapping to the user class.
15
+ This program use the filter operation on server side.
16
+
17
+ Please execute "create database" , "change schema" and "insert records" example
18
+ before execute this example.
19
+
20
+ */
21
+
22
+ static const short fieldnum_id = 0;
23
+ static const short fieldnum_name = 1;
24
+ static const short fieldnum_group = 2;
25
+ static const short fieldnum_tel = 3;
26
+ static const char_td keynum_group = 1;
27
+
28
+ /** User class */
29
+ class user
30
+ {
31
+ public:
32
+ int id;
33
+ std::_tstring name;
34
+ int group;
35
+ std::_tstring tel;
36
+
37
+ };
38
+
39
+ /** dump user to screen */
40
+ void dumpUser(const user* user)
41
+ {
42
+ _tprintf(_T(" id %d\n") ,user->id);
43
+ _tprintf(_T(" name %s\n") ,user->name.c_str());
44
+ _tprintf(_T(" group %d\n") ,user->group);
45
+ _tprintf(_T(" tel %s\n\n") ,user->tel.c_str());
46
+
47
+ }
48
+
49
+ /** O/R mapping functional object*/
50
+ class userMappper
51
+ {
52
+ std::vector<user*>& m_users;
53
+ public:
54
+ userMappper(std::vector<user*>& users):m_users(users){}
55
+ void operator()(table* tb)
56
+ {
57
+ user* u = new user();
58
+ u->id = tb->getFVint(fieldnum_id);
59
+ u->name = tb->getFVstr(fieldnum_name);
60
+ u->group = tb->getFVint(fieldnum_group);
61
+ u->tel = tb->getFVstr(fieldnum_tel);
62
+ m_users.push_back(u);
63
+ }
64
+ };
65
+
66
+ /** show database operation error
67
+ */
68
+ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
69
+ {
70
+ _TCHAR tmp[1024]={0x00};
71
+ nstable::tdapErr(0x00, statusCode, tableName, tmp);
72
+ _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
73
+ }
74
+
75
+ bool readUsers(table* tb, std::vector<user*>& users)
76
+ {
77
+ userMappper ormap(users);
78
+ tb->clearBuffer();
79
+ tb->setKeyNum(keynum_group); //use group key
80
+ tb->setFV(fieldnum_group, 3);// set group = 3;
81
+ tb->seekGreater(true /*orEqual*/);
82
+ if (tb->stat() == 0)
83
+ tb->setFilter(_T("group = 3"), 1/*rejectCount*/, 0/*max records*/);
84
+ while (1)
85
+ {
86
+ if (tb->stat() != 0)
87
+ {
88
+ if (tb->stat() == STATUS_EOF)
89
+ return true;
90
+ showError(_T("read user"), tb->tableDef()->tableName(), tb->stat());
91
+ return false;
92
+ }
93
+ ormap(tb);
94
+ tb->findNext();
95
+ }
96
+ }
97
+
98
+ /** Open database
99
+ */
100
+ bool openDatabase(database* db, const _TCHAR* uri)
101
+ {
102
+ db->open(uri, TYPE_SCHEMA_BDF);
103
+ if (db->stat() != 0)
104
+ {
105
+ showError(_T("open daatabase"), NULL, db->stat());
106
+ return false;
107
+ }
108
+ return true;
109
+ }
110
+
111
+ #pragma argsused
112
+ int _tmain(int argc, _TCHAR* argv[])
113
+ {
114
+ int result = 0;
115
+ static const _TCHAR* uri = _T("tdap://localhost/test?dbfile=test.bdf");
116
+ database* db = database::create();
117
+
118
+ if (openDatabase(db, uri))
119
+ {
120
+ table* tbu = db->openTable(_T("user"));
121
+ if (db->stat() != 0)
122
+ showError(_T("open user table"), NULL, db->stat());
123
+ else
124
+ {
125
+ std::vector<user*> users;
126
+ if (readUsers(tbu, users))
127
+ {
128
+ _tprintf(_T("Read records success.\nRecord count = %d\n"), users.size());
129
+ std::for_each(users.begin(), users.end(), dumpUser);
130
+ }
131
+
132
+ for (size_t i=0;i<users.size();++i)
133
+ delete users[i];
134
+
135
+ tbu->release();
136
+ }
137
+ db->close();
138
+ }
139
+ database::destroy(db);
140
+ return result;
141
+ }
@@ -0,0 +1,107 @@
1
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
2
+ #include <iostream>
3
+ #include <vector>
4
+
5
+ using namespace bzs::db::protocol::tdap::client;
6
+ using namespace bzs::db::protocol::tdap;
7
+
8
+ /**
9
+ @brief Read records and manual O/R mapping example
10
+
11
+ This program read records of the "user" table where group = 3.
12
+ And O/R mapping to the user class.
13
+ This program use the filter operation on server side.
14
+
15
+ Please execute "create database" , "change schema" and "insert records" example
16
+ before execute this example.
17
+
18
+ */
19
+
20
+ static const short fieldnum_id = 0;
21
+ static const short fieldnum_name = 1;
22
+ static const short fieldnum_group = 2;
23
+ static const short fieldnum_tel = 3;
24
+ static const char_td keynum_group = 1;
25
+
26
+ /** User class */
27
+ class user
28
+ {
29
+ public:
30
+ int id;
31
+ std::string name;
32
+ int group;
33
+ std::string tel;
34
+
35
+ };
36
+
37
+ typedef boost::shared_ptr<user> user_ptr;
38
+
39
+ /** dump user to screen */
40
+ void dumpUser(const user_ptr& user)
41
+ {
42
+ std::cout << " id " << user->id << std::endl;
43
+ std::cout << " name " << user->name << std::endl;
44
+ std::cout << " group " << user->group << std::endl;
45
+ std::cout << " tel " << user->tel << std::endl << std::endl;
46
+
47
+ }
48
+
49
+ /** OR mapping functional object*/
50
+ class userMappper
51
+ {
52
+ std::vector<user_ptr>& m_users;
53
+ public:
54
+ userMappper(std::vector<user_ptr>& users):m_users(users){}
55
+ void operator()(const fields& fds)
56
+ {
57
+ user_ptr u(new user());
58
+ u->id = fds[fieldnum_id].i();
59
+ u->name = fds[fieldnum_name].a_str(); //get by ansi string
60
+ u->group = fds[fieldnum_group].i();
61
+ u->tel = fds[fieldnum_tel].a_str(); //get by ansi string
62
+ m_users.push_back(u);
63
+ }
64
+ };
65
+
66
+ void readUsers(table_ptr tb, std::vector<user_ptr>& users)
67
+ {
68
+
69
+ // Get filterIterator. This filter is execute on server side.
70
+ filterParams fp( _T("group = 3"), 1 , 0);
71
+ findIterator itsf = find(tb, keynum_group, fp, 3);
72
+
73
+ // O/R mapping functional object
74
+ userMappper ormap(users);
75
+
76
+ //loop each group=1 records
77
+ for_each(itsf, ormap);
78
+
79
+ }
80
+
81
+ #pragma argsused
82
+ int _tmain(int argc, _TCHAR* argv[])
83
+ {
84
+ database_ptr db = createDatadaseObject();
85
+ try
86
+ {
87
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
88
+ openDatabase(db, param);
89
+
90
+ table_ptr tb = openTable(db, _T("user"));
91
+ std::vector<user_ptr> users;
92
+ readUsers(tb, users);
93
+
94
+ std::cout << "Read records success.\nRecord count = " << users.size() << std::endl;
95
+
96
+ //dump users to screen.
97
+ std::for_each(users.begin(), users.end(), dumpUser);
98
+
99
+ return 0;
100
+ }
101
+
102
+ catch(bzs::rtl::exception& e)
103
+ {
104
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
105
+ }
106
+ return 1;
107
+ }
@@ -0,0 +1,99 @@
1
+ #include <stdio.h>
2
+ #include <bzs/db/protocol/tdap/client/database.h>
3
+ #include <bzs/db/protocol/tdap/client/table.h>
4
+ #include <bzs/db/protocol/tdap/client/dbdef.h>
5
+
6
+
7
+ using namespace bzs::db::protocol::tdap::client;
8
+ using namespace bzs::db::protocol::tdap;
9
+
10
+
11
+ /**
12
+ @brief read and update example
13
+
14
+ This program updates some records of a "user" table.
15
+ Change group of user in group 1 to 3
16
+
17
+ Please execute "create database" , "change schema" and "insert records" example
18
+ before execute this example.
19
+
20
+ */
21
+
22
+
23
+ static const short fieldnum_id = 0;
24
+ static const short fieldnum_name = 1;
25
+ static const short fieldnum_group = 2;
26
+ static const short fieldnum_tel = 3;
27
+
28
+ static const char_td keynum_group = 1;
29
+ /** show database operation error
30
+ */
31
+ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
32
+ {
33
+ _TCHAR tmp[1024]={0x00};
34
+ nstable::tdapErr(0x00, statusCode, tableName, tmp);
35
+ _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
36
+ }
37
+
38
+
39
+ bool updateUsers(table* tb)
40
+ {
41
+ tb->clearBuffer();
42
+ tb->setKeyNum(keynum_group); //use group key
43
+ tb->setFV(fieldnum_group, 1);// set group = 1;
44
+ tb->seekGreater(true /*orEqual*/);
45
+ while (tb->stat() == 0)
46
+ {
47
+ //check group value.
48
+ if (tb->getFVint(fieldnum_group) != 1)
49
+ break;
50
+
51
+ //update group
52
+ tb->setFV(fieldnum_group, 3); //change group 1 to 3
53
+ tb->update(nstable::changeCurrentNcc); //Important ncc=true !
54
+ if (tb->stat()!=0)
55
+ showError(_T("update user"), tb->tableDef()->tableName(), tb->stat());
56
+ else
57
+ tb->seekNext();
58
+ }
59
+ return ((tb->stat() == STATUS_EOF)||(tb->stat()== 0));
60
+ }
61
+
62
+
63
+
64
+ /** Open database
65
+ */
66
+ bool openDatabase(database* db, const _TCHAR* uri)
67
+ {
68
+ db->open(uri, TYPE_SCHEMA_BDF);
69
+ if (db->stat() != 0)
70
+ {
71
+ showError(_T("open daatabase"), NULL, db->stat());
72
+ return false;
73
+ }
74
+ return true;
75
+ }
76
+
77
+ #pragma argsused
78
+ int _tmain(int argc, _TCHAR* argv[])
79
+ {
80
+ int result = 0;
81
+ static const _TCHAR* uri = _T("tdap://localhost/test?dbfile=test.bdf");
82
+ database* db = database::create();
83
+
84
+ if (openDatabase(db, uri))
85
+ {
86
+ table* tbu = db->openTable(_T("user"));
87
+ if (db->stat() != 0)
88
+ showError(_T("open user table"), NULL, db->stat());
89
+ else
90
+ {
91
+ if (updateUsers(tbu))
92
+ _tprintf(_T("Update records success. \n"));
93
+ tbu->release();
94
+ }
95
+ db->close();
96
+ }
97
+ database::destroy(db);
98
+ return result;
99
+ }
@@ -0,0 +1,71 @@
1
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
2
+ #include <iostream>
3
+
4
+ using namespace bzs::db::protocol::tdap::client;
5
+ using namespace bzs::db::protocol::tdap;
6
+
7
+
8
+ /**
9
+ @brief read and update records example
10
+
11
+ This program updates some records of a "user" table.
12
+ Change group of user in group 1 to 3
13
+
14
+ Please execute "create database" , "change schema" and "insert records" example
15
+ before execute this example.
16
+
17
+ */
18
+
19
+
20
+ static const short fieldnum_id = 0;
21
+ static const short fieldnum_group = 2;
22
+ static const char_td keynum_group = 1;
23
+
24
+ int isGroupOne(const fields& fds)
25
+ {
26
+ return (fds[fieldnum_group].i() == 1)? filter_validate_value
27
+ : filter_invalidate_value;
28
+ }
29
+
30
+ void changeGroupTo3(const fields& fds)
31
+ {
32
+ fds[fieldnum_group] = 3;
33
+ updateRecord(fds);
34
+ }
35
+
36
+ void updateUsers(table_ptr tb)
37
+ {
38
+ // Execute seekGreaterOrEqual with key number and key value
39
+ indexIterator it = readIndex_v(tb, eSeekGreaterOrEqual, keynum_group, 1);
40
+
41
+ // Wrap filtered iterator
42
+ filterdIndexIterator itf(it, isGroupOne);
43
+
44
+ //loop each group=1 records and update to 3
45
+ for_each(itf, changeGroupTo3);
46
+
47
+
48
+ }
49
+
50
+
51
+ #pragma argsused
52
+ int _tmain(int argc, _TCHAR* argv[])
53
+ {
54
+ database_ptr db = createDatadaseObject();
55
+ try
56
+ {
57
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
58
+ openDatabase(db, param);
59
+
60
+ table_ptr tb = openTable(db, _T("user"));
61
+ updateUsers(tb);
62
+ std::cout << "Insert records success." << std::endl;
63
+ return 0;
64
+ }
65
+
66
+ catch(bzs::rtl::exception& e)
67
+ {
68
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
69
+ }
70
+ return 1;
71
+ }
@@ -0,0 +1,104 @@
1
+ #include <stdio.h>
2
+ #include <bzs/db/protocol/tdap/client/database.h>
3
+ #include <bzs/db/protocol/tdap/client/table.h>
4
+ #include <bzs/db/protocol/tdap/client/dbdef.h>
5
+
6
+
7
+ using namespace bzs::db::protocol::tdap::client;
8
+ using namespace bzs::db::protocol::tdap;
9
+
10
+
11
+ /**
12
+ @brief update records in transaction example
13
+
14
+ This program updates some records of a "user" table.
15
+ Change group of user in group 1 to 3
16
+
17
+ Please execute "create database" , "change schema" and "insert records" example
18
+ before execute this example.
19
+
20
+ */
21
+
22
+
23
+ static const short fieldnum_id = 0;
24
+ static const short fieldnum_name = 1;
25
+ static const short fieldnum_group = 2;
26
+ static const short fieldnum_tel = 3;
27
+
28
+ static const char_td keynum_group = 1;
29
+ /** show database operation error
30
+ */
31
+ void showError(const _TCHAR* caption,const _TCHAR* tableName, short statusCode)
32
+ {
33
+ _TCHAR tmp[1024]={0x00};
34
+ nstable::tdapErr(0x00, statusCode, tableName, tmp);
35
+ _tprintf(_T("%s error No.%ld %s\n"),caption, statusCode, tmp);
36
+ }
37
+
38
+
39
+ bool updateUsers(table* tb)
40
+ {
41
+ tb->clearBuffer();
42
+ tb->setKeyNum(keynum_group); //use group key
43
+ tb->setFV(fieldnum_group, 1);// set group = 1;
44
+ tb->seekGreater(true /*orEqual*/);
45
+ while (tb->stat() == 0)
46
+ {
47
+ //check group value.
48
+ if (tb->getFVint(fieldnum_group) != 1)
49
+ break;
50
+
51
+ //update group
52
+ tb->setFV(fieldnum_group, 3); //change group 1 to 3
53
+ tb->update(nstable::changeCurrentNcc /*ncc=true*/); //Important ncc=true !
54
+ if (tb->stat()!=0)
55
+ showError(_T("update user"), tb->tableDef()->tableName(), tb->stat());
56
+ else
57
+ tb->seekNext();
58
+ }
59
+ return ((tb->stat() == STATUS_EOF)||(tb->stat()== 0));
60
+ }
61
+
62
+
63
+
64
+ /** Open database
65
+ */
66
+ bool openDatabase(database* db, const _TCHAR* uri)
67
+ {
68
+ db->open(uri, TYPE_SCHEMA_BDF);
69
+ if (db->stat() != 0)
70
+ {
71
+ showError(_T("open daatabase"), NULL, db->stat());
72
+ return false;
73
+ }
74
+ return true;
75
+ }
76
+
77
+ #pragma argsused
78
+ int _tmain(int argc, _TCHAR* argv[])
79
+ {
80
+ int result = 0;
81
+ static const _TCHAR* uri = _T("tdap://localhost/test?dbfile=test.bdf");
82
+ database* db = database::create();
83
+
84
+ if (openDatabase(db, uri))
85
+ {
86
+ table* tbu = db->openTable(_T("user"));
87
+ if (db->stat() != 0)
88
+ showError(_T("open user table"), NULL, db->stat());
89
+ else
90
+ {
91
+ db->beginTrn();
92
+ if (updateUsers(tbu))
93
+ {
94
+ db->endTrn();
95
+ _tprintf(_T("Update records success. \n"));
96
+ }else
97
+ db->abortTrn();
98
+ tbu->release();
99
+ }
100
+ db->close();
101
+ }
102
+ database::destroy(db);
103
+ return result;
104
+ }
@@ -0,0 +1,80 @@
1
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
2
+ #include <iostream>
3
+
4
+ using namespace bzs::db::protocol::tdap::client;
5
+ using namespace bzs::db::protocol::tdap;
6
+
7
+
8
+ /**
9
+ @brief update records in transaction example
10
+
11
+ This program updates some records of a "user" table.
12
+ Change group of user in group 1 to 3
13
+
14
+ Please execute "create database" , "change schema" and "insert records" example
15
+ before execute this example.
16
+
17
+ */
18
+
19
+
20
+ static const short fieldnum_id = 0;
21
+ static const short fieldnum_group = 2;
22
+ static const char_td keynum_group = 1;
23
+
24
+ int isGroupOne(const fields& fds)
25
+ {
26
+ return (fds[fieldnum_group].i() == 1)? filter_validate_value
27
+ : filter_invalidate_value;
28
+ }
29
+
30
+ void changeGroup1To3(const fields& fds)
31
+ {
32
+ fds[fieldnum_group] = 3;
33
+ updateRecord(fds);
34
+ }
35
+
36
+ void updateUsers(table_ptr tb)
37
+ {
38
+ // Execute seekGreaterOrEqual with key number and key value
39
+ indexIterator it = readIndex_v(tb, eSeekGreaterOrEqual, keynum_group, 1);
40
+
41
+ // Wrap filtered iterator
42
+ filterdIndexIterator itf(it, isGroupOne);
43
+
44
+ //loop each group=1 records and update
45
+ for_each(itf, changeGroup1To3);
46
+
47
+
48
+ }
49
+
50
+
51
+ #pragma argsused
52
+ int _tmain(int argc, _TCHAR* argv[])
53
+ {
54
+ database_ptr db = createDatadaseObject();
55
+ try
56
+ {
57
+ connectParams param(_T("tdap"), _T("localhost"), _T("test"), _T("test"));
58
+ openDatabase(db, param);
59
+
60
+ table_ptr tb = openTable(db, _T("user"));
61
+ transaction trn(db);
62
+
63
+ //start transaction
64
+ trn.begin();
65
+
66
+ updateUsers(tb);
67
+
68
+ //Commit transaction. If an error throwed then abort transaction automaticaly.
69
+ trn.end();
70
+
71
+ std::cout << "Insert records success." << std::endl;
72
+ return 0;
73
+ }
74
+
75
+ catch(bzs::rtl::exception& e)
76
+ {
77
+ std::tcout << *bzs::rtl::getMsg(e) << std::endl;
78
+ }
79
+ return 1;
80
+ }