Dear Tom, Adrian,

Excellent catch!
Thank you very very much to both. It is resolved now. I can sleep now.
Good night from Sweden.

regards
Kiran


On Sat, Sep 10, 2016 at 11:18 PM, Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 09/10/2016 02:09 PM, Kiran wrote:
>
>> Hi Adrian,
>>
>> The JSON value is inserted into a column in the database which I can see.
>> But the trigger which has to convert this JSON value in not tsvector
>> column is not updating that column.
>>
>
> As Tom explained, in your trigger function you have:
>
> to_tsvector('swedish',coalesce(New.body->>'qtext','')::text);
>
> In the body JSON you are passing in:
>
> $4 = '{"name": "Do you like Pizza ?", "type": "cat", "store":
> [{"labeltext": "Yes", "labelvalue": 1}, {"labeltext": "No", "labelvalue":
> 2}, {"labeltext": "Other", "labelvalue": 3}, {"labeltext": "Don''t know",
> "labelvalue": 4}], "target": {"place": "Sweden"}, "askfreq": "once",
> "whydesc": "Because I like it :)"}'
>
> there is not 'qtext', so New.body->>'qtext' is getting you NULL which the
> COALESCE is turning into '' which is making weighted_tsv look empty.
>
>
>> regards
>>
>> On Sat, Sep 10, 2016 at 10:27 PM, Tom Lane <t...@sss.pgh.pa.us
>> <mailto:t...@sss.pgh.pa.us>> wrote:
>>
>>     Kiran <bangalore.ki...@gmail.com <mailto:bangalore.ki...@gmail.com>>
>>     writes:
>>     > LOG:  execute <unnamed>: INSERT INTO "myschema"."cf_question"
>>     > ("cf_question_type_id", "cf_question_category_id", "lang", "body")
>> VALUES
>>     > ($1, $2, $3, $4) RETURNING *
>>     > DETAIL:  parameters: $1 = '1', $2 = '9', $3 = 'swedish', $4 =
>> '{"name": "Do
>>     > you like Pizza ?", "type": "cat", "store": [{"labeltext": "Yes",
>>     > "labelvalue": 1}, {"labeltext": "No", "labelvalue": 2},
>> {"labeltext":
>>     > "Other", "labelvalue": 3}, {"labeltext": "Don''t know",
>> "labelvalue": 4}],
>>     > "target": {"place": "Sweden"}, "askfreq": "once", "whydesc":
>> "Because I
>>     > like it :)"}'
>>
>>     Well, the obvious comment on that is "that JSON value hasn't got any
>>     qtext
>>     field".  So the ->> operator is returning null, the coalesce() is
>>     replacing that with an empty string, and you end up with an empty
>>     tsvector column.
>>
>>                             regards, tom lane
>>
>>
>>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to