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
@@ -134,10 +134,6 @@ public:
134
134
  STDMETHOD(get_RecordHash)(unsigned int* Value);
135
135
  STDMETHOD(get_LogicalToString)(VARIANT_BOOL* Value);
136
136
  STDMETHOD(put_LogicalToString)(VARIANT_BOOL Value);
137
- STDMETHOD(get_TrimPadChar)(VARIANT_BOOL* Value);
138
- STDMETHOD(put_TrimPadChar)(VARIANT_BOOL Value);
139
- STDMETHOD(get_UsePadChar)(VARIANT_BOOL* Value);
140
- STDMETHOD(put_UsePadChar)(VARIANT_BOOL Value);
141
137
  STDMETHOD(MoveBookmarksId)(long Value);
142
138
  STDMETHOD(get_MyDateTimeValueByBtrv)(VARIANT_BOOL* Value);
143
139
  STDMETHOD(get_ValiableFormatType)(VARIANT_BOOL* Value);
@@ -147,4 +143,7 @@ public:
147
143
  STDMETHOD(Prepare)(IQueryBase* Value, VARIANT_BOOL ServerPrepare, IPreparedQuery** retVal);
148
144
  STDMETHOD(SetPrepare)(IPreparedQuery* Value);
149
145
  STDMETHOD(FieldNumByName)(BSTR Name, short* Value);
146
+ STDMETHOD(get_StatReasonOfFind)(short* Value);
147
+ STDMETHOD(get_LastFindDirection)(short* Value);
148
+
150
149
  };
@@ -37,7 +37,10 @@ void CActiveTable::setResult(IActiveTable** retVal)
37
37
 
38
38
  void CActiveTable::FinalRelease()
39
39
  {
40
- delete m_at;
40
+ if (m_recObj)
41
+ m_recObj->Release();
42
+ if (m_at)
43
+ m_at->release();
41
44
  }
42
45
 
43
46
  STDMETHODIMP CActiveTable::SetDatabase(VARIANT Value, BSTR tableName)
@@ -53,7 +56,7 @@ STDMETHODIMP CActiveTable::SetDatabase(VARIANT Value, BSTR tableName)
53
56
  CPooledDbManager* pm = dynamic_cast<CPooledDbManager*>(Value.pdispVal);
54
57
  if (pm)
55
58
  {
56
- m_at = new activeTable(&pm->m_mgr, tableName);
59
+ m_at = activeTable::create(&pm->m_mgr, tableName);
57
60
  m_at->table()->setOptionalData((void*)NULL);
58
61
  return S_OK;
59
62
  }
@@ -61,7 +64,7 @@ STDMETHODIMP CActiveTable::SetDatabase(VARIANT Value, BSTR tableName)
61
64
  CDatabase* p = dynamic_cast<CDatabase*>(Value.pdispVal);
62
65
  if (p)
63
66
  {
64
- m_at = new activeTable(p->database(), tableName);
67
+ m_at = activeTable::create(p->database(), tableName);
65
68
  m_at->table()->setOptionalData((void*)p->database());
66
69
  return S_OK;
67
70
  }
@@ -75,9 +78,16 @@ STDMETHODIMP CActiveTable::SetDatabase(VARIANT Value, BSTR tableName)
75
78
 
76
79
  STDMETHODIMP CActiveTable::Index(short Value, IActiveTable** retVal)
77
80
  {
78
- m_at->index(Value);
79
- setResult(retVal);
80
- return S_OK;
81
+ try
82
+ {
83
+ m_at->index(Value);
84
+ setResult(retVal);
85
+ return S_OK;
86
+ }
87
+ catch (bzs::rtl::exception& e)
88
+ {
89
+ return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
90
+ }
81
91
  }
82
92
 
