MCPcopy Create free account
hub / github.com/MariaDB/server / get_server_from_table_to_cache

Function get_server_from_table_to_cache

sql/sql_servers.cc:398–450  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

396*/
397
398static bool
399get_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/*

Callers 1

servers_loadFunction · 0.85

Calls 5

alloc_rootFunction · 0.85
atoiFunction · 0.85
my_hash_insertFunction · 0.85
get_fieldFunction · 0.70

Tested by

no test coverage detected