transactd 3.1.0 → 3.2.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/bin/common/tdclc_32_3_2.dll +0 -0
  3. data/bin/common/{tdclc_64_3_1.dll → tdclc_64_3_2.dll} +0 -0
  4. data/build/swig/ruby/ruby.swg +3 -0
  5. data/build/swig/ruby/tdclrb_wrap.cpp +2413 -126
  6. data/build/swig/tdcl.i +120 -9
  7. data/build/tdclc/tdclc.cbproj +4 -1
  8. data/build/tdclc/tdclc.rc +4 -4
  9. data/build/tdclcpp/tdclcpp.rc +4 -4
  10. data/build/tdclcpp/tdclcpp_bc.cbproj +8 -1
  11. data/build/tdclrb/tdclrb.rc +4 -4
  12. data/source/bzs/db/engine/mysql/database.cpp +138 -130
  13. data/source/bzs/db/engine/mysql/database.h +43 -48
  14. data/source/bzs/db/engine/mysql/dbManager.cpp +81 -96
  15. data/source/bzs/db/engine/mysql/dbManager.h +13 -22
  16. data/source/bzs/db/engine/mysql/mysqlInternal.h +157 -291
  17. data/source/bzs/db/engine/mysql/mysqlProtocol.cpp +425 -0
  18. data/source/bzs/db/engine/mysql/mysqlProtocol.h +72 -0
  19. data/source/bzs/db/engine/mysql/mysqlThd.cpp +8 -6
  20. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +7 -3
  21. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +1 -0
  22. data/source/bzs/db/protocol/tdap/client/client.h +22 -8
  23. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +225 -21
  24. data/source/bzs/db/protocol/tdap/client/connMgr.h +42 -16
  25. data/source/bzs/db/protocol/tdap/client/database.cpp +58 -15
  26. data/source/bzs/db/protocol/tdap/client/database.h +3 -3
  27. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +93 -85
  28. data/source/bzs/db/protocol/tdap/client/dbDef.h +1 -2
  29. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +9 -5
  30. data/source/bzs/db/protocol/tdap/client/filter.h +2 -2
  31. data/source/bzs/db/protocol/tdap/client/groupComp.h +2 -2
  32. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +1 -1
  33. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +71 -12
  34. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +7 -1
  35. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +35 -2
  36. data/source/bzs/db/protocol/tdap/client/nsTable.h +1 -0
  37. data/source/bzs/db/protocol/tdap/client/recordset.cpp +5 -1
  38. data/source/bzs/db/protocol/tdap/client/recordset.h +15 -0
  39. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +21 -16
  40. data/source/bzs/db/protocol/tdap/client/serializer.cpp +32 -11
  41. data/source/bzs/db/protocol/tdap/client/serializer.h +4 -1
  42. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +3 -2
  43. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +3 -0
  44. data/source/bzs/db/protocol/tdap/client/table.cpp +18 -14
  45. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +8 -3
  46. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +1 -0
  47. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +83 -43
  48. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +3 -1
  49. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +7 -7
  50. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +247 -137
  51. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +9 -9
  52. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +1 -4
  53. data/source/bzs/db/protocol/tdap/tdapSchema.h +3 -7
  54. data/source/bzs/db/protocol/tdap/tdapcapi.h +23 -3
  55. data/source/bzs/db/protocol/tdap/uri.h +40 -0
  56. data/source/bzs/db/transactd/appModule.cpp +14 -5
  57. data/source/bzs/db/transactd/appModule.h +10 -1
  58. data/source/bzs/db/transactd/connManager.cpp +93 -48
  59. data/source/bzs/db/transactd/connManager.h +10 -7
  60. data/source/bzs/db/transactd/connectionRecord.h +114 -19
  61. data/source/bzs/env/tstring.h +2 -0
  62. data/source/bzs/example/changeSchema.cpp +1 -1
  63. data/source/bzs/example/changeSchema_c.cpp +1 -1
  64. data/source/bzs/example/insertRecords.cpp +2 -1
  65. data/source/bzs/example/insertRecords_c.cpp +2 -1
  66. data/source/bzs/example/queryData.cpp +5 -2
  67. data/source/bzs/netsvc/server/IAppModule.h +6 -0
  68. data/source/bzs/test/tdclatl/test_v3.js +75 -0
  69. data/source/bzs/test/tdclphp/transactd_v3_Test.php +104 -7
  70. data/source/bzs/test/tdclrb/transactd_v3_spec.rb +84 -0
  71. data/source/bzs/test/trdclengn/testField.h +66 -6
  72. data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +10 -1
  73. data/source/bzs/test/trdclengn/test_trdclengn.cpp +85 -0
  74. data/source/bzs/test/trdclengn/testbase.h +1 -1
  75. data/source/global/tdclatl/BinlogPos.cpp +64 -0
  76. data/source/global/tdclatl/BinlogPos.h +84 -0
  77. data/source/global/tdclatl/ConnMgr.cpp +285 -0
  78. data/source/global/tdclatl/ConnMgr.h +83 -0
  79. data/source/global/tdclatl/ConnRecord.cpp +123 -0
  80. data/source/global/tdclatl/ConnRecord.h +69 -0
  81. data/source/global/tdclatl/ConnRecords.cpp +57 -0
  82. data/source/global/tdclatl/ConnRecords.h +55 -0
  83. data/source/global/tdclatl/Database.cpp +36 -0
  84. data/source/global/tdclatl/Database.h +4 -0
  85. data/source/global/tdclatl/Table.cpp +14 -1
  86. data/source/global/tdclatl/Table.h +1 -0
  87. data/source/global/tdclatl/resource.h +0 -0
  88. data/source/global/tdclatl/tdclatl.idl +148 -4
  89. metadata +14 -4
  90. data/bin/common/tdclc_32_3_1.dll +0 -0
@@ -0,0 +1,83 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2016 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+
22
+ #include "tdclatl_i.h"
23
+ #include <bzs/db/protocol/tdap/client/connMgr.h>
24
+
25
+ using namespace ATL;
26
+
27
+ class ATL_NO_VTABLE CConnMgr
28
+ : public CComObjectRootEx<CComSingleThreadModel>,
29
+ public CComCoClass<CConnMgr, &CLSID_ConnMgr>,
30
+ public ISupportErrorInfo,
31
+ public IDispatchImpl<IConnMgr, &IID_IConnMgr, &LIBID_transactd,
32
+ /*wMajor =*/1, /*wMinor =*/0>
33
+ {
34
+ bzs::db::protocol::tdap::client::connMgr* m_mgr;
35
+
36
+ public:
37
+ CConnMgr() : m_mgr(NULL) {}
38
+
39
+ DECLARE_REGISTRY_RESOURCEID(IDR_CONNMGR)
40
+
41
+ BEGIN_COM_MAP(CConnMgr)
42
+ COM_INTERFACE_ENTRY(IConnMgr)
43
+ COM_INTERFACE_ENTRY(IDispatch)
44
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
45
+ END_COM_MAP()
46
+
47
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
48
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
49
+ HRESULT FinalConstruct() { return S_OK; }
50
+ void FinalRelease() { if (m_mgr)m_mgr->release(); }
51
+
52
+ public:
53
+ STDMETHOD(SetDatabase)(VARIANT db);
54
+
55
+ STDMETHOD(Connect)(BSTR uri, VARIANT_BOOL* retVal);
56
+ STDMETHOD(Disconnect)();
57
+ STDMETHOD(Databases)(IConnRecords** retVal);
58
+ STDMETHOD(Tables)(BSTR dbname, IConnRecords** retVal);
59
+ STDMETHOD(Views)(BSTR dbname, IConnRecords** retVal);
60
+ STDMETHOD(SchemaTables)(BSTR dbname, IConnRecords** retVal);
61
+ STDMETHOD(Sysvars)(IConnRecords** retVal);
62
+ STDMETHOD(SlaveStatus)(IConnRecords** retVal);
63
+ STDMETHOD(Connections)(IConnRecords** retVal);
64
+ #ifdef _WIN64
65
+ STDMETHOD(InUseDatabases)(__int64 connid, IConnRecords** retVal);
66
+ STDMETHOD(InUseTables)(__int64 connid, int db, IConnRecords** retVal);
67
+ STDMETHOD(PostDisconnectOne)(__int64 connid);
68
+ #else
69
+ STDMETHOD(InUseDatabases)(BSTR connid, IConnRecords** retVal);
70
+ STDMETHOD(InUseTables)(BSTR connid, int db, IConnRecords** retVal);
71
+ STDMETHOD(PostDisconnectOne)(BSTR connid);
72
+ #endif
73
+ STDMETHOD(PostDisconnectAll)();
74
+ STDMETHOD(get_Stat)(short* retVal);
75
+ STDMETHOD(TdapErr)(OLE_HANDLE hWnd, BSTR* retVal);
76
+
77
+ STDMETHOD(RemoveSystemDb)(IConnRecords** retVal);
78
+ STDMETHOD(SlaveStatusName)(int index, BSTR* retVal);
79
+ STDMETHOD(SysvarName)(int index, BSTR* retVal);
80
+
81
+ };
82
+
83
+ OBJECT_ENTRY_AUTO(__uuidof(ConnMgr), CConnMgr)
@@ -0,0 +1,123 @@
1
+ /*=================================================================
2
+ Copyright (C) 2016 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #include "stdafx.h"
20
+ #include "ConnRecord.h"
21
+ STDMETHODIMP CConnRecord::InterfaceSupportsErrorInfo(REFIID riid)
22
+ {
23
+ static const IID* const arr[] =
24
+ {
25
+ &IID_IConnRecord
26
+ };
27
+
28
+ for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
29
+ {
30
+ if (InlineIsEqualGUID(*arr[i],riid))
31
+ return S_OK;
32
+ }
33
+ return S_FALSE;
34
+ }
35
+
36
+
37
+ #ifdef _WIN64
38
+ STDMETHODIMP CConnRecord::get_ConId(__int64* retVal)
39
+ {
40
+ *retVal = m_rec.conId;
41
+ return S_OK;
42
+ }
43
+ #else
44
+ STDMETHODIMP CConnRecord::get_ConId(BSTR* retVal)
45
+ {
46
+ wchar_t tmp[256];
47
+ _i64tot_s(m_rec.conId, tmp, 256, 10);
48
+ CComBSTR ret = tmp;
49
+ *retVal = ret.Copy();
50
+
51
+ return S_OK;
52
+ }
53
+ #endif
54
+
55
+ STDMETHODIMP CConnRecord::get_Id(int* retVal)
56
+ {
57
+ *retVal = m_rec.id;
58
+ return S_OK;
59
+ }
60
+
61
+ STDMETHODIMP CConnRecord::get_Db(short* retVal)
62
+ {
63
+ *retVal = m_rec.db;
64
+ return S_OK;
65
+ }
66
+
67
+ STDMETHODIMP CConnRecord::get_Type(short* retVal)
68
+ {
69
+ *retVal = m_rec.type;
70
+ return S_OK;
71
+ }
72
+
73
+ STDMETHODIMP CConnRecord::get_Name(BSTR* retVal)
74
+ {
75
+ CComBSTR ret;
76
+ wchar_t tmp[256];
77
+ ret = m_rec.nameW(tmp, 256);
78
+ *retVal = ret.Copy();
79
+ return S_OK;
80
+ }
81
+
82
+ STDMETHODIMP CConnRecord::get_Value(BSTR* retVal)
83
+ {
84
+ CComBSTR ret;
85
+ wchar_t tmp[256];
86
+ if (m_rec.name[0] == 0x00 && m_rec.longValue)
87
+ _i64tot_s(m_rec.longValue, tmp, 256, 10);
88
+ else
89
+ m_rec.nameW(tmp, 256);
90
+ ret = tmp;
91
+ *retVal = ret.Copy();
92
+ return S_OK;
93
+ }
94
+
95
+ STDMETHODIMP CConnRecord::get_Status(short* retVal)
96
+ {
97
+ *retVal = m_rec.status;
98
+ return S_OK;
99
+ }
100
+
101
+ STDMETHODIMP CConnRecord::get_ReadCount(int* retVal)
102
+ {
103
+ *retVal = m_rec.readCount;
104
+ return S_OK;
105
+ }
106
+
107
+ STDMETHODIMP CConnRecord::get_UpdCount(int* retVal)
108
+ {
109
+ *retVal = m_rec.updCount;
110
+ return S_OK;
111
+ }
112
+
113
+ STDMETHODIMP CConnRecord::get_DelCount(int* retVal)
114
+ {
115
+ *retVal = m_rec.delCount;
116
+ return S_OK;
117
+ }
118
+
119
+ STDMETHODIMP CConnRecord::get_InsCount(int* retVal)
120
+ {
121
+ *retVal = m_rec.insCount;
122
+ return S_OK;
123
+ }
@@ -0,0 +1,69 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2016 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+
22
+ #include "tdclatl_i.h"
23
+ #include <bzs/db/transactd/connectionRecord.h>
24
+
25
+ using namespace ATL;
26
+
27
+ class ATL_NO_VTABLE CConnRecord
28
+ : public CComObjectRootEx<CComSingleThreadModel>,
29
+ public CComCoClass<CConnRecord, &CLSID_ConnRecord>,
30
+ public ISupportErrorInfo,
31
+ public IDispatchImpl<IConnRecord, &IID_IConnRecord, &LIBID_transactd,
32
+ /*wMajor =*/1, /*wMinor =*/0>
33
+ {
34
+
35
+ void setResult(IConnRecord** retVal);
36
+
37
+ public:
38
+ bzs::db::transactd::connection::record m_rec;
39
+ CConnRecord() {}
40
+
41
+ BEGIN_COM_MAP(CConnRecord)
42
+ COM_INTERFACE_ENTRY(IConnRecord)
43
+ COM_INTERFACE_ENTRY(IDispatch)
44
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
45
+ END_COM_MAP()
46
+
47
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
48
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
49
+ HRESULT FinalConstruct() { return S_OK; }
50
+ void FinalRelease() {}
51
+
52
+ public:
53
+ #ifdef _WIN64
54
+ STDMETHOD (get_ConId)(__int64* retVal);
55
+ #else
56
+ STDMETHOD (get_ConId)(BSTR* retVal);
57
+ #endif
58
+ STDMETHOD (get_Id)(int* retVal); //unsigned int value_id;
59
+ STDMETHOD (get_Db)(short* retVal);
60
+ STDMETHOD (get_Type)(short* retVal); //trnType
61
+ STDMETHOD (get_Name)(BSTR* retVal);
62
+ STDMETHOD (get_Value)(BSTR* retVal);
63
+ STDMETHOD (get_Status)(short* retVal);
64
+ STDMETHOD (get_ReadCount)(int* retVal);
65
+ STDMETHOD (get_UpdCount)(int* retVal);
66
+ STDMETHOD (get_DelCount)(int* retVal);
67
+ STDMETHOD (get_InsCount)(int* retVal);
68
+ };
69
+
@@ -0,0 +1,57 @@
1
+ /*=================================================================
2
+ Copyright (C) 2016 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #include "stdafx.h"
20
+ #include "ConnRecords.h"
21
+ #include "ConnRecord.h"
22
+ STDMETHODIMP CConnRecords::InterfaceSupportsErrorInfo(REFIID riid)
23
+ {
24
+ static const IID* const arr[] =
25
+ {
26
+ &IID_IConnRecords
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
+
37
+ STDMETHODIMP CConnRecords::get_Record(short index, IConnRecord** retVal)
38
+ {
39
+ if (index >= (short)m_recs.size())
40
+ return Error("Invalid index", IID_IConnRecords);
41
+ CComObject<CConnRecord>* obj;
42
+ CComObject<CConnRecord>::CreateInstance(&obj);
43
+ if (!obj)
44
+ return Error("CreateInstance ConnRecord", IID_IConnRecords);
45
+ obj->m_rec = m_recs[index];
46
+ IConnRecord* rec;
47
+ obj->QueryInterface(IID_IConnRecord, (void**)&rec);
48
+ _ASSERTE(rec);
49
+ *retVal = rec;
50
+ return S_OK;
51
+ }
52
+
53
+ STDMETHODIMP CConnRecords::get_Size(int* retVal)
54
+ {
55
+ *retVal = (int)m_recs.size();
56
+ return S_OK;
57
+ }
@@ -0,0 +1,55 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2016 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+
22
+ #include "tdclatl_i.h"
23
+ #include <bzs/db/transactd/connectionRecord.h>
24
+
25
+ using namespace ATL;
26
+
27
+ class ATL_NO_VTABLE CConnRecords
28
+ : public CComObjectRootEx<CComSingleThreadModel>,
29
+ public CComCoClass<CConnRecords, &CLSID_ConnRecords>,
30
+ public ISupportErrorInfo,
31
+ public IDispatchImpl<IConnRecords, &IID_IConnRecords, &LIBID_transactd,
32
+ /*wMajor =*/1, /*wMinor =*/0>
33
+ {
34
+ void setResult(IConnRecords** retVal);
35
+
36
+ public:
37
+ CConnRecords() {}
38
+ bzs::db::transactd::connection::records m_recs;
39
+
40
+ BEGIN_COM_MAP(CConnRecords)
41
+ COM_INTERFACE_ENTRY(IConnRecords)
42
+ COM_INTERFACE_ENTRY(IDispatch)
43
+ COM_INTERFACE_ENTRY(ISupportErrorInfo)
44
+ END_COM_MAP()
45
+
46
+ STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
47
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
48
+ HRESULT FinalConstruct() {return S_OK;}
49
+ void FinalRelease() {}
50
+
51
+ public:
52
+ STDMETHOD(get_Record)(short index, IConnRecord** retVal);
53
+ STDMETHOD(get_Size)(int* retVal);
54
+ };
55
+
@@ -589,6 +589,42 @@ STDMETHODIMP CDatabase::GetSqlStringForCreateTable(BSTR tableName, BSTR* retVal)
589
589
  return S_OK;
