From 909276e16bdec28aaa1816918ba4026a023fca96 Mon Sep 17 00:00:00 2001 From: ucorina Date: Fri, 1 Jul 2011 08:15:43 +0000 Subject: [PATCH] Updates to unit tests for correlated subqueries. git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0-DB@8560 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/xml/xmlquery/QueryParser.class.php | 2 +- .../xmlquery/tags/table/TablesTag.class.php | 34 ++++++++----------- test-phpUnit/QueryTester.class.php | 3 +- test-phpUnit/db/DBTest.php | 8 ++--- .../xml_query/cubrid/CubridSubqueryTest.php | 29 ++++++++++------ .../cubrid/data/from_correlated1.xml | 6 ++-- .../cubrid/data/from_uncorrelated1.xml | 4 +-- .../cubrid/data/where_correlated1.xml | 23 ++++++------- 8 files changed, 54 insertions(+), 55 deletions(-) diff --git a/classes/xml/xmlquery/QueryParser.class.php b/classes/xml/xmlquery/QueryParser.class.php index 5272c7857..08fda0f27 100644 --- a/classes/xml/xmlquery/QueryParser.class.php +++ b/classes/xml/xmlquery/QueryParser.class.php @@ -18,7 +18,7 @@ class QueryParser { function QueryParser($query, $isSubQuery = false){ $this->queryTag = new QueryTag($query, $isSubQuery); } - + function getTableInfo($query_id, $table_name){ $column_type = array(); diff --git a/classes/xml/xmlquery/tags/table/TablesTag.class.php b/classes/xml/xmlquery/tags/table/TablesTag.class.php index 7ddadbc67..32a95606e 100644 --- a/classes/xml/xmlquery/tags/table/TablesTag.class.php +++ b/classes/xml/xmlquery/tags/table/TablesTag.class.php @@ -16,31 +16,25 @@ * Can have children of type or */ + require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php'); + class TablesTag { var $tables; - function TablesTag($xml_tables_tag){ - $xml_tables = $xml_tables_tag->table; - $xml_queries = $xml_tables_tag->query; - + function TablesTag($xml_tables_tag){ $this->tables = array(); - - if($xml_tables){ - if(!is_array($xml_tables)) $xml_tables = array($xml_tables); - - if(count($xml_tables)) require_once(_XE_PATH_.'classes/xml/xmlquery/tags/table/TableTag.class.php'); - - foreach($xml_tables as $table){ - $this->tables[] = new TableTag($table); - } - } - if(!$xml_queries) return; - if(!is_array($xml_queries)) $xml_queries = array($xml_queries); - - foreach($xml_queries as $table){ - $this->tables[] = new QueryTag($table, true); - } + $xml_tables = $xml_tables_tag->table; + if(!is_array($xml_tables)) $xml_tables = array($xml_tables); + + foreach($xml_tables as $tag){ + if($tag->attrs->query == 'true'){ + $this->tables[] = new QueryTag($tag, true); + } + else { + $this->tables[] = new TableTag($tag); + } + } } function getTables(){ diff --git a/test-phpUnit/QueryTester.class.php b/test-phpUnit/QueryTester.class.php index 4ece64676..3fc911044 100644 --- a/test-phpUnit/QueryTester.class.php +++ b/test-phpUnit/QueryTester.class.php @@ -14,8 +14,7 @@ function getNewParserOutput($xml_file){ $newXmlQueryParser = new XmlQueryParser(); - $xml_obj = $newXmlQueryParser->getXmlFileContent($xml_file); - + $xml_obj = $newXmlQueryParser->getXmlFileContent($xml_file); $parser = new QueryParser($xml_obj->query); return $parser->toString(); } diff --git a/test-phpUnit/db/DBTest.php b/test-phpUnit/db/DBTest.php index d03d645a2..073cefe05 100644 --- a/test-phpUnit/db/DBTest.php +++ b/test-phpUnit/db/DBTest.php @@ -2,13 +2,13 @@ class DBTest extends PHPUnit_Framework_TestCase { function _testQuery($xml_file, $argsString, $expected, $methodName){ - echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; - echo $xml_file; - echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; + //echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; + //echo $xml_file; + //echo PHP_EOL . ' ----------------------------------- ' .PHP_EOL; $tester = new QueryTester(); $outputString = $tester->getNewParserOutputString($xml_file, $argsString); - echo $outputString; + //echo $outputString; $output = eval($outputString); if(!is_a($output, 'Query')){ diff --git a/test-phpUnit/db/xml_query/cubrid/CubridSubqueryTest.php b/test-phpUnit/db/xml_query/cubrid/CubridSubqueryTest.php index 57e98d46e..63ce3f923 100644 --- a/test-phpUnit/db/xml_query/cubrid/CubridSubqueryTest.php +++ b/test-phpUnit/db/xml_query/cubrid/CubridSubqueryTest.php @@ -86,23 +86,30 @@ function testWhereCorrelated1(){ $xml_file = $this->xmlPath . "where_correlated1.xml"; $argsString = ''; - $expected = ' SELECT * - FROM xe_member as member - WHERE regdate = (SELECT MAX(regdate) as regdate - FROM xe_documents as documents - WHERE documents.user_id = member.user_id)'; + $expected = 'select * + from "xe_member" as "member" + where "regdate" = ( + select max("regdate") as "maxregdate" + from "xe_documents" as "documents" + where "documents"."user_id" = "member"."user_id" + )'; $this->_test($xml_file, $argsString, $expected); } function testFromCorrelated1(){ $xml_file = $this->xmlPath . "from_correlated1.xml"; $argsString = ''; - $expected = 'SELECT m.member_srl, m.nickname, m.regdate, a.count - FROM ( - SELECT documents.member_srl as member_srl, count(*) as count - FROM xe_documents as documents - GROUP BY documents.member_srl) a - INNER JOIN xe_members m on m.member_srl = a.member_srl'; + $expected = 'select "m"."member_srl" + , "m"."nickname" + , "m"."regdate" + , "a"."count" + from ( + select "member_srl" as "member_srl" + , count(*) as "count" + from "xe_documents" as "documents" + group by "member_srl" + ) as "a" + left join "xe_member" as "m" on "m"."member" = "a"."member_srl"'; $this->_test($xml_file, $argsString, $expected); } } diff --git a/test-phpUnit/db/xml_query/cubrid/data/from_correlated1.xml b/test-phpUnit/db/xml_query/cubrid/data/from_correlated1.xml index 531d759a3..7c2c27143 100644 --- a/test-phpUnit/db/xml_query/cubrid/data/from_correlated1.xml +++ b/test-phpUnit/db/xml_query/cubrid/data/from_correlated1.xml @@ -1,6 +1,6 @@ - +
@@ -11,8 +11,8 @@ - -
+
+ diff --git a/test-phpUnit/db/xml_query/cubrid/data/from_uncorrelated1.xml b/test-phpUnit/db/xml_query/cubrid/data/from_uncorrelated1.xml index 64353bfb6..ec83f3f36 100644 --- a/test-phpUnit/db/xml_query/cubrid/data/from_uncorrelated1.xml +++ b/test-phpUnit/db/xml_query/cubrid/data/from_uncorrelated1.xml @@ -1,6 +1,6 @@ - +
@@ -11,7 +11,7 @@ - +
diff --git a/test-phpUnit/db/xml_query/cubrid/data/where_correlated1.xml b/test-phpUnit/db/xml_query/cubrid/data/where_correlated1.xml index b39a8582d..f6115c71f 100644 --- a/test-phpUnit/db/xml_query/cubrid/data/where_correlated1.xml +++ b/test-phpUnit/db/xml_query/cubrid/data/where_correlated1.xml @@ -6,17 +6,16 @@ - - - - - - - - - - - - + + +
+ + + + + + + + \ No newline at end of file