Skip to content

Commit

Permalink
Merge branch 'merge-perfschema-5.6' into 10.0
Browse files Browse the repository at this point in the history
  • Loading branch information
cvicentiu committed May 16, 2017
2 parents a3cf69e + 24ff179 commit f186129
Show file tree
Hide file tree
Showing 16 changed files with 108 additions and 39 deletions.
7 changes: 7 additions & 0 deletions mysql-test/suite/perfschema/r/start_server_1_digest.result
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,7 @@
SELECT "Digest table has a size 1 and is full already." as use_case;
use_case
Digest table has a size 1 and is full already.
select SCHEMA_NAME, DIGEST, DIGEST_TEXT
from performance_schema.events_statements_summary_by_digest;
SCHEMA_NAME DIGEST DIGEST_TEXT
NULL NULL NULL
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1 @@
--performance-schema-digests-size=1
15 changes: 15 additions & 0 deletions mysql-test/suite/perfschema/t/start_server_1_digest.test
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,15 @@
# -----------------------------------------------------------------------
# Tests for the performance schema statement Digests.
# -----------------------------------------------------------------------

--source include/not_embedded.inc
--source include/have_perfschema.inc
--source include/no_protocol.inc

SELECT "Digest table has a size 1 and is full already." as use_case;

select SCHEMA_NAME, DIGEST, DIGEST_TEXT
from performance_schema.events_statements_summary_by_digest;



3 changes: 2 additions & 1 deletion storage/perfschema/pfs.cc
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -3951,9 +3951,11 @@ static PSI_file* end_file_open_wait_v1(PSI_file_locker *locker,
switch (state->m_operation) switch (state->m_operation)
{ {
case PSI_FILE_STAT: case PSI_FILE_STAT:
case PSI_FILE_RENAME:
break; break;
case PSI_FILE_STREAM_OPEN: case PSI_FILE_STREAM_OPEN:
case PSI_FILE_CREATE: case PSI_FILE_CREATE:
case PSI_FILE_OPEN:
if (result != NULL) if (result != NULL)
{ {
PFS_file_class *klass= reinterpret_cast<PFS_file_class*> (state->m_class); PFS_file_class *klass= reinterpret_cast<PFS_file_class*> (state->m_class);
Expand All @@ -3964,7 +3966,6 @@ static PSI_file* end_file_open_wait_v1(PSI_file_locker *locker,
state->m_file= reinterpret_cast<PSI_file*> (pfs_file); state->m_file= reinterpret_cast<PSI_file*> (pfs_file);
} }
break; break;
case PSI_FILE_OPEN:
default: default:
DBUG_ASSERT(false); DBUG_ASSERT(false);
break; break;
Expand Down
5 changes: 3 additions & 2 deletions storage/perfschema/pfs_digest.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -255,10 +255,11 @@ find_or_create_digest(PFS_thread *thread,
if (safe_index == 0) if (safe_index == 0)
{ {
/* Record [0] is reserved. */ /* Record [0] is reserved. */
safe_index= 1; continue;
} }


/* Add a new record in digest stat array. */ /* Add a new record in digest stat array. */
DBUG_ASSERT(safe_index < digest_max);
pfs= &statements_digest_stat_array[safe_index]; pfs= &statements_digest_stat_array[safe_index];


if (pfs->m_lock.is_free()) if (pfs->m_lock.is_free())
Expand Down
46 changes: 35 additions & 11 deletions storage/perfschema/unittest/pfs-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -27,6 +27,8 @@
#include "stub_print_error.h" #include "stub_print_error.h"
#include "stub_pfs_defaults.h" #include "stub_pfs_defaults.h"


void unload_performance_schema();

/* test helpers, to simulate the setup */ /* test helpers, to simulate the setup */


void setup_thread(PSI_thread *t, bool enabled) void setup_thread(PSI_thread *t, bool enabled)
Expand Down Expand Up @@ -126,7 +128,7 @@ void test_bootstrap()
psi_2= boot->get_interface(PSI_VERSION_2); psi_2= boot->get_interface(PSI_VERSION_2);
ok(psi_2 == NULL, "version 2"); ok(psi_2 == NULL, "version 2");


shutdown_performance_schema(); unload_performance_schema();
} }


/* /*
Expand Down Expand Up @@ -183,6 +185,28 @@ PSI * load_perfschema()
return (PSI*) psi; return (PSI*) psi;
} }


void unload_performance_schema()
{
cleanup_table_share();
cleanup_instruments();
cleanup_sync_class();
cleanup_thread_class();
cleanup_table_share();
cleanup_file_class();
cleanup_stage_class();
cleanup_statement_class();
cleanup_socket_class();
cleanup_events_waits_history_long();
cleanup_events_stages_history_long();
cleanup_events_statements_history_long();
cleanup_table_share_hash();
cleanup_file_hash();
cleanup_digest();
PFS_atomic::cleanup();

shutdown_performance_schema();
}

void test_bad_registration() void test_bad_registration()
{ {
PSI *psi; PSI *psi;
Expand Down Expand Up @@ -581,8 +605,7 @@ void test_bad_registration()
psi->register_socket("X", bad_socket_3, 1); psi->register_socket("X", bad_socket_3, 1);
ok(dummy_socket_key == 2, "assigned key"); ok(dummy_socket_key == 2, "assigned key");



unload_performance_schema();
shutdown_performance_schema();
} }


void test_init_disabled() void test_init_disabled()
Expand Down Expand Up @@ -1016,7 +1039,7 @@ void test_init_disabled()
socket_A1= psi->init_socket(99, NULL, NULL, 0); socket_A1= psi->init_socket(99, NULL, NULL, 0);
ok(socket_A1 == NULL, "broken socket key not instrumented"); ok(socket_A1 == NULL, "broken socket key not instrumented");


shutdown_performance_schema(); unload_performance_schema();
} }


void test_locker_disabled() void test_locker_disabled()
Expand Down Expand Up @@ -1322,8 +1345,9 @@ void test_locker_disabled()
ok(socket_A1 != NULL, "instrumented"); ok(socket_A1 != NULL, "instrumented");
/* Socket thread owner has not been set */ /* Socket thread owner has not been set */
socket_locker= psi->start_socket_wait(&socket_state, socket_A1, PSI_SOCKET_SEND, 12, "foo.cc", 12); socket_locker= psi->start_socket_wait(&socket_state, socket_A1, PSI_SOCKET_SEND, 12, "foo.cc", 12);
ok(socket_locker == NULL, "no locker (no thread owner)"); ok(socket_locker != NULL, "locker (owner not used)");

psi->end_socket_wait(socket_locker, 10);

/* Pretend the running thread is not instrumented */ /* Pretend the running thread is not instrumented */
/* ---------------------------------------------- */ /* ---------------------------------------------- */


Expand Down Expand Up @@ -1351,7 +1375,7 @@ void test_locker_disabled()
socket_locker= psi->start_socket_wait(&socket_state, socket_A1, PSI_SOCKET_SEND, 12, "foo.cc", 12); socket_locker= psi->start_socket_wait(&socket_state, socket_A1, PSI_SOCKET_SEND, 12, "foo.cc", 12);
ok(socket_locker == NULL, "no locker"); ok(socket_locker == NULL, "no locker");


shutdown_performance_schema(); unload_performance_schema();
} }


void test_file_instrumentation_leak() void test_file_instrumentation_leak()
Expand Down Expand Up @@ -1438,7 +1462,7 @@ void test_file_instrumentation_leak()
file_locker= psi->get_thread_file_descriptor_locker(&file_state, (File) 12, PSI_FILE_WRITE); file_locker= psi->get_thread_file_descriptor_locker(&file_state, (File) 12, PSI_FILE_WRITE);
ok(file_locker == NULL, "no locker, no leak"); ok(file_locker == NULL, "no locker, no leak");


shutdown_performance_schema(); unload_performance_schema();
} }


