transactd 3.1.0 → 3.2.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 (90) hide show
  1. checksums.yaml +4 -4
  2. data/bin/common/tdclc_32_3_2.dll +0 -0
  3. data/bin/common/{tdclc_64_3_1.dll → tdclc_64_3_2.dll} +0 -0
  4. data/build/swig/ruby/ruby.swg +3 -0
  5. data/build/swig/ruby/tdclrb_wrap.cpp +2413 -126
  6. data/build/swig/tdcl.i +120 -9
  7. data/build/tdclc/tdclc.cbproj +4 -1
  8. data/build/tdclc/tdclc.rc +4 -4
  9. data/build/tdclcpp/tdclcpp.rc +4 -4
  10. data/build/tdclcpp/tdclcpp_bc.cbproj +8 -1
  11. data/build/tdclrb/tdclrb.rc +4 -4
  12. data/source/bzs/db/engine/mysql/database.cpp +138 -130
  13. data/source/bzs/db/engine/mysql/database.h +43 -48
  14. data/source/bzs/db/engine/mysql/dbManager.cpp +81 -96
  15. data/source/bzs/db/engine/mysql/dbManager.h +13 -22
  16. data/source/bzs/db/engine/mysql/mysqlInternal.h +157 -291
  17. data/source/bzs/db/engine/mysql/mysqlProtocol.cpp +425 -0
  18. data/source/bzs/db/engine/mysql/mysqlProtocol.h +72 -0
  19. data/source/bzs/db/engine/mysql/mysqlThd.cpp +8 -6
  20. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +7 -3
  21. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +1 -0
  22. data/source/bzs/db/protocol/tdap/client/client.h +22 -8
  23. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +225 -21
  24. data/source/bzs/db/protocol/tdap/client/connMgr.h +42 -16
  25. data/source/bzs/db/protocol/tdap/client/database.cpp +58 -15
  26. data/source/bzs/db/protocol/tdap/client/database.h +3 -3
  27. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +93 -85
  28. data/source/bzs/db/protocol/tdap/client/dbDef.h +1 -2
  29. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +9 -5
  30. data/source/bzs/db/protocol/tdap/client/filter.h +2 -2
  31. data/source/bzs/db/protocol/tdap/client/groupComp.h +2 -2
  32. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +1 -1
  33. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +71 -12
  34. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +7 -1
  35. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +35 -2
  36. data/source/bzs/db/protocol/tdap/client/nsTable.h +1 -0
  37. data/source/bzs/db/protocol/tdap/client/recordset.cpp +5 -1
  38. data/source/bzs/db/protocol/tdap/client/recordset.h +15 -0
  39. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +21 -16
  40. data/source/bzs/db/protocol/tdap/client/serializer.cpp +32 -11
  41. data/source/bzs/db/protocol/tdap/client/serializer.h +4 -1
  42. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +3 -2
  43. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +3 -0
  44. data/source/bzs/db/protocol/tdap/client/table.cpp +18 -14
  45. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +8 -3
  46. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +1 -0
  47. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +83 -43
  48. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +3 -1
  49. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +7 -7
  50. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +247 -137
  51. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +9 -9
  52. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +1 -4
  53. data/source/bzs/db/protocol/tdap/tdapSchema.h +3 -7
  54. data/source/bzs/db/protocol/tdap/tdapcapi.h +23 -3
  55. data/source/bzs/db/protocol/tdap/uri.h +40 -0
  56. data/source/bzs/db/transactd/appModule.cpp +14 -5
  57. data/source/bzs/db/transactd/appModule.h +10 -1
  58. data/source/bzs/db/transactd/connManager.cpp +93 -48
  59. data/source/bzs/db/transactd/connManager.h +10 -7
  60. data/source/bzs/db/transactd/connectionRecord.h +114 -19
  61. data/source/bzs/env/tstring.h +2 -0
  62. data/source/bzs/example/changeSchema.cpp +1 -1
  63. data/source/bzs/example/changeSchema_c.cpp +1 -1
  64. data/source/bzs/example/insertRecords.cpp +2 -1
  65. data/source/bzs/example/insertRecords_c.cpp +2 -1
  66. data/source/bzs/example/queryData.cpp +5 -2
  67. data/source/bzs/netsvc/server/IAppModule.h +6 -0
  68. data/source/bzs/test/tdclatl/test_v3.js +75 -0
  69. data/source/bzs/test/tdclphp/transactd_v3_Test.php +104 -7
  70. data/source/bzs/test/tdclrb/transactd_v3_spec.rb +84 -0
  71. data/source/bzs/test/trdclengn/testField.h +66 -6
  72. data/source/bzs/test/trdclengn/test_tdclcpp_v3.cpp +10 -1
  73. data/source/bzs/test/trdclengn/test_trdclengn.cpp +85 -0
  74. data/source/bzs/test/trdclengn/testbase.h +1 -1
  75. data/source/global/tdclatl/BinlogPos.cpp +64 -0
  76. data/source/global/tdclatl/BinlogPos.h +84 -0
  77. data/source/global/tdclatl/ConnMgr.cpp +285 -0
  78. data/source/global/tdclatl/ConnMgr.h +83 -0
  79. data/source/global/tdclatl/ConnRecord.cpp +123 -0
  80. data/source/global/tdclatl/ConnRecord.h +69 -0
  81. data/source/global/tdclatl/ConnRecords.cpp +57 -0
  82. data/source/global/tdclatl/ConnRecords.h +55 -0
  83. data/source/global/tdclatl/Database.cpp +36 -0
  84. data/source/global/tdclatl/Database.h +4 -0
  85. data/source/global/tdclatl/Table.cpp +14 -1
  86. data/source/global/tdclatl/Table.h +1 -0
  87. data/source/global/tdclatl/resource.h +0 -0
  88. data/source/global/tdclatl/tdclatl.idl +148 -4
  89. metadata +14 -4
  90. data/bin/common/tdclc_32_3_1.dll +0 -0
@@ -18,7 +18,9 @@
18
18
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
19
  02111-1307, USA.
20
20
  ================================================================= */
21
-
21
+ #ifdef __GNUC__
22
+ #pragma interface // implementation mysqlProtocol.cpp
23
+ #endif
22
24
  #undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
23
25
  #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
24
26
 
@@ -51,19 +53,28 @@
51
53
  #include <my_config.h>
52
54
  #include <mysql_version.h>
53
55
 
54
- #if defined(MARIADB_BASE_VERSION) && (MYSQL_VERSION_ID > 100107)
55
- # define MARIADDB_10_1 MYSQL_VERSION_ID
56
- #else
57
- # if defined(MARIADB_BASE_VERSION) && (MYSQL_VERSION_ID > 100000)
58
- # define MARIADDB_10_0 MYSQL_VERSION_ID
59
- # endif
56
+ #if defined(MARIADB_BASE_VERSION)
57
+ # if (MYSQL_VERSION_ID > 100107)
58
+ # define MARIADB_10_1 MYSQL_VERSION_ID
59
+ # elif (MYSQL_VERSION_ID > 100000)
60
+ # define MARIADB_10_0 MYSQL_VERSION_ID
61
+ # else
62
+ # define MARIADB_5_5 MYSQL_VERSION_ID
63
+ # endif
64
+ #else
65
+ # if (MYSQL_VERSION_ID > 50700)
66
+ # define MYSQL_5_7 MYSQL_VERSION_ID
67
+ # elif (MYSQL_VERSION_ID > 50600)
68
+ # define MYSQL_5_6 MYSQL_VERSION_ID
69
+ # else
70
+ # define MYSQL_5_5 MYSQL_VERSION_ID
71
+ # endif
60
72
  #endif
61
73
 
62
-
63
74
  #include <sql/sql_const.h>
64
75
  #include "my_global.h"
65
76
  #include <math.h>
66
- #if ((MYSQL_VERSION_ID > 50700) && !defined(MARIADB_BASE_VERSION))
77
+ #if defined(MYSQL_5_7)
67
78
  // Not use malloc service
68
79
  #define MYSQL_SERVICE_MYSQL_ALLOC_INCLUDED
69
80
  typedef unsigned int PSI_memory_key;
@@ -78,15 +89,15 @@ extern "C" {
78
89
  extern char * my_strndup(PSI_memory_key key, const char *from, size_t length, myf_t flags);
79
90
  }
80
91
  #include "sql/log.h"
81
- #endif //For MYSQL 5.7
92
+ #endif //MYSQL_5_7
82
93
 
83
94
  #include "sql/sql_class.h"
84
95
  #include <mysql/plugin.h>
85
96
  #include "sql/mysqld.h"
86
97
 
87
- #if ((MYSQL_VERSION_ID >= 50600) && (MYSQL_VERSION_ID < 50700) && !defined(MARIADB_BASE_VERSION))
98
+ #if defined(MYSQL_5_6)
88
99
  #include "sql/global_threads.h"
89
- #endif
100
+ #endif //MYSQL_5_6
90
101
 
91
102
  #include "sql/sql_plugin.h"
92
103
  #include "sql/sql_cache.h"
@@ -101,6 +112,7 @@ extern "C" {
101
112
  #include "sql/sql_base.h"
102
113
  #include "sql/sql_parse.h"
103
114
  #include "sql/sql_table.h"
115
+ #include "sql/handler.h"
104
116
  #include "sql/sql_db.h"
105
117
  #include "sql_acl.h"
106
118
  #include "sql/sql_show.h"
@@ -109,7 +121,7 @@ extern "C" {
109
121
 
110
122
  /* mysql.user password field index */
111
123
  #ifndef MYSQL_USER_FIELD_PASSWORD
112
- # if ((MYSQL_VERSION_ID > 50700) && !defined(MARIADB_BASE_VERSION))
124
+ # if defined(MYSQL_5_7)
113
125
  # define MYSQL_USER_FIELD_PASSWORD 40
114
126
  # else
115
127
  # define MYSQL_USER_FIELD_PASSWORD 2
@@ -162,7 +174,7 @@ extern "C" {
162
174
  #define cp_master_accsess() master_access
163
175
  #define cp_priv_host() priv_host
164
176
  #define cp_priv_user() priv_user
165
- #elif((MYSQL_VERSION_NUM > 50700) && !defined(MARIADB_BASE_VERSION)) // MySQL 5.7
177
+ #elif (defined(MYSQL_5_7))
166
178
  #define cp_get_sql_error() get_stmt_da()->mysql_errno()
167
179
  #define query_cache_invalidate3(A, B, C) query_cache.invalidate(A, B, C)
168
180
  #define cp_isOk() get_stmt_da()->is_ok()
@@ -171,7 +183,7 @@ extern "C" {
171
183
  #define cp_master_accsess() master_access()
172
184
  #define cp_priv_host() host().str
173
185
  #define cp_priv_user() user().str
174
- #else // MySQL 5.6 Mariadb 10.0
186
+ #else // MySQL 5.6 Mariadb 10.0 10.1
175
187
  #define cp_get_sql_error() get_stmt_da()->sql_errno()
176
188
  #define cp_isOk() get_stmt_da()->is_ok()
177
189
  #define cp_set_overwrite_status(A) get_stmt_da()->set_overwrite_status(A)
@@ -182,7 +194,7 @@ extern "C" {
182
194
 
183
195
  #endif
184
196
 
185
- #if (MYSQL_VERSION_NUM < 50600) // MySQL 5.5 Only
197
+ #if defined(MYSQL_5_5)
186
198
  #define ha_index_next index_next
187
199
  #define ha_index_prev index_prev
188
200
  #define ha_index_first index_first
@@ -204,22 +216,13 @@ extern "C" {
204
216
  # endif
205
217
  #endif
206
218
 
207
- #if ((MYSQL_VERSION_NUM < 50600) || defined(MARIADB_BASE_VERSION))
219
+ #if ((MYSQL_VERSION_NUM < 50600) || defined(MARIADB_BASE_VERSION)) //MySQL 5.5 Mariadb 5.5 10.0 10.1
208
220
 
209
- inline void add_global_thread(THD* thd)
210
- {
211
- ;
212
- }
221
+ inline void add_global_thread(THD* thd) {}
213
222
 
214
- inline void remove_global_thread(THD* thd)
215
- {
216
- ;
217
- }
223
+ inline void remove_global_thread(THD* thd) {}
218
224
 
219
- inline void cp_thd_release_resources(THD* thd)
220
- {
221
- ;
222
- }
225
+ inline void cp_thd_release_resources(THD* thd) {}
223
226
 
224
227
  inline void cp_restore_globals(THD* thd)
225
228
  {
@@ -227,20 +230,14 @@ inline void cp_restore_globals(THD* thd)
227
230
  my_pthread_setspecific_ptr(THR_MALLOC, 0);
228
231
  }
229
232
 
230
- inline void cp_thd_set_read_only(THD* thd, bool v)
231
- {
232
- ;
233
- }
233
+ inline void cp_thd_set_read_only(THD* thd, bool v) {}
234
234
 
235
- inline bool cp_thd_get_global_read_only(THD* thd)
236
- {
237
- return false;
238
- }
235
+ inline bool cp_thd_get_global_read_only(THD* thd) { return false; }
239
236
 
240
237
  inline bool cp_open_table(THD* thd, TABLE_LIST* tables,
241
238
  Open_table_context* ot_act)
242
239
  {
243
- #if defined(MARIADDB_10_1)
240
+ #if defined(MARIADB_10_1)
244
241
  return open_table(thd, tables, ot_act);
245
242
  #else
246
243
  return open_table(thd, tables, thd->mem_root, ot_act);
@@ -248,7 +245,6 @@ inline bool cp_open_table(THD* thd, TABLE_LIST* tables,
248
245
  }
249
246
  #define set_mysys_var(A)
250
247
 
251
-
252
248
  inline bool cp_has_insert_default_function(Field* fd)
253
249
  {
254
250
  return fd->unireg_check == Field::TIMESTAMP_DN_FIELD ||
@@ -288,7 +284,7 @@ inline unsigned char* cp_null_ptr(Field* fd, unsigned char* /*record*/)
288
284
  return (unsigned char*)fd->null_ptr;
289
285
  }
290
286
 
291
- #else
287
+ #else // MySQL 5.6. 5.7
292
288
 
293
289
  inline void cp_thd_release_resources(THD* thd)
294
290
  {
@@ -349,17 +345,17 @@ inline unsigned char* cp_null_ptr(Field* fd, unsigned char* record)
349
345
  return fd->null_offset() + record;
350
346
  }
351
347
 
352
- #endif
348
+ #endif // MySQL 5.6. 5.7
353
349
 
354
350
  #if (MYSQL_VERSION_NUM < 50611)
355
351
  #define ha_index_read_map index_read_map
356
352
  #endif
357
353
 
358
-
359
354
  extern unsigned int g_openDatabases;
360
- #if((MYSQL_VERSION_NUM > 50700) && !defined(MARIADB_BASE_VERSION))
361
- #define OPEN_TABLE_FLAG_TYPE 0
362
355
 
356
+ #if (defined(MYSQL_5_7))
357
+
358
+ #define OPEN_TABLE_FLAG_TYPE 0
363
359
  #define td_malloc(A, B) my_malloc(PSI_NOT_INSTRUMENTED, A, B)
364
360
  #define td_realloc(A, B, C) my_realloc(PSI_NOT_INSTRUMENTED, A, B, C)
365
361
  #define td_strdup(A, B) my_strdup(PSI_NOT_INSTRUMENTED, A, B)
@@ -378,10 +374,8 @@ inline void releaseTHD(THD* thd)
378
374
  }
379
375
  #else
380
376
 
381
- inline void releaseTHD(THD* thd)
382
- {
383
- delete thd;
384
- }
377
+ inline void releaseTHD(THD* thd) { delete thd; }
378
+
385
379
  #endif
386
380
 
387
381
  #include <boost/thread/mutex.hpp>
@@ -411,6 +405,11 @@ inline Security_context* cp_security_ctx(THD* thd)
411
405
  return thd->security_context();
412
406
  }
413
407
 
408
+ inline ulong cp_masterAccess(THD* thd)
409
+ {
410
+ return thd->security_context()->master_access();
411
+ }
412
+
414
413
  inline int cp_record_count(handler* file, ha_rows* rows)
415
414
  {
416
415
  return file->ha_records(rows);
@@ -418,7 +417,7 @@ inline int cp_record_count(handler* file, ha_rows* rows)
418
417
 
419
418
  #define cp_strdup(A, B) my_strdup(PSI_INSTRUMENT_ME, (A), (B))
420
419
  #define cp_set_mysys_var(A) set_mysys_thread_var(A)
421
- inline void cp_set_db(THD* thd, char* p)
420
+ inline void cp_set_db(THD* thd, const char* p)
422
421
  {
423
422
  thd->set_db(to_lex_cstring(p));
424
423
  }
@@ -435,10 +434,7 @@ inline int cp_thread_set_THR_THD(THD* thd)
435
434
  return 0;
436
435
  }
437
436
 
438
- inline void cp_set_transaction_duration_for_all_locks(THD* /*thd*/)
439
- {
440
- ;
441
- }
437
+ inline void cp_set_transaction_duration_for_all_locks(THD* /*thd*/) {}
442
438
 
443
439
  inline void cp_set_mdl_request_types(TABLE_LIST& tables, short mode)
444
440
  {
@@ -454,10 +450,7 @@ inline void cp_set_mdl_request_types(TABLE_LIST& tables, short mode)
454
450
  tables.mdl_request.duration = MDL_TRANSACTION;
455
451
  }
456
452
 
457
- inline void cp_open_error_release(THD* /*thd*/, TABLE_LIST& /*tables*/)
458
- {
459
- ;
460
- }
453
+ inline void cp_open_error_release(THD* /*thd*/, TABLE_LIST& /*tables*/){}
461
454
 
462
455
  inline bool cp_query_command(THD* thd, char* str)
463
456
  {
@@ -472,19 +465,28 @@ inline void cp_lex_clear(THD* thd)
472
465
  thd->lex->reset();
473
466
  }
474
467
 
468
+ inline TABLE_SHARE* cp_get_cached_table_share(THD* thd, const char *db, const char *name)
469
+ {
470
+ return get_cached_table_share(thd, db, name);
471
+ }
472
+
473
+ inline int cp_store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
474
+ HA_CREATE_INFO *create_info_arg, int with_db_name)
475
+ {
476
+ return store_create_info(thd, table_list, packet, create_info_arg, with_db_name!=0);
477
+ }
478
+
475
479
 
476
480
  #else //Not MySQL 5.7
477
- #define OPEN_TABLE_FLAG_TYPE MYSQL_OPEN_GET_NEW_TABLE
478
481
 
482
+ #define OPEN_TABLE_FLAG_TYPE MYSQL_OPEN_GET_NEW_TABLE
479
483
  #define td_malloc(A, B) my_malloc(A, B)
480
484
  #define td_realloc(A, B, C) my_realloc(A, B, C)
481
485
  #define td_strdup(A, B) my_strdup(A, B)
482
486
  #define td_free(A) my_free(A)
483
487
 
484
- inline void releaseTHD(THD* thd)
485
- {
486
- delete thd;
487
- }
488
+ inline void releaseTHD(THD* thd) { delete thd; }
489
+
488
490
  inline void cp_set_new_thread_id(THD* thd)
489
491
  {
490
492
  mysql_mutex_lock(&LOCK_thread_count);
@@ -494,6 +496,7 @@ inline void cp_set_new_thread_id(THD* thd)
494
496
  mysql_mutex_unlock(&LOCK_thread_count);
495
497
  thd->thread_id = thd->variables.pseudo_thread_id;
496
498
  }
499
+
497
500
  inline void cp_dec_dbcount(THD* thd)
498
501
  {
499
502
  mysql_mutex_lock(&LOCK_thread_count);
@@ -501,23 +504,29 @@ inline void cp_dec_dbcount(THD* thd)
501
504
  mysql_mutex_unlock(&LOCK_thread_count);
502
505
  remove_global_thread(thd);
503
506
  }
507
+
504
508
  inline Security_context* cp_security_ctx(THD* thd)
505
509
  {
506
510
  return thd->security_ctx;
507
511
  }
508
512
 
513
+ inline ulong cp_masterAccess(THD* thd)
514
+ {
515
+ return thd->security_ctx->master_access;
516
+ }
517
+
509
518
  inline int cp_record_count(handler* file, ha_rows* rows)
510
519
  {
511
520
  *rows = file->records();
512
521
  return 0;
513
522
  }
523
+
514
524
  #define cp_strdup(A, B) my_strdup((A), (B))
515
525
  #define cp_set_mysys_var(A) set_mysys_var(A)
516
526
 
517
- inline void cp_set_db(THD* thd, char* p)
527
+ inline void cp_set_db(THD* thd, const char* p)
518
528
  {
519
- td_free(thd->db);
520
- thd->db = p;
529
+ thd->set_db(p, strlen(p));
521
530
  }
522
531
 
523
532
  inline THD* cp_thread_get_THR_THD()
@@ -531,9 +540,7 @@ inline int cp_thread_set_THR_THD(THD* thd)
531
540
  return 0;
532
541
  }
533
542
 
534
- inline void cp_set_transaction_duration_for_all_locks(THD* thd)
535
- {
536
- }
543
+ inline void cp_set_transaction_duration_for_all_locks(THD* thd) {}
537
544
 
538
545
  inline void cp_set_mdl_request_types(TABLE_LIST& tables, short mode)
539
546
  {
@@ -549,10 +556,7 @@ inline void cp_set_mdl_request_types(TABLE_LIST& tables, short mode)
549
556
  tables.mdl_request.duration = MDL_TRANSACTION;
550
557
  }
551
558
 
552
- inline void cp_open_error_release(THD* thd, TABLE_LIST& tables)
553
- {
554
-
555
- }
559
+ inline void cp_open_error_release(THD* thd, TABLE_LIST& tables) {}
556
560
 
557
561
  inline bool cp_query_command(THD* thd, char* str)
558
562
  {
@@ -564,15 +568,93 @@ inline void cp_lex_clear(THD* thd)
564
568
  thd->lex->many_values.empty();
565
569
  }
566
570
 
571
+ #if defined(MARIADB_10_1) || defined(MARIADB_10_0)
572
+ #define NO_LOCK_OPEN
573
+ inline TABLE_SHARE* cp_get_cached_table_share(THD* thd, const char *db, const char *name)
574
+ {
575
+ return tdc_acquire_share(thd, db, name, GTS_VIEW |GTS_TABLE );
576
+ }
577
+ inline void cp_tdc_release_share(TABLE_SHARE* s)
578
+ {
579
+ tdc_release_share(s);
580
+ }
581
+
582
+ #if defined(MARIADB_10_1)
583
+ inline int cp_store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
584
+ void *create_info_arg, int with_db_name)
585
+ {
586
+ return show_create_table(thd, table_list, packet,
587
+ (Table_specification_st*)create_info_arg, (enum_with_db_name) with_db_name);
588
+ }
589
+ #elif (MARIADB_10_0 >= 100013)
590
+ inline int cp_store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
591
+ void *create_info_arg, int with_db_name)
592
+ {
593
+ return show_create_table(thd, table_list, packet,
594
+ (HA_CREATE_INFO*)create_info_arg, (enum_with_db_name) with_db_name);
595
+ }
596
+ #else //Mariadb 10.0.9 - .12
597
+ inline int cp_store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
598
+ HA_CREATE_INFO* create_info_arg, int with_db_name)
599
+ {
600
+ return store_create_info(thd, table_list, packet, create_info_arg, with_db_name!=0, FALSE);
601
+ }
602
+
603
+ #endif
604
+ #else // Not MARIADB_10_1 || MARIADB_10_0
605
+
606
+
607
+ inline TABLE_SHARE* cp_get_cached_table_share(THD* /*thd*/, const char *db, const char *name)
608
+ {
609
+ return get_cached_table_share(db, name);
610
+ }
611
+ inline int cp_store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
612
+ HA_CREATE_INFO *create_info_arg, int with_db_name)
613
+ {
614
+ return store_create_info(thd, table_list, packet, create_info_arg, with_db_name!=0);
615
+ }
616
+
617
+ #endif // Not MARIADB_10_1 || MARIADB_10_0
618
+
619
+ #endif // Not MySQL 5.7
620
+
621
+
622
+ #if (MYSQL_VERSION_ID < 50600) || defined(MARIADB_10_0)
623
+ #if defined(MARIADB_10_0)
624
+ inline bool cp_tdc_open_view(THD *thd, TABLE_LIST *table_list, const char *alias,
625
+ const char *cache_key, uint cache_key_length, uint flags)
626
+ {
627
+ return tdc_open_view(thd, table_list, alias, cache_key , cache_key_length, thd->mem_root, flags);
628
+ }
629
+ #else
630
+ inline bool cp_tdc_open_view(THD *thd, TABLE_LIST *table_list, const char *alias,
631
+ const char *cache_key, uint cache_key_length, uint flags)
632
+ {
633
+ return tdc_open_view(thd, table_list, alias, (char *)cache_key , cache_key_length, thd->mem_root, flags);
634
+ }
635
+ #endif
636
+ #else
637
+ #define cp_tdc_open_view tdc_open_view
567
638
  #endif
