transactd 3.1.0 → 3.2.0

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