590
590
  }
591
591
 
592
+ STDMETHODIMP CDatabase::CreateAssociate(IDatabase** retVal)
593
+ {
594
+ CComObject<CDatabase>* ptb;
595
+ CComObject<CDatabase>::CreateInstance(&ptb);
596
+ HRESULT ret = ptb->AtatchDatabase((__int64*)m_db->createAssociate());
597
+ if (ret == S_OK)
598
+ {
599
+ IDatabase* dbPtr;
600
+ ptb->QueryInterface(IID_IDatabase, (void**)&dbPtr);
601
+ _ASSERTE(dbPtr);
602
+ *retVal = dbPtr;
603
+ return S_OK;
604
+ }
605
+ return ret;
606
+ }
607
+
608
+ STDMETHODIMP CDatabase::get_IsAssociate(VARIANT_BOOL* retVal)
609
+ {
610
+ *retVal = m_db->isAssociate();
611
+ return S_OK;
612
+ }
613
+
614
+ STDMETHODIMP CDatabase::GetCreateViewSql(BSTR name, BSTR* retVal)
615
+ {
616
+ uint_td size = 65000;
617
+ char* tmp = new char[size];
618
+ wchar_t* tmpw = new wchar_t[size];
619
+ m_db->getCreateViewSql(name, tmp, &size);
620
+ MultiByteToWideChar(CP_UTF8, 0, tmp, -1, tmpw, size);
621
+ CComBSTR ret = tmpw;
622
+ *retVal = ret.Copy();
623
+ delete [] tmp;
624
+ delete [] tmpw;
625
+ return S_OK;
626
+ }
627
+
592
628
  void __stdcall onCopyData(database* db, table* tb, int recordCount, int count,
593
629
  bool& cancel)
