mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
MDEV-6311 Add errors on CREATE SERVER
fail CREATE SERVER foreign data wrapper is "mysql" and neither HOST nor SOCKET are specified. Also default PORT to 3306 (again, only for foreign data wrapper "mysql")
This commit is contained in:
@ -1078,6 +1078,7 @@ static FOREIGN_SERVER *
|
||||
prepare_server_struct_for_insert(LEX_SERVER_OPTIONS *server_options)
|
||||
{
|
||||
FOREIGN_SERVER *server;
|
||||
ulong default_port= 0;
|
||||
DBUG_ENTER("prepare_server_struct");
|
||||
|
||||
if (!(server= (FOREIGN_SERVER *)alloc_root(&mem, sizeof(FOREIGN_SERVER))))
|
||||
@ -1095,6 +1096,18 @@ prepare_server_struct_for_insert(LEX_SERVER_OPTIONS *server_options)
|
||||
SET_SERVER_OR_RETURN(server_name, NULL);
|
||||
SET_SERVER_OR_RETURN(scheme, NULL);
|
||||
|
||||
/* scheme-specific checks */
|
||||
if (!strcasecmp(server->scheme, "mysql"))
|
||||
{
|
||||
default_port= MYSQL_PORT;
|
||||
if (!server_options->host.str && !server_options->socket.str)
|
||||
{
|
||||
my_error(ER_CANT_CREATE_FEDERATED_TABLE, MYF(0),
|
||||
"either HOST or SOCKET must be set");
|
||||
DBUG_RETURN(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
SET_SERVER_OR_RETURN(host, "");
|
||||
SET_SERVER_OR_RETURN(db, "");
|
||||
SET_SERVER_OR_RETURN(username, "");
|
||||
@ -1104,9 +1117,9 @@ prepare_server_struct_for_insert(LEX_SERVER_OPTIONS *server_options)
|
||||
|
||||
server->server_name_length= server_options->server_name.length;
|
||||
|
||||
/* set to 0 if not specified */
|
||||
/* set to default_port if not specified */
|
||||
server->port= server_options->port > -1 ?
|
||||
server_options->port : 0;
|
||||
server_options->port : default_port;
|
||||
|
||||
DBUG_RETURN(server);
|
||||
}
|
||||
|
Reference in New Issue
Block a user