1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-34716 Allow arbitrary options in CREATE SERVER

The existing syntax for CREATE SERVER

CREATE [OR REPLACE] SERVER [IF NOT EXISTS] server_name
    FOREIGN DATA WRAPPER wrapper_name
    OPTIONS (option [, option] ...)

option:
  { HOST character-literal
  | DATABASE character-literal
  | USER character-literal
  | PASSWORD character-literal
  | SOCKET character-literal
  | OWNER character-literal
  | PORT numeric-literal }

With this change we have:

option:
  { HOST character-literal
  | DATABASE character-literal
  | USER character-literal
  | PASSWORD character-literal
  | SOCKET character-literal
  | OWNER character-literal
  | PORT numeric-literal
  | PORT quoted-numerical-literal
  | identifier character-literal}

We store these options as a JSON field in the mysql.servers system
table. We retain the restriction that PORT needs to be a number, but
also allow it to be a quoted number, so that SHOW CREATE SERVER can be
used for dumping. Without an accompanied implementation of SHOW CREATE
SERVER, some mysqldump tests will fail. Therefore this commit should
be immediately followed by the one implementating SHOW CREATE SERVER,
with testing covering both.
This commit is contained in:
Yuchen Pei
2024-09-05 16:12:35 +10:00
parent 2345407b8c
commit d2eba35653
21 changed files with 222 additions and 19 deletions

View File

@@ -317,11 +317,13 @@ typedef struct st_lex_server_options
{
long port;
LEX_CSTRING server_name, host, db, username, password, scheme, socket, owner;
engine_option_value *option_list;
void reset(LEX_CSTRING name)
{
server_name= name;
host= db= username= password= scheme= socket= owner= null_clex_str;
port= -1;
option_list= NULL;
}
} LEX_SERVER_OPTIONS;