transactd 1.2.0 → 2.0.0

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +46 -67
  3. data/BUILD_WIN-JA +106 -63
  4. data/CMakeLists.txt +40 -15
  5. data/README +219 -75
  6. data/README-JA +207 -76
  7. data/README_ORMSRCGEN +118 -0
  8. data/README_ORMSRCGEN-JA +115 -0
  9. data/bin/common/tdclc_32_2_0.dll +0 -0
  10. data/bin/common/tdclc_64_2_0.dll +0 -0
  11. data/build/common/check_for_link_iconv.cmake +18 -14
  12. data/build/common/create_symlink.cmake.in +25 -0
  13. data/build/common/get_boost_libs.cmake +23 -23
  14. data/build/common/options.cmake +0 -66
  15. data/build/common/smart_install.cmake +3 -3
  16. data/build/common/transactd.rc.in +15 -5
  17. data/build/common/transactd_cl_common.cmake +37 -18
  18. data/build/common/transactd_cl_output.cmake +55 -13
  19. data/build/common/transactd_common.cmake +108 -31
  20. data/build/swig/php/generate.cmake.in +15 -17
  21. data/build/swig/php/generate.cmd.in +15 -9
  22. data/build/swig/php/php.swg +124 -82
  23. data/build/swig/php/transactd.no_yield.php +4494 -0
  24. data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
  25. data/build/swig/php/transactd.no_yield.php.patch +685 -0
  26. data/build/swig/php/transactd.yield.php +4461 -0
  27. data/build/swig/php/transactd.yield.php.git.patch +652 -0
  28. data/build/swig/php/transactd.yield.php.patch +652 -0
  29. data/build/swig/referencecounter.h +79 -0
  30. data/build/swig/ruby/ruby.swg +226 -76
  31. data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
  32. data/build/swig/ruby/without_gvl.swg +87 -0
  33. data/build/swig/tdcl.i +659 -170
  34. data/build/swig/validatablepointer.h +91 -0
  35. data/build/tdclc/CMakeLists.txt +49 -34
  36. data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
  37. data/build/tdclc/tdclc.rc +0 -0
  38. data/build/tdclcpp/CMakeLists.txt +84 -20
  39. data/build/tdclcpp/tdclcpp.rc +0 -0
  40. data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
  41. data/build/tdclrb/CMakeLists.txt +84 -66
  42. data/build/tdclrb/bldgem/extconf.rb +28 -3
  43. data/build/tdclrb/gem/helper.rb +11 -1
  44. data/build/tdclrb/gem_output.cmake +20 -16
  45. data/index_ja.html +15 -0
  46. data/source/bzs/db/IBlobBuffer.h +15 -17
  47. data/source/bzs/db/blobBuffer.h +186 -140
  48. data/source/bzs/db/blobStructs.h +37 -37
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
  50. data/source/bzs/db/engine/mysql/bookmark.h +150 -147
  51. data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
  52. data/source/bzs/db/engine/mysql/database.h +608 -370
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
  54. data/source/bzs/db/engine/mysql/dbManager.h +115 -104
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
  56. data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
  63. data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
  64. data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
  68. data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
  69. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
  70. data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
  71. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
  72. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
  73. data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
  74. data/source/bzs/db/protocol/tdap/client/client.h +361 -320
  75. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
  76. data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
  77. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
  78. data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
  79. data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
  80. data/source/bzs/db/protocol/tdap/client/database.h +141 -118
  81. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
  82. data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
  83. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
  84. data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
  85. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
  86. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
  87. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
  88. data/source/bzs/db/protocol/tdap/client/export.h +35 -0
  89. data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
  90. data/source/bzs/db/protocol/tdap/client/field.h +393 -0
  91. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
  92. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
  93. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
  94. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
  95. data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
  96. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
  97. data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
  98. data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
  99. data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
  100. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
  101. data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
  102. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
  103. data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
  104. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
  105. data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
  106. data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
  107. data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
  108. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
  109. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
  110. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
  111. data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
  112. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
  113. data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
  114. data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
  115. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
  116. data/source/bzs/db/protocol/tdap/client/request.h +227 -170
  117. data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
  118. data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
  119. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
  120. data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
  121. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
  122. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
  123. data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
  124. data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
  125. data/source/bzs/db/protocol/tdap/client/table.h +413 -87
  126. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
  127. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
  128. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
  129. data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
  130. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
  131. data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
  132. data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
  133. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
  134. data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
  135. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
  136. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
  137. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
  138. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
  139. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
  140. data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
  141. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
  142. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
  143. data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
  144. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
  145. data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
  146. data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
  147. data/source/bzs/db/transactd/appBuilderImple.h +21 -20
  148. data/source/bzs/db/transactd/appModule.cpp +350 -98
  149. data/source/bzs/db/transactd/appModule.h +31 -37
  150. data/source/bzs/db/transactd/connManager.cpp +138 -135
  151. data/source/bzs/db/transactd/connManager.h +28 -21
  152. data/source/bzs/db/transactd/connectionRecord.h +39 -39
  153. data/source/bzs/db/transactd/transactd.cpp +217 -203
  154. data/source/bzs/env/boost_bcb_link.h +131 -0
  155. data/source/bzs/env/compiler.h +136 -79
  156. data/source/bzs/env/crosscompile.cpp +57 -57
  157. data/source/bzs/env/crosscompile.h +130 -115
  158. data/source/bzs/env/fileopen.h +7 -8
  159. data/source/bzs/env/mbcswchrLinux.cpp +4 -9
  160. data/source/bzs/env/mbcswchrLinux.h +37 -34
  161. data/source/bzs/env/tcharMinGW.h +59 -0
  162. data/source/bzs/env/tstring.h +90 -95
  163. data/source/bzs/example/changeSchema.cpp +22 -23
  164. data/source/bzs/example/changeSchema_c.cpp +22 -24
  165. data/source/bzs/example/connection_pool_c.cpp +49 -104
  166. data/source/bzs/example/createDatabase.cpp +40 -47
  167. data/source/bzs/example/createDatabase_c.cpp +38 -43
  168. data/source/bzs/example/deleteRecords.cpp +10 -15
  169. data/source/bzs/example/deleteRecords_c.cpp +10 -14
  170. data/source/bzs/example/dropDatabase.cpp +3 -9
  171. data/source/bzs/example/dropDatabase_c.cpp +5 -6
  172. data/source/bzs/example/insertRecords.cpp +37 -29
  173. data/source/bzs/example/insertRecords_c.cpp +19 -25
  174. data/source/bzs/example/ormap_c.cpp +621 -0
  175. data/source/bzs/example/queryData.cpp +371 -0
  176. data/source/bzs/example/queryData.h +16 -0
  177. data/source/bzs/example/query_c.cpp +109 -0
  178. data/source/bzs/example/readRecords.cpp +27 -27
  179. data/source/bzs/example/readRecords_c.cpp +25 -23
  180. data/source/bzs/example/updateRecords.cpp +16 -21
  181. data/source/bzs/example/updateRecords_c.cpp +8 -12
  182. data/source/bzs/example/update_with_transaction.cpp +21 -24
  183. data/source/bzs/example/update_with_transaction_c.cpp +12 -15
  184. data/source/bzs/example/useORMRecord.cpp +177 -0
  185. data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
  186. data/source/bzs/netsvc/client/tcpClient.h +541 -489
  187. data/source/bzs/netsvc/server/IAppModule.h +119 -32
  188. data/source/bzs/netsvc/server/iserver.h +21 -23
  189. data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
  190. data/source/bzs/netsvc/server/serverCpt.h +41 -43
  191. data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
  192. data/source/bzs/netsvc/server/serverPipe.h +44 -45
  193. data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
  194. data/source/bzs/netsvc/server/serverTpool.h +38 -43
  195. data/source/bzs/rtl/benchmark.cpp +91 -31
  196. data/source/bzs/rtl/benchmark.h +76 -22
  197. data/source/bzs/rtl/datetime.cpp +231 -233
  198. data/source/bzs/rtl/datetime.h +16 -16
  199. data/source/bzs/rtl/debuglog.cpp +48 -51
  200. data/source/bzs/rtl/debuglog.h +55 -44
  201. data/source/bzs/rtl/exception.h +55 -48
  202. data/source/bzs/rtl/stl_uty.cpp +27 -28
  203. data/source/bzs/rtl/stl_uty.h +28 -29
  204. data/source/bzs/rtl/stringBuffers.cpp +8 -6
  205. data/source/bzs/rtl/stringBuffers.h +16 -9
  206. data/source/bzs/rtl/strtrim.cpp +90 -91
  207. data/source/bzs/rtl/strtrim.h +14 -16
  208. data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
  209. data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
  210. data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
  211. data/source/bzs/test/tdclphp/bench.php +357 -0
  212. data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
  213. data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
  214. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
  215. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
  216. data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
  217. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
  218. data/source/bzs/test/tdclrb/prepare.rb +15 -12
  219. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
  220. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
  221. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
  222. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
  223. data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
  224. data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
  225. data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
  226. data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
  227. data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
  228. data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
  229. data/source/bzs/test/transactdBench/workerBase.h +88 -0
  230. data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
  231. data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
  232. data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
  233. data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
  234. data/source/global/ormsrcgen/confParam.h +80 -0
  235. data/source/global/ormsrcgen/fieldName.cpp +77 -0
  236. data/source/global/ormsrcgen/fieldName.h +43 -0
  237. data/source/global/ormsrcgen/main.cpp +196 -0
  238. data/source/global/ormsrcgen/srcgen.cpp +763 -0
  239. data/source/global/ormsrcgen/srcgen.h +72 -0
  240. data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
  241. data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
  242. data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
  243. data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
  244. data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
  245. data/source/global/ormsrcgen/template/template.cnf +38 -0
  246. data/source/global/querystmts/querystmts.cpp +237 -0
  247. data/source/global/tdclatl/ConnectParams.cpp +77 -0
  248. data/source/global/tdclatl/ConnectParams.h +70 -0
  249. data/source/global/tdclatl/Database.cpp +132 -128
  250. data/source/global/tdclatl/Database.h +60 -49
  251. data/source/global/tdclatl/DbDef.cpp +68 -64
  252. data/source/global/tdclatl/DbDef.h +36 -36
  253. data/source/global/tdclatl/Field.cpp +12 -17
  254. data/source/global/tdclatl/Field.h +15 -12
  255. data/source/global/tdclatl/FieldDef.cpp +75 -36
  256. data/source/global/tdclatl/FieldDef.h +38 -19
  257. data/source/global/tdclatl/FieldDefs.cpp +74 -0
  258. data/source/global/tdclatl/FieldDefs.h +56 -0
  259. data/source/global/tdclatl/FieldNames.cpp +99 -0
  260. data/source/global/tdclatl/FieldNames.h +66 -0
  261. data/source/global/tdclatl/Flags.cpp +75 -37
  262. data/source/global/tdclatl/Flags.h +13 -12
  263. data/source/global/tdclatl/GroupQuery.cpp +119 -0
  264. data/source/global/tdclatl/GroupQuery.h +65 -0
  265. data/source/global/tdclatl/KeyDef.cpp +15 -14
  266. data/source/global/tdclatl/KeyDef.h +20 -17
  267. data/source/global/tdclatl/KeySegment.cpp +13 -12
  268. data/source/global/tdclatl/PooledDbManager.cpp +223 -0
  269. data/source/global/tdclatl/PooledDbManager.h +76 -0
  270. data/source/global/tdclatl/QueryBase.cpp +206 -127
  271. data/source/global/tdclatl/QueryBase.h +55 -59
  272. data/source/global/tdclatl/Record.cpp +214 -0
  273. data/source/global/tdclatl/Record.h +96 -0
  274. data/source/global/tdclatl/Recordset.cpp +278 -0
  275. data/source/global/tdclatl/Recordset.h +83 -0
  276. data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
  277. data/source/global/tdclatl/RecordsetQuery.h +126 -0
  278. data/source/global/tdclatl/Table.cpp +57 -60
  279. data/source/global/tdclatl/Table.h +32 -29
  280. data/source/global/tdclatl/TableDef.cpp +63 -62
  281. data/source/global/tdclatl/TableDef.h +20 -22
  282. data/source/global/tdclatl/TdVersion.cpp +3 -3
  283. data/source/global/tdclatl/TdVersion.h +15 -11
  284. data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
  285. data/source/global/tdclatl/activeTable.cpp +355 -0
  286. data/source/global/tdclatl/activeTable.h +79 -0
  287. data/source/global/tdclatl/dllmain.cpp +4 -3
  288. data/source/global/tdclatl/dllmain.h +7 -6
  289. data/source/global/tdclatl/keySegment.h +22 -18
  290. data/source/global/tdclatl/resource.h +0 -0
  291. data/source/global/tdclatl/stdafx.h +6 -4
  292. data/source/global/tdclatl/targetver.h +0 -1
  293. data/source/global/tdclatl/tdclatl.cpp +10 -5
  294. data/source/global/tdclatl/tdclatl.idl +530 -14
  295. data/source/linux/charsetConvert.h +78 -79
  296. data/source/linux/linuxTypes.h +9 -12
  297. data/source/linux/tchar.h +168 -166
  298. data/transactd.gemspec +24 -16
  299. metadata +98 -12
  300. data/bin/common/tdclc_32_1_2.dll +0 -0
  301. data/bin/common/tdclc_64_1_2.dll +0 -0
  302. data/build/tdclc/tdclc_32.cbproj +0 -173
  303. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
  304. data/build/tdclrb/GEM_VERSION +0 -3
  305. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
  306. data/source/bzs/example/useORM.cpp +0 -585
