List:Commits« Previous MessageNext Message »
From:Marc Alff Date:December 1 2010 7:08pm
Subject:bzr commit into mysql-trunk-bugfixing branch (marc.alff:3402)
View as plain text  
#At file:///Users/malff/BZR_TREE/mysql-trunk-bugfixing-58620/ based on revid:marc.alff@stripped

 3402 Marc Alff	2010-12-01 [merge]
      Local merge

    added:
      mysql-test/suite/perfschema/r/dml_threads.result
      mysql-test/suite/perfschema/r/thread_cache.result
      mysql-test/suite/perfschema/t/dml_threads.test
      mysql-test/suite/perfschema/t/thread_cache.test
    modified:
      BUILD/build_mccge.sh
      mysql-test/suite/perfschema/include/privilege.inc
      mysql-test/suite/perfschema/r/dml_cond_instances.result
      mysql-test/suite/perfschema/r/dml_ews_by_instance.result
      mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result
      mysql-test/suite/perfschema/r/dml_ews_global_by_event_name.result
      mysql-test/suite/perfschema/r/dml_file_instances.result
      mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result
      mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result
      mysql-test/suite/perfschema/r/dml_mutex_instances.result
      mysql-test/suite/perfschema/r/dml_rwlock_instances.result
      mysql-test/suite/perfschema/r/misc.result
      mysql-test/suite/perfschema/r/myisam_file_io.result
      mysql-test/suite/perfschema/r/privilege.result
      mysql-test/suite/perfschema/t/dml_cond_instances.test
      mysql-test/suite/perfschema/t/dml_ews_by_instance.test
      mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test
      mysql-test/suite/perfschema/t/dml_ews_global_by_event_name.test
      mysql-test/suite/perfschema/t/dml_file_instances.test
      mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test
      mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test
      mysql-test/suite/perfschema/t/dml_mutex_instances.test
      mysql-test/suite/perfschema/t/dml_rwlock_instances.test
      mysql-test/suite/perfschema/t/misc.test
      mysql-test/suite/perfschema/t/myisam_file_io.test
      storage/perfschema/ha_perfschema.cc
      storage/perfschema/ha_perfschema.h
      storage/perfschema/pfs_engine_table.cc
      storage/perfschema/table_setup_actors.cc
      storage/perfschema/table_setup_consumers.cc
      storage/perfschema/table_setup_instruments.cc
      storage/perfschema/table_setup_timers.cc
      storage/perfschema/table_threads.cc
=== modified file 'BUILD/build_mccge.sh'
--- a/BUILD/build_mccge.sh	2010-09-27 11:37:21 +0000
+++ b/BUILD/build_mccge.sh	2010-12-01 12:44:00 +0000
@@ -42,9 +42,7 @@ cat <<EOF
   Options used with this script always override any default behaviour. 
   The default package is MySQL Cluster Carrier Grade (standard) Edition. 
   For developers, the default package is MySQL Cluster Carrier Grade 
-  Extended Edition, and the default build behaviour is to build with
-  autotools. If you want to skip autotools and start from a source code
-  release you can use the --no-autotools flag.
+  Extended Edition.
 
   More information for developers can be found in --help, 
   --sysadmin-help, and --extended-help.
@@ -102,7 +100,8 @@ cat <<EOF
   If your building on a Solaris SPARC machine and you want to compile
   using SunStudio you must set 
   --compiler=forte; if you want to build using the Intel compiler on 
-  Linux, you need to set --compiler=icc.
+  Linux, you need to set --compiler=icc. If you want to use the AMD
+  compiler Open64 set --compiler=open64.
 
   A synonym for forte is SunStudio, so one can also use
   --compiler=SunStudio.
@@ -150,14 +149,32 @@ Usage: $0 [options]
   --without-debug         Build non-debug version
   --use-comment           Set the comment in the build
   --with-fast-mutexes     Use try/retry method of acquiring mutex
+  --without-fast-mutexes  Don't use try/retry method of acquiring mutex
+  --without-perfschema    Don't build with performance schema
+  --generate-feedback path Compile with feedback using the specified directory
+                          to store the feedback files
+  --use-feedback path     Compile using feedback information from the specified
+                          directory
   --with-debug            Build debug version
+  --extra-debug-flag flag Add -Dflag to compiler flags
+                          InnoDB supports the following debug flags,
+                          UNIV_DEBUG, UNIV_SYNC_DEBUG, UNIV_MEM_DEBUG,
+                          UNIV_DEBUG_THREAD_CREATION, UNIV_DEBUG_LOCK_VALIDATE,
+                          UNIV_DEBUG_PRINT, UNIV_DEBUG_FILE_ACCESS,
+                          UNIV_LIGHT_MEM_DEBUG, UNIV_LOG_DEBUG,
+                          UNIV_IBUF_COUNT_DEBUG, UNIV_SEARCH_DEBUG,
+                          UNIV_LOG_LSN_DEBUG, UNIV_ZIP_DEBUG, UNIV_AHI_DEBUG,
+                          UNIV_DEBUG_VALGRIND, UNIV_SQL_DEBUG, UNIV_AIO_DEBUG,
+                          UNIV_BTR_DEBUG, UNIV_LRU_DEBUG, UNIV_BUF_DEBUG,
+                          UNIV_HASH_DEBUG, UNIV_LIST_DEBUG, UNIV_IBUF_DEBUG
   --with-link-time-optimizer
                           Link time optimizations enabled (Requires GCC 4.5
                           if GCC used), available for icc as well. This flag
                           is only considered if also fast is set.
+  --with-mso              Special flag used by Open64 compiler (requres at
+                          least version 4.2.3) that enables optimisations
+                          for multi-core scalability.
   --configure-only        Stop after running configure.
-  --use-autotools         Start by running autoconf, automake,.. tools
-  --no-autotools          Start from configure
   --print-only            Print commands that the script will execute, 
                           but do not actually execute
   --prefix=path           Build with prefix 'path'
@@ -170,7 +187,7 @@ Usage: $0 [options]
                           MySQL use
   --commercial            Use commercial libraries
   --gpl                   Use gpl libraries
-  --compiler=[gcc|icc|forte|SunStudio]        Select compiler
+  --compiler=[gcc|icc|forte|SunStudio|open64] Select compiler
   --cpu=[x86|x86_64|sparc|itanium]            Select CPU type
                           x86 => x86 and 32-bit binary
                           x86_64 => x86 and 64 bit binary
@@ -389,7 +406,8 @@ extended_usage()
     platforms supported by this script.
 
     The --fast option adds -mtune=cpu_arg to the C/C++ flags (provides
-    support for Nocona, K8, and other processors).
+    support for Nocona, K8, and other processors), this option is valid
+    when gcc is the compiler.
 
     Use of the --debug option adds -g to the C/C++ flags.
 
@@ -397,10 +415,35 @@ extended_usage()
     by calling the script as follows:
     CC="/usr/local/bin/gcc" CXX="/usr/local/bin/gcc" BUILD/build_mccge.sh
 
-  FreeBSD/x86/gcc
-  ---------------
-    No flags are used. Instead, configure determines the proper flags to 
-    use.
+  Feedback profiler on gcc
+  ------------------------
+  Using gcc --generate-feedback=path causes the following flags to be added
+  to the compiler flags.
+
+  --fprofile-generate
+  --fprofile-dir=path
+
+  Using gcc with --use-feedback=path causes the following flags to be added
+  to the compiler flags. --fprofile-correction indicates MySQL is a multi-
+  threaded application and thus counters can be inconsistent with each other
+  and the compiler should take this into account.
+
+  --fprofile-use
+  --fprofile-dir=path
+  --fprofile-correction
+
+  Feedback compilation using Open64
+  ---------------------------------
+
+  Using Open64 with --generate-feedback=path causes the following flags to
+  be added to the compiler flags.
+
+  -fb-create path/feedback
+
+  Using Open64 with --use-feedback=path causes the following flags to be
+  added to the compiler flags.
+
+  --fb-opt path/feedback
 
   Linux/x86+Itanium/gcc
   -------------
@@ -410,6 +453,9 @@ extended_usage()
     added to the C/C++ flags. (To build a 32-bit binary on a 64-bit CPU,
     use the --32 option as described previously.)
 
+    When gcc 4.5 is used and the user set --with-link-time-optimizer then
+    also --flto is added to compiler flags and linker flags.
+
   Linux/x86+Itanium/icc
   -------------
     Flags used:
@@ -433,6 +479,19 @@ extended_usage()
     added to the C/C++ flags; this provides optimisations specific to Core 
     2 Duo. This is added only when the --fast flag is set.
 
+  Linux/x86/Open64
+  ----------------
+    For normal builds use -O3, when fast flag is set one also adds
+    --march=auto to generate optimized builds for the CPU used. If
+    --with-link-time-optimizer is set also -ipa is set. There is also
+    a special flag --with-mso which can be set to get --mso set which
+    activates optimisation for multi-core scalability.
+
+  FreeBSD/x86/gcc
+  ---------------
+    No flags are used. Instead, configure determines the proper flags to 
+    use.
+
   Solaris/x86/gcc
   ---------------
     All builds on Solaris are by default 64-bit, so -m64 is always used in
@@ -653,6 +712,9 @@ parse_compiler()
     forte | SunStudio | sunstudio )
       compiler="forte"
       ;;
+    open64 | Open64 )
+      compiler="open64"
+      ;;
     *)
       echo "Unknown compiler '$compiler'"
       exit 1
@@ -686,6 +748,15 @@ parse_options()
     --with-fast-mutexes)
       with_fast_mutexes="yes"
       ;;
+    --without-fast-mutexes)
+      with_fast_mutexes="no"
+      ;;
+    --without-perfschema)
+      with_perfschema="no"
+      ;;
+    --with-mso)
+      with_mso="yes"
+      ;;
     --use-tcmalloc)
       use_tcmalloc="yes"
       ;;
@@ -693,6 +764,10 @@ parse_options()
       with_debug_flag="yes"
       fast_flag="no"
       ;;
+    --extra-debug-flag)
+      shift
+      extra_debug_flags="$extra_debug_flags -D$1"
+      ;;
     --debug)
       compile_debug_flag="yes"
       ;;
@@ -712,6 +787,14 @@ parse_options()
       compiler=`get_key_value "$1"`
       parse_compiler
       ;;
+    --generate-feedback)
+      shift
+      GENERATE_FEEDBACK_PATH="$1"
+      ;;
+    --use-feedback)
+      shift
+      USE_FEEDBACK_PATH="$1"
+      ;;
     --cpu=*)
       cpu_type=`get_key_value "$1"`
       parse_cpu_type
@@ -746,12 +829,6 @@ parse_options()
     --parallelism=*)
       parallelism=`get_key_value "$1"`
       ;;
-    --use-autotools)
-      use_autotools="yes"
-      ;;
-    --no-autotools)
-      use_autotools="no"
-      ;;
     --configure-only)
       just_configure="yes"
       ;;
@@ -896,6 +973,9 @@ set_cpu_base()
 # 
 init_configure_commands()
 {
+  path=`dirname $0`
+  cp $path/cmake_configure.sh $path/../configure
+  chmod +x $path/../configure
   cflags="$c_warnings $base_cflags $compiler_flags"
   cxxflags="$cxx_warnings $base_cxxflags $compiler_flags"
   configure="./configure $base_configs $with_flags"
@@ -1084,6 +1164,7 @@ set_with_debug_flags()
       loc_debug_flags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS "
       compiler_flags="$compiler_flags $loc_debug_flags"
     fi
+    compiler_flags="$compiler_flags $extra_debug_flags"
   fi
 }
 
@@ -1105,7 +1186,7 @@ set_no_omit_frame_pointer_for_developers
 #
 set_debug_flag()
 {
-  if test "x$compile_debug_flags" = "xyes" ; then
+  if test "x$compile_debug_flag" = "xyes" ; then
     compiler_flags="$compiler_flags -g"
   fi
 }
@@ -1152,7 +1233,9 @@ set_base_configs()
   fi
   base_configs="$base_configs --with-pic"
   base_configs="$base_configs --with-csv-storage-engine"
-  base_configs="$base_configs --with-perfschema"
+  if test "x$with_perfschema" != "xno" ; then
+    base_configs="$base_configs --with-perfschema"
+  fi
 }
 
 #
@@ -1251,6 +1334,19 @@ set_gcc_special_options()
   fi
 }
 
+#
+# If we discover a Core 2 Duo architecture and we have enabled the fast
+# flag, we enable a compile especially optimised for Core 2 Duo. This
+# feature is currently available on Intel's icc compiler only.
+#
+set_icc_special_options()
+{
+  if test "x$fast_flag" = "xyes" && test "x$cpu_arg" = "xcore2" && \
+     test "x$compiler" = "xicc" ; then
+    compiler_flags="$compiler_flags -xT"
+  fi
+}
+
 set_cc_and_cxx_for_gcc()
 {
   if test "x$CC" = "x" ; then
@@ -1271,26 +1367,23 @@ set_cc_and_cxx_for_icc()
   fi
 }
 
-set_cc_and_cxx_for_forte()
+set_cc_and_cxx_for_open64()
 {
   if test "x$CC" = "x" ; then
-    CC="cc"
+    CC="opencc -static-libgcc -fno-exceptions"
   fi
   if test "x$CXX" = "x" ; then
-    CXX="CC"
+    CXX="openCC -static-libgcc -fno-exceptions"
   fi
 }
 
-#
-# If we discover a Core 2 Duo architecture and we have enabled the fast
-# flag, we enable a compile especially optimised for Core 2 Duo. This
-# feature is currently available on Intel's icc compiler only.
-#
-set_icc_special_options()
+set_cc_and_cxx_for_forte()
 {
-  if test "x$fast_flag" = "xyes" && test "x$cpu_arg" = "xcore2" && \
-     test "x$compiler" = "xicc" ; then
-    compiler_flags="$compiler_flags -xT"
+  if test "x$CC" = "x" ; then
+    CC="cc"
+  fi
+  if test "x$CXX" = "x" ; then
+    CXX="CC"
   fi
 }
 
@@ -1358,11 +1451,44 @@ get_gcc_version()
 }
 
 #
+# Link time optimizer (interprocedural optimizations) for Open64
+#
+check_for_open64_link_time_optimizer()
+{
+  if test "x$with_link_time_optimizer" = "xyes" ; then
+    compiler_flags="$compiler_flags -ipa"
+    LDFLAGS="$LDFLAGS -ipa"
+  fi
+}
+
+#
+# Link time optimizer (interprocedural optimizations) for icc
+#
+check_for_icc_link_time_optimizer()
+{
+  if test "x$with_link_time_optimizer" = "xyes" ; then
+    compiler_flags="$compiler_flags -ipo"
+    LDFLAGS="$LDFLAGS -ipo"
+  fi
+}
+
+#
+# Link time optimizer (interprocedural optimizations) for forte
+#
+check_for_forte_link_time_optimizer()
+{
+  if test "x$with_link_time_optimizer" = "xyes" ; then
+    compiler_flags="$compiler_flags -ipo"
+    LDFLAGS="$LDFLAGS -ipo"
+  fi
+}
+
+#
 # Link Time Optimizer in GCC (LTO) uses a parameter -flto
 # which was added to GCC 4.5, if --with-link-time-optimizer
 # is set then use this feature
 #