83
93
  STDMETHODIMP CActiveTable::KeyValue(VARIANT Value0, VARIANT Value1,
@@ -87,78 +97,85 @@ STDMETHODIMP CActiveTable::KeyValue(VARIANT Value0, VARIANT Value1,
87
97
  IActiveTable** retVal)
88
98
  {
89
99
 
90
- if (Value0.vt != VT_BSTR)
91
- VariantChangeType(&Value0, &Value0, 0, VT_BSTR);
92
-
93
- if (Value1.vt != VT_BSTR)
94
- VariantChangeType(&Value1, &Value1, 0, VT_BSTR);
95
- if (!Value1.bstrVal || !Value1.bstrVal[0])
100
+ try
96
101
  {
97
- m_at->keyValue(Value0.bstrVal);
98
- setResult(retVal);
99
- return S_OK;
100
- }
102
+ if (Value0.vt != VT_BSTR)
103
+ VariantChangeType(&Value0, &Value0, 0, VT_BSTR);
101
104
 
102
- if (Value2.vt != VT_BSTR)
103
- VariantChangeType(&Value2, &Value2, 0, VT_BSTR);
104
- if (!Value2.bstrVal || !Value2.bstrVal[0])
105
- {
106
- m_at->keyValue(Value0.bstrVal, Value1.bstrVal);
107
- setResult(retVal);
108
- return S_OK;
109
- }
110
- if (Value3.vt != VT_BSTR)
111
- VariantChangeType(&Value3, &Value3, 0, VT_BSTR);
112
- if (!Value3.bstrVal || !Value3.bstrVal[0])
113
- {
114
- m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal);
115
- setResult(retVal);
116
- return S_OK;
117
- }
118
- if (Value4.vt != VT_BSTR)
119
- VariantChangeType(&Value4, &Value4, 0, VT_BSTR);
120
- if (!Value4.bstrVal || !Value4.bstrVal[0])
121
- {
122
- m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
123
- Value3.bstrVal);
124
- setResult(retVal);
125
- return S_OK;
126
- }
105
+ if (Value1.vt != VT_BSTR)
106
+ VariantChangeType(&Value1, &Value1, 0, VT_BSTR);
107
+ if (!Value1.bstrVal || !Value1.bstrVal[0])
108
+ {
109
+ m_at->keyValue(Value0.bstrVal);
110
+ setResult(retVal);
111
+ return S_OK;
112
+ }
127
113
 
128
- if (Value5.vt != VT_BSTR)
129
- VariantChangeType(&Value5, &Value5, 0, VT_BSTR);
130
- if (!Value5.bstrVal || !Value5.bstrVal[0])
131
- {
132
- m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
133
- Value3.bstrVal, Value4.bstrVal);
134
- setResult(retVal);
135
- return S_OK;
136
- }
137
- if (Value6.vt != VT_BSTR)
138
- VariantChangeType(&Value6, &Value6, 0, VT_BSTR);
139
- if (!Value6.bstrVal || !Value6.bstrVal[0])
140
- {
141
- m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
142
- Value3.bstrVal, Value4.bstrVal, Value5.bstrVal);
143
- setResult(retVal);
144
- return S_OK;
145
- }
114
+ if (Value2.vt != VT_BSTR)
115
+ VariantChangeType(&Value2, &Value2, 0, VT_BSTR);
116
+ if (!Value2.bstrVal || !Value2.bstrVal[0])
117
+ {
118
+ m_at->keyValue(Value0.bstrVal, Value1.bstrVal);
119
+ setResult(retVal);
120
+ return S_OK;
121
+ }
122
+ if (Value3.vt != VT_BSTR)
123
+ VariantChangeType(&Value3, &Value3, 0, VT_BSTR);
124
+ if (!Value3.bstrVal || !Value3.bstrVal[0])
125
+ {
126
+ m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal);
127
+ setResult(retVal);
128
+ return S_OK;
129
+ }
130
+ if (Value4.vt != VT_BSTR)
131
+ VariantChangeType(&Value4, &Value4, 0, VT_BSTR);
132
+ if (!Value4.bstrVal || !Value4.bstrVal[0])
133
+ {
134
+ m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
135
+ Value3.bstrVal);
136
+ setResult(retVal);
137
+ return S_OK;
138
+ }
146
139
 
147
- if (Value7.vt != VT_BSTR)
148
- VariantChangeType(&Value7, &Value7, 0, VT_BSTR);
149
- if (!Value7.bstrVal || !Value7.bstrVal[0])
150
- {
140
+ if (Value5.vt != VT_BSTR)
141
+ VariantChangeType(&Value5, &Value5, 0, VT_BSTR);
142
+ if (!Value5.bstrVal || !Value5.bstrVal[0])
143
+ {
144
+ m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
145
+ Value3.bstrVal, Value4.bstrVal);
146
+ setResult(retVal);
147
+ return S_OK;
148
+ }
149
+ if (Value6.vt != VT_BSTR)
150
+ VariantChangeType(&Value6, &Value6, 0, VT_BSTR);
151
+ if (!Value6.bstrVal || !Value6.bstrVal[0])
152
+ {
153
+ m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
154
+ Value3.bstrVal, Value4.bstrVal, Value5.bstrVal);
155
+ setResult(retVal);
156
+ return S_OK;
157
+ }
158
+
159
+ if (Value7.vt != VT_BSTR)
160
+ VariantChangeType(&Value7, &Value7, 0, VT_BSTR);
161
+ if (!Value7.bstrVal || !Value7.bstrVal[0])
162
+ {
163
+ m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
164
+ Value3.bstrVal, Value4.bstrVal, Value5.bstrVal,
165
+ Value6.bstrVal);
166
+ setResult(retVal);
167
+ return S_OK;
168
+ }
151
169
  m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
152
170
  Value3.bstrVal, Value4.bstrVal, Value5.bstrVal,
153
- Value6.bstrVal);
171
+ Value6.bstrVal, Value7.bstrVal);
154
172
  setResult(retVal);
155
173
  return S_OK;
156
174
  }
157
- m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
158
- Value3.bstrVal, Value4.bstrVal, Value5.bstrVal,
159
- Value6.bstrVal, Value7.bstrVal);
160
- setResult(retVal);
161
- return S_OK;
175
+ catch (bzs::rtl::exception& e)
176
+ {
177
+ return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
178
+ }
162
179
  }
163
180
 
164
181
  STDMETHODIMP CActiveTable::Option(int Value, IActiveTable** retVal)
@@ -447,7 +464,6 @@ STDMETHODIMP CActiveTable::OuterJoin(IRecordset* rs, VARIANT query,
447
464
  {
448
465
  return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
449
466
  }
450
-
451
467
  }
452
468
 
453
469
  STDMETHODIMP CActiveTable::Prepare(IQueryBase* Value, VARIANT_BOOL ServerPrepare, IPreparedQuery** retVal)
@@ -459,48 +475,59 @@ STDMETHODIMP CActiveTable::Prepare(IQueryBase* Value, VARIANT_BOOL ServerPrepare
459
475
  {
460
476
  CComObject<CPreparedQuery>* rsObj;
461
477
  CComObject<CPreparedQuery>::CreateInstance(&rsObj);
462
-
463
478
  if (!rsObj)
464
- return Error(_T("Can not create preparedQuery"), IID_ITable);
465
-
466
- rsObj->setPqHandle(m_at->prepare(p->query(), (bool)ServerPrepare));
467
- IPreparedQuery* pd;
468
- rsObj->QueryInterface(IID_IPreparedQuery, (void**)&pd);
469
- _ASSERTE(pd);
470
- *retVal = pd;
471
- return S_OK;
479
+ return Error(_T("CreateInstance PreparedQuery"), IID_ITable);
480
+ try
481
+ {
482
+ rsObj->setPqHandle(m_at->prepare(p->query(), (bool)ServerPrepare));
483
+ IPreparedQuery* pd;
484
+ rsObj->QueryInterface(IID_IPreparedQuery, (void**)&pd);
485
+ _ASSERTE(pd);
486
+ *retVal = pd;
487
+ return S_OK;
488
+ }
489
+ catch (bzs::rtl::exception& e)
490
+ {
491
+ return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
492
+ }
472
493
  }
473
494
  }