@@ -0,0 +1,118 @@
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 "stdafx.h"
20
+ #include "RecordsetQuery.h"
21
+
22
+ void CRecordsetQuery::setResult(IRecordsetQuery** retVal)
23
+ {
24
+ this->QueryInterface(IID_IRecordsetQuery, (void**)retVal);
25
+ }
26
+
27
+ STDMETHODIMP CRecordsetQuery::Reset(IRecordsetQuery** retVal)
28
+ {
29
+ m_qb.reset();
30
+ setResult(retVal);
31
+ return S_OK;
32
+ }
33
+
34
+ STDMETHODIMP CRecordsetQuery::When(BSTR Name, BSTR Logic, VARIANT Value,
35
+ IRecordsetQuery** retVal)
36
+ {
37
+ if (Value.vt != VT_BSTR)
38
+ VariantChangeType(&Value, &Value, 0, VT_BSTR);
39
+ m_qb.when(Name, Logic, Value.bstrVal);
40
+ setResult(retVal);
41
+ return S_OK;
42
+ }
43
+
44
+ STDMETHODIMP CRecordsetQuery::And(BSTR Name, BSTR Logic, VARIANT Value,
45
+ IRecordsetQuery** retVal)
46
+ {
47
+ if (Value.vt != VT_BSTR)
48
+ VariantChangeType(&Value, &Value, 0, VT_BSTR);
49
+ m_qb.and_(Name, Logic, Value.bstrVal);
50
+ setResult(retVal);
51
+ return S_OK;
52
+ }
53
+
54
+ STDMETHODIMP CRecordsetQuery::Or(BSTR Name, BSTR Logic, VARIANT Value,
55
+ IRecordsetQuery** retVal)
56
+ {
57
+ if (Value.vt != VT_BSTR)
58
+ VariantChangeType(&Value, &Value, 0, VT_BSTR);
59
+ m_qb.or_(Name, Logic, Value.bstrVal);
60
+ setResult(retVal);
61
+ return S_OK;
62
+ }
63
+
64
+ STDMETHODIMP CSortField::get_Name(BSTR* Value)
65
+ {
66
+ return S_OK;
67
+ }
68
+
69
+ STDMETHODIMP CSortField::put_Name(BSTR Value)
70
+ {
71
+ return S_OK;
72
+ }
73
+
74
+ STDMETHODIMP CSortField::get_Asc(VARIANT_BOOL* Value)
75
+ {
76
+ return S_OK;
77
+ }
78
+
79
+ STDMETHODIMP CSortField::put_Asc(VARIANT_BOOL Value)
80
+ {
81
+ return S_OK;
82
+ }
83
+
84
+ //------------------------------------------------------------------------
85
+ STDMETHODIMP CSortFields::Add(BSTR Name, VARIANT_BOOL Asc)
86
+ {
87
+ m_sortFields.add(Name, (Asc == -1));
88
+ return S_OK;
89
+ }
90
+
91
+ STDMETHODIMP CSortFields::get_Size(int* Value)
92
+ {
93
+ *Value = (int)m_sortFields.size();
94
+ return S_OK;
95
+ }
96
+
97
+ STDMETHODIMP CSortFields::Item(int Index, ISortField** retVal)
98
+ {
99
+ CComObject<CSortField>* obj;
100
+
101
+ CComObject<CSortField>::CreateInstance(&obj);
102
+ if (obj)
103
+ {
104
+ obj->m_sortField = m_sortFields[Index];
105
+
106
+ ISortField* fd;
107
+ obj->QueryInterface(IID_ISortField, (void**)&fd);
108
+ _ASSERTE(fd);
109
+ *retVal = fd;
110
+ }
111
+ return S_OK;
112
+ }
113
+
114
+ STDMETHODIMP CSortFields::Clear()
115
+ {
116
+ m_sortFields.clear();
117
+ return S_OK;
118
+ }
@@ -0,0 +1,126 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2014 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+
22
+ #include "tdclatl_i.h"
23
+ #include <bzs/db/protocol/tdap/client/groupQuery.h>
24
+
25
+ using namespace ATL;
26
+
27
+ class ATL_NO_VTABLE CRecordsetQuery
28
+ : public CComObjectRootEx<CComSingleThreadModel>,
29
+ public CComCoClass<CRecordsetQuery, &CLSID_RecordsetQuery>,
30
+ public IDispatchImpl<IRecordsetQuery, &IID_IRecordsetQuery,
31
+ &LIBID_transactd, /*wMajor =*/1, /*wMinor =*/0>
32
+ {
33
+
34
+ void setResult(IRecordsetQuery** retVal);
35
+
36
+ public:
37
+ bzs::db::protocol::tdap::client::recordsetQuery m_qb;
38
+ CRecordsetQuery() {}
39
+
40
+ DECLARE_REGISTRY_RESOURCEID(IDR_RECORDSETQUERY)
41
+
42
+ BEGIN_COM_MAP(CRecordsetQuery)
43
+ COM_INTERFACE_ENTRY(IRecordsetQuery)
44
+ COM_INTERFACE_ENTRY(IDispatch)
45
+ END_COM_MAP()
46
+
47
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
48
+
49
+ HRESULT FinalConstruct() { return S_OK; }
50
+
51
+ void FinalRelease() {}
52
+
53
+ public:
54
+ bzs::db::protocol::tdap::client::recordsetQuery& query() { return m_qb; };
55
+ STDMETHOD(Reset)(IRecordsetQuery** retVal);
56
+
57
+ STDMETHOD(When)(BSTR Name, BSTR Logic, VARIANT Value,
58
+ IRecordsetQuery** retVal);
59
+ STDMETHOD(And)(BSTR Name, BSTR Logic, VARIANT Value,
60
+ IRecordsetQuery** retVal);
61
+ STDMETHOD(Or)(BSTR Name, BSTR Logic, VARIANT Value,
62
+ IRecordsetQuery** retVal);
63
+ };
64
+
65
+ class ATL_NO_VTABLE CSortField
66
+ : public CComObjectRootEx<CComSingleThreadModel>,
67
+ public CComCoClass<CSortField, &CLSID_SortField>,
68
+ public IDispatchImpl<ISortField, &IID_ISortField, &LIBID_transactd,
69
+ /*wMajor =*/1, /*wMinor =*/0>
70
+ {
71
+
72
+ public:
73
+ bzs::db::protocol::tdap::client::sortField m_sortField;
74
+ CSortField() {}
75
+
76
+ BEGIN_COM_MAP(CSortField)
77
+ COM_INTERFACE_ENTRY(ISortField)
78
+ COM_INTERFACE_ENTRY(IDispatch)
79
+ END_COM_MAP()
80
+
81
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
82
+
83
+ HRESULT FinalConstruct() { return S_OK; }
84
+
85
+ void FinalRelease() {}
86
+
87
+ public:
88
+ STDMETHOD(get_Name)(BSTR* Value);
89
+ STDMETHOD(put_Name)(BSTR Value);
90
+ STDMETHOD(get_Asc)(VARIANT_BOOL* Value);
91
+ STDMETHOD(put_Asc)(VARIANT_BOOL Value);
92
+ };
93
+
94
+ class ATL_NO_VTABLE CSortFields
95
+ : public CComObjectRootEx<CComSingleThreadModel>,
96
+ public CComCoClass<CSortFields, &CLSID_SortFields>,
97
+ public IDispatchImpl<ISortFields, &IID_ISortFields, &LIBID_transactd,
98
+ /*wMajor =*/1, /*wMinor =*/0>
99
+ {
100
+
101
+ public:
102
+ bzs::db::protocol::tdap::client::sortFields m_sortFields;
103
+ CSortFields() {}
104
+
105
+ DECLARE_REGISTRY_RESOURCEID(IDR_SORTFIELDS)
106
+
107
+ BEGIN_COM_MAP(CSortFields)
108
+ COM_INTERFACE_ENTRY(ISortFields)
109
+ COM_INTERFACE_ENTRY(IDispatch)
110
+ END_COM_MAP()
111
+
112
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
113
+
114
+ HRESULT FinalConstruct() { return S_OK; }
115
+
116
+ void FinalRelease() {}
117
+
118
+ public:
119
+ STDMETHOD(Add)(BSTR Name, VARIANT_BOOL Asc);
120
+ STDMETHOD(get_Size)(int* Value);
121
+ STDMETHOD(Item)(int Index, ISortField** retVal);
122
+ STDMETHOD(Clear)();
123
+ };
124
+
125
+ OBJECT_ENTRY_AUTO(__uuidof(RecordsetQuery), CRecordsetQuery)
126
+ OBJECT_ENTRY_AUTO(__uuidof(SortFields), CSortFields)
@@ -12,8 +12,8 @@
12
12
  GNU General Public License for more details.
