Thanks for pointing that out Alexander. I was just about to start a test after some code modifications, but now realized based on the example you pointed out that I was missing the "FROM cte" clause in my SQL statement. It feels a bit unnatural to have to specify that one, as you already define the cte name after the WITH keyword. But this example sorted it out.

Curious to see how it runs and if it leads to a measurable performance enhancement.

Marco

Op 27-9-2020 om 18:30 schreef Alexander Gataric:
You have the correct link. Here's an example.

https://stackoverflow.com/questions/36908495/update-with-result-from-cte-postgresql

Get BlueMail for Android <http://www.bluemail.me/r?b=16117>
On Sep 27, 2020, at 7:47 AM, Marco Boeringa <ma...@boeringa.demon.nl <mailto:ma...@boeringa.demon.nl>> wrote:

    Hi Alexander,

    I guess I could use the optional WITH clause that is part of
    UPDATE in PostgreSQL?:

    https://www.postgresql.org/docs/12/sql-update.html

    It would have been nice to see an example of such usage in the
    PostgreSQL help, but I'll figure it out.

    Marco

    Op 27-9-2020 om 13:59 schreef Alexander Gataric:
    Rewrite to have a CTE with the area calculations and join to the
    table.

    Get BlueMail for Android <http://www.bluemail.me/r?b=16117>
    On Sep 27, 2020, at 2:29 AM, Marco Boeringa
    <ma...@boeringa.demon.nl <mailto:ma...@boeringa.demon.nl>> wrote:

        Hi all,

        This may be an irrelevant basic question, but I just cannot find a clear
        answer to this, there is no documentation in the PostgreSQL docs for
        UPDATE about this:

        In case I set multiple columns using some PostGIS function that clearly
        has a (considerable) cost associated with it, and the value of the first
        column being set is also needed to set the second column, does
        PostgreSQL automatically optimize this and re-use the value already
        calculated for column 1 to set column 2's value, or is each column's SET
        statement treated as independent entity?

        E.g. let's say I want to calculate both area, and the division of area
        and perimeter, like:

        UPDATE <MY_TABLE> SET area = ST_Area(<GEOMETRY_COLUMN>), area_perimeter
        = ST_Area(<GEOMETRY_COLUMN>) / ST_Perimeter(<GEOMETRY_COLUMN>)

        Will PostgreSQL only process 'ST_Area(<GEOMETRY_COLUMN>)' once in this
        case, thus saving CPU load, or do I need to rewrite the SQL statement
        somehow to achieve that?

        Marco

        ------------------------------------------------------------------------

        postgis-users mailing list
        postgis-users@lists.osgeo.org
        https://lists.osgeo.org/mailman/listinfo/postgis-users


    _______________________________________________
    postgis-users mailing list
    postgis-users@lists.osgeo.org
    https://lists.osgeo.org/mailman/listinfo/postgis-users

    ------------------------------------------------------------------------

    postgis-users mailing list
    postgis-users@lists.osgeo.org
    https://lists.osgeo.org/mailman/listinfo/postgis-users


_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to