summaryrefslogtreecommitdiff
path: root/sql-common
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-09-21 12:54:56 +0200
committerSergei Golubchik <serg@mariadb.org>2016-09-21 12:54:56 +0200
commit59d51f0c12d6f2bccc8354079be67c6e520d3675 (patch)
treed4bf888eceb9434807dd4889fd04257d5bf5ad2b /sql-common
parentfb8bc59f0120fbd3517a291e71d81c3d11443baa (diff)
parent4368efe870f225279106798f71978b68c473e2ab (diff)
downloadmariadb-git-59d51f0c12d6f2bccc8354079be67c6e520d3675.tar.gz
Merge branch '10.2' into bb-10.2-connector-c-integ-subm
Diffstat (limited to 'sql-common')
-rw-r--r--sql-common/client.c6
-rw-r--r--sql-common/my_time.c4
-rw-r--r--sql-common/mysql_async.c6
-rw-r--r--sql-common/pack.c22
4 files changed, 33 insertions, 5 deletions
diff --git a/sql-common/client.c b/sql-common/client.c
index 77db558d271..858e9ec4b5b 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -3113,7 +3113,6 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
DBUG_RETURN(0);
mysql->methods= &client_methods;
- net->vio = 0; /* If something goes wrong */
mysql->client_flag=0; /* For handshake */
/* use default options */
@@ -3638,6 +3637,9 @@ error:
/* Free alloced memory */
end_server(mysql);
mysql_close_free(mysql);
+ if (!(client_flag & CLIENT_REMEMBER_OPTIONS) &&
+ !mysql->options.extension->async_context)
+ mysql_close_free_options(mysql);
}
DBUG_RETURN(0);
}
@@ -3708,7 +3710,7 @@ my_bool mysql_reconnect(MYSQL *mysql)
}
if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd,
mysql->db, mysql->port, mysql->unix_socket,
- mysql->client_flag))
+ mysql->client_flag | CLIENT_REMEMBER_OPTIONS))
{
if (ctxt)
my_context_install_suspend_resume_hook(ctxt, NULL, NULL);
diff --git a/sql-common/my_time.c b/sql-common/my_time.c
index 450a0fca775..88f28e1d44a 100644
--- a/sql-common/my_time.c
+++ b/sql-common/my_time.c
@@ -224,7 +224,7 @@ my_bool check_datetime_range(const MYSQL_TIME *ltime)
ltime->minute > 59 || ltime->second > 59 ||
ltime->second_part > TIME_MAX_SECOND_PART ||
(ltime->hour >
- (ltime->time_type == MYSQL_TIMESTAMP_TIME ? TIME_MAX_HOUR : 23));
+ (uint) (ltime->time_type == MYSQL_TIMESTAMP_TIME ? TIME_MAX_HOUR : 23));
}
@@ -237,7 +237,7 @@ static void get_microseconds(ulong *val, MYSQL_TIME_STATUS *status,
if (get_digits(&tmp, number_of_fields, str, end, 6))
status->warnings|= MYSQL_TIME_WARN_TRUNCATED;
if ((status->precision= (*str - start)) < 6)
- *val= tmp * log_10_int[6 - (*str - start)];
+ *val= (ulong) (tmp * log_10_int[6 - (*str - start)]);
else
*val= tmp;
if (skip_digits(str, end))
diff --git a/sql-common/mysql_async.c b/sql-common/mysql_async.c
index 80b4f390641..decf48e0e69 100644
--- a/sql-common/mysql_async.c
+++ b/sql-common/mysql_async.c
@@ -455,7 +455,11 @@ MK_ASYNC_START_BODY(
parms.db= db;
parms.port= port;
parms.unix_socket= unix_socket;
- parms.client_flags= client_flags;
+ /*
+ async wrapper enforce the CLIENT_REMEMBER_OPTIONS flag to be
+ functional (otherwise it can't operate)
+ */
+ parms.client_flags= client_flags | CLIENT_REMEMBER_OPTIONS;
},
NULL,
r_ptr,
diff --git a/sql-common/pack.c b/sql-common/pack.c
index 4bb4a0b7a4e..5428feb623e 100644
--- a/sql-common/pack.c
+++ b/sql-common/pack.c
@@ -186,3 +186,25 @@ uchar *safe_net_store_length(uchar *packet, size_t packet_len, ulonglong length)
return packet+8;
}
+
+/**
+ The length of space required to store the resulting length-encoded integer
+ for the given number. This function can be used at places where one needs to
+ dynamically allocate the buffer for a given number to be stored as length-
+ encoded integer.
+
+ @param num [IN] the input number
+
+ @return length of buffer needed to store this number [1, 3, 4, 9].
+*/
+
+uint net_length_size(ulonglong num)
+{
+ if (num < (ulonglong) 251LL)
+ return 1;
+ if (num < (ulonglong) 65536LL)
+ return 3;
+ if (num < (ulonglong) 16777216LL)
+ return 4;
+ return 9;
+}