13
13
 
14
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
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
17
  02111-1307, USA.
18
18
  =================================================================*/
19
19
  #include "stdafx.h"
@@ -21,13 +21,11 @@
21
21
  #include "Database.h"
22
22
  #include "DbDef.h"
23
23
  #include "TableDef.h"
24
- #include "Field.h"
25
24
  #include "QueryBase.h"
25
+ #include <bzs/db/protocol/tdap/client/fields.h>
26
26
 
27
27
  using namespace bzs::db::protocol::tdap;
28
28
 
29
-
30
-
31
29
  short CTableTd::GetFieldNum(VARIANT* Index)
32
30
  {
33
31
  short index = -1;
@@ -139,19 +137,19 @@ STDMETHODIMP CTableTd::put_Vbin(VARIANT Index, BSTR Value)
139
137
 
140
138
  STDMETHODIMP CTableTd::get_TableDef(ITableDef** Value)
141
139
  {
142
- CComObject<CTableDef> *piObj;
140
+ CComObject<CTableDef>* piObj;
143
141
  CComObject<CTableDef>::CreateInstance(&piObj);
144
- if (piObj)
145
- {
146
- m_tabledef = const_cast<tabledef*>(m_tb->tableDef());
147
- piObj->m_tabledefPtr = &m_tabledef;
148
- _ASSERTE(m_db);
149
- ITableDef* tbd;
150
- piObj->QueryInterface(IID_ITableDef, (void**)&tbd);
151
- _ASSERTE(tbd);
152
- *Value = tbd;
153
- }else
154
- *Value = 0;
142
+ if (piObj)
143
+ {
144
+ m_tabledef = const_cast<tabledef*>(m_tb->tableDef());
145
+ piObj->m_tabledefPtr = &m_tabledef;
146
+ ITableDef* tbd;
147
+ piObj->QueryInterface(IID_ITableDef, (void**)&tbd);
148
+ _ASSERTE(tbd);
149
+ *Value = tbd;
150
+ }
151
+ else
152
+ *Value = 0;
155
153
  return S_OK;
156
154
  }
157
155
 
@@ -211,13 +209,13 @@ STDMETHODIMP CTableTd::Seek(eLockType lockBias)
211
209
 
212
210
  STDMETHODIMP CTableTd::SeekGreater(VARIANT_BOOL orEqual, eLockType lockBias)
213
211
  {
214
- m_tb->seekGreater(orEqual,(ushort_td)lockBias);
212
+ m_tb->seekGreater(orEqual, (ushort_td)lockBias);
215
213
  return S_OK;
216
214
  }
217
215
 
218
216
  STDMETHODIMP CTableTd::SeekLessThan(VARIANT_BOOL orEqual, eLockType lockBias)
219
217
  {
220
- m_tb->seekLessThan(orEqual,(ushort_td)lockBias);
218
+ m_tb->seekLessThan(orEqual, (ushort_td)lockBias);
221
219
  return S_OK;
222
220
  }
223
221
 
@@ -245,9 +243,10 @@ STDMETHODIMP CTableTd::get_RecordLength(long* Value)
245
243
  return S_OK;
246
244
  }
