Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert

From: Kevin Grittner <kgrittn(at)ymail(dot)com>
To: Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com>, Andres Freund <andres(at)2ndquadrant(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Kevin Grittner <kevin(dot)grittner(at)enterprisedb(dot)com>
Subject: Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert
Date: 2013-04-23 21:34:29
Message-ID: 1366752869.62658.YahooMailNeo@web162902.mail.bf1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com> wrote:
> On Mon, Apr 22, 2013 at 6:41 PM, Andres Freund <andres(at)2ndquadrant(dot)com> wrote:
>> On 2013-04-22 18:35:04 +0530, Jeevan Chalke wrote:

>>> I have observed that following sequence is causing server crash.
>>>
>>> CREATE MATERIALIZED VIEW temp_class_mv AS
>>>   SELECT * FROM pg_class
>>>   WITH NO DATA;
>>>
>>> CREATE OR REPLACE FUNCTION test_refresh_mv()
>>> RETURNS int
>>> AS $$
>>> BEGIN
>>>  REFRESH MATERIALIZED VIEW temp_class_mv;
>>>  return 1;
>>> END; $$ LANGUAGE plpgsql;
>>>
>>> SELECT test_refresh_mv();
>>>
>>>
>>> I had a quick look over the crash and it is hitting following Assert in
>>> spi.c:
>>>
>>>                 else if (IsA(stmt, RefreshMatViewStmt))
>>>                 {
>>>                     Assert(strncmp(completionTag,
>>>                                    "REFRESH MATERIALIZED VIEW ", 23) == 0);
>>>                     _SPI_current->processed = strtoul(completionTag + 23,
>>>                                                       NULL, 10);
>>>                 }
>>>
>>> It seems like we are missing expected value for completionTag in
>>> ExecRefreshMatView()

>> Possibly independent from this issue, but where did that 23 come from?

When the consensus developed to change the syntax from LOAD
MATERIALIZED VIEW I failed to noticed the length here when making
the changes for that.

> BTW, attached is the patch which works well for me, but need details review.

I suggest that we just rip out this section of code.  Trying to
provide a number here is probably all wrong, anyway.  As the
features evolve, there may not be a readily accessible rowcount for
this command in all cases.

Any objections to the attached to fix this issue?

--
Kevin Grittner
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Attachment Content-Type Size
mv_crash-v2.patch text/x-patch 670 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2013-04-23 21:56:34 Re: 9.3 Beta1 status report
Previous Message Alexander Korotkov 2013-04-23 21:25:47 Re: GSOC Student Project Idea