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
|
@@ -0,0 +1,1017 @@
|
|
|
1
|
+
/*=================================================================
|
|
2
|
+
Copyright (C) 2015 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
|
+
var TYPE_DDF = 1;
|
|
20
|
+
var TYPE_BDF = 0;
|
|
21
|
+
var READ_ONLY = -2;
|
|
22
|
+
var OPEN_NORMAL = 0;
|
|
23
|
+
var AUTO_CREATE_TABLE = true;
|
|
24
|
+
var OWNER_NAME = "";
|
|
25
|
+
var DIR="";
|
|
26
|
+
|
|
27
|
+
var fn_id = 0;
|
|
28
|
+
var fn_user = 1;
|
|
29
|
+
var S_NOWAIT_LOCK = 200;
|
|
30
|
+
var M_NOWAIT_LOCK = 400;
|
|
31
|
+
var CCURR_T_BIAS = 1000;
|
|
32
|
+
var trans_bias = S_NOWAIT_LOCK + CCURR_T_BIAS;
|
|
33
|
+
|
|
34
|
+
// field type
|
|
35
|
+
var ft_string = 0;
|
|
36
|
+
var ft_integer = 1;
|
|
37
|
+
var ft_float = 2;
|
|
38
|
+
var ft_date = 3;
|
|
39
|
+
var ft_time = 4;
|
|
40
|
+
var ft_decimal = 5;
|
|
41
|
+
var ft_money = 6;
|
|
42
|
+
var ft_logical = 7;
|
|
43
|
+
var ft_numeric = 8;
|
|
44
|
+
var ft_bfloat = 9;
|
|
45
|
+
var ft_lstring = 10;
|
|
46
|
+
var ft_zstring = 11;
|
|
47
|
+
var ft_note = 12;
|
|
48
|
+
var ft_lvar = 13;
|
|
49
|
+
var ft_uinteger = 14;
|
|
50
|
+
var ft_autoinc = 15;
|
|
51
|
+
var ft_bit = 16;
|
|
52
|
+
var ft_numericsts = 17;
|
|
53
|
+
var ft_numericsa = 18;
|
|
54
|
+
var ft_currency = 19;
|
|
55
|
+
var ft_timestamp = 20;
|
|
56
|
+
var ft_blob = 21;
|
|
57
|
+
var ft_reserve22 = 22;
|
|
58
|
+
var ft_reserve23 = 23;
|
|
59
|
+
var ft_reserve24 = 24;
|
|
60
|
+
var ft_wstring = 25;
|
|
61
|
+
var ft_wzstring = 26;
|
|
62
|
+
var ft_guid = 27;
|
|
63
|
+
var ft_datatime = 30;
|
|
64
|
+
var ft_myvarchar = 40;
|
|
65
|
+
var ft_myvarbinary = 41;
|
|
66
|
+
var ft_wvarchar = 42;
|
|
67
|
+
var ft_wvarbinary = 43;
|
|
68
|
+
var ft_char = 44;
|
|
69
|
+
var ft_wchar = 45;
|
|
70
|
+
var ft_mydate = 46;
|
|
71
|
+
var ft_mytime = 47;
|
|
72
|
+
var ft_mydatetime = 48;
|
|
73
|
+
var ft_mytimestamp = 49;
|
|
74
|
+
var ft_mytext = 50;
|
|
75
|
+
var ft_myblob = 51;
|
|
76
|
+
var ft_autoIncUnsigned = 52;
|
|
77
|
+
var ft_myfixedbinary = 53;
|
|
78
|
+
var ft_enum = 54;
|
|
79
|
+
var ft_set = 55;
|
|
80
|
+
var ft_myyear = 59;
|
|
81
|
+
var ft_mygeometry = 60;
|
|
82
|
+
var ft_myjson = 61;
|
|
83
|
+
var ft_mydecimal = 62;
|
|
84
|
+
|
|
85
|
+
//file flag
|
|
86
|
+
var table_varlen = 0;
|
|
87
|
+
|
|
88
|
+
//key flag
|
|
89
|
+
var key_duplicate = 0;
|
|
90
|
+
var key_changeable = 1;
|
|
91
|
+
var key_allnullkey = 3;
|
|
92
|
+
var key_desc = 6;
|
|
93
|
+
var key_extend = 8;
|
|
94
|
+
var key_anynullkey = 9;
|
|
95
|
+
var key_incase = 10;
|
|
96
|
+
|
|
97
|
+
var changeCurrentNcc = 1;
|
|
98
|
+
|
|
99
|
+
var USE_NONE = 0;
|
|
100
|
+
var USE_TRAN = 1;
|
|
101
|
+
var USE_BULKINSERT = 2;
|
|
102
|
+
var USE_SNAPSHOT = 4;
|
|
103
|
+
|
|
104
|
+
var CHARSET_LATIN1 = 1;
|
|
105
|
+
var CHARSET_CP850 = 4;
|
|
106
|
+
var CHARSET_ASCII = 9;
|
|
107
|
+
var CHARSET_SJIS = 11;
|
|
108
|
+
var CHARSET_UTF8 = 22;
|
|
109
|
+
var CHARSET_USC2 = 23;
|
|
110
|
+
var CHARSET_UTF8B4 = 30;
|
|
111
|
+
var CHARSET_UTF16LE = 33;
|
|
112
|
+
var CHARSET_CP932 = 38;
|
|
113
|
+
var CHARSET_EUCJ = 40;
|
|
114
|
+
var MAX_CHAR_INFO = 41;
|
|
115
|
+
|
|
116
|
+
var CP_UTF8 = 65001;
|
|
117
|
+
|
|
118
|
+
// status
|
|
119
|
+
var STATUS_SUCCESS = 0;
|
|
120
|
+
var STATUS_PROGRAM_ERROR = 1;
|
|
121
|
+
var STATUS_IO_ERROR = 2;
|
|
122
|
+
var STATUS_FILE_NOT_OPENED = 3;
|
|
123
|
+
var STATUS_NOT_FOUND_TI = 4;
|
|
124
|
+
var STATUS_DUPPLICATE_KEYVALUE = 5;
|
|
125
|
+
var STATUS_INVALID_KEYNUM = 6;
|
|
126
|
+
var STATUS_NO_CURRENT = 8;
|
|
127
|
+
var STATUS_EOF = 9;
|
|
128
|
+
var STATUS_TABLE_NOTOPEN = 12;
|
|
129
|
+
var STATUS_REQUESTER_DEACTIVE = 20;
|
|
130
|
+
var STATUS_KEYBUFFERTOOSMALL = 21;
|
|
131
|
+
var STATUS_BUFFERTOOSMALL = 22;
|
|
132
|
+
var STATUS_CANT_CREATE = 25;
|
|
133
|
+
var STATUS_NOSUPPORT_OP = 41;
|
|
134
|
+
var STATUS_INVALID_BOOKMARK = 43;
|
|
135
|
+
var STATUS_ACCESS_DENIED = 46;
|
|
136
|
+
var STATUS_INVALID_OWNERNAME = 51;
|
|
137
|
+
var STATUS_TABLE_EXISTS_ERROR = 59;
|
|
138
|
+
var STATUS_LIMMIT_OF_REJECT = 60;
|
|
139
|
+
var STATUS_WARKSPACE_TOO_SMALL = 61;
|
|
140
|
+
var STATUS_REACHED_FILTER_COND = 64;
|
|
141
|
+
var STATUS_INVALID_FIELD_OFFSET = 65;
|
|
142
|
+
var STATUS_CHANGE_CONFLICT = 80;
|
|
143
|
+
var STATUS_INVALID_LOCKTYPE = 83;
|
|
144
|
+
var STATUS_LOCK_ERROR = 84;
|
|
145
|
+
var STATUS_FILE_LOCKED = 85;
|
|
146
|
+
var STATUS_CANNOT_LOCK_TABLE = 88;
|
|
147
|
+
var STATUS_INVALID_KEYNAME = STATUS_INVALID_KEYNUM;
|
|
148
|
+
var STATUS_INVALID_DATASIZE = STATUS_BUFFERTOOSMALL;
|
|
149
|
+
var STATUS_INVALID_FIELDNAME = STATUS_INVALID_FIELD_OFFSET;
|
|
150
|
+
var ERROR_TD_INVALID_CLINETHOST = 171;
|
|
151
|
+
var ERROR_NOSPECIFY_TABLE = 176;
|
|
152
|
+
var ERROR_LOAD_CLIBRARY = 200;
|
|
153
|
+
var NET_BAD_SRB_FORMAT = 3021;
|
|
154
|
+
var ERROR_TD_HOSTNAME_NOT_FOUND = 3103;
|
|
155
|
+
var ERROR_TD_CONNECTION_FAILURE = 3106;
|
|
156
|
+
var ERROR_TD_NOT_CONNECTED = 3110;
|
|
157
|
+
|
|
158
|
+
var COMP_TYPE_NUMERIC = 1;
|
|
159
|
+
var COMP_TYPE_OBJECT = 0;
|
|
160
|
+
var COMP_TYPE_DATETIME = 2;
|
|
161
|
+
|
|
162
|
+
var COMBINE_TYPE_END = 0;
|
|
163
|
+
var COMBINE_TYPE_AND = 1;
|
|
164
|
+
var COMBINE_TYPE_END = 2;
|
|
165
|
+
|
|
166
|
+
var COMP_LOG_EQ = 0;
|
|
167
|
+
var COMP_LOG_EQ_GR = 1;
|
|
168
|
+
var COMP_LOG_EQ_LE = 2;
|
|
169
|
+
var COMP_LOG_GR = 3;
|
|
170
|
+
var COMP_LOG_LE = 4;
|
|
171
|
+
var COMP_LOG_NOT = 5;
|
|
172
|
+
|
|
173
|
+
var DIRECTION_FORWORD = 0;
|
|
174
|
+
var DIRECTION_BACKFORWORD = 1;
|
|
175
|
+
|
|
176
|
+
var TIMESTAMP_VALUE_CONTROL = 0;
|
|
177
|
+
var TIMESTAMP_ALWAYS = 1;
|
|
178
|
+
|
|
179
|
+
var fsum = 0;
|
|
180
|
+
var fcount = 1;
|
|
181
|
+
var favg = 2;
|
|
182
|
+
var fmin = 3;
|
|
183
|
+
var fmax = 4;
|
|
184
|
+
|
|
185
|
+
var none = 0;
|
|
186
|
+
var hasOneJoin = 1;
|
|
187
|
+
var joinWhereFields = 2;
|
|
188
|
+
|
|
189
|
+
var CMP_MODE_MYSQL_NULL = 1;
|
|
190
|
+
var CMP_MODE_OLD_NULL = 0;
|
|
191
|
+
|
|
192
|
+
var clearNull = 0;
|
|
193
|
+
var defaultNull = 1;
|
|
194
|
+
|
|
195
|
+
var DFV_TIMESTAMP_DEFAULT = 1;
|
|
196
|
+
var MYSQL_TYPE_MYSQL = 77;//'M'
|
|
197
|
+
var MYSQL_TYPE_MARIA = 65;//'A'
|
|
198
|
+
|
|
199
|
+
/*--------------------------------------------------------------------------------*/
|
|
200
|
+
function bench()
|
|
201
|
+
{
|
|
202
|
+
var tick=0;
|
|
203
|
+
|
|
204
|
+
this.report = function(func, p1, p2, p3, p4, p5, p6, p7, p8)
|
|
205
|
+
{
|
|
206
|
+
var now = new Date();
|
|
207
|
+
ticks = now.getTime();
|
|
208
|
+
var ret = func(p1, p2, p3, p4, p5, p6, p7, p8);
|
|
209
|
+
now = new Date();
|
|
210
|
+
ticks = (now.getTime() - ticks)/1000;
|
|
211
|
+
return ret;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
this.time = function(){return tick;}
|
|
215
|
+
this.show = function(){WScript.Echo("\n(exec time " + ticks + " sec)\n");}
|
|
216
|
+
}
|
|
217
|
+
/*--------------------------------------------------------------------------------*/
|
|
218
|
+
function checkEqual(a, b, on)
|
|
219
|
+
{
|
|
220
|
+
if (a !== b)
|
|
221
|
+
{
|
|
222
|
+
if (typeof(on) === 'undefined') on = "";
|
|
223
|
+
try
|
|
224
|
+
{
|
|
225
|
+
WScript.Echo("error on " + on + " " + a.toString() + " != " + b.toString());
|
|
226
|
+
}
|
|
227
|
+
catch(e)
|
|
228
|
+
{
|
|
229
|
+
WScript.Echo("check object error on " + on);
|
|
230
|
+
}
|
|
231
|
+
resultCode = 1;
|
|
232
|
+
}else
|
|
233
|
+
WScript.StdOut.Write(".");
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/*--------------------------------------------------------------------------------*/
|
|
237
|
+
function checkNotEqual(a, b, on)
|
|
238
|
+
{
|
|
239
|
+
if (a === b)
|
|
240
|
+
{
|
|
241
|
+
if (typeof(on) === 'undefined') on = "";
|
|
242
|
+
|
|
243
|
+
try
|
|
244
|
+
{
|
|
245
|
+
WScript.Echo("error on " + on + " " + a.toString() + " == " + b.toString());
|
|
246
|
+
}
|
|
247
|
+
catch(e)
|
|
248
|
+
{
|
|
249
|
+
WScript.Echo("check object error on " + on);
|
|
250
|
+
}
|
|
251
|
+
resultCode = 1;
|
|
252
|
+
}else
|
|
253
|
+
WScript.StdOut.Write(".");
|
|
254
|
+
}
|
|
255
|
+
/*--------------------------------------------------------------------------------*/
|
|
256
|
+
function isX86()
|
|
257
|
+
{
|
|
258
|
+
var shell = new ActiveXObject('WScript.Shell');
|
|
259
|
+
return (shell.Environment('Process').Item('PROCESSOR_ARCHITECTURE') === 'x86');
|
|
260
|
+
}
|
|
261
|
+
/*--------------------------------------------------------------------------------*/
|
|
262
|
+
function createRecordsetQuery()
|
|
263
|
+
{
|
|
264
|
+
return new ActiveXObject('transactd.recordsetQuery');
|
|
265
|
+
}
|
|
266
|
+
/*--------------------------------------------------------------------------------*/
|
|
267
|
+
function createQuery()
|
|
268
|
+
{
|
|
269
|
+
return new ActiveXObject('transactd.query');
|
|
270
|
+
}
|
|
271
|
+
/*--------------------------------------------------------------------------------*/
|
|
272
|
+
function createDatabaseObject()
|
|
273
|
+
{
|
|
274
|
+
return new ActiveXObject("transactd.database");
|
|
275
|
+
}
|
|
276
|
+
/*--------------------------------------------------------------------------------*/
|
|
277
|
+
function createGroupQuery()
|
|
278
|
+
{
|
|
279
|
+
return new ActiveXObject("transactd.groupQuery");
|
|
280
|
+
}
|
|
281
|
+
/*--------------------------------------------------------------------------------*/
|
|
282
|
+
function createActiveTable(db, tableName)
|
|
283
|
+
{
|
|
284
|
+
var at = new ActiveXObject("transactd.activeTable");
|
|
285
|
+
at.SetDatabase(db, tableName);
|
|
286
|
+
return at;
|
|
287
|
+
}
|
|
288
|
+
/*--------------------------------------------------------------------------------*/
|
|
289
|
+
function createSortFields()
|
|
290
|
+
{
|
|
291
|
+
return new ActiveXObject("transactd.sortFields");
|
|
292
|
+
}
|
|
293
|
+
/*--------------------------------------------------------------------------------*/
|
|
294
|
+
function createFieldNames()
|
|
295
|
+
{
|
|
296
|
+
return new ActiveXObject("transactd.fieldNames");
|
|
297
|
+
}
|
|
298
|
+
/*--------------------------------------------------------------------------------*/
|
|
299
|
+
var sep = "-------------------------------------------------------------------------------";
|
|
300
|
+
var FMT_LEFT = 0;
|
|
301
|
+
var FMT_CENTER = 1;
|
|
302
|
+
var FMT_RIGHT = 2;
|
|
303
|
+
var MAGNIFICATION = 100;
|
|
304
|
+
var resultCode = 0;
|
|
305
|
+
var q;
|
|
306
|
+
|
|
307
|
+
WScript.quit(main());
|
|
308
|
+
/*--------------------------------------------------------------------------------*/
|
|
309
|
+
function initQuery()
|
|
310
|
+
{
|
|
311
|
+
q.Reset();
|
|
312
|
+
gq.Reset();
|
|
313
|
+
}
|
|
314
|
+
/*--------------------------------------------------------------------------------*/
|
|
315
|
+
function isMySQL5_5(db)
|
|
316
|
+
{
|
|
317
|
+
var ver = db.GetBtrVersion(1);
|
|
318
|
+
return (db.Stat == 0) && ((5 == ver.MajorVersion) && (5 == ver.MinorVersion));
|
|
319
|
+
}
|
|
320
|
+
/*--------------------------------------------------------------------------------*/
|
|
321
|
+
function isLegacyTimeFormat(db)
|
|
322
|
+
{
|
|
323
|
+
var ver = db.GetBtrVersion(1);
|
|
324
|
+
return (db.Stat == 0) && ((5 == ver.MajorVersion) && (5 == ver.MinorVersion)
|
|
325
|
+
&& ver.Type == MYSQL_TYPE_MYSQL);
|
|
326
|
+
}
|
|
327
|
+
/*--------------------------------------------------------------------------------*/
|
|
328
|
+
function createUserTable(db)
|
|
329
|
+
{
|
|
330
|
+
var dbdef = db.DbDef;
|
|
331
|
+
var tableid = 1;
|
|
332
|
+
|
|
333
|
+
var tableDef = dbdef.InsertTable(tableid);
|
|
334
|
+
tableDef.TableName = "user";
|
|
335
|
+
tableDef.FileName = "user";
|
|
336
|
+
tableDef.CharsetIndex = CHARSET_CP932;
|
|
337
|
+
tableDef.SchemaCodePage = CP_UTF8;
|
|
338
|
+
|
|
339
|
+
var fieldIndex = 0;
|
|
340
|
+
var fd = dbdef.InsertField(tableid, fieldIndex);
|
|
341
|
+
fd.Name = "id";
|
|
342
|
+
fd.Type = ft_autoinc;
|
|
343
|
+
fd.Len = 4;
|
|
344
|
+
|
|
345
|
+
++fieldIndex;
|
|
346
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
347
|
+
fd.Name = "���O";
|
|
348
|
+
fd.Type = ft_myvarchar;
|
|
349
|
+
fd.len = 2;
|
|
350
|
+
checkEqual(fd.ValidCharNum, false, "validCharNum 1");
|
|
351
|
+
fd.SetLenByCharnum(20);
|
|
352
|
+
checkEqual(fd.ValidCharNum, true, "validCharNum 2");
|
|
353
|
+
fd.DefaultValue = "John";
|
|
354
|
+
checkEqual(fd.PadCharType, false, "isPadCharType ");
|
|
355
|
+
checkEqual(fd.DateTimeType, false, "isDateTimeType");
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
++fieldIndex;
|
|
359
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
360
|
+
fd.Name = "group";
|
|
361
|
+
fd.Type = ft_integer;
|
|
362
|
+
fd.Len = 4;
|
|
363
|
+
fd.DefaultValue = 10;
|
|
364
|
+
|
|
365
|
+
++fieldIndex;
|
|
366
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
367
|
+
fd.Name = "tel";
|
|
368
|
+
fd.Type = ft_myvarchar;
|
|
369
|
+
fd.SetLenByCharnum(21);
|
|
370
|
+
fd.SetNullable(true);
|
|
371
|
+
|
|
372
|
+
++fieldIndex;
|
|
373
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
374
|
+
fd.Name = "update_datetime";
|
|
375
|
+
fd.Type = ft_mytimestamp;
|
|
376
|
+
fd.Len = 7;
|
|
377
|
+
fd.DefaultValue = DFV_TIMESTAMP_DEFAULT;
|
|
378
|
+
fd.TimeStampOnUpdate = true;
|
|
379
|
+
checkEqual(fd.TimeStampOnUpdate, true, "TimeStampOnUpdate 1-");
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
++fieldIndex;
|
|
383
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
384
|
+
fd.Name = "create_datetime";
|
|
385
|
+
if (isMySQL5_5(db))
|
|
386
|
+
{
|
|
387
|
+
fd.Type = ft_mydatetime;
|
|
388
|
+
fd.Len = 8;
|
|
389
|
+
}
|
|
390
|
+
else
|
|
391
|
+
{
|
|
392
|
+
fd.Type = ft_mytimestamp;
|
|
393
|
+
fd.Len = 4;
|
|
394
|
+
fd.DefaultValue = DFV_TIMESTAMP_DEFAULT;
|
|
395
|
+
}
|
|
396
|
+
fd.TimeStampOnUpdate = false;
|
|
397
|
+
checkEqual(fd.PadCharType, false, "isPadCharType ");
|
|
398
|
+
checkEqual(fd.DateTimeType, true, "isDateTimeType");
|
|
399
|
+
|
|
400
|
+
var keyNum = 0;
|
|
401
|
+
var key = dbdef.InsertKey(tableid, keyNum);
|
|
402
|
+
var seg1 = key.Segments(0);
|
|
403
|
+
seg1.FieldNum = 0;
|
|
404
|
+
seg1.Flags.Bits(key_extend) = true; //extended key type
|
|
405
|
+
seg1.Flags.Bits(key_changeable) = true;//chanageable
|
|
406
|
+
key.SegmentCount = 1;
|
|
407
|
+
tableDef.PrimaryKeyNum = keyNum;
|
|
408
|
+
|
|
409
|
+
++keyNum;
|
|
410
|
+
key = dbdef.InsertKey(tableid, keyNum);
|
|
411
|
+
seg1 = key.Segments(0);
|
|
412
|
+
seg1.FieldNum = 2;
|
|
413
|
+
seg1.Flags.Bits(key_duplicate) = true;
|
|
414
|
+
seg1.Flags.Bits(key_extend) = true;
|
|
415
|
+
seg1.Flags.Bits(key_changeable) = true;
|
|
416
|
+
key.SegmentCount = 1;
|
|
417
|
+
|
|
418
|
+
dbdef.UpDateTableDef(tableid);
|
|
419
|
+
if (dbdef.Stat!=0)
|
|
420
|
+
{
|
|
421
|
+
WScript.Echo("user UpDateTableDef erorr:No." + dbdef.Stat);
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
dbdef = null;
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
/*--------------------------------------------------------------------------------*/
|
|
428
|
+
function createUserExtTable(db)
|
|
429
|
+
{
|
|
430
|
+
var dbdef = db.DbDef;
|
|
431
|
+
var tableid = 3;
|
|
432
|
+
|
|
433
|
+
var tableDef = dbdef.InsertTable(tableid);
|
|
434
|
+
tableDef.TableName = "extention";
|
|
435
|
+
tableDef.FileName = "extention";
|
|
436
|
+
tableDef.CharsetIndex = CHARSET_CP932;
|
|
437
|
+
tableDef.SchemaCodePage = CP_UTF8;
|
|
438
|
+
|
|
439
|
+
var fieldIndex = 0;
|
|
440
|
+
var fd = dbdef.InsertField(tableid, fieldIndex);
|
|
441
|
+
fd.Name = "id";
|
|
442
|
+
fd.Type = ft_integer;
|
|
443
|
+
fd.Len = 4;
|
|
444
|
+
|
|
445
|
+
++fieldIndex;
|
|
446
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
447
|
+
fd.Name = "comment";
|
|
448
|
+
fd.Type = ft_myvarchar;
|
|
449
|
+
fd.SetLenByCharnum(60);
|
|
450
|
+
fd.SetNullable(true);
|
|
451
|
+
checkEqual(fd.DefaultNull, true, "DefaultNull 1");
|
|
452
|
+
|
|
453
|
+
++fieldIndex;
|
|
454
|
+
fd = dbdef.InsertField(tableid, fieldIndex);
|
|
455
|
+
fd.Name = "bits";
|
|
456
|
+
fd.Type = ft_integer;
|
|
457
|
+
fd.len = 8;
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
var keyNum = 0;
|
|
461
|
+
var key = dbdef.InsertKey(tableid, keyNum);
|
|
462
|
+
var seg1 = key.Segments(0);
|
|
463
|
+
seg1.FieldNum = 0;
|
|
464
|
+
seg1.Flags.Bits(key_extend) = true; //extended key type
|
|
465
|
+
seg1.Flags.Bits(key_changeable) = true;//chanageable
|
|
466
|
+
key.SegmentCount = 1;
|
|
467
|
+
tableDef.PrimaryKeyNum = keyNum;
|
|
468
|
+
dbdef.UpDateTableDef(tableid);
|
|
469
|
+
if (dbdef.Stat!=0)
|
|
470
|
+
{
|
|
471
|
+
WScript.Echo("extention UpDateTableDef erorr:No." + dbdef.Stat);
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
dbdef = null;
|
|
475
|
+
return true;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/*--------------------------------------------------------------------------------*/
|
|
479
|
+
function createDatabase(db, uri)
|
|
480
|
+
{
|
|
481
|
+
db.Create(uri);
|
|
482
|
+
if (db.Stat!=0)
|
|
483
|
+
{
|
|
484
|
+
WScript.Echo("createDatabase erorr:No." + db.Stat + " " + uri);
|
|
485
|
+
return false;
|
|
486
|
+
}
|
|
487
|
+
if (db.Open(uri, TYPE_BDF, OPEN_NORMAL, "", ""))
|
|
488
|
+
{
|
|
489
|
+
if (!createUserTable(db))return false;
|
|
490
|
+
if (!createUserExtTable(db))return false;
|
|
491
|
+
return true;
|
|
492
|
+
}else
|
|
493
|
+
WScript.Echo("open daatabse erorr:No" + db.stat);
|
|
494
|
+
return false;
|
|
495
|
+
}
|
|
496
|
+
/*--------------------------------------------------------------------------------*/
|
|
497
|
+
function insertData(db)
|
|
498
|
+
{
|
|
499
|
+
var tb = db.OpenTable("user", OPEN_NORMAL);
|
|
500
|
+
checkEqual(db.Stat, 0, "OpenTable user");
|
|
501
|
+
var tb3 = db.OpenTable("extention", OPEN_NORMAL);
|
|
502
|
+
checkEqual(db.Stat, 0, "OpenTable extention");
|
|
503
|
+
|
|
504
|
+
try
|
|
505
|
+
{
|
|
506
|
+
db.BeginTrn();
|
|
507
|
+
tb.ClearBuffer();
|
|
508
|
+
for (var i= 1;i<= 1000;++i)
|
|
509
|
+
{
|
|
510
|
+
tb.SetFV(0, i);
|
|
511
|
+
tb.SetFV(1, i.toString() + " user");
|
|
512
|
+
tb.SetFV("group", ((i-1) % 5)+1);
|
|
513
|
+
tb.Insert();
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
tb3.ClearBuffer();
|
|
517
|
+
for (var i= 1;i<= 1000;++i)
|
|
518
|
+
{
|
|
519
|
+
tb3.SetFV(0, i);
|
|
520
|
+
tb3.SetFV(1, i.toString() + " comment");
|
|
521
|
+
tb3.Insert();
|
|
522
|
+
}
|
|
523
|
+
db.EndTrn();
|
|
524
|
+
}
|
|
525
|
+
catch(e)
|
|
526
|
+
{
|
|
527
|
+
db.AbortTrn();
|
|
528
|
+
throw e;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
/*--------------------------------------------------------------------------------*/
|
|
532
|
+
function todayStr()
|
|
533
|
+
{
|
|
534
|
+
var d = new Date();
|
|
535
|
+
var m = d.getMonth()+1;
|
|
536
|
+
var dt = d.getDate()
|
|
537
|
+
if (m < 10) m = "0" + m;
|
|
538
|
+
if (dt < 10) dt = "0" + dt;
|
|
539
|
+
return d.getFullYear() + "-" + m + "-" + dt;
|
|
540
|
+
}
|
|
541
|
+
/*--------------------------------------------------------------------------------*/
|
|
542
|
+
function test_bit(ate, db)
|
|
543
|
+
{
|
|
544
|
+
var tb = ate.table();
|
|
545
|
+
|
|
546
|
+
tb.KeyNum = 0;
|
|
547
|
+
tb.setFV('id', 1);
|
|
548
|
+
tb.seek();
|
|
549
|
+
checkEqual(tb.Stat, 0);
|
|
550
|
+
var bits = new ActiveXObject("transactd.Bitset");
|
|
551
|
+
/*
|
|
552
|
+
bits.bit(63, true);
|
|
553
|
+
bits.bit(2, true);
|
|
554
|
+
bits.bit(5, true);
|
|
555
|
+
*/
|
|
556
|
+
bits(63) = true;
|
|
557
|
+
bits(2) = true;
|
|
558
|
+
bits(5) = true;
|
|
559
|
+
|
|
560
|
+
tb.setFV('bits', bits);
|
|
561
|
+
tb.update();
|
|
562
|
+
checkEqual(tb.Stat, 0);
|
|
563
|
+
|
|
564
|
+
initQuery();
|
|
565
|
+
q.Where('id', '=', 1);
|
|
566
|
+
var rs = ate.index(0).keyValue(1).read(q);
|
|
567
|
+
checkEqual(rs.size , 1);
|
|
568
|
+
bits = rs(0)('bits').GetBits();
|
|
569
|
+
|
|
570
|
+
checkEqual(bits.bit(63), true);
|
|
571
|
+
checkEqual(bits.bit(2), true);
|
|
572
|
+
checkEqual(bits.bit(5), true);
|
|
573
|
+
checkEqual(bits.bit(62), false);
|
|
574
|
+
checkEqual(bits.bit(0), false);
|
|
575
|
+
checkEqual(bits.bit(12), false);
|
|
576
|
+
|
|
577
|
+
checkEqual(bits(63), true);
|
|
578
|
+
checkEqual(bits(2), true);
|
|
579
|
+
checkEqual(bits(5), true);
|
|
580
|
+
checkEqual(bits(62), false);
|
|
581
|
+
checkEqual(bits(0), false);
|
|
582
|
+
checkEqual(bits(12), false);
|
|
583
|
+
|
|
584
|
+
var wr = ate.getWritableRecord();
|
|
585
|
+
wr('id').SetValue(1);
|
|
586
|
+
/*
|
|
587
|
+
bits.bit(63) = false;
|
|
588
|
+
bits.bit(12) = true;
|
|
589
|
+
bits.bit(0) = true;
|
|
590
|
+
bits.bit(62) = true;
|
|
591
|
+
*/
|
|
592
|
+
bits(63) = false;
|
|
593
|
+
bits(12) = true;
|
|
594
|
+
bits(0) = true;
|
|
595
|
+
bits(62) = true;
|
|
596
|
+
|
|
597
|
+
wr('bits').SetValue(bits);
|
|
598
|
+
wr.update();
|
|
599
|
+
tb.setFV('id', 1);
|
|
600
|
+
tb.seek();
|
|
601
|
+
checkEqual(tb.Stat, 0);
|
|
602
|
+
bits = tb.getFVbits('bits');
|
|
603
|
+
|
|
604
|
+
checkEqual(bits.bit( 63), false);
|
|
605
|
+
checkEqual(bits.bit( 2), true);
|
|
606
|
+
checkEqual(bits.bit( 5), true);
|
|
607
|
+
checkEqual(bits.bit( 12), true);
|
|
608
|
+
checkEqual(bits.bit( 0), true);
|
|
609
|
+
checkEqual(bits.bit( 62), true);
|
|
610
|
+
checkEqual(bits.bit( 11), false);
|
|
611
|
+
checkEqual(bits.bit( 13), false);
|
|
612
|
+
|
|
613
|
+
checkEqual(bits(63), false);
|
|
614
|
+
checkEqual(bits(2), true);
|
|
615
|
+
checkEqual(bits(5), true);
|
|
616
|
+
checkEqual(bits(12), true);
|
|
617
|
+
checkEqual(bits(0), true);
|
|
618
|
+
checkEqual(bits(62), true);
|
|
619
|
+
checkEqual(bits(11), false);
|
|
620
|
+
checkEqual(bits(13), false);
|
|
621
|
+
|
|
622
|
+
}
|
|
623
|
+
/*--------------------------------------------------------------------------------*/
|
|
624
|
+
function test_bitset()
|
|
625
|
+
{
|
|
626
|
+
var bits1 = new ActiveXObject("transactd.Bitset");
|
|
627
|
+
var bits2 = new ActiveXObject("transactd.Bitset");
|
|
628
|
+
bits1(0) = true;
|
|
629
|
+
bits1(1) = true;
|
|
630
|
+
bits1(63) = true;
|
|
631
|
+
|
|
632
|
+
bits2(0) = true;
|
|
633
|
+
bits2(1) = false;
|
|
634
|
+
bits2(63) = true;
|
|
635
|
+
|
|
636
|
+
checkEqual(bits1.equals(bits2), false);
|
|
637
|
+
checkEqual(bits1.contains(bits2), true);
|
|
638
|
+
checkEqual(bits2.contains(bits1), false);
|
|
639
|
+
|
|
640
|
+
var all = false;
|
|
641
|
+
checkEqual(bits2.contains(bits1, all), true);
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/*--------------------------------------------------------------------------------*/
|
|
645
|
+
function test_decimal(fd)
|
|
646
|
+
{
|
|
647
|
+
fd.type = ft_mydecimal;
|
|
648
|
+
fd.setDecimalDigits(65, 30);
|
|
649
|
+
checkEqual(fd.digits, 65);
|
|
650
|
+
checkEqual(fd.decimals, 30);
|
|
651
|
+
checkEqual(fd.isIntegerType, false);
|
|
652
|
+
checkEqual(fd.isNumericType, true);
|
|
653
|
+
var bits1 = new ActiveXObject("transactd.Bitset");
|
|
654
|
+
bits1(2) = true;
|
|
655
|
+
fd.type = ft_integer;
|
|
656
|
+
fd.len = 4;
|
|
657
|
+
fd.DefaultValue = bits1;
|
|
658
|
+
checkEqual(fd.DefaultValue, '4');
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/*--------------------------------------------------------------------------------*/
|
|
662
|
+
function test(atu, ate, db)
|
|
663
|
+
{
|
|
664
|
+
//WScript.Echo(" -- Start Test -- ");
|
|
665
|
+
var x86 = isX86();
|
|
666
|
+
|
|
667
|
+
db.AutoSchemaUseNullkey = true;
|
|
668
|
+
checkEqual(db.AutoSchemaUseNullkey, true, "AutoSchemaUseNullkey");
|
|
669
|
+
db.AutoSchemaUseNullkey = false;
|
|
670
|
+
checkEqual(db.AutoSchemaUseNullkey, false, "AutoSchemaUseNullkey");
|
|
671
|
+
|
|
672
|
+
checkEqual(db.CompatibleMode, CMP_MODE_MYSQL_NULL, "CompatibleMode 1");
|
|
673
|
+
|
|
674
|
+
db.CompatibleMode = CMP_MODE_OLD_NULL;
|
|
675
|
+
checkEqual(db.CompatibleMode, CMP_MODE_OLD_NULL, "CompatibleMode 2");
|
|
676
|
+
|
|
677
|
+
db.CompatibleMode = CMP_MODE_MYSQL_NULL;
|
|
678
|
+
checkEqual(db.CompatibleMode, CMP_MODE_MYSQL_NULL, "CompatibleMode 3");
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
var dbdef = db.DbDef;
|
|
683
|
+
var td = dbdef.TableDef(1);
|
|
684
|
+
|
|
685
|
+
//MysqlNullMode
|
|
686
|
+
checkEqual(td.MysqlNullMode , true, "MysqlNullMode");
|
|
687
|
+
|
|
688
|
+
var len = 104;
|
|
689
|
+
if (isMySQL5_5(db))
|
|
690
|
+
len += 4;
|
|
691
|
+
if (isLegacyTimeFormat(db))
|
|
692
|
+
len -= 3;
|
|
693
|
+
checkEqual(td.RecordLen , len, "recordlen");
|
|
694
|
+
//InUse
|
|
695
|
+
checkEqual(td.InUse , 2, "InUse");
|
|
696
|
+
|
|
697
|
+
//nullfields
|
|
698
|
+
checkEqual(td.Nullfields , 1, "nullfields");
|
|
699
|
+
|
|
700
|
+
//size()
|
|
701
|
+
checkEqual(td.Size , 1184, "size");
|
|
702
|
+
|
|
703
|
+
//fieldNumByName
|
|
704
|
+
checkEqual(td.FieldNumByName("tel") , 3, "fieldNumByName");
|
|
705
|
+
|
|
706
|
+
//default value
|
|
707
|
+
var fd = td.FieldDef(1);
|
|
708
|
+
checkEqual(fd.DefaultValue, "John", "default value 1");
|
|
709
|
+
fd = td.FieldDef(2);
|
|
710
|
+
checkEqual(fd.DefaultValue, "10", "default value 2");
|
|
711
|
+
fd = td.FieldDef(3);
|
|
712
|
+
checkEqual(fd.DefaultNull, true, "DefaultNull");
|
|
713
|
+
fd = td.FieldDef(4);
|
|
714
|
+
checkEqual(fd.DefaultValue, String(DFV_TIMESTAMP_DEFAULT), "default value timestamp");
|
|
715
|
+
checkEqual(fd.TimeStampOnUpdate, true, "TimeStampOnUpdate 1");
|
|
716
|
+
fd = td.FieldDef(5);
|
|
717
|
+
checkEqual(fd.TimeStampOnUpdate, false, "TimeStampOnUpdate 2");
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
fd = td.FieldDef(1);
|
|
721
|
+
// synchronizeSeverSchema
|
|
722
|
+
var len = fd.Len;
|
|
723
|
+
|
|
724
|
+
fd.SetLenByCharnum(19);
|
|
725
|
+
checkNotEqual(len, fd.Len, "synchronizeSeverSchema 1");
|
|
726
|
+
dbdef.SynchronizeSeverSchema(1);
|
|
727
|
+
td = dbdef.TableDef(1);
|
|
728
|
+
fd = td.FieldDef(1);
|
|
729
|
+
checkEqual(len, fd.Len, "synchronizeSeverSchema 2");
|
|
730
|
+
|
|
731
|
+
// syncronize default value
|
|
732
|
+
fd = td.FieldDef(1);
|
|
733
|
+
checkEqual(fd.DefaultValue, "John", "default value 2-1");
|
|
734
|
+
fd = td.FieldDef(2);
|
|
735
|
+
checkEqual(fd.DefaultValue, "10", "default value 2-2");
|
|
736
|
+
fd = td.FieldDef(3);
|
|
737
|
+
checkEqual(fd.DefaultNull, true, "DefaultNull 2");
|
|
738
|
+
fd = td.FieldDef(4);
|
|
739
|
+
checkEqual(fd.TimeStampOnUpdate, true, "TimeStampOnUpdate 2-1");
|
|
740
|
+
fd = td.FieldDef(5);
|
|
741
|
+
checkEqual(fd.TimeStampOnUpdate, false, "TimeStampOnUpdate 2-2");
|
|
742
|
+
|
|
743
|
+
// nullable
|
|
744
|
+
fd = td.FieldDef(3);
|
|
745
|
+
checkEqual(fd.Nullable, true, "Nullable");
|
|
746
|
+
|
|
747
|
+
// getSqlStringForCreateTable
|
|
748
|
+
var sql = db.GetSqlStringForCreateTable("extention");
|
|
749
|
+
checkEqual(db.Stat, 0, "GetSqlStringForCreateTable");
|
|
750
|
+
checkEqual(sql, 'CREATE TABLE `extention` (`id` INT NOT NULL ,`comment` VARCHAR(60) binary NULL DEFAULT NULL,`bits` BIGINT NOT NULL , UNIQUE key0(`id`)) ENGINE=InnoDB default charset=cp932',
|
|
751
|
+
"GetSqlStringForCreateTable");
|
|
752
|
+
|
|
753
|
+
// setValidationTarget(bool isMariadb, uchar_td srvMinorVersion)
|
|
754
|
+
td = dbdef.TableDef(1);
|
|
755
|
+
td.SetValidationTarget(true, 0);
|
|
756
|
+
|
|
757
|
+
// isNull setNull
|
|
758
|
+
initQuery();
|
|
759
|
+
|
|
760
|
+
// segmentsForInValue
|
|
761
|
+
checkEqual(q.SegmentsForInValue(3).GetJoinKeySize(), 3, "SegmentsForInValue");
|
|
762
|
+
q.Reset();
|
|
763
|
+
checkEqual(q.GetJoinKeySize(), 0, "GetJoinKeySize");
|
|
764
|
+
|
|
765
|
+
atu.Alias("���O", "name");
|
|
766
|
+
q.Select("id", "name", "group", "tel").Where("id", "<=", 10);
|
|
767
|
+
var rs = atu.Index(0).KeyValue(null).Read(q);
|
|
768
|
+
checkEqual(rs.Count, 10, "atu rs.Count = 10 ");
|
|
769
|
+
var rec = rs.First();
|
|
770
|
+
checkEqual(rec(3).IsNull(), true, "NULL true");
|
|
771
|
+
rec(3).setNull(false);
|
|
772
|
+
checkEqual(rec(3).IsNull(), false, "NULL false");
|
|
773
|
+
|
|
774
|
+
//Join null
|
|
775
|
+
initQuery();
|
|
776
|
+
var last = ate.Index(0).Join(rs, q.Select("comment").Optimize(hasOneJoin), "id").Reverse().First();
|
|
777
|
+
checkEqual(rs.Count, 10, "ate rs.Count = 10 ");
|
|
778
|
+
checkEqual(last.Field("id").i(), 10, "last.id = 10 ");
|
|
779
|
+
if (!x86)
|
|
780
|
+
checkEqual(last.Field("id").i64(), 10, "last.id = 10 ");
|
|
781
|
+
checkEqual(last.Field("id").d(), 10, "last.id = 10 ");
|
|
782
|
+
checkEqual(rec(4).IsNull(), false, "Join NULL1");
|
|
783
|
+
rec(4).setValue(null);
|
|
784
|
+
checkEqual(rec(4).IsNull(), true, "Join NULL2");
|
|
785
|
+
|
|
786
|
+
//WritableRecord.clear()
|
|
787
|
+
var wr = atu.getWritableRecord();
|
|
788
|
+
wr.Clear();
|
|
789
|
+
wr("id").setValue(5);
|
|
790
|
+
wr("tel").setValue("0236-99-9999");
|
|
791
|
+
wr.Update();
|
|
792
|
+
wr.Clear();
|
|
793
|
+
wr("id").setValue(5);
|
|
794
|
+
|
|
795
|
+
checkEqual(wr.Read(), true, "wr.Read");
|
|
796
|
+
checkEqual(wr("tel").str(), "0236-99-9999", "tel ");
|
|
797
|
+
|
|
798
|
+
//whereIsNull
|
|
799
|
+
initQuery();
|
|
800
|
+
q.Select("id", "tel").WhereIsNull("tel").Reject(0xFFFF);
|
|
801
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
802
|
+
checkEqual(rs.Count, 999, "atu rs.Count = 999 ");
|
|
803
|
+
|
|
804
|
+
//whereIsNotNull
|
|
805
|
+
initQuery();
|
|
806
|
+
q.Select("id", "tel").WhereIsNotNull("tel").Reject(0xFFFF);
|
|
807
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
808
|
+
checkEqual(rs.Count, 1, "atu rs.Count = 1 ");
|
|
809
|
+
|
|
810
|
+
//AndIsNull
|
|
811
|
+
initQuery();
|
|
812
|
+
q.Select("id", "tel").Where("id", "<=", 10).AndIsNull("tel").Reject(0xFFFF);
|
|
813
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
814
|
+
checkEqual(rs.Count, 9, "atu rs.Count = 9 ");
|
|
815
|
+
|
|
816
|
+
//AndIsNotNull
|
|
817
|
+
initQuery();
|
|
818
|
+
q.Select("id", "tel").Where("id", "<", 10).AndIsNotNull("tel").Reject(0xFFFF);
|
|
819
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
820
|
+
checkEqual(rs.Count, 1, "atu rs.Count = 1 ");
|
|
821
|
+
|
|
822
|
+
//OrIsNull
|
|
823
|
+
initQuery();
|
|
824
|
+
q.Select("id", "tel").Where("id", "<=", 10).OrIsNull("tel").Reject(0xFFFF);
|
|
825
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
826
|
+
checkEqual(rs.Count, 1000, "atu rs.Count = 1000 ");
|
|
827
|
+
|
|
828
|
+
//OrIsNotNull
|
|
829
|
+
initQuery();
|
|
830
|
+
q.Select("id", "tel").Where("id", "<=", 10).OrIsNotNull("tel").Reject(0xFFFF);
|
|
831
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
832
|
+
checkEqual(rs.Count, 10, "atu rs.Count = 10 ");
|
|
833
|
+
|
|
834
|
+
//test recordset query
|
|
835
|
+
q.Reset();
|
|
836
|
+
q.Select("id", "name", "group", "tel");
|
|
837
|
+
rs = atu.Index(0).KeyValue(0).Read(q);
|
|
838
|
+
checkEqual(rs.Count, 1000, "rs.Count = 1000 ");
|
|
839
|
+
|
|
840
|
+
// recordset whenIsNull
|
|
841
|
+
var rq = createRecordsetQuery();
|
|
842
|
+
rq.WhenIsNull("tel");
|
|
843
|
+
rs2 = rs.Clone();
|
|
844
|
+
rs2 = rs2.MatchBy(rq);
|
|
845
|
+
checkEqual(rs2.Count, 999, "rs.Count = 999 ");
|
|
846
|
+
|
|
847
|
+
//recordset whenIsNotNull
|
|
848
|
+
rq.Reset();
|
|
849
|
+
rq.WhenIsNotNull("tel");
|
|
850
|
+
rs2 = rs.Clone();
|
|
851
|
+
rs2 = rs2.MatchBy(rq);
|
|
852
|
+
checkEqual(rs2.Count, 1, "rs.Count = 1 ");
|
|
853
|
+
|
|
854
|
+
//recordset andIsNull
|
|
855
|
+
rq.Reset();
|
|
856
|
+
rq.When("id", "<=", 10).AndIsNull("tel");
|
|
857
|
+
rs2 = rs.Clone();
|
|
858
|
+
rs2 = rs2.MatchBy(rq);
|
|
859
|
+
checkEqual(rs2.Count, 9, "rs.Count = 9 ");
|
|
860
|
+
|
|
861
|
+
//recordset andIsNotNull
|
|
862
|
+
rq.Reset();
|
|
863
|
+
rq.When("id", "<", 10).AndIsNotNull("tel");
|
|
864
|
+
rs2 = rs.Clone();
|
|
865
|
+
rs2 = rs2.MatchBy(rq);
|
|
866
|
+
checkEqual(rs2.Count, 1, "rs.Count = 1 ");
|
|
867
|
+
|
|
868
|
+
// recordset orIsNull
|
|
869
|
+
rq.Reset();
|
|
870
|
+
rq.When("id", "<=", 10).OrIsNull("tel");
|
|
871
|
+
rs2 = rs.Clone();
|
|
872
|
+
rs2 = rs2.MatchBy(rq);
|
|
873
|
+
checkEqual(rs2.Count, 1000, "rs.Count = 1000 ");
|
|
874
|
+
|
|
875
|
+
//recordset orIsNotNull
|
|
876
|
+
rq.Reset();
|
|
877
|
+
rq.When("id", "<=", 10).OrIsNotNull("tel");
|
|
878
|
+
rs2 = rs.Clone();
|
|
879
|
+
rs2 = rs2.MatchBy(rq);
|
|
880
|
+
checkEqual(rs2.Count, 10, "rs.Count = 10 ");
|
|
881
|
+
|
|
882
|
+
//setBin bin
|
|
883
|
+
var bin = String.fromCharCode(0xFF01,0xFF02);
|
|
884
|
+
wr("tel").SetBin(bin);
|
|
885
|
+
var ret = wr("tel").Bin();
|
|
886
|
+
checkEqual(ret.charCodeAt(0), 0xFF01, "SetBin Bin");
|
|
887
|
+
checkEqual(ret.charCodeAt(1), 0xFF02, "SetBin Bin");
|
|
888
|
+
|
|
889
|
+
|
|
890
|
+
// table::default NULL
|
|
891
|
+
var tb = db.OpenTable("user");
|
|
892
|
+
checkEqual(db.Stat, 0, "");
|
|
893
|
+
tb.KeyNum = 0;
|
|
894
|
+
tb.ClearBuffer();
|
|
895
|
+
checkEqual(tb.GetFVNull(3), true, "Default NULL");
|
|
896
|
+
|
|
897
|
+
tb.ClearBuffer(clearNull);
|
|
898
|
+
checkEqual(tb.GetFVNull(3), false, "clearNull NULL");
|
|
899
|
+
|
|
900
|
+
// table NULL
|
|
901
|
+
tb.SetFV("id", 1);
|
|
902
|
+
tb.Seek();
|
|
903
|
+
checkEqual(tb.Stat, 0, "Seek");
|
|
904
|
+
checkEqual(tb.GetFVNull(3), true, "Default NULL");
|
|
905
|
+
checkEqual(tb.GetFVNull("tel"), true, "Default NULL");
|
|
906
|
+
tb.SetFVNull(3, false);
|
|
907
|
+
checkEqual(tb.GetFVNull(3), false, "tb.Null");
|
|
908
|
+
tb.SetFVNull("tel", true);
|
|
909
|
+
checkEqual(tb.GetFVNull("tel"), true, "tb.Null");
|
|
910
|
+
if (x86)
|
|
911
|
+
{
|
|
912
|
+
tb.SetFV("id", 10);
|
|
913
|
+
checkEqual(tb.GetFVint("id"), 10, "tb.SetFV");
|
|
914
|
+
tb.SetFV("id", "10");
|
|
915
|
+
checkEqual(tb.GetFVint("id"), 10, "tb.SetFV");
|
|
916
|
+
tb.SetFV("id", 10.00);
|
|
917
|
+
checkEqual(tb.GetFVint("id"), 10, "tb.SetFV");
|
|
918
|
+
}
|
|
919
|
+
else
|
|
920
|
+
{
|
|
921
|
+
tb.SetFV("id", 10);
|
|
922
|
+
checkEqual(tb.GetFV64("id"), 10, "tb.SetFV");
|
|
923
|
+
tb.SetFV("id", "10");
|
|
924
|
+
checkEqual(tb.GetFV64("id"), 10, "tb.SetFV");
|
|
925
|
+
tb.SetFV("id", 10.00);
|
|
926
|
+
checkEqual(tb.GetFV64("id"), 10, "tb.SetFV");
|
|
927
|
+
}
|
|
928
|
+
checkEqual(tb.GetFVstr("id"), "10", "tb.SetFV");
|
|
929
|
+
|
|
930
|
+
// timestamp format
|
|
931
|
+
var date = todayStr();
|
|
932
|
+
checkEqual(tb.getFVstr("update_datetime").substr(0, 10), date);
|
|
933
|
+
if (!isMySQL5_5(db))
|
|
934
|
+
checkEqual(tb.getFVstr("create_datetime").substr(0, 10), date);
|
|
935
|
+
|
|
936
|
+
// setTimestampMode
|
|
937
|
+
tb.SetTimestampMode(TIMESTAMP_VALUE_CONTROL);
|
|
938
|
+
tb.SetTimestampMode(TIMESTAMP_ALWAYS);
|
|
939
|
+
|
|
940
|
+
// MysqlNullMode
|
|
941
|
+
checkEqual(tb.TableDef.MysqlNullMode , true, "MysqlNullMode 2");
|
|
942
|
+
checkEqual(td.InUse , 2, "InUse2");
|
|
943
|
+
|
|
944
|
+
test_bit(ate, db);
|
|
945
|
+
test_bitset();
|
|
946
|
+
test_decimal(ate.TableDef.FieldDef(0));
|
|
947
|
+
//WScript.Echo(" -- End Test -- ");
|
|
948
|
+
}
|
|
949
|
+
/*--------------------------------------------------------------------------------*/
|
|
950
|
+
function main()
|
|
951
|
+
{
|
|
952
|
+
var isCreate = 1;
|
|
953
|
+
var host = "localhost";
|
|
954
|
+
if (WScript.arguments.length > 0)
|
|
955
|
+
isCreate = parseInt(WScript.arguments(0), 10);
|
|
956
|
+
|
|
957
|
+
if (WScript.arguments.length > 1)
|
|
958
|
+
host = WScript.arguments(1);
|
|
959
|
+
var URI = "tdap://" + host + "/test_v3?dbfile=test.bdf";
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
WScript.Echo(URI);
|
|
963
|
+
var b = new bench();
|
|
964
|
+
try
|
|
965
|
+
{
|
|
966
|
+
var database = createDatabaseObject();
|
|
967
|
+
if (database == null)
|
|
968
|
+
{
|
|
969
|
+
WScript.Echo("transactd.database ActiveXObject erorr.");
|
|
970
|
+
return 1;
|
|
971
|
+
}
|
|
972
|
+
if (database.Open(URI, TYPE_BDF, OPEN_NORMAL, "", ""))
|
|
973
|
+
{
|
|
974
|
+
|
|
975
|
+
if (isCreate > 0)
|
|
976
|
+
database.Drop();
|
|
977
|
+
}else
|
|
978
|
+
{
|
|
979
|
+
if (database.Stat != STATUS_TABLE_NOTOPEN )
|
|
980
|
+
{
|
|
981
|
+
WScript.Echo("database erorr: " + database.Stat);
|
|
982
|
+
return 1;
|
|
983
|
+
}
|
|
984
|
+
isCreate = true;
|
|
985
|
+
}
|
|
986
|
+
if (isCreate > 0)
|
|
987
|
+
{
|
|
988
|
+
WScript.Echo("Creating test data. Please wait ...");
|
|
989
|
+
if (createDatabase(database, URI))
|
|
990
|
+
insertData(database);
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
if (database.Stat !== 0)
|
|
994
|
+
{
|
|
995
|
+
WScript.Echo("open table erorr:No" + database.stat);
|
|
996
|
+
return 2;
|
|
997
|
+
}
|
|
998
|
+
var atu = createActiveTable(database, "user");
|
|
999
|
+
var ate = createActiveTable(database, "extention");
|
|
1000
|
+
|
|
1001
|
+
q = createQuery();;
|
|
1002
|
+
gq = createGroupQuery();
|
|
1003
|
+
|
|
1004
|
+
b.report(test, atu, ate, database);
|
|
1005
|
+
b.show();
|
|
1006
|
+
if (resultCode == 0)
|
|
1007
|
+
WScript.Echo("*** No errors detected.");
|
|
1008
|
+
}
|
|
1009
|
+
catch(e)
|
|
1010
|
+
{
|
|
1011
|
+
WScript.Echo("Error:" + e.name + " " + e.description);
|
|
1012
|
+
return 2;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
return resultCode;
|
|
1016
|
+
}
|
|
1017
|
+
|