diff --git a/src/postgres_execute.cpp b/src/postgres_execute.cpp index cb22820..8adef6f 100644 --- a/src/postgres_execute.cpp +++ b/src/postgres_execute.cpp @@ -45,7 +45,7 @@ static void PGExecuteFunction(ClientContext &context, TableFunctionInput &data_p return; } auto &transaction = Transaction::Get(context, data.pg_catalog).Cast(); - transaction.ExecuteQueries(data.query); + transaction.Query(data.query); data.finished = true; } diff --git a/test/sql/storage/postgres_execute_transaction.test b/test/sql/storage/postgres_execute_transaction.test new file mode 100644 index 0000000..d63887b --- /dev/null +++ b/test/sql/storage/postgres_execute_transaction.test @@ -0,0 +1,54 @@ +# name: test/sql/storage/postgres_execute_transaction.test +# description: Test interactions of postgres_execute and transactions +# group: [storage] + +require postgres_scanner + +require-env POSTGRES_TEST_DATABASE_AVAILABLE + +statement ok +PRAGMA enable_verification + +statement ok +ATTACH 'dbname=postgresscanner' AS s (TYPE POSTGRES) + +statement ok +CREATE OR REPLACE TABLE s.postgres_execute_attempt(i INTEGER); + +statement ok +BEGIN + +query I +CALL postgres_query('s', 'SELECT 42') +---- +42 + +statement ok +CALL postgres_execute('s', 'INSERT INTO postgres_execute_attempt VALUES (42)') + +statement ok +ROLLBACK + +query I +FROM s.postgres_execute_attempt +---- + +statement ok +BEGIN + +query I +CALL postgres_query('s', 'SELECT 42') +---- +42 + +statement ok +CALL postgres_execute('s', 'INSERT INTO postgres_execute_attempt VALUES (42); INSERT INTO postgres_execute_attempt VALUES (84)') + +statement ok +COMMIT + +query I +FROM s.postgres_execute_attempt +---- +42 +84