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.
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
@@ -148,6 +148,8 @@ typedef void(__STDCALL* WIN_TPOOL_SHUTDOWN_PTR)();
148
148
  #define TD_KEY_LE_PREV_MULTI 73
149
149
  #define TD_FILTER_PREPARE 74
150
150
  #define TD_CONNECT 78
151
+ #define TD_STORE_TEST 79 // For test only
152
+ #define TD_SET_TIMESTAMP_MODE 80
151
153
  #define TD_BEGIN_SHAPSHOT 88
152
154
  #define TD_END_SNAPSHOT 89
153
155
  #define TD_AUTOMEKE_SCHEMA 90
@@ -158,19 +160,27 @@ typedef void(__STDCALL* WIN_TPOOL_SHUTDOWN_PTR)();
158
160
  #define TD_KEY_SEEK_MULTI 95
159
161
  #define TD_ACL_RELOAD 96
160
162
  #define TD_RECONNECT 97
163
+ #define TD_GET_SCHEMA 98
161
164
 
162
165
  /** create sub operations
163
166
  */
164
167
  #define CR_SUBOP_DROP -128
165
168
  #define CR_SUBOP_RENAME -127
166
169
  #define CR_SUBOP_SWAPNAME -126
170
+ #define CR_SUBOP_CREATE_DBONLY -125
167
171
  #define CR_SUBOP_BY_FILESPEC -1
168
172
  #define CR_SUBOP_BY_FILESPEC_NOCKECK 0
169
173
  #define CR_SUBOP_BY_TABLEDEF 1
170
174
  #define CR_SUBOP_BY_TABLEDEF_NOCKECK 2
175
+ #define CR_SUBOP_BY_SQL 3
176
+ #define CR_SUBOP_BY_SQL_NOCKECK 4
171
177
 
172
178
  #define CR_SUB_FLAG_EXISTCHECK -1
173
179
 
180
+ /** TD_TABLE_INFO sub operations
181
+ */
182
+ #define ST_SUB_GETSQL_BY_TABLEDEF -1
183
+
174
184
  /** TD_ADD_SENDBLOB sub operations
175
185
  */
176
186
  #define TD_ASBLOB_ENDROW -125
@@ -191,6 +201,13 @@ typedef void(__STDCALL* WIN_TPOOL_SHUTDOWN_PTR)();
191
201
  #define LG_SUBOP_NEWCONNECT 3
192
202
  #define LG_SUBOP_RECONNECT 4
193
203
  #define LG_SUBOP_DISCONNECT_EX 5 //for reconnect test
204
+
205
+ /** TIMESTAMP_MODE
206
+ */
207
+ #define TIMESTAMP_VALUE_CONTROL 0
208
+ #define TIMESTAMP_ALWAYS 1
209
+
210
+
194
211
  /** field types
195
212
  */
196
213
  #define ft_string 0
@@ -238,19 +255,37 @@ typedef void(__STDCALL* WIN_TPOOL_SHUTDOWN_PTR)();
238
255
  #define ft_myfixedbinary 53
239
256
  #define ft_enum 54
240
257
  #define ft_set 55
258
+ #define ft_mytime_num_cmp 56 //for comare use only
259
+ #define ft_mydatetime_num_cmp 57 //for comare use only
260
+ #define ft_mytimestamp_num_cmp 58 //for comare use only
261
+ #define ft_myyear 59
262
+ #define ft_mygeometry 60
263
+ #define ft_myjson 61
264
+ #define ft_mydecimal 62
241
265
  #define ft_nullindicator 255
242
266
 
243
- /** charset type number
244
- */
245
- #define charset_none 0
246
- #define charset_latin1 1
247
- #define charset_ascii 2
248
- #define charset_sjis 3
249
- #define charset_cp932 4
267
+ /* compair types */
268
+ enum eCompType
269
+ {
270
+ eEqual = 1,
271
+ eGreater = 2,
272
+ eLess = 3,
273
+ eNotEq = 4,
274
+ eGreaterEq = 5,
275
+ eLessEq = 6,
276
+ eBitAnd = 8,
277
+ eNotBitAnd = 9,
278
+ eIsNull = 10,
279
+ eIsNotNull = 11
280
+ };
250
281
 
251
- #define charset_utf8 100
252
- #define charset_utf8mb4 101
253
- #define charset_usc2 102
282
+ /* filter cobine type */
283
+ enum combineType
284
+ {
285
+ eCend,
286
+ eCand,
287
+ eCor
288
+ };
254
289
 
