1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-20017 Implement TO_CHAR() Oracle compatible function

TO_CHAR(expr, fmt)
- expr: required parameter, data/time/timestamp type expression
- fmt: optional parameter, format string, supports
  YYYY/YYY/YY/RRRR/RR/MM/MON/MONTH/MI/DD/DY/HH/HH12/HH24/SS and special
  characters. The default value is "YYYY-MM-DD HH24:MI:SS"

In Oracle, TO_CHAR() can also be used to convert numbers to strings, but
this is not supported. This will gave an error in this patch.

Other things:
- If format strings is a constant, it's evaluated only once and if there
  is any errors in it, they are given at once and the statement will abort.

Original author: woqutech
Lots of optimizations and cleanups done as part of review
This commit is contained in:
Monty
2021-01-24 23:56:43 +02:00
committed by Sergei Golubchik
parent cf93209c70
commit 81d9bed3a4
9 changed files with 1587 additions and 7 deletions

View File

@ -502,16 +502,16 @@ bool String::set_ascii(const char *str, size_t arg_length)
/* This is used by mysql.cc */
bool Binary_string::fill(uint32 max_length,char fill_char)
bool Binary_string::fill(size_t max_length,char fill_char)
{
if (str_length > max_length)
Ptr[str_length=max_length]=0;
Ptr[str_length= (uint32) max_length]=0;
else
{
if (realloc(max_length))
return TRUE;
bfill(Ptr+str_length,max_length-str_length,fill_char);
str_length=max_length;
str_length= (uint32) max_length;
}
return FALSE;
}