1, 'BEGIN' => 1, 'COMMIT' => 1, 'ROLLBACK' => 1, 'WITH CONSISTENT SNAPSHOT' => 2, 'WORK' => 2, 'AND NO CHAIN' => 3, 'AND CHAIN' => 3, 'RELEASE' => 4, 'NO RELEASE' => 4, ); /** * @param Parser $parser the instance that requests parsing * @param TokensList $list the list of tokens to be parsed */ public function parse(Parser $parser, TokensList $list) { parent::parse($parser, $list); // Checks the type of this query. if (($this->options->has('START TRANSACTION')) || ($this->options->has('BEGIN')) ) { $this->type = self::TYPE_BEGIN; } elseif (($this->options->has('COMMIT')) || ($this->options->has('ROLLBACK')) ) { $this->type = self::TYPE_END; } } /** * @return string */ public function build() { $ret = OptionsArray::build($this->options); if ($this->type === self::TYPE_BEGIN) { foreach ($this->statements as $statement) { /* * @var SelectStatement $statement */ $ret .= ';' . $statement->build(); } $ret .= ';' . $this->end->build(); } return $ret; } }