474
495
  return Error(_T("Invalid ActiveTable::Prepare param 1"), IID_IActiveTable);
475
496
  }
476
497
 
477
-
478
498
  STDMETHODIMP CActiveTable::GetWritableRecord(IWritableRecord** retVal)
479
499
  {
480
500
 
481
501
  if (m_recObj == NULL)
482
502
  {
483
503
  CComObject<CWritableRecord>::CreateInstance(&m_recObj);
484
- m_recObj->m_rec = &m_at->getWritableRecord();
504
+ if (!m_recObj)
505
+ return Error("CreateInstance WritableRecord", IID_IActiveTable);
506
+ m_recObj->AddRef();
485
507
  }
486
- if (m_recObj)
508
+ try
487
509
  {
488
-
510
+ m_recObj->m_rec = &m_at->getWritableRecord();
489
511
  IWritableRecord* wrec;
490
512
  m_recObj->QueryInterface(IID_IWritableRecord, (void**)&wrec);
491
513
  _ASSERTE(wrec);
492
514
  *retVal = wrec;
515
+ return S_OK;
516
+ }
517
+ catch (bzs::rtl::exception& e)
518
+ {
519
+ return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
493
520
  }
494
-
495
- return S_OK;
496
521
  }
497
522
 
498
523
  STDMETHODIMP CActiveTable::get_TableDef(ITableDef** Value)
499
524
  {
500
- CComObject<CTableDef>* piObj;
501
- CComObject<CTableDef>::CreateInstance(&piObj);
502
- if (piObj)
525
+ try
503
526
  {
527
+ CComObject<CTableDef>* piObj;
528
+ CComObject<CTableDef>::CreateInstance(&piObj);
529
+ if (!piObj)
530
+ return Error(_T("CreateInstance TableDef"), IID_IActiveTable);
504
531
 
505
532
  piObj->m_tabledefPtr =
506
533
  const_cast<tabledef**>(m_at->table()->tableDefPtr());
@@ -509,10 +536,12 @@ STDMETHODIMP CActiveTable::get_TableDef(ITableDef** Value)
509
536
  piObj->QueryInterface(IID_ITableDef, (void**)&tbd);
510
537
  _ASSERTE(tbd);
511
538
  *Value = tbd;
539
+ return S_OK;
540
+ }
541
+ catch (bzs::rtl::exception& e)
542
+ {
543
+ return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
512
544
  }
513
- else
514
- *Value = 0;
515
- return S_OK;
516
545
  }
517
546
 
518
547
  STDMETHODIMP CActiveTable::Table(ITable** retVal)
@@ -521,23 +550,40 @@ STDMETHODIMP CActiveTable::Table(ITable** retVal)
521
550
  {
522
551
  CComObject<CTableTd>* ptb;
523
552
  CComObject<CTableTd>::CreateInstance(&ptb);
524
-
525
- if (ptb)
526
- {
527
- ptb->m_tb = m_at->table();
528
- ptb->m_tb->setOptionalData((void*)NULL);
529
- ITable* itb;
530
- ptb->QueryInterface(IID_ITable, (void**)&itb);
531
- _ASSERTE(itb);
532
- *retVal = itb;
533
- }
534
- else
535
- *retVal = NULL;
553
+ if (!ptb)
554
+ return Error(_T("CreateInstance Table"), IID_IActiveTable);
555
+ ptb->m_tb = m_at->table();
556
+ ptb->m_tb->setOptionalData((void*)NULL);
557
+ ITable* itb;
558
+ ptb->QueryInterface(IID_ITable, (void**)&itb);
559
+ _ASSERTE(itb);
560
+ *retVal = itb;
536
561
  return S_OK;
537
562
  }
