transactd 2.4.5 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +1 -1
  3. data/README-JA.md +52 -529
  4. data/README.md +52 -523
  5. data/bin/common/tdclc_32_3_0.dll +0 -0
  6. data/bin/common/tdclc_64_3_0.dll +0 -0
  7. data/build/common/system.cmake +2 -1
  8. data/build/common/transactd_cl_common.cmake +3 -6
  9. data/build/swig/ruby/ruby.swg +85 -28
  10. data/build/swig/ruby/tdclrb_wrap.cpp +3195 -1578
  11. data/build/swig/tdcl.i +161 -5
  12. data/build/tdclc/CMakeLists.txt +1 -0
  13. data/build/tdclc/tdclc.cbproj +7 -1
  14. data/build/tdclc/tdclc.rc +4 -4
  15. data/build/tdclcpp/tdclcpp.rc +4 -4
  16. data/build/tdclcpp/tdclcpp_bc.cbproj +2 -5
  17. data/build/tdclrb/tdclrb.rc +4 -4
  18. data/source/bzs/db/blobStructs.h +1 -1
  19. data/source/bzs/db/engine/mysql/database.cpp +199 -74
  20. data/source/bzs/db/engine/mysql/database.h +47 -18
  21. data/source/bzs/db/engine/mysql/dbManager.cpp +1 -0
  22. data/source/bzs/db/engine/mysql/mysqlInternal.h +32 -8
  23. data/source/bzs/db/protocol/tdap/btrDate.cpp +110 -75
  24. data/source/bzs/db/protocol/tdap/btrDate.h +46 -21
  25. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +18 -18
  26. data/source/bzs/db/protocol/tdap/client/activeTable.h +25 -25
  27. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +10 -4
  28. data/source/bzs/db/protocol/tdap/client/client.cpp +6 -5
  29. data/source/bzs/db/protocol/tdap/client/client.h +82 -15
  30. data/source/bzs/db/protocol/tdap/client/database.cpp +531 -142
  31. data/source/bzs/db/protocol/tdap/client/database.h +19 -6
  32. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +461 -408
  33. data/source/bzs/db/protocol/tdap/client/dbDef.h +11 -17
  34. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +61 -13
  35. data/source/bzs/db/protocol/tdap/client/field.cpp +1592 -1398
  36. data/source/bzs/db/protocol/tdap/client/field.h +110 -121
  37. data/source/bzs/db/protocol/tdap/client/fields.h +40 -10
  38. data/source/bzs/db/protocol/tdap/client/filter.h +69 -55
  39. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +296 -164
  40. data/source/bzs/db/protocol/tdap/client/groupQuery.h +77 -25
  41. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +31 -13
  42. data/source/bzs/db/protocol/tdap/client/memRecord.h +31 -21
  43. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +1 -1
  44. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +4 -1
  45. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +69 -24
  46. data/source/bzs/db/protocol/tdap/client/nsTable.h +3 -1
  47. data/source/bzs/db/protocol/tdap/client/recordset.cpp +1 -0
  48. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +46 -27
  49. data/source/bzs/db/protocol/tdap/client/request.h +2 -1
  50. data/source/bzs/db/protocol/tdap/client/serializer.cpp +44 -9
  51. data/source/bzs/db/protocol/tdap/client/serializer.h +1 -1
  52. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +182 -76
  53. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +23 -12
  54. data/source/bzs/db/protocol/tdap/client/stringConverter.h +8 -10
  55. data/source/bzs/db/protocol/tdap/client/table.cpp +172 -93
  56. data/source/bzs/db/protocol/tdap/client/table.h +112 -37
  57. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +17 -0
  58. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +0 -1
  59. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +0 -2
  60. data/source/bzs/db/protocol/tdap/client/trdormapi.h +1 -1
  61. data/source/bzs/db/protocol/tdap/fieldComp.h +698 -14
  62. data/source/bzs/db/protocol/tdap/myDateTime.cpp +723 -307
  63. data/source/bzs/db/protocol/tdap/myDateTime.h +294 -0
  64. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +164 -54
  65. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +6 -3
  66. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +133 -550
  67. data/source/bzs/db/protocol/tdap/mysql/request.h +6 -5
  68. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +217 -82
  69. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +1 -1
  70. data/source/bzs/db/protocol/tdap/tdapRequest.h +4 -9
  71. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +808 -17
  72. data/source/bzs/db/protocol/tdap/tdapSchema.h +656 -164
  73. data/source/bzs/db/protocol/tdap/tdapcapi.h +130 -28
  74. data/source/bzs/db/protocol/tdap/uri.h +40 -32
  75. data/source/bzs/db/transactd/connManager.cpp +1 -1
  76. data/source/bzs/db/transactd/transactd.cpp +7 -0
  77. data/source/bzs/env/compiler.h +107 -94
  78. data/source/bzs/env/crosscompile.cpp +24 -12
  79. data/source/bzs/env/crosscompile.h +75 -6
  80. data/source/bzs/env/mbcswchrLinux.cpp +2 -2
  81. data/source/bzs/env/tcharMinGW.h +4 -0
  82. data/source/bzs/example/changeSchema.cpp +22 -17
  83. data/source/bzs/example/queryData.cpp +4 -0
  84. data/source/bzs/netsvc/client/iconnection.h +3 -1
  85. data/source/bzs/netsvc/client/tcpClient.h +10 -3
  86. data/source/bzs/rtl/stringBuffers.cpp +7 -0
  87. data/source/bzs/test/tdclatl/bench_query_atl.js +6 -0
  88. data/source/bzs/test/tdclatl/bench_tdclatl.js +8 -1
  89. data/source/bzs/test/tdclatl/test_query_atl.js +22 -2
  90. data/source/bzs/test/tdclatl/test_v3.js +1017 -0
  91. data/source/bzs/test/tdclphp/transactd_Test.php +55 -21
  92. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +0 -5
  93. data/source/bzs/test/tdclphp/transactd_pool_Test.php +2 -0
  94. data/source/bzs/test/tdclphp/transactd_v3_Test.php +743 -0
  95. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -5
  96. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +2 -0
  97. data/source/bzs/test/tdclrb/transactd_spec.rb +39 -16
  98. data/source/bzs/test/tdclrb/transactd_v3_spec.rb +748 -0
  99. data/source/bzs/test/transactdBench/transactdBench.cpp +55 -58
  100. data/source/bzs/test/transactdBench/transactdBench2.cpp +1 -3
  101. data/source/bzs/test/trdclengn/testField.h +3305 -0
  102. data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +1050 -0
  103. data/source/bzs/test/trdclengn/test_trdclengn.cpp +112 -190
  104. data/source/bzs/test/trdclengn/testbase.h +137 -0
  105. data/source/global/ormsrcgen/srcgen.cpp +23 -12
  106. data/source/global/ormsrcgen/template/ormDataClass_template.h +2 -0
  107. data/source/global/querystmts/querystmts.cpp +2 -3
  108. data/source/global/tdclatl/Bitset.cpp +38 -0
  109. data/source/global/tdclatl/Bitset.h +63 -0
  110. data/source/global/tdclatl/Database.cpp +59 -18
  111. data/source/global/tdclatl/Database.h +7 -4
  112. data/source/global/tdclatl/DbDef.cpp +6 -6
  113. data/source/global/tdclatl/DbDef.h +2 -1
  114. data/source/global/tdclatl/Field.cpp +112 -0
  115. data/source/global/tdclatl/Field.h +19 -5
  116. data/source/global/tdclatl/FieldDef.cpp +137 -16
  117. data/source/global/tdclatl/FieldDef.h +18 -2
  118. data/source/global/tdclatl/FieldDefs.cpp +54 -1
  119. data/source/global/tdclatl/FieldDefs.h +3 -0
  120. data/source/global/tdclatl/GroupQuery.cpp +8 -8
  121. data/source/global/tdclatl/QueryBase.cpp +65 -0
  122. data/source/global/tdclatl/QueryBase.h +10 -0
  123. data/source/global/tdclatl/Record.cpp +33 -2
  124. data/source/global/tdclatl/Record.h +3 -1
  125. data/source/global/tdclatl/RecordsetQuery.cpp +42 -0
  126. data/source/global/tdclatl/RecordsetQuery.h +8 -0
  127. data/source/global/tdclatl/Table.cpp +127 -3
  128. data/source/global/tdclatl/Table.h +10 -1
  129. data/source/global/tdclatl/TableDef.cpp +41 -8
  130. data/source/global/tdclatl/TableDef.h +7 -2
  131. data/source/global/tdclatl/activeTable.cpp +40 -71
  132. data/source/global/tdclatl/resource.h +0 -0
  133. data/source/global/tdclatl/tdclatl.idl +222 -28
  134. data/source/linux/tchar.h +100 -96
  135. data/transactd.gemspec +2 -2
  136. metadata +13 -11
  137. data/BUILD_UNIX-JA.md +0 -161
  138. data/BUILD_WIN-JA.md +0 -326
  139. data/README_ORMSRCGEN-JA.md +0 -115
  140. data/README_ORMSRCGEN.md +0 -118
  141. data/RELEASE_NOTE-JA.md +0 -356
  142. data/RELEASE_NOTE.md +0 -360
  143. data/bin/common/tdclc_32_2_4.dll +0 -0
  144. data/bin/common/tdclc_64_2_4.dll +0 -0
  145. 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
+