private function doParse($sql2)
    {
        $this->implicitSelectorName = null;
        $this->sql2 = $sql2;
        $source = null;
        $constraint = null;
        $updates = [];
        $applies = [];

        while ($this->scanner->lookupNextToken() !== '') {
            switch (strtoupper($this->scanner->lookupNextToken())) {
                case 'UPDATE':
                    $this->scanner->expectToken('UPDATE');
                    $source = $this->parseSource();
                    break;
                case 'SET':
                    $this->scanner->expectToken('SET');
                    $updates = $this->parseUpdates();
                    break;
                case 'APPLY':
                    $this->scanner->expectToken('APPLY');
                    $applies = $this->parseApply();
                    break;
                case 'WHERE':
                    $this->scanner->expectToken('WHERE');
                    $constraint = $this->parseConstraint();
                    break;
                default:
                    throw new InvalidQueryException('Expected end of query, got "'.$this->scanner->lookupNextToken().'" in '.$this->sql2);
            }
        }

        if (!$source instanceof SourceInterface) {
            throw new InvalidQueryException('Invalid query, source could not be determined: '.$sql2);
        }

        $query = $this->factory->createQuery($source, $constraint);

        $res = new \ArrayObject([$query, $updates, $constraint, $applies]);

        return $res;
    }
private function doParse($sql2)
    {
        $this->implicitSelectorName = null;
        $this->sql2 = $sql2;
        $source = null;
        $constraint = null;
        $updates = [];
        $applies = [];

        while ($this->scanner->lookupNextToken() !== '') {
            switch (strtoupper($this->scanner->lookupNextToken())) {
                case 'UPDATE':
                    $this->scanner->expectToken('UPDATE');
                    $source = $this->parseSource();
                    break;
                case 'SET':
                    $this->scanner->expectToken('SET');
                    $updates = $this->parseUpdates();
                    break;
                case 'APPLY':
                    $this->scanner->expectToken('APPLY');
                    $applies = $this->parseApply();
                    break;
                case 'WHERE':
                    $this->scanner->expectToken('WHERE');
                    $constraint = $this->parseConstraint();
                    break;
                default:
                    throw new InvalidQueryException('Expected end of query, got "'.$this->scanner->lookupNextToken().'" in '.$this->sql2);
            }
        }

        if (!$source instanceof SourceInterface) {
            throw new InvalidQueryException('Invalid query, source could not be determined: '.$sql2);
        }

        $query = $this->factory->createQuery($source, $constraint);

        $res = new \ArrayObject([$query, $updates, $constraint, $applies]);

        return $res;
    }
private function doParse ( $ sql2 ) { $ this -> implicitSelectorName = null ; $ this -> sql2 = $ sql2 ; $ source = null ; $ constraint = null ; $ updates = [ ] ; $ applies = [ ] ; while ( $ this -> scanner -> lookupNextToken ( ) !== '' ) { switch ( strtoupper ( $ this -> scanner -> lookupNextToken ( ) ) ) { case 'UPDATE' : $ this -> scanner -> expectToken ( 'UPDATE' ) ; $ source = $ this -> parseSource ( ) ; break ; case 'SET' : $ this -> scanner -> expectToken ( 'SET' ) ; $ updates = $ this -> parseUpdates ( ) ; break ; case 'APPLY' : $ this -> scanner -> expectToken ( 'APPLY' ) ; $ applies = $ this -> parseApply ( ) ; break ; case 'WHERE' : $ this -> scanner -> expectToken ( 'WHERE' ) ; $ constraint = $ this -> parseConstraint ( ) ; break ; default : throw new InvalidQueryException ( 'Expected end of query, got "' . $ this -> scanner -> lookupNextToken ( ) . '" in ' . $ this -> sql2 ) ; } } if ( ! $ source instanceof SourceInterface ) { throw new InvalidQueryException ( 'Invalid query, source could not be determined: ' . $ sql2 ) ; } $ query = $ this -> factory -> createQuery ( $ source , $ constraint ) ; $ res = new \ ArrayObject ( [ $ query , $ updates , $ constraint , $ applies ] ) ; return $ res ; }
Parse an "SQL2" UPDATE statement and construct a query builder
for selecting the rows and build a field => value mapping for the
update.

@param string $sql2

@return array($query, $updates)
Parse an SQL2 UPDATE statement and construct a query builder for selecting the rows and build a field = > value mapping for the update .