563
+ catch (bzs::rtl::exception& e)
564
+ {
565
+ return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
566
+ }
567
+ }
538
568
 
569
+ STDMETHODIMP CActiveTable::ReadMore(IRecordset** retVal)
570
+ {
571
+ try
572
+ {
573
+ CComObject<CARecordset>* rsObj;
574
+ CComObject<CARecordset>::CreateInstance(&rsObj);
575
+ if (!rsObj)
576
+ return Error(_T("CreateInstance Recordset"), IID_IActiveTable);
577
+ IRecordset* rs;
578
+ rsObj->QueryInterface(IID_IRecordset, (void**)&rs);
579
+ _ASSERTE(rs);
580
+ *retVal = rs;
581
+ m_at->readMore(*rsObj->m_rs);
582
+ return S_OK;
583
+ }
539
584
  catch (bzs::rtl::exception& e)
540
585
  {
541
586
  return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IActiveTable);
542
587
  }
543
588
  }
589
+
@@ -81,8 +81,8 @@ public:
81
81
 
82
82
  STDMETHOD(GetWritableRecord)(IWritableRecord** retVal);
83
83
  STDMETHOD(get_TableDef)(ITableDef** Value);
84
-
85
84
  STDMETHOD(Table)(ITable** retVal);
85
+ STDMETHOD(ReadMore)(IRecordset** retVal);
86
86
  };
87
87
 
88
88
  OBJECT_ENTRY_AUTO(__uuidof(ActiveTable), CActiveTable)
@@ -77,7 +77,8 @@ typedef
77
77
  enum eFindType
78
78
  {
79
79
  findForword = 0,
80
- findBackForword = 1
80
+ findBackForword = 1,
81
+ findContinue = 2
81
82
  }eFindType;
82
83
 
83
84
 
@@ -192,7 +193,13 @@ enum eStatus
192
193
  NET_BAD_SRB_FORMAT = 3021,
193
194
  ERROR_TD_HOSTNAME_NOT_FOUND = 3103,
194
195
  ERROR_TD_CONNECTION_FAILURE = 3106,
195
- ERROR_TD_NOT_CONNECTED = 3110
196
+ ERROR_TD_NOT_CONNECTED = 3110,
197
+ ERROR_TD_NET_TIMEOUT = 3800,
198
+ ERROR_TD_NET_REMOTE_DISCONNECT= 3801,
199
+ ERROR_TD_NET_TOO_BIGDATA = 3802,
200
+ ERROR_TD_NET_OTHER = 3810,
201
+ ERROR_TD_C_CLIENT_UNKNOWN = 3811,
202
+ ERROR_TD_RECONNECTED = 3900
196
203
  }eStatus;
197
204
 
198
205
  typedef
@@ -350,7 +357,9 @@ enum eGroupFunc
350
357
  fcount = 1,
351
358
  favg = 2,
352
359
  fmin = 3,
353
- fmax = 4
360
+ fmax = 4,
361
+ ffirst = 5,
362
+ flast = 6
354
363
  }eGroupFunc;
355
364
 
356
365
  typedef
@@ -493,7 +502,10 @@ interface IDatabase : IDispatch
493
502
  HRESULT _stdcall TrxIsolationServer([out, retval] eSrvIsorationType* Value);
494
503
  [propget, id(0x000000F6)]
495
504
  HRESULT _stdcall TrxLockWaitTimeoutServer([out, retval] int* Value);
496
-
505
+ [id(0x000000F7)]
506
+ HRESULT _stdcall DisconnectForReconnectTest([out, retval] VARIANT_BOOL* Value);
507
+ [id(0x000000F8)]
508
+ HRESULT _stdcall Reconnect([out, retval] VARIANT_BOOL* Value);
497
509
 
498
510
  };
499
511
 
@@ -710,14 +722,6 @@ interface ITable : IDispatch
710
722
  HRESULT _stdcall LogicalToString([out, retval] VARIANT_BOOL* Value);
711
723
  [propput, id(0x000000F3)]
712
724
  HRESULT _stdcall LogicalToString([in] VARIANT_BOOL Value);
713
- [propget, id(0x000000F4)]
714
- HRESULT _stdcall TrimPadChar([out, retval] VARIANT_BOOL* Value);
715
- [propput, id(0x000000F4)]
716
- HRESULT _stdcall TrimPadChar([in] VARIANT_BOOL Value);
717
- [propget, id(0x000000F5)]
718
- HRESULT _stdcall UsePadChar([out, retval] VARIANT_BOOL* Value);
719
- [propput, id(0x000000F5)]
720
- HRESULT _stdcall UsePadChar([in] VARIANT_BOOL Value);
721
725
  [id(0x000000F6)]
722
726
  HRESULT _stdcall MoveBookmarksId([in] long Value);
723
727
  [propget, id(0x000000F7)]
@@ -736,6 +740,10 @@ interface ITable : IDispatch
736
740
  HRESULT _stdcall Prepare([in] IQueryBase* Value, [in, defaultvalue(0)] VARIANT_BOOL ServerPrepare, [out, retval] IPreparedQuery** retVal);
737
741
  [id(0x000000FF)]
738
742
  HRESULT _stdcall SetPrepare([in] IPreparedQuery* Value);
743
+ [propget, id(0x000000E1)]
744
+ HRESULT _stdcall StatReasonOfFind([out, retval] short* Value);
745
+ [propget, id(0x000000E2)]
746
+ HRESULT _stdcall LastFindDirection([out, retval] short* Value);
739
747
 
740
748
  };
741
749
  [
@@ -897,9 +905,12 @@ interface IFieldDef : IDispatch
897
905
  HRESULT _stdcall SetLenByCharnum([in] unsigned short Value);
898
906
  [propget, id(0x00000015)]
899
907
  HRESULT _stdcall Index([out, retval] short* Value);
900
-
901
-
902
-
908
+ [id(0x00000016)]
909
+ HRESULT _stdcall SetPadCharSettings([in] VARIANT_BOOL set, [in] VARIANT_BOOL trim);
910
+ [propget, id(0x00000017)]
911
+ HRESULT _stdcall UsePadChar([out, retval] VARIANT_BOOL* Value);
912
+ [propget, id(0x00000018)]
913
+ HRESULT _stdcall TrimPadChar([out, retval] VARIANT_BOOL* Value);
903
914
  };
904
915
  [
905
916
  object,
@@ -1106,6 +1117,10 @@ interface IQueryBase : IDispatch
1106
1117
  HRESULT _stdcall BookmarkAlso([in] VARIANT_BOOL Value, [out, retval] IQueryBase** retVal);
1107
1118
  [id(0x000001B)]
1108
1119
  HRESULT _stdcall IsBookmarkAlso([out, retval] VARIANT_BOOL* retVal);
1120
+ [id(0x000001C)]
1121
+ HRESULT _stdcall StopAtLimit([in] VARIANT_BOOL Value, [out, retval] IQueryBase** retVal);
1122
+ [id(0x000001D)]
1123
+ HRESULT _stdcall IsStopAtLimit([out, retval] VARIANT_BOOL* retVal);
1109
1124
 
1110
1125
 
1111
1126
  };
@@ -1166,8 +1181,9 @@ interface IActiveTable : IDispatch
1166
1181
  HRESULT _stdcall Prepare([in] IQueryBase* Value, [in, defaultvalue(0)] VARIANT_BOOL ServerPrepare, [out, retval] IPreparedQuery** retVal);
1167
1182
  [id(0x000000D)]
1168
1183
  HRESULT _stdcall Table([out, retval]ITable** retVal);
1169
-
1170
-
1184
+ [id(0x000000E)]
1185
+ HRESULT _stdcall ReadMore([out, retval] IRecordset** retVal);
1186
+
1171
1187
  };
