transactd 2.2.0 → 2.3.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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +6 -6
  3. data/README +20 -18
  4. data/README-JA +19 -17
  5. data/RELEASE_NOTE +144 -0
  6. data/RELEASE_NOTE-JA +153 -0
  7. data/bin/common/tdclc_32_2_3.dll +0 -0
  8. data/bin/common/tdclc_64_2_3.dll +0 -0
  9. data/build/common/get_ruby_path.cmake +1 -1
  10. data/build/swig/ruby/ruby.swg +10 -9
  11. data/build/swig/ruby/tdclrb_wrap.cpp +1416 -561
  12. data/build/swig/tdcl.i +30 -3
  13. data/build/tdclc/tdclc.cbproj +1 -1
  14. data/build/tdclc/tdclc.rc +4 -4
  15. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  16. data/build/tdclcpp/tdclcpp.rc +4 -4
  17. data/build/tdclcpp/tdclcpp_bc.cbproj +1 -1
  18. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  19. data/build/tdclrb/tdclrb.rc +4 -4
  20. data/source/bzs/db/engine/mysql/database.cpp +85 -41
  21. data/source/bzs/db/engine/mysql/database.h +35 -5
  22. data/source/bzs/db/engine/mysql/mysqlInternal.h +189 -37
  23. data/source/bzs/db/engine/mysql/mysqlThd.cpp +21 -21
  24. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +11 -0
  25. data/source/bzs/db/protocol/tdap/client/activeTable.h +1 -1
  26. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +11 -4
  27. data/source/bzs/db/protocol/tdap/client/client.h +30 -1
  28. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +2 -1
  29. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +35 -5
  30. data/source/bzs/db/protocol/tdap/client/field.cpp +100 -51
  31. data/source/bzs/db/protocol/tdap/client/field.h +7 -7
  32. data/source/bzs/db/protocol/tdap/client/filter.h +20 -6
  33. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +337 -58
  34. data/source/bzs/db/protocol/tdap/client/groupQuery.h +56 -13
  35. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +83 -5
  36. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
  37. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +2 -2
  38. data/source/bzs/db/protocol/tdap/client/nsTable.h +2 -1
  39. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +20 -6
  40. data/source/bzs/db/protocol/tdap/client/recordset.cpp +7 -0
  41. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +8 -4
  42. data/source/bzs/db/protocol/tdap/client/request.h +11 -1
  43. data/source/bzs/db/protocol/tdap/client/serializer.cpp +40 -2
  44. data/source/bzs/db/protocol/tdap/client/serializer.h +4 -2
  45. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +1 -0
  46. data/source/bzs/db/protocol/tdap/client/stringConverter.h +4 -4
  47. data/source/bzs/db/protocol/tdap/client/table.cpp +124 -71
  48. data/source/bzs/db/protocol/tdap/client/table.h +8 -7
  49. data/source/bzs/db/protocol/tdap/client/trdormapi.h +33 -1
  50. data/source/bzs/db/protocol/tdap/fieldComp.h +1 -1
  51. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +3 -1
  52. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +20 -4
  53. data/source/bzs/db/protocol/tdap/mysql/request.h +14 -0
  54. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +132 -69
  55. data/source/bzs/db/protocol/tdap/tdapRequest.h +18 -4
  56. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +32 -22
  57. data/source/bzs/db/protocol/tdap/tdapSchema.h +69 -4
  58. data/source/bzs/db/protocol/tdap/tdapcapi.h +13 -5
  59. data/source/bzs/db/protocol/tdap/uri.h +4 -4
  60. data/source/bzs/db/transactd/transactd.cpp +6 -5
  61. data/source/bzs/env/crosscompile.cpp +17 -0
  62. data/source/bzs/env/crosscompile.h +4 -1
  63. data/source/bzs/env/mbcswchrLinux.cpp +3 -0
  64. data/source/bzs/example/deleteRecords.cpp +13 -0
  65. data/source/bzs/example/deleteRecords_c.cpp +8 -1
  66. data/source/bzs/example/insertRecords.cpp +14 -0
  67. data/source/bzs/example/insertRecords_c.cpp +8 -1
  68. data/source/bzs/example/ormap_c.cpp +8 -1
  69. data/source/bzs/example/queryData.cpp +92 -2
  70. data/source/bzs/example/queryData.h +3 -1
  71. data/source/bzs/example/readRecords.cpp +13 -0
  72. data/source/bzs/example/readRecords_c.cpp +8 -1
  73. data/source/bzs/example/updateRecords.cpp +13 -0
  74. data/source/bzs/example/updateRecords_c.cpp +8 -1
  75. data/source/bzs/example/update_with_transaction.cpp +13 -0
  76. data/source/bzs/example/update_with_transaction_c.cpp +8 -1
  77. data/source/bzs/example/useORMRecord.cpp +9 -3
  78. data/source/bzs/netsvc/client/iconnection.h +8 -0
  79. data/source/bzs/netsvc/client/tcpClient.cpp +61 -16
  80. data/source/bzs/netsvc/client/tcpClient.h +430 -214
  81. data/source/bzs/netsvc/server/serverPipe.cpp +2 -2
  82. data/source/bzs/test/tdclphp/transactd_Test.php +115 -19
  83. data/source/bzs/test/tdclphp/transactd_blob_Test.php +33 -5
  84. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +21 -3
  85. data/source/bzs/test/tdclphp/transactd_pool_Test.php +17 -3
  86. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +26 -8
  87. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +13 -6
  88. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +14 -8
  89. data/source/bzs/test/tdclrb/transactd_spec.rb +117 -27
  90. data/source/bzs/test/transactdBench/scaling_bench.cpp +5 -5
  91. data/source/bzs/test/transactdBench/workerBase.h +2 -2
  92. data/source/bzs/test/trdclengn/test_trdclengn.cpp +898 -51
  93. data/source/global/tdclatl/Database.cpp +12 -0
  94. data/source/global/tdclatl/Database.h +4 -0
  95. data/source/global/tdclatl/FieldDef.cpp +19 -0
  96. data/source/global/tdclatl/FieldDef.h +4 -0
  97. data/source/global/tdclatl/FieldDefs.cpp +14 -16
  98. data/source/global/tdclatl/GroupQuery.cpp +21 -16
  99. data/source/global/tdclatl/GroupQuery.h +1 -1
  100. data/source/global/tdclatl/QueryBase.cpp +14 -0
  101. data/source/global/tdclatl/QueryBase.h +2 -0
  102. data/source/global/tdclatl/Record.cpp +41 -10
  103. data/source/global/tdclatl/Record.h +1 -1
  104. data/source/global/tdclatl/Recordset.cpp +117 -31
  105. data/source/global/tdclatl/Recordset.h +6 -5
  106. data/source/global/tdclatl/Table.cpp +24 -28
  107. data/source/global/tdclatl/Table.h +3 -4
  108. data/source/global/tdclatl/activeTable.cpp +149 -103
  109. data/source/global/tdclatl/activeTable.h +1 -1
  110. data/source/global/tdclatl/tdclatl.idl +38 -18
  111. data/transactd.gemspec +1 -1
  112. metadata +8 -4
  113. data/bin/common/tdclc_32_2_2.dll +0 -0
  114. data/bin/common/tdclc_64_2_2.dll +0 -0
