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