From cd7a8f2048991f10d7c689228a83dd446dbba5b5 Mon Sep 17 00:00:00 2001 From: ucorina Date: Wed, 5 Oct 2011 09:02:36 +0000 Subject: [PATCH] Issue 363: Query error related default value git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9496 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../tags/condition/ConditionTag.class.php | 9 ++-- .../db/xml_query/mysql/MysqlSelectTest.php | 46 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/classes/xml/xmlquery/tags/condition/ConditionTag.class.php b/classes/xml/xmlquery/tags/condition/ConditionTag.class.php index d93bc58fa..41474b172 100644 --- a/classes/xml/xmlquery/tags/condition/ConditionTag.class.php +++ b/classes/xml/xmlquery/tags/condition/ConditionTag.class.php @@ -38,14 +38,17 @@ } else { $default_value = $condition->attrs->default; - if($default_value){ + if(isset($default_value)){ if($isColumnName){ $default_value = "'" . $default_value . "'"; } else if(in_array($this->operation, array('in', 'between', 'not in'))) $default_value = "\"" . $default_value . "\""; else if(!$isColumnName && !is_numeric($default_value) && !is_array($default_value)){ - $default_value = "\"" . $default_value . "\""; + if(strpos($default_value, "'")) + $default_value = "\"\'" . $default_value . "\"\'"; + else + $default_value = "\"'" . $default_value . "'\""; } $this->default_column = $default_value; } @@ -76,7 +79,7 @@ , $this->pipe ? ", '" . $this->pipe . "'" : '' ); } - else if($this->default_column){ + else if(isset($this->default_column)){ return sprintf("new ConditionWithoutArgument('%s',%s,%s%s)" , $this->column_name , $this->default_column diff --git a/test-phpUnit/db/xml_query/mysql/MysqlSelectTest.php b/test-phpUnit/db/xml_query/mysql/MysqlSelectTest.php index 97fc5a4b0..0f06d8f4d 100644 --- a/test-phpUnit/db/xml_query/mysql/MysqlSelectTest.php +++ b/test-phpUnit/db/xml_query/mysql/MysqlSelectTest.php @@ -87,4 +87,50 @@ $expected = 'select * from `xe_member` as `member` where substr(`extra_vars_t1`.`value`,5,4) >= 1102'; $this->_test($xml_file, $argsString, $expected); } + + function testResource_getLatestItemList(){ + $xml_file = _XE_PATH_ . "modules/resource/queries/getLatestItemList.xml"; + $argsString = ''; + $expected = 'select `package`.`module_srl` as `module_srl` + , `package`.`status` as `status` + , `package`.`category_srl` as `category_srl` + , `package`.`member_srl` as `member_srl` + , `package`.`package_srl` as `package_srl` + , `package`.`path` as `path` + , `package`.`license` as `license` + , `package`.`title` as `title` + , `package`.`homepage` as `homepage` + , `package`.`description` as `package_description` + , `package`.`voter` as `package_voter` + , `package`.`voted` as `package_voted` + , `package`.`downloaded` as `package_downloaded` + , `package`.`regdate` as `package_regdate` + , `package`.`last_update` as `package_last_update` + , `member`.`nick_name` as `nick_name` + , `member`.`user_id` as `user_id` + , `item`.`item_srl` as `item_srl` + , `item`.`document_srl` as `item_document_srl` + , `item`.`file_srl` as `item_file_srl` + , `item`.`screenshot_url` as `item_screenshot_url` + , `item`.`version` as `item_version` + , `item`.`voter` as `item_voter` + , `item`.`voted` as `item_voted` + , `item`.`downloaded` as `item_downloaded` + , `item`.`regdate` as `item_regdate` + , `files`.`source_filename` as `source_filename` + , `files`.`sid` as `sid` + from `xe_resource_packages` as `package` + , `xe_member` as `member` + , `xe_resource_items` as `item` + , `xe_files` as `files` + where (`package`.`status` = \'accepted\' + and `package`.`member_srl` = `member`.`member_srl` + and `item`.`item_srl` = `package`.`latest_item_srl` + and `package`.`update_order` <= 0 + and `files`.`file_srl` = `item`.`file_srl`) + and `package`.`update_order` <= 2100000000 + order by `package`.`update_order` asc + limit 0, 20'; + $this->_test($xml_file, $argsString, $expected); + } } \ No newline at end of file