247
245
 
248
- STDMETHODIMP CTableTd::get_RecordCount(long* Value)
246
+ STDMETHODIMP CTableTd::RecordCount(VARIANT_BOOL estimate,
247
+ VARIANT_BOOL fromCurrent, long* Value)
249
248
  {
250
- *Value = m_tb->recordCount();
249
+ *Value = m_tb->recordCount((estimate == -1), (fromCurrent == -1));
251
250
  return S_OK;
252
251
  }
253
252
 
@@ -305,12 +304,6 @@ STDMETHODIMP CTableTd::FindPrev(VARIANT_BOOL notIncCurrent)
305
304
  return S_OK;
306
305
  }
307
306
 
308
- STDMETHODIMP CTableTd::get_Filter(BSTR* Value)
309
- {
310
- *Value = ::SysAllocString(m_tb->filterStr());
311
- return S_OK;
312
- }
313
-
314
307
  STDMETHODIMP CTableTd::put_Filter(BSTR Value)
315
308
  {
316
309
  m_tb->setFilter(Value, m_filterRejectCount, m_filterGetCount);
@@ -363,7 +356,6 @@ STDMETHODIMP CTableTd::CommitBulkInsert()
363
356
  {
364
357
  m_tb->commitBulkInsert(false);
365
358
  return S_OK;
366
-
367
359
  }
368
360
 
369
361
  STDMETHODIMP CTableTd::get_FilterGetCount(long* Value)
@@ -390,26 +382,28 @@ STDMETHODIMP CTableTd::put_FilterRejectCount(long Value)
390
382
  return S_OK;
391
383
  }
