The hooks that I have installed in my extension are the followings:
shmem_startup_hook
post_parse_analyze_hook
ExecutorStart_hook
ExecutorRun_hook
ExecutorFinish_hook
ExecutorEnd_hook
ProcessUtility_hook
Post that I am using a java program like below to fire sql statements in a transaction:
Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null;// insert an actor into the actor table String SQLInsertActor = "INSERT INTO actor(first_name,last_name) VALUES(?,?)";try { // connect to the database conn = connect(); conn.setAutoCommit(false); int i=0; while (i < 5) { // add actor pstmt = conn.prepareStatement(SQLInsertActor, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, actor.getFirstName()); pstmt.setString(2, actor.getLastName()); pstmt.executeUpdate(); // commit the transaction if everything is fine conn.commit(); i++; } }
Now what is happening I am receiving all the hook call backs for INSERT statement always. BEGIN and COMMIT being utility statement hooks come for parse, process utility hook, . However from second iteration onwards, while BEGIN throws parse callback, but COMMIT command does not throw parse callback. It directly throws process utility hook.
Can you please help why second iteration onwards, commit does not throw parse callback to extension?