DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27440>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27440 nesting-error in SQLTransformer Summary: nesting-error in SQLTransformer Product: Cocoon 2 Version: Current CVS 2.1 Platform: All OS/Version: All Status: NEW Severity: Normal Priority: Other Component: general components AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] What I was looking for was somethink like SELECT key FROM a UNION B SELECT * FROM a WHERE key SELECT * FROM b WHERE key When nesting multiple <sql:execute-query><sql:query/></sql:execute-query>s inside a top-level <sql:execute-query>-element, nothing is done/executed/displayed. This is due to a bug with SQLTransformer.current_query_index: Here is the relevant code from SQLTransformer.java: 413:startExecuteQueryElement() { 417: current_query_index = queries.size(); 503:endExecuteQueryElement() { 506: if (current_query_index == 0) executeQuery(0) 511: else current_query_index--; // BUG!!!! Here is a trace of an example to illustrate the bug: <sql:execure-query> current_query_index := 0; <sql:execute-query> current_query_index := 1; </sql:execute-query> current_query_index := 1-- = 0; <sql:execute-query> current_query_index := 2; </sql:execute-query> current_query_index := 2-- = 1; </sql:execute-query> current_query_index == 1 != 0 // NO executeQuery(0) Analysis of the bug: * current_query_index is used two-fold: 1. As an index into the Vector queries to indicate the last query, 2. As an indicator of nesting-level. This only works when each <execute-query> contains at-most one other <execute-query> element. * Using current_query_index as an indicator for nesting-level does work for <1><2><3/></2></1> but not for <1><2/><3/><1>. * current_query_index is used in conjunction with sql:ancestor-value/@sql:level to compute the parent query. Clarification/comment: A DTD for the current working (linear)queries would look like: <!ELEMENT execute-query (query,execute-query?)> A DTD for tree-queries, what I tried, would look like: <!ELEMENT execute-query (query,execute-query*)> Bug resolution: Either document that only the 1st type of queries is allowed or rewrite SQLTransformer to also allow the 2nd type of queries. Would a patch be accepted if I would implement type 2? Further comment: I found one other posting of a person trying to do the same as I: http://archives.real-time.com/pipermail/cocoon-users/2003-July/036617.html