diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Components/SetOperation.php | 29 |
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; } } |