mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 12:56:14 +01:00 
			
		
		
		
	Update `SESSION_USER()` behaviour to be comparable with `CURRENT_USER()`. `SESSION_USER()` will return the user and host columns from `mysql.user` used to authenticate the user when the session was created. Historically `SESSION_USER()` was an alias of `USER()` function. The main difference with `USER()` behaviour after this changes is that `SESSION_USER()` now returns the host column from `mysql.user` instead of the client host or ip. NOTE: `SESSION_USER_IS_USER` old mode is added to make the change backward compatible. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 | 
						|
In the current release model, versions are released like the following
 | 
						|
(the table shows the year/quarter of the planned GA release):
 | 
						|
 | 
						|
        Q1              Q2              Q3              Q4
 | 
						|
2022    10.7            10.8            10.9            10.10
 | 
						|
2023    10.11-LTS       11.0            11.1            11.2
 | 
						|
2024    11.3            11.4            11.5            11.6
 | 
						|
2025    11.7-LTS        12.0            12.1            12.2
 | 
						|
2026    12.3            12.4            12.5            12.6
 | 
						|
2027    12.7-LTS        13.0            13.1            13.2
 | 
						|
2028    13.3            13.4            13.5            13.6
 | 
						|
2029    13.7-LTS        14.0            14.1            14.2
 | 
						|
...
 | 
						|
 | 
						|
A deprecated feature can be removed only when all releases when it's
 | 
						|
not deprecated have reached EOL. For example, if something was
 | 
						|
deprecated in 11.3, then 10.11 (where it wasn't deprecated) will reach
 | 
						|
EOL in Q1 2028 (standard 5 years LTS life time). Meaning, the feature can
 | 
						|
be removed in 13.4.
 | 
						|
 | 
						|
When the release model changes, the table above and templates below
 | 
						|
have to be updated.
 | 
						|
*/
 | 
						|
 | 
						|
template<uint V> static inline void check_deprecated_version(void)
 | 
						|
{
 | 
						|
  static_assert (
 | 
						|
     V <= 1004 ? MYSQL_VERSION_ID < 110500 :   /* until 10.4  EOL */
 | 
						|
     V <= 1005 ? MYSQL_VERSION_ID < 120100 :   /* until 10.5  EOL */
 | 
						|
     V <= 1010 ? MYSQL_VERSION_ID < 120500 :   /* until 10.6  EOL */
 | 
						|
     V <= 1107 ? MYSQL_VERSION_ID < 130400 :   /* until 10.11 EOL */
 | 
						|
     V == 999999,    /* only for sys_var::do_deprecated_warning() */
 | 
						|
     "check_deprecated_version failed"
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
/*
 | 
						|
  V is the 2-component 4-digit version where something was deprecated.
 | 
						|
  For example, if deprecated in 11.2: warn_deprecated<1102>(thd, "something")
 | 
						|
*/
 | 
						|
template<uint V> static inline void warn_deprecated(THD *thd,
 | 
						|
                                      const char *what, const char *to= NULL)
 | 
						|
{
 | 
						|
  check_deprecated_version<V>();
 | 
						|
  push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
 | 
						|
                      ER_WARN_DEPRECATED_SYNTAX, ER_THD(thd, to && *to
 | 
						|
                         ? ER_WARN_DEPRECATED_SYNTAX
 | 
						|
                         : ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
 | 
						|
                      what, to);
 | 
						|
}
 | 
						|
 | 
						|
template<uint V> static inline void warn_deprecated(const char *what,
 | 
						|
                                                    const char *to= NULL)
 | 
						|
{
 | 
						|
  check_deprecated_version<V>();
 | 
						|
  sql_print_warning(to && *to
 | 
						|
                    ? "'%s' is deprecated and will be removed in a future release. Please use %s instead"
 | 
						|
                    : "'%s' is deprecated and will be removed in a future release",
 | 
						|
                    what, to);
 | 
						|
}
 | 
						|
 | 
						|
/* Prevent direct usage of the error that bypasses the template */
 | 
						|
#undef ER_WARN_DEPRECATED_SYNTAX
 | 
						|
#undef ER_WARN_DEPRECATED_SYNTAX_WITH_VER
 | 
						|
#undef ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
 |