diff options
Diffstat (limited to 'plugin/type_uuid/item_uuidfunc.cc')
-rw-r--r-- | plugin/type_uuid/item_uuidfunc.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/plugin/type_uuid/item_uuidfunc.cc b/plugin/type_uuid/item_uuidfunc.cc new file mode 100644 index 00000000..3f2b7434 --- /dev/null +++ b/plugin/type_uuid/item_uuidfunc.cc @@ -0,0 +1,46 @@ +/* Copyright (c) 2019,2021, MariaDB Corporation + + 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-1335 USA */ + +#define MYSQL_SERVER +#include "mariadb.h" +#include "item_uuidfunc.h" +#include "sql_type_uuid.h" + +String *Item_func_sys_guid::val_str(String *str) +{ + DBUG_ASSERT(fixed()); + str->alloc(uuid_len()+1); + str->length(uuid_len()); + str->set_charset(collation.collation); + + uchar buf[MY_UUID_SIZE]; + my_uuid(buf); + my_uuid2str(buf, const_cast<char*>(str->ptr()), with_dashes); + return str; +} + +const Type_handler *Item_func_uuid::type_handler() const +{ + return Type_handler_uuid_new::singleton(); +} + +bool Item_func_uuid::val_native(THD *, Native *to) +{ + DBUG_ASSERT(fixed()); + to->alloc(MY_UUID_SIZE); + to->length(MY_UUID_SIZE); + my_uuid((uchar*)to->ptr()); + return 0; +} |