Project: MariaDB (App Definition and Development / Database)
File: news.md

A new `privilegesbytablebylevel` view was added, which displays granted privileges broken down by the table on which they allow access and the level on which they were granted A `quote_identifier` function was added, which can be used to properly backtick identifier names The `Tlsversion` column was added to the output from the `mysql.slavemaster_info` table, from the `diagnostics` procedure (backported from 5.7 upstream change) MySQL Bug #77853 / Oracle Bug #21512106 - The `format_path` function did not consider directory boundaries when comparing variables to paths - it now does. Also fixed to no longer translate backslashes within Windows paths to forward slash Oracle Bug #21663578 - Fixed an instability within the sysschema.vschematableswithfulltablescans test Oracle Bug #21970078 - The host_summary view could fail with a division by zero error MySQL Bug #78874 / Oracle Bug #22066096 - The `pssetupshowenabled` procedure showed all rows for the `performanceschema.setup_objects` table, rather than only those that are enabled MySQL Bug #80569 / Oracle Bug #22848110 - The `maxlatency` column for the `hostsummarybystatement_latency` view incorrectly showed the SUM of latency MySQL Bug #80833 / Oracle Bug #22988461 - The `pages_hashed` and `pages_old` columns within the `innodb_buffer_stats_by_schema` and `innodb_buffer_stats_by_table` views were calculated incorrectly (Contributed by Tsubasa Tanaka*) MySQL Bug #78823 / Oracle Bug #22011361 - The `create_synonym_db` procedure failed when using reserved words as the synonym name (this change also introduced the `quote_identifier` function mentioned above Contriubuted by Paul Dubois*) MySQL Bug #81564 / Oracle Bug #23335880 - The `pssetupshowenabled` and `pssetupshowdisabled` procedures were fixed to: Show `user@host` instead of `host@user` for accounts Fixed the column header for `disabledusers` within `pssetupshowdisabled` Explicitly ordered all output for test stability Show disabled users for 5.7.6+ Oracle Bug #21970806 - The `sysschema.fnpsthreadtrxinfo` test was unstable Oracle Bug #23621189 - The `pstracestatement_digest` procedure ran EXPLAIN incorrectly in certain cases (such as on a SHOW statement, no query being specified, or not having a full qualified table), the procedure now catches these issues and ignores them The `format_bytes` function now shows no decimal places when outputting a simple bytes value The `processlist`/`x$processlist` views where improved, changes include: The `pid` and `program_name` of the connection are shown, if set within the `performance_schema.session_connect_attrs` table (Contributed by Danil van Eeden*) Issue #50 - The current statement progress is reported via the new stage progress reporting within Performance Schema stages within 5.7 (such as ALTER TABLE progress reporting) Issue #60 - A new `statementlatency` column was added to all versions, which reports the current statement latency with picosecond precision from the `performanceschema.eventsstatementscurrent` table, when enabled Some transaction information was exposed, with the `trxlatency` (for the current or last transaction depending on `trxstate`), `trxstate` (ACTIVE, COMMITTED, ROLLED BACK), and `trxautocommit` (YES/NO) columns A new `metrics` view has been added. On 5.7 this provides a union view of the performance_schema.global_status and information_schema.innodb_metrics tables, along with P_S memory and the current time, as a single metrics output. On 5.6 it provides a union view of the information_schema.global_status and information_schema.innodb_metrics tables, along with the current

