summaryrefslogtreecommitdiffstats
path: root/src/Components/SetOperation.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Components/SetOperation.php')
-rw-r--r--src/Components/SetOperation.php29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/Components/SetOperation.php b/src/Components/SetOperation.php
index 9281902..d695fce 100644
--- a/src/Components/SetOperation.php
+++ b/src/Components/SetOperation.php
@@ -86,25 +86,34 @@ class SetOperation extends Component
// No keyword is expected.
if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) {
- break;
+ if ($state == 0) {
+ break;
+ }
}
if ($state === 0) {
if ($token->token === '=') {
$state = 1;
- } else {
+ } else if ($token->value !== ',') {
$expr->column .= $token->token;
}
} elseif ($state === 1) {
- if ($token->token === ',') {
- $expr->column = trim($expr->column);
- $expr->value = trim($expr->value);
- $ret[] = $expr;
- $expr = new SetOperation();
- $state = 0;
- } else {
- $expr->value .= $token->token;
+ $tmp = Expression::parse(
+ $parser,
+ $list,
+ array(
+ 'noAlias' => true,
+ )
+ );
+ if ($tmp == null) {
+ $expr = null;
+ break;
}
+ $expr->column = trim($expr->column);
+ $expr->value = $tmp->expr;
+ $ret[] = $expr;
+ $expr = new SetOperation();
+ $state = 0;
}
}