@@ -42,14 +42,20 @@ namespace client
42
42
  char connections::port[PORTNUMBUF_SIZE] = { "8610" };
43
43
  bool connections::m_usePipedLocal = true;
44
44
  #ifdef _WIN32
45
- short connections::timeout = 3000;
45
+ int connections::connectTimeout = 20000;
46
+ int connections::netTimeout = 180000;
46
47
  #else
47
- short connections::timeout = 3;
48
+ int connections::connectTimeout = 20;
49
+ int connections::netTimeout = 180;
48
50
  #endif
49
51
 
52
+ #define DEFAULT_CONNECT_TIMEOUT "20"
53
+ #define DEFAULT_NET_TIMEOUT "180"
50
54
 
51
- connections::connections(const char* pipeName) : m_pipeName(pipeName)
55
+
56
+ connections::connections(const char* pipeName) : m_pipeName(pipeName),m_resolver(m_ios)
52
57
  {
58
+
53
59
  #ifdef _WIN32
54
60
  DWORD len = MAX_PATH;
55
61
  char buf[MAX_PATH];
@@ -63,9 +69,12 @@ connections::connections(const char* pipeName) : m_pipeName(pipeName)
63
69
  GetPrivateProfileString("transctd_client", "port", "8610", tmp, 30,
64
70
  buf);
65
71
  strcpy_s(port, PORTNUMBUF_SIZE, tmp);
66
- GetPrivateProfileString("transctd_client", "timeout", "3000", tmp, 30,
67
- buf);
68
- timeout = (short)atol(tmp);
72
+ GetPrivateProfileString("transctd_client", "connectTimeout",
73
+ DEFAULT_CONNECT_TIMEOUT, tmp, 30, buf);
74
+ connectTimeout = atoi(tmp)*1000;
75
+ GetPrivateProfileString("transctd_client", "netTimeout",
76
+ DEFAULT_NET_TIMEOUT, tmp, 30, buf);
77
+ netTimeout = atoi(tmp)*1000;
69
78
  }