void test_enabled() void test_enabled()
Expand Down Expand Up @@ -1474,7 +1498,7 @@ void test_enabled()
{ & cond_key_B, "C-B", 0} { & cond_key_B, "C-B", 0}
}; };


shutdown_performance_schema(); unload_performance_schema();
#endif #endif
} }


Expand Down Expand Up @@ -1644,5 +1668,5 @@ int main(int argc, char **argv)
MY_INIT(argv[0]); MY_INIT(argv[0]);
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }
4 changes: 2 additions & 2 deletions storage/perfschema/unittest/pfs_account-oom-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -112,6 +112,6 @@ int main(int, char **)
MY_INIT("pfs_account-oom-t"); MY_INIT("pfs_account-oom-t");
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }


4 changes: 2 additions & 2 deletions storage/perfschema/unittest/pfs_connect_attr-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -341,5 +341,5 @@ int main(int, char **)
diag("skipping the cp1251 tests : missing character set"); diag("skipping the cp1251 tests : missing character set");
plan(59 + (cs_cp1251 ? 10 : 0)); plan(59 + (cs_cp1251 ? 10 : 0));
do_all_tests(); do_all_tests();
return 0; return (exit_status());
} }
4 changes: 2 additions & 2 deletions storage/perfschema/unittest/pfs_host-oom-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -112,6 +112,6 @@ int main(int, char **)
MY_INIT("pfs_host-oom-t"); MY_INIT("pfs_host-oom-t");
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }


29 changes: 25 additions & 4 deletions storage/perfschema/unittest/pfs_instr-oom-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -355,6 +355,11 @@ void test_oom()
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (per thread wait)"); ok(rc == 1, "oom (per thread wait)");


cleanup_sync_class();
cleanup_thread_class();
cleanup_file_class();
cleanup_instruments();

param.m_enabled= true; param.m_enabled= true;
param.m_mutex_class_sizing= 0; param.m_mutex_class_sizing= 0;
param.m_rwlock_class_sizing= 0; param.m_rwlock_class_sizing= 0;
Expand Down Expand Up @@ -432,6 +437,8 @@ void test_oom()
init_event_name_sizing(& param); init_event_name_sizing(& param);
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (thread stages history sizing)"); ok(rc == 1, "oom (thread stages history sizing)");

cleanup_thread_class();
cleanup_instruments(); cleanup_instruments();


param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -467,6 +474,9 @@ void test_oom()
init_event_name_sizing(& param); init_event_name_sizing(& param);
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (per thread stages)"); ok(rc == 1, "oom (per thread stages)");

cleanup_stage_class();
cleanup_thread_class();
cleanup_instruments(); cleanup_instruments();


param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -502,6 +512,8 @@ void test_oom()
init_event_name_sizing(& param); init_event_name_sizing(& param);
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (thread statements history sizing)"); ok(rc == 1, "oom (thread statements history sizing)");

cleanup_thread_class();
cleanup_instruments(); cleanup_instruments();


param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -537,6 +549,9 @@ void test_oom()
init_event_name_sizing(& param); init_event_name_sizing(& param);
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (per thread statements)"); ok(rc == 1, "oom (per thread statements)");

cleanup_statement_class();
cleanup_thread_class();
cleanup_instruments(); cleanup_instruments();


param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -572,6 +587,8 @@ void test_oom()
init_event_name_sizing(& param); init_event_name_sizing(& param);
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (global waits)"); ok(rc == 1, "oom (global waits)");

cleanup_sync_class();
cleanup_instruments(); cleanup_instruments();


param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -609,8 +626,10 @@ void test_oom()
ok(rc == 0, "init stage class"); ok(rc == 0, "init stage class");
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (global stages)"); ok(rc == 1, "oom (global stages)");
cleanup_instruments();
cleanup_sync_class();
cleanup_stage_class(); cleanup_stage_class();
cleanup_instruments();


param.m_enabled= true; param.m_enabled= true;
param.m_mutex_class_sizing= 10; param.m_mutex_class_sizing= 10;
Expand Down Expand Up @@ -647,8 +666,10 @@ void test_oom()
ok(rc == 0, "init statement class"); ok(rc == 0, "init statement class");
rc= init_instruments(& param); rc= init_instruments(& param);
ok(rc == 1, "oom (global statements)"); ok(rc == 1, "oom (global statements)");
cleanup_instruments();
cleanup_sync_class();
cleanup_statement_class(); cleanup_statement_class();
cleanup_instruments();
} }


void do_all_tests() void do_all_tests()
Expand All @@ -666,6 +687,6 @@ int main(int argc, char **argv)
MY_INIT(argv[0]); MY_INIT(argv[0]);
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }


9 changes: 4 additions & 5 deletions storage/perfschema/unittest/pfs_instr-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand All @@ -23,10 +23,11 @@


#include <memory.h> #include <memory.h>


PFS_global_param param;

void test_no_instruments() void test_no_instruments()
{ {
int rc; int rc;
PFS_global_param param;


memset(& param, 0xFF, sizeof(param)); memset(& param, 0xFF, sizeof(param));
param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -86,7 +87,6 @@ void test_no_instances()
PFS_file *file; PFS_file *file;
PFS_socket *socket; PFS_socket *socket;
PFS_table *table; PFS_table *table;
PFS_global_param param;


memset(& param, 0xFF, sizeof(param)); memset(& param, 0xFF, sizeof(param));
param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -227,7 +227,6 @@ void test_with_instances()
PFS_socket *socket_2; PFS_socket *socket_2;
PFS_table *table_1; PFS_table *table_1;
PFS_table *table_2; PFS_table *table_2;
PFS_global_param param;


memset(& param, 0xFF, sizeof(param)); memset(& param, 0xFF, sizeof(param));
param.m_enabled= true; param.m_enabled= true;
Expand Down Expand Up @@ -418,6 +417,6 @@ int main(int argc, char **argv)
MY_INIT(argv[0]); MY_INIT(argv[0]);
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }


4 changes: 2 additions & 2 deletions storage/perfschema/unittest/pfs_instr_class-oom-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -68,6 +68,6 @@ int main(int argc, char **argv)
MY_INIT(argv[0]); MY_INIT(argv[0]);
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }


4 changes: 2 additions & 2 deletions storage/perfschema/unittest/pfs_instr_class-t.cc
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved. /* Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
Expand Down Expand Up @@ -674,5 +674,5 @@ int main(int argc, char **argv)
MY_INIT(argv[0]); MY_INIT(argv[0]);
do_all_tests(); do_all_tests();
my_end(0); my_end(0);
return exit_status(); return (exit_status());
} }
Loading

0 comments on commit f186129

Please sign in to comment.