35
35
36
36
extern handlerton *spider_hton_ptr;
37
37
38
+ /* *
39
+ Insert a Spider system table row.
40
+
41
+ @param table The spider system table.
42
+ @param do_handle_error TRUE if an error message should be printed
43
+ before returning.
44
+
45
+ @return Error code returned by the write.
46
+ */
47
+
48
+ inline int spider_write_sys_table_row (TABLE *table, bool do_handle_error = TRUE )
49
+ {
50
+ int error_num;
51
+ THD *thd = table->in_use ;
52
+
53
+ tmp_disable_binlog (thd); /* Do not replicate the low-level changes. */
54
+ error_num = table->file ->ha_write_row (table->record [0 ]);
55
+ reenable_binlog (thd);
56
+
57
+ if (error_num && do_handle_error)
58
+ table->file ->print_error (error_num, MYF (0 ));
59
+
60
+ return error_num;
61
+ }
62
+
63
+ /* *
64
+ Update a Spider system table row.
65
+
66
+ @param table The spider system table.
67
+
68
+ @return Error code returned by the update.
69
+ */
70
+
71
+ inline int spider_update_sys_table_row (TABLE *table)
72
+ {
73
+ int error_num;
74
+ THD *thd = table->in_use ;
75
+
76
+ tmp_disable_binlog (thd); /* Do not replicate the low-level changes. */
77
+ error_num = table->file ->ha_update_row (table->record [1 ], table->record [0 ]);
78
+ reenable_binlog (thd);
79
+
80
+ if (error_num)
81
+ {
82
+ if (error_num == HA_ERR_RECORD_IS_THE_SAME)
83
+ error_num = 0 ;
84
+ else
85
+ table->file ->print_error (error_num, MYF (0 ));
86
+ }
87
+
88
+ return error_num;
89
+ }
90
+
91
+ /* *
92
+ Delete a Spider system table row.
93
+
94
+ @param table The spider system table.
95
+ @param record_number Location of the record: 0 or 1.
96
+ @param do_handle_error TRUE if an error message should be printed
97
+ before returning.
98
+
99
+ @return Error code returned by the update.
100
+ */
101
+
102
+ inline int spider_delete_sys_table_row (TABLE *table, int record_number = 0 ,
103
+ bool do_handle_error = TRUE )
104
+ {
105
+ int error_num;
106
+ THD *thd = table->in_use ;
107
+
108
+ tmp_disable_binlog (thd); /* Do not replicate the low-level changes. */
109
+ error_num = table->file ->ha_delete_row (table->record [record_number]);
110
+ reenable_binlog (thd);
111
+
112
+ if (error_num && do_handle_error)
113
+ table->file ->print_error (error_num, MYF (0 ));
114
+
115
+ return error_num;
116
+ }
117
+
38
118
#if MYSQL_VERSION_ID < 50500
39
119
TABLE *spider_open_sys_table (
40
120
THD *thd,
@@ -983,11 +1063,8 @@ int spider_insert_xa(
983
1063
table->use_all_columns ();
984
1064
spider_store_xa_bqual_length (table, xid);
985
1065
spider_store_xa_status (table, status);
986
- if ((error_num = table->file ->ha_write_row (table->record [0 ])))
987
- {
988
- table->file ->print_error (error_num, MYF (0 ));
1066
+ if ((error_num = spider_write_sys_table_row (table)))
989
1067
DBUG_RETURN (error_num);
990
- }
991
1068
} else {
992
1069
my_message (ER_SPIDER_XA_EXISTS_NUM, ER_SPIDER_XA_EXISTS_STR, MYF (0 ));
993
1070
DBUG_RETURN (ER_SPIDER_XA_EXISTS_NUM);
@@ -1017,11 +1094,8 @@ int spider_insert_xa_member(
1017
1094
}
1018
1095
table->use_all_columns ();
1019
1096
spider_store_xa_member_info (table, xid, conn);
1020
- if ((error_num = table->file ->ha_write_row (table->record [0 ])))
1021
- {
1022
- table->file ->print_error (error_num, MYF (0 ));
1097
+ if ((error_num = spider_write_sys_table_row (table)))
1023
1098
DBUG_RETURN (error_num);
1024
- }
1025
1099
} else {
1026
1100
my_message (ER_SPIDER_XA_MEMBER_EXISTS_NUM, ER_SPIDER_XA_MEMBER_EXISTS_STR,
1027
1101
MYF (0 ));
@@ -1051,11 +1125,8 @@ int spider_insert_tables(
1051
1125
SPIDER_LINK_STATUS_NO_CHANGE ?
1052
1126
share->alter_table .tmp_link_statuses [roop_count] :
1053
1127
SPIDER_LINK_STATUS_OK);
1054
- if ((error_num = table->file ->ha_write_row (table->record [0 ])))
1055
- {
1056
- table->file ->print_error (error_num, MYF (0 ));
1128
+ if ((error_num = spider_write_sys_table_row (table)))
1057
1129
DBUG_RETURN (error_num);
1058
- }
1059
1130
}
1060
1131
1061
1132
DBUG_RETURN (0 );
@@ -1077,11 +1148,8 @@ int spider_log_tables_link_failed(
1077
1148
if (table->field [3 ] == table->timestamp_field )
1078
1149
table->timestamp_field ->set_time ();
1079
1150
#endif
1080
- if ((error_num = table->file ->ha_write_row (table->record [0 ])))
1081
- {
1082
- table->file ->print_error (error_num, MYF (0 ));
1151
+ if ((error_num = spider_write_sys_table_row (table)))
1083
1152
DBUG_RETURN (error_num);
1084
- }
1085
1153
DBUG_RETURN (0 );
1086
1154
}
1087
1155
@@ -1115,11 +1183,8 @@ int spider_log_xa_failed(
1115
1183
if (table->field [20 ] == table->timestamp_field )
1116
1184
table->timestamp_field ->set_time ();
1117
1185
#endif
1118
- if ((error_num = table->file ->ha_write_row (table->record [0 ])))
1119
- {
1120
- table->file ->print_error (error_num, MYF (0 ));
1186
+ if ((error_num = spider_write_sys_table_row (table)))
1121
1187
DBUG_RETURN (error_num);
1122
- }
1123
1188
DBUG_RETURN (0 );
1124
1189
}
1125
1190
@@ -1148,14 +1213,8 @@ int spider_update_xa(
1148
1213
store_record (table, record[1 ]);
1149
1214
table->use_all_columns ();
1150
1215
spider_store_xa_status (table, status);
1151
- if (
1152
- (error_num = table->file ->ha_update_row (
1153
- table->record [1 ], table->record [0 ])) &&
1154
- error_num != HA_ERR_RECORD_IS_THE_SAME
1155
- ) {
1156
- table->file ->print_error (error_num, MYF (0 ));
1216
+ if ((error_num = spider_update_sys_table_row (table)))
1157
1217
DBUG_RETURN (error_num);
1158
- }
1159
1218
}
1160
1219
1161
1220
DBUG_RETURN (0 );
@@ -1188,14 +1247,8 @@ int spider_update_tables_name(
1188
1247
store_record (table, record[1 ]);
1189
1248
table->use_all_columns ();
1190
1249
spider_store_tables_name (table, to, strlen (to));
1191
- if (
1192
- (error_num = table->file ->ha_update_row (
1193
- table->record [1 ], table->record [0 ])) &&
1194
- error_num != HA_ERR_RECORD_IS_THE_SAME
1195
- ) {
1196
- table->file ->print_error (error_num, MYF (0 ));
1250
+ if ((error_num = spider_update_sys_table_row (table)))
1197
1251
DBUG_RETURN (error_num);
1198
- }
1199
1252
}
1200
1253
roop_count++;
1201
1254
}
@@ -1239,11 +1292,8 @@ int spider_update_tables_priority(
1239
1292
SPIDER_LINK_STATUS_NO_CHANGE ?
1240
1293
alter_table->tmp_link_statuses [roop_count] :
1241
1294
SPIDER_LINK_STATUS_OK);
1242
- if ((error_num = table->file ->ha_write_row (table->record [0 ])))
1243
- {
1244
- table->file ->print_error (error_num, MYF (0 ));
1295
+ if ((error_num = spider_write_sys_table_row (table)))
1245
1296
DBUG_RETURN (error_num);
1246
- }
1247
1297
roop_count++;
1248
1298
} while (roop_count < (int ) alter_table->all_link_count );
1249
1299
DBUG_RETURN (0 );
@@ -1259,14 +1309,8 @@ int spider_update_tables_priority(
1259
1309
spider_store_tables_connect_info (table, alter_table, roop_count);
1260
1310
spider_store_tables_link_status (table,
1261
1311
alter_table->tmp_link_statuses [roop_count]);
1262
- if (
1263
- (error_num = table->file ->ha_update_row (
1264
- table->record [1 ], table->record [0 ])) &&
1265
- error_num != HA_ERR_RECORD_IS_THE_SAME
1266
- ) {
1267
- table->file ->print_error (error_num, MYF (0 ));
1312
+ if ((error_num = spider_update_sys_table_row (table)))
1268
1313
DBUG_RETURN (error_num);
1269
- }
1270
1314
}
1271
1315
}
1272
1316
while (TRUE )
@@ -1284,11 +1328,8 @@ int spider_update_tables_priority(
1284
1328
table->file ->print_error (error_num, MYF (0 ));
1285
1329
DBUG_RETURN (error_num);
1286
1330
}
1287
- if ((error_num = table->file ->ha_delete_row (table->record [0 ])))
1288
- {
1289
- table->file ->print_error (error_num, MYF (0 ));
1331
+ if ((error_num = spider_delete_sys_table_row (table)))
1290
1332
DBUG_RETURN (error_num);
1291
- }
1292
1333
}
1293
1334
roop_count++;
1294
1335
}
@@ -1324,14 +1365,8 @@ int spider_update_tables_link_status(
1324
1365
store_record (table, record[1 ]);
1325
1366
table->use_all_columns ();
1326
1367
spider_store_tables_link_status (table, link_status);
1327
- if (
1328
- (error_num = table->file ->ha_update_row (
1329
- table->record [1 ], table->record [0 ])) &&
1330
- error_num != HA_ERR_RECORD_IS_THE_SAME
1331
- ) {
1332
- table->file ->print_error (error_num, MYF (0 ));
1368
+ if ((error_num = spider_update_sys_table_row (table)))
1333
1369
DBUG_RETURN (error_num);
1334
- }
1335
1370
}
1336
1371
1337
1372
DBUG_RETURN (0 );
@@ -1358,11 +1393,8 @@ int spider_delete_xa(
1358
1393
MYF (0 ));
1359
1394
DBUG_RETURN (ER_SPIDER_XA_NOT_EXISTS_NUM);
1360
1395
} else {
1361
- if ((error_num = table->file ->ha_delete_row (table->record [0 ])))
1362
- {
1363
- table->file ->print_error (error_num, MYF (0 ));
1396
+ if ((error_num = spider_delete_sys_table_row (table)))
1364
1397
DBUG_RETURN (error_num);
1365
- }
1366
1398
}
1367
1399
1368
1400
DBUG_RETURN (0 );
@@ -1389,7 +1421,7 @@ int spider_delete_xa_member(
1389
1421
DBUG_RETURN (0 );
1390
1422
} else {
1391
1423
do {
1392
- if ((error_num = table-> file -> ha_delete_row (table-> record [ 0 ] )))
1424
+ if ((error_num = spider_delete_sys_table_row (table, 0 , FALSE )))
1393
1425
{
1394
1426
spider_sys_index_end (table);
1395
1427
table->file ->print_error (error_num, MYF (0 ));
@@ -1424,11 +1456,8 @@ int spider_delete_tables(
1424
1456
if ((error_num = spider_check_sys_table (table, table_key)))
1425
1457
break ;
1426
1458
else {
1427
- if ((error_num = table->file ->ha_delete_row (table->record [0 ])))
1428
- {
1429
- table->file ->print_error (error_num, MYF (0 ));
1459
+ if ((error_num = spider_delete_sys_table_row (table)))
1430
1460
DBUG_RETURN (error_num);
1431
- }
1432
1461
}
1433
1462
roop_count++;
1434
1463
}
@@ -2305,7 +2334,7 @@ int spider_sys_replace(
2305
2334
char table_key[MAX_KEY_LENGTH];
2306
2335
DBUG_ENTER (" spider_sys_replace" );
2307
2336
2308
- while ((error_num = table-> file -> ha_write_row (table-> record [ 0 ] )))
2337
+ while ((error_num = spider_write_sys_table_row (table, FALSE )))
2309
2338
{
2310
2339
if (
2311
2340
table->file ->is_fatal_error (error_num, HA_CHECK_DUP) ||
@@ -2357,13 +2386,11 @@ int spider_sys_replace(
2357
2386
last_uniq_key &&
2358
2387
!table->file ->referenced_by_foreign_key ()
2359
2388
) {
2360
- error_num = table->file ->ha_update_row (table->record [1 ],
2361
- table->record [0 ]);
2362
- if (error_num && error_num != HA_ERR_RECORD_IS_THE_SAME)
2389
+ if ((error_num = spider_update_sys_table_row (table)))
2363
2390
goto error;
2364
2391
DBUG_RETURN (0 );
2365
2392
} else {
2366
- if ((error_num = table-> file -> ha_delete_row (table-> record [ 1 ] )))
2393
+ if ((error_num = spider_delete_sys_table_row (table, 1 , FALSE )))
2367
2394
goto error;
2368
2395
*modified_non_trans_table = TRUE ;
2369
2396
}
0 commit comments