594
630
  {
@@ -161,6 +161,10 @@ public:
161
161
  STDMETHOD(put_CompatibleMode)(int Value);
162
162
  STDMETHOD(get_CompatibleMode)(int* Value);
163
163
  STDMETHOD(GetSqlStringForCreateTable)(BSTR tableName, BSTR* retValue);
164
+ STDMETHOD(CreateAssociate)(IDatabase** retVal);
165
+ STDMETHOD(get_IsAssociate)(VARIANT_BOOL* retVal);
166
+ STDMETHOD(GetCreateViewSql)(BSTR name, BSTR* retVal);
167
+
164
168
  };
165
169
 
166
170
  OBJECT_ENTRY_AUTO(__uuidof(Database), CDatabase)
@@ -850,7 +850,20 @@ STDMETHODIMP CTableTd::GetFVbits(VARIANT Index, IBitset** Value)
850
850
  *Value = bi;
851
851
  return S_OK;
852
852
  }
853
-
853
+
854
+ STDMETHODIMP CTableTd::GetCreateSql(BSTR* retVal)
855
+ {
856
+ uint_td size = 65000;
857
+ char* tmp = new char[size];
858
+ wchar_t* tmpw = new wchar_t[size];
859
+ m_tb->getCreateSql(tmp, &size);
860
+ MultiByteToWideChar(CP_UTF8, 0, tmp, -1, tmpw, size);
861
+ CComBSTR ret = tmpw;
862
+ *retVal = ret.Copy();
863
+ delete [] tmp;
864
+ delete [] tmpw;
865
+ return S_OK;
866
+ }
854
867
 
