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
|
@@ -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
|