transactd 2.4.5 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -49,14 +49,28 @@ public:
|
|
49
49
|
void FinalRelease() {}
|
50
50
|
|
51
51
|
public:
|
52
|
-
STDMETHOD(get_Text)(BSTR* Value);
|
53
|
-
STDMETHOD(get_Vlng)(int* Value);
|
54
52
|
STDMETHOD(put_Text)(BSTR Value);
|
53
|
+
STDMETHOD(get_Text)(BSTR* Value);
|
55
54
|
STDMETHOD(put_Vlng)(int Value);
|
56
|
-
STDMETHOD(
|
55
|
+
STDMETHOD(get_Vlng)(int* Value);
|
57
56
|
STDMETHOD(put_V64)(__int64 Value);
|
58
|
-
STDMETHOD(
|
57
|
+
STDMETHOD(get_V64)(__int64* Value);
|
58
|
+
STDMETHOD(put_Vdbl)(double Value);
|
59
59
|
STDMETHOD(get_Vdbl)(double* Value);
|
60
60
|
STDMETHOD(put_Vbin)(BSTR Value);
|
61
|
-
STDMETHOD(
|
61
|
+
STDMETHOD(get_Vbin)(BSTR* Value);
|
62
|
+
|
63
|
+
STDMETHOD(IsNull)(VARIANT_BOOL* Value);
|
64
|
+
STDMETHOD(SetNull)(VARIANT_BOOL Value);
|
65
|
+
STDMETHOD(SetValue)(VARIANT Value);
|
66
|
+
STDMETHOD(SetBin)(BSTR Value);
|
67
|
+
STDMETHOD(I)(int* Value);
|
68
|
+
STDMETHOD(I64)(__int64* Value);
|
69
|
+
STDMETHOD(D)(double* Value);
|
70
|
+
STDMETHOD(Bin)(BSTR* Value);
|
71
|
+
STDMETHOD(Str)(BSTR* Value);
|
72
|
+
STDMETHOD(get_Type)(short* Value);
|
73
|
+
STDMETHOD(get_Len)(short* Value);
|
74
|
+
STDMETHOD(GetBits)(IBitset** Value);
|
75
|
+
|
62
76
|
};
|
@@ -19,6 +19,8 @@
|
|
19
19
|
#include "stdafx.h"
|
20
20
|
#include "FieldDef.h"
|
21
21
|
#include "Flags.h"
|
22
|
+
#include "Bitset.h"
|
23
|
+
|
22
24
|
STDMETHODIMP CFieldDef::InterfaceSupportsErrorInfo(REFIID riid)
|
23
25
|
{
|
24
26
|
static const IID* const arr[] =
|
@@ -122,20 +124,6 @@ STDMETHODIMP CFieldDef::put_Min(double Value)
|
|
122
124
|
return S_OK;
|
123
125
|
}
|
124
126
|
|
125
|
-
STDMETHODIMP CFieldDef::get_DefValue(double* Value)
|
126
|
-
{
|
127
|
-
*Value = const_fielddef()->defValue;
|
128
|
-
return S_OK;
|
129
|
-
}
|
130
|
-
|
131
|
-
STDMETHODIMP CFieldDef::put_DefValue(double Value)
|
132
|
-
{
|
133
|
-
if (!isWritabale())
|
134
|
-
return write_error();
|
135
|
-
fielddef()->defValue = Value;
|
136
|
-
return S_OK;
|
137
|
-
}
|
138
|
-
|
139
127
|
STDMETHODIMP CFieldDef::get_LookTable(unsigned char* Value)
|
140
128
|
{
|
141
129
|
*Value = const_fielddef()->lookTable;
|
@@ -299,12 +287,145 @@ STDMETHODIMP CFieldDef::SetPadCharSettings(VARIANT_BOOL set, VARIANT_BOOL trim)
|
|
299
287
|
|
300
288
|
STDMETHODIMP CFieldDef::get_UsePadChar(VARIANT_BOOL* Value)
|
301
289
|
{
|
302
|
-
*Value = fielddef()->
|
290
|
+
*Value = fielddef()->isUsePadChar();
|
303
291
|
return S_OK;
|
304
292
|
}
|
305
293
|
|
306
294
|
STDMETHODIMP CFieldDef::get_TrimPadChar(VARIANT_BOOL* Value)
|
307
295
|
{
|
308
|
-
*Value = fielddef()->
|
296
|
+
*Value = fielddef()->isTrimPadChar();
|
309
297
|
return S_OK;
|
310
298
|
}
|
299
|
+
|
300
|
+
STDMETHODIMP CFieldDef::put_DefaultValue(VARIANT Value)
|
301
|
+
{
|
302
|
+
if (Value.vt == VT_BSTR)
|
303
|
+
fielddef()->setDefaultValue(Value.bstrVal);
|
304
|
+
else if (Value.vt == VT_R4)
|
305
|
+
fielddef()->setDefaultValue(Value.fltVal);
|
306
|
+
else if (Value.vt == VT_R8)
|
307
|
+
fielddef()->setDefaultValue(Value.dblVal);
|
308
|
+
else if (Value.vt == VT_I2)
|
309
|
+
fielddef()->setDefaultValue((__int64)Value.iVal);
|
310
|
+
else if (Value.vt == VT_I4 || Value.vt == VT_INT)
|
311
|
+
fielddef()->setDefaultValue((__int64)Value.lVal);
|
312
|
+
else if (Value.vt == VT_I8)
|
313
|
+
fielddef()->setDefaultValue((__int64)Value.llVal);
|
314
|
+
else if ((Value.vt == VT_DISPATCH) && Value.pdispVal)
|
315
|
+
{
|
316
|
+
CBitset* b = dynamic_cast<CBitset*>(Value.pdispVal);
|
317
|
+
if (b)
|
318
|
+
fielddef()->setDefaultValue(b->m_bitset.internalValue());
|
319
|
+
else
|
320
|
+
return Error("FieldDef DefaultValue param", IID_IFieldDef);
|
321
|
+
}
|
322
|
+
else
|
323
|
+
{
|
324
|
+
VariantChangeType( &Value, &Value, 0, VT_BSTR );
|
325
|
+
if (Value.bstrVal[0])
|
326
|
+
fielddef()->setDefaultValue(Value.bstrVal);
|
327
|
+
}
|
328
|
+
return S_OK;
|
329
|
+
}
|
330
|
+
|
331
|
+
STDMETHODIMP CFieldDef::get_DefaultValue(VARIANT* Value)
|
332
|
+
{
|
333
|
+
CComBSTR ret;
|
334
|
+
ret = const_fielddef()->defaultValue_str();
|
335
|
+
|
336
|
+
VariantClear(Value);
|
337
|
+
Value->vt = VT_BSTR;
|
338
|
+
Value->bstrVal = ret.Copy();
|
339
|
+
|
340
|
+
return S_OK;
|
341
|
+
}
|
342
|
+
|
343
|
+
STDMETHODIMP CFieldDef::get_PadCharType(VARIANT_BOOL* Value)
|
344
|
+
{
|
345
|
+
*Value = const_fielddef()->isPadCharType();
|
346
|
+
return S_OK;
|
347
|
+
}
|
348
|
+
|
349
|
+
STDMETHODIMP CFieldDef::get_DateTimeType(VARIANT_BOOL* Value)
|
350
|
+
{
|
351
|
+
*Value = const_fielddef()->isDateTimeType();
|
352
|
+
return S_OK;
|
353
|
+
}
|
354
|
+
|
355
|
+
STDMETHODIMP CFieldDef::get_ValidCharNum(VARIANT_BOOL* Value)
|
356
|
+
{
|
357
|
+
*Value = const_fielddef()->isValidCharNum();
|
358
|
+
return S_OK;
|
359
|
+
}
|
360
|
+
|
361
|
+
STDMETHODIMP CFieldDef::get_Nullable(VARIANT_BOOL* Value)
|
362
|
+
{
|
363
|
+
*Value = const_fielddef()->isNullable();
|
364
|
+
return S_OK;
|
365
|
+
}
|
366
|
+
|
367
|
+
STDMETHODIMP CFieldDef::SetNullable(VARIANT_BOOL Value, VARIANT_BOOL DefaultNull)
|
368
|
+
{
|
369
|
+
fielddef()->setNullable(Value != 0, DefaultNull != 0);
|
370
|
+
return S_OK;
|
371
|
+
}
|
372
|
+
|
373
|
+
STDMETHODIMP CFieldDef::put_TimeStampOnUpdate(VARIANT_BOOL Value)
|
374
|
+
{
|
375
|
+
fielddef()->setTimeStampOnUpdate(Value != 0);
|
376
|
+
return S_OK;
|
377
|
+
}
|
378
|
+
|
379
|
+
STDMETHODIMP CFieldDef::get_TimeStampOnUpdate(VARIANT_BOOL* Value)
|
380
|
+
{
|
381
|
+
*Value = const_fielddef()->isTimeStampOnUpdate();
|
382
|
+
return S_OK;
|
383
|
+
}
|
384
|
+
|
385
|
+
STDMETHODIMP CFieldDef::get_DefaultNull(VARIANT_BOOL* Value)
|
386
|
+
{
|
387
|
+
*Value = const_fielddef()->isDefaultNull();
|
388
|
+
return S_OK;
|
389
|
+
}
|
390
|
+
|
391
|
+
STDMETHODIMP CFieldDef::put_Digits(short Value)
|
392
|
+
{
|
393
|
+
fielddef()->digits = Value;
|
394
|
+
return S_OK;
|
395
|
+
}
|
396
|
+
|
397
|
+
STDMETHODIMP CFieldDef::get_Digits(short* Value)
|
398
|
+
{
|
399
|
+
*Value = fielddef()->digits;
|
400
|
+
return S_OK;
|
401
|
+
}
|
402
|
+
|
403
|
+
STDMETHODIMP CFieldDef::get_IsIntegerType(VARIANT_BOOL* Value)
|
404
|
+
{
|
405
|
+
*Value = fielddef()->isIntegerType();
|
406
|
+
return S_OK;
|
407
|
+
}
|
408
|
+
|
409
|
+
STDMETHODIMP CFieldDef::get_IsNumericType(VARIANT_BOOL* Value)
|
410
|
+
{
|
411
|
+
*Value = fielddef()->isNumericType();
|
412
|
+
return S_OK;
|
413
|
+
}
|
414
|
+
|
415
|
+
STDMETHODIMP CFieldDef::get_IsDateTimeType(VARIANT_BOOL* Value)
|
416
|
+
{
|
417
|
+
*Value = fielddef()->isDateTimeType();
|
418
|
+
return S_OK;
|
419
|
+
}
|
420
|
+
|
421
|
+
STDMETHODIMP CFieldDef::SetDecimalDigits(int Digits, int Decimals)
|
422
|
+
{
|
423
|
+
fielddef()->setDecimalDigits(Digits, Decimals);
|
424
|
+
return S_OK;
|
425
|
+
}
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
|
@@ -77,14 +77,12 @@ public:
|
|
77
77
|
STDMETHOD(get_Decimals)(unsigned char* Value);
|
78
78
|
STDMETHOD(get_Max)(double* Value);
|
79
79
|
STDMETHOD(get_Min)(double* Value);
|
80
|
-
STDMETHOD(get_DefValue)(double* Value);
|
81
80
|
STDMETHOD(get_LookTable)(unsigned char* Value);
|
82
81
|
STDMETHOD(get_LookField)(unsigned char* Value);
|
83
82
|
STDMETHOD(get_LookViewField)(short Index, unsigned char* Value);
|
84
83
|
STDMETHOD(get_EnableFlags)(IFlags** Value);
|
85
84
|
|
86
85
|
STDMETHOD(put_Decimals)(unsigned char Value);
|
87
|
-
STDMETHOD(put_DefValue)(double Value);
|
88
86
|
STDMETHOD(put_EnableFlags)(IFlags* Value);
|
89
87
|
STDMETHOD(put_Len)(short Value);
|
90
88
|
STDMETHOD(put_LookField)(unsigned char Value);
|
@@ -110,5 +108,23 @@ public:
|
|
110
108
|
STDMETHOD(SetPadCharSettings)(VARIANT_BOOL set, VARIANT_BOOL trim);
|
111
109
|
STDMETHOD(get_UsePadChar)(VARIANT_BOOL* Value);
|
112
110
|
STDMETHOD(get_TrimPadChar)(VARIANT_BOOL* Value);
|
111
|
+
|
112
|
+
STDMETHOD(put_DefaultValue)(VARIANT Value);
|
113
|
+
STDMETHOD(get_DefaultValue)(VARIANT* Value);
|
114
|
+
|
115
|
+
STDMETHOD(get_PadCharType)(VARIANT_BOOL* Value);
|
116
|
+
STDMETHOD(get_DateTimeType)(VARIANT_BOOL* Value);
|
117
|
+
STDMETHOD(get_ValidCharNum)(VARIANT_BOOL* Value);
|
118
|
+
STDMETHOD(get_Nullable)(VARIANT_BOOL* Value);
|
119
|
+
STDMETHOD(SetNullable)(VARIANT_BOOL Value, VARIANT_BOOL DefaultNull);
|
120
|
+
STDMETHOD(put_TimeStampOnUpdate)(VARIANT_BOOL Value);
|
121
|
+
STDMETHOD(get_TimeStampOnUpdate)(VARIANT_BOOL* Value);
|
122
|
+
STDMETHOD(get_DefaultNull)(VARIANT_BOOL* Value);
|
123
|
+
STDMETHOD(put_Digits)(short Value);
|
124
|
+
STDMETHOD(get_Digits)(short* Value);
|
125
|
+
STDMETHOD(get_IsIntegerType)(VARIANT_BOOL* Value);
|
126
|
+
STDMETHOD(get_IsNumericType)(VARIANT_BOOL* Value);
|
127
|
+
STDMETHOD(get_IsDateTimeType)(VARIANT_BOOL* Value);
|
128
|
+
STDMETHOD(SetDecimalDigits)(int Digits, int Decimals);
|
113
129
|
|
114
130
|
};
|
@@ -19,6 +19,9 @@
|
|
19
19
|
#include "stdafx.h"
|
20
20
|
#include "FieldDefs.h"
|
21
21
|
#include "FieldDef.h"
|
22
|
+
#include "TableDef.h"
|
23
|
+
#include "Table.h"
|
24
|
+
|
22
25
|
STDMETHODIMP CFieldDefs::InterfaceSupportsErrorInfo(REFIID riid)
|
23
26
|
{
|
24
27
|
static const IID* const arr[] =
|
@@ -45,8 +48,10 @@ short CFieldDefs::GetFieldNum(VARIANT* Index)
|
|
45
48
|
short index = -1;
|
46
49
|
if (Index->vt == VT_BSTR)
|
47
50
|
index = m_fds->indexByName(Index->bstrVal);
|
48
|
-
else if (
|
51
|
+
else if (Index->vt == VT_I2)
|
49
52
|
index = Index->iVal;
|
53
|
+
else if (Index->vt == VT_I4)
|
54
|
+
index = (short)Index->lVal;
|
50
55
|
return index;
|
51
56
|
}
|
52
57
|
|
@@ -81,3 +86,51 @@ STDMETHODIMP CFieldDefs::get_Size(short* retVal)
|
|
81
86
|
*retVal = (short)m_fds->size();
|
82
87
|
return S_OK;
|
83
88
|
}
|
89
|
+
|
90
|
+
/*
|
91
|
+
STDMETHODIMP CFieldDefs::AddAllFileds(ITableDef* Def)
|
92
|
+
{
|
93
|
+
try
|
94
|
+
{
|
95
|
+
if (Def)
|
96
|
+
{
|
97
|
+
CTableDef* def = dynamic_cast<CTableDef*>(Def);
|
98
|
+
if (def)
|
99
|
+
{
|
100
|
+
const_cast<bzs::db::protocol::tdap::client::fielddefs*>(m_fds)
|
101
|
+
->addAllFileds(*(def->m_tabledefPtr));
|
102
|
+
return S_OK;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
return Error("Invalid param Def", IID_IFieldDefs);
|
106
|
+
|
107
|
+
}
|
108
|
+
catch (bzs::rtl::exception& e)
|
109
|
+
{
|
110
|
+
return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IFieldDefs);
|
111
|
+
}
|
112
|
+
}
|
113
|
+
|
114
|
+
STDMETHODIMP CFieldDefs::AddSelectedFields(ITable* Table)
|
115
|
+
{
|
116
|
+
try
|
117
|
+
{
|
118
|
+
if (Table)
|
119
|
+
{
|
120
|
+
CTableTd* tb = dynamic_cast<CTableTd*>(Table);
|
121
|
+
if (tb)
|
122
|
+
{
|
123
|
+
const_cast<bzs::db::protocol::tdap::client::fielddefs*>(m_fds)
|
124
|
+
->addSelectedFields(tb->m_tb.get());
|
125
|
+
return S_OK;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
return Error("Invalid param Def", IID_IFieldDefs);
|
129
|
+
|
130
|
+
}
|
131
|
+
catch (bzs::rtl::exception& e)
|
132
|
+
{
|
133
|
+
return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IFieldDefs);
|
134
|
+
}
|
135
|
+
|
136
|
+
}*/
|
@@ -57,4 +57,7 @@ public:
|
|
57
57
|
STDMETHOD(IndexByName)(BSTR Name, short* retVal);
|
58
58
|
STDMETHOD(get_FieldDef)(VARIANT Name, IFieldDef** retVal);
|
59
59
|
STDMETHOD(get_Size)(short* retVal);
|
60
|
+
//STDMETHOD(AddAllFileds)(ITableDef* Def);
|
61
|
+
//STDMETHOD(AddSelectedFields)(ITable* Table);
|
62
|
+
|
60
63
|
};
|
@@ -92,25 +92,25 @@ STDMETHODIMP CGroupQuery::AddFunction(eGroupFunc func, VARIANT targetNames,
|
|
92
92
|
if (targetNames.vt == VT_DISPATCH)
|
93
93
|
fn = dynamic_cast<CFieldNames*>(targetNames.pdispVal);
|
94
94
|
|
95
|
-
if ((func !=
|
95
|
+
if ((func != f_count) && !fn)
|
96
96
|
return Error("Invalid targetNames", IID_IGroupQuery);
|
97
97
|
if (fn)
|
98
98
|
fns = fn->m_fnsPtr;
|
99
99
|
boost::shared_ptr<groupFuncBase> f;
|
100
100
|
|
101
|
-
if (func ==
|
101
|
+
if (func == f_sum)
|
102
102
|
f.reset(sum::create(*fns, resultName), boost::bind(&sum::release, _1));
|
103
|
-
else if (func ==
|
103
|
+
else if (func == f_min)
|
104
104
|
f.reset(min::create(*fns, resultName), boost::bind(&min::release, _1));
|
105
|
-
else if (func ==
|
105
|
+
else if (func == f_max)
|
106
106
|
f.reset(max::create(*fns, resultName), boost::bind(&max::release, _1));
|
107
|
-
else if (func ==
|
107
|
+
else if (func == f_avg)
|
108
108
|
f.reset(avg::create(*fns, resultName), boost::bind(&avg::release, _1));
|
109
|
-
else if (func ==
|
109
|
+
else if (func == f_first)
|
110
110
|
f.reset(first::create(*fns, resultName), boost::bind(&first::release, _1));
|
111
|
-
else if (func ==
|
111
|
+
else if (func == f_last)
|
112
112
|
f.reset(last::create(*fns, resultName), boost::bind(&last::release, _1));
|
113
|
-
else if (func ==
|
113
|
+
else if (func == f_count)
|
114
114
|
{
|
115
115
|
if (resultName[0])
|
116
116
|
f.reset(count::create(resultName), boost::bind(&count::release, _1));
|
@@ -367,3 +367,68 @@ STDMETHODIMP CQueryBase::IsSeekByBookmarks(VARIANT_BOOL* retVal)
|
|
367
367
|
*retVal = m_qb.isSeekByBookmarks();
|
368
368
|
return S_OK;
|
369
369
|
}
|
370
|
+
|
371
|
+
|
372
|
+
STDMETHODIMP CQueryBase::WhereIsNull(BSTR Name, IQueryBase** retVal)
|
373
|
+
{
|
374
|
+
m_qb.addLogic(Name, _T("<==>"), _T(""));
|
375
|
+
setResult(retVal);
|
376
|
+
return S_OK;
|
377
|
+
}
|
378
|
+
|
379
|
+
STDMETHODIMP CQueryBase::AndIsNull(BSTR Name,IQueryBase** retVal)
|
380
|
+
{
|
381
|
+
m_qb.addLogic(_T("and"), Name, _T("<==>"), _T(""));
|
382
|
+
setResult(retVal);
|
383
|
+
return S_OK;
|
384
|
+
}
|
385
|
+
|
386
|
+
STDMETHODIMP CQueryBase::OrIsNull(BSTR Name, IQueryBase** retVal)
|
387
|
+
{
|
388
|
+
m_qb.addLogic(_T("or"), Name, _T("<==>"), _T(""));
|
389
|
+
setResult(retVal);
|
390
|
+
return S_OK;
|
391
|
+
}
|
392
|
+
|
393
|
+
STDMETHODIMP CQueryBase::WhereIsNotNull(BSTR Name, IQueryBase** retVal)
|
394
|
+
{
|
395
|
+
m_qb.addLogic(Name, _T("<!=>"), _T(""));
|
396
|
+
setResult(retVal);
|
397
|
+
return S_OK;
|
398
|
+
}
|
399
|
+
|
400
|
+
STDMETHODIMP CQueryBase::AndIsNotNull(BSTR Name,IQueryBase** retVal)
|
401
|
+
{
|
402
|
+
m_qb.addLogic(_T("and"), Name, _T("<!=>"), _T(""));
|
403
|
+
setResult(retVal);
|
404
|
+
return S_OK;
|
405
|
+
}
|
406
|
+
|
407
|
+
STDMETHODIMP CQueryBase::OrIsNotNull(BSTR Name, IQueryBase** retVal)
|
408
|
+
{
|
409
|
+
m_qb.addLogic(_T("or"), Name, _T("<!=>"), _T(""));
|
410
|
+
setResult(retVal);
|
411
|
+
return S_OK;
|
412
|
+
}
|
413
|
+
|
414
|
+
STDMETHODIMP CQueryBase::SegmentsForInValue(int Value, IQueryBase** retVal)
|
415
|
+
{
|
416
|
+
m_qb.joinKeySize(Value);
|
417
|
+
setResult(retVal);
|
418
|
+
return S_OK;
|
419
|
+
}
|
420
|
+
|
421
|
+
STDMETHODIMP CQueryBase::JoinKeySize(int Value, IQueryBase** retVal)
|
422
|
+
{
|
423
|
+
m_qb.joinKeySize(Value);
|
424
|
+
setResult(retVal);
|
425
|
+
return S_OK;
|
426
|
+
}
|
427
|
+
|
428
|
+
STDMETHODIMP CQueryBase::GetJoinKeySize(int* retVal)
|
429
|
+
{
|
430
|
+
*retVal = m_qb.getJoinKeySize();
|
431
|
+
return S_OK;
|
432
|
+
}
|
433
|
+
|
434
|
+
|
@@ -96,6 +96,16 @@ public:
|
|
96
96
|
STDMETHOD(IsSeekByBookmarks)(VARIANT_BOOL* retVal);
|
97
97
|
STDMETHOD(AddSeekKeyValue)(VARIANT Value, VARIANT_BOOL Reset);
|
98
98
|
STDMETHOD(AddSeekBookmark)(VARIANT Value, VARIANT_BOOL Reset);
|
99
|
+
STDMETHOD(WhereIsNull)(BSTR Name, IQueryBase** retVal);
|
100
|
+
STDMETHOD(AndIsNull)(BSTR Name,IQueryBase** retVal);
|
101
|
+
STDMETHOD(OrIsNull)(BSTR Name, IQueryBase** retVal);
|
102
|
+
STDMETHOD(WhereIsNotNull)(BSTR Name, IQueryBase** retVal);
|
103
|
+
STDMETHOD(AndIsNotNull)(BSTR Name,IQueryBase** retVal);
|
104
|
+
STDMETHOD(OrIsNotNull)(BSTR Name, IQueryBase** retVal);
|
105
|
+
STDMETHOD(SegmentsForInValue)(int Value, IQueryBase** retVal);
|
106
|
+
STDMETHOD(JoinKeySize)(int Value, IQueryBase** retVal);
|
107
|
+
STDMETHOD(GetJoinKeySize)(int* retVal);
|
108
|
+
|
99
109
|
|
100
110
|
};
|
101
111
|
|
@@ -24,6 +24,8 @@
|
|
24
24
|
|
25
25
|
void CRecord::FinalRelease()
|
26
26
|
{
|
27
|
+
if (m_fieldDefsObj != NULL)
|
28
|
+
m_fieldDefsObj->Release();
|
27
29
|
if (m_fieldObj != NULL)
|
28
30
|
m_fieldObj->Release();
|
29
31
|
}
|
@@ -32,8 +34,10 @@ short CRecord::GetFieldNum(VARIANT* Index)
|
|
32
34
|
short index = -1;
|
33
35
|
if (Index->vt == VT_BSTR)
|
34
36
|
index = m_rec->indexByName(Index->bstrVal);
|
35
|
-
else if (
|
37
|
+
else if (Index->vt == VT_I2)
|
36
38
|
index = Index->iVal;
|
39
|
+
else if (Index->vt == VT_I4)
|
40
|
+
index = (short)Index->lVal;
|
37
41
|
return index;
|
38
42
|
}
|
39
43
|
|
@@ -86,6 +90,31 @@ STDMETHODIMP CRecord::get_Field(VARIANT Index, IField** retVal)
|
|
86
90
|
}
|
87
91
|
}
|
88
92
|
|
93
|
+
STDMETHODIMP CRecord::get_FieldDefs(IFieldDefs** retVal)
|
94
|
+
{
|
95
|
+
if (m_fieldDefsObj == NULL)
|
96
|
+
{
|
97
|
+
CComObject<CFieldDefs>::CreateInstance(&m_fieldDefsObj);
|
98
|
+
if (!m_fieldDefsObj)
|
99
|
+
return Error("CreateInstance FieldDefs", IID_IWritableRecord);
|
100
|
+
m_fieldDefsObj->AddRef();
|
101
|
+
}
|
102
|
+
try
|
103
|
+
{
|
104
|
+
m_fieldDefsObj->m_fds = m_rec->fieldDefs();
|
105
|
+
IFieldDefs* fds;
|
106
|
+
m_fieldDefsObj->QueryInterface(IID_IFieldDefs, (void**)&fds);
|
107
|
+
_ASSERTE(fds);
|
108
|
+
*retVal = fds;
|
109
|
+
return S_OK;
|
110
|
+
}
|
111
|
+
catch (bzs::rtl::exception& e)
|
112
|
+
{
|
113
|
+
return Error((*bzs::rtl::getMsg(e)).c_str(), IID_IWritableRecord);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
|
89
118
|
STDMETHODIMP CRecord::get_IsInvalidRecord(VARIANT_BOOL* retVal)
|
90
119
|
{
|
91
120
|
*retVal = m_rec->isInvalidRecord();
|
@@ -122,8 +151,10 @@ short CWritableRecord::GetFieldNum(VARIANT* Index)
|
|
122
151
|
short index = -1;
|
123
152
|
if (Index->vt == VT_BSTR)
|
124
153
|
index = m_rec->indexByName(Index->bstrVal);
|
125
|
-
else if (
|
154
|
+
else if (Index->vt == VT_I2)
|
126
155
|
index = Index->iVal;
|
156
|
+
else if (Index->vt == VT_I4)
|
157
|
+
index = (short)Index->lVal;
|
127
158
|
return index;
|
128
159
|
}
|
129
160
|
|
@@ -34,11 +34,12 @@ class ATL_NO_VTABLE CRecord
|
|
34
34
|
{
|
35
35
|
|
36
36
|
CComObject<CField>* m_fieldObj;
|
37
|
+
CComObject<CFieldDefs>* m_fieldDefsObj;
|
37
38
|
short GetFieldNum(VARIANT* Index);
|
38
39
|
|
39
40
|
public:
|
40
41
|
bzs::db::protocol::tdap::client::fieldsBase* m_rec;
|
41
|
-
CRecord() : m_fieldObj(NULL) {}
|
42
|
+
CRecord() : m_fieldObj(NULL), m_fieldDefsObj(NULL) {}
|
42
43
|
|
43
44
|
BEGIN_COM_MAP(CRecord)
|
44
45
|
COM_INTERFACE_ENTRY(IRecord)
|
@@ -57,6 +58,7 @@ public:
|
|
57
58
|
public:
|
58
59
|
STDMETHOD(get_Size)(short* retVal);
|
59
60
|
STDMETHOD(get_Field)(VARIANT Index, IField** retVal);
|
61
|
+
STDMETHOD(get_FieldDefs)(IFieldDefs** retVal);
|
60
62
|
STDMETHOD(get_IsInvalidRecord)(VARIANT_BOOL* retVal);
|
61
63
|
};
|
62
64
|
|
@@ -75,6 +75,48 @@ STDMETHODIMP CRecordsetQuery::Or(BSTR Name, BSTR Logic, VARIANT Value,
|
|
75
75
|
return S_OK;
|
76
76
|
}
|
77
77
|
|
78
|
+
STDMETHODIMP CRecordsetQuery::WhenIsNull(BSTR Name, IRecordsetQuery** retVal)
|
79
|
+
{
|
80
|
+
m_qb.whenIsNull(Name);
|
81
|
+
setResult(retVal);
|
82
|
+
return S_OK;
|
83
|
+
}
|
84
|
+
|
85
|
+
STDMETHODIMP CRecordsetQuery::AndIsNull(BSTR Name, IRecordsetQuery** retVal)
|
86
|
+
{
|
87
|
+
m_qb.andIsNull(Name);
|
88
|
+
setResult(retVal);
|
89
|
+
return S_OK;
|
90
|
+
}
|
91
|
+
|
92
|
+
STDMETHODIMP CRecordsetQuery::OrIsNull(BSTR Name, IRecordsetQuery** retVal)
|
93
|
+
{
|
94
|
+
m_qb.orIsNull(Name);
|
95
|
+
setResult(retVal);
|
96
|
+
return S_OK;
|
97
|
+
}
|
98
|
+
|
99
|
+
STDMETHODIMP CRecordsetQuery::WhenIsNotNull(BSTR Name, IRecordsetQuery** retVal)
|
100
|
+
{
|
101
|
+
m_qb.whenIsNotNull(Name);
|
102
|
+
setResult(retVal);
|
103
|
+
return S_OK;
|
104
|
+
}
|
105
|
+
|
106
|
+
STDMETHODIMP CRecordsetQuery::AndIsNotNull(BSTR Name, IRecordsetQuery** retVal)
|
107
|
+
{
|
108
|
+
m_qb.andIsNotNull(Name);
|
109
|
+
setResult(retVal);
|
110
|
+
return S_OK;
|
111
|
+
}
|
112
|
+
|
113
|
+
STDMETHODIMP CRecordsetQuery::OrIsNotNull(BSTR Name, IRecordsetQuery** retVal)
|
114
|
+
{
|
115
|
+
m_qb.orIsNotNull(Name);
|
116
|
+
setResult(retVal);
|
117
|
+
return S_OK;
|
118
|
+
}
|
119
|
+
|
78
120
|
STDMETHODIMP CSortField::get_Name(BSTR* Value)
|
79
121
|
{
|
80
122
|
return S_OK;
|
@@ -64,6 +64,14 @@ public:
|
|
64
64
|
IRecordsetQuery** retVal);
|
65
65
|
STDMETHOD(Or)(BSTR Name, BSTR Logic, VARIANT Value,
|
66
66
|
IRecordsetQuery** retVal);
|
67
|
+
|
68
|
+
STDMETHOD(WhenIsNull)(BSTR Name, IRecordsetQuery** retVal);
|
69
|
+
STDMETHOD(AndIsNull)(BSTR Name,IRecordsetQuery** retVal);
|
70
|
+
STDMETHOD(OrIsNull)(BSTR Name, IRecordsetQuery** retVal);
|
71
|
+
STDMETHOD(WhenIsNotNull)(BSTR Name, IRecordsetQuery** retVal);
|
72
|
+
STDMETHOD(AndIsNotNull)(BSTR Name,IRecordsetQuery** retVal);
|
73
|
+
STDMETHOD(OrIsNotNull)(BSTR Name, IRecordsetQuery** retVal);
|
74
|
+
|
67
75
|
};
|
68
76
|
|
69
77
|
class ATL_NO_VTABLE CSortField
|