160 lines
5.7 KiB
PHP
160 lines
5.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* you cannot execute this script within Eclipse PHP
|
|
* because of the limited output buffer. Try to run it
|
|
* directly within a shell.
|
|
*/
|
|
|
|
namespace PHPSQLParser;
|
|
require_once dirname(__FILE__) . '/../vendor/autoload.php';
|
|
|
|
$sql = 'SELECT 1';
|
|
echo $sql . "\n";
|
|
$start = microtime(true);
|
|
$parser = new PHPSQLParser($sql, true);
|
|
$stop = microtime(true);
|
|
print_r($parser->parsed);
|
|
echo "parse time simplest query:" . ($stop - $start) . "\n";
|
|
|
|
/*You can use the constuctor for parsing. The parsed statement is stored at the ->parsed property.*/
|
|
$sql = 'REPLACE INTO table (a,b,c) VALUES (1,2,3)';
|
|
echo $sql . "\n";
|
|
$start = microtime(true);
|
|
$parser = new PHPSQLParser($sql);
|
|
$stop = microtime(true);
|
|
print_r($parser->parsed);
|
|
echo "parse time very somewhat simple statement:" . ($stop - $start) . "\n";
|
|
|
|
/* You can use the ->parse() method too. The parsed structure is returned, and
|
|
also available in the ->parsed property. */
|
|
$sql = 'SELECT a,b,c
|
|
from some_table an_alias
|
|
where d > 5;';
|
|
echo $sql . "\n";
|
|
print_r($parser->parse($sql, true));
|
|
|
|
$sql = 'SELECT a,b,c
|
|
from some_table an_alias
|
|
join `another` as `another table` using(id)
|
|
where d > 5;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql, true);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'SELECT a,b,c
|
|
from some_table an_alias
|
|
join (select d, max(f) max_f
|
|
from some_table
|
|
where id = 37
|
|
group by d) `subqry` on subqry.d = an_alias.d
|
|
where d > 5;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = "(select `c2`, `c```, \"quoted \'string\' \\\" with `embedded`\\\"\\\" quotes\" as `an``alias` from table table)
|
|
UNION ALL (select `c2`, `c```, \"quoted \'string\' \\\" with `embedded`\\\"\\\" quotes\" as `an``alias` from table table)";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = "(select `c2`, `c```, \"quoted \'string\' \\\" with `embedded`\\\"\\\" quotes\" as `an``alias` from table table)
|
|
UNION (select `c2`, `c```, \"quoted \'string\' \\\" with `embedded`\\\"\\\" quotes\" as `an``alias` from table table)";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = "select `c2`, `c```, \"quoted \'string\' \\\" with `embedded`\\\"\\\" quotes\" as `an``alias` from table table";
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = "alter table xyz add key my_key(a,b,c), drop primay key";
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'INSERT INTO table (a,b,c) VALUES (1,2,3)
|
|
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'UPDATE t1 SET col1 = col1 + 1, col2 = col1;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
|
|
WHERE t1.id=t2.id AND t2.id=t3.id;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'delete low_priority partitioned_table.* from partitioned_table where partition_id = 1;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = "UPDATE t1 SET col1 = col1 + 1, col2 = col1;";
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'insert into partitioned_table (partition_id, some_col) values (1,2);';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'delete from partitioned_table where partition_id = 1;';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'SELECT 1';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'SHOW TABLE STATUS';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'SHOW TABLES';
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'select DISTINCT 1+2 c1, 1+ 2 as
|
|
`c2`, sum(c2),"Status" = CASE
|
|
WHEN quantity > 0 THEN \'in stock\'
|
|
ELSE \'out of stock\'
|
|
END
|
|
, t4.c1, (select c1+c2 from t1 inner_t1 limit 1) as subquery into @a1, @a2, @a3 from t1 the_t1 left outer join t2 using(c1,c2) join t3 as tX on tX.c1 = the_t1.c1 natural join t4 t4_x using(cX) where c1 = 1 and c2 in (1,2,3, "apple") and exists ( select 1 from some_other_table another_table where x > 1) and ("zebra" = "orange" or 1 = 1) group by 1, 2 having sum(c2) > 1 ORDER BY 2, c1 DESC LIMIT 0, 10 into outfile "/xyz" FOR UPDATE LOCK IN SHARE MODE';
|
|
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = "(select 1, 1, 1, 1 from dual dual1) union all (select 2, 2, 2, 2 from dual dual2) union all (select c1,c2,c3,sum(c4) from (select c1,c2,c3,c4 from a_table where c2 = 1) subquery group by 1,2,3) limit 10";
|
|
echo $sql . "\n";
|
|
$parser = new PHPSQLParser($sql);
|
|
print_r($parser->parsed);
|
|
|
|
$sql = 'select DISTINCT 1+2 c1, 1+ 2 as
|
|
`c2`, sum(c2),"Status" = CASE
|
|
WHEN quantity > 0 THEN "in stock"
|
|
ELSE "out of stock"
|
|
END
|
|
, t4.c1, (select c1+c2 from t1 table limit 1) as subquery into @a1, @a2, @a3 from `table` the_t1 left outer join t2 using(c1,c2) join
|
|
(select a, b, length(concat(a,b,c)) from ( select 1 a,2 b,3 c from some_Table ) table ) subquery_in_from join t3 as tX on tX.c1 = the_t1.c1 natural join t4 t4_x using(cX) where c1 = 1 and c2 in (1,2,3, "apple") and exists ( select 1 from some_other_table another_table where x > 1) and ("zebra" = "orange" or 1 = 1) group by 1, 2 having sum(c2) > 1 ORDER BY 2, c1 DESC LIMIT 0, 10 into outfile "/xyz" FOR UPDATE LOCK IN SHARE MODE
|
|
UNION ALL
|
|
SELECT NULL,NULL,NULL,NULL,NULL FROM DUAL LIMIT 1';
|
|
|
|
$start = microtime(true);
|
|
$parser = new PHPSQLParser($sql);
|
|
$stop = microtime(true);
|
|
echo "Parse time highly complex statement: " . ($stop - $start) . "\n";
|
|
|
|
?>
|