Обсуждение: [MASSMAIL]Crash on UNION with PG 17

Поиск
Список
Период
Сортировка

[MASSMAIL]Crash on UNION with PG 17

От
"Regina Obe"
Дата:
Our PostGIS bot that follows master branch has been crashing for past couple
of days on one of our tests

https://trac.osgeo.org/postgis/ticket/5701

I traced the issue down to this commit:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=66c0185a3d14b
bbf51d0fc9d267093ffec735231


The issue can be exercised without postgis installed as follows:


CREATE TABLE edge_data AS 
SELECT i AS edge_id, i + 1 AS start_node, i + 2 As end_node
FROM generate_series(1,10) AS i;

  WITH edge AS (
    SELECT start_node, end_node
    FROM edge_data
    WHERE edge_id = 1
  )
  SELECT start_node id FROM edge UNION
  SELECT end_node FROM edge;


If I run using UNION ALL, this works fine:

  WITH edge AS (
    SELECT start_node, end_node
    FROM edge_data
    WHERE edge_id = 1
  )
  SELECT start_node id FROM edge UNION ALL
  SELECT end_node FROM edge;


Thanks,
Regina





Re: Crash on UNION with PG 17

От
Bruce Momjian
Дата:
On Wed, Mar 27, 2024 at 11:33:55AM -0400, Regina Obe wrote:
> Our PostGIS bot that follows master branch has been crashing for past couple
> of days on one of our tests
> 
> https://trac.osgeo.org/postgis/ticket/5701
> 
> I traced the issue down to this commit:
> https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=66c0185a3d14b
> bbf51d0fc9d267093ffec735231
> 
> 
> The issue can be exercised without postgis installed as follows:
> 
> 
> CREATE TABLE edge_data AS 
> SELECT i AS edge_id, i + 1 AS start_node, i + 2 As end_node
> FROM generate_series(1,10) AS i;
> 
>   WITH edge AS (
>     SELECT start_node, end_node
>     FROM edge_data
>     WHERE edge_id = 1
>   )
>   SELECT start_node id FROM edge UNION
>   SELECT end_node FROM edge;

I can confirm the crash in git master.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Only you can decide what is important to you.



Re: Crash on UNION with PG 17

От
David Rowley
Дата:
On Thu, 28 Mar 2024 at 04:34, Regina Obe <lr@pcorp.us> wrote:
> The issue can be exercised without postgis installed as follows:
>
>
> CREATE TABLE edge_data AS
> SELECT i AS edge_id, i + 1 AS start_node, i + 2 As end_node
> FROM generate_series(1,10) AS i;
>
>   WITH edge AS (
>     SELECT start_node, end_node
>     FROM edge_data
>     WHERE edge_id = 1
>   )
>   SELECT start_node id FROM edge UNION
>   SELECT end_node FROM edge;

Thanks for the report.

There's some discussion about this in [1] along with a proposed way to
fix it.  The proposed fix does alter the function signature of an
important and externally visible planner function, so will be waiting
for some feedback on that before moving ahead with fixing.

[1] https://www.postgresql.org/message-id/242fc7c6-a8aa-2daf-ac4c-0a231e2619c1@gmail.com

David



Re: Crash on UNION with PG 17

От
David Rowley
Дата:
On Thu, 28 Mar 2024 at 04:34, Regina Obe <lr@pcorp.us> wrote:
> CREATE TABLE edge_data AS
> SELECT i AS edge_id, i + 1 AS start_node, i + 2 As end_node
> FROM generate_series(1,10) AS i;
>
>   WITH edge AS (
>     SELECT start_node, end_node
>     FROM edge_data
>     WHERE edge_id = 1
>   )
>   SELECT start_node id FROM edge UNION
>   SELECT end_node FROM edge;

As of d5d2205c8, this query should work as expected.

Thank you for letting us know about this.

David



RE: Crash on UNION with PG 17

От
"Regina Obe"
Дата:
> On Thu, 28 Mar 2024 at 04:34, Regina Obe <lr@pcorp.us> wrote:
> > CREATE TABLE edge_data AS
> > SELECT i AS edge_id, i + 1 AS start_node, i + 2 As end_node FROM
> > generate_series(1,10) AS i;
> >
> >   WITH edge AS (
> >     SELECT start_node, end_node
> >     FROM edge_data
> >     WHERE edge_id = 1
> >   )
> >   SELECT start_node id FROM edge UNION
> >   SELECT end_node FROM edge;
> 
> As of d5d2205c8, this query should work as expected.
> 
> Thank you for letting us know about this.
> 
> David

Thanks for the fix.  I confirm it works now and our bots are green again.

Regina