transactd 2.4.3 → 2.4.4

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/RELEASE_NOTE-JA.md +21 -0
  3. data/RELEASE_NOTE.md +22 -0
  4. data/bin/common/tdclc_32_2_4.dll +0 -0
  5. data/bin/common/tdclc_64_2_4.dll +0 -0
  6. data/build/swig/ruby/tdclrb_wrap.cpp +1225 -1848
  7. data/build/swig/tdcl.i +77 -13
  8. data/build/tdclc/tdclc.rc +4 -4
  9. data/build/tdclcpp/tdclcpp.rc +4 -4
  10. data/build/tdclrb/tdclrb.rc +4 -4
  11. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +11 -14
  12. data/source/bzs/db/protocol/tdap/client/connectionPool.h +1 -6
  13. data/source/bzs/db/protocol/tdap/client/dbDef.h +5 -0
  14. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +5 -10
  15. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +6 -5
  16. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +7 -2
  17. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +5 -5
  18. data/source/bzs/db/protocol/tdap/client/nsTable.h +6 -1
  19. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
  20. data/source/bzs/db/protocol/tdap/mysql/request.h +7 -2
  21. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +2 -3
  22. data/source/bzs/db/protocol/tdap/tdapcapi.h +4 -4
  23. data/source/bzs/netsvc/client/tcpClient.h +24 -10
  24. data/source/bzs/test/tdclphp/transactd_Test.php +34 -0
  25. data/source/bzs/test/tdclphp/transactd_pool_Test.php +0 -6
  26. data/source/bzs/test/tdclrb/transactd_spec.rb +34 -0
  27. data/source/bzs/test/trdclengn/test_trdclengn.cpp +4 -1
  28. data/source/global/tdclatl/Database.cpp +29 -7
  29. data/source/global/tdclatl/Database.h +6 -0
  30. data/source/global/tdclatl/DbDef.cpp +49 -45
  31. data/source/global/tdclatl/DbDef.h +1 -0
  32. data/source/global/tdclatl/FieldDef.cpp +14 -0
  33. data/source/global/tdclatl/FieldDef.h +4 -0
  34. data/source/global/tdclatl/FieldDefs.cpp +14 -0
  35. data/source/global/tdclatl/FieldDefs.h +4 -0
  36. data/source/global/tdclatl/GroupQuery.cpp +15 -0
  37. data/source/global/tdclatl/GroupQuery.h +4 -0
  38. data/source/global/tdclatl/KeyDef.cpp +1 -1
  39. data/source/global/tdclatl/KeyDef.h +1 -1
  40. data/source/global/tdclatl/PooledDbManager.cpp +15 -0
  41. data/source/global/tdclatl/PooledDbManager.h +4 -0
  42. data/source/global/tdclatl/PreparedQuery.cpp +15 -0
  43. data/source/global/tdclatl/PreparedQuery.h +4 -0
  44. data/source/global/tdclatl/QueryBase.cpp +15 -0
  45. data/source/global/tdclatl/QueryBase.h +4 -0
  46. data/source/global/tdclatl/Record.cpp +30 -0
  47. data/source/global/tdclatl/Record.h +8 -0
  48. data/source/global/tdclatl/Recordset.cpp +18 -3
  49. data/source/global/tdclatl/Recordset.h +5 -1
  50. data/source/global/tdclatl/RecordsetQuery.cpp +15 -1
  51. data/source/global/tdclatl/RecordsetQuery.h +5 -1
  52. data/source/global/tdclatl/Table.cpp +29 -3
  53. data/source/global/tdclatl/Table.h +5 -0
  54. data/source/global/tdclatl/TableDef.cpp +15 -0
  55. data/source/global/tdclatl/TableDef.h +4 -0
  56. data/source/global/tdclatl/activeTable.cpp +15 -0
  57. data/source/global/tdclatl/activeTable.h +4 -0
  58. data/source/global/tdclatl/tdclatl.idl +16 -10
  59. metadata +2 -2
@@ -207,6 +207,8 @@ class transactdTest extends PHPUnit_Framework_TestCase
207
207
  $fd->len = 33;
208
208
  $dbdef->updateTableDef($tableid);
209
209
  $this->assertEquals($dbdef->stat(), 0);
210
+ //test statMsg
211
+ $this->assertEquals($dbdef->statMsg(), '');
210
212
 
211
213
  $kd = $dbdef->insertKey($tableid, 0);
212
214
  $kd->segment(0)->fieldNum = 0;
@@ -217,12 +219,19 @@ class transactdTest extends PHPUnit_Framework_TestCase
217
219
  $dbdef->updateTableDef($tableid);
218
220
  $this->assertEquals($dbdef->stat(), 0);
219
221
  $this->assertEquals($dbdef->validateTableDef($tableid), 0);
222
+
223
+ //test toChar
224
+ $s = $td->toChar('abcdefg');
225
+ $this->assertEquals($s, 'abcdefg');
226
+
220
227
  }
221
228
  private function openTable($db)
222
229
  {
223
230
  $this->openDatabase($db);
224
231
  $tb = $db->openTable(TABLENAME);
225
232
  $this->assertEquals($db->stat(), 0);
233
+ //test statMsg
234
+ $this->assertEquals($db->statMsg(), '');
226
235
  return $tb;
227
236
  }
228
237
 
@@ -328,6 +337,28 @@ class transactdTest extends PHPUnit_Framework_TestCase
328
337
  $this->assertEquals($engine_ver->minorVersion, Bz\transactd::TRANSACTD_VER_MINOR);
329
338
  $this->assertEquals(chr($engine_ver->type), 'T');
330
339
  }
340
+ public function testReadDatabaseDirectory()
341
+ {
342
+ $db = new Bz\database();
343
+ $tb = $this->openTable($db);
344
+ $this->assertNotEquals($tb, NULL);
345
+ $s = $db->readDatabaseDirectory();
346
+ $this->assertNotEquals($s, '');
347
+ }
348
+ public function testGetFileName()
349
+ {
350
+ $s = '';
351
+ if (PHP_OS == 'WIN32' || PHP_OS == 'WINNT')
352
+ $s = Bz\nstable::getFileName('test\abcdefghijklnmopqrstuvwxyz1234567890.txt');
353
+ else
354
+ $s = Bz\nstable::getFileName('test/abcdefghijklnmopqrstuvwxyz1234567890.txt');
355
+ $this->assertEquals($s, 'abcdefghijklnmopqrstuvwxyz1234567890.txt');
356
+ }
357
+ public function testGetDirURI()
358
+ {
359
+ $s = Bz\nstable::getDirURI('tdap://localhost/test?dbfile=test.bdf');
360
+ $this->assertEquals($s, 'tdap://localhost/test?dbfile=');
361
+ }
331
362
  public function testInsert()
332
363
  {
333
364
  $db = new Bz\database();
@@ -339,6 +370,9 @@ class transactdTest extends PHPUnit_Framework_TestCase
339
370
  $tb->setFV(FDI_NAME, 'kosaka');
340
371
  $tb->insert();
341
372
  $this->assertEquals($tb->stat(), 0);
373
+ //test statMsg
374
+ $this->assertEquals($tb->statMsg(), '');
375
+
342
376
  $db->beginTrn();
343
377
  $n = 1;
344
378
  $tb->seekLast();
@@ -130,10 +130,4 @@ class transactdPoolTest extends PHPUnit_Framework_TestCase
130
130
  }
131
131
  $this->assertEquals(true, true);
132
132
  }
133
-
134
- public function testReset()
135
- {
136
- $dbm1 = new Bz\pooledDbManager();
137
- $dbm1->reset(0);
138
- }
139
133
  }
@@ -85,6 +85,10 @@ end
85
85
  def testOpenDatabase(db)
86
86
  db.open(URL, Transactd::TYPE_SCHEMA_BDF, Transactd::TD_OPEN_NORMAL)
87
87
  expect(db.stat()).to eq 0
88
+ # test statMsg
89
+ msg = db.statMsg()
90
+ expect(msg).to eq ''
91
+
88
92
  end
89
93
 
90
94
  def testCreateTable(db)
@@ -168,6 +172,10 @@ def testCreateTable(db)
168
172
  dbdef.updateTableDef(table_id)
169
173
  expect(dbdef.stat()).to eq 0
170
174
 
175
+ # test statMsg
176
+ msg = dbdef.statMsg()
177
+ expect(msg).to eq ''
178
+
171
179
  kd = dbdef.insertKey(table_id, 0)
172
180
  kd.segment(0).fieldNum = 0
173
181
  kd.segment(0).flags.bit8 = 1
