diff options
author | Dan Ungureanu <udan1107@gmail.com> | 2015-07-23 12:27:58 +0300 |
---|---|---|
committer | Dan Ungureanu <udan1107@gmail.com> | 2015-07-23 12:27:58 +0300 |
commit | d855fb9c59bbf45a980be4b281de0c58a85d742d (patch) | |
tree | cc1ee1cd0f001da38c49c030cc23d689abe8e147 | |
parent | 367981588c47f5dc2f3c8cffa9b0038f5d807e65 (diff) | |
download | sql-parser-d855fb9c59bbf45a980be4b281de0c58a85d742d.zip sql-parser-d855fb9c59bbf45a980be4b281de0c58a85d742d.tar.gz sql-parser-d855fb9c59bbf45a980be4b281de0c58a85d742d.tar.bz2 |
Added the missing files.
-rw-r--r-- | src/Statements/TransactionStatement.php | 123 | ||||
-rw-r--r-- | tests/Builder/TransactionStatementTest.php | 30 | ||||
-rw-r--r-- | tests/Parser/TransactionStatementTest.php | 25 | ||||
-rw-r--r-- | tests/data/parseTransaction.in | 4 | ||||
-rw-r--r-- | tests/data/parseTransaction.out | 4 | ||||
-rw-r--r-- | tests/data/parseTransaction2.in | 4 | ||||
-rw-r--r-- | tests/data/parseTransaction2.out | 4 |
7 files changed, 194 insertions, 0 deletions
diff --git a/src/Statements/TransactionStatement.php b/src/Statements/TransactionStatement.php new file mode 100644 index 0000000..e7a13de --- /dev/null +++ b/src/Statements/TransactionStatement.php @@ -0,0 +1,123 @@ +<?php + +/** + * Transaction statement. + * + * @package SqlParser + * @subpackage Statements + */ +namespace SqlParser\Statements; + +use SqlParser\Parser; +use SqlParser\Statement; +use SqlParser\Token; +use SqlParser\TokensList; +use SqlParser\Components\Expression; +use SqlParser\Components\OptionsArray; + +/** + * Transaction statement. + * + * @category Statements + * @package SqlParser + * @subpackage Statements + * @author Dan Ungureanu <udan1107@gmail.com> + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class TransactionStatement extends Statement +{ + + /** + * START TRANSACTION and BEGIN + * + * @var int + */ + const TYPE_BEGIN = 1; + + /** + * COMMIT and ROLLBACK + * + * @var int + */ + const TYPE_END = 2; + + /** + * The type of this query. + * + * @var int + */ + public $type; + + /** + * The list of statements in this transaction. + * + * @var Statements[] + */ + public $statements; + + /** + * The ending transaction statement which may be a `COMMIT` or a `ROLLBACK`. + * + * @var TransactionStatement + */ + public $end; + + /** + * Options for this query. + * + * @var array + */ + public static $OPTIONS = array( + 'START TRANSACTION' => 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. + * + * @return void + */ + public function parse(Parser $parser, TokensList $list) + { + $this->options = OptionsArray::parse( + $parser, + $list, + static::$OPTIONS + ); + + // Checks the type of this query. + if (($this->options->has('START TRANSACTION')) + || ($this->options->has('BEGIN')) + ) { + $this->type = TransactionStatement::TYPE_BEGIN; + } elseif (($this->options->has('COMMIT')) + || ($this->options->has('ROLLBACK')) + ) { + $this->type = TransactionStatement::TYPE_END; + } + } + + /** + * @return string + */ + public function build() + { + $ret = OptionsArray::build($this->options); + if ($this->type === TransactionStatement::TYPE_BEGIN) { + foreach ($this->statements as $statement) { + $ret .= ';' . $statement->build(); + } + $ret .= ';' . $this->end->build(); + } + return $ret; + } +} diff --git a/tests/Builder/TransactionStatementTest.php b/tests/Builder/TransactionStatementTest.php new file mode 100644 index 0000000..b431643 --- /dev/null +++ b/tests/Builder/TransactionStatementTest.php @@ -0,0 +1,30 @@ +<?php + +namespace SqlParser\Tests\Builder; + +use SqlParser\Parser; + +use SqlParser\Tests\TestCase; + +class TransactionStatementTest extends TestCase +{ + + public function testBuilderView() + { + $query = 'START TRANSACTION;' . + 'SELECT @A:=SUM(salary) FROM table1 WHERE type=1;' . + 'UPDATE table2 SET summary=@A WHERE type=1;' . + 'COMMIT;'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'START TRANSACTION;' . + 'SELECT @A:=SUM(salary) FROM table1 WHERE type=1 ;' . + 'UPDATE table2 SET summary = @A WHERE type=1 ;' . + 'COMMIT', + $stmt->build() + ); + } +} diff --git a/tests/Parser/TransactionStatementTest.php b/tests/Parser/TransactionStatementTest.php new file mode 100644 index 0000000..ee625d3 --- /dev/null +++ b/tests/Parser/TransactionStatementTest.php @@ -0,0 +1,25 @@ +<?php + +namespace SqlParser\Tests\Parser; + +use SqlParser\Tests\TestCase; + +class TransactionStatementTest extends TestCase +{ + + /** + * @dataProvider testTransactionProvider + */ + public function testTransaction($test) + { + $this->runParserTest($test); + } + + public function testTransactionProvider() + { + return array( + array('parseTransaction'), + array('parseTransaction2'), + ); + } +} diff --git a/tests/data/parseTransaction.in b/tests/data/parseTransaction.in new file mode 100644 index 0000000..51c7e8b --- /dev/null +++ b/tests/data/parseTransaction.in @@ -0,0 +1,4 @@ +START TRANSACTION; +SELECT @A:=SUM(salary) FROM table1 WHERE type=1; +UPDATE table2 SET summary=@A WHERE type=1; +COMMIT;
\ No newline at end of file diff --git a/tests/data/parseTransaction.out b/tests/data/parseTransaction.out new file mode 100644 index 0000000..a166118 --- /dev/null +++ b/tests/data/parseTransaction.out @@ -0,0 +1,4 @@ +a:2:{s:6:"parser";O:16:"SqlParser\Parser":4:{s:4:"list";O:20:"SqlParser\TokensList":3:{s:6:"tokens";a:43:{i:0;O:15:"SqlParser\Token":5:{s:5:"token";s:17:"START TRANSACTION";s:5:"value";s:17:"START TRANSACTION";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:17;}i:2;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" +";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:3;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:4;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:5;O:15:"SqlParser\Token":5:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:26;}i:6;O:15:"SqlParser\Token":5:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:28;}i:7;O:15:"SqlParser\Token":5:{s:5:"token";s:3:"SUM";s:5:"value";s:3:"SUM";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:30;}i:8;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"salary";s:5:"value";s:6:"salary";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:15:"SqlParser\Token":5:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:11;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:15:"SqlParser\Token":5:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:13;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:14;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:15;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:16;O:15:"SqlParser\Token":5:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:17;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:18;O:15:"SqlParser\Token":5:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:60;}i:19;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:20;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"1";s:5:"value";i:1;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:65;}i:21;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:66;}i:22;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" +";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:23;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:68;}i:24;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:25;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:26;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:15:"SqlParser\Token":5:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:82;}i:28;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:29;O:15:"SqlParser\Token":5:{s:5:"token";s:7:"summary";s:5:"value";s:7:"summary";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:30;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:31;O:15:"SqlParser\Token":5:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:94;}i:32;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:33;O:15:"SqlParser\Token":5:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:97;}i:34;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:35;O:15:"SqlParser\Token":5:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:103;}i:36;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:107;}i:37;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"1";s:5:"value";i:1;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:108;}i:38;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:109;}i:39;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" +";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:40;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"COMMIT";s:5:"value";s:6:"COMMIT";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:111;}i:41;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:117;}i:42;O:15:"SqlParser\Token":5:{s:5:"token";N;s:5:"value";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:43;s:3:"idx";i:43;}s:6:"strict";b:0;s:6:"errors";a:0:{}s:10:"statements";a:1:{i:0;O:41:"SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:1;s:10:"statements";a:2:{i:0;O:36:"SqlParser\Statements\SelectStatement":15:{s:4:"expr";a:1:{i:0;O:31:"SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"@A:=SUM(salary)";s:5:"alias";N;s:8:"function";s:3:"SUM";s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:31:"SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:30:"SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:1;s:4:"last";i:20;}i:1;O:36:"SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:31:"SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:33:"SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"summary";s:5:"value";s:2:"@A";}}s:5:"where";a:1:{i:0;O:30:"SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:21;s:4:"last";i:37;}}s:3:"end";O:41:"SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:2;s:10:"statements";N;s:3:"end";N;s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:6:"COMMIT";}}s:5:"first";i:38;s:4:"last";i:40;}s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:17:"START TRANSACTION";}}s:5:"first";i:0;s:4:"last";i:0;}}}s:6:"errors";a:0:{}}
\ No newline at end of file diff --git a/tests/data/parseTransaction2.in b/tests/data/parseTransaction2.in new file mode 100644 index 0000000..672a626 --- /dev/null +++ b/tests/data/parseTransaction2.in @@ -0,0 +1,4 @@ +START TRANSACTION; +SELECT @A:=SUM(salary) FROM table1 WHERE type=1; +UPDATE table2 SET summary=@A WHERE type=1; +ROLLBACK;
\ No newline at end of file diff --git a/tests/data/parseTransaction2.out b/tests/data/parseTransaction2.out new file mode 100644 index 0000000..22e4a94 --- /dev/null +++ b/tests/data/parseTransaction2.out @@ -0,0 +1,4 @@ +a:2:{s:6:"parser";O:16:"SqlParser\Parser":4:{s:4:"list";O:20:"SqlParser\TokensList":3:{s:6:"tokens";a:43:{i:0;O:15:"SqlParser\Token":5:{s:5:"token";s:17:"START TRANSACTION";s:5:"value";s:17:"START TRANSACTION";s:4:"type";i:1;s:5:"flags";i:7;s:8:"position";i:0;}i:1;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:17;}i:2;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" +";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:18;}i:3;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"SELECT";s:5:"value";s:6:"SELECT";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:19;}i:4;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:25;}i:5;O:15:"SqlParser\Token":5:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:26;}i:6;O:15:"SqlParser\Token":5:{s:5:"token";s:2:":=";s:5:"value";s:2:":=";s:4:"type";i:2;s:5:"flags";i:8;s:8:"position";i:28;}i:7;O:15:"SqlParser\Token":5:{s:5:"token";s:3:"SUM";s:5:"value";s:3:"SUM";s:4:"type";i:1;s:5:"flags";i:33;s:8:"position";i:30;}i:8;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"(";s:5:"value";s:1:"(";s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:33;}i:9;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"salary";s:5:"value";s:6:"salary";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:34;}i:10;O:15:"SqlParser\Token":5:{s:5:"token";s:1:")";s:5:"value";s:1:")";s:4:"type";i:2;s:5:"flags";i:16;s:8:"position";i:40;}i:11;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:41;}i:12;O:15:"SqlParser\Token":5:{s:5:"token";s:4:"FROM";s:5:"value";s:4:"FROM";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:42;}i:13;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:46;}i:14;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"table1";s:5:"value";s:6:"table1";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:47;}i:15;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:53;}i:16;O:15:"SqlParser\Token":5:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:54;}i:17;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:59;}i:18;O:15:"SqlParser\Token":5:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:60;}i:19;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:64;}i:20;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"1";s:5:"value";i:1;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:65;}i:21;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:66;}i:22;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" +";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:67;}i:23;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"UPDATE";s:5:"value";s:6:"UPDATE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:68;}i:24;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:74;}i:25;O:15:"SqlParser\Token":5:{s:5:"token";s:6:"table2";s:5:"value";s:6:"table2";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:75;}i:26;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:81;}i:27;O:15:"SqlParser\Token":5:{s:5:"token";s:3:"SET";s:5:"value";s:3:"SET";s:4:"type";i:1;s:5:"flags";i:11;s:8:"position";i:82;}i:28;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:85;}i:29;O:15:"SqlParser\Token":5:{s:5:"token";s:7:"summary";s:5:"value";s:7:"summary";s:4:"type";i:0;s:5:"flags";i:0;s:8:"position";i:86;}i:30;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:93;}i:31;O:15:"SqlParser\Token":5:{s:5:"token";s:2:"@A";s:5:"value";s:1:"A";s:4:"type";i:8;s:5:"flags";i:1;s:8:"position";i:94;}i:32;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:96;}i:33;O:15:"SqlParser\Token":5:{s:5:"token";s:5:"WHERE";s:5:"value";s:5:"WHERE";s:4:"type";i:1;s:5:"flags";i:3;s:8:"position";i:97;}i:34;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" ";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:102;}i:35;O:15:"SqlParser\Token":5:{s:5:"token";s:4:"type";s:5:"value";s:4:"type";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:103;}i:36;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"=";s:5:"value";s:1:"=";s:4:"type";i:2;s:5:"flags";i:2;s:8:"position";i:107;}i:37;O:15:"SqlParser\Token":5:{s:5:"token";s:1:"1";s:5:"value";i:1;s:4:"type";i:6;s:5:"flags";i:0;s:8:"position";i:108;}i:38;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:109;}i:39;O:15:"SqlParser\Token":5:{s:5:"token";s:1:" +";s:5:"value";s:1:" ";s:4:"type";i:3;s:5:"flags";i:0;s:8:"position";i:110;}i:40;O:15:"SqlParser\Token":5:{s:5:"token";s:8:"ROLLBACK";s:5:"value";s:8:"ROLLBACK";s:4:"type";i:1;s:5:"flags";i:1;s:8:"position";i:111;}i:41;O:15:"SqlParser\Token":5:{s:5:"token";s:1:";";s:5:"value";s:1:";";s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";i:119;}i:42;O:15:"SqlParser\Token":5:{s:5:"token";N;s:5:"value";N;s:4:"type";i:9;s:5:"flags";i:0;s:8:"position";N;}}s:5:"count";i:43;s:3:"idx";i:43;}s:6:"strict";b:0;s:6:"errors";a:0:{}s:10:"statements";a:1:{i:0;O:41:"SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:1;s:10:"statements";a:2:{i:0;O:36:"SqlParser\Statements\SelectStatement":15:{s:4:"expr";a:1:{i:0;O:31:"SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";N;s:6:"column";N;s:4:"expr";s:15:"@A:=SUM(salary)";s:5:"alias";N;s:8:"function";s:3:"SUM";s:8:"subquery";N;}}s:4:"from";a:1:{i:0;O:31:"SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table1";s:6:"column";N;s:4:"expr";s:6:"table1";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:9:"partition";N;s:5:"where";a:1:{i:0;O:30:"SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"group";N;s:6:"having";N;s:5:"order";N;s:5:"limit";N;s:9:"procedure";N;s:4:"into";N;s:4:"join";N;s:5:"union";a:0:{}s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:1;s:4:"last";i:20;}i:1;O:36:"SqlParser\Statements\UpdateStatement":8:{s:6:"tables";a:1:{i:0;O:31:"SqlParser\Components\Expression":7:{s:8:"database";N;s:5:"table";s:6:"table2";s:6:"column";N;s:4:"expr";s:6:"table2";s:5:"alias";N;s:8:"function";N;s:8:"subquery";N;}}s:3:"set";a:1:{i:0;O:33:"SqlParser\Components\SetOperation":2:{s:6:"column";s:7:"summary";s:5:"value";s:2:"@A";}}s:5:"where";a:1:{i:0;O:30:"SqlParser\Components\Condition":3:{s:11:"identifiers";a:1:{i:0;s:4:"type";}s:10:"isOperator";b:0;s:4:"expr";s:6:"type=1";}}s:5:"order";N;s:5:"limit";N;s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:0:{}}s:5:"first";i:21;s:4:"last";i:37;}}s:3:"end";O:41:"SqlParser\Statements\TransactionStatement":6:{s:4:"type";i:2;s:10:"statements";N;s:3:"end";N;s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:8:"ROLLBACK";}}s:5:"first";i:38;s:4:"last";i:40;}s:7:"options";O:33:"SqlParser\Components\OptionsArray":1:{s:7:"options";a:1:{i:1;s:17:"START TRANSACTION";}}s:5:"first";i:0;s:4:"last";i:0;}}}s:6:"errors";a:0:{}}
\ No newline at end of file |