Re: Cache lookup error when using jsonb, json_build_object and a WITH clause
От | Andres Freund |
---|---|
Тема | Re: Cache lookup error when using jsonb, json_build_object and a WITH clause |
Дата | |
Msg-id | 20140509131136.GD30231@awork2.anarazel.de обсуждение исходный текст |
Ответ на | Cache lookup error when using jsonb, json_build_object and a WITH clause (Michael Paquier <michael.paquier@gmail.com>) |
Ответы |
Re: Cache lookup error when using jsonb, json_build_object and a WITH clause
|
Список | pgsql-hackers |
Hi, On 2014-05-09 21:40:07 +0900, Michael Paquier wrote: > Hi all, > > I found the following error when playing with jsonb and json_build_object: > =# with jsonb_data as (select * from jsonb_each('{"aa" : > "po"}'::jsonb)) select json_build_object(key,value) from jsonb_data; > ERROR: XX000: cache lookup failed for type 2147483650 > LOCATION: lookup_type_cache, typcache.c:193 > > I would have expected the result to be the same as in the case of json: > =# with json_data as (select * from json_each('{"aa" : "po"}'::json)) > select json_build_object(key,value) from json_data; > json_build_object > ------------------- > {"aa" : "po"} > (1 row) Whoa. There's two wierd things here: a) "jsonb" has a typcategory 'C'. Marking a composite type. "json" has 'U'. b) datum_to_json() thinks it's a good idea to use typcategory to decide how a type is output. Isn't that pertty fundamentallyflawed? To detect composite types it really should look at typtype, now? Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: