assert in nested SQL procedure call in current HEAD - Mailing list pgsql-hackers
From | Joe Conway |
---|---|
Subject | assert in nested SQL procedure call in current HEAD |
Date | |
Msg-id | eb59ce0b-4c95-98a1-1237-a9b300d1a9fe@joeconway.com Whole thread Raw |
Responses |
Re: assert in nested SQL procedure call in current HEAD
|
List | pgsql-hackers |
My colleague Yogesh Sharma discovered an assert in nested SQL procedure calls after ROLLBACK is used. Minimal test case and backtrace below. I have not yet tried to figure out exactly what is going on beyond seeing that it occurs in pg_plan_query() where the comment says "Planner must have a snapshot in case it calls user-defined functions"... Joe ---------------------- DROP TABLE IF EXISTS tst_tbl; CREATE TABLE tst_tbl (a int); CREATE OR REPLACE PROCEDURE insert_data() AS $$ INSERT INTO tst_tbl VALUES (42); $$ LANGUAGE SQL; CREATE OR REPLACE PROCEDURE transaction_test() AS $$ BEGIN ROLLBACK; CALL insert_data(); END $$ LANGUAGE PLPGSQL; CALL transaction_test(); #0 0x00007fe343cf4428 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54 #1 0x00007fe343cf602a in __GI_abort () at abort.c:89 #2 0x0000000000a71951 in ExceptionalCondition (conditionName=0xc9408b "!(ActiveSnapshotSet())", errorType=0xc93d23 "FailedAssertion", fileName=0xc93e22 "postgres.c", lineNumber=801) at assert.c:54 #3 0x00000000008ec20f in pg_plan_query (querytree=0x2df1f00, cursorOptions=256, boundParams=0x0) at postgres.c:801 #4 0x000000000070772e in init_execution_state (queryTree_list=0x2df2c28, fcache=0x2df12d8, lazyEvalOK=true) at functions.c:507 #5 0x0000000000707e50 in init_sql_fcache (finfo=0x7fffcbb1fd10, collation=0, lazyEvalOK=true) at functions.c:770 #6 0x00000000007085d9 in fmgr_sql (fcinfo=0x7fffcbb1fd40) at functions.c:1064 #7 0x0000000000675c12 in ExecuteCallStmt (stmt=0x2d54b18, params=0x0, atomic=false, dest=0xfc7380 <spi_printtupDR>) at functioncmds.c:2294 #8 0x00000000008f5067 in standard_ProcessUtility (pstmt=0x2d54a00, queryString=0x2d4f4e8 "CALL insert_data()", context=PROCESS_UTILITY_QUERY_NONATOMIC, params=0x0, queryEnv=0x0, dest=0xfc7380 <spi_printtupDR>, completionTag=0x7fffcbb20390 "") at utility.c:649 #9 0x00000000008f4852 in ProcessUtility (pstmt=0x2d54a00, queryString=0x2d4f4e8 "CALL insert_data()", context=PROCESS_UTILITY_QUERY_NONATOMIC, params=0x0, queryEnv=0x0, dest=0xfc7380 <spi_printtupDR>, completionTag=0x7fffcbb20390 "") at utility.c:360 #10 0x000000000074523d in _SPI_execute_plan (plan=0x2d54558, paramLI=0x0, snapshot=0x0, crosscheck_snapshot=0x0, read_only=false, fire_triggers=true, tcount=0) at spi.c:2225 #11 0x0000000000741d9d in SPI_execute_plan_with_paramlist (plan=0x2d54558, params=0x0, read_only=false, tcount=0) at spi.c:481 #12 0x00007fe33491bcfd in exec_stmt_call (estate=0x7fffcbb20870, stmt=0x2df6170) at pl_exec.c:2103 #13 0x00007fe33491b7bd in exec_stmt (estate=0x7fffcbb20870, stmt=0x2df6170) at pl_exec.c:1920 #14 0x00007fe33491b66e in exec_stmts (estate=0x7fffcbb20870, stmts=0x2df60f0) at pl_exec.c:1875 #15 0x00007fe33491b508 in exec_stmt_block (estate=0x7fffcbb20870, block=0x2df5c60) at pl_exec.c:1816 #16 0x00007fe334918e50 in plpgsql_exec_function (func=0x2d5ec30, fcinfo=0x7fffcbb20ba0, simple_eval_estate=0x0, atomic=false) at pl_exec.c:586 #17 0x00007fe334913119 in plpgsql_call_handler (fcinfo=0x7fffcbb20ba0) at pl_handler.c:263 #18 0x0000000000675c12 in ExecuteCallStmt (stmt=0x2d2cff8, params=0x0, atomic=false, dest=0x2d2d420) at functioncmds.c:2294 #19 0x00000000008f5067 in standard_ProcessUtility (pstmt=0x2d2d0c8, queryString=0x2d2c4e8 "CALL transaction_test();", context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x2d2d420, completionTag=0x7fffcbb213a0 "") at utility.c:649 #20 0x00000000008f4852 in ProcessUtility (pstmt=0x2d2d0c8, queryString=0x2d2c4e8 "CALL transaction_test();", context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x2d2d420, completionTag=0x7fffcbb213a0 "") at utility.c:360 -- Crunchy Data - http://crunchydata.com PostgreSQL Support for Secure Enterprises Consulting, Training, & Open Source Development
Attachment
pgsql-hackers by date: