BUG #15395: Assert failure when using CURRENT OF with inheritance - Mailing list pgsql-bugs
From | PG Bug reporting form |
---|---|
Subject | BUG #15395: Assert failure when using CURRENT OF with inheritance |
Date | |
Msg-id | 153764171023.14986.280404050547008575@wrigleys.postgresql.org Whole thread Raw |
Responses |
Re: BUG #15395: Assert failure when using CURRENT OF with inheritance
|
List | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 15395 Logged by: Matvey Arye Email address: mat@timescale.com PostgreSQL version: 10.4 Operating system: OSX Description: The following SQL script causes an Assert failure if PostgreSQL is compiled with asserts. When run on a PostgreSQL instance with Asserts turned off, this script seems to work as expected. Thus, I suspect that it may be safe to just remove the Assert at execCurrent.c:239 but am not familiar enough with this part of the code to be sure. The SQL script is: ``` CREATE TABLE current_check (currentid int, payload text); CREATE TABLE current_check_1 () INHERITS (current_check); CREATE TABLE current_check_2 () INHERITS (current_check); INSERT INTO current_check_1 VALUES (1, 'abc'); INSERT INTO current_check_2 VALUES (2, 'bcd'), (3, 'cde'), (4, 'def'); BEGIN; DECLARE current_check_cursor SCROLL CURSOR FOR SELECT * FROM current_check; FETCH ABSOLUTE 2 FROM current_check_cursor; FETCH ABSOLUTE 1 FROM current_check_cursor; DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *; COMMIT; ``` The backtrace for the Assert is: ``` * frame #0: 0x00007fff54a19b66 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x00007fff54be4080 libsystem_pthread.dylib`pthread_kill + 333 frame #2: 0x00007fff549751ae libsystem_c.dylib`abort + 127 frame #3: 0x0000000102581630 postgres`ExceptionalCondition(conditionName="!(((bool) (((const void*)(current_tid) != ((void*)0)) && ((current_tid)->ip_posid !=0))))", errorType="FailedAssertion", fileName="execCurrent.c", lineNumber=239) at assert.c:54 frame #4: 0x00000001021b025f postgres`execCurrentOf(cexpr=0x00007f890604bf00, econtext=0x00007f890609c640, table_oid=16402, current_tid=0x00007ffeedcf4588) atexecCurrent.c:239 frame #5: 0x00000001021ffbd5 postgres`TidListEval(tidstate=0x00007f890609a6b8) at nodeTidscan.c:224 frame #6: 0x00000001021ff4de postgres`TidNext(node=0x00007f890609a6b8) at nodeTidscan.c:329 frame #7: 0x00000001021cabab postgres`ExecScanFetch(node=0x00007f890609a6b8, accessMtd=(postgres`TidNext at nodeTidscan.c:304), recheckMtd=(postgres`TidRecheck at nodeTidscan.c:420)) at execScan.c:97 frame #8: 0x00000001021ca8d3 postgres`ExecScan(node=0x00007f890609a6b8, accessMtd=(postgres`TidNext at nodeTidscan.c:304), recheckMtd=(postgres`TidRecheck at nodeTidscan.c:420)) at execScan.c:164 frame #9: 0x00000001021ff082 postgres`ExecTidScan(pstate=0x00007f890609a6b8) at nodeTidscan.c:453 frame #10: 0x00000001021c8d72 postgres`ExecProcNodeFirst(node=0x00007f890609a6b8) at execProcnode.c:430 frame #11: 0x00000001021f27f2 postgres`ExecProcNode(node=0x00007f890609a6b8) at executor.h:250 frame #12: 0x00000001021f182f postgres`ExecModifyTable(pstate=0x00007f8906098f00) at nodeModifyTable.c:1645 frame #13: 0x00000001021c5a82 postgres`ExecProcNode(node=0x00007f8906098f00) at executor.h:250 frame #14: 0x00000001021c1813 postgres`ExecutePlan(estate=0x00007f8906098840, planstate=0x00007f8906098f00, use_parallel_mode='\0', operation=CMD_DELETE, sendTuples='\x01', numberTuples=0, direction=ForwardScanDirection, dest=0x00007f8906000278, execute_once='\x01') at execMain.c:1722 frame #15: 0x00000001021c16db postgres`standard_ExecutorRun(queryDesc=0x00007f8906000310, direction=ForwardScanDirection, count=0, execute_once='\x01') at execMain.c:363 frame #16: 0x00000001021c1497 postgres`ExecutorRun(queryDesc=0x00007f8906000310, direction=ForwardScanDirection, count=0, execute_once='\x01') at execMain.c:306 frame #17: 0x00000001023cfc4e postgres`ProcessQuery(plan=0x00007f890608eea0, sourceText="DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *;", params=0x0000000000000000, queryEnv=0x0000000000000000, dest=0x00007f8906000278, completionTag="") at pquery.c:161 frame #18: 0x00000001023cecb8 postgres`PortalRunMulti(portal=0x00007f8903806040, isTopLevel='\x01', setHoldSnapshot='\x01', dest=0x00007f8906000278, altdest=0x00000001027d3348, completionTag="") at pquery.c:1286 frame #19: 0x00000001023ce6b4 postgres`FillPortalStore(portal=0x00007f8903806040, isTopLevel='\x01') at pquery.c:1033 frame #20: 0x00000001023ce285 postgres`PortalRun(portal=0x00007f8903806040, count=9223372036854775807, isTopLevel='\x01', run_once='\x01', dest=0x00007f890608ef98, altdest=0x00007f890608ef98, completionTag="") at pquery.c:768 frame #21: 0x00000001023c9c2c postgres`exec_simple_query(query_string="DELETE FROM current_check WHERE CURRENT OF current_check_cursor RETURNING *;") at postgres.c:1099 frame #22: 0x00000001023c8e37 postgres`PostgresMain(argc=1, argv=0x00007f8905006d10, dbname="single", username="default_perm_user") at postgres.c:4088 frame #23: 0x000000010230f08e postgres`BackendRun(port=0x00007f89049006c0) at postmaster.c:4405 frame #24: 0x000000010230e403 postgres`BackendStartup(port=0x00007f89049006c0) at postmaster.c:4077 frame #25: 0x000000010230d3e5 postgres`ServerLoop at postmaster.c:1755 frame #26: 0x000000010230ab25 postgres`PostmasterMain(argc=8, argv=0x00007f8902c03160) at postmaster.c:1363 frame #27: 0x000000010222e529 postgres`main(argc=8, argv=0x00007f8902c03160) at main.c:228 ```
pgsql-bugs by date: