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
@@ -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