mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 10:41:40 +09:00
Issue 1739: MSSQL Update statements fail when using alias
git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@10457 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
0e804c1b52
commit
867af986f4
2 changed files with 38 additions and 11 deletions
|
|
@ -403,6 +403,27 @@
|
||||||
return $this->_query($query);
|
return $this->_query($query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getUpdateSql($query, $with_values = true, $with_priority = false){
|
||||||
|
$columnsList = $query->getUpdateString($with_values);
|
||||||
|
if($columnsList == '') return new Object(-1, "Invalid query");
|
||||||
|
|
||||||
|
$from = $query->getFromString($with_values);
|
||||||
|
if($from == '') return new Object(-1, "Invalid query");
|
||||||
|
|
||||||
|
$tables = $query->getTables();
|
||||||
|
$alias_list = '';
|
||||||
|
foreach($tables as $table)
|
||||||
|
$alias_list .= $table->getAlias();
|
||||||
|
join(',', split(' ', $alias_list));
|
||||||
|
|
||||||
|
$where = $query->getWhereString($with_values);
|
||||||
|
if($where != '') $where = ' WHERE ' . $where;
|
||||||
|
|
||||||
|
$priority = $with_priority?$query->getPriority():'';
|
||||||
|
|
||||||
|
return "UPDATE $priority $alias_list SET $columnsList FROM ".$from.$where;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Handle deleteAct
|
* @brief Handle deleteAct
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,22 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
class MssqlUpdateTest extends MssqlTest {
|
class MssqlUpdateTest extends MssqlTest {
|
||||||
|
|
||||||
function _test($xml_file, $argsString, $expected, $expectedArgs = NULL){
|
function _test($xml_file, $argsString, $expected, $expectedArgs = NULL) {
|
||||||
$this->_testPreparedQuery($xml_file, $argsString, $expected, 'getUpdateSql', $expectedArgs = NULL);
|
$this->_testPreparedQuery($xml_file, $argsString, $expected, 'getUpdateSql', $expectedArgs = NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_counter_updateCounterUnique() {
|
||||||
|
$xml_file = _XE_PATH_ . "modules/counter/queries/updateCounterUnique.xml";
|
||||||
|
$argsString = '$args->regdate = 25;';
|
||||||
|
$expected = 'UPDATE [counter_status]
|
||||||
|
SET [unique_visitor] = [unique_visitor] + ?
|
||||||
|
, [pageview] = [pageview] + ?
|
||||||
|
FROM [xe_counter_status] as [counter_status]
|
||||||
|
WHERE [regdate] = ?';
|
||||||
|
$this->_test($xml_file, $argsString, $expected, array("25", 1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function test_counter_updateCounterUnique(){
|
|
||||||
$xml_file = _XE_PATH_ . "modules/counter/queries/updateCounterUnique.xml";
|
|
||||||
$argsString = '$args->regdate = 25;';
|
|
||||||
$expected = 'UPDATE [xe_counter_status] as [counter_status] SET [unique_visitor] = [unique_visitor] + ?, [pageview] = [pageview] + ? WHERE [regdate] = ?';
|
|
||||||
$this->_test($xml_file, $argsString, $expected, array("25", 1, 1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
?>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue