Использование SQL на SPITupleTable - PostgreSQL Server Programming Interface (SPI)? - PullRequest
0 голосов
/ 01 октября 2019

Я использую PostgreSQL Интерфейс программирования сервера (SPI) для выполнения моего запроса. Пожалуйста, посмотрите этот подробный пример или следующий простой пример кода:

int ret = SPI_exec("SELECT * FROM ....", 0);
SPITupleTable *myTupTable = SPI_tuptable; // contains resulting table which I want to query/manipulate

Теперь, когда у меня есть SPITupleTable, как я могу выполнить другой SQL-запрос поверх него? Другими словами, как я могу сделать что-то вроде следующего:

int ret = SPI_exec("SELECT * FROM ....", 0);
SPITupleTable *myTupTable = SPI_tuptable;

int ret2 = SPI_exec("SELECT * FROM myTupTable", 0); // query over SPITupleTable myTupTable
SPITupleTable2 *myTupTable2 = SPI_tuptable;

Я понимаю, что мог бы ввести в свой запрос оператор CREATE TABLE, а затем выполнить запрос по нему. Но, насколько я понимаю, использование CREATE TABLE связано с некоторыми накладными расходами на фиксацию таблицы в табличном пространстве PostgreSQL, что мне не нужно. Я ищу что-то более легкое, поскольку мне интересно использовать реляционную таблицу в качестве промежуточной таблицы, то есть вскоре после этого отказаться.

...