summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc23
1 files changed, 5 insertions, 18 deletions
diff --git a/sql/field.cc b/sql/field.cc
index dd0e56fb28e..93cd19898c9 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -11225,25 +11225,12 @@ bool Field_mysql_json::parse_mysql(String *s, bool json_quoted,
size_t len=length-1;
bool large;
- switch (type)
+ large= ((type == JSONB_TYPE_LARGE_OBJECT) || (type == JSONB_TYPE_LARGE_ARRAY));
+ if(get_mysql_string(s, type, data1, len, large))
{
- case JSONB_TYPE_SMALL_OBJECT:
- {
- large=false;
- parse_array_or_object(s, Field_mysql_json::enum_type::OBJECT, data1, len, large);
- break;
- }
- case JSONB_TYPE_LARGE_OBJECT:
- return false; //this->parse_array_or_object(Field_mysql_json::OBJECT, data1, len, true);
- case JSONB_TYPE_SMALL_ARRAY:
- return false; //this->parse_array_or_object(Field_mysql_json::ARRAY, data1, len, false);
- case JSONB_TYPE_LARGE_ARRAY:
- return false; //parse_array_or_object(Field_mysql_json::ARRAY, data1, len, true);
- default:
- return false;//this->parse_scalar(type, data, len);
+ return true;
}
-
- return true;
+ return false;
}
String *Field_mysql_json::val_str(String *buf1_tmp, String *buf2 __attribute__((unused)))
@@ -11251,7 +11238,7 @@ bool Field_mysql_json::parse_mysql(String *s, bool json_quoted,
ASSERT_COLUMN_MARKED_FOR_READ;
String *buf1= Field_blob::val_str(buf1_tmp, buf2);
bool parsed= this->parse_mysql(buf1, true, field_name.str);
- if(parsed)
+ if(!parsed)
buf1->append("\nFinshed");
else
buf1->length(0);