DB2 - Problem description
Problem IT01514 | Status: Closed |
DB2 MIGHT PRODUCE SQL0901N WHEN EXECUTING QUERIES WITH MULTIPLE NOT IN SUBQUERIES WITH CORRELATION OR FGAC | |
product: | |
DB2 FOR LUW / DB2FORLUW / A10 - DB2 | |
Problem description: | |
Under rare scenarios, DB2 might produce SQL0901N when either of the following set of conditions is true: condition set 1: 1) The query has references to 2 or more tables 2) The tables in the query have FGAC policies defined on the them 3) The query references one or more NOT IN or NOT EXISTS subqueries condition set 2: 1) The query references two or more NOT IN subqueries 2) The parent(s) of these subqueries are joined to other tables through inner join 3) The subqueries contain two or more tables or have nested existential subqueries with correlated predicates Example: create table t1 (c1 int,c2 int ,c3 int); create table t2 like t1; create table t3 (c1 int not null, c2 int not null, c3 int); create table t4 (c1 int not null, c2 int not null, c3 int); 1) select * from t1, t2 where t1.c2 = t2.c2 and t1.c2 not in (select c2 from (select c1,c2 from t3 where not exists (select t4.c1 from t4 where t3.c1 = t4.c1) fetch first 1000 rows only)) and t2.c2 not in (select c2 from (select c1,c2 from t3 where not exists (select t4.c1 from t4 where t3.c1 = t4.c1) fetch first 1000 rows only)); 2) select * from t1, t2 where t1.c2 = t2.c2 and t1.c2 not in (select c2 from t3 where not exists (select t4.c1 from t4 where t3.c1 = t4.c1) ) and t2.c2 not in (select c2 from t3 where not exists (select t4.c1 from t4 where t3.c1 = t4.c1) ); 3) select * from t1, t2 where t1.c2 = t2.c2 and t1.c2 not in (select t3.c2 from t3, t4 where t3.c1 = t4.c1) and t2.c2 not in (select t3.c2 from t3, t4 where t3.c1 = t4.c1); Returns: SQL0901N The SQL statement or command failed because of a database system error. (Reason "Internal error: unexpected QGM".) SQLSTATE=58004 For 10.1 fp3 and lower, the message seen in the db2diag.log is: 2014-03-25-17.46.38.788000-240 I4276F906 LEVEL: Severe PID : 14780 TID : 12008 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : MTDB0 APPHDL : 0-39828 APPID: *LOCAL.DB2.141004101738 AUTHID : ADMIN HOSTNAME: MYHOST EDUID : 12008 EDUNAME: db2agent (MTDB0) 0 FUNCTION: DB2 UDB, relation data serv, sqlrr_dump_ffdc, probe:300 DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes sqlcaid : SQLCA sqlcabc: 136 sqlcode: -901 sqlerrml: 30 sqlerrmc: Bad Plan; Unresolved QNC found sqlerrp : SQLNG006 sqlerrd : (1) 0x00000000 (2) 0x00000000 (3) 0x00000000 (4) 0x00000124 (5) 0xFFFFFFCE (6) 0x00000000 sqlwarn : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) sqlstate: And the stack will look like this: <StackTrace> <sqloDumpEDU> <sqldDumpContext> <sqlrr_dump_ffdc> <sqlzeDumpFFDC> <sqlzeSqlCode> <sqlnn_erds> <sqlng_build_INDX_key> <sqlng_build_KEY_obj> <sqlng_build_INDX_obj> <sqlng_build_TA_op> <sqlng_process_iscan_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_eao_plan> <sqlng_process_iscan_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_nljn_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_eao_plan> <sqlng_process_filter_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_hsjn_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_nljn_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_nljn_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_process_filter_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_process_nljn_op> <sqlngProcessLolepop> <sqlng_process_sort_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_scan_derived_table> <sqlng_process_scan_op> <sqlngProcessLolepop> <sqlng_process_mate_op> <sqlngProcessLolepop> <sqlng_process_pipe_op> <sqlngProcessLolepop> <sqlng_process_return_op> <sqlngProcessLolepop> <sqlng_build_thread> <sqlng_main> <sqlnn_cmpl> ... </StackTrace> For v10.1 fp4, the message seen in the db2diag.log is: 014-05-02-09.59.21.917000-300 I233696F905 LEVEL: Severe PID : 1648 TID : 6896 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : TEST APPHDL : 0-29 APPID: *LOCAL.DB2.140502145901 AUTHID : BARRETT3 HOSTNAME: MYHOST EDUID : 6896 EDUNAME: db2agent (TEST) FUNCTION: DB2 UDB, relation data serv, sqlrr_dump_ffdc, probe:300 DATA #1 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes sqlcaid : SQLCA sqlcabc: 136 sqlcode: -901 sqlerrml: 30 sqlerrmc: Internal error: unexpected QGM sqlerrp : SQLNR12D sqlerrd : (1) 0x00000000 (2) 0x00000000 (3) 0x00000000 (4) 0x00000000 (5) 0xFFFFFEF7 (6) 0x00000000 sqlwarn : (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) sqlstate: And the stack will look like this: <StackTrace> <sqloDumpEDU> <sqldDumpContext> <sqlrr_dump_ffdc> <sqlzeDumpFFDC> <sqlzeSqlCode> <sqlnn_erds> <sqlnr_NotExists2OJ_detail> <sqlnr_NotExists2OJ_action> <sqlnr_seq> <sqlnr_rcc> <sqlnr_startqtb_action> <sqlnr_seq> <sqlnr_rcc> <sqlnr_start_action> <sqlnr_prep2_round1_action> <sqlnr_seq> <sqlnr_rcc> <sqlnr_exe> <sqlnn_cmpl> ... </StackTrace> ---------------------------------------------------- Also In v10.1 fp 4 -SQL0901N is seen with the below stack. sqlnn_cmpl [300]:rc(-2144272270) Error in parser sqlnp_main [250]:rc(-2144272270) Invoke LPG parser (semantic phase) sqlnp_parser [330]:rc(-2144272270) Call smactn sqlnp_smactn [100]:rc(-2144272270) Processing semantic action sqlnq_sem [420]:rc(-2144272270) sqlnq_handle_from_table_ref called sqlnq_handle_from_table_re[ 22]:rc(-2144272270) call sqlnq_check_referenced_qtb sqlnq_check_referenced_qtb[200]:rc(-2144272270) calling qtb version of check referenced sqlnq_check_referenced_qtb[180]:rc(-2144272270) sqlnq_handle_new_view called sqlnq_handle_new_view [158]:rc(-2144272270) Parse the view sqlnp_main [250]:rc(-2144272270) Invoke LPG parser (semantic phase) sqlnp_parser [330]:rc(-2144272270) Call smactn sqlnp_smactn [100]:rc(-2144272270) Processing semantic action sqlnq_sem_function_call [ 10]:rc(-2144272270) Unexpected error from sqlnq_fun_tres sqlnq_fun_tres [140]:rc(-2144272270) Call sqlnq_fun_res_walk sqlnq_fun_res_walk [310]:rc(-2144272270) Call function encapsulator sqlnq_encap_doit [1880]:rc(-2144272270) encap UDF sqlnq_encap_UDF [110]:rc(-2144272270) arg promotion failed sqlnq_convertNode [ 50]:rc(-2144272364) Can't find a cast function SQL0901N The SQL statement or command failed because of a database system error. (Reason "arg promotion failed".) SQLSTATE=58004 | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * All * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Please upgrade to DB2 version 10.1 fix pack 5 * **************************************************************** | |
Local Fix: | |
Set DB2_ANTIJOIN to either NO or YES: db2set DB2_ANTIJOIN=NO or db2set DB2_ANTIJOIN=YES | |
Solution | |
The problem was fixed in DB2 version 10.1 fix pack 5 | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 02.05.2014 12.08.2015 12.08.2015 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.1.0.5 |