(Contributed by Jesper Wisborg Krogh*) New `session`/`x$session` views have been added, which give the same output as the `processlist` view counterparts, but filtered to only show foreground connections (Contributed by Morgan Tocker*) A new `session_ssl_status` view was added, which shows the SSL version, ciper and session resuse statistics for each connection (Contributed by Danil van Eeden*) A new `schema_auto_increment_columns` view was added, that shows statistics on each auto_incrment within the instance, including the `auto_increment_ratio`, so you can easily monitor how full specific auto_increment columns are (Contributed by Shlomi Noach*) A new `schema_redundant_indexes` view was added, that shows indexes made redundant (or duplicated) by other more dominant indexes. Also includes the the helper view `x$schema_flattened_keys`. (Contributed by Shlomi Noach*) New `schematablelockwaits`/`x$schematablelockwaits` views have been added, which show any sessions that are waiting for table level metadata locks, and the sessions that are blocking them. Resolves Git Issue #57, inspired by the suggestion from Danil van Eeden The `innodblockwaits` view had the following columns added to it, following a manually merged contribution from Shlomi Noach for a similar view `waitagesecs` - the current row lock wait time in seconds `sqlkillblockingquery` - the "KILL QUERY <connectionid>" command to run to kill the blocking session current statement `sqlkillblockingconnection` - the "KILL <connectionid" command to run to kill the blocking session A new `table_exists` procedure was added, which checks for the existence of table, and if it exists, returns the type (BASE TABLE, VIEW, TEMPORARY) (Contributed by Jesper Wisborg Krogh*) A new `execute_prepared_stmt()` procedure was added, which takes a SQL statement as an input variable and executes it as a prepared statement (Contributed by Jesper Wisborg Krogh*) A new `statement_performance_analyzer()` procedure was added, that allows reporting on the statements that are have been running over snapshot periods (Contributed by Jesper Wisborg Krogh*) A new `diagnostics()` procedure was added, which creates a large diagnostics report based upon most of the new instrumentation now available, computed over a configurable number of snapshot intervals (Contributed by Jesper Wisborg Krogh*) A 5.7 specific `pstracethread()` procedure was added, which now shows the hierarchy of transactions and stored routines, as well as statements, stages and waits, if enabled Added a new `psthreadaccount()` stored function, that returns the "user@host" account for a given Performance Schema thread id Added a new `psthreadtrx_info()` stored function which outputs, for a given thread id, the transactions, and statements that those transactions have executed, as a JSON object Added new `listadd()` and `listdrop()` stored functions, that take a string csv list, and either add or remove items from that list respectively. Can be used to easily update variables that take such lists, like `sql_mode`. The `psthreadid` stored function now returns the thread id for the current connection if NULL is passed for the inconnectionid parameter Added a new `version_major()` stored function, which returns the major version of MySQL Server (Contributed by Jesper Wisborg Krogh*) Added a new `version_minor()` stored function, which returns the minor (release series) version of MySQL Server (Contributed by Jesper Wisborg Krogh*) Added a new `version_patch()` stored function, which returns the patch release version of MySQL Server (Contributed by Jesper Wisborg Krogh*) The `psisaccount_enabled` function was updated to take a VARCHAR(32) user input on 5.7, as a part of WL#2284 The

script had a number of improvements: Generated files are now output in to a "gen" directory, that is ignored by git Added using a new default "mysql.sys@localhost" user (that has the account locked) for the MySQL 5.7+ integration as the DEFINER for all objects Added a warning to the top of the generated integration file to also submit changes to the sys project Improved the the option of skipping binary logs, so that all routines can load as well - those that used SET sqllogbin will now select a warning when being used instead of setting the option Git Issue #51 - Fixed the `generatesqlfile.sh` script to also replace the definer in the before_setup.sql output Git Issue #52 - Removed apostrophe from the `format_statement` function comment because TOAD no likey Git Issue #56 - Installation failed on 5.6 with ONLYFULLGROUP_BY enabled Git Issue #76 - Fixes for the new showcompatibility56 variable. 5.7 versions of the `formatpath()` function and `pschecklostinstrumentation` view were added, that use performanceschema.globalstatus/globalvariables instead of informationschema.globalstatus/globalvariables Git Issue #79 - Fixed grammar within `statementswithruntimesin95th_percentile` view descriptions Oracle Bug #21484593 / Oracle Bug #21281955 - The `format_path()` function incorrectly took and returned a VARCHAR(260) instead of VARCHAR(512) (as the underlying is exposed as in Performance Schema) causing sporadic test failures Oracle Bug #21550271 - Fixed the `pssetupresettodefault` for 5.7 with the addition of the new `history` column on the `performanceschema.setupactors` table Oracle Bug #21550054 - It is possible that the views can show data that overflows when aggregating very large values, reset all statistics before each test to ensure no overflows Oracle Bug #21647101 - Fixed the `psisinstrumentdefaultenabed` and `psisinstrumentdefaulttimed` to take in to account the new instruments added within 5.7 MySQL Bug #77848 - Added the missing pssetupinstruments_cleanup.inc Fixed the `pssetupresettodefault()` procedure to also set the new `ENABLED` column within `performanceschema.setupactors` within 5.7 The `usersummarybyfileio`/`x$usersummarybyfileio` and `hostsummarybyfileio`/`x$hostsummarybyfileio` tables were incorrectly aggregating all wait events, not just `wait/io/file/%` Tests were improved via 5.7 integration Template files were added for stored procedures and functions Improved the sysconfigcleanup.inc procedure in tests to be able to reset the sysconfig table completely (including the setby column to NULL). The triggers can now be set to not update the column by setting the @sys.ignoresysconfig_triggers user variable to true The `memoryglobalbycurrentallocated` views were renamed to `memoryglobalbycurrentbytes` for consistency with the other memory views The `pssetupenableconsumers` procedure was renamed to `pssetupdisableconsumer` for naming consistency (everything is now singular, not plural) The `format_time` function displayed values in minutes incorrectly, it now rounds to minutes, and uses an 'm' suffix, like the rest of the units The beginnings of a mysql-test suite have been added The `innodb_lock_waits`/`x$innodb_lock_waits` views were improved (Contributions by both Jesper Wisborg Krogh and Mark Matthews*) Added the `waitstarted`, `waitage`, `waitingtrxstarted` `waitingtrxage`, `waitingtrxrowslocked` and `waitingtrxrowsmodified` columns for waiting transactions Added the `blockingtrxstarted`, `blockingtrxage`, `blockingtrxrowslocked` and `blockingtrxrowsmodified` for blocking transactions Order the result set so the oldest lock waits are first The `waitingtable` and `waitingindex` were always the same as the `blockingtable` and `blockingindex`. So the blocking% columns have been removed and the waiting% columns have been renamed to locked_% The `waitinglocktype` and `blockinglocktype` were also always the

