Merge pull request #71785 from Avogar/fix-json-parsing

Slightly better JSON type parsing
This commit is contained in:
Pavel Kruglov 2024-11-20 14:20:05 +00:00 committed by GitHub
commit 1aceb608f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 2 deletions

View File

@ -1443,7 +1443,8 @@ public:
auto shared_variant_discr = column_dynamic.getSharedVariantDiscriminator();
auto insert_settings_with_no_type_conversion = insert_settings;
insert_settings_with_no_type_conversion.allow_type_conversion = false;
for (size_t i = 0; i != variant_info.variant_names.size(); ++i)
auto order = SerializationVariant::getVariantsDeserializeTextOrder(assert_cast<const DataTypeVariant &>(*variant_info.variant_type).getVariants());
for (size_t i : order)
{
if (i != shared_variant_discr)
{

View File

@ -9,5 +9,5 @@
('key_6','String')
('key_7','Float64')
('key_7','Int64')
{"obj":{"id":"1","key_0":[{"key_1":[{"key_3":[{"key_4":"1048576","key_5":0.0001048576,"key_6":25.5,"key_7":"1025"},{"key_6":"","key_7":"2"}]}]},{},{"key_1":[{"key_3":[{"key_5":-1,"key_6":"aqbjfiruu","key_7":-922337203685477600},{"key_4":"","key_6":"","key_7":65537}]},{"key_3":[{"key_4":"ghdqyeiom","key_5":1048575,"key_7":21474836.48}]}]}]}}
{"obj":{"id":"1","key_0":[{"key_1":[{"key_3":[{"key_4":"1048576","key_5":0.0001048576,"key_6":25.5,"key_7":"1025"},{"key_6":"","key_7":"2"}]}]},{},{"key_1":[{"key_3":[{"key_5":-1,"key_6":"aqbjfiruu","key_7":-922337203685477600},{"key_4":"","key_6":"","key_7":"65537"}]},{"key_3":[{"key_4":"ghdqyeiom","key_5":1048575,"key_7":21474836.48}]}]}]}}
[[[1048576,NULL]],[],[[NULL,''],['ghdqyeiom']]] [[[0.0001048576,NULL]],[],[[-1,NULL],[1048575]]] [[[25.5,'']],[],[['aqbjfiruu',''],[NULL]]] [[[1025,2]],[],[[-922337203685477600,65537],[21474836.48]]]

View File

@ -0,0 +1,3 @@
Int64 42
Float64 42.42
Int64 43

View File

@ -0,0 +1,8 @@
set allow_experimental_json_type = 1;
drop table if exists test;
create table test (json JSON) engine=Memory;
insert into test format JSONAsObject {"a" : 42}, {"a" : 42.42}, {"a" : 43};
select dynamicType(json.a), json.a from test;
drop table test;