Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert

From: Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com>
To: Andres Freund <andres(at)2ndquadrant(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
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 12:18:49
Message-ID: CAM2+6=V5Ytx-noS3=1wVR=T-H-98TOwaiaMJqEOppzoRf9YXww@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Tom,

Since we are close to release, we should not have crashes like this.

Please have a look. My patch may not be correct as I haven't looked closely.

Thanks

On Mon, Apr 22, 2013 at 7:28 PM, 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:
>> > Hi,
>> >
>> > 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?
>>
>
> 23 is also bogus here.
> It should be 26 i.e. length of "REFRESH MATERIALIZED VIEW "
>
> BTW, attached is the patch which works well for me, but need details
> review.
>
> Thanks
>
>
>> ISTM we're strtoul()ing "EW somenumber" here.
>>
>> Greetings,
>>
>> Andres Freund
>>
>> --
>> Andres Freund http://www.2ndQuadrant.com/
>> PostgreSQL Development, 24x7 Support, Training & Services
>>
>
>
>
> --
> Jeevan B Chalke
> Senior Software Engineer, R&D
> EnterpriseDB Corporation
> The Enterprise PostgreSQL Company
>
> Phone: +91 20 30589500
>
> Website: www.enterprisedb.com
> EnterpriseDB Blog: http://blogs.enterprisedb.com/
> Follow us on Twitter: http://www.twitter.com/enterprisedb
>
> This e-mail message (and any attachment) is intended for the use of the
> individual or entity to whom it is addressed. This message contains
> information from EnterpriseDB Corporation that may be privileged,
> confidential, or exempt from disclosure under applicable law. If you are
> not the intended recipient or authorized to receive this for the intended
> recipient, any use, dissemination, distribution, retention, archiving, or
> copying of this communication is strictly prohibited. If you have received
> this e-mail in error, please notify the sender immediately by reply e-mail
> and delete this message.
>

--
Jeevan B Chalke
Senior Software Engineer, R&D
EnterpriseDB Corporation
The Enterprise PostgreSQL Company

Phone: +91 20 30589500

Website: www.enterprisedb.com
EnterpriseDB Blog: http://blogs.enterprisedb.com/
Follow us on Twitter: http://www.twitter.com/enterprisedb

This e-mail message (and any attachment) is intended for the use of the
individual or entity to whom it is addressed. This message contains
information from EnterpriseDB Corporation that may be privileged,
confidential, or exempt from disclosure under applicable law. If you are
not the intended recipient or authorized to receive this for the intended
recipient, any use, dissemination, distribution, retention, archiving, or
copying of this communication is strictly prohibited. If you have received
this e-mail in error, please notify the sender immediately by reply e-mail
and delete this message.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2013-04-23 12:30:47 Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert
Previous Message Andres Freund 2013-04-23 11:54:14 Re: Couple of issues with pg_xlogdump