855
868
  void __stdcall onRecordCount(bzs::db::protocol::tdap::client::table* tb,
856
869
  int count, bool& cancel)
@@ -174,5 +174,6 @@ public:
174
174
  STDMETHOD(SetFV)(VARIANT Index, VARIANT Value);
175
175
  STDMETHOD(SetTimestampMode)(eTimeStampMode mode);
176
176
  STDMETHOD(GetFVbits)(VARIANT Index, IBitset** Value);
177
+ STDMETHOD(GetCreateSql)( BSTR* retVal);
177
178
 
178
179
  };
Binary file
@@ -48,7 +48,7 @@ interface IPreparedQuery;
48
48
  interface IBookmark;
49
49
  interface IBitset;
50
50
  interface IBinlogPos;
51
-
51
+ interface IConnMgr;
52
52
 
53
53
  typedef
54
54
  [
@@ -563,11 +563,16 @@ interface IDatabase : IDispatch
563
563
  HRESULT _stdcall CompatibleMode([out, retval] int* Value);
564
564
  [id(0x000000FC)]
565
565
  HRESULT _stdcall GetSqlStringForCreateTable([in] BSTR tableName, [out, retval] BSTR* retValue);
566
+ [id(0x000000FD)]
567
+ HRESULT _stdcall CreateAssociate([out, retval] IDatabase** retVal);
568
+ [propget, id(0x000000FF)]
569
+ HRESULT _stdcall IsAssociate([out, retval] VARIANT_BOOL* retVal);
570
+ [id(0x00000100)]
571
+ HRESULT _stdcall GetCreateViewSql([in]BSTR name, [out, retval] BSTR* retVal);
572
+
566
573
  };
