postgres pgjwt中的Concat导致错误

Concat in postgres pgjwt resulting in error

我正在尝试使用 pgjwt function 但是当我连接文本时我得到了奇怪的结果。谁能解释一下这里发生了什么。

select sign ('"{foo": "bar"}', 'secret', 'HS512'); -- Works fine
select sign ('"{foo": "bar"}', 'secret', 'HS' || '512'); -- Works fine
select sign ('"{foo": "bar"}', 'sec' || 'ret', 'HS512'); -- Works fine
select sign ('"{fo' || 'o": "bar"}', 'secret', 'HS512'); -- Error
select sign ('"{foo":' || ' "bar"}', 'secret', 'HS512'); -- Error
select sign ('"{foo": "b' || 'ar"}', 'secret', 'HS512'); -- Error
select sign ('{}', 'sec' || 'ret', 'HS512'); -- Works fine
select sign ('{' || '}', 'sec' || 'ret', 'HS512'); -- Error

我得到的错误是:

ERROR: function sign (text, unknown, unknown) does not exist

您正在使用串联将 JSON 对象拆分为两个 text 类型的字符串。

之后的演员应该可以完成工作,我相信:

select sign (('"{foo":' || ' "bar"}')::json, 'secret', 'HS512');