255
290
  /** extruct row comp bias
256
291
  */
@@ -308,7 +343,20 @@ typedef void(__STDCALL* WIN_TPOOL_SHUTDOWN_PTR)();
308
343
  #define TD_OPEN_EXCLUSIVE -4
309
344
  #define TD_OPEN_READONLY_EXCLUSIVE (TD_OPEN_READONLY + TD_OPEN_EXCLUSIVE)
310
345
 
311
- /** filed algin
346
+ /** @cond INTERNAL */
347
+ #define TD_OPEN_MASK_SIMPLE_NULL 0
348
+ #define TD_OPEN_MASK_MYSQL_NULL -16
349
+ #define TD_OPEN_MASK_GETSHCHEMA -32
350
+ #define TD_OPEN_MASK_GETDEFAULTIMAGE -64
351
+
352
+ #define IS_MODE_READONLY(mode) (((0 - mode) & 2) != 0)
353
+ #define IS_MODE_EXCLUSIVE(mode) (((0 - mode) & 4) != 0)
354
+ #define IS_MODE_MYSQL_NULL(mode) (((0 - mode) & 16) != 0)
355
+ #define IS_MODE_GETSCHEMA(mode) (((0 - mode) & 32) != 0)
356
+ #define IS_MODE_GETDEFAULTIMAGE(mode) (((0 - mode) & 64) != 0)
357
+ /** @endcond */
358
+
359
+ /** field algin
312
360
  */
313
361
  #define BT_AL_LEFT 0
314
362
  #define BT_AL_CENTER 2
@@ -353,7 +401,8 @@ typedef void(__STDCALL* WIN_TPOOL_SHUTDOWN_PTR)();
353
401
  #define STATUS_INVALID_FIELDVALUE -36
354
402
  #define STATUS_INVALID_VALLEN -37
355
403
  #define STATUS_FIELDTYPE_NOTSUPPORT -42
356
-
404
+ #define STATUS_INVALID_NULLMODE -43
405
+ #define STATUS_TOO_LARGE_VALUE -44
357
406
 
358
407
  #define STATUS_SUCCESS 0
359
408
  #define STATUS_PROGRAM_ERROR 1
@@ -449,17 +498,49 @@ inline bool canRecoverNetError(short code)
449
498
  #define TD_BACKUP_MODE_NOT_PERMIT 41
450
499
  #define TD_BACKUP_MODE_SERVER_ERROR 91
451
500
 
501
+ #define DFV_TIMESTAMP_DEFAULT 1.0f
502
+ #define DFV_TIMESTAMP_DEFAULT_ASTR "1"
503
+ #define DFV_TIMESTAMP_DEFAULT_WSTR L"1"
452
504
 
453
505
  /** @cond INTERNAL */
454
- struct trdVersiton
506
+ struct clsrv_ver
455
507
  {
456
- char cherserServer[128];
457
- ushort_td clMajor;
458
- ushort_td clMinor;
459
- ushort_td clRelease;
460
- ushort_td srvMajor;
508
+ union
509
+ {
510
+ ushort_td clMajor;
511
+ ushort_td srvMysqlMajor;
512
+ };
513
+ union
514
+ {
515
+ ushort_td clMinor;
516
+ ushort_td srvMysqlMinor;
517
+ };
518
+ union
519
+ {
520
+ ushort_td clRelease;
521
+ ushort_td srvMysqlRelease;
522
+ };
523
+ uchar_td srvMajor;
524
+ uchar_td srvMysqlType;
461
525
  ushort_td srvMinor;
462
526
  ushort_td srvRelease;
527
+ inline bool isSupportDateTimeTimeStamp() const
528
+ {
529
+ if (srvMysqlMajor >= 10) return true;
530
+ if ((srvMysqlMajor == 5) && (srvMysqlMinor > 5)) return true;
531
+ return false;
532
+ }
533
+ };
534
+ #define VER_ST_SIZE 12
535
+
536
+ #define MYSQL_TYPE_MYSQL 'M'
537
+ #define MYSQL_TYPE_MARIA 'A'
538
+
539
+
540
+ struct trdVersiton
541
+ {
542
+ char cherserServer[128];
543
+ clsrv_ver desc;
463
544
  };
464
545
 
465
546
  #define MYSQL_SCRAMBLE_LENGTH 20
@@ -495,16 +576,17 @@ struct handshale_t
495
576
  #define TD_VAR_USEPIPE 14
496
577
  #define TD_VAR_HSLISTENPORT 15
497
578
  #define TD_VAR_USEHS 16
498
- #define TD_VAR_SIZE 17
579
+ #define TD_VAR_TIMESTAMPMODE 17
580
+ #define TD_VAR_SIZE 18
499
581
 
500
582
  /** @endcond */
501
583
 
502
584
  /* In the case of "tdclcppxxx" library of msvc, The ($TargetName) is not changed automatically.
503
585
  If you change this version then you need change The ($TargetName) project options too.
504
586
  */
505
- #define C_INTERFACE_VER_MAJOR "2"//##1 Build marker! Don't remove
506
- #define C_INTERFACE_VER_MINOR "4"//##2 Build marker! Don't remove
507
- #define C_INTERFACE_VER_RELEASE "5"//##3 Build marker! Don't remove
587
+ #define C_INTERFACE_VER_MAJOR "3"//##1 Build marker! Don't remove
588
+ #define C_INTERFACE_VER_MINOR "0"//##2 Build marker! Don't remove
589
+ #define C_INTERFACE_VER_RELEASE "0"//##3 Build marker! Don't remove
508
590
 
509
591
  /* dnamic load library name.
510
592
  The default extention of Mac is ".boudle", Therefore ".so" is popular. */
@@ -566,9 +648,9 @@ struct handshale_t
566
648
 
567
649
  */
568
650
 
569
- #define CPP_INTERFACE_VER_MAJOR "2"//##4 Build marker! Don't remove
570
- #define CPP_INTERFACE_VER_MINOR "4"//##5 Build marker! Don't remove
571
- #define CPP_INTERFACE_VER_RELEASE "5"//##6 Build marker! Don't remove
651
+ #define CPP_INTERFACE_VER_MAJOR "3"//##4 Build marker! Don't remove
652
+ #define CPP_INTERFACE_VER_MINOR "0"//##5 Build marker! Don't remove
653
+ #define CPP_INTERFACE_VER_RELEASE "0"//##6 Build marker! Don't remove
572
654
 
573
655
  /* use autolink tdclcpp */
574
656
  #if (__BCPLUSPLUS__ || _MSC_VER)
@@ -583,8 +665,28 @@ struct handshale_t
583
665
  #endif
584
666
  #endif
585
667
 
586
- #define TRANSACTD_VER_MAJOR 2//##7 Build marker! Don't remove
587
- #define TRANSACTD_VER_MINOR 4//##8 Build marker! Don't remove
588
- #define TRANSACTD_VER_RELEASE 5//##9 Build marker! Don't remove
668
+
669
+
670
+ #define TD_CPP_LIB_NAME \
671
+ LIB_PREFIX TD_CPP_LIB_PRE CPP_INTERFACE_VERSTR SHARED_LIB_EXTENTION
672
+
673
+ #ifdef LINUX
674
+ #ifdef __APPLE__
675
+ #define TD_CPP_SO_NAME \
676
+ LIB_PREFIX TD_CPP_LIB_PRE CPP_INTERFACE_VERSTR ".dylib"
677
+ #else // NOT __APPLE__
678
+ #define TD_CPP_SO_NAME \
679
+ LIB_PREFIX TD_CPP_LIB_PRE ".so." CPP_INTERFACE_VER_MAJOR "." CPP_INTERFACE_VER_MINOR
680
+ #endif // NOT __APPLE__
681
+ #else // NOT LINUX
682
+ #define TD_CPP_SO_NAME \
683
+ LIB_PREFIX TD_CPP_LIB_PRE CPP_INTERFACE_VERSTR ".dll"
684
+ #endif // NOT LINUX
685
+
686
+
687
+
688
+ #define TRANSACTD_VER_MAJOR 3//##7 Build marker! Don't remove
689
+ #define TRANSACTD_VER_MINOR 0//##8 Build marker! Don't remove
690
+ #define TRANSACTD_VER_RELEASE 0//##9 Build marker! Don't remove
589
691
 
590
692
  #endif // BZS_DB_PROTOCOL_TDAP_TDAPCAPI_H
@@ -39,6 +39,8 @@ namespace protocol
39
39
  namespace tdap
