[ https://issues.apache.org/jira/browse/HAWQ-198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lei Chang updated HAWQ-198: --------------------------- Fix Version/s: 2.0.0 > Build-in functions will be executed in resource_negotiator stage which > causes it will be executed twice > --------------------------------------------------------------------------------------------------------- > > Key: HAWQ-198 > URL: https://issues.apache.org/jira/browse/HAWQ-198 > Project: Apache HAWQ > Issue Type: Bug > Components: Core > Reporter: Dong Li > Assignee: Ruilong Huo > Fix For: 2.0.0 > > > Build-in functions will be executed twice as it will be executed in > resource_negotiator stage. > I use function gp_elog() to make a demo. Function gp_elog() permit superuser > to insert elog information into pg_log. > {code} > select gp_elog('!!!!!!!!!!again test !!!!!!'); > {code} > When I vim the pg_log file, I find that the log information display twice. > 2015-11-27 16:35:15.912111 > CST,"intern","ff",p40030,th-1593601580,"[local]",,2015-11-25 18:17:21 > CST,1080,con25,cmd42,seg-10000,,,x1080,sx1,"LOG","XX100","!!!!!!!!!!again > test !!!!!!",,,,,,,0,,,, > 2015-11-27 16:35:45.985348 > CST,"intern","ff",p40030,th-1593601580,"[local]",,2015-11-25 18:17:21 > CST,1080,con25,cmd42,seg-10000,,,x1080,sx1,"LOG","XX100","!!!!!!!!!!again > test !!!!!!",,,,,,,0,,,, > When I use lldb to debug and set breakpoint in function gp_elog. I find > gp_elog is executed twice. And I put the bt information for the two times > calling below, and you will find it was exectuted in the resource_negotiator > stage when it should not be actually executed. > The first calling for gp_elog > {code} > * thread #1: tid = 0xe078b, 0x0056ca0d postgres`gp_elog(fcinfo=0xbfffd6bc) + > 17 at elog.c:4130, queue = 'com.apple.main-thread', stop reason = breakpoint > 1.1 > * frame #0: 0x0056ca0d postgres`gp_elog(fcinfo=0xbfffd6bc) + 17 at > elog.c:4130 > frame #1: 0x00294ab8 postgres`ExecMakeFunctionResult(fcache=0x049237c0, > econtext=0x04923c58, isNull=0xbfffdb0b, isDone=0x00000000) + 1730 at > execQual.c:1749 > frame #2: 0x002957e1 postgres`ExecEvalFunc(fcache=0x049237c0, > econtext=0x04923c58, isNull=0xbfffdb0b, isDone=0x00000000) + 104 at > execQual.c:2197 > frame #3: 0x0029a3dd > postgres`ExecEvalExprSwitchContext(expression=0x049237c0, > econtext=0x04923c58, isNull=0xbfffdb0b, isDone=0x00000000) + 58 at > execQual.c:4426 > frame #4: 0x003db70a postgres`evaluate_expr(expr=0x04921f14, > result_type=2278) + 111 at clauses.c:3354 > frame #5: 0x003dac9a postgres`evaluate_function(funcid=5044, > result_type=2278, args=0x04921e8c, func_tuple=0x040e84d0, context=0xbfffe598) > + 388 at clauses.c:2960 > frame #6: 0x003daa1e postgres`simplify_function(funcid=5044, > result_type=2278, args=0x04921e8c, allow_inline='\x01', context=0xbfffe598) + > 208 at clauses.c:2816 > frame #7: 0x003d8a88 > postgres`eval_const_expressions_mutator(node=0x04921b18, context=0xbfffe598) > + 757 at clauses.c:1757 > frame #8: 0x003dd606 postgres`expression_tree_mutator(node=0x04921adc, > mutator=0x003d8793, context=0xbfffe598) + 7705 at clauses.c:3922 > frame #9: 0x003da4b8 > postgres`eval_const_expressions_mutator(node=0x04921adc, context=0xbfffe598) > + 7461 at clauses.c:2519 > frame #10: 0x003dd6d4 postgres`expression_tree_mutator(node=0x04921c40, > mutator=0x003d8793, context=0xbfffe598) + 7911 at clauses.c:3958 > frame #11: 0x003da4b8 > postgres`eval_const_expressions_mutator(node=0x04921c40, context=0xbfffe598) > + 7461 at clauses.c:2519 > frame #12: 0x003d8742 postgres`eval_const_expressions(root=0x04921c98, > node=0x04921c40) + 92 at clauses.c:1643 > frame #13: 0x003b6ee5 postgres`preprocess_expression(root=0x04921c98, > expr=0x04921c40, kind=1) + 143 at planner.c:1117 > frame #14: 0x003b690d postgres`subquery_planner(glob=0x050310e8, > parse=0x04921a40, parent_root=0x00000000, tuple_fraction=0, > subroot=0xbfffe698, config=0x05030aa0) + 896 at planner.c:857 > frame #15: 0x003b60d1 postgres`standard_planner(parse=0x04921a40, > cursorOptions=0, boundParams=0x00000000) + 494 at planner.c:587 > frame #16: 0x003b5df4 postgres`resource_negotiator(parse=0x05030ee8, > cursorOptions=0, boundParams=0x00000000, resourceLife=QRL_ONCE, > result=0xbfffe7b4) + 79 at planner.c:476 > frame #17: 0x003b566b postgres`planner(parse=0x05030ee8, cursorOptions=0, > boundParams=0x00000000, resourceLife=QRL_ONCE) + 466 at planner.c:303 > frame #18: 0x0046c773 postgres`pg_plan_query(querytree=0x05030ee8, > boundParams=0x00000000, resource_life=QRL_ONCE) + 86 at postgres.c:816 > frame #19: 0x0046c89e postgres`pg_plan_queries(querytrees=0x05031654, > boundParams=0x00000000, needSnapshot='\0', resource_life=QRL_ONCE) + 131 at > postgres.c:889 > frame #20: 0x0046dfc0 postgres`exec_simple_query(query_string=0x0503022c, > seqServerHost=0x00000000, seqServerPort=-1) + 1357 at postgres.c:1647 > frame #21: 0x00473bcc postgres`PostgresMain(argc=4, argv=0x05005d28, > username=0x05005c48) + 7964 at postgres.c:4691 > frame #22: 0x0041072d postgres`BackendRun(port=0x0431bc80) + 1008 at > postmaster.c:5844 > frame #23: 0x0040fac7 postgres`BackendStartup(port=0x0431bc80) + 381 at > postmaster.c:5437 > frame #24: 0x00409259 postgres`ServerLoop + 1111 at postmaster.c:2139 > frame #25: 0x00407fe6 postgres`PostmasterMain(argc=9, argv=0x04319560) + > 5127 at postmaster.c:1431 > frame #26: 0x0031f553 postgres`main(argc=9, argv=0x04319560) + 1007 at > main.c:226 > frame #27: 0x00001fad postgres`_start + 212 > frame #28: 0x00001ed8 postgres`start + 40 > {code} > The second calling for gp_elog > {code} > thread #1: tid = 0xe078b, 0x0056ca0d postgres`gp_elog(fcinfo=0xbfffd76c) + 17 > at elog.c:4130, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 > * frame #0: 0x0056ca0d postgres`gp_elog(fcinfo=0xbfffd76c) + 17 at > elog.c:4130 > frame #1: 0x00294ab8 postgres`ExecMakeFunctionResult(fcache=0x0491f3c0, > econtext=0x0491f858, isNull=0xbfffdbbb, isDone=0x00000000) + 1730 at > execQual.c:1749 > frame #2: 0x002957e1 postgres`ExecEvalFunc(fcache=0x0491f3c0, > econtext=0x0491f858, isNull=0xbfffdbbb, isDone=0x00000000) + 104 at > execQual.c:2197 > frame #3: 0x0029a3dd > postgres`ExecEvalExprSwitchContext(expression=0x0491f3c0, > econtext=0x0491f858, isNull=0xbfffdbbb, isDone=0x00000000) + 58 at > execQual.c:4426 > frame #4: 0x003db70a postgres`evaluate_expr(expr=0x05035954, > result_type=2278) + 111 at clauses.c:3354 > frame #5: 0x003dac9a postgres`evaluate_function(funcid=5044, > result_type=2278, args=0x05035928, func_tuple=0x040e84d0, context=0xbfffe6a8) > + 388 at clauses.c:2960 > frame #6: 0x003daa1e postgres`simplify_function(funcid=5044, > result_type=2278, args=0x05035928, allow_inline='\x01', context=0xbfffe6a8) + > 208 at clauses.c:2816 > frame #7: 0x003d8a88 > postgres`eval_const_expressions_mutator(node=0x0503535c, context=0xbfffe6a8) > + 757 at clauses.c:1757 > frame #8: 0x003dd606 postgres`expression_tree_mutator(node=0x05035320, > mutator=0x003d8793, context=0xbfffe6a8) + 7705 at clauses.c:3922 > frame #9: 0x003da4b8 > postgres`eval_const_expressions_mutator(node=0x05035320, context=0xbfffe6a8) > + 7461 at clauses.c:2519 > frame #10: 0x003dd6d4 postgres`expression_tree_mutator(node=0x050352f4, > mutator=0x003d8793, context=0xbfffe6a8) + 7911 at clauses.c:3958 > frame #11: 0x003da4b8 > postgres`eval_const_expressions_mutator(node=0x050352f4, context=0xbfffe6a8) > + 7461 at clauses.c:2519 > frame #12: 0x003ddb92 postgres`query_tree_mutator(query=0x05035758, > mutator=0x003d8793, context=0xbfffe6a8, flags=0) + 222 at clauses.c:4066 > frame #13: 0x003de4b0 > postgres`query_or_expression_tree_mutator(node=0x0503521c, > mutator=0x003d8793, context=0xbfffe6a8, flags=0) + 56 at clauses.c:4313 > frame #14: 0x003d8674 postgres`fold_constants(q=0x0503521c, > boundParams=0x00000000, max_size=102400) + 113 at clauses.c:1550 > frame #15: 0x003cf449 > postgres`preprocess_query_optimizer(query=0x0503521c, boundParams=0x00000000) > + 52 at transform.c:49 > frame #16: 0x003b5455 postgres`optimize_query(parse=0x05030ee8, > boundParams=0x00000000) + 42 at planner.c:247 > frame #17: 0x003b58d2 postgres`planner(parse=0x05030ee8, cursorOptions=0, > boundParams=0x00000000, resourceLife=QRL_ONCE) + 1081 at planner.c:356 > frame #18: 0x0046c773 postgres`pg_plan_query(querytree=0x05030ee8, > boundParams=0x00000000, resource_life=QRL_ONCE) + 86 at postgres.c:816 > frame #19: 0x0046c89e postgres`pg_plan_queries(querytrees=0x05031654, > boundParams=0x00000000, needSnapshot='\0', resource_life=QRL_ONCE) + 131 at > postgres.c:889 > frame #20: 0x0046dfc0 postgres`exec_simple_query(query_string=0x0503022c, > seqServerHost=0x00000000, seqServerPort=-1) + 1357 at postgres.c:1647 > frame #21: 0x00473bcc postgres`PostgresMain(argc=4, argv=0x05005d28, > username=0x05005c48) + 7964 at postgres.c:4691 > frame #22: 0x0041072d postgres`BackendRun(port=0x0431bc80) + 1008 at > postmaster.c:5844 > frame #23: 0x0040fac7 postgres`BackendStartup(port=0x0431bc80) + 381 at > postmaster.c:5437 > frame #24: 0x00409259 postgres`ServerLoop + 1111 at postmaster.c:2139 > frame #25: 0x00407fe6 postgres`PostmasterMain(argc=9, argv=0x04319560) + > 5127 at postmaster.c:1431 > frame #26: 0x0031f553 postgres`main(argc=9, argv=0x04319560) + 1007 at > main.c:226 > frame #27: 0x00001fad postgres`_start + 212 > frame #28: 0x00001ed8 postgres`start + 40 > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)