392
384
 
393
- STDMETHODIMP CTableTd::Field(VARIANT Index, IField** Value)
385
+ STDMETHODIMP CTableTd::Field(VARIANT Index, IField** retVal)
394
386
  {
395
387
 
396
388
  short index = GetFieldNum(&Index);
397
389
  if (index < 0)
398
390
  return Error("Invalid index", IID_ITable);
399
391
 
400
- CComObject<CField> *piObj;
401
- CComObject<CField>::CreateInstance(&piObj);
402
- if (piObj)
403
- {
404
- piObj->m_tb = m_tb;
405
- piObj->m_index = index;
406
- IField* tbd;
407
- piObj->QueryInterface(IID_IField, (void**)&tbd);
408
- _ASSERTE(tbd);
409
- *Value = piObj;
410
- }
411
- else
412
- *Value = 0;
392
+ if (m_fieldObj == NULL)
393
+ {
394
+ CComObject<CField>::CreateInstance(&m_fieldObj);
395
+ if (m_fieldObj)
396
+ m_fieldObj->AddRef();
397
+ }
398
+ if (m_fieldObj)
399
+ {
400
+ client::fields fds(*m_tb);
401
+ m_fieldObj->m_fd = fds[index];
402
+ IField* fd;
403
+ m_fieldObj->QueryInterface(IID_IField, (void**)&fd);
404
+ _ASSERTE(fd);
405
+ *retVal = fd;
406
+ }
413
407
  return S_OK;
414
408
  }
