├── tests
├── expected
│ ├── creator
│ │ ├── issue83.sql
│ │ ├── issue81.sql
│ │ ├── unaryminus.sql
│ │ ├── issue126.sql
│ │ ├── issue127.sql
│ │ ├── issue62p.sql
│ │ ├── issue78d.sql
│ │ ├── issue85.sql
│ │ ├── issue100.sql
│ │ ├── issue110.sql
│ │ ├── issue33b.sql
│ │ ├── issue62c.sql
│ │ ├── issue63c.sql
│ │ ├── issue78a.sql
│ │ ├── issue78b.sql
│ │ ├── issue78c.sql
│ │ ├── issue_git181.sql
│ │ ├── issue132.sql
│ │ ├── issue33a.sql
│ │ ├── issue62g.sql
│ │ ├── issue62q.sql
│ │ ├── issue62r.sql
│ │ ├── issue76a.sql
│ │ ├── issue76b.sql
│ │ ├── issue86.sql
│ │ ├── distinct.sql
│ │ ├── function.sql
│ │ ├── issue102.sql
│ │ ├── issue117.sql
│ │ ├── issue130.sql
│ │ ├── issue141.sql
│ │ ├── issue62a.sql
│ │ ├── issue62n.sql
│ │ ├── issue63a.sql
│ │ ├── issue121.sql
│ │ ├── issue62e.sql
│ │ ├── issue62f.sql
│ │ ├── issue62m.sql
│ │ ├── issue66.sql
│ │ ├── issue88.sql
│ │ ├── orderbyposition.sql
│ │ ├── issue129.sql
│ │ ├── issue147.sql
│ │ ├── issue79a.sql
│ │ ├── issue92.sql
│ │ ├── issue98.sql
│ │ ├── issue123.sql
│ │ ├── issue33m.sql
│ │ ├── issue62i.sql
│ │ ├── issue94.sql
│ │ ├── update.sql
│ │ ├── insubtree.sql
│ │ ├── issue144.sql
│ │ ├── issue58.sql
│ │ ├── issue78e.sql
│ │ ├── issue87.sql
│ │ ├── union1.sql
│ │ ├── union2.sql
│ │ ├── alter.sql
│ │ ├── insert2.sql
│ │ ├── issue62d.sql
│ │ ├── issue101.sql
│ │ ├── issue118.sql
│ │ ├── issue124.sql
│ │ ├── issue62b.sql
│ │ ├── issue63b.sql
│ │ ├── issue83c.sql
│ │ ├── issue112.sql
│ │ ├── issue62j.sql
│ │ ├── where.sql
│ │ ├── issue62k.sql
│ │ ├── insert1.sql
│ │ ├── insert3.sql
│ │ ├── issue33d.sql
│ │ ├── issue33e.sql
│ │ ├── issue62l.sql
│ │ ├── alter2.sql
│ │ ├── issue62o.sql
│ │ ├── left.sql
│ │ ├── union3.sql
│ │ ├── delete.sql
│ │ ├── issue33l.sql
│ │ ├── issue83a.sql
│ │ ├── issue83b.sql
│ │ ├── tableexpr.sql
│ │ ├── issue134.sql
│ │ ├── issue33c.sql
│ │ ├── issue62h.sql
│ │ ├── asc.sql
│ │ ├── issue33h.sql
│ │ ├── issue131.sql
│ │ ├── issue_git10.sql
│ │ ├── issue33g.sql
│ │ ├── issue33i.sql
│ │ ├── issue33j.sql
│ │ ├── issue33k.sql
│ │ ├── issue_git185.sql
│ │ ├── magnus.sql
│ │ ├── issue104.sql
│ │ ├── issue33f.sql
│ │ ├── join.sql
│ │ ├── inlist.sql
│ │ ├── issue57.sql
│ │ ├── issue89.sql
│ │ ├── issue105.sql
│ │ └── issue106.sql
│ └── parser
│ │ ├── show6.serialized
│ │ ├── show3.serialized
│ │ ├── show7.serialized
│ │ ├── show2.serialized
│ │ ├── show1.serialized
│ │ ├── issue78c.serialized
│ │ ├── issue78d.serialized
│ │ ├── show4.serialized
│ │ ├── issue50.serialized
│ │ ├── issue34b.serialized
│ │ ├── issue148.serialized
│ │ ├── issue74b.serialized
│ │ ├── issue41.serialized
│ │ ├── issue74a.serialized
│ │ ├── issue55a.serialized
│ │ ├── issue93.serialized
│ │ ├── issue67b.serialized
│ │ ├── issue78b.serialized
│ │ ├── issue87a.serialized
│ │ ├── allcolumns3.serialized
│ │ ├── issue62c.serialized
│ │ ├── issue248.serialized
│ │ ├── issue137.serialized
│ │ ├── issue_git11.serialized
│ │ ├── issue34a.serialized
│ │ ├── issue55b.serialized
│ │ ├── issue71a.serialized
│ │ ├── comment3.serialized
│ │ ├── issue78a.serialized
│ │ ├── issue33b.serialized
│ │ ├── allcolumns5.serialized
│ │ ├── alias2.serialized
│ │ ├── issue71b.serialized
│ │ ├── issue74d.serialized
│ │ ├── issue82.serialized
│ │ ├── issue74c.serialized
│ │ ├── comment5.serialized
│ │ ├── issue21.serialized
│ │ ├── allcolumns4.serialized
│ │ ├── issue277.serialized
│ │ ├── insert2.serialized
│ │ ├── issue42.serialized
│ │ ├── tableoptions2.serialized
│ │ ├── comment7.serialized
│ │ ├── comment8.serialized
│ │ ├── backtick1.serialized
│ │ ├── comment1.serialized
│ │ ├── drop.serialized
│ │ ├── comment6.serialized
│ │ ├── issue39.serialized
│ │ ├── issue67a.serialized
│ │ ├── issue72.serialized
│ │ ├── allcolumns2.serialized
│ │ ├── allcolumns1.serialized
│ │ ├── delete1.serialized
│ │ ├── issue74e.serialized
│ │ ├── issue122.serialized
│ │ ├── issue79a.serialized
│ │ ├── issue120.serialized
│ │ ├── issue33a.serialized
│ │ ├── show5.serialized
│ │ ├── issue70.serialized
│ │ ├── issue36b.serialized
│ │ ├── alias1.serialized
│ │ ├── insert1.serialized
│ │ ├── issue53a.serialized
│ │ ├── issue53b.serialized
│ │ ├── issue65.serialized
│ │ ├── issue37.serialized
│ │ ├── issue43.serialized
│ │ ├── issue149.serialized
│ │ ├── issue56b.serialized
│ │ ├── issue56b1.serialized
│ │ ├── issue91.serialized
│ │ ├── issue95.serialized
│ │ ├── issue80a.serialized
│ │ ├── issue_git24.serialized
│ │ ├── issue51.serialized
│ │ ├── issue52.serialized
│ │ ├── issue61.serialized
│ │ ├── comment2.serialized
│ │ ├── update2.serialized
│ │ ├── issue233.serialized
│ │ ├── issue74f.serialized
│ │ ├── issue32.serialized
│ │ ├── comment9.serialized
│ │ ├── issue78e.serialized
│ │ ├── issue56a.serialized
│ │ ├── issue56a1.serialized
│ │ ├── issue40a.serialized
│ │ ├── issue40b.serialized
│ │ ├── issue36c.serialized
│ │ ├── issue36a.serialized
│ │ ├── comment4.serialized
│ │ ├── issue117.serialized
│ │ ├── select2.serialized
│ │ ├── subselect1.serialized
│ │ ├── issue87b.serialized
│ │ ├── subselect3.serialized
│ │ ├── issue38.serialized
│ │ ├── issue84c.serialized
│ │ ├── issue139.serialized
│ │ ├── issue125.serialized
│ │ ├── issue62b.serialized
│ │ ├── issue69.serialized
│ │ ├── union1.serialized
│ │ ├── issue133a.serialized
│ │ ├── issue133b.serialized
│ │ ├── issue30.serialized
│ │ ├── issue261.serialized
│ │ ├── issue94.serialized
│ │ ├── union2.serialized
│ │ ├── tableoptions1.serialized
│ │ ├── manual.serialized
│ │ ├── alias3.serialized
│ │ ├── issue62a.serialized
│ │ ├── issue80b.serialized
│ │ ├── issue135.serialized
│ │ ├── variables1.serialized
│ │ ├── issue102.serialized
│ │ ├── issue97.serialized
│ │ ├── issue98.serialized
│ │ ├── issue84a.serialized
│ │ ├── issue68.serialized
│ │ ├── delete2.serialized
│ │ ├── delete3.serialized
│ │ ├── issue79b.serialized
│ │ ├── variables2.serialized
│ │ ├── issue_git183.serialized
│ │ ├── issue84b.serialized
│ │ └── union4.serialized
├── readme.txt
├── cases
│ ├── creator
│ │ ├── issue342Test.php
│ │ ├── issue319Test.php
│ │ ├── unaryMinusTest.php
│ │ ├── issue248Test.php
│ │ ├── orderByPositionTest.php
│ │ ├── issue270Test.php
│ │ ├── issue254Test.php
│ │ ├── issue361Test.php
│ │ ├── issue265Test.php
│ │ ├── issue252Test.php
│ │ ├── issue268Test.php
│ │ ├── issue256Test.php
│ │ ├── AlterTest.php
│ │ ├── issue312Test.php
│ │ └── issue125Test.php
│ ├── parser
│ │ ├── issue233Test.php
│ │ ├── issue248Test.php
│ │ ├── issue277Test.php
│ │ ├── issue261Test.php
│ │ ├── issue338Test.php
│ │ ├── issue355Test.php
│ │ ├── issue219.php
│ │ └── issue365Test.php
│ └── AbstractTestCase.php
├── bootstrap.php
└── phpunit.php
├── runtest.sh
├── .gitignore
├── .gitmodules
├── .settings
├── org.eclipse.ltk.core.refactoring.prefs
├── org.eclipse.php.core.prefs
└── org.eclipse.php.debug.core.Debug_Process_Preferences.prefs
├── .buildpath
├── wiki
├── Roadmap.md
└── Downloads.md
├── .travis.yml
├── phpunit.xml
├── .project
├── src
└── PHPSQLParser
│ ├── builders
│ ├── AlterStatementBuilder.php
│ ├── UnionStatementBuilder.php
│ ├── UnionAllStatementBuilder.php
│ └── AlterBuilder.php
│ ├── Options.php
│ └── processors
│ ├── DuplicateProcessor.php
│ └── DescProcessor.php
├── libs
└── codesniffer
│ ├── PhOSCo
│ └── ruleset.xml
│ └── usage.txt
├── .github
└── workflows
│ └── ci.yml
├── composer.json
└── LICENSE
/tests/expected/creator/issue83.sql:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/expected/creator/issue81.sql:
--------------------------------------------------------------------------------
1 | SELECT NOW()
--------------------------------------------------------------------------------
/tests/expected/creator/unaryminus.sql:
--------------------------------------------------------------------------------
1 | SELECT -(0)
--------------------------------------------------------------------------------
/tests/expected/creator/issue126.sql:
--------------------------------------------------------------------------------
1 | DELETE FROM t1
--------------------------------------------------------------------------------
/runtest.sh:
--------------------------------------------------------------------------------
1 | clear
2 | ./vendor/phpunit/phpunit/phpunit
3 |
--------------------------------------------------------------------------------
/tests/expected/creator/issue127.sql:
--------------------------------------------------------------------------------
1 | UPDATE t1 SET c1 = -c2
--------------------------------------------------------------------------------
/tests/expected/creator/issue62p.sql:
--------------------------------------------------------------------------------
1 | SELECT IF(1 > 2,2,3)
--------------------------------------------------------------------------------
/tests/expected/creator/issue78d.sql:
--------------------------------------------------------------------------------
1 | SHOW ENGINE foo STATUS
--------------------------------------------------------------------------------
/tests/expected/creator/issue85.sql:
--------------------------------------------------------------------------------
1 | SELECT haha(foo,bar)
--------------------------------------------------------------------------------
/tests/expected/creator/issue100.sql:
--------------------------------------------------------------------------------
1 | SELECT 0 AS Zero FROM table
--------------------------------------------------------------------------------
/tests/expected/creator/issue110.sql:
--------------------------------------------------------------------------------
1 | SELECT DISTINCT a FROM b
--------------------------------------------------------------------------------
/tests/expected/creator/issue33b.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho LIKE xyz
--------------------------------------------------------------------------------
/tests/expected/creator/issue62c.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM table LIMIT 1
--------------------------------------------------------------------------------
/tests/expected/creator/issue63c.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM table LIMIT 1
--------------------------------------------------------------------------------
/tests/expected/creator/issue78a.sql:
--------------------------------------------------------------------------------
1 | SHOW columns from `foo.bar`
--------------------------------------------------------------------------------
/tests/expected/creator/issue78b.sql:
--------------------------------------------------------------------------------
1 | SHOW CREATE DATABASE `foo`
--------------------------------------------------------------------------------
/tests/expected/creator/issue78c.sql:
--------------------------------------------------------------------------------
1 | SHOW DATABASES LIKE '%bar%'
--------------------------------------------------------------------------------
/tests/expected/creator/issue_git181.sql:
--------------------------------------------------------------------------------
1 | SELECT NOW() AS today
--------------------------------------------------------------------------------
/tests/expected/creator/issue132.sql:
--------------------------------------------------------------------------------
1 | SELECT (c1 - c2) AS c3 FROM t1
--------------------------------------------------------------------------------
/tests/expected/creator/issue33a.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (LIKE xyz)
--------------------------------------------------------------------------------
/tests/expected/creator/issue62g.sql:
--------------------------------------------------------------------------------
1 | DELETE FROM tab1 WHERE col1 = 1
--------------------------------------------------------------------------------
/tests/expected/creator/issue62q.sql:
--------------------------------------------------------------------------------
1 | SELECT DISTINCT col1 FROM table1
--------------------------------------------------------------------------------
/tests/expected/creator/issue62r.sql:
--------------------------------------------------------------------------------
1 | UPDATE table1 SET col1 = (1 + 3)
--------------------------------------------------------------------------------
/tests/expected/creator/issue76a.sql:
--------------------------------------------------------------------------------
1 | SELECT AVG(2.0 * foo) FROM bar
--------------------------------------------------------------------------------
/tests/expected/creator/issue76b.sql:
--------------------------------------------------------------------------------
1 | SELECT AVG(2.0 * foo,x) FROM bar
--------------------------------------------------------------------------------
/tests/expected/creator/issue86.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM cities GROUP BY 1, 2
--------------------------------------------------------------------------------
/tests/expected/creator/distinct.sql:
--------------------------------------------------------------------------------
1 | SELECT COUNT(DISTINCT bla) FROM foo
--------------------------------------------------------------------------------
/tests/expected/creator/function.sql:
--------------------------------------------------------------------------------
1 | SELECT SUM(10) AS test FROM account
--------------------------------------------------------------------------------
/tests/expected/creator/issue102.sql:
--------------------------------------------------------------------------------
1 | SELECT IF(f = 0 || f = 1,1,0) FROM tbl
--------------------------------------------------------------------------------
/tests/expected/creator/issue117.sql:
--------------------------------------------------------------------------------
1 | (SELECT x FROM table) ORDER BY x ASC
--------------------------------------------------------------------------------
/tests/expected/creator/issue130.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM t1 ORDER BY c2 - c1 ASC
--------------------------------------------------------------------------------
/tests/expected/creator/issue141.sql:
--------------------------------------------------------------------------------
1 | SELECT f FROM t ORDER BY (f - 0.0) ASC
--------------------------------------------------------------------------------
/tests/expected/creator/issue62a.sql:
--------------------------------------------------------------------------------
1 | SELECT col FROM table1 GROUP BY col
--------------------------------------------------------------------------------
/tests/expected/creator/issue62n.sql:
--------------------------------------------------------------------------------
1 | INSERT IGNORE INTO table1 VALUES ('1')
--------------------------------------------------------------------------------
/tests/expected/creator/issue63a.sql:
--------------------------------------------------------------------------------
1 | SELECT col FROM table1 GROUP BY col
--------------------------------------------------------------------------------
/tests/expected/creator/issue121.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE t (mv DECIMAL (3) DEFAULT 10)
--------------------------------------------------------------------------------
/tests/expected/creator/issue62e.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM table ORDER BY column DESC
--------------------------------------------------------------------------------
/tests/expected/creator/issue62f.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO tab1 (col1, col2) VALUES (?, ?)
--------------------------------------------------------------------------------
/tests/expected/creator/issue62m.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM table1 IGNORE INDEX (PRIMARY)
--------------------------------------------------------------------------------
/tests/expected/creator/issue66.sql:
--------------------------------------------------------------------------------
1 | SELECT SUM(value) / (ABS(2)) AS x FROM table
--------------------------------------------------------------------------------
/tests/expected/creator/issue88.sql:
--------------------------------------------------------------------------------
1 | SELECT (some_field = 'string') FROM table
--------------------------------------------------------------------------------
/tests/expected/creator/orderbyposition.sql:
--------------------------------------------------------------------------------
1 | SELECT c1, c2 FROM t ORDER BY 1 ASC
--------------------------------------------------------------------------------
/tests/expected/creator/issue129.sql:
--------------------------------------------------------------------------------
1 | DROP TEMPORARY TABLE IF EXISTS t1, t2 CASCADE
--------------------------------------------------------------------------------
/tests/expected/creator/issue147.sql:
--------------------------------------------------------------------------------
1 | SELECT f FROM t WHERE x in (SELECT x FROM y)
--------------------------------------------------------------------------------
/tests/expected/creator/issue79a.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM `users` WHERE id_user = @ID_USER
--------------------------------------------------------------------------------
/tests/expected/creator/issue92.sql:
--------------------------------------------------------------------------------
1 | SELECT cid * 2 FROM cities ORDER BY country ASC
--------------------------------------------------------------------------------
/tests/expected/creator/issue98.sql:
--------------------------------------------------------------------------------
1 | SELECT mn AS `next_month` FROM DateAndTime `dt`
--------------------------------------------------------------------------------
/tests/expected/creator/issue123.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE t1 (c1 CHAR (3), c2 CHAR (3), KEY (c1))
--------------------------------------------------------------------------------
/tests/expected/creator/issue33m.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000), b float (5,3))
--------------------------------------------------------------------------------
/tests/expected/creator/issue62i.sql:
--------------------------------------------------------------------------------
1 | SELECT COUNT(colname) AS aliasname FROM tablename
--------------------------------------------------------------------------------
/tests/expected/creator/issue94.sql:
--------------------------------------------------------------------------------
1 | SELECT DATE_ADD(NOW(),INTERVAL 1 MONTH) AS next_month
--------------------------------------------------------------------------------
/tests/expected/creator/update.sql:
--------------------------------------------------------------------------------
1 | UPDATE `table` SET a = 15,b = 'haha' WHERE x = now()
--------------------------------------------------------------------------------
/tests/expected/creator/insubtree.sql:
--------------------------------------------------------------------------------
1 | SELECT CASE WHEN 2 IN (2, 3) THEN "yes" ELSE "no" END
--------------------------------------------------------------------------------
/tests/expected/creator/issue144.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM TableA INNER JOIN TableB USING (Col1, Col2)
--------------------------------------------------------------------------------
/tests/expected/creator/issue58.sql:
--------------------------------------------------------------------------------
1 | SELECT a.* FROM tabla_a a WHERE (a.client_id in (1, 2, 3))
--------------------------------------------------------------------------------
/tests/expected/creator/issue78e.sql:
--------------------------------------------------------------------------------
1 | SHOW FULL COLUMNS FROM `foo.bar` FROM hohoho LIKE '%xmas%'
--------------------------------------------------------------------------------
/tests/expected/creator/issue87.sql:
--------------------------------------------------------------------------------
1 | RENAME TABLE a TO b, `c` TO `a`, foo.bar TO hello.world
--------------------------------------------------------------------------------
/tests/expected/creator/union1.sql:
--------------------------------------------------------------------------------
1 | SELECT colA FROM test a UNION SELECT colB FROM test AS b
--------------------------------------------------------------------------------
/tests/expected/creator/union2.sql:
--------------------------------------------------------------------------------
1 | SELECT colA FROM test a UNION ALL SELECT colB FROM test b
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | vendor/
2 | composer.lock
3 | clover.xml
4 | composer.phar
5 | .idea
6 | coverage/
7 |
--------------------------------------------------------------------------------
/tests/expected/creator/alter.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
--------------------------------------------------------------------------------
/tests/expected/creator/insert2.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO test (`name`, `test`) VALUES ('\'Superman\'', '')
--------------------------------------------------------------------------------
/tests/expected/creator/issue62d.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM table ORDER BY TIME_FORMAT(column '%H:%i') DESC
--------------------------------------------------------------------------------
/tests/expected/creator/issue101.sql:
--------------------------------------------------------------------------------
1 | SELECT tab.col AS `tab.col`, tab2.col AS `tab2.col` FROM tab, tab2
--------------------------------------------------------------------------------
/tests/expected/creator/issue118.sql:
--------------------------------------------------------------------------------
1 | SELECT organism_name AS reference FROM organisms GROUP BY reference
--------------------------------------------------------------------------------
/tests/expected/creator/issue124.sql:
--------------------------------------------------------------------------------
1 | SELECT t1.c1, t2.c2 FROM t1 LEFT JOIN t2 ON (LEFT(t1.c2,6) = t2.c1)
--------------------------------------------------------------------------------
/tests/expected/creator/issue62b.sql:
--------------------------------------------------------------------------------
1 | SELECT col AS somealias FROM table ORDER BY somealias ASC LIMIT 1
--------------------------------------------------------------------------------
/tests/expected/creator/issue63b.sql:
--------------------------------------------------------------------------------
1 | SELECT col AS somealias FROM table ORDER BY somealias ASC LIMIT 1
--------------------------------------------------------------------------------
/tests/expected/creator/issue83c.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO newTablename (field1, field2, field3) VALUES (1, 2, 3)
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "wiki"]
2 | path = wiki
3 | url = git@github.com:witchi/PHP-SQL-Parser.wiki
4 |
--------------------------------------------------------------------------------
/tests/expected/creator/issue112.sql:
--------------------------------------------------------------------------------
1 | SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary) > 10
--------------------------------------------------------------------------------
/tests/expected/creator/issue62j.sql:
--------------------------------------------------------------------------------
1 | UPDATE table1, table2 SET table1.col1 = 0 WHERE table1.col2 = table2.col2
--------------------------------------------------------------------------------
/tests/expected/creator/where.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM `table` `t` WHERE ((UNIX_TIMESTAMP() + 3600) > `t`.`expires`)
--------------------------------------------------------------------------------
/tests/expected/creator/issue62k.sql:
--------------------------------------------------------------------------------
1 | SELECT col1 FROM tab1 WHERE col1 = (SELECT col1 FROM tab2 WHERE col2 = 103)
--------------------------------------------------------------------------------
/tests/expected/creator/insert1.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO test (`name`, `test`) VALUES ('\'Superman\'', ''), ('\'Superman\'', '')
--------------------------------------------------------------------------------
/tests/expected/creator/insert3.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO test (`name`, `test`) VALUES ('\'Superman\'', ''), ('\'sdfsd\'', '')
--------------------------------------------------------------------------------
/tests/expected/creator/issue33d.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000), CONSTRAINT PRIMARY KEY (a), CHECK (a > 5))
--------------------------------------------------------------------------------
/tests/expected/creator/issue33e.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000), PRIMARY KEY USING btree (a), CHECK (a > 5))
--------------------------------------------------------------------------------
/tests/expected/creator/issue62l.sql:
--------------------------------------------------------------------------------
1 | SELECT round((1 - (phy.value / (cur.value + con.value))) * 100,2) FROM vtiger_users
--------------------------------------------------------------------------------
/tests/expected/creator/alter2.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE `my_table`
2 | ADD COLUMN `updated_by` SMALLINT unsigned AFTER `date_created`
--------------------------------------------------------------------------------
/tests/expected/creator/issue62o.sql:
--------------------------------------------------------------------------------
1 | SELECT *, case when (col1 not like '') then col1 else col2 end AS alias1 FROM table1
--------------------------------------------------------------------------------
/tests/expected/creator/left.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM (t1 LEFT JOIN t2 ON t1.a = t2.a) LEFT JOIN t3 ON t2.b = t3.b OR t2.b IS NULL
--------------------------------------------------------------------------------
/tests/expected/creator/union3.sql:
--------------------------------------------------------------------------------
1 | SELECT x FROM (SELECT y FROM z WHERE (y > 2) UNION ALL SELECT a FROM z WHERE (y < 2)) AS f
--------------------------------------------------------------------------------
/tests/expected/creator/delete.sql:
--------------------------------------------------------------------------------
1 | DELETE QUICK t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id = t2.id AND t2.id = t3.id
--------------------------------------------------------------------------------
/tests/expected/creator/issue33l.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a integer not null) REPLACE AS SELECT DISTINCT * FROM abcd WHERE x < 5
--------------------------------------------------------------------------------
/tests/expected/creator/issue83a.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO newTablename SELECT field1, field2, field3 FROM oldTablename WHERE field1 > 100
--------------------------------------------------------------------------------
/tests/expected/creator/issue83b.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO newTablename (SELECT field1, field2, field3 FROM oldTablename WHERE field1 > 100)
--------------------------------------------------------------------------------
/tests/expected/creator/tableexpr.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a = t1.a AND t3.b = t1.b AND t4.c = t1.c)
--------------------------------------------------------------------------------
/tests/expected/creator/issue134.sql:
--------------------------------------------------------------------------------
1 | SELECT t1.* FROM Table1 t1 STRAIGHT_JOIN Table2 t2 ON t1.CommonID = t2.CommonID WHERE t1.FilterID = 1
--------------------------------------------------------------------------------
/tests/expected/creator/issue33c.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000) NOT NULL, CONSTRAINT hohoho_pk PRIMARY KEY (a), CHECK (a > 5))
--------------------------------------------------------------------------------
/tests/expected/creator/issue62h.sql:
--------------------------------------------------------------------------------
1 | SELECT col1 FROM tab1 INNER JOIN tab2 ON tab1.col1 = tab2.col1 and col2 in (1, 2) ORDER BY col3 ASC
--------------------------------------------------------------------------------
/tests/expected/creator/asc.sql:
--------------------------------------------------------------------------------
1 | SELECT qid FROM QUESTIONS WHERE gid = '1' and language = 'de-informal' ORDER BY question_order ASC, title ASC
--------------------------------------------------------------------------------
/tests/expected/creator/issue33h.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000)) ENGINE = xyz, COMMENT = 'haha' DEFAULT COLLATE = latin1_german2_ci
--------------------------------------------------------------------------------
/tests/expected/creator/issue131.sql:
--------------------------------------------------------------------------------
1 | CREATE unique index i1 using BTREE ON t1 (c1(5) DESC, `col 2`(8) ASC) ALGORITHM = DEFAULT using hash LOCK = SHARED
--------------------------------------------------------------------------------
/tests/expected/creator/issue_git10.sql:
--------------------------------------------------------------------------------
1 | SELECT REPLACE(f.web_program,'
2 | ','') AS web_program, id AS change_id FROM file f HAVING change_id > :change_id
--------------------------------------------------------------------------------
/tests/expected/creator/issue33g.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000), PRIMARY KEY USING btree (a(5) ASC) key_block_size 4 with parser haha, CHECK (a > 5))
--------------------------------------------------------------------------------
/tests/expected/creator/issue33i.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000), b integer, FOREIGN KEY haha (b) references xyz (id) match full on delete cascade)
--------------------------------------------------------------------------------
/tests/expected/creator/issue33j.sql:
--------------------------------------------------------------------------------
1 | CREATE TEMPORARY TABLE IF NOT EXISTS turma (id text NOT NULL, nome text NOT NULL, nota1 int NOT NULL, nota2 int NOT NULL)
--------------------------------------------------------------------------------
/tests/expected/creator/issue33k.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE hohoho (a varchar (1000), PRIMARY KEY (a(5) ASC) key_block_size 4 using btree with parser haha, CHECK (a > 5))
--------------------------------------------------------------------------------
/tests/expected/creator/issue_git185.sql:
--------------------------------------------------------------------------------
1 | SELECT seen, id, name, cep, date_format(created,'%d/%m/%Y %h:%i:%s') AS created FROM user WHERE approved = 0 and canceled = 0
--------------------------------------------------------------------------------
/tests/expected/creator/magnus.sql:
--------------------------------------------------------------------------------
1 | SELECT u.`id` AS userid, u.`user` AS username, u.`firstname`, u.`lastname`, u.`email`, CONCAT(19,lastname,2013) AS test FROM `user` u ORDER BY u.`user` DESC
--------------------------------------------------------------------------------
/.settings/org.eclipse.ltk.core.refactoring.prefs:
--------------------------------------------------------------------------------
1 | #Tue Apr 15 09:40:02 CEST 2014
2 | eclipse.preferences.version=1
3 | org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
4 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.php.core.prefs:
--------------------------------------------------------------------------------
1 | #Tue Apr 15 09:40:02 CEST 2014
2 | eclipse.preferences.version=1
3 | include_path=0;/PHP-SQL-Parser
4 | org.eclipse.php.core.phpDoc=false
5 | phpVersion=php5.3
6 | useShortTags=true
7 |
--------------------------------------------------------------------------------
/tests/expected/creator/issue104.sql:
--------------------------------------------------------------------------------
1 | SELECT a.* FROM iuz6l_menu_types AS a LEFT JOIN iuz6l_menu AS b ON b.menutype = a.menutype AND b.home != 0 LEFT JOIN iuz6l_languages AS l ON (l.lang_code = language) WHERE (b.client_id = 0 OR b.client_id IS NULL)
--------------------------------------------------------------------------------
/tests/expected/creator/issue33f.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE "cachetable01" ("sp_id" varchar (240) DEFAULT NULL, "ro" varchar (240) DEFAULT NULL, "balance" varchar (240) DEFAULT NULL, "last_cache_timestamp" varchar (25) DEFAULT NULL) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1
--------------------------------------------------------------------------------
/tests/expected/creator/join.sql:
--------------------------------------------------------------------------------
1 | SELECT a.*, surveyls_title, surveyls_description, surveyls_welcometext, surveyls_url FROM SURVEYS AS a INNER JOIN SURVEYS_LANGUAGESETTINGS ON (surveyls_survey_id = a.sid and surveyls_language = a.language) ORDER BY active DESC, surveyls_title ASC
--------------------------------------------------------------------------------
/tests/expected/parser/show6.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"SCHEMAS";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"LIKE";s:8:"position";i:13;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'%bar%'";s:8:"position";i:18;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/show3.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:9:"DATABASES";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"LIKE";s:8:"position";i:15;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'%bar%'";s:8:"position";i:20;}}}
--------------------------------------------------------------------------------
/tests/expected/creator/inlist.sql:
--------------------------------------------------------------------------------
1 | SELECT * FROM contacts WHERE contacts.id IN (SELECT email_addr_bean_rel.bean_id FROM email_addr_bean_rel, email_addresses WHERE email_addresses.id = email_addr_bean_rel.email_address_id AND email_addr_bean_rel.deleted = 0 AND email_addr_bean_rel.bean_module = 'Contacts' AND email_addresses.email_address IN ("test@example.com"))
--------------------------------------------------------------------------------
/tests/expected/parser/show7.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"CREATE";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"SCHEMA";}i:2;a:4:{s:9:"expr_type";s:8:"database";s:4:"name";s:5:"`foo`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:9:"base_expr";s:5:"`foo`";}}}
--------------------------------------------------------------------------------
/tests/expected/parser/show2.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"CREATE";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"DATABASE";}i:2;a:4:{s:9:"expr_type";s:8:"database";s:4:"name";s:5:"`foo`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:9:"base_expr";s:5:"`foo`";}}}
--------------------------------------------------------------------------------
/tests/expected/parser/show1.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"columns";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"from";}i:2;a:4:{s:9:"expr_type";s:5:"table";s:5:"table";s:9:"`foo.bar`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"foo.bar";}}s:9:"base_expr";s:9:"`foo.bar`";}}}
--------------------------------------------------------------------------------
/.buildpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/wiki/Roadmap.md:
--------------------------------------------------------------------------------
1 | * ~~supporting CREATE INDEX (see issue 131 )~~
2 |
3 | * refactoring of
4 | * the parser tests (all tests should work, except the open issues)
5 | * ~~the RENAME statement~~
6 | * ~~the DROP statement~~
7 |
8 | * re-programming of
9 | * FROM statement
10 |
11 | * finishing of
12 | * issue 33 (creator should build PARTITION parts)
13 |
14 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue78c.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:7:"EXPLAIN";a:2:{i:0;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"foo";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:5:"alias";b:0;s:9:"base_expr";s:3:"foo";s:8:"position";i:8;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"bar";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"bar";}}s:8:"position";i:12;}}}
--------------------------------------------------------------------------------
/tests/expected/creator/issue57.sql:
--------------------------------------------------------------------------------
1 | SELECT a.*, SUM(b.home) AS home, b.language, l.image, l.sef, l.title_native FROM iuz6l_menu_types AS a LEFT JOIN iuz6l_menu AS b ON b.menutype = a.menutype AND b.home != 0 LEFT JOIN iuz6l_languages AS l ON l.lang_code = language WHERE (b.client_id = 0 OR b.client_id IS NULL) GROUP BY a.id, a.menutype, a.description, a.title, b.menutype, b.language, l.image, l.sef, l.title_native
--------------------------------------------------------------------------------
/tests/expected/parser/issue78d.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:8:"DESCRIBE";a:2:{i:0;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"foo";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:5:"alias";b:0;s:9:"base_expr";s:3:"foo";s:8:"position";i:9;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"bar%";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"bar%";}}s:8:"position";i:13;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/show4.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"ENGINE";s:8:"position";i:5;}i:1;a:5:{s:9:"expr_type";s:6:"engine";s:4:"name";s:3:"foo";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:9:"base_expr";s:3:"foo";s:8:"position";i:12;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"STATUS";s:8:"position";i:16;}}}
--------------------------------------------------------------------------------
/wiki/Downloads.md:
--------------------------------------------------------------------------------
1 | ### Git
2 | https://github.com/greenlion/PHP-SQL-Parser
3 |
4 | ### Subversion
5 | https://code.google.com/p/php-sql-parser/source/checkout
6 |
7 | ### Google Drive (.zip)
8 | http://tinyurl.com/mg8bh9p
9 |
10 | ### Packagist
11 | https://packagist.org/packages/greenlion/php-sql-parser
12 |
13 | ### GoogleCode (only old versions)
14 | https://code.google.com/p/php-sql-parser/downloads/list
--------------------------------------------------------------------------------
/tests/expected/parser/issue50.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:9:"_utf8'hi'";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"_utf8";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"_utf8";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"'hi'";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 | dist: trusty
3 |
4 | php:
5 | - 5.4
6 | - 5.5
7 | - 5.6
8 | - 7.0
9 | - 7.1
10 | - 7.2
11 | - 7.3
12 | - nightly
13 |
14 | cache:
15 | directories:
16 | - $HOME/.composer/cache
17 |
18 | before_script:
19 | - composer install
20 |
21 | script: vendor/bin/phpunit --configuration phpunit.xml
22 |
23 | matrix:
24 | fast_finish: true
25 | allow_failures:
26 | - php: nightly
--------------------------------------------------------------------------------
/tests/readme.txt:
--------------------------------------------------------------------------------
1 | After installing the Composer dependencies you can execute
2 |
3 | $PROJECT_ROOT/vendor/bin/phpunit --bootstrap $PROJECT_ROOT/tests/bootstrap.php
4 |
5 | In Eclipse you have to set the bootstrap class within the PHPUnit preferences and you should
6 | install a newer PHPUnit using PEAR and add this PEAR install directory as PEAR Library for
7 | PHPUnit (also within the Preferences of PHPUnit).
--------------------------------------------------------------------------------
/tests/expected/creator/issue89.sql:
--------------------------------------------------------------------------------
1 | SELECT ut.id, ut.numero_cartella, ut.nome, ut.cognome, floor(DATEDIFF(de.`data`,ut.data_di_nascita) / 365) AS eta, sx.valore AS sesso, cd.valore AS diagnosi_prevalente, co.valore AS consapevolezza, DATEDIFF(de.`data`,az.data_inizio_assistenza) AS durata_assistenza_giorni, ld.valore AS luogo_decesso, ca.valore AS carico_assistenza, if(sa.id is null,null,if(sa.fkey_cod_care_giver_interno__con_chi_vive = 1,'si','no')) AS vive_solo, sn.valore AS oltre_70 FROM gen_cms_utenti ut
--------------------------------------------------------------------------------
/tests/expected/parser/issue34b.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:2:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"CACHE";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"CACHE";}}s:5:"alias";b:0;s:9:"base_expr";s:5:"CACHE";}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:3:"(1)";s:4:"data";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue148.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:8:"function";s:5:"alias";b:0;s:9:"base_expr";s:7:"REPLACE";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"NOW";s:8:"sub_tree";b:0;s:8:"position";i:15;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'-'";s:8:"sub_tree";b:0;s:8:"position";i:22;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;s:8:"position";i:27;}}s:5:"delim";b:0;s:8:"position";i:7;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue74b.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:6:"schema";s:6:"option";b:0;s:9:"if-exists";b:0;s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"SCHEMA";s:8:"position";i:5;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:4:"blah";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"schema";s:9:"base_expr";s:4:"blah";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"blah";}}s:5:"delim";b:0;s:8:"position";i:12;}}s:8:"position";i:12;}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue41.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:9:"v$mytable";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"v$mytable";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:9:"v$mytable";s:8:"sub_tree";b:0;s:8:"position";i:14;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue74a.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:8:"database";s:6:"option";b:0;s:9:"if-exists";b:0;s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"DATABASE";s:8:"position";i:5;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:4:"blah";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"database";s:9:"base_expr";s:4:"blah";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"blah";}}s:5:"delim";b:0;s:8:"position";i:14;}}s:8:"position";i:14;}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue55a.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:5:"GROUP";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"table.c";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:5:"table";i:1;s:1:"c";}}s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue93.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:5:"const";s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:3:"`a`";s:9:"base_expr";s:6:"as `a`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"position";i:9;}s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:3:"`a`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"direction";s:3:"ASC";s:8:"position";i:25;}}}
--------------------------------------------------------------------------------
/.settings/org.eclipse.php.debug.core.Debug_Process_Preferences.prefs:
--------------------------------------------------------------------------------
1 | #Tue Apr 15 09:40:02 CEST 2014
2 | DefaultProjectBasePath=/PHP-SQL-Parser
3 | eclipse.preferences.version=1
4 | org.eclipse.php.debug.core.use-project-settings=true
5 | org.eclipse.php.debug.coredefaultPHP=PHP 5.3.2 (CGI)
6 | org.eclipse.php.debug.coreoutput_encoding=UTF-8
7 | org.eclipse.php.debug.corephp_debugger_id=org.eclipse.php.debug.core.zendDebugger
8 | org.eclipse.php.debug.corestop_at_first_line_string=true
9 | org.eclipse.php.debug.coretransfer_encoding=UTF-8
10 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue67b.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:3:"SET";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:6:"@a = 1";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:2:"@a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:8:"position";i:4;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:7;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:9;}}s:8:"position";i:4;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue78b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:7:"EXPLAIN";N;s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:15;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"foo.bar";s:8:"sub_tree";b:0;s:8:"position";i:22;}}}
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 | tests
10 |
11 |
12 |
13 |
14 | ./src
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue87a.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"RENAME";a:2:{s:9:"expr_type";s:5:"table";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";s:8:"position";i:7;}i:1;a:2:{s:6:"source";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:13;}s:11:"destination";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";s:8:"position";i:18;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/allcolumns3.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";b:0;s:9:"base_expr";s:5:"count";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"tests";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"tests";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"tests";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue62c.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";b:0;s:5:"hints";a:1:{i:0;a:2:{s:9:"hint_type";s:12:"IGNORE INDEX";s:9:"hint_list";s:9:"(PRIMARY)";}}s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:28:"table1 IGNORE INDEX(PRIMARY)";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue342Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
17 |
18 | $this->assertEquals($sql, $creator->create($parser->parsed));
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue248.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:4:"DROP";a:4:{s:9:"expr_type";s:5:"index";s:6:"option";b:0;s:9:"if-exists";b:0;s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"INDEX";}}}s:5:"INDEX";a:6:{s:9:"base_expr";s:4:"test";s:4:"name";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:10:"index-type";b:0;s:2:"on";a:5:{s:9:"expr_type";s:5:"table";s:9:"base_expr";s:12:" on wp_posts";s:4:"name";s:8:"wp_posts";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"wp_posts";}}s:8:"sub_tree";b:0;}s:7:"options";b:0;}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue137.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:7:"`title`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"title";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:6;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`table`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`table`";s:8:"sub_tree";b:0;s:8:"position";i:17;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue_git11.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"reserved";s:5:"alias";b:0;s:9:"base_expr";s:6:"column";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:0:"";s:9:"base_expr";s:2:"as";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:0:{}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"table as";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue34a.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"cache";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"cache";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"t";s:9:"base_expr";s:4:"as t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:10:"cache as t";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | PHP-SQL-Parser
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.wst.validation.validationbuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.dltk.core.scriptbuilder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.php.core.PHPNature
21 |
22 |
23 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue55b.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:5:"ORDER";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"table.c";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:5:"table";i:1;s:1:"c";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue71a.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:5:"event";s:9:"base_expr";s:8:"as event";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"event";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:15:"table1 as event";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/comment3.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:33:"-- inline comment in FROM section";}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"test";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue319Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
17 |
18 | $this->assertEquals($sql, $creator->create($parser->parsed));
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue78a.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:7:"EXPLAIN";a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"EXTENDED";s:8:"position";i:8;}s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:24;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"foo.bar";s:8:"sub_tree";b:0;s:8:"position";i:31;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue33b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"CREATE";a:5:{s:9:"expr_type";s:5:"table";s:10:"not-exists";b:0;s:9:"base_expr";s:5:"TABLE";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";s:8:"position";i:7;}}s:8:"position";i:7;}s:5:"TABLE";a:6:{s:9:"base_expr";s:6:"hohoho";s:4:"name";s:6:"hohoho";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"hohoho";}}s:10:"create-def";b:0;s:7:"options";b:0;s:8:"position";i:13;}s:4:"LIKE";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"xyz";s:9:"base_expr";s:3:"xyz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"xyz";}}s:8:"position";i:25;}}
--------------------------------------------------------------------------------
/tests/expected/parser/allcolumns5.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"tests";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"tests";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"tests";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/parser/issue233Test.php:
--------------------------------------------------------------------------------
1 | parsed;
17 | $expected = getExpectedValue(dirname(__FILE__), 'issue233.serialized');
18 | $this->assertEquals($expected, $p, 'comment with single quote');
19 | }
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/tests/expected/parser/alias2.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:9:"base_expr";s:4:"colA";}s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"test";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/src/PHPSQLParser/builders/AlterStatementBuilder.php:
--------------------------------------------------------------------------------
1 | build($parsed);
9 | }
10 |
11 | private function buildAlter($parsed)
12 | {
13 | $builder = new AlterBuilder();
14 | return $builder->build($parsed);
15 | }
16 |
17 | public function build(array $parsed)
18 | {
19 | $alter = $parsed['ALTER'];
20 | $sql = $this->buildAlter($alter);
21 |
22 | return $sql;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/tests/expected/creator/issue105.sql:
--------------------------------------------------------------------------------
1 | SELECT users0.user_name AS 'CIS UserName', calls.description AS 'Description', contacts2.first_name AS 'Contacts First Name', contacts2.last_name AS 'Contacts Last Name', calls_cstm.date_logged_c AS 'Date', calls_cstm.contact_type_c AS 'Contact Type', dbo.fn_GetAccountName(calls.parent_id) AS 'Account Name' FROM calls LEFT JOIN calls_cstm ON calls.id = calls_cstm.id_c LEFT JOIN users users0 ON calls.assigned_user_id = users0.id LEFT JOIN contacts contacts2 ON calls.contact_id = contacts2.id WHERE calls.deleted = 0 AND (DATEADD(SECOND,0,calls_cstm.date_logged_c) BETWEEN '2013-01-01' AND '2013-12-31') ORDER BY dbo.fn_GetAccountName(calls.parent_id) ASC LIMIT 15
--------------------------------------------------------------------------------
/tests/expected/parser/issue71b.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"acol";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"acol";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"data";s:9:"base_expr";s:7:"as data";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"data";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:13:"table as data";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue74d.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:6:"schema";s:6:"option";b:0;s:9:"if-exists";b:1;s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"SCHEMA";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:2:"IF";s:8:"position";i:12;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"EXISTS";s:8:"position";i:15;}i:3;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:4:"blah";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"schema";s:9:"base_expr";s:4:"blah";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"blah";}}s:5:"delim";b:0;s:8:"position";i:22;}}s:8:"position";i:22;}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue82.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:6:"number";s:9:"base_expr";s:9:"as number";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"number";}}}s:9:"base_expr";s:22:"SUM(1) * 100 as number";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:18:"aggregate_function";s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue74c.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:8:"database";s:6:"option";b:0;s:9:"if-exists";b:1;s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"DATABASE";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:2:"IF";s:8:"position";i:14;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"EXISTS";s:8:"position";i:17;}i:3;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:4:"blah";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"database";s:9:"base_expr";s:4:"blah";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"blah";}}s:5:"delim";b:0;s:8:"position";i:24;}}s:8:"position";i:24;}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/comment5.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"test";s:8:"sub_tree";b:0;}}s:5:"LIMIT";a:3:{s:6:"offset";s:0:"";s:8:"rowcount";s:2:"10";s:8:"comments";a:1:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:34:"-- inline comment in LIMIT section";}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue21.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"test";s:9:"base_expr";s:7:"as test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}}s:9:"base_expr";s:3:"SUM";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"10";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"account";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"account";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"account";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/parser/issue248Test.php:
--------------------------------------------------------------------------------
1 | assertEquals( $expected, $parser->parsed, 'drop index statement' );
23 | }
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/tests/expected/creator/issue106.sql:
--------------------------------------------------------------------------------
1 | SELECT dbo.fn_GetDayOfWeekMonIs0(DATEADD(SECOND,-21600,calls_cstm.date_logged_c)) AS 'Date' FROM calls LEFT JOIN calls_cstm ON calls.id = calls_cstm.id_c LEFT JOIN users users0 ON calls.assigned_user_id = users0.id LEFT JOIN contacts contacts2 ON calls.contact_id = contacts2.id WHERE calls.deleted = 0 AND ((dbo.fn_GetDayOfWeekMonIs0(DATEADD(SECOND,0,calls_cstm.date_logged_c)) IN ('4')) AND DATENAME(YEAR,DATEADD(SECOND,0,calls_cstm.date_logged_c)) = '2013' AND (DATEPART(MONTH,DATEADD(SECOND,0,calls_cstm.date_logged_c)) IN ('10'))) GROUP BY dbo.fn_GetDayOfWeekMonIs0(DATEADD(SECOND,-21600,calls_cstm.date_logged_c)) ORDER BY dbo.fn_GetDayOfWeekMonIs0(DATEADD(SECOND,-21600,calls_cstm.date_logged_c)) ASC
--------------------------------------------------------------------------------
/tests/cases/creator/unaryMinusTest.php:
--------------------------------------------------------------------------------
1 | parser->parse($query);
16 | $created = $this->creator->create($p);
17 | $expected = getExpectedValue(dirname(__FILE__), 'unaryminus.sql', false);
18 | $this->assertSame($expected, $created, 'unary minus is not created correctly');
19 | }
20 | }
21 | ?>
--------------------------------------------------------------------------------
/tests/expected/parser/allcolumns4.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:3:"a.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:21:"FAILED_LOGIN_ATTEMPTS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:21:"FAILED_LOGIN_ATTEMPTS";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:23:"FAILED_LOGIN_ATTEMPTS a";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue277.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"DELETE";a:2:{s:7:"options";b:0;s:6:"tables";b:0;}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"wp_posts";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"wp_posts";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"wp_posts";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"123";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue248Test.php:
--------------------------------------------------------------------------------
1 | parsed );
23 | $this->assertEquals( $creator->created, $sql, 'drop index statement' );
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tests/cases/parser/issue277Test.php:
--------------------------------------------------------------------------------
1 | assertEquals( $expected, $parser->parsed, 'DELETE FROM' );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/tests/expected/parser/insert2.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:8;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:15:"settings_global";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:15:"settings_global";}}s:5:"alias";b:0;s:9:"base_expr";s:15:"settings_global";s:8:"position";i:13;}}s:6:"VALUES";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:20:"('DBVersion', '146')";s:4:"data";a:2:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'DBVersion'";s:8:"sub_tree";b:0;s:8:"position";i:37;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:5:"'146'";s:8:"sub_tree";b:0;s:8:"position";i:50;}}s:5:"delim";b:0;s:8:"position";i:36;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue42.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:5:"const";s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:10:"some_alias";s:9:"base_expr";s:13:"AS some_alias";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"some_alias";}}s:8:"position";i:49;}s:9:"base_expr";s:41:"'a string with an escaped quote \' in it'";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:10:"some_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"some_table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:10:"some_table";s:8:"sub_tree";b:0;s:8:"position";i:68;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/tableoptions2.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:5:"UNION";a:2:{i:0;a:2:{s:6:"CREATE";a:4:{s:9:"expr_type";s:5:"table";s:10:"not-exists";b:0;s:9:"base_expr";s:5:"TABLE";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";}}}s:5:"TABLE";a:5:{s:9:"base_expr";s:6:"hohoho";s:4:"name";s:6:"hohoho";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"hohoho";}}s:10:"create-def";a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:3:" ()";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:0:"";s:8:"sub_tree";a:0:{}}}}s:7:"options";b:0;}}i:1;a:1:{s:7:"BRACKET";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:23:"(tableA, tableB,tableC)";s:8:"sub_tree";b:0;}}}}}
--------------------------------------------------------------------------------
/tests/cases/creator/orderByPositionTest.php:
--------------------------------------------------------------------------------
1 | parser->parse($query);
16 | $created = $this->creator->create($parsed);
17 | $expected = getExpectedValue(dirname(__FILE__), 'orderbyposition.sql', false);
18 | $this->assertEquals($expected, $created, 'creating ORDER BY with positions is not supported');
19 | }
20 | }
--------------------------------------------------------------------------------
/tests/expected/parser/comment7.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:4:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:5:"alias";b:0;s:9:"base_expr";s:1:"a";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:4:"(id)";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}}}i:3;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:35:"-- inline comment in INSERT section";}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:3:"(1)";s:4:"data";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/comment8.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:5:"alias";b:0;s:9:"base_expr";s:1:"a";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:4:"(id)";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}}}}s:6:"VALUES";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:35:"-- inline comment in VALUES section";}i:1;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:3:"(1)";s:4:"data";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/backtick1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:9:"base_expr";s:4:"test";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:8:"(`name`)";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`name`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"name";}}}}}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:43:"('ben\'s test containing an escaped quote')";s:4:"data";a:1:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:41:"'ben\'s test containing an escaped quote'";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/comment1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:3:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:35:"-- inline comment in SELECT section";}i:2;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"test";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/drop.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:5:"table";s:6:"option";s:7:"CASCADE";s:9:"if-exists";b:1;s:8:"sub_tree";a:5:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"table";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:2:"if";s:8:"position";i:11;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"exists";s:8:"position";i:14;}i:3;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:3:"xyz";s:8:"sub_tree";a:1:{i:0;a:7:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"xyz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"xyz";}}s:5:"alias";b:0;s:9:"base_expr";s:3:"xyz";s:5:"delim";b:0;s:8:"position";i:21;}}s:8:"position";i:21;}i:4;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"cascade";s:8:"position";i:25;}}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue270Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
18 |
19 | $this->assertEquals($createdSql, $creator->create($parser->parsed));
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/tests/expected/parser/comment6.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"test";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:37:"-- inline comment in ORDER BY section";}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue39.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";b:0;s:9:"base_expr";s:5:"COUNT";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"DISTINCT bla";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"DISTINCT";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"bla";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"bla";}}s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"foo";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:3:"foo";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue67a.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:3:"SET";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"SESSION";s:8:"position";i:4;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:43:"group_concat_max_len = @@max_allowed_packet";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:16:"session_variable";s:9:"base_expr";s:20:"group_concat_max_len";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:20:"group_concat_max_len";}}s:8:"sub_tree";b:0;s:8:"position";i:12;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:33;}i:2;a:5:{s:9:"expr_type";s:16:"session_variable";s:9:"base_expr";s:20:"@@max_allowed_packet";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"max_allowed_packet";}}s:8:"sub_tree";b:0;s:8:"position";i:35;}}s:8:"position";i:12;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue254Test.php:
--------------------------------------------------------------------------------
1 | parse( $sql );
16 | $creator = new PHPSQLCreator();
17 | $created = $creator->create( $parser->parsed );
18 | $this->assertSame( $sql, $created, $message );
19 | }
20 |
21 | public function testIssue254_unsinged_zerofill() {
22 | $sql = "CREATE TABLE IF NOT EXISTS wp_feedback_responses (id bigint UNSIGNED NOT NULL AUTO_INCREMENT, test int (4) ZEROFILL, PRIMARY KEY (id))";
23 | $this->_test( $sql, '' );
24 | }
25 | }
--------------------------------------------------------------------------------
/tests/expected/parser/issue72.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"UPDATE";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;}}s:3:"SET";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:8:"col=@max";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"col";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"col";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:4:"@max";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"max";}}s:8:"sub_tree";b:0;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/allcolumns2.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:5:"a * b";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"tests";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"tests";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"tests";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/allcolumns1.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:21:"FAILED_LOGIN_ATTEMPTS";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:21:"FAILED_LOGIN_ATTEMPTS";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:21:"FAILED_LOGIN_ATTEMPTS";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"ip";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"ip";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:14:"'192.168.50.5'";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue361Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
19 |
20 | $this->assertEquals($createdSql, $creator->create($parser->parsed));
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/tests/expected/parser/delete1.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"DELETE";a:2:{s:7:"options";b:0;s:6:"tables";b:0;}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"testA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"testA";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"as a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:10:"testA as a";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/src/PHPSQLParser/builders/UnionStatementBuilder.php:
--------------------------------------------------------------------------------
1 |
9 | * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
10 | *
11 | */
12 | class UnionStatementBuilder implements Builder {
13 |
14 | public function build(array $parsed)
15 | {
16 | $sql = '';
17 | $select_builder = new SelectStatementBuilder();
18 | $first = true;
19 | foreach ($parsed['UNION'] as $clause) {
20 | if (!$first) {
21 | $sql .= " UNION ";
22 | }
23 | else {
24 | $first = false;
25 | }
26 |
27 | $sql .= $select_builder->build($clause);
28 | }
29 | return $sql;
30 | }
31 | }
--------------------------------------------------------------------------------
/tests/cases/creator/issue265Test.php:
--------------------------------------------------------------------------------
1 | parsed);
25 |
26 | $this->assertEquals($creator->created, $sql, 'CHARACTER SET utf8');
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue74e.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:5:"table";s:6:"option";s:8:"RESTRICT";s:9:"if-exists";b:0;s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";s:8:"position";i:5;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"blah1, blah2";s:8:"sub_tree";a:2:{i:0;a:7:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"blah1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"blah1";}}s:5:"alias";b:0;s:9:"base_expr";s:5:"blah1";s:5:"delim";s:1:",";s:8:"position";i:11;}i:1;a:7:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"blah2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"blah2";}}s:5:"alias";b:0;s:9:"base_expr";s:5:"blah2";s:5:"delim";b:0;s:8:"position";i:18;}}s:8:"position";i:11;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"RESTRICT";s:8:"position";i:24;}}}}
--------------------------------------------------------------------------------
/tests/bootstrap.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | A custom coding standard for PHP-SQL-Parser.
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue79a.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`users`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"users";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`users`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"id_user";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"id_user";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:8:"@ID_USER";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"ID_USER";}}s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/src/PHPSQLParser/builders/UnionAllStatementBuilder.php:
--------------------------------------------------------------------------------
1 |
9 | * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
10 | *
11 | */
12 | class UnionAllStatementBuilder implements Builder {
13 |
14 |
15 |
16 | public function build(array $parsed)
17 | {
18 | $sql = '';
19 | $select_builder = new SelectStatementBuilder();
20 | $first = true;
21 | foreach ($parsed['UNION ALL'] as $clause) {
22 | if (!$first) {
23 | $sql .= " UNION ALL ";
24 | }
25 | else {
26 | $first = false;
27 | }
28 |
29 | $sql .= $select_builder->build($clause);
30 | }
31 | return $sql;
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/cases/creator/issue252Test.php:
--------------------------------------------------------------------------------
1 | parse( $sql );
15 | $creator = new PHPSQLCreator();
16 | $created = $creator->create( $parser->parsed );
17 | $this->assertSame( $sql, $created, $message );
18 | }
19 |
20 | public function testIssue252_Bool() {
21 | $sql = "CREATE TABLE IF NOT EXISTS wp_feedback_responses (id bigint NOT NULL AUTO_INCREMENT, response_id varchar (50) NOT NULL, response_public boolean NOT NULL, response_public_bc bool NOT NULL, PRIMARY KEY (id))";
22 | $this->_test( $sql, '');
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/tests/cases/parser/issue261Test.php:
--------------------------------------------------------------------------------
1 | assertEquals( $expected, $parser->parsed, 'hash in VALUE' );
23 | }
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue120.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:7:"BRACKET";a:1:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:54:"(
2 | SELECT CNAME
3 | FROM COCKTAIL
4 | )";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"query";s:9:"base_expr";s:34:"SELECT CNAME
5 | FROM COCKTAIL";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"CNAME";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"CNAME";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:17;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"COCKTAIL";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"COCKTAIL";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"COCKTAIL";s:8:"sub_tree";b:0;s:8:"position";i:36;}}}s:8:"position";i:10;}}s:8:"position";i:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue33a.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"CREATE";a:5:{s:9:"expr_type";s:5:"table";s:10:"not-exists";b:0;s:9:"base_expr";s:5:"TABLE";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";s:8:"position";i:7;}}s:8:"position";i:7;}s:5:"TABLE";a:6:{s:9:"base_expr";s:6:"hohoho";s:4:"name";s:6:"hohoho";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"hohoho";}}s:10:"create-def";a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:11:" (LIKE xyz)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:4:"like";s:9:"base_expr";s:8:"LIKE xyz";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"LIKE";s:8:"position";i:21;}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"xyz";s:9:"base_expr";s:3:"xyz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"xyz";}}s:8:"position";i:26;}}s:8:"position";i:21;}}s:8:"position";i:19;}s:7:"options";b:0;s:8:"position";i:13;}}
--------------------------------------------------------------------------------
/tests/expected/parser/show5.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"SHOW";a:8:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"FULL";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"COLUMNS";s:8:"position";i:10;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"FROM";s:8:"position";i:18;}i:3;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:9:"`foo.bar`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"foo.bar";}}s:9:"base_expr";s:9:"`foo.bar`";s:8:"position";i:23;}i:4;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"FROM";s:8:"position";i:33;}i:5;a:5:{s:9:"expr_type";s:8:"database";s:4:"name";s:6:"hohoho";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"hohoho";}}s:9:"base_expr";s:6:"hohoho";s:8:"position";i:38;}i:6;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"LIKE";s:8:"position";i:45;}i:7;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:8:"'%xmas%'";s:8:"position";i:50;}}}
--------------------------------------------------------------------------------
/tests/cases/parser/issue338Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
15 | $parsed = $parser->parsed;
16 |
17 | $this->assertNotFalse($parsed);
18 | $this->assertTrue(is_array($parsed));
19 | $this->assertTrue(!array_key_exists('TRUNCATE', $parsed));
20 |
21 | $sql = "TRUNCATE TABLE truncate_table";
22 | $parser->parse($sql, true);
23 | $parsed = $parser->parsed;
24 |
25 | $this->assertNotFalse($parsed);
26 | $this->assertTrue(is_array($parsed));
27 | $this->assertTrue(array_key_exists('TRUNCATE', $parsed));
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/src/PHPSQLParser/builders/AlterBuilder.php:
--------------------------------------------------------------------------------
1 |
9 | * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
10 | *
11 | */
12 | class AlterBuilder implements Builder
13 | {
14 | public function build(array $parsed)
15 | {
16 | $sql = '';
17 |
18 | foreach ($parsed as $term) {
19 | if ($term === ' ') {
20 | continue;
21 | }
22 |
23 | if (substr($term, 0, 1) === '(' ||
24 | strpos($term, "\n") !== false) {
25 | $sql = rtrim($sql);
26 | }
27 |
28 | $sql .= $term . ' ';
29 | }
30 |
31 | $sql = rtrim($sql);
32 |
33 | return $sql;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue70.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"`column`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"column";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;s:8:"position";i:21;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"col";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"col";}}s:8:"sub_tree";b:0;s:8:"position";i:33;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:""value"";s:8:"sub_tree";b:0;s:8:"position";i:37;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue36b.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:9:"base_expr";s:4:"test";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:16:"(`name`, `test`)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`name`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"name";}}}i:1;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}}}}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:20:"('\'Superman\'', '')";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:14:"'\'Superman\''";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/libs/codesniffer/usage.txt:
--------------------------------------------------------------------------------
1 | Install PHP_CodeSniffer:
2 | ========================
3 |
4 | pear install PHP_CodeSniffer
5 |
6 |
7 | Check the code with:
8 | ====================
9 |
10 | phpcs --standard=/path/to/the/PhOSCo/folder /path/to/the/src/folder >/tmp/code-errors.txt
11 | vi /tmp/code-errors.txt
12 |
13 |
14 | Or integrate it as external tool into Eclipse:
15 | ==============================================
16 |
17 | * Open External tool configuration window
18 | * set the name to "CodeSniffer"
19 | * set /usr/bin/phpcs as Location
20 | * set --standard="${project_loc}/libs/codesniffer/PhOSCo" "${selected_resource_loc}" as Arguments
21 | * on the Build tab set the parameters as needed
22 | * click "Apply" and "Close"
23 |
24 | * select one of the folders or *.php files
25 | * execute the external tool "CodeSniffer"
26 | * review the errors within the console output within Eclipse
27 |
28 | correct all listed errors (...I hate it)!
29 | =========================================
--------------------------------------------------------------------------------
/tests/cases/parser/issue355Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
27 | // We expect to see 10 parsed columns
28 | $this->assertEquals(
29 | 10,
30 | count($parser->parsed['TABLE']['create-def']['sub_tree'])
31 | );
32 |
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/tests/expected/parser/alias1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:11:"colA * colB";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colB";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colB";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/insert1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"into";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:15:"SETTINGS_GLOBAL";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:15:"SETTINGS_GLOBAL";}}s:5:"alias";b:0;s:9:"base_expr";s:15:"SETTINGS_GLOBAL";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:20:"(stg_value,stg_name)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"stg_value";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"stg_value";}}}i:1;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"stg_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"stg_name";}}}}}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:16:"('','force_ssl')";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'force_ssl'";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue53a.serialized:
--------------------------------------------------------------------------------
1 | a:5:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";}}s:5:"LIMIT";a:2:{s:6:"offset";s:2:"20";s:8:"rowcount";s:2:"10";}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue53b.serialized:
--------------------------------------------------------------------------------
1 | a:5:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:8:"sub_tree";b:0;s:9:"direction";s:4:"DESC";}}s:5:"LIMIT";a:2:{s:6:"offset";s:0:"";s:8:"rowcount";s:2:"10";}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue65.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:2:"i1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"i1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:18:"aggregate_function";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:3:"cnt";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"cnt";}}s:9:"base_expr";s:3:"cnt";}s:9:"base_expr";s:5:"count";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"test.s1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"test";i:1;s:2:"s1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"test.s1";s:8:"sub_tree";b:0;}}s:5:"GROUP";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"i1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"i1";}}s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue37.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:9:"base_expr";s:4:"test";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:16:"(`name`, `test`)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`name`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"name";}}}i:1;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}}}}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:63:"('Hello this is what happens
2 | when new lines are involved', '')";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:57:"'Hello this is what happens
3 | when new lines are involved'";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/phpunit.php:
--------------------------------------------------------------------------------
1 |
6 | *
7 | * For the full copyright and license information, please view the LICENSE
8 | * file that was distributed with this source code.
9 | */
10 |
11 | if (!ini_get('date.timezone')) {
12 | ini_set('date.timezone', 'UTC');
13 | }
14 |
15 | foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) {
16 | if (file_exists($file)) {
17 | define('PHPUNIT_COMPOSER_INSTALL', $file);
18 | break;
19 | }
20 | }
21 |
22 | unset($file);
23 |
24 | if (!defined('PHPUNIT_COMPOSER_INSTALL')) {
25 | fwrite(STDERR,
26 | 'You need to set up the project dependencies using the following commands:' . PHP_EOL .
27 | 'wget http://getcomposer.org/composer.phar' . PHP_EOL .
28 | 'php composer.phar install' . PHP_EOL
29 | );
30 | die(1);
31 | }
32 |
33 | require PHPUNIT_COMPOSER_INSTALL;
34 |
35 | PHPUnit_TextUI_Command::main();
36 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue43.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"title";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:9:"introtext";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"introtext";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:13:"kj9un_content";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"kj9un_content";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:13:"kj9un_content";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"`id`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:5:"'159'";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue149.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"tab";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"tab";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:3:"tab";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"ifnull";s:8:"sub_tree";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"col_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"col_name";}}s:8:"sub_tree";b:0;s:8:"position";i:31;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;s:8:"position";i:40;}}s:8:"position";i:24;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<>";s:8:"sub_tree";b:0;s:8:"position";i:44;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;s:8:"position";i:47;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue56b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:20:"-- an inline comment";}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"acol";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"acol";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:17:"--another comment";}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;s:8:"position";i:72;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:92;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:94;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:96;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue56b1.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:22:"-- an /*inline comment";}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"acol";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"acol";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:19:"--another */comment";}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;s:8:"position";i:76;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:96;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:98;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:100;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue91.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:8:"reserved";s:5:"alias";b:0;s:9:"base_expr";s:8:"DISTINCT";s:8:"sub_tree";b:0;s:5:"delim";s:1:" ";}i:1;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:11:"colA * colB";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"colB";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colB";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue95.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:8:{s:9:"expr_type";s:16:"table_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:5:"`Tmp`";s:9:"base_expr";s:8:"AS `Tmp`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"Tmp";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:43:"(SELECT 1 AS `ID`) UNION (SELECT 2 AS `ID`)";s:8:"sub_tree";a:1:{s:5:"UNION";a:2:{i:0;a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:5:"const";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"`ID`";s:9:"base_expr";s:7:"AS `ID`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"ID";}}}s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}}i:1;a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:5:"const";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"`ID`";s:9:"base_expr";s:7:"AS `ID`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"ID";}}}s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}}}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue80a.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`model`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"model";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`model`";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"`marker`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"marker";}}s:8:"sub_tree";b:0;s:8:"position";i:28;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'this_model'";s:8:"sub_tree";b:0;s:8:"position";i:37;}}s:5:"ORDER";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";s:8:"position";i:59;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue_git24.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"IN";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:7:"in-list";s:9:"base_expr";s:12:"(0,-1,-2,-3)";s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"-1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"-2";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"-3";s:8:"sub_tree";b:0;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue51.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:8:"function";s:5:"alias";b:0;s:9:"base_expr";s:4:"CAST";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:21:"12 AS decimal( 9, 3 )";s:8:"sub_tree";a:4:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"12";s:8:"sub_tree";b:0;s:8:"position";i:13;}i:1;a:4:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:2:"AS";s:8:"sub_tree";b:0;s:8:"position";i:16;}i:2;a:4:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"decimal";s:8:"sub_tree";b:0;s:8:"position";i:19;}i:3;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:8:"( 9, 3 )";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"9";s:8:"sub_tree";b:0;s:8:"position";i:28;}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:",";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:",";}}s:8:"sub_tree";b:0;s:8:"position";i:29;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;s:8:"position";i:31;}}s:8:"position";i:26;}}s:5:"alias";b:0;s:8:"position";i:13;}}s:5:"delim";b:0;s:8:"position";i:7;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue52.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:1:"b";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"c";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:8:"sub_tree";b:0;s:8:"position";i:22;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"IN";s:8:"sub_tree";b:0;s:8:"position";i:24;}i:2;a:4:{s:9:"expr_type";s:7:"in-list";s:9:"base_expr";s:6:"(1, 2)";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:28;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;s:8:"position";i:31;}}s:8:"position";i:27;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue61.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";b:0;s:9:"base_expr";s:5:"lcase";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"dummy.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:5:"dummy";i:1;s:1:"b";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"dummy";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"dummy";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"dummy";s:8:"sub_tree";b:0;}}s:5:"ORDER";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"dummy.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:5:"dummy";i:1;s:1:"a";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";}i:1;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:5:"LCASE";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"dummy.b";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:5:"dummy";i:1;s:1:"b";}}s:8:"sub_tree";b:0;}}s:9:"direction";s:3:"ASC";}}}
--------------------------------------------------------------------------------
/tests/expected/parser/comment2.serialized:
--------------------------------------------------------------------------------
1 | YToyOntzOjY6IlNFTEVDVCI7YTozOntpOjA7YTo2OntzOjk6ImV4cHJfdHlwZSI7czo2OiJjb2xyZWYiO3M6NToiYWxpYXMiO2I6MDtzOjk6ImJhc2VfZXhwciI7czoxOiJhIjtzOjk6Im5vX3F1b3RlcyI7YToyOntzOjU6ImRlbGltIjtiOjA7czo1OiJwYXJ0cyI7YToxOntpOjA7czoxOiJhIjt9fXM6ODoic3ViX3RyZWUiO2I6MDtzOjU6ImRlbGltIjtzOjE6IiwiO31pOjE7YToyOntzOjk6ImV4cHJfdHlwZSI7czo3OiJjb21tZW50IjtzOjU6InZhbHVlIjtzOjEwNjoiLyogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aSBsaW5lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudAogICAgICAgICAgICAgICAgICAgICAgICAqLyI7fWk6MjthOjY6e3M6OToiZXhwcl90eXBlIjtzOjY6ImNvbHJlZiI7czo1OiJhbGlhcyI7YjowO3M6OToiYmFzZV9leHByIjtzOjE6ImIiO3M6OToibm9fcXVvdGVzIjthOjI6e3M6NToiZGVsaW0iO2I6MDtzOjU6InBhcnRzIjthOjE6e2k6MDtzOjE6ImIiO319czo4OiJzdWJfdHJlZSI7YjowO3M6NToiZGVsaW0iO2I6MDt9fXM6NDoiRlJPTSI7YToxOntpOjA7YToxMDp7czo5OiJleHByX3R5cGUiO3M6NToidGFibGUiO3M6NToidGFibGUiO3M6NDoidGVzdCI7czo5OiJub19xdW90ZXMiO2E6Mjp7czo1OiJkZWxpbSI7YjowO3M6NToicGFydHMiO2E6MTp7aTowO3M6NDoidGVzdCI7fX1zOjU6ImFsaWFzIjtiOjA7czo1OiJoaW50cyI7YjowO3M6OToiam9pbl90eXBlIjtzOjQ6IkpPSU4iO3M6ODoicmVmX3R5cGUiO2I6MDtzOjEwOiJyZWZfY2xhdXNlIjtiOjA7czo5OiJiYXNlX2V4cHIiO3M6NDoidGVzdCI7czo4OiJzdWJfdHJlZSI7YjowO319fQ==
--------------------------------------------------------------------------------
/tests/expected/parser/update2.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"UPDATE";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:15:"SETTINGS_GLOBAL";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:15:"SETTINGS_GLOBAL";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:15:"SETTINGS_GLOBAL";s:8:"sub_tree";b:0;}}s:3:"SET";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"stg_value=''";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"stg_value";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"stg_value";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"stg_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"stg_name";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'force_ssl'";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue233.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"CREATE";a:4:{s:9:"expr_type";s:5:"table";s:10:"not-exists";b:0;s:9:"base_expr";s:5:"TABLE";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";}}}s:5:"TABLE";a:5:{s:9:"base_expr";s:6:"moomoo";s:4:"name";s:6:"moomoo";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"moomoo";}}s:10:"create-def";a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:18:" (cow VARCHAR(20))";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"column-def";s:9:"base_expr";s:15:"cow VARCHAR(20)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:3:"cow";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"cow";}}}i:1;a:7:{s:9:"expr_type";s:11:"column-type";s:9:"base_expr";s:11:"VARCHAR(20)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:9:"data-type";s:9:"base_expr";s:7:"VARCHAR";s:6:"length";s:2:"20";}i:1;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:4:"(20)";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"20";}}}}s:6:"unique";b:0;s:8:"nullable";b:1;s:8:"auto_inc";b:0;s:7:"primary";b:0;}}}}}s:7:"options";b:0;}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue74f.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:4:"DROP";a:4:{s:9:"expr_type";s:15:"temporary-table";s:6:"option";s:7:"CASCADE";s:9:"if-exists";b:1;s:8:"sub_tree";a:6:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:9:"TEMPORARY";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";s:8:"position";i:15;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:2:"IF";s:8:"position";i:21;}i:3;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"EXISTS";s:8:"position";i:24;}i:4;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:12:"blah1, blah2";s:8:"sub_tree";a:2:{i:0;a:7:{s:9:"expr_type";s:15:"temporary-table";s:5:"table";s:5:"blah1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"blah1";}}s:5:"alias";b:0;s:9:"base_expr";s:5:"blah1";s:5:"delim";s:1:",";s:8:"position";i:31;}i:1;a:7:{s:9:"expr_type";s:15:"temporary-table";s:5:"table";s:5:"blah2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"blah2";}}s:5:"alias";b:0;s:9:"base_expr";s:5:"blah2";s:5:"delim";b:0;s:8:"position";i:38;}}s:8:"position";i:31;}i:5;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"CASCADE";s:8:"position";i:44;}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue32.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"UPDATE";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"user";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"user";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"user";s:8:"sub_tree";b:0;}}s:3:"SET";a:2:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:13:"lastlogin = 7";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:9:"lastlogin";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"lastlogin";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"7";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"x = 3";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/comment9.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"INSERT";a:4:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:5:"alias";b:0;s:9:"base_expr";s:1:"a";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:4:"(id)";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}}}}i:3;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:36:"-- inline comment in INSERT section;";}}s:6:"SELECT";a:2:{i:0;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:35:"-- inline comment in SELECT section";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:1:"x";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue78e.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:4:"DESC";a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:13:"FORMAT = JSON";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"FORMAT";s:8:"position";i:5;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"position";i:12;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"JSON";s:8:"position";i:14;}}s:8:"position";i:5;}s:6:"DELETE";a:2:{s:7:"options";b:0;s:6:"tables";b:0;}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"tableA";s:8:"sub_tree";b:0;s:8:"position";i:31;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:44;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:45;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:46;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue268Test.php:
--------------------------------------------------------------------------------
1 | parsed );
22 | $this->assertEquals( $creator->created, $sql);
23 |
24 | $sql = "UPDATE wp_rg_form_view SET count = count + 1 WHERE id = 239";
25 | $parser = new PHPSQLParser( $sql );
26 | $creator = new PHPSQLCreator( $parser->parsed );
27 | $this->assertEquals( $creator->created, $sql );
28 |
29 | $sql = "UPDATE wp_rg_form_view SET total = count(test) WHERE id = 239";
30 | $parser = new PHPSQLParser( $sql );
31 | $creator = new PHPSQLCreator( $parser->parsed );
32 | $this->assertEquals( $creator->created, $sql );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue56a.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:4:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"into";s:8:"position";i:21;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:9:"TableName";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"TableName";}}s:5:"alias";b:0;s:9:"base_expr";s:9:"TableName";s:8:"position";i:26;}i:2;a:4:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:11:"(Col1,col2)";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"Col1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"Col1";}}s:8:"position";i:37;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col2";}}s:8:"position";i:42;}}s:8:"position";i:36;}i:3;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:13:"/* +APPEND */";}}s:6:"VALUES";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:9:"(1,'pol')";s:4:"data";a:2:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:55;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:5:"'pol'";s:8:"sub_tree";b:0;s:8:"position";i:57;}}s:5:"delim";b:0;s:8:"position";i:54;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue256Test.php:
--------------------------------------------------------------------------------
1 | parse( $sql );
16 | $creator = new PHPSQLCreator();
17 | $created = $creator->create( $parser->parsed );
18 | $this->assertSame( $sql, $created, $message );
19 | }
20 |
21 | public function testIssue256_create_table_charset_collate() {
22 | $sql = "CREATE TABLE IF NOT EXISTS wp_feedback_responses (id bigint NOT NULL AUTO_INCREMENT, response_id varchar (50) NOT NULL, PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
23 | $this->_test( $sql, '' );
24 | }
25 |
26 | public function testIssue256_create_table_just_collate() {
27 | $sql = "CREATE TABLE IF NOT EXISTS wp_feedback_responses (id bigint NOT NULL AUTO_INCREMENT, response_id varchar (50) NOT NULL, PRIMARY KEY (id)) COLLATE utf8mb4_unicode_ci";
28 | $this->_test( $sql, '' );
29 | }
30 | }
--------------------------------------------------------------------------------
/tests/expected/parser/issue56a1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:4:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"into";s:8:"position";i:31;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:9:"TableName";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"TableName";}}s:5:"alias";b:0;s:9:"base_expr";s:9:"TableName";s:8:"position";i:36;}i:2;a:4:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:11:"(Col1,col2)";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"Col1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"Col1";}}s:8:"position";i:47;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col2";}}s:8:"position";i:52;}}s:8:"position";i:46;}i:3;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:23:"/* a comment -- haha */";}}s:6:"VALUES";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:9:"(1,'pol')";s:4:"data";a:2:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:65;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:5:"'pol'";s:8:"sub_tree";b:0;s:8:"position";i:67;}}s:5:"delim";b:0;s:8:"position";i:64;}}}
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on: [push]
4 |
5 | jobs:
6 | build-test:
7 | runs-on: ubuntu-latest
8 | strategy:
9 | fail-fast: false
10 | matrix:
11 | php-versions:
12 | - 5.4
13 | - 5.5
14 | - 5.6
15 | - 7.2
16 | - 7.3
17 | - 7.4
18 | - 8.0
19 | - 8.1
20 | - 8.2
21 | - 8.3
22 | - 8.4
23 |
24 |
25 | steps:
26 | - name: Checkout
27 | uses: actions/checkout@v4
28 | - name: Setup PHP
29 | uses: shivammathur/setup-php@v2
30 | with:
31 | php-version: ${{ matrix.php-versions }}
32 | coverage: xdebug
33 | - name: Composer Install
34 | run: composer install --classmap-authoritative --no-interaction --no-cache
35 | - name: run tests
36 | run: vendor/bin/phpunit --configuration phpunit.xml --bootstrap=tests/bootstrap.php --coverage-html=coverage/html/
37 | - name: Archive code coverage results
38 | uses: actions/upload-artifact@v4
39 | with:
40 | name: code-coverage-report-${{ matrix.php-versions }}
41 | path: coverage/html/
--------------------------------------------------------------------------------
/src/PHPSQLParser/Options.php:
--------------------------------------------------------------------------------
1 | options = $options;
40 | }
41 |
42 | /**
43 | * @return bool
44 | */
45 | public function getConsistentSubtrees()
46 | {
47 | return (isset($this->options[self::CONSISTENT_SUB_TREES]) && $this->options[self::CONSISTENT_SUB_TREES]);
48 | }
49 |
50 | /**
51 | * @return bool
52 | */
53 | public function getANSIQuotes()
54 | {
55 | return (isset($this->options[self::ANSI_QUOTES]) && $this->options[self::ANSI_QUOTES]);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/tests/cases/creator/AlterTest.php:
--------------------------------------------------------------------------------
1 | parsed);
14 | $created = $creator->created;
15 | $expected = getExpectedValue(dirname(__FILE__), 'alter.sql', false);
16 | $this->assertSame($expected, $created, 'an alter table statement to change a column');
17 | }
18 |
19 | public function testAlterAddColumn()
20 | {
21 | $sql = "ALTER TABLE `my_table`
22 | ADD COLUMN `updated_by` SMALLINT unsigned AFTER `date_created`";
23 | $parser = new PHPSQLParser($sql);
24 | $creator = new PHPSQLCreator($parser->parsed);
25 | $created = $creator->created;
26 | $expected = getExpectedValue(dirname(__FILE__), 'alter2.sql', false);
27 | $this->assertSame($expected, $created, 'an alter table statement to add a column');
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue40a.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:1:"t";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:7:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:8:""a'b\cd"";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"and";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"'ef"gh'";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue40b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:1:"t";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:7:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:""abcd"";s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"and";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"'efgh'";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue36c.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:9:"base_expr";s:4:"test";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:16:"(`name`, `test`)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`name`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"name";}}}i:1;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}}}}}s:6:"VALUES";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:21:"('\'Superman\'', ''),";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:14:"'\'Superman\''";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:1;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:17:"('\'sdfsd\'', '')";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:11:"'\'sdfsd\''";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue36a.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:9:"base_expr";s:4:"test";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:16:"(`name`, `test`)";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`name`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"name";}}}i:1;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}}}}}s:6:"VALUES";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:21:"('\'Superman\'', ''),";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:14:"'\'Superman\''";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:1;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:20:"('\'Superman\'', '')";s:4:"data";a:2:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:14:"'\'Superman\''";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/AbstractTestCase.php:
--------------------------------------------------------------------------------
1 | parser = new PHPSQLParser();
27 | $this->creator = new PHPSQLCreator();
28 | }
29 |
30 | /**
31 | * Helper function for getting the expected array
32 | * from a file as serialized string.
33 | * Returns an unserialized value from the given file.
34 | *
35 | * @param String $filename
36 | */
37 | protected function getExpectedValue($path, $filename, $unserialize = true) {
38 | $path = explode(DIRECTORY_SEPARATOR, $path);
39 | $content = file_get_contents(dirname(__FILE__) . "/expected/" . array_pop($path) . "/" . $filename);
40 | return ($unserialize ? unserialize($content) : $content);
41 | }
42 |
43 | }
44 | ?>
45 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name" : "greenlion/php-sql-parser",
3 | "type" : "library",
4 | "description" : "A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL",
5 | "keywords" : [
6 | "sql",
7 | "parser",
8 | "creator",
9 | "MySQL"
10 | ],
11 | "homepage" : "https://github.com/greenlion/PHP-SQL-Parser",
12 | "license" : "BSD-3-Clause",
13 | "authors" : [{
14 | "name" : "Justin Swanhart",
15 | "email" : "greenlion@gmail.com",
16 | "homepage" : "http://code.google.com/u/greenlion@gmail.com/",
17 | "role" : "Owner"
18 | }, {
19 | "name" : "André Rothe",
20 | "email" : "phosco@gmx.de",
21 | "homepage" : "https://www.phosco.info",
22 | "role" : "Committer"
23 | }
24 | ],
25 | "support" : {
26 | "issues" : "https://github.com/greenlion/PHP-SQL-Parser/issues",
27 | "source" : "https://github.com/greenlion/PHP-SQL-Parser"
28 | },
29 | "autoload" : {
30 | "psr-0" : {
31 | "PHPSQLParser\\" : "src/"
32 | }
33 | },
34 | "autoload-dev" : {
35 | "psr-4" : {
36 | "PHPSQLParser\\Test\\" : "tests/cases/"
37 | }
38 | },
39 | "require" : {
40 | "php" : ">=5.3.2"
41 | },
42 | "require-dev" : {
43 | "squizlabs/php_codesniffer" : "^2.8.1",
44 | "phpunit/phpunit" : "^9.5.13",
45 | "analog/analog" : "^1.0.6"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/tests/expected/parser/comment4.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:4:"test";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:8:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}i:3;a:2:{s:9:"expr_type";s:7:"comment";s:5:"value";s:34:"-- inline comment in WHERE section";}i:4;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:5;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}i:6;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;}i:7;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"4";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue117.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:7:"BRACKET";a:2:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:36:"(((SELECT x FROM table)) ORDER BY x)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:23:"((SELECT x FROM table))";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:21:"(SELECT x FROM table)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"query";s:9:"base_expr";s:19:"SELECT x FROM table";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:10;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:5:"table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:5:"table";s:8:"sub_tree";b:0;s:8:"position";i:17;}}}s:8:"position";i:3;}}s:8:"position";i:2;}}s:8:"position";i:1;}}s:8:"position";i:0;}i:1;a:1:{s:5:"ORDER";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:9:"direction";s:3:"ASC";s:8:"position";i:34;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/select2.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"pl_namespace";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"pl_namespace";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:8:"pl_title";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"pl_title";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:11:"`pagelinks`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:9:"pagelinks";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"`pagelinks`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"pl_from";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"pl_from";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'1'";s:8:"sub_tree";b:0;}}s:7:"OPTIONS";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:10:"FOR UPDATE";s:8:"sub_tree";a:2:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"FOR";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:6:"UPDATE";}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/subselect1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:30:"(select colA FRom TableA) as b";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:25:"(select colA FRom TableA)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"TableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"TableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"TableA";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue87b.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"RENAME";a:2:{s:9:"expr_type";s:5:"table";s:8:"sub_tree";a:4:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";s:8:"position";i:7;}i:1;a:2:{s:6:"source";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:13;}s:11:"destination";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";s:8:"position";i:18;}}i:2;a:2:{s:6:"source";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"`c`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"c";}}s:9:"base_expr";s:3:"`c`";s:8:"position";i:21;}s:11:"destination";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"`a`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:3:"`a`";s:8:"position";i:28;}}i:3;a:2:{s:6:"source";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:9:"base_expr";s:7:"foo.bar";s:8:"position";i:33;}s:11:"destination";a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:11:"hello.world";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:5:"hello";i:1;s:5:"world";}}s:9:"base_expr";s:11:"hello.world";s:8:"position";i:44;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/subselect3.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:41:"(-- comment
2 | select colA FRom TableA) as b";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:36:"(-- comment
3 | select colA FRom TableA)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"TableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"TableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"TableA";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}
4 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue38.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`table`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"table";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:3:"`t`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:3:"`t`";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:11:"`table` `t`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:1:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:47:"( ( UNIX_TIMESTAMP() + 3600 ) > `t`.`expires` )";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:27:"( UNIX_TIMESTAMP() + 3600 )";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:14:"UNIX_TIMESTAMP";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"3600";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:13:"`t`.`expires`";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"t";i:1;s:7:"expires";}}s:8:"sub_tree";b:0;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue84c.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}i:2;a:4:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:24:"(field1, field2, field3)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"position";i:26;}i:1;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"position";i:34;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"position";i:42;}}s:8:"position";i:25;}}s:6:"VALUES";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:9:"(1, 2, 3)";s:4:"data";a:3:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:58;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"2";s:8:"sub_tree";b:0;s:8:"position";i:61;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;s:8:"position";i:64;}}s:5:"delim";b:0;s:8:"position";i:57;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue139.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:9;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"z";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"z";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:11;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"tableA";s:8:"sub_tree";b:0;s:8:"position";i:18;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:31;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;s:8:"position";i:32;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"5";s:8:"sub_tree";b:0;s:8:"position";i:33;}}s:5:"LIMIT";a:2:{s:6:"offset";s:1:"0";s:8:"rowcount";s:1:"2";}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue125.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"t1.*";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:1:"*";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:4:"left";s:8:"sub_tree";a:2:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t1.c1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:2:"c1";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"6";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t2.c2";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:2:"c2";}}s:8:"sub_tree";b:0;}}s:9:"base_expr";s:27:"t2 on left(t1.c1,6) = t2.c2";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue62b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"UPDATE";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:10:"vtiger_tab";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"vtiger_tab";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:10:"vtiger_tab";s:8:"sub_tree";b:0;s:8:"position";i:7;}}s:3:"SET";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:14:"isentitytype=?";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:12:"isentitytype";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"isentitytype";}}s:8:"sub_tree";b:0;s:8:"position";i:22;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:34;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"?";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"?";}}s:8:"sub_tree";b:0;s:8:"position";i:35;}}s:8:"position";i:22;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"tabid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"tabid";}}s:8:"sub_tree";b:0;s:8:"position";i:43;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:48;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"?";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"?";}}s:8:"sub_tree";b:0;s:8:"position";i:49;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue312Test.php:
--------------------------------------------------------------------------------
1 | parser = new PHPSQLParser();
25 | $this->creator = new PHPSQLCreator();
26 | }
27 |
28 | /**
29 | * @dataProvider dataIssue312
30 | * @param string $sql
31 | * @throws UnsupportedFeatureException
32 | */
33 | public function testIssue312($sql)
34 | {
35 | $parsed = $this->parser->parse($sql);
36 | $created = $this->creator->create($parsed);
37 | $this->assertEquals($sql, $created);
38 | }
39 |
40 | public function dataIssue312()
41 | {
42 | // [string $sql]
43 | return array(
44 | array('SELECT @a := 20'),
45 | array('SELECT @a := 20, @a + 10 AS x'),
46 | array('SELECT sum, @c := 40 FROM (SELECT @a := 10, @b := 20, @a + @b AS sum) AS x'),
47 | );
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue69.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"table1";s:8:"sub_tree";b:0;s:8:"position";i:14;}}s:5:"WHERE";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col1";}}s:8:"sub_tree";b:0;s:8:"position";i:27;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<>";s:8:"sub_tree";b:0;s:8:"position";i:31;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col2";}}s:8:"sub_tree";b:0;s:8:"position";i:33;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"or";s:8:"sub_tree";b:0;s:8:"position";i:38;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"col3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"col3";}}s:8:"sub_tree";b:0;s:8:"position";i:41;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"is";s:8:"sub_tree";b:0;s:8:"position";i:46;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"null";s:8:"sub_tree";b:0;s:8:"position";i:49;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/union1.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:5:"UNION";a:2:{i:0;a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:22;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test a";s:8:"sub_tree";b:0;s:8:"position";i:17;}}}i:1;a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colB";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colB";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:53;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"position";i:77;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:18:"test
2 | as b";s:8:"sub_tree";b:0;s:8:"position";i:63;}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue133a.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:9;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"z";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"z";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:11;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:16:"MDR1.Particles85";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:11:"Particles85";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:16:"MDR1.Particles85";s:8:"sub_tree";b:0;s:8:"position";i:18;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:4:"RAND";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"154321";s:8:"sub_tree";b:0;s:8:"position";i:46;}}s:8:"position";i:41;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<=";s:8:"sub_tree";b:0;s:8:"position";i:54;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:7:"2.91E-5";s:8:"sub_tree";b:0;s:8:"position";i:57;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue133b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:9;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"z";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"z";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:11;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:16:"MDR1.Particles85";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:11:"Particles85";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:16:"MDR1.Particles85";s:8:"sub_tree";b:0;s:8:"position";i:18;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:4:"RAND";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:6:"154321";s:8:"sub_tree";b:0;s:8:"position";i:46;}}s:8:"position";i:41;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"<=";s:8:"sub_tree";b:0;s:8:"position";i:54;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"2E+5";s:8:"sub_tree";b:0;s:8:"position";i:57;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue30.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"foo.a";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:1:"a";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:3:"foo";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"foo";}}s:9:"base_expr";s:3:"foo";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"test foo";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:5:"RIGHT";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:7:"REPLACE";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"foo.bar";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:3:"foo";i:1;s:3:"bar";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:4:"'(0'";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"7";s:8:"sub_tree";b:0;}}}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"'a'";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/cases/parser/issue219.php:
--------------------------------------------------------------------------------
1 | parse( $sql, true );
29 | $parsed = $parser->parsed;
30 |
31 | $this->assertNotFalse( $parsed );
32 | $this->assertTrue( is_array( $parsed ) );
33 | $expected = getExpectedValue( dirname( __FILE__ ), 'issue219.serialized', false );
34 | $this->assertEquals( $expected, serialize( $parsed ) );
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue261.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"INSERT";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";}i:1;a:5:{s:9:"expr_type";s:5:"table";s:5:"table";s:10:"`wp_posts`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"wp_posts";}}s:5:"alias";b:0;s:9:"base_expr";s:10:"`wp_posts`";}i:2;a:3:{s:9:"expr_type";s:11:"column-list";s:9:"base_expr";s:38:"(`post_content`, `post_title`, `guid`)";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:14:"`post_content`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"post_content";}}}i:1;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:12:"`post_title`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"post_title";}}}i:2;a:3:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"`guid`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"guid";}}}}}}s:6:"VALUES";a:1:{i:0;a:4:{s:9:"expr_type";s:6:"record";s:9:"base_expr";s:148:"('{\n \"sydney::primary_color\": {\n \"value\": \"#cde053\",\n \"type\": \"theme_mod\",\n \"user_id\": 1\n }\n}', '', '')";s:4:"data";a:3:{i:0;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:138:"'{\n \"sydney::primary_color\": {\n \"value\": \"#cde053\",\n \"type\": \"theme_mod\",\n \"user_id\": 1\n }\n}'";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"''";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue94.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:10:"next_month";s:9:"base_expr";s:13:"AS next_month";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"next_month";}}}s:9:"base_expr";s:8:"DATE_ADD";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"NOW";s:8:"sub_tree";b:0;}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:" INTERVAL 1 MONTH";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"INTERVAL";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"MONTH";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}}
2 | a:1:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:10:"next_month";s:9:"base_expr";s:13:"AS next_month";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"next_month";}}}s:9:"base_expr";s:8:"DATE_ADD";s:8:"sub_tree";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:3:"NOW";s:8:"sub_tree";a:0:{}}i:1;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:17:" INTERVAL 1 MONTH";s:8:"sub_tree";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"INTERVAL";s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"MONTH";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/union2.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:9:"UNION ALL";a:2:{i:0;a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:8;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:23;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test a";s:8:"sub_tree";b:0;s:8:"position";i:18;}}}i:1;a:2:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:4:"colB";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colB";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:76;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:9:"base_expr";s:1:"b";s:8:"position";i:91;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test b";s:8:"sub_tree";b:0;s:8:"position";i:86;}}}}i:0;a:1:{s:5:"ORDER";a:1:{i:0;a:4:{s:9:"expr_type";s:3:"pos";s:9:"base_expr";s:1:"1";s:9:"direction";s:3:"ASC";s:8:"position";i:103;}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/tableoptions1.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"CREATE";a:4:{s:9:"expr_type";s:5:"table";s:10:"not-exists";b:0;s:9:"base_expr";s:5:"TABLE";s:8:"sub_tree";a:1:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:5:"TABLE";}}}s:5:"TABLE";a:5:{s:9:"base_expr";s:6:"hohoho";s:4:"name";s:6:"hohoho";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"hohoho";}}s:10:"create-def";a:3:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:3:" ()";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:0:"";s:8:"sub_tree";a:0:{}}}}s:7:"options";a:3:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:18:"AUTO_INCREMENT = 1";s:5:"delim";s:1:" ";s:8:"sub_tree";a:3:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:14:"AUTO_INCREMENT";}i:1;a:2:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";}i:2;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";}}}i:1;a:4:{s:9:"expr_type";s:13:"character-set";s:9:"base_expr";s:27:"DEFAULT CHARACTER SET _utf8";s:5:"delim";s:1:" ";s:8:"sub_tree";a:4:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:7:"DEFAULT";}i:1;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:9:"CHARACTER";}i:2;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:3:"SET";}i:3;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:5:"_utf8";}}}i:2;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:18:"PASSWORD 'test123'";s:5:"delim";s:1:" ";s:8:"sub_tree";a:2:{i:0;a:2:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"PASSWORD";}i:1;a:2:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:9:"'test123'";}}}}}}
--------------------------------------------------------------------------------
/tests/expected/parser/manual.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:1:{s:5:"delim";b:0;}}s:4:"FROM";a:2:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:10:"some_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"some_table";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:23;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"some_table a";s:8:"sub_tree";b:0;s:8:"position";i:12;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:13:"another_table";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:13:"another_table";}}s:5:"alias";a:5:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"position";i:49;}s:5:"hints";b:0;s:9:"join_type";s:4:"LEFT";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:1:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:11:"FIND_IN_SET";s:8:"sub_tree";a:2:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:4:"a.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:2:"id";}}s:8:"sub_tree";b:0;s:8:"position";i:69;}i:1;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"b.ids_collection";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"b";i:1;s:14:"ids_collection";}}s:8:"sub_tree";b:0;s:8:"position";i:75;}}s:8:"position";i:57;}}s:9:"base_expr";s:57:"another_table AS b ON FIND_IN_SET(a.id, b.ids_collection)";s:8:"sub_tree";b:0;s:8:"position";i:35;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/alias3.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:9:"base_expr";s:4:"colA";}s:9:"base_expr";s:35:"(select colA AS a from test t) colA";s:8:"sub_tree";a:1:{i:0;a:3:{s:9:"expr_type";s:8:"subquery";s:9:"base_expr";s:30:"(select colA AS a from test t)";s:8:"sub_tree";a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:4:"colA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"colA";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:4:"test";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:5:"alias";a:4:{s:2:"as";b:0;s:4:"name";s:1:"t";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"t";}}s:9:"base_expr";s:1:"t";}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"test t";s:8:"sub_tree";b:0;}}}}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"example";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:7:"example";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"as b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"example as b";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue62a.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:8:"function";s:5:"alias";b:0;s:9:"base_expr";s:4:"CAST";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:48:"(CONCAT(table1.col1,' ',time_start)) AS DATETIME";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:36:"(CONCAT(table1.col1,' ',time_start))";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:8:"function";s:9:"base_expr";s:6:"CONCAT";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:11:"table1.col1";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:6:"table1";i:1;s:4:"col1";}}s:8:"sub_tree";b:0;s:8:"position";i:20;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"' '";s:8:"sub_tree";b:0;s:8:"position";i:32;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"time_start";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:10:"time_start";}}s:8:"sub_tree";b:0;s:8:"position";i:36;}}s:8:"position";i:13;}}s:8:"position";i:12;}i:1;a:4:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:2:"AS";s:8:"sub_tree";b:0;s:8:"position";i:49;}i:2;a:4:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:8:"DATETIME";s:8:"sub_tree";b:0;s:8:"position";i:52;}}s:5:"alias";b:0;s:8:"position";i:12;}}s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"table1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"table1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"table1";s:8:"sub_tree";b:0;s:8:"position";i:67;}}}
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014, Justin Swanhart and André Rothe
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | * Neither the name of the {organization} nor the names of its
15 | contributors may be used to endorse or promote products derived from
16 | this software without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue80b.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:10:"expression";s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:9:"base_expr";s:6:"`test`";s:8:"position";i:11;}s:9:"base_expr";s:10:"x+3 `test`";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:7;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;s:8:"position";i:8;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;s:8:"position";i:9;}}s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:7:"`model`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"model";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:7:"`model`";s:8:"sub_tree";b:0;s:8:"position";i:23;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"`marker`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"marker";}}s:8:"sub_tree";b:0;s:8:"position";i:37;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:45;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:12:"'this_model'";s:8:"sub_tree";b:0;s:8:"position";i:46;}}s:5:"ORDER";a:1:{i:0;a:5:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:6:"`test`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:4:"test";}}s:9:"direction";s:3:"ASC";s:8:"position";i:68;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue135.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:7;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:9;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"z";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"z";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:11;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"tableA";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"tableA";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:6:"tableA";s:8:"sub_tree";b:0;s:8:"position";i:18;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"x";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"x";}}s:8:"sub_tree";b:0;s:8:"position";i:31;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;s:8:"position";i:32;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"5";s:8:"sub_tree";b:0;s:8:"position";i:33;}}s:5:"GROUP";a:1:{i:0;a:4:{s:9:"expr_type";s:18:"aggregate_function";s:9:"base_expr";s:3:"STD";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"y";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"y";}}s:8:"sub_tree";b:0;s:8:"position";i:48;}}s:8:"position";i:44;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/variables1.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"SELECT";a:4:{i:0;a:6:{s:9:"expr_type";s:13:"user_variable";s:5:"alias";b:0;s:9:"base_expr";s:3:"@t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:6:{s:9:"expr_type";s:13:"user_variable";s:5:"alias";b:0;s:9:"base_expr";s:5:"@`t2`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:2;a:6:{s:9:"expr_type";s:13:"user_variable";s:5:"alias";b:0;s:9:"base_expr";s:3:"@t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:3;a:5:{s:9:"expr_type";s:10:"expression";s:5:"alias";b:0;s:9:"base_expr";s:20:"@t4 := @t1+@'t2'+@t3";s:8:"sub_tree";a:7:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@t4";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t4";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:":=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:5:"@'t2'";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue102.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:8:"function";s:5:"alias";b:0;s:9:"base_expr";s:2:"IF";s:8:"sub_tree";a:3:{i:0;a:5:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:14:"f = 0 || f = 1";s:8:"sub_tree";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"f";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"f";}}s:8:"sub_tree";b:0;s:8:"position";i:10;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:12;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;s:8:"position";i:14;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:"||";s:8:"sub_tree";b:0;s:8:"position";i:16;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"f";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"f";}}s:8:"sub_tree";b:0;s:8:"position";i:19;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:21;}i:6;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:23;}}s:5:"alias";b:0;s:8:"position";i:10;}i:1;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"1";s:8:"sub_tree";b:0;s:8:"position";i:26;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"0";s:8:"sub_tree";b:0;s:8:"position";i:29;}}s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:3:"tbl";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:3:"tbl";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:3:"tbl";s:8:"sub_tree";b:0;s:8:"position";i:37;}}}
--------------------------------------------------------------------------------
/tests/cases/creator/issue125Test.php:
--------------------------------------------------------------------------------
1 | parse($sql, true);
24 |
25 | $this->assertEquals($sql, $creator->create($parser->parsed));
26 | }
27 |
28 | /**
29 | * @dataProvider indexHintsDataProvider
30 | * @param string $hintType
31 | */
32 | public function testIssue125JoinIndexHint($hintType)
33 | {
34 | $sql = sprintf(
35 | 'SELECT start_date FROM users %s INDEX FOR JOIN (vacation_idx, users_idx) INNER JOIN vacation ON start_date = end_date',
36 | $hintType
37 | );
38 |
39 | $parser = new PHPSQLParser();
40 | $creator = new PHPSQLCreator();
41 |
42 | $parser->parse($sql, true);
43 |
44 | $this->assertEquals($sql, $creator->create($parser->parsed));
45 | }
46 |
47 | public function indexHintsDataProvider()
48 | {
49 | return array(
50 | array('USE'),
51 | array('FORCE'),
52 | array('IGNORE')
53 | );
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/tests/cases/parser/issue365Test.php:
--------------------------------------------------------------------------------
1 | parsed;
25 | $create_def = $parsed['TABLE']['create-def'];
26 | $sub_tree = $create_def['sub_tree'][0]['sub_tree'][1];
27 |
28 | $this->assertEquals('utf8', $sub_tree['charset'], 'CHARACTER SET utf8');
29 | $expected_type = [
30 | 'expr_type' => 'data-type',
31 | 'base_expr' => 'CHARACTER',
32 | 'length' => 255
33 | ];
34 | $this->assertEquals($expected_type, $sub_tree['sub_tree'][0], 'CHARACTER data type definition');
35 | }
36 |
37 | public function testIssue365BonusCharset()
38 | {
39 | $sql = "CREATE TABLE IF NOT EXISTS example (`type` CHARACTER (255) CHARSET utf8)";
40 |
41 | $parser = new PHPSQLParser($sql);
42 | $parsed = $parser->parsed;
43 | $create_def = $parsed['TABLE']['create-def'];
44 | $sub_tree = $create_def['sub_tree'][0]['sub_tree'][1];
45 |
46 | $this->assertEquals('utf8', $sub_tree['charset'], 'CHARACTER SET utf8');
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/tests/expected/parser/issue97.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"webid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"webid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:2:"fl";s:9:"base_expr";s:5:"as fl";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"fl";}}}s:9:"base_expr";s:5:"floor";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"iz/2.";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"iz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"iz";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"/";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"2.";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"MDR1.Tweb512";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:7:"Tweb512";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"w";s:9:"base_expr";s:4:"as w";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"w";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:17:"MDR1.Tweb512 as w";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"w.webid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"w";i:1;s:5:"webid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue98.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:5:"webid";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:5:"webid";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:8:"function";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:4:"`fl`";s:9:"base_expr";s:7:"as `fl`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"fl";}}}s:9:"base_expr";s:5:"floor";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:10:"expression";s:9:"base_expr";s:5:"iz/2.";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"iz";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"iz";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"/";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:2:"2.";s:8:"sub_tree";b:0;}}s:5:"alias";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"MDR1.Tweb512";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:4:"MDR1";i:1;s:7:"Tweb512";}}s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:3:"`w`";s:9:"base_expr";s:6:"as `w`";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"w";}}}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:19:"MDR1.Tweb512 as `w`";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:3:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:7:"w.webid";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"w";i:1;s:5:"webid";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"<";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue84a.serialized:
--------------------------------------------------------------------------------
1 | a:4:{s:6:"INSERT";a:2:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}}s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:32;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:40;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:48;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"oldTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"oldTablename";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"oldTablename";s:8:"sub_tree";b:0;s:8:"position";i:60;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:8:"position";i:79;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;s:8:"position";i:86;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;s:8:"position";i:88;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue68.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:1:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:12:"a.`admin_id`";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:8:"admin_id";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:6:"admins";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"admins";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:1:"a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}s:9:"base_expr";s:1:"a";s:8:"position";i:32;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"admins a";s:8:"sub_tree";b:0;s:8:"position";i:25;}}s:5:"WHERE";a:7:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"a.admin_username";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:14:"admin_username";}}s:8:"sub_tree";b:0;s:8:"position";i:40;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:56;}i:2;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"?";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"?";}}s:8:"sub_tree";b:0;s:8:"position";i:57;}i:3;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;s:8:"position";i:59;}i:4;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:16:"a.admin_password";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:1:"a";i:1;s:14:"admin_password";}}s:8:"sub_tree";b:0;s:8:"position";i:63;}i:5;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:79;}i:6;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:1:"?";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"?";}}s:8:"sub_tree";b:0;s:8:"position";i:80;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/delete2.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"DELETE";a:2:{s:7:"options";b:0;s:6:"tables";a:2:{i:0;s:2:"t1";i:1;s:2:"t2";}}s:4:"FROM";a:3:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t2";s:8:"sub_tree";b:0;}i:2;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t3";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:7:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t1.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t2.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t2.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t3.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t3";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/delete3.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"DELETE";a:2:{s:7:"options";b:0;s:6:"tables";a:2:{i:0;s:2:"t1";i:1;s:2:"t2";}}s:4:"FROM";a:3:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t1";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t1";s:8:"sub_tree";b:0;}i:1;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t2";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t2";s:8:"sub_tree";b:0;}i:2;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:2:"t3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"t3";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:2:"t3";s:8:"sub_tree";b:0;}}s:5:"WHERE";a:7:{i:0;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t1.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t1";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t2.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:3;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:3:"AND";s:8:"sub_tree";b:0;}i:4;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t2.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t2";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}i:5;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:6;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:5:"t3.id";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"t3";i:1;s:2:"id";}}s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue79b.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:9:"(@aa:=id)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:":=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:7:"(@aa+3)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"tbl_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"tbl_name";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tbl_name";s:8:"sub_tree";b:0;}}s:6:"HAVING";a:3:{i:0;a:4:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"5";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/variables2.serialized:
--------------------------------------------------------------------------------
1 | a:3:{s:6:"SELECT";a:2:{i:0;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"a";s:9:"base_expr";s:4:"AS a";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"a";}}}s:9:"base_expr";s:9:"(@aa:=id)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:2:":=";s:8:"sub_tree";b:0;}i:2;a:4:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:2:"id";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"id";}}s:8:"sub_tree";b:0;}}s:5:"delim";s:1:",";}i:1;a:5:{s:9:"expr_type";s:18:"bracket_expression";s:5:"alias";a:4:{s:2:"as";b:1;s:4:"name";s:1:"b";s:9:"base_expr";s:4:"AS b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}}s:9:"base_expr";s:7:"(@aa+3)";s:8:"sub_tree";a:3:{i:0;a:4:{s:9:"expr_type";s:13:"user_variable";s:9:"base_expr";s:3:"@aa";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"aa";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"+";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"3";s:8:"sub_tree";b:0;}}s:5:"delim";b:0;}}s:4:"FROM";a:1:{i:0;a:10:{s:9:"expr_type";s:5:"table";s:5:"table";s:8:"tbl_name";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:8:"tbl_name";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:8:"tbl_name";s:8:"sub_tree";b:0;}}s:6:"HAVING";a:3:{i:0;a:4:{s:9:"expr_type";s:5:"alias";s:9:"base_expr";s:1:"b";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:1:"b";}}s:8:"sub_tree";b:0;}i:1;a:3:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;}i:2;a:3:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:1:"5";s:8:"sub_tree";b:0;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue_git183.serialized:
--------------------------------------------------------------------------------
1 | a:2:{s:6:"SELECT";a:1:{i:0;a:6:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:1:"*";s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:7;}}s:4:"FROM";a:2:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:21:"SC_CATALOG_DETAIL_REG";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:21:"SC_CATALOG_DETAIL_REG";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:2:"CD";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"CD";}}s:9:"base_expr";s:2:"CD";s:8:"position";i:36;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:24:"SC_CATALOG_DETAIL_REG CD";s:8:"sub_tree";b:0;s:8:"position";i:14;}i:1;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:18:"MASTER_ITEM_LOOKUP";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:18:"MASTER_ITEM_LOOKUP";}}s:5:"alias";a:5:{s:2:"as";b:0;s:4:"name";s:2:"IL";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:2:"IL";}}s:9:"base_expr";s:2:"IL";s:8:"position";i:69;}s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";s:2:"ON";s:10:"ref_clause";a:3:{i:0;a:4:{s:9:"expr_type";s:15:"custom_function";s:9:"base_expr";s:9:"to_number";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:8:"CD.STYLE";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"CD";i:1;s:5:"STYLE";}}s:8:"sub_tree";b:0;s:8:"position";i:86;}}s:8:"position";i:75;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:"=";s:8:"sub_tree";b:0;s:8:"position";i:97;}i:2;a:4:{s:9:"expr_type";s:15:"custom_function";s:9:"base_expr";s:9:"to_number";s:8:"sub_tree";a:1:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:10:"IL.SKU_NUM";s:9:"no_quotes";a:2:{s:5:"delim";s:1:".";s:5:"parts";a:2:{i:0;s:2:"IL";i:1;s:7:"SKU_NUM";}}s:8:"sub_tree";b:0;s:8:"position";i:110;}}s:8:"position";i:99;}}s:9:"base_expr";s:72:"MASTER_ITEM_LOOKUP IL
2 | ON to_number( CD.STYLE ) = to_number( IL.SKU_NUM )";s:8:"sub_tree";b:0;s:8:"position";i:50;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/issue84b.serialized:
--------------------------------------------------------------------------------
1 | a:1:{s:6:"INSERT";a:3:{i:0;a:3:{s:9:"expr_type";s:8:"reserved";s:9:"base_expr";s:4:"INTO";s:8:"position";i:7;}i:1;a:6:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"newTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"newTablename";}}s:5:"alias";b:0;s:9:"base_expr";s:12:"newTablename";s:8:"position";i:12;}i:2;a:4:{s:9:"expr_type";s:18:"bracket_expression";s:9:"base_expr";s:68:"(SELECT field1, field2, field3 FROM oldTablename where field1 > 100)";s:8:"sub_tree";a:1:{i:0;a:4:{s:9:"expr_type";s:5:"query";s:9:"base_expr";s:66:"SELECT field1, field2, field3 FROM oldTablename where field1 > 100";s:8:"sub_tree";a:3:{s:6:"SELECT";a:3:{i:0;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:33;}i:1;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field2";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field2";}}s:8:"sub_tree";b:0;s:5:"delim";s:1:",";s:8:"position";i:41;}i:2;a:7:{s:9:"expr_type";s:6:"colref";s:5:"alias";b:0;s:9:"base_expr";s:6:"field3";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field3";}}s:8:"sub_tree";b:0;s:5:"delim";b:0;s:8:"position";i:49;}}s:4:"FROM";a:1:{i:0;a:11:{s:9:"expr_type";s:5:"table";s:5:"table";s:12:"oldTablename";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:12:"oldTablename";}}s:5:"alias";b:0;s:5:"hints";b:0;s:9:"join_type";s:4:"JOIN";s:8:"ref_type";b:0;s:10:"ref_clause";b:0;s:9:"base_expr";s:12:"oldTablename";s:8:"sub_tree";b:0;s:8:"position";i:61;}}s:5:"WHERE";a:3:{i:0;a:5:{s:9:"expr_type";s:6:"colref";s:9:"base_expr";s:6:"field1";s:9:"no_quotes";a:2:{s:5:"delim";b:0;s:5:"parts";a:1:{i:0;s:6:"field1";}}s:8:"sub_tree";b:0;s:8:"position";i:80;}i:1;a:4:{s:9:"expr_type";s:8:"operator";s:9:"base_expr";s:1:">";s:8:"sub_tree";b:0;s:8:"position";i:87;}i:2;a:4:{s:9:"expr_type";s:5:"const";s:9:"base_expr";s:3:"100";s:8:"sub_tree";b:0;s:8:"position";i:89;}}}s:8:"position";i:26;}}s:8:"position";i:25;}}}
--------------------------------------------------------------------------------
/tests/expected/parser/union4.serialized:
--------------------------------------------------------------------------------
1 | YToyOntzOjU6IlVOSU9OIjthOjI6e2k6MDthOjI6e3M6NjoiU0VMRUNUIjthOjE6e2k6MDthOjc6e3M6OToiZXhwcl90eXBlIjtzOjY6ImNvbHJlZiI7czo1OiJhbGlhcyI7YjowO3M6OToiYmFzZV9leHByIjtzOjQ6ImNvbEEiO3M6OToibm9fcXVvdGVzIjthOjI6e3M6NToiZGVsaW0iO2I6MDtzOjU6InBhcnRzIjthOjE6e2k6MDtzOjQ6ImNvbEEiO319czo4OiJzdWJfdHJlZSI7YjowO3M6NToiZGVsaW0iO2I6MDtzOjg6InBvc2l0aW9uIjtpOjc7fX1zOjQ6IkZST00iO2E6MTp7aTowO2E6MTE6e3M6OToiZXhwcl90eXBlIjtzOjU6InRhYmxlIjtzOjU6InRhYmxlIjtzOjQ6InRlc3QiO3M6OToibm9fcXVvdGVzIjthOjI6e3M6NToiZGVsaW0iO2I6MDtzOjU6InBhcnRzIjthOjE6e2k6MDtzOjQ6InRlc3QiO319czo1OiJhbGlhcyI7YTo1OntzOjI6ImFzIjtiOjA7czo0OiJuYW1lIjtzOjE6ImEiO3M6OToibm9fcXVvdGVzIjthOjI6e3M6NToiZGVsaW0iO2I6MDtzOjU6InBhcnRzIjthOjE6e2k6MDtzOjE6ImEiO319czo5OiJiYXNlX2V4cHIiO3M6MToiYSI7czo4OiJwb3NpdGlvbiI7aToyMjt9czo1OiJoaW50cyI7YjowO3M6OToiam9pbl90eXBlIjtzOjQ6IkpPSU4iO3M6ODoicmVmX3R5cGUiO2I6MDtzOjEwOiJyZWZfY2xhdXNlIjtiOjA7czo5OiJiYXNlX2V4cHIiO3M6NjoidGVzdCBhIjtzOjg6InN1Yl90cmVlIjtiOjA7czo4OiJwb3NpdGlvbiI7aToxNzt9fX1pOjE7YToyOntzOjY6IlNFTEVDVCI7YToxOntpOjA7YTo3OntzOjk6ImV4cHJfdHlwZSI7czo2OiJjb2xyZWYiO3M6NToiYWxpYXMiO2I6MDtzOjk6ImJhc2VfZXhwciI7czo0OiJjb2xCIjtzOjk6Im5vX3F1b3RlcyI7YToyOntzOjU6ImRlbGltIjtiOjA7czo1OiJwYXJ0cyI7YToxOntpOjA7czo0OiJjb2xCIjt9fXM6ODoic3ViX3RyZWUiO2I6MDtzOjU6ImRlbGltIjtiOjA7czo4OiJwb3NpdGlvbiI7aTo1Mzt9fXM6NDoiRlJPTSI7YToxOntpOjA7YToxMTp7czo5OiJleHByX3R5cGUiO3M6NToidGFibGUiO3M6NToidGFibGUiO3M6NDoidGVzdCI7czo5OiJub19xdW90ZXMiO2E6Mjp7czo1OiJkZWxpbSI7YjowO3M6NToicGFydHMiO2E6MTp7aTowO3M6NDoidGVzdCI7fX1zOjU6ImFsaWFzIjthOjU6e3M6MjoiYXMiO2I6MTtzOjQ6Im5hbWUiO3M6MToiYiI7czo5OiJiYXNlX2V4cHIiO3M6NDoiYXMgYiI7czo5OiJub19xdW90ZXMiO2E6Mjp7czo1OiJkZWxpbSI7YjowO3M6NToicGFydHMiO2E6MTp7aTowO3M6MToiYiI7fX1zOjg6InBvc2l0aW9uIjtpOjc3O31zOjU6ImhpbnRzIjtiOjA7czo5OiJqb2luX3R5cGUiO3M6NDoiSk9JTiI7czo4OiJyZWZfdHlwZSI7YjowO3M6MTA6InJlZl9jbGF1c2UiO2I6MDtzOjk6ImJhc2VfZXhwciI7czoxODoidGVzdCAKICAgICAgICBhcyBiIjtzOjg6InN1Yl90cmVlIjtiOjA7czo4OiJwb3NpdGlvbiI7aTo2Mzt9fX19aTowO2E6MTp7czo1OiJPUkRFUiI7YToxOntpOjA7YTo0OntzOjk6ImV4cHJfdHlwZSI7czozOiJwb3MiO3M6OToiYmFzZV9leHByIjtzOjE6IjEiO3M6OToiZGlyZWN0aW9uIjtzOjM6IkFTQyI7czo4OiJwb3NpdGlvbiI7aTo5MTt9fX19
--------------------------------------------------------------------------------
/src/PHPSQLParser/processors/DuplicateProcessor.php:
--------------------------------------------------------------------------------
1 |
9 | *
10 | * All rights reserved.
11 | *
12 | * Redistribution and use in source and binary forms, with or without modification,
13 | * are permitted provided that the following conditions are met:
14 | *
15 | * * Redistributions of source code must retain the above copyright notice,
16 | * this list of conditions and the following disclaimer.
17 | * * Redistributions in binary form must reproduce the above copyright notice,
18 | * this list of conditions and the following disclaimer in the documentation
19 | * and/or other materials provided with the distribution.
20 | *
21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
22 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24 | * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26 | * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
30 | * DAMAGE.
31 | */
32 |
33 | namespace PHPSQLParser\processors;
34 |
35 | /**
36 | *
37 | * This class processes the DUPLICATE statements.
38 | *
39 | * @author arothe
40 | *
41 | */
42 | class DuplicateProcessor extends SetProcessor {
43 |
44 | public function process($tokens, $isUpdate = false) {
45 | return parent::process($tokens, $isUpdate);
46 | }
47 |
48 | }
49 | ?>
50 |
--------------------------------------------------------------------------------
/src/PHPSQLParser/processors/DescProcessor.php:
--------------------------------------------------------------------------------
1 |
9 | *
10 | * All rights reserved.
11 | *
12 | * Redistribution and use in source and binary forms, with or without modification,
13 | * are permitted provided that the following conditions are met:
14 | *
15 | * * Redistributions of source code must retain the above copyright notice,
16 | * this list of conditions and the following disclaimer.
17 | * * Redistributions in binary form must reproduce the above copyright notice,
18 | * this list of conditions and the following disclaimer in the documentation
19 | * and/or other materials provided with the distribution.
20 | *
21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
22 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24 | * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26 | * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
27 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
30 | * DAMAGE.
31 | */
32 |
33 | namespace PHPSQLParser\processors;
34 |
35 | /**
36 | *
37 | * This class processes the DESC statement.
38 | *
39 | * @author arothe
40 | *
41 | */
42 | class DescProcessor extends ExplainProcessor {
43 |
44 | protected function isStatement($keys, $needle = "DESC") {
45 | return parent::isStatement($keys, $needle);
46 | }
47 | }
48 | ?>
49 |
--------------------------------------------------------------------------------