So these were removed and replaced with a single `locked_type` column Renamed the `waitingthread` and `blockingthread` to `waitingpid` and `blockingpid` respectively to avoid confusion with the threads from the Performance Schema. Added the `sys_get_config` function, used to get configuration parameters from the `sys_config` table - primarily from other sys objects, but can be used individually (Contributed by Jesper Wisborg Krogh*) Add an option to generatesqlfile.sh to generate a mysqlinstalldb / mysqld --initialize format friendly file Added the `psisthread_instrumented` function, to check whether a specified thread is instrumented within Performance Schema Added the `ps_is_consumer_enabled` function, to check whether a specified consumer is enabled within Performance Schema (Contributed by Jesper Wisborg Krogh*) Added some further replacements to the `formatpath` function (`slaveloadtmpdir`, `innodbdatahomedir`, `innodbloggrouphomedir` and `innodbundodirectory`) The 5.6 `host_summary` and `x$host_summary` views incorrectly had the column with `COUNT(DISTINCT accounts.user)` named `unique_hosts` instead of `unique_users` (Contributed by Jesper Wisborg Krogh*) Both the `formattime` and `formatbytes` took a BIGINT as input, and output VARCHAR, but BIGINT could be too small for aggregated values for the inputs. Now both functions both use TEXT as their input (Issue #34, Issue #38) The `format_time` function displayed values in minutes incorrectly, it now rounds to minutes, and uses an 'm' suffix, like the rest of the units The `sys_config` related triggers had no DEFINER clause set The `ps_setup_disable_thread` procedure always disabled the current thread and was ignoring the connection id given as an argument (Contributed by Jesper Wisborg Krogh*) The `ps_trace_thread` procedure had an incorrect calculation of how long the procedure has been running (Contributed by Jesper Wisborg Krogh*) Various changes were made to allow better generation of integration sql files: The formatting for all comments has been standardized on -- line comments. C-style / comments */ have been removed Issue #35 had one instance of this resolved in this release (Contributed by Joe Grasse*), but the entire code base has now been done Each object has been created within it's own file. No longer do x$ views live with their non-x$ counterparts DELIMITERs were standardized to $$ Added an `innodb_lock_waits` set of views, showing each thread that is waiting on a lock within InnoDB, and the blocking thread lock information (Contributed by Jesper Wisborg Krogh*) Fixed broken `hostsummaryby_stages` views, broken with a last minute change before the 1.2.0 release that went unnoticed (facepalm) The `hostsummarybystages` and `usersummarybystages` `waitsum` and `waitavg` columns were renamed to `totallatency` and `avglatency` respectively, for consistency. The `hostsummarybyfileiotype` and `usersummarybyfileiotype `latency` column was renamed to `total_latency`, for consistency. Made the truncation length for the `format_statement` view configurable This includes adding a new persistent `sysconfig` table to store the new variable - `statementtruncate_len` - see the README for usage Added `totallatency` to the `schematableswithfulltablescans` view, and added an x$ counterpart Added `innodbbufferfree` to the `schematablestatisticswithbuffer` view, to summarize how much free space is allocated per table in the buffer pool The `schemaunusedindexes` view now ignores indexes named `PRIMARY` (primary keys) Added `rowsaffected` and `rowsaffectedavg` stats to the `statementanalysis` views The `statementswithfulltablescans` view now ignores any SQL that starts with `SHOW` Added a script,

that can be used to generate a single SQL file, also allowing substitution of the MySQL user to use, and/or whether the `SET sqllogbin ...` statements should be omitted. This is useful for those using RDS, where the root@localhost user is not accessible, and sqllogbin is disabled (Issue #5) Added a set of `memorybythreadbycurrent_bytes` views, that summarize memory usage per thread with MySQL 5.7's memory instrumentation Improved each of the host specific views to return aggregate values for `background` threads, instead of ignoring them, in the same way as the user summary views Added the missing `memorybyhost` view for MySQL 5.7 Added missing space for hour notation within the `format_time` function Fixed views affected by MySQL 5.7 ONLYFULLGROUP_BY and functional dependency changes Added host summary views, which have the same structure as the user summary views, but aggregated by host instead (Contributed by Arnaud Adant*) `host_summary` `hostsummarybyfileio_type` `hostsummarybyfileio` `hostsummarybystatementtype` `hostsummarybystatementlatency` `hostsummaryby_stages` `waitsbyhostbylatency` Added functions which return instruments are either enabled, or timed by default (#15) (Contributed by Jesper Wisborg Krogh*) `psisinstrumentdefaultenabled` `psisinstrumentdefaulttimed` Added a `ps_thread_id` function, which returns the thread_id value exposed within performance_schema for the current connection (Contributed by Jesper Wisborg Krogh*) Improved each of the user specific views to return aggregate values for `background` threads, instead of ignoring them (Contributed by Joe Grasse*) Optimized the `schema_table_statistics` and `schema_table_statistics_with_buffer` views, to use a new view that will get materialized (`x$ps_schema_table_statistics_io`), along with the changes to the RETURN types for `extract_schema_from_file_name` and `extract_table_from_file_name`, this results in a significant performance improvement - in one test changing the run time from 14 minutes to 20 seconds. (Conceived by Roy Lyseng, Mark Leith and Jesper Wisborg Krogh, implemented and contributed by Jesper Wisborg Krogh*) Removed unintentially committed sys56rds.sql file (See Issue #5, which is still outstanding) Fixed the `ps_trace_statement_digest` and `ps_trace_thread` procedures to properly set sql_log_bin, and reset the thread INSTRUMENTED value correctly (Contributed by Jesper Wisborg Krogh*) Removed various sql_log_bin disabling from other procedures that no longer require it - DML against the performance_schema data is no longer replicated (Contributed by Jesper Wisborg Krogh*) Fixed EXPLAIN within `ps_trace_statement_digest` procedure (Contributed by Jesper Wisborg Krogh*) Fixed the datatype for the `thd_id` variable within the `ps_thread_stack` procedure (Contributed by Jesper Wisborg Krogh*) Fixed datatypes used for temporary tables within the `ps_trace_statement_digest` procedure (Contributed by Jesper Wisborg Krogh*) Fixed the RETURN datatype `extract_schema_from_file_name` and `extract_table_from_file_name` to return a VARCHAR(64) (Contributed by Jesper Wisborg Krogh*) Added eventstransactionscurrent to the default enabled consumers in 5.7 (#25) Added procedures to enable / disable Performance Schema consumers. (Contributed by the MySQL QA Team*) `pssetupdisable_consumers(<LIKE string>)` allows disabling any consumers matching the LIKE string. `pssetupenable_consumers(<LIKE string>)` allows enabling any consumers matching the LIKE string. Added procedures to show both enabled and disbled consumers or instruments individually, these are more useful for tooling than the `ps_setup_show_enabled`/`ps_setup_show_disabled` procedures which show all configuration in multiple result sets. (Contributed by the MySQL QA Team*) `pssetupshowdisabledconsumers` shows only disabled consumers. `pssetupshowdisabledinstruments` shows only disabled instruments. `pssetupshowenabledconsumers` shows only enabled consumers. `pssetupshowenabledinstruments` shows only enabled instruments. Running the installation scripts sometimes failed because of the comment format. (#1) (Contributed by Joe Grasse*) Some views did not work with the ERROR_FOR_DIVISION_BY_ZERO SQL mode. (#6) (Contributed by Joe Grasse*) On Windows the `psthreadstack()` stored function failed to escape file path backslashes correctly within the JSON output.