415
409
 
@@ -489,15 +483,13 @@ STDMETHODIMP CTableTd::TdapErr(OLE_HANDLE hWnd, BSTR* Value)
489
483
  {
490
484
  if (Value)
491
485
  {
492
- wchar_t tmp[512] =
493
- {NULL};
486
+ wchar_t tmp[512] = { NULL };
494
487
  m_tb->tdapErr((HWND)hWnd, tmp);
495
488
  *Value = ::SysAllocString(tmp);
496
489
  }
497
490
  else
498
491
  m_tb->tdapErr((HWND)hWnd);
499
492
  return S_OK;
500
-
501
493
  }
502
494
 
503
495
  STDMETHODIMP CTableTd::Unlock_(unsigned int bm)
@@ -602,23 +594,28 @@ STDMETHODIMP CTableTd::SmartUpdate(void)
602
594
 
603
595
  STDMETHODIMP CTableTd::KeyValueDescription(BSTR* Value)
604
596
  {
605
- wchar_t tmp[8192];
606
- m_tb->keyValueDescription(tmp, 8192);
607
- *Value = tmp;
608
- return S_OK;
597
+ wchar_t tmp[8192];
598
+ m_tb->keyValueDescription(tmp, 8192);
599
+ *Value = tmp;
600
+ return S_OK;
609
601
  }
