Loading include/errmsg.h +1 −0 Original line number Diff line number Diff line Loading @@ -63,4 +63,5 @@ extern const char *client_errors[]; /* Error messages */ #define CR_PROBE_MASTER_CONNECT 2025 #define CR_SSL_CONNECTION_ERROR 2026 #define CR_MALFORMED_PACKET 2027 #define CR_WRONG_LICENSE 2028 include/mysql_version.h.in +5 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,9 @@ #define MYSQL_CHARSET "@default_charset@" #endif /* MYSQL_CHARSET */ #endif /* _CUSTOMCONFIG_ */ #ifndef LICENSE #define LICENSE "GPL" #endif /* LICENSE */ #endif /* _mysql_version_h */ libmysql/errmsg.c +6 −3 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ const char *client_errors[]= "Error connecting to slave:", "Error connecting to master:", "SSL connection error", "Malformed packet" "Malformed packet", "This client library is licensed only for use with MySQL servers having '%s' license" }; /* Start of code added by Roberto M. Serqueira - martinsc@uol.com.br - 05.24.2001 */ Loading Loading @@ -86,7 +87,8 @@ const char *client_errors[]= "Error connecting to slave:", "Error connecting to master:", "SSL connection error", "Malformed packet" "Malformed packet", "This client library is licensed only for use with MySQL servers having '%s' license" }; #else /* ENGLISH */ Loading Loading @@ -119,7 +121,8 @@ const char *client_errors[]= "Error connecting to slave:", "Error connecting to master:", "SSL connection error", "Malformed packet" "Malformed packet", "This client library is licensed only for use with MySQL servers having '%s' license" }; #endif Loading libmysql/libmysql.c +54 −0 Original line number Diff line number Diff line Loading @@ -1612,6 +1612,56 @@ mysql_connect(MYSQL *mysql,const char *host, #endif #ifdef CHECK_LICENSE /* Check server side variable 'license'. If the variable does not exist or does not contain 'Commercial', we're talking to non-commercial server from commercial client. SYNOPSIS check_license() RETURN VALUE 0 success !0 network error or the server is not commercial. Error code is saved in mysql->net.last_errno. */ static int check_license(MYSQL *mysql) { MYSQL_ROW row; MYSQL_RES *res; NET *net= &mysql->net; static const char query[]= "SELECT @@license"; static const char required_license[]= LICENSE; if (mysql_real_query(mysql, query, sizeof(query)-1)) { if (net->last_errno == ER_UNKNOWN_SYSTEM_VARIABLE) { net->last_errno= CR_WRONG_LICENSE; sprintf(net->last_error, ER(net->last_errno), required_license); } return 1; } if (!(res= mysql_use_result(mysql))) return 1; row= mysql_fetch_row(res); /* If no rows in result set, or column value is NULL (none of these two is ever true for server variables now), or column value mismatch, set wrong license error. */ if (!net->last_errno && (!row || !row[0] || strncmp(row[0], required_license, sizeof(required_license)))) { net->last_errno= CR_WRONG_LICENSE; sprintf(net->last_error, ER(net->last_errno), required_license); } mysql_free_result(res); return net->last_errno; } #endif /* CHECK_LICENSE */ /* The following union is used to force a struct to be double allgined. This is to avoid warings with gethostname_r() on Linux itanium systems Loading Loading @@ -2048,6 +2098,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user, net->compress=1; if (mysql->options.max_allowed_packet) net->max_packet_size= mysql->options.max_allowed_packet; #ifdef CHECK_LICENSE if (check_license(mysql)) goto error; #endif if (db && mysql_select_db(mysql,db)) goto error; if (mysql->options.init_command) Loading mysql-test/r/rpl000009.result +12 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,18 @@ n s 2 two bar 3 three bar 4 four bar stop slave; reset slave; load data from master; start slave; insert into bar.t1 values (5, 'five bar'); select * from bar.t1; n s 1 one bar 2 two bar 3 three bar 4 four bar 5 five bar load table bar.t1 from master; Table 't1' already exists drop table bar.t1; Loading Loading
include/errmsg.h +1 −0 Original line number Diff line number Diff line Loading @@ -63,4 +63,5 @@ extern const char *client_errors[]; /* Error messages */ #define CR_PROBE_MASTER_CONNECT 2025 #define CR_SSL_CONNECTION_ERROR 2026 #define CR_MALFORMED_PACKET 2027 #define CR_WRONG_LICENSE 2028
include/mysql_version.h.in +5 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,9 @@ #define MYSQL_CHARSET "@default_charset@" #endif /* MYSQL_CHARSET */ #endif /* _CUSTOMCONFIG_ */ #ifndef LICENSE #define LICENSE "GPL" #endif /* LICENSE */ #endif /* _mysql_version_h */
libmysql/errmsg.c +6 −3 Original line number Diff line number Diff line Loading @@ -51,7 +51,8 @@ const char *client_errors[]= "Error connecting to slave:", "Error connecting to master:", "SSL connection error", "Malformed packet" "Malformed packet", "This client library is licensed only for use with MySQL servers having '%s' license" }; /* Start of code added by Roberto M. Serqueira - martinsc@uol.com.br - 05.24.2001 */ Loading Loading @@ -86,7 +87,8 @@ const char *client_errors[]= "Error connecting to slave:", "Error connecting to master:", "SSL connection error", "Malformed packet" "Malformed packet", "This client library is licensed only for use with MySQL servers having '%s' license" }; #else /* ENGLISH */ Loading Loading @@ -119,7 +121,8 @@ const char *client_errors[]= "Error connecting to slave:", "Error connecting to master:", "SSL connection error", "Malformed packet" "Malformed packet", "This client library is licensed only for use with MySQL servers having '%s' license" }; #endif Loading
libmysql/libmysql.c +54 −0 Original line number Diff line number Diff line Loading @@ -1612,6 +1612,56 @@ mysql_connect(MYSQL *mysql,const char *host, #endif #ifdef CHECK_LICENSE /* Check server side variable 'license'. If the variable does not exist or does not contain 'Commercial', we're talking to non-commercial server from commercial client. SYNOPSIS check_license() RETURN VALUE 0 success !0 network error or the server is not commercial. Error code is saved in mysql->net.last_errno. */ static int check_license(MYSQL *mysql) { MYSQL_ROW row; MYSQL_RES *res; NET *net= &mysql->net; static const char query[]= "SELECT @@license"; static const char required_license[]= LICENSE; if (mysql_real_query(mysql, query, sizeof(query)-1)) { if (net->last_errno == ER_UNKNOWN_SYSTEM_VARIABLE) { net->last_errno= CR_WRONG_LICENSE; sprintf(net->last_error, ER(net->last_errno), required_license); } return 1; } if (!(res= mysql_use_result(mysql))) return 1; row= mysql_fetch_row(res); /* If no rows in result set, or column value is NULL (none of these two is ever true for server variables now), or column value mismatch, set wrong license error. */ if (!net->last_errno && (!row || !row[0] || strncmp(row[0], required_license, sizeof(required_license)))) { net->last_errno= CR_WRONG_LICENSE; sprintf(net->last_error, ER(net->last_errno), required_license); } mysql_free_result(res); return net->last_errno; } #endif /* CHECK_LICENSE */ /* The following union is used to force a struct to be double allgined. This is to avoid warings with gethostname_r() on Linux itanium systems Loading Loading @@ -2048,6 +2098,10 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user, net->compress=1; if (mysql->options.max_allowed_packet) net->max_packet_size= mysql->options.max_allowed_packet; #ifdef CHECK_LICENSE if (check_license(mysql)) goto error; #endif if (db && mysql_select_db(mysql,db)) goto error; if (mysql->options.init_command) Loading
mysql-test/r/rpl000009.result +12 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,18 @@ n s 2 two bar 3 three bar 4 four bar stop slave; reset slave; load data from master; start slave; insert into bar.t1 values (5, 'five bar'); select * from bar.t1; n s 1 one bar 2 two bar 3 three bar 4 four bar 5 five bar load table bar.t1 from master; Table 't1' already exists drop table bar.t1; Loading