diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-03-20 22:06:55 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-03-20 22:06:55 +0200 |
commit | bd3c8f47cd16b4795dd073bbd30decd804c76969 (patch) | |
tree | 684f91877eb6835e6335d614fafce9841eaf30af /sql/field.cc | |
parent | d529389358fb0c7f3e642d34d7fd84df307b9d29 (diff) | |
parent | fd5c36bed5de65e85900c9fc9f0ed2092c4b38c5 (diff) | |
download | mariadb-git-bd3c8f47cd16b4795dd073bbd30decd804c76969.tar.gz |
Merge 10.3 into 10.4
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sql/field.cc b/sql/field.cc index 0eb53f40a54..ace70c178bc 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -1,6 +1,6 @@ /* Copyright (c) 2000, 2017, Oracle and/or its affiliates. - Copyright (c) 2008, 2019, MariaDB + Copyright (c) 2008, 2020, MariaDB 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 @@ -9084,18 +9084,26 @@ int Field_geom::store(const char *from, size_t length, CHARSET_INFO *cs) { const char *db= table->s->db.str; const char *tab_name= table->s->table_name.str; + Geometry_buffer buffer; + Geometry *geom= NULL; + String wkt; + const char *dummy; if (!db) db= ""; if (!tab_name) tab_name= ""; + wkt.set_charset(&my_charset_latin1); + if (!(geom= Geometry::construct(&buffer, from, uint32(length))) || + geom->as_wkt(&wkt, &dummy)) + goto err; my_error(ER_TRUNCATED_WRONG_VALUE_FOR_FIELD, MYF(0), Geometry::ci_collection[geom_type]->m_name.str, - Geometry::ci_collection[wkb_type]->m_name.str, - db, tab_name, field_name.str, + wkt.c_ptr(), db, tab_name, field_name.str, (ulong) table->in_use->get_stmt_da()-> current_row_for_warning()); + goto err_exit; } |