610
602
 
611
603
  STDMETHODIMP CTableTd::SetQuery(IQueryBase* Value)
612
604
  {
613
- if (Value)
614
- {
615
- CQueryBase* p = dynamic_cast<CQueryBase*>(Value);
616
- if (p)
617
- {
618
- m_tb->setQuery(&p->query());
619
- return S_OK;
620
- }
621
- }
622
- return S_FALSE;
623
-
605
+ if (Value)
606
+ {
607
+ CQueryBase* p = dynamic_cast<CQueryBase*>(Value);
608
+ if (p)
609
+ {
610
+ m_tb->setQuery(&p->query());
611
+ return S_OK;
612
+ }
613
+ }
614
+ return S_FALSE;
615
+ }
616
+
617
+ STDMETHODIMP CTableTd::FieldNumByName(BSTR Name, short* Value)
618
+ {
619
+ *Value = m_tb->fieldNumByName(Name);
620
+ return S_FALSE;
624
621
  }
@@ -13,51 +13,54 @@
13
13
  GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License
16
- along with this program; if not, write to the Free Software
17
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
18
  02111-1307, USA.
19
19
  =================================================================*/
20
20
  #include "resource.h"
21
21
 
22
22
  #include "tdclatl_i.h"
23
- #include <bzs/db/protocol/tdap/client/table.h>
24
-
23
+ #include "Field.h"
24
+ #include <bzs/db/protocol/tdap/client/trdboostapi.h>
25
25
  using namespace ATL;
26
26
 