@@ -225,6 +233,29 @@ def testVersion()
225
233
  db.close()
226
234
  end
227
235
 
236
+ def testReadDatabaseDirectory()
237
+ db = Transactd::Database.new()
238
+ tb = testOpenTable(db)
239
+ expect(tb).not_to be nil
240
+ s = db.readDatabaseDirectory()
241
+ expect(s).not_to eq ''
242
+ end
243
+
244
+ def testGetFileName()
245
+ s = ''
246
+ if RUBY_PLATFORM =~ /mswin(?!ce)|mingw|cygwin|bccwin/
247
+ s = Transactd::Nstable::getFileName('test\abcdefghijklnmopqrstuvwxyz1234567890.txt')
248
+ else
249
+ s = Transactd::Nstable::getFileName('test/abcdefghijklnmopqrstuvwxyz1234567890.txt')
250
+ end
251
+ expect(s).to eq 'abcdefghijklnmopqrstuvwxyz1234567890.txt'
252
+ end
253
+
254
+ def testGetDirURI()
255
+ s = Transactd::Nstable::getDirURI('tdap://localhost/test?dbfile=test.bdf')
256
+ expect(s).to eq 'tdap://localhost/test?dbfile='
257
+ end
258
+
228
259
  def testInsert()
229
260
  db = Transactd::Database.new()
230
261
  tb = testOpenTable(db)
@@ -235,6 +266,9 @@ def testInsert()
235
266
  tb.setFV(FDI_NAME, 'kosaka')
236
267
  tb.insert()
237
268
  expect(tb.stat()).to eq 0
269
+ # test statMsg
270
+ msg = tb.statMsg()
271
+ expect(msg).to eq ''
238
272
  end
239
273
  db.beginTrn()
240
274
  n = 1
@@ -263,6 +263,9 @@ void testCreateNewDataBase(database* db)
263
263
  TD_OPEN_NORMAL);
264
264
  BOOST_CHECK_MESSAGE(0 == db->stat(),
265
265
  "createNewDataBase 1 stat = " << db->stat());
266
+ _TCHAR buf[255];
267
+ db->readDatabaseDirectory(buf, 255);
268
+ BOOST_CHECK_MESSAGE(_tstring(buf) != _tstring(_T("")), "readDatabaseDirectory" << buf);
266
269
 
267
270
  dbdef* def = db->dbDef();
268
271
  if (def)
@@ -4808,7 +4811,7 @@ void testDbPool()
4808
4811
  BOOST_CHECK_MESSAGE(0 == tb2->stat(), "tb2->seekFirst");
4809
4812
  }
4810
4813
  poolMgr.endSnapshot();
4811
- poolMgr.reset(0);
4814
+
4812
4815
  }
4813
4816
 
4814
4817
  //--------------------------------------------------------------------------------------
@@ -23,6 +23,20 @@
23
23
  #include "TdVersion.h"
24
24
 
25
25
  using namespace bzs::db::protocol::tdap::client;
26
+ STDMETHODIMP CDatabase::InterfaceSupportsErrorInfo(REFIID riid)
27
+ {
28
+ static const IID* const arr[] =
29
+ {
30
+ &IID_IDatabase
31
+ };
32
+
33
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
34
+ {
35
+ if (InlineIsEqualGUID(*arr[i],riid))
36
+ return S_OK;
37
+ }
38
+ return S_FALSE;
39
+ }
26
40
 
27
41
  STDMETHODIMP CDatabase::Open(BSTR Uri, eSchemaType SchemaType, eOpenMode Mode,
28
42
  BSTR Dir, BSTR Ownername, VARIANT_BOOL* Param6)
@@ -59,9 +73,9 @@ STDMETHODIMP CDatabase::OpenTable(VARIANT TableID, eOpenMode Mode,
59
73
  BSTR Uri, ITable** ret)