1172
1188
 
1173
1189
 
@@ -1230,6 +1246,10 @@ interface IRecordset : IDispatch
1230
1246
  [id(0x0000014)]
1231
1247
  HRESULT _stdcall ClearRecords();
1232
1248
 
1249
+ [id(0x0000015)]
1250
+ HRESULT _stdcall UnionRecordset([in] IRecordset* rs, [out, retval] IRecordset** retVal);
1251
+
1252
+
1233
1253
 
1234
1254
  };
1235
1255
 
@@ -1296,7 +1316,7 @@ interface IGroupQuery : IDispatch
1296
1316
 
1297
1317
  [id(0x0000002)]
1298
1318
  HRESULT _stdcall AddFunction([in] eGroupFunc func
1299
- , [in] IFieldNames* targetNames , [in, defaultvalue("")] BSTR resultName
1319
+ , [in] VARIANT targetNames , [in, defaultvalue("")] BSTR resultName
1300
1320
  , [in, defaultvalue("")]VARIANT q, [out, retval] IGroupQuery** retVal);
1301
1321
 
1302
1322
  [id(0x0000004)]
data/transactd.gemspec CHANGED
@@ -44,7 +44,7 @@ spec_build = Gem::Specification.new do |s|
44
44
  raise 'Can not read versions from ' + verfile + ' (' + ver_str + ')' if ver_str.length == 0
45
45
  s.version = ver_str
46
46
 
47
- binary_file = File.join('bin', RUBY_VERSION.match(/\d+\.\d+/)[0], 'transactd.so')
47
+ binary_file = File.join('bin', RUBY_VERSION.sub(/(\d+\.\d+)\..*/, '\1'), 'transactd.so')
48
48
  binarymode = File.exist?(binary_file)
49
49
 
50
50
  if binarymode
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: transactd
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - BizStation Corp.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-22 00:00:00.000000000 Z
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Transactd client for ruby gem
14
14
  email: transactd@bizstation.jp
@@ -19,8 +19,8 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - CMakeLists.txt
21
21
  - build/tdclrb/bldgem/extconf.rb
22
- - bin/common/tdclc_32_2_2.dll
23
- - bin/common/tdclc_64_2_2.dll
22
+ - bin/common/tdclc_32_2_3.dll
23
+ - bin/common/tdclc_64_2_3.dll
24
24
  - source/bzs/db/blobBuffer.h
25
25
  - source/bzs/db/blobStructs.h
26
26
  - source/bzs/db/engine/mysql/bookmark.h
@@ -301,6 +301,7 @@ files:
301
301
  - build/swig/ruby/tdclrb_wrap.cpp
302
302
  - build/swig/ruby/threadBlockRegionWrapper.h
303
303
  - build/swig/ruby/without_gvl.swg
304
+ - build/tdclrb/BUILDNUMBER.txt
304
305
  - build/tdclrb/CMakeLists.txt
305
306
  - build/tdclrb/gem/detect.rb
306
307
  - build/tdclrb/gem/helper.rb
@@ -314,6 +315,7 @@ files:
314
315
  - build/tdclc/libtdclcm.map
315
316
  - build/tdclc/tdclc.cbproj
316
317
  - build/tdclc/tdclc.rc
318
+ - build/tdclcpp/BUILDNUMBER.txt
317
319
  - build/tdclcpp/CMakeLists.txt
318
320
  - build/tdclcpp/tdclcpp.rc
319
321
  - build/tdclcpp/tdclcpp_bc.cbproj
@@ -326,6 +328,8 @@ files:
326
328
  - ./README-JA
327
329
  - ./README_ORMSRCGEN
328
330
  - ./README_ORMSRCGEN-JA
331
+ - ./RELEASE_NOTE
332
+ - ./RELEASE_NOTE-JA
329
333
  - ./transactd.gemspec
330
334
  homepage: http://www.bizstation.jp/ja/transactd
331
335
  licenses:
Binary file
Binary file