-check_for_link_time_optimizer()
+check_for_gcc_link_time_optimizer()
 {
   get_gcc_version
   if test "$gcc_version" -ge 405 && \
@@ -1371,11 +1497,37 @@ check_for_link_time_optimizer()
     LDFLAGS="$LDFLAGS -flto"
   fi
 }
+
+set_feedback_for_gcc()
+{
+  if test "x$GENERATE_FEEDBACK_PATH" != "x" ; then
+    compiler_flags="$compiler_flags -fprofile-generate"
+    compiler_flags="$compiler_flags -fprofile-dir=$GENERATE_FEEDBACK_PATH"
+  elif test "x$USE_FEEDBACK_PATH" != "x" ; then
+    compiler_flags="$compiler_flags -fprofile-use"
+    compiler_flags="$compiler_flags -fprofile-correction"
+    compiler_flags="$compiler_flags -fprofile-dir=$USE_FEEDBACK_PATH"
+  fi
+}
+
+set_feedback_for_open64()
+{
+  if test "x$GENERATE_FEEDBACK_PATH" != "x" ; then
+    compiler_flags="$compiler_flags --fb-create=$GENERATE_FEEDBACK_PATH/feedback"
+  elif test "x$USE_FEEDBACK_PATH" != "x" ; then
+    compiler_flags="$compiler_flags --fb-opt=$USE_FEEDBACK_PATH/feedback"
+  fi
+}
+
 #
 # Linux Section
 #
 set_linux_configs()
 {
+# Default to use --with-fast-mutexes on Linux
+  if test "x$with_fast_mutexes" = "x" ; then
+    base_configs="$base_configs --with-fast-mutexes"
+  fi
   if test "x$cpu_base_type" != "xx86" && \
      test "x$cpu_base_type" != "xitanium" ; then
     usage "Only x86 and Itanium CPUs supported for Linux"
@@ -1392,19 +1544,14 @@ set_linux_configs()
     if test "x$fast_flag" != "xno" ; then
       if test "x$fast_flag" = "xyes" ; then
         compiler_flags="$compiler_flags -O3"
-        check_for_link_time_optimizer
+        check_for_gcc_link_time_optimizer
       else
-        compiler_flags="$compiler_flags -O2"
+        compiler_flags="$compiler_flags -O3"
       fi
     else
       compiler_flags="$compiler_flags -O0"
     fi
-    check_64_bits
-    if test "x$m64" = "xyes" ; then
-      compiler_flags="$compiler_flags -m64"
-    else
-      compiler_flags="$compiler_flags -m32"
-    fi
+    set_feedback_for_gcc
 # configure will set proper compiler flags for gcc on Linux
   elif test "x$compiler" = "xicc" ; then
     compiler_flags="$compiler_flags -mp -restrict"
@@ -1414,16 +1561,36 @@ set_linux_configs()
     fi
     if test "x$fast_flag" != "xno" ; then
       compiler_flags="$compiler_flags -O3 -unroll2 -ip"
-      if test "x$fast_flag" = "xyes" && \
-         test "x$with_link_time_optimizer" = "xyes" ; then
-        compiler_flags="$compiler_flags -ipo"
-        LDFLAGS="$LDFLAGS -ipo"
+      if test "x$fast_flag" = "xyes" ; then
+        check_for_icc_link_time_optimizer
+      fi
+    fi
+  elif test "x$compiler" = "xopen64" ; then
+    set_cc_and_cxx_for_open64
+    if test "x$fast_flag" != "xno" ; then
+      if test "x$fast_flag" = "xyes" ; then
+        compiler_flags="$compiler_flags -O3"
+#       Generate code specific for the machine you run on
+        compiler_flags="$compiler_flags -march=auto"
+        check_for_open64_link_time_optimizer
+        if test "x$with_mso" = "xyes" ; then
+          compiler_flags="$compiler_flags -mso"
+        fi
+      else
+        compiler_flags="$compiler_flags -O3"
       fi
     fi
+    set_feedback_for_open64
   else
-    usage "Only gcc and icc compilers supported for Linux"
+    usage "Only gcc,icc and Open64 compilers supported for Linux"
     exit 1
   fi
+  check_64_bits
+  if test "x$m64" = "xyes" ; then
+    compiler_flags="$compiler_flags -m64"
+  else
+    compiler_flags="$compiler_flags -m32"
+  fi
 }
 
 #
@@ -1475,7 +1642,7 @@ set_solaris_configs()
     if test "x$fast_flag" = "xyes" ; then
       LDFLAGS="$LDFLAGS -O3"
       compiler_flags="$compiler_flags -O3"
-      check_for_link_time_optimizer
+      check_for_gcc_link_time_optimizer
     else
       if test "x$fast_flag" = "xgeneric" ; then
         LDFLAGS="$LDFLAGS -O2"
@@ -1498,10 +1665,7 @@ set_solaris_configs()
     if test "x$fast_flag" = "xyes" ; then
       compiler_flags="$compiler_flags -xtarget=native"
       compiler_flags="$compiler_flags -xunroll=3"
-      if test "x$with_link_time_optimizer" = "xyes" ; then
-        compiler_flags="$compiler_flags -xipo"
-        LDFLAGS="$LDFLAGS -xipo"
-      fi
+      check_for_forte_link_time_optimizer
     else
       compiler_flags="$compiler_flags -xtarget=generic"
     fi
@@ -1612,17 +1776,6 @@ set_default_package()
   fi
 }
 