27
-
28
-
29
- class ATL_NO_VTABLE CTableTd : public CComObjectRootEx<CComSingleThreadModel>,
30
- public CComCoClass<CTableTd, &CLSID_Table>,
31
- public IDispatchImpl<ITable, &IID_ITable, &LIBID_transactd, /* wMajor = */ 1, /* wMinor = */ 0>
27
+ class ATL_NO_VTABLE CTableTd
28
+ : public CComObjectRootEx<CComSingleThreadModel>,
29
+ public CComCoClass<CTableTd, &CLSID_Table>,
30
+ public IDispatchImpl<ITable, &IID_ITable, &LIBID_transactd,
31
+ /* wMajor = */ 1, /* wMinor = */ 0>
32
32
  {
33
33
 
34
34
  int m_filterRejectCount;
35
35
  int m_filterGetCount;
36
- bzs::db::protocol::tdap::tabledef* m_tabledef;
36
+ bzs::db::protocol::tdap::tabledef* m_tabledef;
37
37
  short GetFieldNum(VARIANT* Index);
38
38
  CComBSTR m_str;
39
+ CComObject<CField>* m_fieldObj;
39
40
 
40
41
  public:
41
- CTableTd():m_tb(NULL),m_db(NULL), m_filterRejectCount(1), m_filterGetCount(0){}
42
-
42
+ CTableTd() : m_filterRejectCount(1), m_filterGetCount(0), m_fieldObj(NULL)
43
+ {
44
+ }
43
45
 
44
- bzs::db::protocol::tdap::client::table* m_tb;
45
- bzs::db::protocol::tdap::client::database* m_db;
46
+ bzs::db::protocol::tdap::client::table_ptr m_tb;
46
47
 
47
- BEGIN_COM_MAP(CTableTd)
48
- COM_INTERFACE_ENTRY(ITable)
49
- COM_INTERFACE_ENTRY(IDispatch)
50
- END_COM_MAP()
48
+ BEGIN_COM_MAP(CTableTd)
49
+ COM_INTERFACE_ENTRY(ITable)
50
+ COM_INTERFACE_ENTRY(IDispatch)
51
+ END_COM_MAP()
51
52
 
52
53
  DECLARE_PROTECT_FINAL_CONSTRUCT()
53
54
 
54
- HRESULT FinalConstruct() {return S_OK;}
55
+ HRESULT FinalConstruct() { return S_OK; }
55
56
 
56
- void FinalRelease(){if (m_tb) m_tb->release();};
57
+ void FinalRelease()
58
+ {
59
+ if (m_fieldObj)
60
+ m_fieldObj->Release();
61
+ };
57
62
 
58
63
  public:
59
-
60
-
61
64
  STDMETHOD(get_Text)(VARIANT Index, BSTR* Value);
62
65
  STDMETHOD(get_Vlng)(VARIANT Index, int* Value);
63
66
  STDMETHOD(put_Text)(VARIANT Index, BSTR Value);
@@ -78,7 +81,8 @@ public:
78
81
  STDMETHOD(SeekByBookMark)(long Value, eLockType lockBias);
79
82
  STDMETHOD(get_Percentage)(long* Value);
80
83
  STDMETHOD(get_RecordLength)(long* Value);
81
- STDMETHOD(get_RecordCount)(long* Value);
84
+ STDMETHOD(RecordCount)(VARIANT_BOOL estimate, VARIANT_BOOL fromCurrent,
85
+ long* Value);
82
86
  STDMETHOD(SeekByPercentage)(long Value);
83
87
  STDMETHOD(get_KeyNum)(short* Value);
84
88
  STDMETHOD(get_Stat)(eStatus* eStatus);
@@ -92,14 +96,13 @@ public:
92
96
  STDMETHOD(FindLast)();
93
97
  STDMETHOD(FindNext)(VARIANT_BOOL notIncCurrent);
94
98
  STDMETHOD(FindPrev)(VARIANT_BOOL notIncCurrent);
95
- STDMETHOD(get_Filter)(BSTR* Value);
96
99
  STDMETHOD(put_Filter)(BSTR Value);
97
100
  STDMETHOD(get_V64)(VARIANT Index, __int64* Value);
98
101
  STDMETHOD(put_V64)(VARIANT Index, __int64 Value);
99
102
  STDMETHOD(UpDate)(eUpdateType ncc);
100
103
  STDMETHOD(StepFirst)(eLockType lockBias);
101
- STDMETHOD(StepLast)(eLockType lockBias);
102
- STDMETHOD(StepPrev)(eLockType lockBias);
104
+ STDMETHOD(StepLast)(eLockType lockBias);
105
+ STDMETHOD(StepPrev)(eLockType lockBias);
103
106
  STDMETHOD(StepNext)(eLockType lockBias);
104
107
 
105
108
  STDMETHOD(AbortBulkInsert)();
@@ -139,7 +142,7 @@ public:
139
142
  STDMETHOD(get_MyDateTimeValueByBtrv)(VARIANT_BOOL* Value);
140
143
  STDMETHOD(get_ValiableFormatType)(VARIANT_BOOL* Value);
141
144
  STDMETHOD(SmartUpdate)(void);
142
- STDMETHOD(KeyValueDescription)(BSTR* Value);
143
- STDMETHOD(SetQuery)(IQueryBase* Value);
144
-
145
+ STDMETHOD(KeyValueDescription)(BSTR* Value);
146
+ STDMETHOD(SetQuery)(IQueryBase* Value);
147
+ STDMETHOD(FieldNumByName)(BSTR Name, short* Value);
145
148
  };