Subject: [postgresql-interfaces/psqlodbc] issue #31: While executing more than 2 queries in single transaction giving MSG: internal SAVEPOINT failed

From: "ajayn249 (@ajayn249)" <[email-masked]>
Date: Mon, 08 Jul 2024 17:54:28 +0000

1865:[7f750f6af500]statement.[ParseAndDescribeWithLibpq]2948: entering plan_name=_PLAN0x243f340 query=SAVEPOINT PIPECMD
1868:[7f750f6af500]statement.[ParseWithLibpq]2809: entering plan_name=_PLAN0x243f340 query=SAVEPOINT PIPECMD
1912:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='DEALLOCATE "_PLAN0x243f340"'
1969:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='SAVEPOINT _EXEC_SVP_0x24253d0'
1995:[7f750f6af500]statement.[ParseAndDescribeWithLibpq]2948: entering plan_name=_PLAN0x243f340 query=select count() from carrier
1998:[7f750f6af500]statement.[ParseWithLibpq]2809: entering plan_name=_PLAN0x243f340 query=select count() from carrier
2051:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='DEALLOCATE "_PLAN0x243f340"'
2118:[7f750f6af500]statement.[ParseAndDescribeWithLibpq]2948: entering plan_name=_PLAN0x243f340 query=ROLLBACK TO PIPECMD
2121:[7f750f6af500]statement.[ParseWithLibpq]2809: entering plan_name=_PLAN0x243f340 query=ROLLBACK TO PIPECMD
2165:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='DEALLOCATE "_PLAN0x243f340"'
2231:[7f750f6af500]statement.[ParseAndDescribeWithLibpq]2948: entering plan_name=_PLAN0x243f340 query=RELEASE SAVEPOINT PIPECMD
2234:[7f750f6af500]statement.[ParseWithLibpq]2809: entering plan_name=_PLAN0x243f340 query=RELEASE SAVEPOINT PIPECMD
2278:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='DEALLOCATE "_PLAN0x243f340"'
2343:[7f750f6af500]statement.[ParseAndDescribeWithLibpq]2948: entering plan_name=_PLAN0x243f340 query=SAVEPOINT PIPECMD
2346:[7f750f6af500]statement.[ParseWithLibpq]2809: entering plan_name=_PLAN0x243f340 query=SAVEPOINT PIPECMD
2390:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='DEALLOCATE "_PLAN0x243f340"'
2447:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='RELEASE _EXEC_SVP_0x24253d0;SAVEPOINT _EXEC_SVP_0x24253d0'
2467:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='ROLLBACK'
2548:[7f750f6af500]connection[CC_send_query_append]1809: conn=0x24253d0, query='BEGIN
2572:[7f750f6af500]statement.[ParseAndDescribeWithLibpq]2948: entering plan_name=_PLAN0x243f340 query=ROLLBACK TO PIPECMD
2575:[7f750f6af500]statement.[ParseWithLibpq]2809: entering plan_name=_PLAN0x243f340 query=ROLLBACK TO PIPECMD

While executing 3rd query 'RELEASE _EXEC_SVP_0x24253d0;SAVEPOINT _EXEC_SVP_0x24253d0' is coming and letting it to ROLLBACK and because of this SAVEPOINT _EXEC_SVP_0x24253d0 is giving error for MSG: internal SAVEPOINT failed.

In code i have observed in file execute.c #ifdef _RELEASE_INTERNAL_SAVEPOINT is defined which is actually responsible for
RELEASE _EXEC_SVP_0x24253d0 command to execute. Macro is defined in connection.h file. If i dont want to use RELEASE query or undefined that macro how i can do that.????
Is there any alternative way i can avoid this.

---

From: "davecramer (@davecramer)" <[email-masked]>
Date: Wed, 10 Jul 2024 13:43:38 +0000

What is the code you are trying to execute ?

---

From: "ajayn249 (@ajayn249)" <[email-masked]>
Date: Wed, 10 Jul 2024 17:33:10 +0000

[TestBaseMain.txt](https://github.com/user-attachments/files/16166988/TestBaseMain.txt)

This is the code where we are simply creating
 savepoint 
executing query 
rolling back 

 savepoint 
executing query 
rolling back 

 savepoint 
executing query 
rolling back 

Also find the attached logs
[mylog_TestBaseMain_ssuser1668331.log](https://github.com/user-attachments/files/16166944/mylog_TestBaseMain_ssuser1668331.log)
This is odbc logs