Joe Conway <mail(at)joeconway(dot)com> writes:
> I am probably missing something obvious, but why does the
> AccessShareLock remain held on a table after a SELECT statement is
> complete when in a transaction block?
*Any* lock acquired by user command is held till end of transaction;
AccessShareLock isn't special.
In general, releasing early would increase the risk of undesirable
behaviors such as tables changing definition mid-transaction.
regards, tom lane