-set_autotool_flags()
-{
-  if test "x$use_autotools" = "x" ; then
-    if test "x$developer_flag" = "xno" ; then
-      use_autotools="no"
-    else
-      use_autotools="yes"
-    fi
-  fi
-}
-
 set_defaults_based_on_environment()
 {
   if test ! -z "$MYSQL_DEVELOPER" ; then
@@ -1674,25 +1827,28 @@ base_cxxflags=
 base_configs=
 debug_flags=
 cxxflags=
+extra_debug_flags=
 m64=
 explicit_size_set=
 datadir=
 commands=
-use_autotools=
 engine_configs=
 ASFLAGS=
 LDFLAGS=
 use_tcmalloc=
 without_comment="yes"
 with_fast_mutexes=
+with_perfschema="yes"
 with_link_time_optimizer=
+with_mso=
 gcc_version="0"
+generate_feedback_path=
+use_feedback_path=
 
 set_defaults_based_on_environment
 
 parse_options "$@"
 
-set_autotool_flags
 set_default_package
 
 set -e
@@ -1793,9 +1949,6 @@ set_ccache_usage
 # Set up commands variable from variables prepared for base 
 # configurations, compiler flags, and warnings flags.
 # 
-if test "x$use_autotools" = "xyes" ; then
-  init_auto_commands
-fi
 init_configure_commands
 
 if test "x$just_configure" != "xyes" ; then
@@ -1806,8 +1959,8 @@ fi
 # The commands variable now contains the entire command to be run for
 # the build; we either execute it, or merely print it out.
 #
-if test "x$just_print" = "xyes" ; then
-  echo "$commands"
-else
+echo "Running command:"
+echo "$commands"
+if test "x$just_print" != "xyes" ; then
   eval "set -x; $commands"
 fi

=== modified file 'mysql-test/suite/perfschema/include/privilege.inc'
--- a/mysql-test/suite/perfschema/include/privilege.inc	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/include/privilege.inc	2010-12-01 18:46:51 +0000
@@ -100,16 +100,16 @@ create trigger performance_schema.bi_fil
   before insert on performance_schema.file_instances
   for each row begin end;
 
---error ER_WRONG_PERFSCHEMA_USAGE
+--error ER_CANT_CREATE_TABLE
 create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
 
---error ER_WRONG_PERFSCHEMA_USAGE
+--error ER_CANT_CREATE_TABLE
 create table test.t1 like performance_schema.setup_instruments;
 
---error ER_WRONG_PERFSCHEMA_USAGE
+--error ER_CANT_CREATE_TABLE
 create table test.t1 like performance_schema.events_waits_current;
 
---error ER_WRONG_PERFSCHEMA_USAGE
+--error ER_CANT_CREATE_TABLE
 create table test.t1 like performance_schema.file_instances;
 
 --error ER_TABLEACCESS_DENIED_ERROR

=== modified file 'mysql-test/suite/perfschema/r/dml_cond_instances.result'
--- a/mysql-test/suite/perfschema/r/dml_cond_instances.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_cond_instances.result	2010-12-01 18:46:51 +0000
@@ -1,9 +1,6 @@
 select * from performance_schema.cond_instances limit 1;
-NAME	OBJECT_INSTANCE_BEGIN
-#	#
 select * from performance_schema.cond_instances
 where name='FOO';
-NAME	OBJECT_INSTANCE_BEGIN
 insert into performance_schema.cond_instances
 set name='FOO', object_instance_begin=12;
 ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'cond_instances'

=== modified file 'mysql-test/suite/perfschema/r/dml_ews_by_instance.result'
--- a/mysql-test/suite/perfschema/r/dml_ews_by_instance.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_ews_by_instance.result	2010-12-01 18:46:51 +0000
@@ -1,26 +1,15 @@
 select * from performance_schema.events_waits_summary_by_instance
 where event_name like 'Wait/Synch/%' limit 1;
-EVENT_NAME	OBJECT_INSTANCE_BEGIN	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#	#
 select * from performance_schema.events_waits_summary_by_instance
 where event_name='FOO';
-EVENT_NAME	OBJECT_INSTANCE_BEGIN	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
 select * from performance_schema.events_waits_summary_by_instance
 order by count_star limit 1;
-EVENT_NAME	OBJECT_INSTANCE_BEGIN	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#	#
 select * from performance_schema.events_waits_summary_by_instance
 order by count_star desc limit 1;
-EVENT_NAME	OBJECT_INSTANCE_BEGIN	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#	#
 select * from performance_schema.events_waits_summary_by_instance
 where min_timer_wait > 0 order by count_star limit 1;
-EVENT_NAME	OBJECT_INSTANCE_BEGIN	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#	#
 select * from performance_schema.events_waits_summary_by_instance
 where min_timer_wait > 0 order by count_star desc limit 1;
-EVENT_NAME	OBJECT_INSTANCE_BEGIN	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#	#
 insert into performance_schema.events_waits_summary_by_instance
 set event_name='FOO', object_instance_begin=0,
 count_star=1, sum_timer_wait=2, min_timer_wait=3,

=== modified file 'mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result'
--- a/mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_ews_by_thread_by_event_name.result	2010-12-01 18:46:51 +0000
@@ -1,10 +1,7 @@
 select * from performance_schema.events_waits_summary_by_thread_by_event_name
 where event_name like 'Wait/Synch/%' limit 1;
-THREAD_ID	EVENT_NAME	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#	#
 select * from performance_schema.events_waits_summary_by_thread_by_event_name
 where event_name='FOO';
-THREAD_ID	EVENT_NAME	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
 insert into performance_schema.events_waits_summary_by_thread_by_event_name
 set event_name='FOO', thread_id=1,
 count_star=1, sum_timer_wait=2, min_timer_wait=3,

=== modified file 'mysql-test/suite/perfschema/r/dml_ews_global_by_event_name.result'
--- a/mysql-test/suite/perfschema/r/dml_ews_global_by_event_name.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_ews_global_by_event_name.result	2010-12-01 18:46:51 +0000
@@ -1,10 +1,7 @@
 select * from performance_schema.events_waits_summary_global_by_event_name
 where event_name like 'Wait/Synch/%' limit 1;
-EVENT_NAME	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
-#	#	#	#	#	#
 select * from performance_schema.events_waits_summary_global_by_event_name
 where event_name='FOO';
-EVENT_NAME	COUNT_STAR	SUM_TIMER_WAIT	MIN_TIMER_WAIT	AVG_TIMER_WAIT	MAX_TIMER_WAIT
 insert into performance_schema.events_waits_summary_global_by_event_name
 set event_name='FOO', count_star=1, sum_timer_wait=2, min_timer_wait=3,
 avg_timer_wait=4, max_timer_wait=5;

=== modified file 'mysql-test/suite/perfschema/r/dml_file_instances.result'
--- a/mysql-test/suite/perfschema/r/dml_file_instances.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_file_instances.result	2010-12-01 18:46:51 +0000
@@ -1,9 +1,6 @@
 select * from performance_schema.file_instances limit 1;
-FILE_NAME	EVENT_NAME	OPEN_COUNT
-#	#	#
 select * from performance_schema.file_instances
 where file_name='FOO';
-FILE_NAME	EVENT_NAME	OPEN_COUNT
 insert into performance_schema.file_instances
 set file_name='FOO', event_name='BAR', open_count=12;
 ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'file_instances'

=== modified file 'mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result'
--- a/mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_file_summary_by_event_name.result	2010-12-01 18:46:51 +0000
@@ -1,10 +1,7 @@
 select * from performance_schema.file_summary_by_event_name
 where event_name like 'Wait/io/%' limit 1;
-EVENT_NAME	COUNT_READ	COUNT_WRITE	SUM_NUMBER_OF_BYTES_READ	SUM_NUMBER_OF_BYTES_WRITE
-#	#	#	#	#
 select * from performance_schema.file_summary_by_event_name
 where event_name='FOO';
-EVENT_NAME	COUNT_READ	COUNT_WRITE	SUM_NUMBER_OF_BYTES_READ	SUM_NUMBER_OF_BYTES_WRITE
 insert into performance_schema.file_summary_by_event_name
 set event_name='FOO', count_read=1, count_write=2,
 sum_number_of_bytes_read=4, sum_number_of_bytes_write=5;

=== modified file 'mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result'
--- a/mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_file_summary_by_instance.result	2010-12-01 18:46:51 +0000
@@ -1,10 +1,7 @@
 select * from performance_schema.file_summary_by_instance
 where event_name like 'Wait/io/%' limit 1;
-FILE_NAME	EVENT_NAME	COUNT_READ	COUNT_WRITE	SUM_NUMBER_OF_BYTES_READ	SUM_NUMBER_OF_BYTES_WRITE
-#	#	#	#	#	#
 select * from performance_schema.file_summary_by_instance
 where event_name='FOO';
-FILE_NAME	EVENT_NAME	COUNT_READ	COUNT_WRITE	SUM_NUMBER_OF_BYTES_READ	SUM_NUMBER_OF_BYTES_WRITE
 insert into performance_schema.file_summary_by_instance
 set event_name='FOO', count_read=1, count_write=2,
 sum_number_of_bytes_read=4, sum_number_of_bytes_write=5;

=== modified file 'mysql-test/suite/perfschema/r/dml_mutex_instances.result'
--- a/mysql-test/suite/perfschema/r/dml_mutex_instances.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_mutex_instances.result	2010-12-01 18:46:51 +0000
@@ -1,9 +1,6 @@
 select * from performance_schema.mutex_instances limit 1;
-NAME	OBJECT_INSTANCE_BEGIN	LOCKED_BY_THREAD_ID
-#	#	#
 select * from performance_schema.mutex_instances
 where name='FOO';
-NAME	OBJECT_INSTANCE_BEGIN	LOCKED_BY_THREAD_ID
 insert into performance_schema.mutex_instances
 set name='FOO', object_instance_begin=12;
 ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'mutex_instances'

=== modified file 'mysql-test/suite/perfschema/r/dml_rwlock_instances.result'
--- a/mysql-test/suite/perfschema/r/dml_rwlock_instances.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/dml_rwlock_instances.result	2010-12-01 18:46:51 +0000
@@ -1,9 +1,6 @@
 select * from performance_schema.rwlock_instances limit 1;
-NAME	OBJECT_INSTANCE_BEGIN	WRITE_LOCKED_BY_THREAD_ID	READ_LOCKED_BY_COUNT
-#	#	#	#
 select * from performance_schema.rwlock_instances
 where name='FOO';
-NAME	OBJECT_INSTANCE_BEGIN	WRITE_LOCKED_BY_THREAD_ID	READ_LOCKED_BY_COUNT
 insert into performance_schema.rwlock_instances
 set name='FOO', object_instance_begin=12;
 ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'rwlock_instances'

=== added file 'mysql-test/suite/perfschema/r/dml_threads.result'
--- a/mysql-test/suite/perfschema/r/dml_threads.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/r/dml_threads.result	2010-12-01 18:46:51 +0000
@@ -0,0 +1,34 @@
+select * from performance_schema.threads
+where name like 'Thread/%' limit 1;
+select * from performance_schema.threads
+where name='FOO';
+insert into performance_schema.threads
+set name='FOO', thread_id=1, processlist_id=2;
+ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'threads'
+update performance_schema.threads
+set thread_id=12;
+ERROR HY000: Invalid performance_schema usage.
+update performance_schema.threads
+set thread_id=12 where PROCESSLIST_ID=connection_id();
+ERROR HY000: Invalid performance_schema usage.
+update performance_schema.threads
+set instrumented= 'NO' where PROCESSLIST_ID=connection_id();
+select instrumented from performance_schema.threads
+where PROCESSLIST_ID=connection_id();
+instrumented
+NO
+update performance_schema.threads
+set instrumented= 'YES' where PROCESSLIST_ID=connection_id();
+select instrumented from performance_schema.threads
+where PROCESSLIST_ID=connection_id();
+instrumented
+YES
+delete from performance_schema.threads
+where id=1;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'threads'
+delete from performance_schema.threads;
+ERROR 42000: DELETE command denied to user 'root'@'localhost' for table 'threads'
+LOCK TABLES performance_schema.threads READ;
+UNLOCK TABLES;
+LOCK TABLES performance_schema.threads WRITE;
+UNLOCK TABLES;

=== modified file 'mysql-test/suite/perfschema/r/misc.result'
--- a/mysql-test/suite/perfschema/r/misc.result	2010-11-09 08:16:50 +0000
+++ b/mysql-test/suite/perfschema/r/misc.result	2010-12-01 18:46:51 +0000
@@ -6,9 +6,9 @@ AND EVENT_NAME IN
 WHERE NAME LIKE "wait/synch/%")
 LIMIT 1;
 create table test.t1(a int) engine=performance_schema;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.events_waits_current;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table performance_schema.t1(a int);
 ERROR 42000: CREATE command denied to user 'root'@'localhost' for table 't1'
 drop table if exists test.ghost;

