| 396 | */ |
| 397 | |
| 398 | static bool |
| 399 | get_server_from_table_to_cache(TABLE *table) |
| 400 | { |
| 401 | /* alloc a server struct */ |
| 402 | char *ptr; |
| 403 | char * const blank= (char*)""; |
| 404 | FOREIGN_SERVER *server= (FOREIGN_SERVER *)alloc_root(&mem, |
| 405 | sizeof(FOREIGN_SERVER)); |
| 406 | DBUG_ENTER("get_server_from_table_to_cache"); |
| 407 | |
| 408 | /* get each field into the server struct ptr */ |
| 409 | ptr= get_field(&mem, table->field[SERVER_NAME_FIELD]); |
| 410 | server->server_name= ptr ? ptr : blank; |
| 411 | server->server_name_length= (uint) strlen(server->server_name); |
| 412 | ptr= get_field(&mem, table->field[HOST_FIELD]); |
| 413 | server->host= ptr ? ptr : blank; |
| 414 | ptr= get_field(&mem, table->field[DB_FIELD]); |
| 415 | server->db= ptr ? ptr : blank; |
| 416 | ptr= get_field(&mem, table->field[USERNAME_FIELD]); |
| 417 | server->username= ptr ? ptr : blank; |
| 418 | ptr= get_field(&mem, table->field[PASSWORD_FIELD]); |
| 419 | server->password= ptr ? ptr : blank; |
| 420 | ptr= get_field(&mem, table->field[PORT_FIELD]); |
| 421 | server->sport= ptr ? ptr : blank; |
| 422 | |
| 423 | server->port= server->sport ? atoi(server->sport) : 0; |
| 424 | |
| 425 | ptr= get_field(&mem, table->field[SOCKET_FIELD]); |
| 426 | server->socket= ptr && strlen(ptr) ? ptr : blank; |
| 427 | ptr= get_field(&mem, table->field[SCHEME_FIELD]); |
| 428 | server->scheme= ptr ? ptr : blank; |
| 429 | ptr= get_field(&mem, table->field[OWNER_FIELD]); |
| 430 | server->owner= ptr ? ptr : blank; |
| 431 | ptr= table->s->fields > OPTIONS_FIELD |
| 432 | ? get_field(&mem, table->field[OPTIONS_FIELD]) : nullptr; |
| 433 | server->option_list= NULL; |
| 434 | if (ptr && parse_server_options_json(server, ptr)) |
| 435 | DBUG_RETURN(TRUE); |
| 436 | DBUG_PRINT("info", ("server->server_name %s", server->server_name)); |
| 437 | DBUG_PRINT("info", ("server->host %s", server->host)); |
| 438 | DBUG_PRINT("info", ("server->db %s", server->db)); |
| 439 | DBUG_PRINT("info", ("server->username %s", server->username)); |
| 440 | DBUG_PRINT("info", ("server->password %s", server->password)); |
| 441 | DBUG_PRINT("info", ("server->socket %s", server->socket)); |
| 442 | if (my_hash_insert(&servers_cache, (uchar*) server)) |
| 443 | { |
| 444 | DBUG_PRINT("info", ("had a problem inserting server %s at %p", |
| 445 | server->server_name, server)); |
| 446 | // error handling needed here |
| 447 | DBUG_RETURN(TRUE); |
| 448 | } |
| 449 | DBUG_RETURN(FALSE); |
| 450 | } |
| 451 | |
| 452 | |
| 453 | /* |
no test coverage detected