567
574
 
568
575
 
569
-
570
-
571
576
  [
572
577
  object,
573
578
  uuid(907FD3F0-130F-4A44-BC79-AAECBDBE93AF),
@@ -829,7 +834,8 @@ interface ITable : IDispatch
829
834
  HRESULT _stdcall SetTimestampMode([in] eTimeStampMode mode);
830
835
  [id(0x000000EE)]
831
836
  HRESULT _stdcall GetFVbits([in] VARIANT Index, [out, retval] IBitset** Value);
832
-
837
+ [id(0x000000EF)]
838
+ HRESULT _stdcall GetCreateSql([out, retval] BSTR* retVal);
833
839
 
834
840
  };
835
841
  [
@@ -1774,6 +1780,118 @@ interface IBinlogPos : IDispatch{
1774
1780
  HRESULT _stdcall Gtid([out, retval] BSTR* retVal);
1775
1781
  };
1776
1782
 
1783
+ [
1784
+ object,
1785
+ uuid(E7A70DBE-00F0-41AD-AC80-7EBDF930E79B),
1786
+ dual,
1787
+ nonextensible,
1788
+ pointer_default(unique)
1789
+ ]
1790
+ interface IConnRecord : IDispatch{
1791
+ [propget, id(0x0000001)]
1792
+ #ifdef _WIN64
1793
+ HRESULT _stdcall ConId([out, retval] __int64* retVal);
1794
+ #else
1795
+ HRESULT _stdcall ConId([out, retval] BSTR* retVal);
1796
+ #endif
1797
+ [propget, id(0x0000002)]
1798
+ HRESULT _stdcall Id([out, retval] int* retVal); //unsigned int value_id;
1799
+ [propget, id(0x0000003)]
1800
+ HRESULT _stdcall Db([out, retval] short* retVal);
1801
+ [propget, id(0x0000004)]
1802
+ HRESULT _stdcall Type([out, retval] short* retVal); //trnType
1803
+ [propget, id(0x0000005)]
1804
+ HRESULT _stdcall Name([out, retval] BSTR* retVal);
1805
+ [propget, id(0x0000006)]
1806
+ HRESULT _stdcall Value([out, retval] BSTR* retVal);
1807
+ [propget, id(0x0000007)]
1808
+ HRESULT _stdcall Status([out, retval] short* retVal);
1809
+ [propget, id(0x0000008)]
1810
+ HRESULT _stdcall ReadCount([out, retval] int* retVal);
1811
+ [propget, id(0x0000009)]
1812
+ HRESULT _stdcall UpdCount([out, retval] int* retVal);
1813
+ [propget, id(0x000000A)]
1814
+ HRESULT _stdcall DelCount([out, retval] int* retVal);
1815
+ [propget, id(0x000000B)]
1816
+ HRESULT _stdcall InsCount([out, retval] int* retVal);
1817
+ }
1818
+
1819
+ [
1820
+ object,
1821
+ uuid(53076AFA-08D3-4877-A519-529BFD161F42),
1822
+ dual,
1823
+ nonextensible,
1824
+ pointer_default(unique)
1825
+ ]
1826
+ interface IConnRecords : IDispatch{
1827
+ [propget, id(0)]
1828
+ HRESULT _stdcall Record([in] short index, [out, retval] IConnRecord** retVal);
1829
+ [propget, id(1)]
1830
+ HRESULT _stdcall Size([out, retval] int* Value);
1831
+ }
1832
+
1833
+ [
1834
+ object,
1835
+ uuid(1A37F719-9B06-4A27-9BB8-073FAD6C2BDC),
1836
+ dual,
1837
+ nonextensible,
1838
+ pointer_default(unique)
1839
+ ]
1840
+ interface IConnMgr : IDispatch{
1841
+ [id(0x0000001)]
1842
+ HRESULT _stdcall SetDatabase([in] VARIANT db);
1843
+ [id(0x0000002)]
1844
+ HRESULT _stdcall Connect([in] BSTR uri, [out, retval] VARIANT_BOOL* retVal);
1845
+ [id(0x0000003)]
1846
+ HRESULT _stdcall Disconnect();
1847
+ [id(0x0000004)]
1848
+ HRESULT _stdcall Databases([out, retval] IConnRecords** retVal);
1849
+ [id(0x0000005)]
1850
+ HRESULT _stdcall Tables([in]BSTR dbname, [out, retval] IConnRecords** retVal);
1851
+ [id(0x0000006)]
1852
+ HRESULT _stdcall Views([in]BSTR dbname, [out, retval] IConnRecords** retVal);
1853
+ [id(0x0000007)]
1854
+ HRESULT _stdcall SchemaTables([in]BSTR dbname, [out, retval] IConnRecords** retVal);
1855
+ [id(0x0000008)]
1856
+ HRESULT _stdcall Sysvars([out, retval] IConnRecords** retVal);
1857
+ [id(0x0000011)]
1858
+ HRESULT _stdcall SlaveStatus([out, retval] IConnRecords** retVal);
1859
+ [id(0x0000009)]
1860
+ HRESULT _stdcall Connections([out, retval] IConnRecords** retVal);
1861
+ [id(0x000000A)]
1862
+ #ifdef _WIN64
1863
+ HRESULT _stdcall InUseDatabases([in]__int64 connid, [out, retval] IConnRecords** retVal);
1864
+ #else
1865
+ HRESULT _stdcall InUseDatabases([in]BSTR connid, [out, retval] IConnRecords** retVal);
1866
+ #endif
1867
+ [id(0x000000B)]
1868
+ #ifdef _WIN64
1869
+ HRESULT _stdcall InUseTables([in]__int64 connid, [in] int db, [out, retval] IConnRecords** retVal);
1870
+ #else
1871
+ HRESULT _stdcall InUseTables([in]BSTR connid, [in] int db, [out, retval] IConnRecords** retVal);
1872
+ #endif
1873
+ [id(0x000000C)]
1874
+ #ifdef _WIN64
1875
+ HRESULT _stdcall PostDisconnectOne([in] __int64 connid);
1876
+ #else
1877
+ HRESULT _stdcall PostDisconnectOne([in] BSTR connid);
1878
+ #endif
1879
+ [id(0x000000D)]
1880
+ HRESULT _stdcall PostDisconnectAll();
1881
+ [propget, id(0x000000E)]
1882
+ HRESULT _stdcall Stat([out, retval] short* retVal);
1883
+ [id(0x000000F)]
1884
+ HRESULT _stdcall TdapErr([in]OLE_HANDLE hWnd, [out, retval] BSTR* retVal);
1885
+
1886
+ [id(0x0000010)]
1887
+ HRESULT _stdcall RemoveSystemDb([in, out]IConnRecords** retVal);
1888
+ [id(0x0000012)]
1889
+ HRESULT _stdcall SlaveStatusName([in]int index, [out, retval] BSTR* retVal);
1890
+ [id(0x0000013)]
1891
+ HRESULT _stdcall SysvarName([in]int index, [out, retval] BSTR* retVal);
1892
+ };
1893
+
1894
+
1777
1895
  [
1778
1896
  uuid(3B712514-E2EF-4040-8A3C-BCACB839EB3E),
1779
1897
  version(1.0),
@@ -2043,6 +2161,32 @@ library transactd
2043
2161
  {
2044
2162
  [default] interface IBinlogPos;
2045
2163
  };
2164
+
2165
+ [
2166
+ uuid(A58AD1FB-E72C-472B-B465-93E098959046)
2167
+ ,noncreatable
2168
+ ]
2169
+ coclass ConnRecord
2170
+ {
2171
+ [default] interface IConnRecord;
2172
+ };
2173
+
2174
+ [
2175
+ uuid(5D1AFE02-2BAF-494A-9512-8591903CE778)
2176
+ ,noncreatable
2177
+ ]
2178
+ coclass ConnRecords
2179
+ {
2180
+ [default] interface IConnRecords;
2181
+ };
2182
+
2183
+ [
2184
+ uuid(7D8E310E-EA0A-4B54-A813-14BBB3E82EB5)
2185
+ ]
2186
+ coclass ConnMgr
2187
+ {
2188
+ [default] interface IConnMgr;
2189
+ };
2046
2190
 
2047
2191
  };
2048
2192