Skip to content

Commit 360ff3b

Browse files
author
Nirbhay Choubey
committed
Fix for build failures on Power8
1 parent 69e5f0f commit 360ff3b

File tree

4 files changed

+39
-44
lines changed

4 files changed

+39
-44
lines changed

sql/events.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,7 @@ Events::load_events_from_db(THD *thd)
11321132
#ifdef WITH_WSREP
11331133
// when SST from master node who initials event, the event status is ENABLED
11341134
// this is problematic because there are two nodes with same events and both enabled.
1135-
if (et->originator != thd->variables.server_id)
1135+
if (et->originator != (longlong) thd->variables.server_id)
11361136
{
11371137
store_record(table, record[1]);
11381138
table->field[ET_FIELD_STATUS]->

sql/wsrep_sst.cc

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -440,8 +440,7 @@ static ssize_t sst_prepare_other (const char* method,
440440
const char* addr_in,
441441
const char** addr_out)
442442
{
443-
ssize_t cmd_len= 1024;
444-
char cmd_str[cmd_len];
443+
char cmd_str[1024];
445444
const char* sst_dir= mysql_real_data_home;
446445
const char* binlog_opt= "";
447446
char* binlog_opt_val= NULL;
@@ -456,7 +455,7 @@ static ssize_t sst_prepare_other (const char* method,
456455
if (strlen(binlog_opt_val)) binlog_opt= WSREP_SST_OPT_BINLOG;
457456

458457

459-
ret= snprintf (cmd_str, cmd_len,
458+
ret= snprintf (cmd_str, sizeof(cmd_str),
460459
"wsrep_sst_%s "
461460
WSREP_SST_OPT_ROLE" 'joiner' "
462461
WSREP_SST_OPT_ADDR" '%s' "
@@ -470,7 +469,7 @@ static ssize_t sst_prepare_other (const char* method,
470469
binlog_opt, binlog_opt_val);
471470
my_free(binlog_opt_val);
472471

473-
if (ret < 0 || ret >= cmd_len)
472+
if (ret < 0 || ret >= (int)sizeof(cmd_str))
474473
{
475474
WSREP_ERROR("sst_prepare_other(): snprintf() failed: %d", ret);
476475
return (ret < 0 ? ret : -EMSGSIZE);
@@ -721,7 +720,7 @@ static int sst_donate_mysqldump (const char* addr,
721720
host_len = strlen (addr) + 1;
722721
}
723722

724-
char host[host_len];
723+
char *host= (char *) alloca(host_len);
725724

726725
strncpy (host, addr, host_len - 1);
727726
host[host_len - 1] = '\0';
@@ -741,20 +740,19 @@ static int sst_donate_mysqldump (const char* addr,
741740
user_len = (auth) ? strlen (auth) + 1 : 1;
742741
}
743742

744-
char user[user_len];
743+
char *user= (char *) alloca(user_len);
745744

746745
strncpy (user, (auth) ? auth : "", user_len - 1);
747746
user[user_len - 1] = '\0';
748747

749748
int ret = sst_mysqldump_check_addr (user, pswd, host, port);
750749
if (!ret)
751750
{
752-
size_t cmd_len= 1024;
753-
char cmd_str[cmd_len];
751+
char cmd_str[1024];
754752

755753
if (!bypass && wsrep_sst_donor_rejects_queries) sst_reject_queries(TRUE);
756754

757-
snprintf (cmd_str, cmd_len,
755+
snprintf (cmd_str, sizeof(cmd_str),
758756
"wsrep_sst_mysqldump "
759757
WSREP_SST_OPT_USER" '%s' "
760758
WSREP_SST_OPT_PSWD" '%s' "
@@ -850,11 +848,13 @@ static int sst_flush_tables(THD* thd)
850848
{
851849
WSREP_INFO("Tables flushed.");
852850
const char base_name[]= "tables_flushed";
851+
853852
ssize_t const full_len= strlen(mysql_real_data_home) + strlen(base_name)+2;
854-
char real_name[full_len];
855-
sprintf(real_name, "%s/%s", mysql_real_data_home, base_name);
856-
char tmp_name[full_len + 4];
857-
sprintf(tmp_name, "%s.tmp", real_name);
853+
char *real_name= (char *) alloca(full_len);
854+
snprintf(real_name, (size_t) full_len, "%s/%s", mysql_real_data_home,
855+
base_name);
856+
char *tmp_name= (char *) alloca(full_len + 4);
857+
snprintf(tmp_name, (size_t) full_len + 4, "%s.tmp", real_name);
858858

859859
FILE* file= fopen(tmp_name, "w+");
860860
if (0 == file)
@@ -1014,8 +1014,7 @@ static int sst_donate_other (const char* method,
10141014
wsrep_seqno_t seqno,
10151015
bool bypass)
10161016
{
1017-
ssize_t cmd_len = 4096;
1018-
char cmd_str[cmd_len];
1017+
char cmd_str[4096];
10191018
const char* binlog_opt= "";
10201019
char* binlog_opt_val= NULL;
10211020

@@ -1027,7 +1026,7 @@ static int sst_donate_other (const char* method,
10271026
}
10281027
if (strlen(binlog_opt_val)) binlog_opt= WSREP_SST_OPT_BINLOG;
10291028

1030-
ret= snprintf (cmd_str, cmd_len,
1029+
ret= snprintf (cmd_str, sizeof(cmd_str),
10311030
"wsrep_sst_%s "
10321031
WSREP_SST_OPT_ROLE" 'donor' "
10331032
WSREP_SST_OPT_ADDR" '%s' "
@@ -1045,7 +1044,7 @@ static int sst_donate_other (const char* method,
10451044
bypass ? " "WSREP_SST_OPT_BYPASS : "");
10461045
my_free(binlog_opt_val);
10471046

1048-
if (ret < 0 || ret >= cmd_len)
1047+
if (ret < 0 || ret >= (int) sizeof(cmd_str))
10491048
{
10501049
WSREP_ERROR("sst_donate_other(): snprintf() failed: %d", ret);
10511050
return (ret < 0 ? ret : -EMSGSIZE);

storage/innobase/handler/ha_innodb.cc

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9782,7 +9782,6 @@ ha_innobase::wsrep_append_keys(
97829782
uint len;
97839783
char keyval[WSREP_MAX_SUPPORTED_KEY_LENGTH+1] = {'\0'};
97849784
char *key = &keyval[0];
9785-
KEY *key_info = table->key_info;
97869785
ibool is_null;
97879786

97889787
len = wsrep_store_key_val_for_row(
@@ -17251,18 +17250,18 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1725117250

1725217251
if (!thd) {
1725317252
DBUG_PRINT("wsrep", ("no thd for conflicting lock"));
17254-
WSREP_WARN("no THD for trx: %llu", victim_trx->id);
17253+
WSREP_WARN("no THD for trx: %lu", victim_trx->id);
1725517254
DBUG_RETURN(1);
1725617255
}
1725717256
if (!bf_thd) {
1725817257
DBUG_PRINT("wsrep", ("no BF thd for conflicting lock"));
17259-
WSREP_WARN("no BF THD for trx: %llu", (bf_trx) ? bf_trx->id : 0);
17258+
WSREP_WARN("no BF THD for trx: %lu", (bf_trx) ? bf_trx->id : 0);
1726017259
DBUG_RETURN(1);
1726117260
}
1726217261

1726317262
WSREP_LOG_CONFLICT(bf_thd, thd, TRUE);
1726417263

17265-
WSREP_DEBUG("BF kill (%lu, seqno: %lld), victim: (%lu) trx: %llu",
17264+
WSREP_DEBUG("BF kill (%lu, seqno: %lld), victim: (%lu) trx: %lu",
1726617265
signal, (long long)bf_seqno,
1726717266
wsrep_thd_thread_id(thd),
1726817267
victim_trx->id);
@@ -17273,12 +17272,12 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1727317272
wsrep_thd_LOCK(thd);
1727417273

1727517274
if (wsrep_thd_query_state(thd) == QUERY_EXITING) {
17276-
WSREP_DEBUG("kill trx EXITING for %llu", victim_trx->id);
17275+
WSREP_DEBUG("kill trx EXITING for %lu", victim_trx->id);
1727717276
wsrep_thd_UNLOCK(thd);
1727817277
DBUG_RETURN(0);
1727917278
}
1728017279
if(wsrep_thd_exec_mode(thd) != LOCAL_STATE) {
17281-
WSREP_DEBUG("withdraw for BF trx: %llu, state: %d",
17280+
WSREP_DEBUG("withdraw for BF trx: %lu, state: %d",
1728217281
victim_trx->id,
1728317282
wsrep_thd_conflict_state(thd));
1728417283
}
@@ -17288,7 +17287,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1728817287
wsrep_thd_set_conflict_state(thd, MUST_ABORT);
1728917288
break;
1729017289
case MUST_ABORT:
17291-
WSREP_DEBUG("victim %llu in MUST ABORT state",
17290+
WSREP_DEBUG("victim %lu in MUST ABORT state",
1729217291
victim_trx->id);
1729317292
wsrep_thd_UNLOCK(thd);
1729417293
wsrep_thd_awake(thd, signal);
@@ -17297,7 +17296,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1729717296
case ABORTED:
1729817297
case ABORTING: // fall through
1729917298
default:
17300-
WSREP_DEBUG("victim %llu in state %d",
17299+
WSREP_DEBUG("victim %lu in state %d",
1730117300
victim_trx->id, wsrep_thd_conflict_state(thd));
1730217301
wsrep_thd_UNLOCK(thd);
1730317302
DBUG_RETURN(0);
@@ -17310,7 +17309,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1731017309

1731117310
WSREP_DEBUG("kill query for: %ld",
1731217311
wsrep_thd_thread_id(thd));
17313-
WSREP_DEBUG("kill trx QUERY_COMMITTING for %llu",
17312+
WSREP_DEBUG("kill trx QUERY_COMMITTING for %lu",
1731417313
victim_trx->id);
1731517314

1731617315
if (wsrep_thd_exec_mode(thd) == REPL_RECV) {
@@ -17324,7 +17323,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1732417323

1732517324
switch (rcode) {
1732617325
case WSREP_WARNING:
17327-
WSREP_DEBUG("cancel commit warning: %llu",
17326+
WSREP_DEBUG("cancel commit warning: %lu",
1732817327
victim_trx->id);
1732917328
wsrep_thd_UNLOCK(thd);
1733017329
wsrep_thd_awake(thd, signal);
@@ -17334,8 +17333,8 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1733417333
break;
1733517334
default:
1733617335
WSREP_ERROR(
17337-
"cancel commit bad exit: %d %llu",
17338-
rcode,
17336+
"cancel commit bad exit: %d %lu",
17337+
rcode,
1733917338
victim_trx->id);
1734017339
/* unable to interrupt, must abort */
1734117340
/* note: kill_mysql() will block, if we cannot.
@@ -17352,7 +17351,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1735217351
/* it is possible that victim trx is itself waiting for some
1735317352
* other lock. We need to cancel this waiting
1735417353
*/
17355-
WSREP_DEBUG("kill trx QUERY_EXEC for %llu", victim_trx->id);
17354+
WSREP_DEBUG("kill trx QUERY_EXEC for %lu", victim_trx->id);
1735617355

1735717356
victim_trx->lock.was_chosen_as_deadlock_victim= TRUE;
1735817357
if (victim_trx->lock.wait_lock) {
@@ -17390,7 +17389,7 @@ wsrep_innobase_kill_one_trx(void * const bf_thd_ptr,
1739017389
bool skip_abort= false;
1739117390
wsrep_aborting_thd_t abortees;
1739217391

17393-
WSREP_DEBUG("kill IDLE for %llu", victim_trx->id);
17392+
WSREP_DEBUG("kill IDLE for %lu", victim_trx->id);
1739417393

1739517394
if (wsrep_thd_exec_mode(thd) == REPL_RECV) {
1739617395
WSREP_DEBUG("kill BF IDLE, seqno: %lld",

wsrep/wsrep_loader.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,10 @@ static wsrep_log_cb_t logger = default_logger;
3939

4040
static int verify(const wsrep_t *wh, const char *iface_ver)
4141
{
42-
const size_t msg_len = 128;
43-
char msg[msg_len];
42+
char msg[128];
4443

4544
#define VERIFY(_p) if (!(_p)) { \
46-
snprintf(msg, msg_len, "wsrep_load(): verify(): %s\n", # _p); \
45+
snprintf(msg, sizeof(msg), "wsrep_load(): verify(): %s\n", # _p); \
4746
logger (WSREP_LOG_ERROR, msg); \
4847
return EINVAL; \
4948
}
@@ -52,7 +51,7 @@ static int verify(const wsrep_t *wh, const char *iface_ver)
5251
VERIFY(wh->version);
5352

5453
if (strcmp(wh->version, iface_ver)) {
55-
snprintf (msg, msg_len,
54+
snprintf (msg, sizeof(msg),
5655
"provider interface version mismatch: need '%s', found '%s'",
5756
iface_ver, wh->version);
5857
logger (WSREP_LOG_ERROR, msg);
@@ -115,17 +114,15 @@ int wsrep_load(const char *spec, wsrep_t **hptr, wsrep_log_cb_t log_cb)
115114
int ret = 0;
116115
void *dlh = NULL;
117116
wsrep_loader_fun dlfun;
118-
const size_t msg_len = 1024;
119-
char msg[msg_len + 1];
120-
msg[msg_len] = 0;
117+
char msg[1024];
121118

122119
if (NULL != log_cb)
123120
logger = log_cb;
124121

125122
if (!(spec && hptr))
126123
return EINVAL;
127124

128-
snprintf (msg, msg_len,
125+
snprintf (msg, sizeof(msg),
129126
"wsrep_load(): loading provider library '%s'", spec);
130127
logger (WSREP_LOG_INFO, msg);
131128

@@ -143,7 +140,7 @@ int wsrep_load(const char *spec, wsrep_t **hptr, wsrep_log_cb_t log_cb)
143140
}
144141

145142
if (!(dlh = dlopen(spec, RTLD_NOW | RTLD_LOCAL))) {
146-
snprintf(msg, msg_len, "wsrep_load(): dlopen(): %s", dlerror());
143+
snprintf(msg, sizeof(msg), "wsrep_load(): dlopen(): %s", dlerror());
147144
logger (WSREP_LOG_ERROR, msg);
148145
ret = EINVAL;
149146
goto out;
@@ -155,14 +152,14 @@ int wsrep_load(const char *spec, wsrep_t **hptr, wsrep_log_cb_t log_cb)
155152
}
156153

157154
if ((ret = (*dlfun)(*hptr)) != 0) {
158-
snprintf(msg, msg_len, "wsrep_load(): loader failed: %s",
155+
snprintf(msg, sizeof(msg), "wsrep_load(): loader failed: %s",
159156
strerror(ret));
160157
logger (WSREP_LOG_ERROR, msg);
161158
goto out;
162159
}
163160

164161
if ((ret = verify(*hptr, WSREP_INTERFACE_VERSION)) != 0) {
165-
snprintf (msg, msg_len,
162+
snprintf (msg, sizeof(msg),
166163
"wsrep_load(): interface version mismatch: my version %s, "
167164
"provider version %s", WSREP_INTERFACE_VERSION,
168165
(*hptr)->version);
@@ -178,7 +175,7 @@ int wsrep_load(const char *spec, wsrep_t **hptr, wsrep_log_cb_t log_cb)
178175
free(*hptr);
179176
*hptr = NULL;
180177
} else {
181-
snprintf (msg, msg_len,
178+
snprintf (msg, sizeof(msg),
182179
"wsrep_load(): %s %s by %s loaded successfully.",
183180
(*hptr)->provider_name, (*hptr)->provider_version,
184181
(*hptr)->provider_vendor);

0 commit comments

Comments
 (0)