[QGIS-Developer] [postgis-users] QGIS freezes when saving table with AFTER INSERT or UPDATE

Alexandre Neto senhor.neto at gmail.com
Thu Jan 4 03:59:05 PST 2024


Uhmm... Thanks.

So there's no way to avoid hanging QGIS while the trigger function(s) is running. I am guessing that if I have another trigger function in a table that is automatically populated by the first trigger, it will also be executed in the QGIS transaction, right?

Thanks Again,

Alexandre Neto

Sent with Shortwave <https://www.shortwave.com?utm_medium=email&utm_content=signature&utm_source=c2VuaG9yLm5ldG9AZ21haWwuY29t>

On Thu Jan 4, 2024, 11:45 AM GMT, Nicolas Ribot <mailto:nicolas.ribot at gmail.com> wrote:
> Hello,
>
> A trigger is executed in a single transaction: "The execution of an AFTER trigger can be deferred to the end of the transaction, rather than the end of the statement, if it was defined as a constraint trigger. In all cases, a trigger is executed as part of the same transaction as the statement that triggered it, so if either the statement or the trigger causes an error, the effects of both will be rolled back." (https://www.postgresql.org/docs/16/trigger-definition.html <https://www.postgresql.org/docs/16/trigger-definition.html>)
>
> So QGIS has to wait for it to finish.
>
> Nicolas
>
> On Thu, 4 Jan 2024 at 11:16, Alexandre Neto via postgis-users <postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>> wrote:
>> Sorry for the cross posting.
>>
>> I have a table with the following trigger
>>
>> CREATE TRIGGER tr_base_cont_trocos_ai AFTER
>> INSERT OR UPDATE ON base.cont_troco
>> FOR EACH STATEMENT
>> EXECUTE FUNCTION tr_gerar_outputs();
>>
>> Now, the tr_gerar_outputs() takes some time to process, as it generates new tables and updates a few materialized views.
>>
>> In QGIS, when I add or update one or more features and press save, I would expect it to be immediate, but it seems that QGIS hangs waiting for the function to finish before considering the save operation complete. If the function fails, it even prevent the feature to be commit.
>>
>> Is this expected for a AFTER INSERT OR UPDATE trigger? Shouldn't PostgreSQL commit the changes, inform QGIS that the operation was successful and only then execute the trigger?
>>
>> Thanks,
>>
>> Alexandre Neto
>>
>> Sent with Shortwave <https://www.shortwave.com?utm_medium=email&utm_content=signature&utm_source=c2VuaG9yLm5ldG9AZ21haWwuY29t>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
>> https://lists.osgeo.org/mailman/listinfo/postgis-users <https://lists.osgeo.org/mailman/listinfo/postgis-users>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20240104/a2fd744b/attachment.htm>


More information about the QGIS-Developer mailing list