60
74
  {
61
75
 
62
- if (!m_db->dbDef())
63
- return Error("database is not opened. ", IID_IDatabase);
64
-
76
+ //if (!m_db->dbDef())
77
+ // return Error("database is not opened. ", IID_IDatabase);
78
+ *ret = NULL;
65
79
  table* tb = NULL;
66
80
  if (TableID.vt == VT_BSTR)
67
81
  tb = m_db->openTable(TableID.bstrVal, Mode, (bool)AutoCreate, OwnerName,
@@ -70,8 +84,9 @@ STDMETHODIMP CDatabase::OpenTable(VARIANT TableID, eOpenMode Mode,
70
84
  tb = m_db->openTable(TableID.iVal, Mode, (bool)AutoCreate, OwnerName,
71
85
  Uri);
72
86
 
73
- if (tb == NULL)
74
- return Error("Invalid tableid", IID_IDatabase);
87
+ if (m_db->stat() != 0)
88
+ return S_OK;
89
+ //return Error("Invalid tableid", IID_IDatabase);
75
90
 
76
91
  CComObject<CTableTd>* ptb;
77
92
  CComObject<CTableTd>::CreateInstance(&ptb);
@@ -86,8 +101,7 @@ STDMETHODIMP CDatabase::OpenTable(VARIANT TableID, eOpenMode Mode,
86
101
  *ret = itb;
87
102
  m_IsAtatchOK = false;
88
103
  }
89
- else
90
- *ret = NULL;
104
+
91
105
 
92
106
  return S_OK;
93
107
  }
@@ -356,6 +370,14 @@ STDMETHODIMP CDatabase::TdapErr(OLE_HANDLE hWnd, BSTR* Value)
356
370
  return S_OK;
357
371
  }
358
372
 
373
+ STDMETHODIMP CDatabase::StatMsg(BSTR* Value)
374
+ {
375
+ wchar_t tmp[1024] = { NULL };
376
+ m_db->statMsg(tmp);
377
+ *Value = ::SysAllocString(tmp);
378
+ return S_OK;
379
+ }
380
+
359
381
  STDMETHODIMP CDatabase::Clone(IDatabase** Value)
360
382
  {
361
383
  CComObject<CDatabase>* ptb;
@@ -35,6 +35,7 @@ bool __stdcall onDeleteRecord(bzs::db::protocol::tdap::client::database* db,
35
35
  class ATL_NO_VTABLE CDatabase
36
36
  : public CComObjectRootEx<CComSingleThreadModel>,
37
37
  public CComCoClass<CDatabase, &CLSID_Database>,
38
+ public ISupportErrorInfo,
38
39
  public IDispatchImpl<IDatabase, &IID_IDatabase, &LIBID_transactd,
39
40
  /* wMajor = */ 1, /* wMinor = */ 0>,
40
41
  public IConnectionPointContainerImpl<CDatabase>,
@@ -61,7 +62,10 @@ public:
61
62
  COM_INTERFACE_ENTRY(IDatabase)
62
63
  COM_INTERFACE_ENTRY(IDispatch)
63
64
  COM_INTERFACE_ENTRY(IConnectionPointContainer)
65
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
64
66
  END_COM_MAP()
67
+ // ISupportsErrorInfo
68
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
65
69
 
66
70
  BEGIN_CONNECTION_POINT_MAP(CDatabase)
67
71
  CONNECTION_POINT_ENTRY(__uuidof(_IDatabaseEvents))
@@ -127,6 +131,7 @@ public:
127
131
  STDMETHOD(Rename)(BSTR oldUri, BSTR newUri);
128
132
  STDMETHOD(get_Uri)(BSTR* uri);
129
133
  STDMETHOD(TdapErr)(OLE_HANDLE hWnd, BSTR* Value);
134
+ STDMETHOD(StatMsg)(BSTR* Value);
130
135
  STDMETHOD(Clone)(IDatabase** Value);
131
136
  STDMETHOD(AssignSchemaData)(IDbDef* Src, short* Value);
132
137
  STDMETHOD(Continuous)(eContinusOpr Op, VARIANT_BOOL inclideRepfile,
@@ -152,6 +157,7 @@ public:
152
157
  STDMETHOD(get_MaxTables)(int* Value);
153
158
  STDMETHOD(get_TrxIsolationServer)(eSrvIsorationType* Value);
154
159
  STDMETHOD(get_TrxLockWaitTimeoutServer)(int* Value);
160
+
155
161
  };
156
162
 
157
163
  OBJECT_ENTRY_AUTO(__uuidof(Database), CDatabase)
@@ -34,22 +34,20 @@ STDMETHODIMP CDbDef::get_TableCount(short* Value)
34
34
 
35
35
  STDMETHODIMP CDbDef::TableDef(short Index, ITableDef** Value)
36
36
  {
37
- if (!m_dbDef->tableDefs(Index))
38
- return Error("Invalid index.", IID_IDbDef);
39
-
40
- CComObject<CTableDef>* piObj = NULL;
41
- CComObject<CTableDef>::CreateInstance(&piObj);
42
- if (piObj)
37
+ *Value = 0;
38
+ if (m_dbDef->tableDefs(Index))
43
39
  {
44
- piObj->m_tabledefPtr = m_dbDef->tableDefPtr(Index);
45
- ITableDef* tbd;
46
- piObj->QueryInterface(IID_ITableDef, (void**)&tbd);
47
- _ASSERTE(tbd);
48
- *Value = tbd;
40
+ CComObject<CTableDef>* piObj = NULL;
41
+ CComObject<CTableDef>::CreateInstance(&piObj);
42
+ if (piObj)
43
+ {
44
+ piObj->m_tabledefPtr = m_dbDef->tableDefPtr(Index);
45
+ ITableDef* tbd;
46
+ piObj->QueryInterface(IID_ITableDef, (void**)&tbd);
47
+ _ASSERTE(tbd);
48
+ *Value = tbd;
49
+ }
49
50
  }
50
- else
51
- *Value = 0;
52
-
53
51
  return S_OK;
54
52
  }
55
53
 
@@ -89,24 +87,22 @@ STDMETHODIMP CDbDef::InsertField(short TableIndex, short InsertIndex,
89
87
  IFieldDef** Param3)
90
88
 
91
89
  {
90
+ *Param3 = 0;
92
91
  fielddef* fdPtr = m_dbDef->insertField(TableIndex, InsertIndex);
93
- if (!fdPtr)
94
- return Error("Invalid index.", IID_IDbDef);
95
-
96
- CComObject<CFieldDef>* piObj;
97
- CComObject<CFieldDef>::CreateInstance(&piObj);
98
- if (piObj)
99
- {
100
- piObj->m_tabledefPtr = m_dbDef->tableDefPtr(TableIndex);
101
- piObj->m_index = InsertIndex;
102
- IFieldDef* fd;
103
- piObj->QueryInterface(IID_IFieldDef, (void**)&fd);
104
- _ASSERTE(fd);
105
- *Param3 = piObj;
92
+ if (fdPtr)
93
+ {
94
+ CComObject<CFieldDef>* piObj;
95
+ CComObject<CFieldDef>::CreateInstance(&piObj);
96
+ if (piObj)
97
+ {
98
+ piObj->m_tabledefPtr = m_dbDef->tableDefPtr(TableIndex);
99
+ piObj->m_index = InsertIndex;
100
+ IFieldDef* fd;
101
+ piObj->QueryInterface(IID_IFieldDef, (void**)&fd);
102
+ _ASSERTE(fd);
103
+ *Param3 = piObj;
104
+ }
106
105
  }
107
- else
108
- *Param3 = 0;
109
-
110
106
  return S_OK;
111
107
  }
112
108
 
@@ -114,23 +110,23 @@ STDMETHODIMP CDbDef::InsertKey(short TableIndex, short InsertIndex,
114
110
  IKeyDef** Param3)
115
111
 
116
112
  {
113
+ *Param3 = 0;
117
114
  keydef* keyPtr = m_dbDef->insertKey(TableIndex, InsertIndex);
118
- if (!keyPtr)
119
- return Error("Invalid index.", IID_IDbDef);
120
- CComObject<CKeyDef>* piObj;
121
- CComObject<CKeyDef>::CreateInstance(&piObj);
122
- if (piObj)
123
- {
124
- piObj->m_tabledefPtr = m_dbDef->tableDefPtr(TableIndex);
125
- ;
126
- piObj->m_index = InsertIndex;
127
- IKeyDef* kb;
128
- piObj->QueryInterface(IID_IKeyDef, (void**)&kb);
129
- _ASSERTE(kb);
130
- *Param3 = piObj;
115
+ if (keyPtr)
116
+ {
117
+ CComObject<CKeyDef>* piObj;
118
+ CComObject<CKeyDef>::CreateInstance(&piObj);
119
+ if (piObj)
120
+ {
121
+ piObj->m_tabledefPtr = m_dbDef->tableDefPtr(TableIndex);
122
+ ;
123
+ piObj->m_index = InsertIndex;
124
+ IKeyDef* kb;
125
+ piObj->QueryInterface(IID_IKeyDef, (void**)&kb);
126
+ _ASSERTE(kb);
127
+ *Param3 = piObj;
128
+ }
131
129
  }
132
- else
133
- *Param3 = 0;
134
130
  return S_OK;
135
131
  }
136
132
 
@@ -245,6 +241,14 @@ STDMETHODIMP CDbDef::TdapErr(OLE_HANDLE hWnd, BSTR* Value)
245
241
  return S_OK;
246
242
  }
247
243
 
244
+ STDMETHODIMP CDbDef::StatMsg(BSTR* Value)
245
+ {
246
+ wchar_t tmp[1024] = { NULL };
247
+ m_dbDef->tdapErr(0, tmp);
248
+ *Value = ::SysAllocString(tmp);
249
+ return S_OK;
250
+ }
251
+
248
252
  STDMETHODIMP CDbDef::ValidateTableDef(short TableIndex, short* Value)
249
253
  {
250
254
  *Value = m_dbDef->validateTableDef(TableIndex);
@@ -76,5 +76,6 @@ public:
76
76
  STDMETHOD(put_Version)(int Value);
77
77
  STDMETHOD(get_Stat)(eStatus* Value);
78
78
  STDMETHOD(TdapErr)(OLE_HANDLE hWnd, BSTR* Value);
79
+ STDMETHOD(StatMsg)(BSTR* Value);
79
80
  STDMETHOD(ValidateTableDef)(short TableIndex, short* Value);
80
81
  };
@@ -19,6 +19,20 @@
19
19
  #include "stdafx.h"
20
20
  #include "FieldDef.h"
21
21
  #include "Flags.h"
22
+ STDMETHODIMP CFieldDef::InterfaceSupportsErrorInfo(REFIID riid)
23
+ {
24
+ static const IID* const arr[] =
25
+ {
26
+ &IID_IFieldDef
27
+ };
28
+
29
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
30
+ {
31
+ if (InlineIsEqualGUID(*arr[i],riid))
32
+ return S_OK;
33
+ }
34
+ return S_FALSE;
35
+ }
22
36
 
23
37
  STDMETHODIMP CFieldDef::get_Name(BSTR* Value)
24
38
  {
@@ -27,6 +27,7 @@ using namespace ATL;
27
27
  class ATL_NO_VTABLE CFieldDef
28
28
  : public CComObjectRootEx<CComSingleThreadModel>,
29
29
  public CComCoClass<CFieldDef, &CLSID_FieldDef>,
30
+ public ISupportErrorInfo,
30
31
  public IDispatchImpl<IFieldDef, &IID_IFieldDef, &LIBID_transactd,
31
32
  /* wMajor = */ 1, /* wMinor = */ 0>
32
33
  {
@@ -58,7 +59,10 @@ public:
58
59
  BEGIN_COM_MAP(CFieldDef)
59
60
  COM_INTERFACE_ENTRY(IFieldDef)
60
61
  COM_INTERFACE_ENTRY(IDispatch)
62
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
61
63
  END_COM_MAP()
64
+ // ISupportsErrorInfo
65
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
62
66
 
63
67
  DECLARE_PROTECT_FINAL_CONSTRUCT()
64
68
 
@@ -19,6 +19,20 @@
19
19
  #include "stdafx.h"
20
20
  #include "FieldDefs.h"
21
21
  #include "FieldDef.h"
22
+ STDMETHODIMP CFieldDefs::InterfaceSupportsErrorInfo(REFIID riid)
23
+ {
24
+ static const IID* const arr[] =
25
+ {
26
+ &IID_IFieldDefs
27
+ };
28
+
29
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
30
+ {
31
+ if (InlineIsEqualGUID(*arr[i],riid))
32
+ return S_OK;
33
+ }
34
+ return S_FALSE;
35
+ }
22
36
 
23
37
  void CFieldDefs::FinalRelease()
24
38
  {
@@ -28,6 +28,7 @@ class CFieldDef;
28
28
  class ATL_NO_VTABLE CFieldDefs
29
29
  : public CComObjectRootEx<CComSingleThreadModel>,
30
30
  public CComCoClass<CFieldDefs, &CLSID_FieldDefs>,
31
+ public ISupportErrorInfo,
31
32
  public IDispatchImpl<IFieldDefs, &IID_IFieldDefs, &LIBID_transactd,
32
33
  /* wMajor = */ 1, /* wMinor = */ 0>
33
34
  {
@@ -41,7 +42,10 @@ public:
41
42
  BEGIN_COM_MAP(CFieldDefs)
42
43
  COM_INTERFACE_ENTRY(IFieldDefs)
43
44
  COM_INTERFACE_ENTRY(IDispatch)
45
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
44
46
  END_COM_MAP()
47
+ // ISupportsErrorInfo
48
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
45
49
 
46
50
  DECLARE_PROTECT_FINAL_CONSTRUCT()
47
51
 
@@ -24,6 +24,21 @@
24
24
 
25
25
  using namespace bzs::db::protocol::tdap::client;
26
26
 
27
+ STDMETHODIMP CGroupQuery::InterfaceSupportsErrorInfo(REFIID riid)
28
+ {
29
+ static const IID* const arr[] =
30
+ {
31
+ &IID_IGroupQuery
32
+ };
33
+
34
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
35
+ {
36
+ if (InlineIsEqualGUID(*arr[i],riid))
37
+ return S_OK;
38
+ }
39
+ return S_FALSE;
40
+ }
41
+
27
42
  void CGroupQuery::setResult(IGroupQuery** retVal)
28
43
  {
29
44
  this->QueryInterface(IID_IGroupQuery, (void**)retVal);
@@ -27,6 +27,7 @@ using namespace ATL;
27
27
  class ATL_NO_VTABLE CGroupQuery
28
28
  : public CComObjectRootEx<CComSingleThreadModel>,
29
29
  public CComCoClass<CGroupQuery, &CLSID_GroupQuery>,
30
+ public ISupportErrorInfo,
30
31
  public IDispatchImpl<IGroupQuery, &IID_IGroupQuery, &LIBID_transactd,
31
32
  /* wMajor = */ 1, /* wMinor = */ 0>
32
33
  {
@@ -43,7 +44,10 @@ public:
43
44
  BEGIN_COM_MAP(CGroupQuery)
44
45
  COM_INTERFACE_ENTRY(IGroupQuery)
45
46
  COM_INTERFACE_ENTRY(IDispatch)
47
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
46
48
  END_COM_MAP()
49
+ // ISupportsErrorInfo
50
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
47
51
 
48
52
  DECLARE_PROTECT_FINAL_CONSTRUCT()
49
53
 
@@ -32,7 +32,7 @@ STDMETHODIMP CKeyDef::put_SegmentCount(unsigned char Value)
32
32
  return S_OK;
33
33
  }
34
34
 
35
- STDMETHODIMP CKeyDef::Segments(short Index, IKeySegment** Value)
35
+ STDMETHODIMP CKeyDef::get_Segments(short Index, IKeySegment** Value)
36
36
  {
37
37
  CComObject<CKeySegment>* piObj;
38
38
  CComObject<CKeySegment>::CreateInstance(&piObj);
@@ -53,6 +53,6 @@ public:
53
53
 
54
54
  public:
55
55
  STDMETHOD(get_SegmentCount)(unsigned char* Value);
56
- STDMETHOD(Segments)(short Index, IKeySegment** Value);
56
+ STDMETHOD(get_Segments)(short Index, IKeySegment** Value);
57
57
  STDMETHOD(put_SegmentCount)(unsigned char Value);
58
58
  };
@@ -24,6 +24,21 @@
24
24
 
25
25
  using namespace bzs::db::protocol::tdap::client;
26
26
 
27
+ STDMETHODIMP CPooledDbManager::InterfaceSupportsErrorInfo(REFIID riid)
28
+ {
29
+ static const IID* const arr[] =
30
+ {
31
+ &IID_IPooledDbManager
32
+ };
33
+
34
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
35
+ {
36
+ if (InlineIsEqualGUID(*arr[i],riid))
37
+ return S_OK;
38
+ }
39
+ return S_FALSE;
40
+ }
41
+
27
42
  STDMETHODIMP CPooledDbManager::put_MaxConnections(int n)
28
43
  {
29
44
  pooledDbManager::setMaxConnections(n);
@@ -26,6 +26,7 @@ using namespace ATL;
26
26
  class ATL_NO_VTABLE CPooledDbManager
27
27
  : public CComObjectRootEx<CComSingleThreadModel>,
28
28
  public CComCoClass<CPooledDbManager, &CLSID_PooledDbManager>,
29
+ public ISupportErrorInfo,
29
30
  public IDispatchImpl<IPooledDbManager, &IID_IPooledDbManager,
30
31
  &LIBID_transactd, /* wMajor = */ 1, /* wMinor = */ 0>
31
32
  {
@@ -40,7 +41,10 @@ public:
40
41
  BEGIN_COM_MAP(CPooledDbManager)
41
42
  COM_INTERFACE_ENTRY(IPooledDbManager)
42
43
  COM_INTERFACE_ENTRY(IDispatch)
44
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
43
45
  END_COM_MAP()
46
+ // ISupportsErrorInfo
47
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
44
48
 
45
49
  DECLARE_PROTECT_FINAL_CONSTRUCT()
46
50
 
@@ -19,6 +19,21 @@
19
19
  #include "stdafx.h"
20
20
  #include "PreparedQuery.h"
21
21
 
22
+ STDMETHODIMP CPreparedQuery::InterfaceSupportsErrorInfo(REFIID riid)
23
+ {
24
+ static const IID* const arr[] =
25
+ {
26
+ &IID_IPreparedQuery
27
+ };
28
+
29
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
30
+ {
31
+ if (InlineIsEqualGUID(*arr[i],riid))
32
+ return S_OK;
33
+ }
34
+ return S_FALSE;
35
+ }
36
+
22
37
  STDMETHODIMP CPreparedQuery::SupplyValue(int Index, VARIANT Value, VARIANT_BOOL* retVal)
23
38
  {
24
39
  if (Value.vt != VT_BSTR)
@@ -26,6 +26,7 @@ using namespace ATL;
26
26
  class ATL_NO_VTABLE CPreparedQuery
27
27
  : public CComObjectRootEx<CComSingleThreadModel>,
28
28
  public CComCoClass<CPreparedQuery, &CLSID_PreparedQuery>,
29
+ public ISupportErrorInfo,
29
30
  public IDispatchImpl<IPreparedQuery, &IID_IPreparedQuery, &LIBID_transactd,
30
31
  /* wMajor = */ 1, /* wMinor = */ 0>
31
32
  {
@@ -44,7 +45,10 @@ public:
44
45
  BEGIN_COM_MAP(CPreparedQuery)
45
46
  COM_INTERFACE_ENTRY(IPreparedQuery)
46
47
  COM_INTERFACE_ENTRY(IDispatch)
48
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
47
49
  END_COM_MAP()
50
+ // ISupportsErrorInfo
51
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
48
52
 
49
53
  DECLARE_PROTECT_FINAL_CONSTRUCT()
50
54
 
@@ -21,6 +21,21 @@
21
21
  #include "Table.h"
22
22
  #include "Bookmark.h"
23
23
 
24
+ STDMETHODIMP CQueryBase::InterfaceSupportsErrorInfo(REFIID riid)
25
+ {
26
+ static const IID* const arr[] =
27
+ {
28
+ &IID_IQueryBase
29
+ };
30
+
31
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
32
+ {
33
+ if (InlineIsEqualGUID(*arr[i],riid))
34
+ return S_OK;
35
+ }
36
+ return S_FALSE;
37
+ }
38
+
24
39
  STDMETHODIMP CQueryBase::Reset(IQueryBase** retVal)
25
40
  {
26
41
  m_qb.reset();
@@ -27,6 +27,7 @@ using namespace ATL;
27
27
  class ATL_NO_VTABLE CQueryBase
28
28
  : public CComObjectRootEx<CComSingleThreadModel>,
29
29
  public CComCoClass<CQueryBase, &CLSID_QueryBase>,
30
+ public ISupportErrorInfo,
30
31
  public IDispatchImpl<IQueryBase, &IID_IQueryBase, &LIBID_transactd,
31
32
  /*wMajor =*/1, /*wMinor =*/0>
32
33
  {
@@ -43,7 +44,10 @@ public:
43
44
  BEGIN_COM_MAP(CQueryBase)
44
45
  COM_INTERFACE_ENTRY(IQueryBase)
45
46
  COM_INTERFACE_ENTRY(IDispatch)
47
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
46
48
  END_COM_MAP()
49
+ // ISupportsErrorInfo
50
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
47
51
 
48
52
  DECLARE_PROTECT_FINAL_CONSTRUCT()
49
53