=== modified file 'mysql-test/suite/perfschema/r/myisam_file_io.result'
--- a/mysql-test/suite/perfschema/r/myisam_file_io.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/myisam_file_io.result	2010-12-01 18:46:51 +0000
@@ -15,8 +15,8 @@ left(source, locate(":", source)) as sho
 operation, number_of_bytes,
 substring(object_name, locate("no_index_tab", object_name)) as short_name
 from performance_schema.events_waits_history_long
-where event_name like 'wait/io/file/%'
-  and operation not like "tell"
+where operation not like "tell"
+  and event_name like "wait/io/file/myisam/%"
   order by thread_id, event_id;
 event_name	short_source	operation	number_of_bytes	short_name
 wait/io/file/myisam/kfile	mi_create.c:	create	NULL	no_index_tab.MYI

=== modified file 'mysql-test/suite/perfschema/r/privilege.result'
--- a/mysql-test/suite/perfschema/r/privilege.result	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/r/privilege.result	2010-12-01 18:46:51 +0000
@@ -152,13 +152,13 @@ before insert on performance_schema.file
 for each row begin end;
 ERROR 42000: Access denied for user 'root'@'localhost' to database 'performance_schema'
 create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.setup_instruments;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.events_waits_current;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.file_instances;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 insert into performance_schema.setup_instruments
 set name="foo";
 ERROR 42000: INSERT command denied to user 'root'@'localhost' for table 'setup_instruments'
@@ -250,13 +250,13 @@ before insert on performance_schema.file
 for each row begin end;
 ERROR 42000: Access denied for user 'pfs_user_1'@'localhost' to database 'performance_schema'
 create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.setup_instruments;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.events_waits_current;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.file_instances;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 insert into performance_schema.setup_instruments
 set name="foo";
 ERROR 42000: INSERT command denied to user 'pfs_user_1'@'localhost' for table 'setup_instruments'
@@ -348,13 +348,13 @@ before insert on performance_schema.file
 for each row begin end;
 ERROR 42000: Access denied for user 'pfs_user_2'@'localhost' to database 'performance_schema'
 create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.setup_instruments;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.events_waits_current;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.file_instances;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 insert into performance_schema.setup_instruments
 set name="foo";
 ERROR 42000: INSERT command denied to user 'pfs_user_2'@'localhost' for table 'setup_instruments'
@@ -446,13 +446,13 @@ before insert on performance_schema.file
 for each row begin end;
 ERROR 42000: Access denied for user 'pfs_user_3'@'localhost' to database 'performance_schema'
 create table test.t1(a int) engine=PERFORMANCE_SCHEMA;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.setup_instruments;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.events_waits_current;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 create table test.t1 like performance_schema.file_instances;
-ERROR HY000: Invalid performance_schema usage.
+ERROR HY000: Can't create table 'test.t1' (errno: 131)
 insert into performance_schema.setup_instruments
 set name="foo";
 ERROR 42000: INSERT command denied to user 'pfs_user_3'@'localhost' for table 'setup_instruments'

