54000 Program Limit Exceeded
A transaction cannot have more than 4294967295 commands. The command here refers to the SQL statements actually executed on the database server, including the SQL statements executed inside the stored procedure, as long as these SQL statements modify the data in the database.
A transaction cannot have more than 4294967295 statements. The statement here refers to the SQL statement that the client sends to the database server.
A transaction cannot have more than 4294967295 subtransactions.
In stored procedures, you can trap errors and recover from them by using a BEGIN
block with an EXCEPTION
clause. In a transaction, you can define savepoints, then rollback to the declared savepoint positions. In PostgreSQL, these are implemented with subtransactions.
Undo block sequence number in a transaction cannot exceed 65535.
In Redrock Postgres, the undo record location (pg_uba
) is a pointer to the undo record location that consists of a block number, block sequence number, and an index of an item identifier. pg_uba
is used to order events that occur within a transaction, which is necessary to satisfy the ACID properties of a transaction.
Typically, database transactions allocate undo blocks from low to high in the undo segment, and the undo block number is incremented sequentially. When the undo block allocation reaches the end of the undo segment, an attempt is made to reallocate from the starting block of the undo segment, and when the undo block number becomes little, the block sequence number is incremented to ensure the order of the undo record position in the transaction.
Two-phase state data exceeded 1GB.
When preparing to commit a two-phase transaction, Postgres needs to persist the transaction-related heavyweight lock information and table access statistics to a two-phase state file. In Redrock Postgres, two-phase state data is stored in the undo segment associated with the transaction.