568
639
 
640
+ #if (MYSQL_VERSION_ID < 50600)
641
+ inline uint cp_get_table_def_key(THD *thd, TABLE_LIST* tables, const char** key)
642
+ {
643
+ return create_table_def_key(thd, (char *)*key, tables, 0);
644
+ }
645
+ #else
646
+ inline uint cp_get_table_def_key(THD *thd, TABLE_LIST* tables, const char** key)
647
+ {
648
+ return (uint)get_table_def_key(tables, key);
649
+ }
650
+ #endif
569
651
  /* find_files is static function in maridb.
570
652
  make_db_list function is not static, but it is not list in sql_show.h.
571
653
  */
572
654
 
573
- #if (defined(MARIADDB_10_0) || defined(MARIADDB_10_1))
655
+ #if (defined(MARIADB_10_0) || defined(MARIADB_10_1))
574
656
  typedef Dynamic_array<LEX_STRING*> SQL_Strings;
575
- #if (!defined(MARIADDB_10_1))
657
+ #if (!defined(MARIADB_10_1))
576
658
  typedef struct st_lookup_field_values
577
659
  {
578
660
  LEX_STRING db_value, table_value;
@@ -607,7 +689,7 @@ inline void cp_lex_clear(THD* thd)
607
689
  #endif
608
690
 
609
691
 
610
- #if (defined(MARIADDB_10_1) && MARIADDB_10_1 > 100108)
692
+ #if (defined(MARIADB_10_1) && MARIADB_10_1 > 100108)
611
693
  inline void cp_setup_rpl_bitmap(TABLE* table)
612
694
  {
613
695
  bitmap_set_all(table->write_set);
@@ -636,220 +718,4 @@ public:
636
718
  }
637
719
  };