40
40
  {
41
41
 
42
+ /** @cond INTERNAL */
43
+
42
44
  inline const _TCHAR* protocol(const _TCHAR* uri)
43
45
  {
44
46
  const _TCHAR* st = _tcsstr(uri, _T("tdap://"));
@@ -117,13 +119,15 @@ inline const _TCHAR* dbname(const _TCHAR* uri, _TCHAR* buf, size_t size)
117
119
  if (st)
118
120
  {
119
121
  st = _tcsstr(st + 3, _T("/"));
120
- if (st)
122
+ if (st && *(++st))
121
123
  {
122
- const _TCHAR* en = _tcsstr(st + 1, _T("?"));
124
+ const _TCHAR* en = _tcsstr(st, _T("?"));
125
+ if (!en)
126
+ en = _tcslen(st) + st;
123
127
  if (en && en > st)
124
128
  {
125
- _tcsncpy_s(buf, size, st + 1, en - (st + 1));
126
- buf[en - (st + 1)] = 0x00;
129
+ _tcsncpy_s(buf, size, st, en - st);
130
+ buf[en - st] = 0x00;
127
131
  }
128
132
  }
129
133
  }
@@ -133,17 +137,17 @@ inline const _TCHAR* dbname(const _TCHAR* uri, _TCHAR* buf, size_t size)
133
137
  inline const _TCHAR* schemaTable(const _TCHAR* uri, _TCHAR* buf, size_t size)
134
138
  {
135
139
  buf[0] = 0x00;
136
- const _TCHAR* st = _tcsstr(uri, _T("dbfile="));
140
+ _TCHAR* st = _tcsstr((_TCHAR*)uri, _T("dbfile="));
137
141
  if (st)
138
142
  {
139
143
  st+= 7;
140
- const _TCHAR* en = _tcsrchr(uri, _T('.'));
144
+ _tcscpy_s(buf, size, st);
145
+ st = _tcschr(buf, _T('&'));
146
+ if (st) *st = 0x00;
147
+ st = buf;
148
+ const _TCHAR* en = _tcsrchr(st, _T('.'));
141
149
  if (en && en > st)
142
- {
143
- _tcsncpy_s(buf, size, st, en - st);
144
150
  buf[en - st] = 0x00;
145
- }else if (_tcsstr(st, TRANSACTD_SCHEMANAME))
146
- _tcscpy_s(buf, size, TRANSACTD_SCHEMANAME);
147
151
  }
148
152
  return buf;
149
153
  }
@@ -169,30 +173,29 @@ inline const _TCHAR* userName(const _TCHAR* uri, _TCHAR* buf, size_t size)
169
173
  inline const _TCHAR* passwd(const _TCHAR* uri, _TCHAR* buf, size_t size)
170
174
  {
171
175
  buf[0] = 0x00;
172
- const _TCHAR* st = _tcsstr(uri, _T("pwd="));
176
+ _TCHAR* st = _tcsstr((_TCHAR*)uri, _T("pwd="));
173
177
  if (st)
178
+ {
174
179
  _tcscpy_s(buf, size, st+4);
180
+ st = _tcschr(buf, _T('&'));
181
+ if (st) *st = 0x00;
182
+ }
175
183
  return buf;
176
184
  }
177
185
 
178
- inline const _TCHAR* stripAuth(const _TCHAR* uri, _TCHAR* buf, size_t size)
186
+
187
+ inline _TCHAR* stripParam(const _TCHAR* uri, _TCHAR* buf, size_t size)
179
188
  {
180
- _tcscpy_s(buf, size, uri);
181
- _TCHAR* st = _tcsstr(buf, _T("://"));
189
+ buf[0] = 0x00;
190
+ _TCHAR* st = _tcsstr((_TCHAR*)uri, _T("://"));
182
191
  if (st)
183
192
  {
184
- const _TCHAR* en = _tcsstr(uri, _T("@"));
185
- if (en)
193
+ st = _tcsstr(st + 3, _T("/"));
194
+ if (st && *(++st))
186
195
  {
187
- _tcscpy_s(st+3, size, ++en);
188
- _TCHAR* st2 = _tcsstr(st, _T("&pwd="));
189
- if (st2)
190
- *st2 = 0x00;
191
- else
192
- {
193
- st2 = _tcsstr(st, _T("?pwd="));
194
- if (st2) *st2 = 0x00;
195
- }
196
+ _tcscpy_s(buf, size, uri);
197
+ _TCHAR* en = _tcschr(buf, _T('?'));
198
+ if (en) *en = 0x00;
196
199
  }
197
200
  }
198
201
  return buf;
@@ -211,20 +214,24 @@ inline const _TCHAR* stripPasswd(const _TCHAR* uri, _TCHAR* buf, size_t size)
211
214
  return buf;
212
215
  }
213
216
 
214
- inline const _TCHAR* stripPasswdParam(const _TCHAR* uri, _TCHAR* buf, size_t size)
217
+ inline const _TCHAR* stripAuth(const _TCHAR* uri, _TCHAR* buf, size_t size)
215
218
  {
216
219
  _tcscpy_s(buf, size, uri);
217
220
  _TCHAR* st = _tcsstr(buf, _T("://"));
218
221
  if (st)
219
222
  {
220
- _TCHAR* st2 = _tcsstr(st, _T("&pwd="));
221
- if (st2)
222
- *(st2) = 0x00;
223
- else
223
+ const _TCHAR* en = _tcsstr(uri, _T("@"));
224
+ if (en)
224
225
  {
225
- st2 = _tcsstr(st, _T("?pwd="));
226
+ _tcscpy_s(st+3, size, ++en);
227
+ _TCHAR* st2 = _tcsstr(st, _T("&pwd="));
226
228
  if (st2)
227
- *(st2) = 0x00;
229
+ *st2 = 0x00;
230
+ else
231
+ {
232
+ st2 = _tcsstr(st, _T("?pwd="));
233
+ if (st2) *(st2 + 1) = 0x00;
234
+ }
228
235
  }
229
236
  }
230
237
  return buf;
@@ -324,6 +331,7 @@ inline unsigned char* hexTobin(unsigned char* retVal, const char *src, int size)
324
331
  return retVal;
325
332
  }
326
333
 
334
+ /** @endcond */
327
335
 
328
336
  } // namespace tdap
329
337
  } // namespace protocol
