SPI_FREETUPTABLE(3)

πŸ“¦ version 15.19, in opensuse-leap 16.0

πŸ’– SPI_FREETUPTABLE(3) πŸ’–

okay bestie, this is the PostgreSQL 15.19 Documentation page for SPI_freetuptable, and it's lowkey iconic for cleanup vibes πŸ’…βœ¨

🌸 NAME 🌸

SPI_freetuptable β€” free a row set created by SPI_execute or a similar function. No cap, that's the whole assignment 🫢

✨ SYNOPSIS ✨

void SPI_freetuptable(SPITupleTable * tuptable)

πŸ’… DESCRIPTION πŸ’…

okay so SPI_freetuptable frees a row set that was created by a prior SPI command execution function, like SPI_execute. Because of that, bestie, it's often called with the global variable SPI_tuptable as its argument πŸ’–

This function is useful when an SPI-using C function needs to execute multiple commands and does not want to keep the results of earlier commands around until it ends. Very main character energy: execute, clean up, move on ✨

Note that any unfreed row sets will be freed anyway at SPI_finish πŸŽ€ Also, if a subtransaction is started and then aborted within execution of an SPI-using C function, SPI automatically frees any row sets created while the subtransaction was running. The guard rails are guarding πŸ˜­πŸ‘‘

Beginning in PostgreSQL 9.3, SPI_freetuptable contains guard logic to protect against duplicate deletion requests for the same row set. In previous releases, duplicate deletions would lead to crashes πŸ’€ So yeah, this is the version where duplicate-delete chaos got handled. Not me being grateful for guard logic πŸ™ˆ

πŸŽ€ ARGUMENTS πŸŽ€

  • SPITupleTable * tuptable β€” pointer to row set to free, or NULL to do nothing. Chill. No stress. Just cleanup. 🧚

xoxo, your PostgreSQL 15.19 docs bestie, dated 2026 πŸ’–πŸ¦‹

πŸ“¦ where this page comes from