=== added file 'mysql-test/suite/perfschema/r/thread_cache.result'
--- a/mysql-test/suite/perfschema/r/thread_cache.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/r/thread_cache.result	2010-12-01 18:46:51 +0000
@@ -0,0 +1,39 @@
+flush status;
+SET @saved_thread_cache_size = @@global.thread_cache_size;
+set global thread_cache_size = 0;
+show variables like "thread_cache_size";
+Variable_name	Value
+thread_cache_size	0
+select @id_increment;
+@id_increment
+1
+select @thread_id_increment;
+@thread_id_increment
+1
+select @id_increment;
+@id_increment
+1
+select @thread_id_increment;
+@thread_id_increment
+1
+set global thread_cache_size = 100;
+show variables like "thread_cache_size";
+Variable_name	Value
+thread_cache_size	100
+select @id_increment;
+@id_increment
+1
+select @thread_id_increment;
+@thread_id_increment
+1
+select @id_increment;
+@id_increment
+1
+select @thread_id_increment;
+@thread_id_increment
+1
+set global thread_cache_size = @saved_thread_cache_size;
+show status like "performance_schema_thread%";
+Variable_name	Value
+Performance_schema_thread_classes_lost	0
+Performance_schema_thread_instances_lost	0

=== modified file 'mysql-test/suite/perfschema/t/dml_cond_instances.test'
--- a/mysql-test/suite/perfschema/t/dml_cond_instances.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_cond_instances.test	2010-12-01 18:46:51 +0000
@@ -18,11 +18,12 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 #
+--disable_result_log
 select * from performance_schema.cond_instances limit 1;
 
 select * from performance_schema.cond_instances
   where name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.cond_instances

=== modified file 'mysql-test/suite/perfschema/t/dml_ews_by_instance.test'
--- a/mysql-test/suite/perfschema/t/dml_ews_by_instance.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_ews_by_instance.test	2010-12-01 18:46:51 +0000
@@ -18,28 +18,25 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+--disable_result_log
 select * from performance_schema.events_waits_summary_by_instance
   where event_name like 'Wait/Synch/%' limit 1;
 
 select * from performance_schema.events_waits_summary_by_instance
   where event_name='FOO';
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
 select * from performance_schema.events_waits_summary_by_instance
   order by count_star limit 1;
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
 select * from performance_schema.events_waits_summary_by_instance
   order by count_star desc limit 1;
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
 select * from performance_schema.events_waits_summary_by_instance
   where min_timer_wait > 0 order by count_star limit 1;
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
 select * from performance_schema.events_waits_summary_by_instance
   where min_timer_wait > 0 order by count_star desc limit 1;
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.events_waits_summary_by_instance

=== modified file 'mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test'
--- a/mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_ews_by_thread_by_event_name.test	2010-12-01 18:46:51 +0000
@@ -18,12 +18,13 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 #
+--disable_result_log
 select * from performance_schema.events_waits_summary_by_thread_by_event_name
   where event_name like 'Wait/Synch/%' limit 1;
 
 select * from performance_schema.events_waits_summary_by_thread_by_event_name
   where event_name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.events_waits_summary_by_thread_by_event_name

=== modified file 'mysql-test/suite/perfschema/t/dml_ews_global_by_event_name.test'
--- a/mysql-test/suite/perfschema/t/dml_ews_global_by_event_name.test	2010-11-03 15:42:33 +0000
+++ b/mysql-test/suite/perfschema/t/dml_ews_global_by_event_name.test	2010-12-01 08:01:04 +0000
@@ -18,12 +18,13 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 #
+--disable_result_log
 select * from performance_schema.events_waits_summary_global_by_event_name
   where event_name like 'Wait/Synch/%' limit 1;
 
 select * from performance_schema.events_waits_summary_global_by_event_name
   where event_name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.events_waits_summary_global_by_event_name

=== modified file 'mysql-test/suite/perfschema/t/dml_file_instances.test'
--- a/mysql-test/suite/perfschema/t/dml_file_instances.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_file_instances.test	2010-12-01 18:46:51 +0000
@@ -18,11 +18,12 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 #
+--disable_result_log
 select * from performance_schema.file_instances limit 1;
 
 select * from performance_schema.file_instances
   where file_name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.file_instances

=== modified file 'mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test'
--- a/mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_file_summary_by_event_name.test	2010-12-01 18:46:51 +0000
@@ -18,12 +18,13 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 # 4 # 5 #
+--disable_result_log
 select * from performance_schema.file_summary_by_event_name
   where event_name like 'Wait/io/%' limit 1;
 
 select * from performance_schema.file_summary_by_event_name
   where event_name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.file_summary_by_event_name

=== modified file 'mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test'
--- a/mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_file_summary_by_instance.test	2010-12-01 18:46:51 +0000
@@ -18,12 +18,13 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 # 4 # 5 # 6 #
+--disable_result_log
 select * from performance_schema.file_summary_by_instance
   where event_name like 'Wait/io/%' limit 1;
 
 select * from performance_schema.file_summary_by_instance
   where event_name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.file_summary_by_instance

=== modified file 'mysql-test/suite/perfschema/t/dml_mutex_instances.test'
--- a/mysql-test/suite/perfschema/t/dml_mutex_instances.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_mutex_instances.test	2010-12-01 18:46:51 +0000
@@ -18,11 +18,12 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 #
+--disable_result_log
 select * from performance_schema.mutex_instances limit 1;
 
 select * from performance_schema.mutex_instances
   where name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.mutex_instances

=== modified file 'mysql-test/suite/perfschema/t/dml_rwlock_instances.test'
--- a/mysql-test/suite/perfschema/t/dml_rwlock_instances.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/dml_rwlock_instances.test	2010-12-01 18:46:51 +0000
@@ -18,11 +18,12 @@
 --source include/not_embedded.inc
 --source include/have_perfschema.inc
 
---replace_column 1 # 2 # 3 # 4 #
+--disable_result_log
 select * from performance_schema.rwlock_instances limit 1;
 
 select * from performance_schema.rwlock_instances
   where name='FOO';
+--enable_result_log
 
 --error ER_TABLEACCESS_DENIED_ERROR
 insert into performance_schema.rwlock_instances

=== added file 'mysql-test/suite/perfschema/t/dml_threads.test'
--- a/mysql-test/suite/perfschema/t/dml_threads.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/t/dml_threads.test	2010-12-01 18:46:51 +0000
@@ -0,0 +1,65 @@
+# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# 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
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+--disable_result_log
+select * from performance_schema.threads
+  where name like 'Thread/%' limit 1;
+
+select * from performance_schema.threads
+  where name='FOO';
+--enable_result_log
+
+--error ER_TABLEACCESS_DENIED_ERROR
+insert into performance_schema.threads
+  set name='FOO', thread_id=1, processlist_id=2;
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+update performance_schema.threads
+  set thread_id=12;
+
+--error ER_WRONG_PERFSCHEMA_USAGE
+update performance_schema.threads
+  set thread_id=12 where PROCESSLIST_ID=connection_id();
+
+update performance_schema.threads
+  set instrumented= 'NO' where PROCESSLIST_ID=connection_id();
+
+select instrumented from performance_schema.threads
+  where PROCESSLIST_ID=connection_id();
+
+update performance_schema.threads
+  set instrumented= 'YES' where PROCESSLIST_ID=connection_id();
+
+select instrumented from performance_schema.threads
+  where PROCESSLIST_ID=connection_id();
+
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.threads
+  where id=1;
+
+--error ER_TABLEACCESS_DENIED_ERROR
+delete from performance_schema.threads;
+
+LOCK TABLES performance_schema.threads READ;
+UNLOCK TABLES;
+
+LOCK TABLES performance_schema.threads WRITE;
+UNLOCK TABLES;
+

=== modified file 'mysql-test/suite/perfschema/t/misc.test'
--- a/mysql-test/suite/perfschema/t/misc.test	2010-11-09 08:16:50 +0000
+++ b/mysql-test/suite/perfschema/t/misc.test	2010-12-01 18:46:51 +0000
@@ -38,14 +38,14 @@ LIMIT 1;
 # Bug#45088 Should not be able to create tables of engine PERFORMANCE_SCHEMA
 #
 
---error ER_WRONG_PERFSCHEMA_USAGE
+--error ER_CANT_CREATE_TABLE
 create table test.t1(a int) engine=performance_schema;
 
 #
 # Bug#44897 Performance Schema: can create a ghost table in another database
 #
 
---error ER_WRONG_PERFSCHEMA_USAGE
+--error ER_CANT_CREATE_TABLE
 create table test.t1 like performance_schema.events_waits_current;
 
 #

=== modified file 'mysql-test/suite/perfschema/t/myisam_file_io.test'
--- a/mysql-test/suite/perfschema/t/myisam_file_io.test	2010-11-08 19:35:17 +0000
+++ b/mysql-test/suite/perfschema/t/myisam_file_io.test	2010-12-01 18:46:51 +0000
@@ -46,14 +46,21 @@ insert into no_index_tab set a = 'foo', 
 # Verification
 # Note that mi_create.c contains mysql_file_tell() calls in debug only,
 # so the result are filtered to remove 'tell'.
+# Note that even after setting other instruments to enabled='NO'
+# and truncating the events_waits_history_long table,
+# some events -- that were already started but not completed --
+# for other instruments could still be added in the history.
+# To protect against that, an extra where clause
+# "and event_name like "wait/io/file/myisam/%"
+# is added to the select to filter out the result.
 
 select event_name,
   left(source, locate(":", source)) as short_source,
   operation, number_of_bytes,
   substring(object_name, locate("no_index_tab", object_name)) as short_name
   from performance_schema.events_waits_history_long
-  where event_name like 'wait/io/file/%'
-  and operation not like "tell"
+  where operation not like "tell"
+  and event_name like "wait/io/file/myisam/%"
   order by thread_id, event_id;
 
 # In case of failures, this will tell if file io are lost.

=== added file 'mysql-test/suite/perfschema/t/thread_cache.test'
--- a/mysql-test/suite/perfschema/t/thread_cache.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/perfschema/t/thread_cache.test	2010-12-01 18:46:51 +0000
@@ -0,0 +1,166 @@
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# 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
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
+
+# Tests for PERFORMANCE_SCHEMA
+
+--source include/not_embedded.inc
+--source include/have_perfschema.inc
+
+# Setup
+
+flush status;
+
+SET @saved_thread_cache_size = @@global.thread_cache_size;
+
+set global thread_cache_size = 0;
+
+show variables like "thread_cache_size";
+
+connect (con1, localhost, root, , );
+
+let $con1_ID=`select connection_id()`;
+
+let $con1_THREAD_ID=`select thread_id from performance_schema.threads
+  where PROCESSLIST_ID = connection_id()`;
+
+connect (con2, localhost, root, , );
+
+let $con2_ID=`select connection_id()`;
+
+let $con2_THREAD_ID=`select thread_id from performance_schema.threads
+  where PROCESSLIST_ID = connection_id()`;
+
+--connection default
+
+--disable_query_log
+eval select ($con2_ID - $con1_ID) into @id_increment;
+eval select ($con2_THREAD_ID - $con1_THREAD_ID) into @thread_id_increment;
+--enable_query_log
+
+# Expect 1, connection_id() is incremented for each new connection
+select @id_increment;
+# Expect 1, THREAD_ID is incremented for each new connection
+select @thread_id_increment;
+
+--disconnect con2
+
+--connection default
+
+# Wait for the disconnect con2 to complete
+let $wait_condition=
+  select count(*) = 2 from performance_schema.threads
+  where name like "thread/sql/one_connection";
+--source include/wait_condition.inc
+
+connect (con3, localhost, root, , );
+
+let $con3_ID=`select connection_id()`;
+
+let $con3_THREAD_ID=`select thread_id from performance_schema.threads
+  where PROCESSLIST_ID = connection_id()`;
+
+--disconnect con3
+--disconnect con1
+
+--connection default
+
+# Wait for the disconnect con1 and con3 to complete
+let $wait_condition=
+  select count(*) = 1 from performance_schema.threads
+  where name like "thread/sql/one_connection";
+--source include/wait_condition.inc
+
+--disable_query_log
+eval select ($con3_ID - $con2_ID) into @id_increment;
+eval select ($con3_THREAD_ID - $con2_THREAD_ID) into @thread_id_increment;
+--enable_query_log
+
+select @id_increment;
+select @thread_id_increment;
+
+set global thread_cache_size = 100;
+
+show variables like "thread_cache_size";
+
+connect (con1, localhost, root, , );
+
+let $con1_ID=`select connection_id()`;
+
+let $con1_THREAD_ID=`select thread_id from performance_schema.threads
+  where PROCESSLIST_ID = connection_id()`;
+
+connect (con2, localhost, root, , );
+
+let $con2_ID=`select connection_id()`;
+
+let $con2_THREAD_ID=`select thread_id from performance_schema.threads
+  where PROCESSLIST_ID = connection_id()`;
+
+--connection default
+
+--disable_query_log
+eval select ($con2_ID - $con1_ID) into @id_increment;
+eval select ($con2_THREAD_ID - $con1_THREAD_ID) into @thread_id_increment;
+--enable_query_log
+
+select @id_increment;
+select @thread_id_increment;
+
+--disconnect con2
+
+--connection default
+
+# Wait for the disconnect con2 to complete
+let $wait_condition=
+  select count(*) = 2 from performance_schema.threads
+  where name like "thread/sql/one_connection";
+--source include/wait_condition.inc
+
+connect (con3, localhost, root, , );
+
+let $con3_ID=`select connection_id()`;
+
+let $con3_THREAD_ID=`select thread_id from performance_schema.threads
+  where PROCESSLIST_ID = connection_id()`;
+
+--disconnect con3
+--disconnect con1
+
+--connection default
+
+# Wait for the disconnect con1 and con3 to complete
+let $wait_condition=
+  select count(*) = 1 from performance_schema.threads
+  where name like "thread/sql/one_connection";
+--source include/wait_condition.inc
+
+--disable_query_log
+eval select ($con3_ID - $con2_ID) into @id_increment;
+eval select ($con3_THREAD_ID - $con2_THREAD_ID) into @thread_id_increment;
+--enable_query_log
+
+# When caching threads, the pthread that executed con2 was parked in the
+# cache on disconnect, and then picked up con3.
+
+# Still expect a new connection_id()
+select @id_increment;
+
+# And expect a new instrumentation: the THREAD_ID of old connections should not be reused.
+select @thread_id_increment;
+
+set global thread_cache_size = @saved_thread_cache_size;
+
+show status like "performance_schema_thread%";
+

=== modified file 'storage/perfschema/ha_perfschema.cc'
--- a/storage/perfschema/ha_perfschema.cc	2010-10-21 12:18:25 +0000
+++ b/storage/perfschema/ha_perfschema.cc	2010-12-01 18:46:51 +0000
@@ -339,7 +339,6 @@ int ha_perfschema::delete_all_rows(void)
     result= m_table_share->m_delete_all_rows();
   else
   {
-    my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
     result= HA_ERR_WRONG_COMMAND;
   }
   DBUG_RETURN(result);
