1
0
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:
Sergei Golubchik
2014-11-16 13:15:35 +01:00
parent 97a913e31c
commit 20c3b2ff80
7 changed files with 54 additions and 7 deletions

View File

@ -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);
}