transactd 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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();