Re: Getting "cache lookup failed for aggregate" error
От | Patrick Krecker |
---|---|
Тема | Re: Getting "cache lookup failed for aggregate" error |
Дата | |
Msg-id | CAK2mJFPeHQgbVv_nQvU8grWHWVFU5tO744RywqUC_=f_M6q6MA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Getting "cache lookup failed for aggregate" error (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Getting "cache lookup failed for aggregate" error
|
Список | pgsql-general |
On Tue, Jun 24, 2014 at 4:25 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Patrick Krecker <patrick@judicata.com> writes:Um. Why's it do that?
> Hello everyone -- We received a strange error today on our production write
> master. During a routine maintenance script, we got the following error:
> "ERROR: cache lookup failed for aggregate 5953992"
> I think I found the culprit. We have a cron script that (among other
> things) recreates the aggregate function array_cat_aggregate()once every
> minute.
Well, it's admittedly a hack. The cron script uses the function just after creating it. It was an easy way of guaranteeing that the database will have the function when it's necessary. However, I suppose that assumption is wrong because you have confirmed that aggregate functions are not part of the snapshot provided by beginning a transaction.
Yeah, there's no guarantee that dropping the aggregate wouldn't leave a
> My guess is that a) transactions do not guarantee a snapshot of
> custom functions and b) we got unlucky and the aggregate was deleted during
> the execution of the UPDATE.
window for this type of failure.
9.4 might be a little better about this because it doesn't use SnapshotNow
for catalog fetches anymore, but I think you'd still be at some risk.It'd be more interesting to see what the cron script was doing to the
> Here is the query that produced the error:
aggregate definition.
FWIW the SQL is
DROP AGGREGATE IF EXISTS array_cat_aggregate(anyarray);
CREATE AGGREGATE array_cat_aggregate(anyarray) (
SFUNC = array_cat,
STYPE = anyarray,
INITCOND = '{}'
);
Followed by the other statement given in my previous email. But, I think you've thoroughly answered by question. Thanks!
regards, tom lane
В списке pgsql-general по дате отправления: