summaryrefslogtreecommitdiff
path: root/sql/structs.h
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/structs.h
parent4faf34ad639a28a29ddfc84547108fad058d00ca (diff)
downloadmariadb-git-209375fdd07d9be79784984f8543be73d1f92a9a.tar.gz
MDEV-15664 : sql_mode=ORACLE: Make TRIM return NULL instead of empty string
Diffstat (limited to 'sql/structs.h')
-rw-r--r--sql/structs.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/sql/structs.h b/sql/structs.h
index 9bcbd1ba0df..01d99517fed 100644
--- a/sql/structs.h
+++ b/sql/structs.h
@@ -723,6 +723,37 @@ public:
};
+enum trim_spec { TRIM_LEADING, TRIM_TRAILING, TRIM_BOTH };
+
+struct Lex_trim_st
+{
+ Item *m_remove;
+ Item *m_source;
+ trim_spec m_spec;
+public:
+ void set(trim_spec spec, Item *remove, Item *source)
+ {
+ m_spec= spec;
+ m_remove= remove;
+ m_source= source;
+ }
+ void set(trim_spec spec, Item *source)
+ {
+ set(spec, NULL, source);
+ }
+ Item *make_item_func_trim_std(THD *thd) const;
+ Item *make_item_func_trim_oracle(THD *thd) const;
+ Item *make_item_func_trim(THD *thd) const;
+};
+
+
+class Lex_trim: public Lex_trim_st
+{
+public:
+ Lex_trim(trim_spec spec, Item *source) { set(spec, source); }
+};
+
+
struct Lex_string_with_pos_st: public LEX_CSTRING
{
const char *m_pos;