From: Eelco D. <eel...@gm...> - 2010-06-03 07:42:27
|
I also experienced serious problems with disjunctions in queries, using SMW 1.5.0. From the resulting SQL queries (format=debug), it is clear that a pair of parentheses is missing. However, as the example below shows, this is not corrected by revision 64116. (For demonstration purposes, I also included the debug output where a pair of < > is used.) In my case, the problem was solved by adding the parentheses after line 651 (numbering of 64116 revision). Below, the output with the 64116 revision, again with < >, and the output after including the parentheses after line 651. By the way, the version used: MediaWiki 1.15.1 PHP 5.3.2-1ubuntu4.2 (apache2handler) MySQL 5.1.41-3ubuntu12.1 Admin Links (Versie 0.1.2) Semantic Drilldown (Versie 0.7) Semantic Forms (Versie 1.9) Parserhooks Header Tabs (Versie 0.6.6) ParserFunctions (Versie 1.1.1) Semantic Compound Queries (Versie 0.2.4) Semantic Internal Objects (Versie 0.4) Semantic MediaWiki (Versie 1.5.0) SemanticTasks (Versie 1.2) Widgets (Versie 0.8.9) Semantic Bundle (Versie 0.4.20100322) Semantic Result Formats (Versie 1.4.5) ----- ---Output with parentheses ( ... ) at line 688: Debug output by SMWSQLStore2 Generated Wiki-Query [[Has genre::Science||Cookbook||Fiction]] [[Was written by.Is from country::France]] Query-Size: 7 Query-Depth: 2 SQL query SELECT DISTINCT t7.smw_title AS t,t7.smw_namespace AS ns FROM `smw_ids` AS t7 INNER JOIN `smw_atts2` AS t1 ON t7.smw_id=t1.s_id INNER JOIN `smw_rels2` AS t3 ON t1.s_id=t3.s_id INNER JOIN `smw_atts2` AS t5 ON t3.o_id=t5.s_id WHERE ((t1.value_xsd='Science') OR (t1.value_xsd='Cookbook') OR (t1.value_xsd='Fiction') AND t1.p_id='57' AND (t3.p_id='56' AND ((t5.value_xsd='France') AND t5.p_id='60'))) ORDER BY t7.smw_sortkey ASC LIMIT 51 OFFSET 0; No errors or warnings. No auxilliary tables used. -------- ---Output with < ... > at line 688 Debug output by SMWSQLStore2 Generated Wiki-Query [[Has genre::Science||Cookbook||Fiction]] [[Was written by.Is from country::France]] Query-Size: 7 Query-Depth: 2 SQL query SELECT DISTINCT t7.smw_title AS t,t7.smw_namespace AS ns FROM `smw_ids` AS t7 INNER JOIN `smw_atts2` AS t1 ON t7.smw_id=t1.s_id INNER JOIN `smw_rels2` AS t3 ON t1.s_id=t3.s_id INNER JOIN `smw_atts2` AS t5 ON t3.o_id=t5.s_id WHERE <(t1.value_xsd='Science') OR (t1.value_xsd='Cookbook') OR (t1.value_xsd='Fiction') AND t1.p_id='57' AND <t3.p_id='56' AND <(t5.value_xsd='France') AND t5.p_id='60'>>> ORDER BY t7.smw_sortkey ASC LIMIT 51 OFFSET 0; No errors or warnings. No auxilliary tables used. -------- ---Output with parenthese after line 651 --- (after end of "foreach ($description->getDescriptions() as $subdesc)" ) Debug output by SMWSQLStore2 Generated Wiki-Query [[Has genre::Science||Cookbook||Fiction]] [[Was written by.Is from country::France]] Query-Size: 7 Query-Depth: 2 SQL query SELECT DISTINCT t7.smw_title AS t,t7.smw_namespace AS ns FROM `smw_ids` AS t7 INNER JOIN `smw_atts2` AS t1 ON t7.smw_id=t1.s_id INNER JOIN `smw_rels2` AS t3 ON t1.s_id=t3.s_id INNER JOIN `smw_atts2` AS t5 ON t3.o_id=t5.s_id WHERE ((t1.value_xsd='Science') OR (t1.value_xsd='Cookbook') OR (t1.value_xsd='Fiction')) AND t1.p_id='57' AND t3.p_id='56' AND (t5.value_xsd='France') AND t5.p_id='60' ORDER BY t7.smw_sortkey ASC LIMIT 51 OFFSET 0; No errors or warnings. No auxilliary tables used. ----------- Kind regards, Eelco Dijkstra eel...@gm... |