From: Marc Alff Date: June 16 2010 4:14pm Subject: bzr commit into mysql-next-mr branch (marc.alff:3153) WL#4674 List-Archive: http://lists.mysql.com/commits/111297 Message-Id: <201006161616.o5GGG6Zr002320@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7464951701275027493==" --===============7464951701275027493== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/malff/BZR_TREE/mysql-next-mr-wl4674/ based on revid:marc.alff@stripped 3153 Marc Alff 2010-06-16 WL#4674 PERFORMANCE SCHEMA SETUP_ACTORS Code cleanup modified: include/mysql/psi/psi.h include/mysql/psi/psi_abi_v1.h.pp sql/sql_connect.cc storage/perfschema/pfs.cc storage/perfschema/unittest/pfs-t.cc === modified file 'include/mysql/psi/psi.h' --- a/include/mysql/psi/psi.h 2010-05-07 10:08:23 +0000 +++ b/include/mysql/psi/psi.h 2010-06-16 16:14:32 +0000 @@ -602,7 +602,8 @@ typedef struct PSI_thread* (*get_thread_ typedef void (*set_thread_user_v1_t)(const char *user, int user_len); -typedef void (*set_thread_host_v1_t)(const char *host, int host_len); +typedef void (*set_thread_user_host_v1_t)(const char *user, int user_len, + const char *host, int host_len); typedef void (*set_thread_db_v1_t)(const char* db, int db_len); @@ -905,8 +906,8 @@ struct PSI_v1 get_thread_v1_t get_thread; /** @sa set_thread_user_v1_t. */ set_thread_user_v1_t set_thread_user; - /** @sa set_thread_host_v1_t. */ - set_thread_host_v1_t set_thread_host; + /** @sa set_thread_user_host_v1_t. */ + set_thread_user_host_v1_t set_thread_user_host; /** @sa set_thread_db_v1_t. */ set_thread_db_v1_t set_thread_db; /** @sa set_thread_command_v1_t. */ === modified file 'include/mysql/psi/psi_abi_v1.h.pp' --- a/include/mysql/psi/psi_abi_v1.h.pp 2010-05-07 10:08:23 +0000 +++ b/include/mysql/psi/psi_abi_v1.h.pp 2010-06-16 16:14:32 +0000 @@ -126,7 +126,8 @@ typedef void (*set_thread_id_v1_t)(struc unsigned long id); typedef struct PSI_thread* (*get_thread_v1_t)(void); typedef void (*set_thread_user_v1_t)(const char *user, int user_len); -typedef void (*set_thread_host_v1_t)(const char *host, int host_len); +typedef void (*set_thread_user_host_v1_t)(const char *user, int user_len, + const char *host, int host_len); typedef void (*set_thread_db_v1_t)(const char* db, int db_len); typedef void (*set_thread_command_v1_t)(int command); typedef void (*set_thread_start_time_v1_t)(time_t start_time); @@ -211,7 +212,7 @@ struct PSI_v1 set_thread_id_v1_t set_thread_id; get_thread_v1_t get_thread; set_thread_user_v1_t set_thread_user; - set_thread_host_v1_t set_thread_host; + set_thread_user_host_v1_t set_thread_user_host; set_thread_db_v1_t set_thread_db; set_thread_command_v1_t set_thread_command; set_thread_start_time_v1_t set_thread_start_time; === modified file 'sql/sql_connect.cc' --- a/sql/sql_connect.cc 2010-05-28 07:37:58 +0000 +++ b/sql/sql_connect.cc 2010-06-16 16:14:32 +0000 @@ -506,10 +506,10 @@ check_user(THD *thd, enum enum_server_co #ifdef HAVE_PSI_INTERFACE if (PSI_server) { - PSI_server->set_thread_host(thd->main_security_ctx.host_or_ip, - strlen(thd->main_security_ctx.host_or_ip)); - PSI_server->set_thread_user(thd->main_security_ctx.user, - strlen(thd->main_security_ctx.user)); + PSI_server->set_thread_user_host(thd->main_security_ctx.user, + strlen(thd->main_security_ctx.user), + thd->main_security_ctx.host_or_ip, + strlen(thd->main_security_ctx.host_or_ip)); } #endif /* Ready to handle queries */ === modified file 'storage/perfschema/pfs.cc' --- a/storage/perfschema/pfs.cc 2010-06-15 14:23:08 +0000 +++ b/storage/perfschema/pfs.cc 2010-06-16 16:14:32 +0000 @@ -1107,22 +1107,48 @@ static void set_thread_user_v1(const cha pfs->m_lock.dirty_to_allocated(); } -static void set_thread_host_v1(const char *host, int host_len) +static void set_thread_user_host_v1(const char *user, int user_len, + const char *host, int host_len) { PFS_thread *pfs= my_pthread_getspecific_ptr(PFS_thread*, THR_PFS); + DBUG_ASSERT((user != NULL) || (user_len == 0)); + DBUG_ASSERT(user_len >= 0); + DBUG_ASSERT((uint) user_len <= sizeof(pfs->m_username)); DBUG_ASSERT((host != NULL) || (host_len == 0)); DBUG_ASSERT(host_len >= 0); DBUG_ASSERT((uint) host_len <= sizeof(pfs->m_hostname)); - if (likely(pfs != NULL)) + if (unlikely(pfs == NULL)) + return; + + pfs->m_lock.allocated_to_dirty(); + + if (host_len > 0) + memcpy(pfs->m_hostname, host, host_len); + pfs->m_hostname_length= host_len; + + if (user_len > 0) + memcpy(pfs->m_username, user, user_len); + pfs->m_username_length= user_len; + + bool enabled= false; + if ((pfs->m_username_length > 0) && (pfs->m_hostname_length > 0)) { - pfs->m_lock.allocated_to_dirty(); - if (host_len > 0) - memcpy(pfs->m_hostname, host, host_len); - pfs->m_hostname_length= host_len; - pfs->m_lock.dirty_to_allocated(); + /* + TODO: performance improvement. + Once performance_schema.USERS is exposed, + we can use PFS_user::m_enabled instead of looking up + SETUP_ACTORS every time. + */ + lookup_setup_actor(pfs, + pfs->m_username, pfs->m_username_length, + pfs->m_hostname, pfs->m_hostname_length, + &enabled); } + pfs->m_enabled= enabled; + + pfs->m_lock.dirty_to_allocated(); } static void set_thread_db_v1(const char* db, int db_len) @@ -2146,7 +2172,7 @@ PSI_v1 PFS_v1= set_thread_id_v1, get_thread_v1, set_thread_user_v1, - set_thread_host_v1, + set_thread_user_host_v1, set_thread_db_v1, set_thread_command_v1, set_thread_start_time_v1, === modified file 'storage/perfschema/unittest/pfs-t.cc' --- a/storage/perfschema/unittest/pfs-t.cc 2010-06-15 14:23:08 +0000 +++ b/storage/perfschema/unittest/pfs-t.cc 2010-06-16 16:14:32 +0000 @@ -376,7 +376,7 @@ void test_bad_registration() ok(dummy_thread_key == 0, "zero key"); dummy_thread_key= 9999; psi->register_thread("12345678901234567890123", bad_thread_1, 1); - ok(dummy_thread_key == 1, "assigned key"); + ok(dummy_thread_key == 2, "assigned key"); /* Test that length('thread/' (7) + category + '/' (1) + name) <= 128 @@ -412,7 +412,7 @@ void test_bad_registration() ok(dummy_thread_key == 0, "zero key"); psi->register_thread("X", bad_thread_3, 1); - ok(dummy_thread_key == 2, "assigned key"); + ok(dummy_thread_key == 3, "assigned key"); /* Test that length('wait/io/file/' (13) + category + '/' (1)) < 32 --===============7464951701275027493== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marc.alff@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-next-mr-wl4674/ # testament_sha1: 6cd880e9a3e4b51460854da85e50fae62a5b662e # timestamp: 2010-06-16 10:14:53 -0600 # source_branch: file:///Users/malff/BZR_TREE/mysql-next-mr/ # base_revision_id: marc.alff@stripped\ # v4hngwnkrky51w3u # # Begin bundle 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 --===============7464951701275027493==--