@@ -233,7 +233,7 @@ const connManager::records& connManager::getDefinedDatabaseList() const
233
233
  cp_security_ctx(thd)->skip_grants();
234
234
  SQL_Strings files;
235
235
  db_list(thd, &files);
236
- #if defined(MARIADDB_10_0) || defined(MARIADDB_10_1)
236
+ #if (defined(MARIADDB_10_0) || defined(MARIADDB_10_1))
237
237
  for (int i = 0; i < (int)files.elements(); ++i)
238
238
  appenDbList(m_records, files.at(i));
239
239
  #else
@@ -55,6 +55,7 @@ unsigned int g_lock_wait_timeout = 1;
55
55
  char* g_transaction_isolation = NULL;
56
56
  char* g_auth_type = NULL;
57
57
  unsigned int g_pipeCommSharememSize = PIPE_SHARE_MEM_SIZE;
58
+ unsigned int g_timestamp_always = 1;
58
59
  //int g_grant_apply = 0;//skip
59
60
 
60
61
 
@@ -273,6 +274,10 @@ static MYSQL_SYSVAR_STR(hs_port, g_hs_listenPort,
273
274
  NULL, "9999");
274
275
  static MYSQL_SYSVAR_INT(use_handlersocket, g_use_hs, PLUGIN_VAR_READONLY, "", 0,
275
276
  0, 0, 0, 1, 0);
277
+
278
+ static MYSQL_SYSVAR_UINT(timestamp_always, g_timestamp_always, PLUGIN_VAR_READONLY, "", 0,
279
+ 0, 1, 0, 1, 0);
280
+
276
281
  #endif
277
282
 
278
283
  /** system valiables struct.
@@ -289,6 +294,7 @@ static struct st_mysql_sys_var* g_systemVariables[] =
289
294
  MYSQL_SYSVAR(lock_wait_timeout),
290
295
  MYSQL_SYSVAR(transaction_isolation),
291
296
  MYSQL_SYSVAR(auth_type),
297
+ MYSQL_SYSVAR(timestamp_always),
292
298
  #ifdef PIPE_SERVER
293
299
  MYSQL_SYSVAR(pipe_comm_sharemem_size),
294
300
  MYSQL_SYSVAR(max_pipe_connections),
@@ -315,6 +321,7 @@ const char* get_trd_sys_var(int index)
315
321
  case TD_VAR_LOCKWAITTIMEOUT:return (const char*)&g_lock_wait_timeout;
316
322
  case TD_VAR_ISOLATION:return g_transaction_isolation;
317
323
  case TD_VAR_AUTHTYPE:return g_auth_type;
324
+ case TD_VAR_TIMESTAMPMODE:return (const char*)&g_timestamp_always;
318
325
  #ifdef PIPE_SERVER
319
326
  case TD_VAR_PIPESHAREMEMSIZE:return (const char*)&g_pipeCommSharememSize;
320
327
  case TD_VAR_MAXPIPECONNECTIONS:return (const char*)&g_maxPipeConnections;