transactd 2.4.5 → 3.0.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.
- checksums.yaml +4 -4
- data/CMakeLists.txt +1 -1
- data/README-JA.md +52 -529
- data/README.md +52 -523
- data/bin/common/tdclc_32_3_0.dll +0 -0
- data/bin/common/tdclc_64_3_0.dll +0 -0
- data/build/common/system.cmake +2 -1
- data/build/common/transactd_cl_common.cmake +3 -6
- data/build/swig/ruby/ruby.swg +85 -28
- data/build/swig/ruby/tdclrb_wrap.cpp +3195 -1578
- data/build/swig/tdcl.i +161 -5
- data/build/tdclc/CMakeLists.txt +1 -0
- data/build/tdclc/tdclc.cbproj +7 -1
- data/build/tdclc/tdclc.rc +4 -4
- data/build/tdclcpp/tdclcpp.rc +4 -4
- data/build/tdclcpp/tdclcpp_bc.cbproj +2 -5
- data/build/tdclrb/tdclrb.rc +4 -4
- data/source/bzs/db/blobStructs.h +1 -1
- data/source/bzs/db/engine/mysql/database.cpp +199 -74
- data/source/bzs/db/engine/mysql/database.h +47 -18
- data/source/bzs/db/engine/mysql/dbManager.cpp +1 -0
- data/source/bzs/db/engine/mysql/mysqlInternal.h +32 -8
- data/source/bzs/db/protocol/tdap/btrDate.cpp +110 -75
- data/source/bzs/db/protocol/tdap/btrDate.h +46 -21
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +18 -18
- data/source/bzs/db/protocol/tdap/client/activeTable.h +25 -25
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +10 -4
- data/source/bzs/db/protocol/tdap/client/client.cpp +6 -5
- data/source/bzs/db/protocol/tdap/client/client.h +82 -15
- data/source/bzs/db/protocol/tdap/client/database.cpp +531 -142
- data/source/bzs/db/protocol/tdap/client/database.h +19 -6
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +461 -408
- data/source/bzs/db/protocol/tdap/client/dbDef.h +11 -17
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +61 -13
- data/source/bzs/db/protocol/tdap/client/field.cpp +1592 -1398
- data/source/bzs/db/protocol/tdap/client/field.h +110 -121
- data/source/bzs/db/protocol/tdap/client/fields.h +40 -10
- data/source/bzs/db/protocol/tdap/client/filter.h +69 -55
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +296 -164
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +77 -25
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +31 -13
- data/source/bzs/db/protocol/tdap/client/memRecord.h +31 -21
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +69 -24
- data/source/bzs/db/protocol/tdap/client/nsTable.h +3 -1
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +1 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +46 -27
- data/source/bzs/db/protocol/tdap/client/request.h +2 -1
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +44 -9
- data/source/bzs/db/protocol/tdap/client/serializer.h +1 -1
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +182 -76
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +23 -12
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +8 -10
- data/source/bzs/db/protocol/tdap/client/table.cpp +172 -93
- data/source/bzs/db/protocol/tdap/client/table.h +112 -37
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +17 -0
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +0 -1
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +0 -2
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +698 -14
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +723 -307
- data/source/bzs/db/protocol/tdap/myDateTime.h +294 -0
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +164 -54
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +6 -3
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +133 -550
- data/source/bzs/db/protocol/tdap/mysql/request.h +6 -5
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +217 -82
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +1 -1
- data/source/bzs/db/protocol/tdap/tdapRequest.h +4 -9
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +808 -17
- data/source/bzs/db/protocol/tdap/tdapSchema.h +656 -164
- data/source/bzs/db/protocol/tdap/tdapcapi.h +130 -28
- data/source/bzs/db/protocol/tdap/uri.h +40 -32
- data/source/bzs/db/transactd/connManager.cpp +1 -1
- data/source/bzs/db/transactd/transactd.cpp +7 -0
- data/source/bzs/env/compiler.h +107 -94
- data/source/bzs/env/crosscompile.cpp +24 -12
- data/source/bzs/env/crosscompile.h +75 -6
- data/source/bzs/env/mbcswchrLinux.cpp +2 -2
- data/source/bzs/env/tcharMinGW.h +4 -0
- data/source/bzs/example/changeSchema.cpp +22 -17
- data/source/bzs/example/queryData.cpp +4 -0
- data/source/bzs/netsvc/client/iconnection.h +3 -1
- data/source/bzs/netsvc/client/tcpClient.h +10 -3
- data/source/bzs/rtl/stringBuffers.cpp +7 -0
- data/source/bzs/test/tdclatl/bench_query_atl.js +6 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +8 -1
- data/source/bzs/test/tdclatl/test_query_atl.js +22 -2
- data/source/bzs/test/tdclatl/test_v3.js +1017 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +55 -21
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +0 -5
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +2 -0
- data/source/bzs/test/tdclphp/transactd_v3_Test.php +743 -0
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -5
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +2 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +39 -16
- data/source/bzs/test/tdclrb/transactd_v3_spec.rb +748 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +55 -58
- data/source/bzs/test/transactdBench/transactdBench2.cpp +1 -3
- data/source/bzs/test/trdclengn/testField.h +3305 -0
- data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +1050 -0
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +112 -190
- data/source/bzs/test/trdclengn/testbase.h +137 -0
- data/source/global/ormsrcgen/srcgen.cpp +23 -12
- data/source/global/ormsrcgen/template/ormDataClass_template.h +2 -0
- data/source/global/querystmts/querystmts.cpp +2 -3
- data/source/global/tdclatl/Bitset.cpp +38 -0
- data/source/global/tdclatl/Bitset.h +63 -0
- data/source/global/tdclatl/Database.cpp +59 -18
- data/source/global/tdclatl/Database.h +7 -4
- data/source/global/tdclatl/DbDef.cpp +6 -6
- data/source/global/tdclatl/DbDef.h +2 -1
- data/source/global/tdclatl/Field.cpp +112 -0
- data/source/global/tdclatl/Field.h +19 -5
- data/source/global/tdclatl/FieldDef.cpp +137 -16
- data/source/global/tdclatl/FieldDef.h +18 -2
- data/source/global/tdclatl/FieldDefs.cpp +54 -1
- data/source/global/tdclatl/FieldDefs.h +3 -0
- data/source/global/tdclatl/GroupQuery.cpp +8 -8
- data/source/global/tdclatl/QueryBase.cpp +65 -0
- data/source/global/tdclatl/QueryBase.h +10 -0
- data/source/global/tdclatl/Record.cpp +33 -2
- data/source/global/tdclatl/Record.h +3 -1
- data/source/global/tdclatl/RecordsetQuery.cpp +42 -0
- data/source/global/tdclatl/RecordsetQuery.h +8 -0
- data/source/global/tdclatl/Table.cpp +127 -3
- data/source/global/tdclatl/Table.h +10 -1
- data/source/global/tdclatl/TableDef.cpp +41 -8
- data/source/global/tdclatl/TableDef.h +7 -2
- data/source/global/tdclatl/activeTable.cpp +40 -71
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/tdclatl.idl +222 -28
- data/source/linux/tchar.h +100 -96
- data/transactd.gemspec +2 -2
- metadata +13 -11
- data/BUILD_UNIX-JA.md +0 -161
- data/BUILD_WIN-JA.md +0 -326
- data/README_ORMSRCGEN-JA.md +0 -115
- data/README_ORMSRCGEN.md +0 -118
- data/RELEASE_NOTE-JA.md +0 -356
- data/RELEASE_NOTE.md +0 -360
- data/bin/common/tdclc_32_2_4.dll +0 -0
- data/bin/common/tdclc_64_2_4.dll +0 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +0 -375
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
#include "PreparedQuery.h"
|
|
26
26
|
#include <bzs/db/protocol/tdap/client/fields.h>
|
|
27
27
|
#include "Bookmark.h"
|
|
28
|
+
#include "Bitset.h"
|
|
28
29
|
|
|
29
30
|
using namespace bzs::db::protocol::tdap;
|
|
30
31
|
|
|
@@ -48,8 +49,10 @@ short CTableTd::GetFieldNum(VARIANT* Index)
|
|
|
48
49
|
short index = -1;
|
|
49
50
|
if (Index->vt == VT_BSTR)
|
|
50
51
|
index = m_tb->fieldNumByName(Index->bstrVal);
|
|
51
|
-
else if (
|
|
52
|
+
else if (Index->vt == VT_I2)
|
|
52
53
|
index = Index->iVal;
|
|
54
|
+
else if (Index->vt == VT_I4)
|
|
55
|
+
index = (short)Index->lVal;
|
|
53
56
|
return index;
|
|
54
57
|
}
|
|
55
58
|
|
|
@@ -90,6 +93,100 @@ STDMETHODIMP CTableTd::put_Vlng(VARIANT Index, int Value)
|
|
|
90
93
|
return S_OK;
|
|
91
94
|
}
|
|
92
95
|
|
|
96
|
+
STDMETHODIMP CTableTd::SetFVNull(VARIANT Index, VARIANT_BOOL Value)
|
|
97
|
+
{
|
|
98
|
+
short index = GetFieldNum(&Index);
|
|
99
|
+
if (index < 0)
|
|
100
|
+
return Error("Invalid index", IID_ITable);
|
|
101
|
+
m_tb->setFVNull(index, Value != 0);
|
|
102
|
+
return S_OK;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
STDMETHODIMP CTableTd::GetFVNull(VARIANT Index, VARIANT_BOOL* Value)
|
|
106
|
+
{
|
|
107
|
+
short index = GetFieldNum(&Index);
|
|
108
|
+
if (index < 0)
|
|
109
|
+
return Error("Invalid index", IID_ITable);
|
|
110
|
+
*Value = m_tb->getFVNull(index);
|
|
111
|
+
return S_OK;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
STDMETHODIMP CTableTd::GetFVint(VARIANT Index, int* Value)
|
|
116
|
+
{
|
|
117
|
+
short index = GetFieldNum(&Index);
|
|
118
|
+
if (index < 0)
|
|
119
|
+
return Error("Invalid index", IID_ITable);
|
|
120
|
+
*Value = m_tb->getFVint(index);
|
|
121
|
+
return S_OK;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
STDMETHODIMP CTableTd::GetFV64(VARIANT Index, __int64* Value)
|
|
125
|
+
{
|
|
126
|
+
short index = GetFieldNum(&Index);
|
|
127
|
+
if (index < 0)
|
|
128
|
+
return Error("Invalid index", IID_ITable);
|
|
129
|
+
*Value = m_tb->getFV64(index);
|
|
130
|
+
return S_OK;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
STDMETHODIMP CTableTd::GetFVdbl(VARIANT Index, double* Value)
|
|
134
|
+
{
|
|
135
|
+
short index = GetFieldNum(&Index);
|
|
136
|
+
if (index < 0)
|
|
137
|
+
return Error("Invalid index", IID_ITable);
|
|
138
|
+
*Value = m_tb->getFVdbl(index);
|
|
139
|
+
return S_OK;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
STDMETHODIMP CTableTd::GetFVstr(VARIANT Index, BSTR* Value)
|
|
143
|
+
{
|
|
144
|
+
short index = GetFieldNum(&Index);
|
|
145
|
+
if (index < 0)
|
|
146
|
+
return Error("Invalid index", IID_ITable);
|
|
147
|
+
|
|
148
|
+
*Value = ::SysAllocString(m_tb->getFVstr(index));
|
|
149
|
+
return S_OK;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
STDMETHODIMP CTableTd::SetFV(VARIANT Index, VARIANT Value)
|
|
153
|
+
{
|
|
154
|
+
short index = GetFieldNum(&Index);
|
|
155
|
+
if (index < 0)
|
|
156
|
+
return Error("Invalid index", IID_ITable);
|
|
157
|
+
|
|
158
|
+
if (Value.vt == VT_BSTR)
|
|
159
|
+
m_tb->setFV(index, Value.bstrVal);
|
|
160
|
+
else if (Value.vt == VT_R4)
|
|
161
|
+
m_tb->setFV(index, Value.fltVal);
|
|
162
|
+
else if (Value.vt == VT_R8)
|
|
163
|
+
m_tb->setFV(index, Value.dblVal);
|
|
164
|
+
else if (Value.vt == VT_I2)
|
|
165
|
+
m_tb->setFV(index, Value.iVal);
|
|
166
|
+
else if (Value.vt == VT_I4 || Value.vt == VT_INT)
|
|
167
|
+
m_tb->setFV(index, Value.lVal);
|
|
168
|
+
else if (Value.vt == VT_I8)
|
|
169
|
+
m_tb->setFV(index, Value.llVal);
|
|
170
|
+
else if (Value.vt == VT_NULL)
|
|
171
|
+
m_tb->setFV(index, (wchar_t*)NULL);
|
|
172
|
+
else if ((Value.vt == VT_DISPATCH) && Value.pdispVal)
|
|
173
|
+
{
|
|
174
|
+
CBitset* b = dynamic_cast<CBitset*>(Value.pdispVal);
|
|
175
|
+
if (b)
|
|
176
|
+
m_tb->setFV(index, b->m_bitset.internalValue());
|
|
177
|
+
}
|
|
178
|
+
else
|
|
179
|
+
{
|
|
180
|
+
VariantChangeType( &Value, &Value, 0, VT_BSTR );
|
|
181
|
+
if (Value.bstrVal[0])
|
|
182
|
+
m_tb->setFV(index, Value.bstrVal);
|
|
183
|
+
else
|
|
184
|
+
m_tb->setFV(index, L"");
|
|
185
|
+
}
|
|
186
|
+
return S_OK;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
|
|
93
190
|
STDMETHODIMP CTableTd::get_V64(VARIANT Index, __int64* Value)
|
|
94
191
|
{
|
|
95
192
|
short index = GetFieldNum(&Index);
|
|
@@ -182,9 +279,11 @@ STDMETHODIMP CTableTd::Delete(VARIANT_BOOL inkey)
|
|
|
182
279
|
return S_OK;
|
|
183
280
|
}
|
|
184
281
|
|
|
185
|
-
STDMETHODIMP CTableTd::ClearBuffer()
|
|
282
|
+
STDMETHODIMP CTableTd::ClearBuffer(eNullReset resetType)
|
|
186
283
|
{
|
|
187
|
-
|
|
284
|
+
|
|
285
|
+
m_tb->clearBuffer((resetType == defaultNull) ?
|
|
286
|
+
client::table::defaultNull : client::table::clearNull);
|
|
188
287
|
return S_OK;
|
|
189
288
|
}
|
|
190
289
|
|
|
@@ -728,6 +827,31 @@ STDMETHODIMP CTableTd::get_Bookmarks(long index, IBookmark** retVal)
|
|
|
728
827
|
return S_OK;
|
|
729
828
|
}
|
|
730
829
|
|
|
830
|
+
STDMETHODIMP CTableTd::SetTimestampMode(eTimeStampMode mode)
|
|
831
|
+
{
|
|
832
|
+
m_tb->setTimestampMode((int)mode);
|
|
833
|
+
return S_OK;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
STDMETHODIMP CTableTd::GetFVbits(VARIANT Index, IBitset** Value)
|
|
837
|
+
{
|
|
838
|
+
short index = GetFieldNum(&Index);
|
|
839
|
+
if (index < 0)
|
|
840
|
+
return Error("Invalid index", IID_ITable);
|
|
841
|
+
|
|
842
|
+
CComObject<CBitset>* b;
|
|
843
|
+
CComObject<CBitset>::CreateInstance(&b);
|
|
844
|
+
if (!b)
|
|
845
|
+
return Error("CreateInstance Bitset", IID_ITable);
|
|
846
|
+
b->m_bitset = bzs::db::protocol::tdap::bitset(m_tb->getFV64(index));
|
|
847
|
+
CBitset* bi;
|
|
848
|
+
b->QueryInterface(IID_IBitset, (void**)&bi);
|
|
849
|
+
_ASSERTE(bi);
|
|
850
|
+
*Value = bi;
|
|
851
|
+
return S_OK;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
|
|
731
855
|
void __stdcall onRecordCount(bzs::db::protocol::tdap::client::table* tb,
|
|
732
856
|
int count, bool& cancel)
|
|
733
857
|
{
|
|
@@ -85,7 +85,7 @@ public:
|
|
|
85
85
|
STDMETHOD(get_TableDef)(ITableDef** Value);
|
|
86
86
|
STDMETHOD(Insert)(eUpdateType ncc);
|
|
87
87
|
STDMETHOD(Delete)(VARIANT_BOOL inkey);
|
|
88
|
-
STDMETHOD(ClearBuffer)();
|
|
88
|
+
STDMETHOD(ClearBuffer)(eNullReset resetType);
|
|
89
89
|
STDMETHOD(Close)();
|
|
90
90
|
STDMETHOD(SeekFirst)(eLockType lockBias);
|
|
91
91
|
STDMETHOD(SeekLast)(eLockType lockBias);
|
|
@@ -165,5 +165,14 @@ public:
|
|
|
165
165
|
STDMETHOD(get_LastFindDirection)(short* Value);
|
|
166
166
|
STDMETHOD(get_BookmarkLen)(unsigned short* Value);
|
|
167
167
|
STDMETHOD(get_Bookmarks)(long index, IBookmark** Value);
|
|
168
|
+
STDMETHOD(GetFVNull)(VARIANT Index, VARIANT_BOOL* Value);
|
|
169
|
+
STDMETHOD(SetFVNull)(VARIANT Index, VARIANT_BOOL Value);
|
|
170
|
+
STDMETHOD(GetFVint)(VARIANT Index, int* Value);
|
|
171
|
+
STDMETHOD(GetFV64)(VARIANT Index, __int64* Value);
|
|
172
|
+
STDMETHOD(GetFVdbl)(VARIANT Index, double* Value);
|
|
173
|
+
STDMETHOD(GetFVstr)(VARIANT Index, BSTR* Value);
|
|
174
|
+
STDMETHOD(SetFV)(VARIANT Index, VARIANT Value);
|
|
175
|
+
STDMETHOD(SetTimestampMode)(eTimeStampMode mode);
|
|
176
|
+
STDMETHOD(GetFVbits)(VARIANT Index, IBitset** Value);
|
|
168
177
|
|
|
169
178
|
};
|
|
@@ -276,15 +276,9 @@ STDMETHODIMP CTableDef::put_FixedRecordLen(unsigned short Value)
|
|
|
276
276
|
return S_OK;
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
-
STDMETHODIMP CTableDef::
|
|
279
|
+
STDMETHODIMP CTableDef::get_RecordLen(unsigned short* Value)
|
|
280
280
|
{
|
|
281
|
-
*Value = (*m_tabledefPtr)->
|
|
282
|
-
return S_OK;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
STDMETHODIMP CTableDef::put_MaxRecordLen(unsigned short Value)
|
|
286
|
-
{
|
|
287
|
-
(*m_tabledefPtr)->maxRecordLen = Value;
|
|
281
|
+
*Value = (*m_tabledefPtr)->recordlen();
|
|
288
282
|
return S_OK;
|
|
289
283
|
}
|
|
290
284
|
|
|
@@ -305,3 +299,42 @@ STDMETHODIMP CTableDef::get_Version(unsigned short* Value)
|
|
|
305
299
|
*Value = (*m_tabledefPtr)->version;
|
|
306
300
|
return S_OK;
|
|
307
301
|
}
|
|
302
|
+
|
|
303
|
+
STDMETHODIMP CTableDef::get_FieldNumByName(BSTR Name, short* Value)
|
|
304
|
+
{
|
|
305
|
+
*Value = (*m_tabledefPtr)->fieldNumByName(Name);
|
|
306
|
+
return S_OK;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
STDMETHODIMP CTableDef::get_Nullfields(short* Value)
|
|
310
|
+
{
|
|
311
|
+
*Value = (*m_tabledefPtr)->nullfields();
|
|
312
|
+
return S_OK;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
STDMETHODIMP CTableDef::get_InUse(short* Value)
|
|
316
|
+
{
|
|
317
|
+
*Value = (*m_tabledefPtr)->inUse();
|
|
318
|
+
return S_OK;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
STDMETHODIMP CTableDef::get_MysqlNullMode(VARIANT_BOOL* Value)
|
|
322
|
+
{
|
|
323
|
+
*Value = (*m_tabledefPtr)->isMysqlNullMode();
|
|
324
|
+
return S_OK;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
STDMETHODIMP CTableDef::get_Size(int* Value)
|
|
328
|
+
{
|
|
329
|
+
*Value = (*m_tabledefPtr)->size();
|
|
330
|
+
return S_OK;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
STDMETHODIMP CTableDef::SetValidationTarget(VARIANT_BOOL isMariadb, short srvMinorVersion)
|
|
334
|
+
{
|
|
335
|
+
(*m_tabledefPtr)->setValidationTarget(isMariadb, (uchar_td)srvMinorVersion);
|
|
336
|
+
return S_OK;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
@@ -80,9 +80,14 @@ public:
|
|
|
80
80
|
STDMETHOD(put_PrimaryKeyNum)(unsigned char Value);
|
|
81
81
|
STDMETHOD(get_FixedRecordLen)(unsigned short* Value);
|
|
82
82
|
STDMETHOD(put_FixedRecordLen)(unsigned short Value);
|
|
83
|
-
STDMETHOD(
|
|
84
|
-
STDMETHOD(put_MaxRecordLen)(unsigned short Value);
|
|
83
|
+
STDMETHOD(get_RecordLen)(unsigned short* Value);
|
|
85
84
|
STDMETHOD(get_SchemaCodePage)(unsigned int* Value);
|
|
86
85
|
STDMETHOD(put_SchemaCodePage)(unsigned int Value);
|
|
87
86
|
STDMETHOD(get_Version)(unsigned short* Value);
|
|
87
|
+
STDMETHOD(get_FieldNumByName)(BSTR Name, short* Value);
|
|
88
|
+
STDMETHOD(get_Nullfields)(short* Value);
|
|
89
|
+
STDMETHOD(get_InUse)(short* Value);
|
|
90
|
+
STDMETHOD(get_MysqlNullMode)(VARIANT_BOOL* Value);
|
|
91
|
+
STDMETHOD(get_Size)(int* Value);
|
|
92
|
+
STDMETHOD(SetValidationTarget)(VARIANT_BOOL isMariadb, short srvMinorVersion);
|
|
88
93
|
};
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include "PooledDbManager.h"
|
|
27
27
|
#include "PreparedQuery.h"
|
|
28
28
|
#include "Table.h"
|
|
29
|
+
#include "Bitset.h"
|
|
29
30
|
|
|
30
31
|
using namespace bzs::db::protocol::tdap::client;
|
|
31
32
|
using namespace bzs::db::protocol::tdap;
|
|
@@ -105,85 +106,53 @@ STDMETHODIMP CActiveTable::Index(short Value, IActiveTable** retVal)
|
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
108
|
|
|
109
|
+
wchar_t* convWCHAR(VARIANT& Value)
|
|
110
|
+
{
|
|
111
|
+
wchar_t* v = NULL;
|
|
112
|
+
|
|
113
|
+
if ((Value.vt == VT_DISPATCH) && Value.pdispVal)
|
|
114
|
+
{
|
|
115
|
+
CBitset* b = dynamic_cast<CBitset*>(Value.pdispVal);
|
|
116
|
+
if (b)
|
|
117
|
+
{
|
|
118
|
+
VariantInit(&Value);
|
|
119
|
+
Value.vt = VT_UI8;
|
|
120
|
+
Value.ullVal = b->m_bitset.internalValue();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (Value.vt == VT_NULL)
|
|
124
|
+
v = NULL;
|
|
125
|
+
else if (Value.vt != VT_BSTR)
|
|
126
|
+
{
|
|
127
|
+
VariantChangeType(&Value, &Value, 0, VT_BSTR);
|
|
128
|
+
v = Value.bstrVal;
|
|
129
|
+
}
|
|
130
|
+
else
|
|
131
|
+
v = Value.bstrVal;
|
|
132
|
+
|
|
133
|
+
return v;
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
|
|
108
137
|
STDMETHODIMP CActiveTable::KeyValue(VARIANT Value0, VARIANT Value1,
|
|
109
138
|
VARIANT Value2, VARIANT Value3,
|
|
110
139
|
VARIANT Value4, VARIANT Value5,
|
|
111
140
|
VARIANT Value6, VARIANT Value7,
|
|
112
141
|
IActiveTable** retVal)
|
|
113
142
|
{
|
|
114
|
-
|
|
115
143
|
try
|
|
116
144
|
{
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (Value2.vt != VT_BSTR)
|
|
130
|
-
VariantChangeType(&Value2, &Value2, 0, VT_BSTR);
|
|
131
|
-
if (!Value2.bstrVal || !Value2.bstrVal[0])
|
|
132
|
-
{
|
|
133
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal);
|
|
134
|
-
setResult(retVal);
|
|
135
|
-
return S_OK;
|
|
136
|
-
}
|
|
137
|
-
if (Value3.vt != VT_BSTR)
|
|
138
|
-
VariantChangeType(&Value3, &Value3, 0, VT_BSTR);
|
|
139
|
-
if (!Value3.bstrVal || !Value3.bstrVal[0])
|
|
140
|
-
{
|
|
141
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal);
|
|
142
|
-
setResult(retVal);
|
|
143
|
-
return S_OK;
|
|
144
|
-
}
|
|
145
|
-
if (Value4.vt != VT_BSTR)
|
|
146
|
-
VariantChangeType(&Value4, &Value4, 0, VT_BSTR);
|
|
147
|
-
if (!Value4.bstrVal || !Value4.bstrVal[0])
|
|
148
|
-
{
|
|
149
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
|
|
150
|
-
Value3.bstrVal);
|
|
151
|
-
setResult(retVal);
|
|
152
|
-
return S_OK;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (Value5.vt != VT_BSTR)
|
|
156
|
-
VariantChangeType(&Value5, &Value5, 0, VT_BSTR);
|
|
157
|
-
if (!Value5.bstrVal || !Value5.bstrVal[0])
|
|
158
|
-
{
|
|
159
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
|
|
160
|
-
Value3.bstrVal, Value4.bstrVal);
|
|
161
|
-
setResult(retVal);
|
|
162
|
-
return S_OK;
|
|
163
|
-
}
|
|
164
|
-
if (Value6.vt != VT_BSTR)
|
|
165
|
-
VariantChangeType(&Value6, &Value6, 0, VT_BSTR);
|
|
166
|
-
if (!Value6.bstrVal || !Value6.bstrVal[0])
|
|
167
|
-
{
|
|
168
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
|
|
169
|
-
Value3.bstrVal, Value4.bstrVal, Value5.bstrVal);
|
|
170
|
-
setResult(retVal);
|
|
171
|
-
return S_OK;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (Value7.vt != VT_BSTR)
|
|
175
|
-
VariantChangeType(&Value7, &Value7, 0, VT_BSTR);
|
|
176
|
-
if (!Value7.bstrVal || !Value7.bstrVal[0])
|
|
177
|
-
{
|
|
178
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
|
|
179
|
-
Value3.bstrVal, Value4.bstrVal, Value5.bstrVal,
|
|
180
|
-
Value6.bstrVal);
|
|
181
|
-
setResult(retVal);
|
|
182
|
-
return S_OK;
|
|
183
|
-
}
|
|
184
|
-
m_at->keyValue(Value0.bstrVal, Value1.bstrVal, Value2.bstrVal,
|
|
185
|
-
Value3.bstrVal, Value4.bstrVal, Value5.bstrVal,
|
|
186
|
-
Value6.bstrVal, Value7.bstrVal);
|
|
145
|
+
wchar_t* v[8] = {NULL};
|
|
146
|
+
v[0] = convWCHAR(Value0);
|
|
147
|
+
v[1] = convWCHAR(Value1);
|
|
148
|
+
v[2] = convWCHAR(Value2);
|
|
149
|
+
v[3] = convWCHAR(Value3);
|
|
150
|
+
v[4] = convWCHAR(Value4);
|
|
151
|
+
v[5] = convWCHAR(Value5);
|
|
152
|
+
v[6] = convWCHAR(Value6);
|
|
153
|
+
v[7] = convWCHAR(Value7);
|
|
154
|
+
|
|
155
|
+
m_at->keyValue(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);
|
|
187
156
|
setResult(retVal);
|
|
188
157
|
return S_OK;
|
|
189
158
|
}
|
|
Binary file
|