postgresql 给date_part创建索引,提示ERROR: functions in index expression must be marked IMMUTABLE
自己暂时解决了,问题出在::date转换上,把jsonb里的date字符串转成date格式,内置的方法,均不是immutable属性(稳定属性),所以不允许建立索引。包括to_date()函数。解决办法:自己按照内置的to_date()函数,改一个to_date_immutable()函数。然后给to_date_immutable()函数immutable属性。然后用自己的to_date_immutable()函数转换格式。就可以创建索引了。虽然官方不建议在非immutable属性上强行索引,但是为了解决问题。。。没办法了谁有更好的办法,可以留言哈~!创建函数代码:CREATE OR REPLACE FUNCTION to_date_immutable(
text,
text)
RETURNS date AS
'to_date'
LANGUAGE internal immutable STRICT
COST 1;
ALTER FUNCTION to_date_immutable(text, text)
OWNER TO postgres;
COMMENT ON FUNCTION to_date_immutable(text, text) IS 'convert text to date';建立索引代码:create index item_date_idx on item using btree((to_date_immutable(info_bak->>'release_date','yyyy-mm-dd')));
赞0
踩1