@@ -370,7 +369,6 @@ int ha_perfschema::delete_table(const ch
 int ha_perfschema::rename_table(const char * from, const char * to)
 {
   DBUG_ENTER("ha_perfschema::rename_table ");
-  my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
   DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 }
 
@@ -395,7 +393,37 @@ int ha_perfschema::create(const char *na
     This is not a general purpose engine.
     Failure to CREATE TABLE is the expected result.
   */
-  my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
   DBUG_RETURN(HA_ERR_WRONG_COMMAND);
 }
 
+void ha_perfschema::print_error(int error, myf errflag)
+{
+  switch (error)
+  {
+    case HA_ERR_TABLE_NEEDS_UPGRADE:
+      /*
+        The error message for ER_TABLE_NEEDS_UPGRADE refers to REPAIR table,
+        which does not apply to performance schema tables.
+      */
+      my_error(ER_WRONG_NATIVE_TABLE_STRUCTURE, MYF(0),
+               table_share->db.str, table_share->table_name.str);
+      break;
+    case HA_ERR_WRONG_COMMAND:
+      /*
+        The performance schema is not a general purpose storage engine,
+        some operations are not supported, by design.
+        We do not want to print "Command not supported",
+        which gives the impression that a command implementation is missing,
+        and that the failure should be considered a bug.
+        We print "Invalid performance_schema usage." instead,
+        to emphasise that the operation attempted is not meant to be legal,
+        and that the failure returned is indeed the expected result.
+      */
+      my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
+      break;
+    default:
+     handler::print_error(error, errflag);
+     break;
+  }
+}
+

=== modified file 'storage/perfschema/ha_perfschema.h'
--- a/storage/perfschema/ha_perfschema.h	2010-10-21 11:34:17 +0000
+++ b/storage/perfschema/ha_perfschema.h	2010-12-01 18:46:51 +0000
@@ -101,9 +101,6 @@ public:
   double scan_time(void)
   { return 1.0; }
 
-  double read_time(ha_rows)
-  { return 1.0; }
-
   int open(const char *name, int mode, uint test_if_locked);
 
   int close(void);
@@ -152,6 +149,8 @@ public:
     return FALSE;
   }
 
+  virtual void print_error(int error, myf errflags);
+
 private:
   /** MySQL lock */
   THR_LOCK_DATA m_thr_lock;

=== modified file 'storage/perfschema/pfs_engine_table.cc'
--- a/storage/perfschema/pfs_engine_table.cc	2010-09-28 15:17:29 +0000
+++ b/storage/perfschema/pfs_engine_table.cc	2010-12-01 18:46:51 +0000
@@ -193,14 +193,11 @@ int PFS_engine_table_share::write_row(TA
   */
   if (! m_checked)
   {
-    my_error(ER_WRONG_NATIVE_TABLE_STRUCTURE, MYF(0),
-             PERFORMANCE_SCHEMA_str.str, m_name);
     return HA_ERR_TABLE_NEEDS_UPGRADE;
   }
 
   if (m_write_row == NULL)
   {
-    my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
     return HA_ERR_WRONG_COMMAND;
   }
 
@@ -275,8 +272,6 @@ int PFS_engine_table::read_row(TABLE *ta
   */
   if (! m_share_ptr->m_checked)
   {
-    my_error(ER_WRONG_NATIVE_TABLE_STRUCTURE, MYF(0),
-             PERFORMANCE_SCHEMA_str.str, m_share_ptr->m_name.str);
     return HA_ERR_TABLE_NEEDS_UPGRADE;
   }
 
@@ -322,8 +317,6 @@ int PFS_engine_table::update_row(TABLE *
   */
   if (! m_share_ptr->m_checked)
   {
-    my_error(ER_WRONG_NATIVE_TABLE_STRUCTURE, MYF(0),
-             PERFORMANCE_SCHEMA_str.str, m_share_ptr->m_name.str);
     return HA_ERR_TABLE_NEEDS_UPGRADE;
   }
 
@@ -347,8 +340,6 @@ int PFS_engine_table::delete_row(TABLE *
   */
   if (! m_share_ptr->m_checked)
   {
-    my_error(ER_WRONG_NATIVE_TABLE_STRUCTURE, MYF(0),
-             PERFORMANCE_SCHEMA_str.str, m_share_ptr->m_name.str);
     return HA_ERR_TABLE_NEEDS_UPGRADE;
   }
 
@@ -364,7 +355,6 @@ int PFS_engine_table::delete_row_values(
                                         const unsigned char *,
                                         Field **)
 {
-  my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
   return HA_ERR_WRONG_COMMAND;
 }
 
@@ -461,7 +451,6 @@ int PFS_engine_table::update_row_values(
                                         unsigned char *,
                                         Field **)
 {
-  my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
   return HA_ERR_WRONG_COMMAND;
 }
 

=== modified file 'storage/perfschema/table_setup_actors.cc'
--- a/storage/perfschema/table_setup_actors.cc	2010-11-09 08:16:50 +0000
+++ b/storage/perfschema/table_setup_actors.cc	2010-12-01 18:46:51 +0000
@@ -249,7 +249,6 @@ int table_setup_actors::update_row_value
       case 0: /* HOST */
       case 1: /* USER */
       case 2: /* ROLE */
-        my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
         return HA_ERR_WRONG_COMMAND;
         break;
       default:

=== modified file 'storage/perfschema/table_setup_consumers.cc'
--- a/storage/perfschema/table_setup_consumers.cc	2010-11-09 08:16:50 +0000
+++ b/storage/perfschema/table_setup_consumers.cc	2010-12-01 18:46:51 +0000
@@ -193,7 +193,6 @@ int table_setup_consumers::update_row_va
       switch(f->field_index)
       {
       case 0: /* NAME */
-        my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
         return HA_ERR_WRONG_COMMAND;
       case 1: /* ENABLED */
       {

=== modified file 'storage/perfschema/table_setup_instruments.cc'
--- a/storage/perfschema/table_setup_instruments.cc	2010-11-09 08:16:50 +0000
+++ b/storage/perfschema/table_setup_instruments.cc	2010-12-01 18:46:51 +0000
@@ -269,7 +269,6 @@ int table_setup_instruments::update_row_
       switch(f->field_index)
       {
       case 0: /* NAME */
-        my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
         return HA_ERR_WRONG_COMMAND;
       case 1: /* ENABLED */
         value= (enum_yes_no) get_field_enum(f);

=== modified file 'storage/perfschema/table_setup_timers.cc'
--- a/storage/perfschema/table_setup_timers.cc	2010-11-09 08:16:50 +0000
+++ b/storage/perfschema/table_setup_timers.cc	2010-12-01 18:46:51 +0000
@@ -165,7 +165,6 @@ int table_setup_timers::update_row_value
       switch(f->field_index)
       {
       case 0: /* NAME */
-        my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
         return HA_ERR_WRONG_COMMAND;
       case 1: /* TIMER_NAME */
         value= get_field_enum(f);

=== modified file 'storage/perfschema/table_threads.cc'
--- a/storage/perfschema/table_threads.cc	2010-11-09 10:36:41 +0000
+++ b/storage/perfschema/table_threads.cc	2010-12-01 18:46:51 +0000
@@ -354,7 +354,6 @@ int table_threads::update_row_values(TAB
       case 10: /* PROCESSLIST_INFO */
       case 11: /* PARENT_THREAD_ID */
       case 12: /* ROLE */
-        my_error(ER_WRONG_PERFSCHEMA_USAGE, MYF(0));
         return HA_ERR_WRONG_COMMAND;
       case 13: /* INSTRUMENTED */
         value= (enum_yes_no) get_field_enum(f);

No bundle (reason: revision is a merge).
Thread
bzr commit into mysql-trunk-bugfixing branch (marc.alff:3402) Marc Alff1 Dec