Re: Trigger is not working for Inserts from the application

Поиск
Список
Период
Сортировка
От Kiran
Тема Re: Trigger is not working for Inserts from the application
Дата
Msg-id CAJfd1U4j0idWAMO7vCdH8=ugbzay52QJReJveG2Qz0gjCXRy9w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Trigger is not working for Inserts from the application  (Adrian Klaver <adrian.klaver@aklaver.com>)
Список pgsql-general
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.klaver@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 <tgl@sss.pgh.pa.us
<mailto:tgl@sss.pgh.pa.us>> wrote:

    Kiran <bangalore.kiran@gmail.com <mailto:bangalore.kiran@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.klaver@aklaver.com

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Trigger is not working for Inserts from the application
Следующее
От: Jim Nasby
Дата:
Сообщение: Re: 2.5TB Migration from SATA to SSD disks - PostgreSQL 9.2