Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert
От | Kevin Grittner |
---|---|
Тема | Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert |
Дата | |
Msg-id | 1366752869.62658.YahooMailNeo@web162902.mail.bf1.yahoo.com обсуждение исходный текст |
Ответ на | Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert (Jeevan Chalke <jeevan.chalke@enterprisedb.com>) |
Ответы |
Re: REFRESH MATERIALIZED VIEW command in PL block hitting Assert
|
Список | pgsql-hackers |
Jeevan Chalke <jeevan.chalke@enterprisedb.com> wrote: > On Mon, Apr 22, 2013 at 6:41 PM, Andres Freund <andres@2ndquadrant.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
Вложения
В списке pgsql-hackers по дате отправления: