From e8741e7cb64de67864715def519827d07d397f25 Mon Sep 17 00:00:00 2001 From: ucorina Date: Thu, 13 Oct 2011 14:53:30 +0000 Subject: [PATCH] =?UTF-8?q?Issue=20491:=201.5.0.5=20=EC=84=A4=EC=B9=98?= =?UTF-8?q?=EC=9A=B0=20=EB=B2=84=EA=B7=B8=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9643 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../xmlquery/queryargument/QueryArgument.class.php | 8 +++++--- .../xmlquery/tags/column/UpdateColumnTag.class.php | 2 +- test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php | 11 ++++++++++- .../mysql/data/menu.updateMenuItemListorder.xml | 13 +++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml diff --git a/classes/xml/xmlquery/queryargument/QueryArgument.class.php b/classes/xml/xmlquery/queryargument/QueryArgument.class.php index e66f6244b..e4082403f 100644 --- a/classes/xml/xmlquery/queryargument/QueryArgument.class.php +++ b/classes/xml/xmlquery/queryargument/QueryArgument.class.php @@ -7,7 +7,9 @@ var $column_name; var $operation; - function QueryArgument($tag){ + var $ignore_value; + + function QueryArgument($tag, $ignore_value = false){ static $number_of_arguments = 0; $this->argument_name = $tag->attrs->var; @@ -30,7 +32,7 @@ if($tag->attrs->operation) $this->operation = $tag->attrs->operation; $this->argument_validator = new QueryArgumentValidator($tag, $this); - + $this->ignore_value = $ignore_value; } function getArgumentName(){ @@ -77,7 +79,7 @@ $arg = sprintf("\n$%s_argument = new Argument('%s', %s);\n" , $this->argument_name , $this->variable_name - , '$args->'.$this->variable_name); + , $this->ignore_value ? 'null' : '$args->'.$this->variable_name); $arg .= $this->argument_validator->toString(); diff --git a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php index 2152007f6..ba2d05227 100644 --- a/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php +++ b/classes/xml/xmlquery/tags/column/UpdateColumnTag.class.php @@ -22,7 +22,7 @@ else { $default_value = new DefaultValue($this->name, $column->attrs->default); if($default_value->isOperation()) - $this->argument = new QueryArgument($column); + $this->argument = new QueryArgument($column, true); else $this->default_value = $dbParser->parseColumnName($column->attrs->default); } } diff --git a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php index 02b5d3447..9b40b17da 100644 --- a/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php +++ b/test-phpUnit/db/xml_query/mysql/MysqlUpdateTest.php @@ -42,5 +42,14 @@ $this->_test($xml_file, $argsString, $expected); } - + function test_menu_updateMenuItemListorder(){ + $xml_file = _TEST_PATH_ . "db/xml_query/mysql/data/menu.updateMenuItemListorder.xml"; + $argsString = '$args->menu_srl = 10; $args->parent_srl = 11; $args->listorder = 12;'; + $expected = 'update `xe_menu_item` as `menu_item` + set `listorder` = `listorder` - 1 + where `menu_srl` = 10 + and `parent_srl` = 11 + and `listorder` <= 12'; + $this->_test($xml_file, $argsString, $expected); + } } \ No newline at end of file diff --git a/test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml b/test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml new file mode 100644 index 000000000..ced0e2640 --- /dev/null +++ b/test-phpUnit/db/xml_query/mysql/data/menu.updateMenuItemListorder.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +