mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 c2b6916393
			
		
	
	
	c2b6916393
	
	
	
		
			
			* it isn't "pfs" function, don't call it Item_func_pfs, don't use item_pfsfunc.* * tests don't depend on performance schema, put in the main suite * inherit from Item_str_ascii_func * use connection collation, not utf8mb3_general_ci * set result length in fix_length_and_dec * do not set maybe_null * use my_snprintf() where possible * don't set m_value.ptr on every invocation * update sys schema to use the format_pico_time() * len must be size_t (compilation error on Windows) * the correct function name for double->double is fabs() * drop volatile hack
		
			
				
	
	
		
			93 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| -- Copyright (c) 2014, 2015, 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, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 | |
| 
 | |
| DROP FUNCTION IF EXISTS format_time;
 | |
| 
 | |
| DELIMITER $$
 | |
| 
 | |
| CREATE DEFINER='mariadb.sys'@'localhost' FUNCTION format_time (
 | |
|         -- We feed in and return TEXT here, as aggregates of
 | |
|         -- picoseconds can return numbers larger than BIGINT UNSIGNED
 | |
|         picoseconds TEXT
 | |
|     )
 | |
|     RETURNS TEXT CHARSET UTF8
 | |
|     COMMENT '
 | |
|              Description
 | |
|              -----------
 | |
|              
 | |
|              OBSOLETE. USE BUILT-IN format_pico_time() INSTEAD
 | |
|              
 | |
|              Takes a raw picoseconds value, and converts it to a human readable form.
 | |
|              
 | |
|              Picoseconds are the precision that all latency values are printed in 
 | |
|              within Performance Schema, however are not user friendly when wanting
 | |
|              to scan output from the command line.
 | |
| 
 | |
|              Parameters
 | |
|              -----------
 | |
| 
 | |
|              picoseconds (TEXT): 
 | |
|                The raw picoseconds value to convert.
 | |
| 
 | |
|              Returns
 | |
|              -----------
 | |
| 
 | |
|              TEXT
 | |
| 
 | |
|              Example
 | |
|              -----------
 | |
| 
 | |
|              mysql> select format_time(342342342342345);
 | |
|              +------------------------------+
 | |
|              | format_time(342342342342345) |
 | |
|              +------------------------------+
 | |
|              | 00:05:42                     |
 | |
|              +------------------------------+
 | |
|              1 row in set (0.00 sec)
 | |
| 
 | |
|              mysql> select format_time(342342342);
 | |
|              +------------------------+
 | |
|              | format_time(342342342) |
 | |
|              +------------------------+
 | |
|              | 342.34 us              |
 | |
|              +------------------------+
 | |
|              1 row in set (0.00 sec)
 | |
| 
 | |
|              mysql> select format_time(34234);
 | |
|               +--------------------+
 | |
|              | format_time(34234) |
 | |
|              +--------------------+
 | |
|              | 34.23 ns           |
 | |
|              +--------------------+
 | |
|              1 row in set (0.00 sec)
 | |
|             '
 | |
|     SQL SECURITY INVOKER
 | |
|     DETERMINISTIC
 | |
|     NO SQL
 | |
| BEGIN
 | |
|   IF picoseconds IS NULL THEN RETURN NULL;
 | |
|   ELSEIF picoseconds >= 604800000000000000 THEN RETURN CONCAT(ROUND(picoseconds / 604800000000000000, 2), ' w');
 | |
|   ELSEIF picoseconds >= 86400000000000000 THEN RETURN CONCAT(ROUND(picoseconds / 86400000000000000, 2), ' d');
 | |
|   ELSEIF picoseconds >= 3600000000000000 THEN RETURN CONCAT(ROUND(picoseconds / 3600000000000000, 2), ' h');
 | |
|   ELSEIF picoseconds >= 60000000000000 THEN RETURN CONCAT(ROUND(picoseconds / 60000000000000, 2), ' m');
 | |
|   ELSEIF picoseconds >= 1000000000000 THEN RETURN CONCAT(ROUND(picoseconds / 1000000000000, 2), ' s');
 | |
|   ELSEIF picoseconds >= 1000000000 THEN RETURN CONCAT(ROUND(picoseconds / 1000000000, 2), ' ms');
 | |
|   ELSEIF picoseconds >= 1000000 THEN RETURN CONCAT(ROUND(picoseconds / 1000000, 2), ' us');
 | |
|   ELSEIF picoseconds >= 1000 THEN RETURN CONCAT(ROUND(picoseconds / 1000, 2), ' ns');
 | |
|   ELSE RETURN CONCAT(picoseconds, ' ps');
 | |
|   END IF;
 | |
| END$$
 | |
| 
 | |
| DELIMITER ;
 |