70
79
  #else // NOT _WIN32
71
80
  #if (BOOST_VERSION > 104900)
@@ -86,10 +95,14 @@ connections::connections(const char* pipeName) : m_pipeName(pipeName)
86
95
  p = "8610";
87
96
  strcpy_s(port, PORTNUMBUF_SIZE, p.c_str());
88
97
 
89
- p = pt.get<std::string>("transctd_client.timeout");
90
- timeout = atol(p.c_str())/1000;
91
- if (timeout == 0)
92
- timeout = 3;
98
+ p = pt.get<std::string>("transctd_client.connectTimeout");
99
+ connectTimeout = atol(p.c_str());
100
+ if (connectTimeout == 0)
101
+ connectTimeout = atoi(DEFAULT_CONNECT_TIMEOUT);
102
+ p = pt.get<std::string>("transctd_client.netTimeout");
103
+ netTimeout = atol(p.c_str());
104
+ if (netTimeout == 0)
105
+ netTimeout = atoi(DEFAULT_NET_TIMEOUT);
93
106
  }
94
107
  catch (...)
95
108
  {
@@ -126,15 +139,19 @@ connection* connections::getConnection(asio::ip::tcp::endpoint& ep)
126
139
  asio::ip::tcp::endpoint connections::endpoint(const std::string& host,
127
140
  boost::system::error_code& ec)
128
141
  {
129
- tcp::resolver resolver(m_ios);
130
142
  tcp::resolver::query query(host, port);
131
143
 
132
- tcp::resolver::iterator dest = resolver.resolve(query, ec);
144
+ tcp::resolver::iterator dest = m_resolver.resolve(query, ec);
133
145
  tcp::endpoint endpoint;
134
146
  if (!ec)
135
147
  {
136
148
  while (dest != tcp::resolver::iterator())
137
149
  endpoint = *dest++;
150
+ }else if (host == "localhost")
151
+ {
152
+ endpoint.address(ip::address::from_string("127.0.0.1"));
153
+ endpoint.port((unsigned short)atoi(port));
154
+ ec.clear();
138
155
  }
139
156
  return endpoint;
140
157
  }
@@ -209,7 +226,11 @@ inline connection* connections::createConnection(asio::ip::tcp::endpoint& ep,
209
226
  return new pipeConnection(ep, m_pipeName);
210
227
  else
211
228
  #endif
212
- return new tcpConnection(ep);
229
+ #ifdef __APPLE__
230
+ return new asio_tcpConnection(ep);
231
+ #else
232
+ return new native_tcpConnection(ep);
233
+ #endif
213
234
  }
214
235
 
215
236
  inline connection* connections::doConnect(connection* c)
@@ -219,12 +240,22 @@ inline connection* connections::doConnect(connection* c)
219
240
  c->connect();
220
241
  return c;
221
242
  }
222
- catch (bzs::netsvc::client::exception& /*e*/)
243
+ catch (bzs::netsvc::client::exception& e)
223
244
  {
224
245
  delete c;
225
- throw;
246
+ throw e;
226
247
  }
227
- catch (boost::system::system_error& /*e*/)
248
+ catch (boost::system::system_error& e)
249
+ {
250
+ delete c;
251
+ throw e;
252
+ }
253
+ catch (std::exception& e)
254
+ {
255
+ delete c;
256
+ throw e;
257
+ }
258
+ catch (...)
228
259
  {
229
260
  delete c;
230
261
  throw;
@@ -289,6 +320,20 @@ connection* connections::connect(const std::string& host, handshake f, void* dat
289
320
  return c;
290
321
  }
291
322
 
323
+ bool connections::reconnect(connection* c, const std::string& host,
324
+ handshake f, void* data)
325
+ {
326
+ boost::system::error_code ec;
327
+ mutex::scoped_lock lck(m_mutex);
328
+ asio::ip::tcp::endpoint ep = endpoint(host, ec);
329
+ if (ec)
330
+ return false;
331
+ c->reconnect(ep);
332
+ if (!c || !doHandShake(c, f, data))
333
+ return false;
334
+ return true;
335
+ }
336
+
292
337
  int connections::connectionCount()
293
338
  {
294
339
  return (int)m_conns.size();