summaryrefslogtreecommitdiff
path: root/sql/item_create.cc
diff options
context:
space:
mode:
authorhalfspawn <j.brauge@qualiac.com>2018-03-27 09:08:30 +0200
committerAlexander Barkov <bar@mariadb.com>2018-03-29 14:27:57 +0400
commit209375fdd07d9be79784984f8543be73d1f92a9a (patch)
tree938c1ab12ab0a4daf616c1a0e43c0f51d4b8873a /sql/item_create.cc
parent4faf34ad639a28a29ddfc84547108fad058d00ca (diff)
downloadmariadb-git-209375fdd07d9be79784984f8543be73d1f92a9a.tar.gz
MDEV-15664 : sql_mode=ORACLE: Make TRIM return NULL instead of empty string
Diffstat (limited to 'sql/item_create.cc')
-rw-r--r--sql/item_create.cc50
1 files changed, 48 insertions, 2 deletions
diff --git a/sql/item_create.cc b/sql/item_create.cc
index 385d8de98fc..a07e4c9c16b 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -2218,6 +2218,19 @@ protected:
};
+class Create_func_ltrim_oracle : public Create_func_arg1
+{
+public:
+ virtual Item *create_1_arg(THD *thd, Item *arg1);
+
+ static Create_func_ltrim_oracle s_singleton;
+
+protected:
+ Create_func_ltrim_oracle() {}
+ virtual ~Create_func_ltrim_oracle() {}
+};
+
+
class Create_func_makedate : public Create_func_arg2
{
public:
@@ -2658,6 +2671,19 @@ protected:
};
+class Create_func_rtrim_oracle : public Create_func_arg1
+{
+public:
+ virtual Item *create_1_arg(THD *thd, Item *arg1);
+
+ static Create_func_rtrim_oracle s_singleton;
+
+protected:
+ Create_func_rtrim_oracle() {}
+ virtual ~Create_func_rtrim_oracle() {}
+};
+
+
class Create_func_sec_to_time : public Create_func_arg1
{
public:
@@ -5821,7 +5847,16 @@ Create_func_ltrim Create_func_ltrim::s_singleton;
Item*
Create_func_ltrim::create_1_arg(THD *thd, Item *arg1)
{
- return new (thd->mem_root) Item_func_ltrim(thd, arg1);
+ return Lex_trim(TRIM_LEADING, arg1).make_item_func_trim(thd);
+}
+
+
+Create_func_ltrim_oracle Create_func_ltrim_oracle::s_singleton;
+
+Item*
+Create_func_ltrim_oracle::create_1_arg(THD *thd, Item *arg1)
+{
+ return new (thd->mem_root) Item_func_ltrim_oracle(thd, arg1);
}
@@ -6318,7 +6353,16 @@ Create_func_rtrim Create_func_rtrim::s_singleton;
Item*
Create_func_rtrim::create_1_arg(THD *thd, Item *arg1)
{
- return new (thd->mem_root) Item_func_rtrim(thd, arg1);
+ return Lex_trim(TRIM_TRAILING, arg1).make_item_func_trim(thd);
+}
+
+
+Create_func_rtrim_oracle Create_func_rtrim_oracle::s_singleton;
+
+Item*
+Create_func_rtrim_oracle::create_1_arg(THD *thd, Item *arg1)
+{
+ return new (thd->mem_root) Item_func_rtrim_oracle(thd, arg1);
}
@@ -6978,6 +7022,7 @@ static Native_func_registry func_array[] =
{ { STRING_WITH_LEN("LOWER") }, BUILDER(Create_func_lcase)},
{ { STRING_WITH_LEN("LPAD") }, BUILDER(Create_func_lpad)},
{ { STRING_WITH_LEN("LTRIM") }, BUILDER(Create_func_ltrim)},
+ { { STRING_WITH_LEN("LTRIM_ORACLE") }, BUILDER(Create_func_ltrim_oracle)},
{ { STRING_WITH_LEN("MAKEDATE") }, BUILDER(Create_func_makedate)},
{ { STRING_WITH_LEN("MAKETIME") }, BUILDER(Create_func_maketime)},
{ { STRING_WITH_LEN("MAKE_SET") }, BUILDER(Create_func_make_set)},
@@ -7042,6 +7087,7 @@ static Native_func_registry func_array[] =
{ { STRING_WITH_LEN("ROUND") }, BUILDER(Create_func_round)},
{ { STRING_WITH_LEN("RPAD") }, BUILDER(Create_func_rpad)},
{ { STRING_WITH_LEN("RTRIM") }, BUILDER(Create_func_rtrim)},
+ { { STRING_WITH_LEN("RTRIM_ORACLE") }, BUILDER(Create_func_rtrim_oracle)},
{ { STRING_WITH_LEN("SEC_TO_TIME") }, BUILDER(Create_func_sec_to_time)},
{ { STRING_WITH_LEN("SHA") }, BUILDER(Create_func_sha)},
{ { STRING_WITH_LEN("SHA1") }, BUILDER(Create_func_sha)},