638
720
 
639
-
640
- // REPL_POS_TYPE
641
- #include <bzs/env/compiler.h>
642
- pragma_pack1;
643
- #define BINLOGNAME_SIZE 119
644
- #define GTID_SIZE 64
645
-
646
- struct binlogPos
647
- {
648
- my_off_t pos;
649
- char type;
650
- char filename[BINLOGNAME_SIZE];
651
- char gtid[GTID_SIZE];
652
- };
653
- pragma_pop;
654
- #define REPL_POSTYPE_MARIA_GTID 1 // see tdapapi.h
655
- #define REPL_POSTYPE_POS 2 // see tdapapi.h
656
-
657
-
658
- #if (MYSQL_VERSION_ID > 100000)
659
- # define USE_BINLOG_GTID 1 // like 0-1-50
660
- #elif (!defined(_WIN32) || MYSQL_VERSION_ID > 50700 || MYSQL_VERSION_ID < 50600) // Linux or MySQL 5.5 5.7
661
- # define USE_BINLOG_VAR 1
662
- # if (!defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 50600)
663
- # include "sql/binlog.h"
664
- # endif
665
-
666
- #else // MySQL 5.6 on windows
667
- // On windows MySQL 5.6 can not access mysql_bin_log variable
668
- # define NOTUSE_BINLOG_VAR 1
669
-
670
- #if (MYSQL_VERSION_ID > 50700)
671
- # define Protocol_mysql Protocol
672
- # include "sql/rpl_master.h"
673
- # define CP_PROTOCOL PROTOCOL_PLUGIN
674
- #else
675
- # define Protocol_mysql Protocol
676
- # define CP_PROTOCOL PROTOCOL_BINARY
677
- #endif //(MYSQL_VERSION_ID > 50700)
678
-
679
- class dummyProtocol : public Protocol_mysql
680
- {
681
- THD* m_thd;
682
- public:
683
- #if (MYSQL_VERSION_ID > 50700)
684
- inline dummyProtocol(THD *thd_arg) : Protocol_mysql()
685
- {
686
- m_thd = thd_arg;
687
- thd_arg->set_protocol(this);
688
- }
689
- inline virtual ~dummyProtocol(){}
690
- #else
691
- inline dummyProtocol(THD *thd_arg) : Protocol_mysql(thd_arg)
692
- {
693
- thd_arg->protocol = this;
694
- }
695
- inline virtual ~dummyProtocol(){}
696
- #endif
697
- bool send_result_set_metadata(List<Item> *list, uint flags){return false;}
698
- virtual bool write(){return false;};
699
- virtual void prepare_for_resend(){}
700
- virtual bool store_null(){return false;}
701
- virtual bool store_tiny(longlong from){return false;}
702
- virtual bool store_short(longlong from){return false;}
703
- virtual bool store_long(longlong from){return false;}
704
- virtual bool store_longlong(longlong from, bool unsigned_flag){return false;}
705
- virtual bool store_decimal(const my_decimal *){return false;}
706
- virtual bool store(const char *from, size_t length,
707
- const CHARSET_INFO *fromcs,
708
- const CHARSET_INFO *tocs){return false;}
709
- virtual bool store(float from, uint32 decimals, String *buffer){return false;}
710
- virtual bool store(double from, uint32 decimals, String *buffer){return false;}
711
- virtual bool store(MYSQL_TIME *time, uint precision){return false;}
712
- virtual bool store_date(MYSQL_TIME *time){return false;}
713
- virtual bool store_time(MYSQL_TIME *time, uint precision){return false;}
714
- virtual bool store(Field *field){return false;}
715
- virtual bool send_out_parameters(List<Item_param> *sp_params){return false;}
716
- virtual Protocol::enum_protocol_type type(void){ return CP_PROTOCOL; };
717
- #ifdef MARIADB_BASE_VERSION //Mariadb 5.5
718
- virtual bool store(MYSQL_TIME *time, int decimals){return false;}
719
- virtual bool store_time(MYSQL_TIME *time, int decimals){ return false;}
720
- #elif (MYSQL_VERSION_ID < 50600) // MySQL 5.5
721
- virtual bool store_time(MYSQL_TIME *time){return true;};
722
- virtual bool store(MYSQL_TIME *time){return true;}
723
- virtual bool store(const char *from, size_t length,
724
- CHARSET_INFO *fromcs, CHARSET_INFO *tocs){return false;}
725
- #elif (MYSQL_VERSION_ID > 50700) // MySQL 5.7
726
- bool store_decimal(const my_decimal *, uint, uint){ return true; }
727
- bool store(Proto_field *){ return true; }
728
- void start_row(){}
729
- int read_packet(void){ return 0; }
730
- int get_command(COM_DATA *, enum_server_command *){ return m_thd->lex->sql_command; }
731
- enum_vio_type connection_type(void){ return VIO_TYPE_PLUGIN; }
732
- ulong get_client_capabilities(void){ return 0; }
733
- bool has_client_capability(unsigned long){ return false; }
734
- bool connection_alive(void){ return false; }
735
- bool end_row(void){ return false; }
736
- void abort_row(void){}
737
- void end_partial_result_set(void){}
738
- int shutdown(bool){ return 0; }
739
- SSL_handle get_ssl(void){ return NULL; }
740
- uint get_rw_status(void){ return 0; }
741
- bool get_compression(void){ return false; }
742
- bool start_result_metadata(uint, uint, const CHARSET_INFO *){ return false; }
743
- bool send_field_metadata(Send_field *, const CHARSET_INFO *){ return false; }
744
- bool end_result_metadata(void){ return false; }
745
- bool send_ok(uint, uint, ulonglong, ulonglong, const char *){ return false; }
746
- bool send_eof(uint, uint){ return false; }
747
- bool send_error(uint, const char *, const char *){ return false; }
748
- #endif
749
- };
750
-
751
- class masterStatus : public dummyProtocol
752
- {
753
- binlogPos* m_bpos;
754
- bool m_writed;
755
- public:
756
- inline masterStatus(THD *thd_arg, binlogPos* bpos) :
757
- dummyProtocol(thd_arg), m_bpos(bpos), m_writed(false) {}
758
- bool store_longlong(longlong from, bool unsigned_flag)
759
- {
760
- m_bpos->pos = (ulonglong)from;
761
- m_bpos->type = REPL_POSTYPE_POS;
762
- return false;
763
- }
764
-
765
- #if (MYSQL_VERSION_ID < 50600 || defined(MARIADB_BASE_VERSION)) // MySQL 5.5
766
- bool store(const char *from, size_t length, CHARSET_INFO *cs)
767
- {
768
- if (!m_writed)
769
- {
770
- strncpy(m_bpos->filename, from, BINLOGNAME_SIZE);
771
- m_writed = true;
772
- }
773
- return false;
774
- }
775
- #else
776
- bool store(const char *from, size_t length,
777
- const CHARSET_INFO *cs)
778
- {
779
- if (!m_writed)
780
- {
781
- strncpy(m_bpos->filename, from, BINLOGNAME_SIZE);
782
- m_writed = true;
783
- }
784
- return false;
785
- }
786
- #endif
787
- };
788
-
789
- #endif // NOTUSE_BINLOG_VAR
790
-
791
- class safe_commit_lock
792
- {
793
- THD* m_thd;
794
- MDL_ticket* m_commits_lock;
795
- public:
796
- safe_commit_lock(THD* thd): m_thd(thd), m_commits_lock(NULL){}
797
- bool lock()
798
- {
799
- if (m_thd)
800
- {
801
- MDL_request mdl_request;
802
- #if ((MYSQL_VERSION_NUM > 50700) && !defined(MARIADB_BASE_VERSION))
803
- mdl_request.init_with_source(MDL_key::COMMIT, "", "", MDL_SHARED, MDL_EXPLICIT, __FILE__, __LINE__);
804
- #else
805
- mdl_request.init(MDL_key::COMMIT, "", "", MDL_SHARED, MDL_EXPLICIT);
806
- #endif
807
- if (m_thd->mdl_context.acquire_lock(&mdl_request,
808
- m_thd->variables.lock_wait_timeout))
809
- return false;
810
- m_commits_lock = mdl_request.ticket;
811
- }
812
- return true;
813
- }
814
- ~safe_commit_lock()
815
- {
816
- if (m_commits_lock)
817
- {
818
- m_thd->mdl_context.release_lock(m_commits_lock);
819
- m_commits_lock= NULL;
820
- }
821
- }
822
- };
823
-
824
- /*
825
- class safe_global_read_lock
826
- {
827
- THD* m_thd;
828
- public:
829
- safe_global_read_lock(THD* thd): m_thd(thd){}
830
- bool lock()
831
- {
832
- if (m_thd->global_read_lock.lock_global_read_lock(m_thd))
833
- {
834
- m_thd = NULL;
835
- return false;
836
- }
837
- #ifdef NOTUSE_BINLOG_VAR
838
- close_cached_tables(NULL, NULL, FALSE , 50000000L);
839
- if (m_thd->global_read_lock.make_global_read_lock_block_commit(m_thd))
840
- {
841
- m_thd->global_read_lock.unlock_global_read_lock(m_thd);
842
- m_thd = NULL;
843
- return false;
844
- }
845
- #endif
846
- return true;
847
- }
848
- ~safe_global_read_lock()
849
- {
850
- if (m_thd)
851
- m_thd->global_read_lock.unlock_global_read_lock(m_thd);
852
- }
853
- };*/
854
-
855
721
  #endif // BZS_DB_ENGINE_MYSQL_MYSQLINTERNAL_H