diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 00000000..3d4c9a0c --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +{"version":1,"defects":{"PHPSQLParser\\Test\\Creator\\withTest::testWithStatement":3,"PHPSQLParser\\Test\\Creator\\withTest::testComplexWithStatement":3},"times":{"PHPSQLParser\\Test\\Creator\\AlterTest::testAlterChangeColumn":0.02,"PHPSQLParser\\Test\\Creator\\AlterTest::testAlterAddColumn":0,"PHPSQLParser\\Test\\Creator\\ascTest::testAsc":0.016,"PHPSQLParser\\Test\\Creator\\count_distinctTest::testCount_distinct":0.001,"PHPSQLParser\\Test\\Creator\\deleteTest::testDelete":0.002,"PHPSQLParser\\Test\\Creator\\functionTest::testFunction":0.001,"PHPSQLParser\\Test\\Creator\\inlistTest::testInlist":0.001,"PHPSQLParser\\Test\\Creator\\inlistTest::testInSubtree":0.001,"PHPSQLParser\\Test\\Creator\\insertTest::testInsert":0.004,"PHPSQLParser\\Test\\Creator\\issue100Test::testIssue100":0,"PHPSQLParser\\Test\\Creator\\issue101Test::testIssue101":0,"PHPSQLParser\\Test\\Creator\\issue102Test::testIssue102":0.001,"PHPSQLParser\\Test\\Creator\\issue104Test::testIssue104":0.001,"PHPSQLParser\\Test\\Creator\\issue105Test::testIssue105":0.002,"PHPSQLParser\\Test\\Creator\\issue106Test::testIssue106":0.004,"PHPSQLParser\\Test\\Creator\\issue110Test::testIssue110":0,"PHPSQLParser\\Test\\Creator\\issue112Test::testIssue112":0.002,"PHPSQLParser\\Test\\Creator\\issue117Test::testIssue117":0.001,"PHPSQLParser\\Test\\Creator\\issue118Test::testIssue118":0.001,"PHPSQLParser\\Test\\Creator\\issue121Test::testIssue121":0.007,"PHPSQLParser\\Test\\Creator\\issue123Test::testIssue123":0.001,"PHPSQLParser\\Test\\Creator\\issue124Test::testIssue124":0.001,"PHPSQLParser\\Test\\Creator\\issue125Test::testIssue125FromIndexHint with data set #0":0.001,"PHPSQLParser\\Test\\Creator\\issue125Test::testIssue125FromIndexHint with data set #1":0.001,"PHPSQLParser\\Test\\Creator\\issue125Test::testIssue125FromIndexHint with data set #2":0,"PHPSQLParser\\Test\\Creator\\issue125Test::testIssue125JoinIndexHint with data set #0":0,"PHPSQLParser\\Test\\Creator\\issue125Test::testIssue125JoinIndexHint with data set #1":0,"PHPSQLParser\\Test\\Creator\\issue125Test::testIssue125JoinIndexHint with data set #2":0,"PHPSQLParser\\Test\\Creator\\issue126Test::testIssue126":0,"PHPSQLParser\\Test\\Creator\\issue127Test::testIssue127":0.002,"PHPSQLParser\\Test\\Creator\\issue129Test::testIssue129":0.002,"PHPSQLParser\\Test\\Creator\\issue130Test::testIssue130":0,"PHPSQLParser\\Test\\Creator\\issue131Test::testIssue131":0.003,"PHPSQLParser\\Test\\Creator\\issue132Test::testIssue132":0,"PHPSQLParser\\Test\\Creator\\issue134Test::testIssue134":0,"PHPSQLParser\\Test\\Creator\\issue141Test::testIssue141":0,"PHPSQLParser\\Test\\Creator\\Issue144Test::testIssue144":0.001,"PHPSQLParser\\Test\\Creator\\Issue147Test::testIssue147":0,"PHPSQLParser\\Test\\Creator\\Issue22Test::testIssue22_key":0.002,"PHPSQLParser\\Test\\Creator\\Issue22Test::testIssue22_primaryKey":0,"PHPSQLParser\\Test\\Creator\\Issue22Test::testIssue22_index":0,"PHPSQLParser\\Test\\Creator\\Issue22Test::testIssue22_foreignKey":0.001,"PHPSQLParser\\Test\\Creator\\Issue22Test::testIssue22_foreignKeyReferences":0.001,"PHPSQLParser\\Test\\Creator\\Issue242Test::testOnDuplicateKey":0.001,"PHPSQLParser\\Test\\Creator\\Issue242Test::testOnDuplicateKeyAbsValues":0,"PHPSQLParser\\Test\\Creator\\Issue242Test::testNormalInsert":0,"PHPSQLParser\\Test\\Creator\\Issue242Test::testNormalInsertMultipleValues":0.001,"PHPSQLParser\\Test\\Creator\\Issue248Test::testIssue248":0.001,"PHPSQLParser\\Test\\Creator\\Issue252Test::testIssue252_Bool":0,"PHPSQLParser\\Test\\Creator\\Issue254Test::testIssue254_unsinged_zerofill":0,"PHPSQLParser\\Test\\Creator\\Issue256Test::testIssue256_create_table_charset_collate":0,"PHPSQLParser\\Test\\Creator\\Issue256Test::testIssue256_create_table_just_collate":0,"PHPSQLParser\\Test\\Creator\\Issue265Test::testIssue265":0.001,"PHPSQLParser\\Test\\Creator\\Issue268Test::testIssue268":0.001,"PHPSQLParser\\Test\\Creator\\issue270Test::testIssue319":0,"PHPSQLParser\\Test\\Creator\\issue312Test::testIssue312 with data set #0":0,"PHPSQLParser\\Test\\Creator\\issue312Test::testIssue312 with data set #1":0,"PHPSQLParser\\Test\\Creator\\issue312Test::testIssue312 with data set #2":0.001,"PHPSQLParser\\Test\\Creator\\issue316Test::testIssue299":0,"PHPSQLParser\\Test\\Creator\\issue319Test::testIssue319":0,"PHPSQLParser\\Test\\Creator\\issue33Test::testIssue33":0.006,"PHPSQLParser\\Test\\Creator\\issue342Test::testIssue342":0,"PHPSQLParser\\Test\\Creator\\issue361Test::testIssue361":0.001,"PHPSQLParser\\Test\\Creator\\issue57Test::testIssue57":0.001,"PHPSQLParser\\Test\\Creator\\issue58Test::testIssue58":0.001,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62a":0.001,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62b":0.002,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62c":0.001,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62d":0.001,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62e":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62f":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62g":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62h":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62i":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62j":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62k":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62l":0.001,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62m":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62n":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62o":0.001,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62p":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62q":0,"PHPSQLParser\\Test\\Creator\\issue62Test::testIssue62r":0,"PHPSQLParser\\Test\\Creator\\issue63Test::testIssue63a":0,"PHPSQLParser\\Test\\Creator\\issue63Test::testIssue63b":0.001,"PHPSQLParser\\Test\\Creator\\issue63Test::testIssue63c":0,"PHPSQLParser\\Test\\Creator\\issue66Test::testIssue66":0,"PHPSQLParser\\Test\\Creator\\issue76Test::testIssue76":0.001,"PHPSQLParser\\Test\\Creator\\issue78Test::testIssue78":0.003,"PHPSQLParser\\Test\\Creator\\issue79Test::testIssue79":0,"PHPSQLParser\\Test\\Creator\\issue81Test::testIssue81":0,"PHPSQLParser\\Test\\Creator\\issue83Test::testIssue83":0.002,"PHPSQLParser\\Test\\Creator\\issue85Test::testIssue85":0.001,"PHPSQLParser\\Test\\Creator\\issue86Test::testIssue86":0,"PHPSQLParser\\Test\\Creator\\issue87Test::testIssue87":0.001,"PHPSQLParser\\Test\\Creator\\issue88Test::testIssue88":0,"PHPSQLParser\\Test\\Creator\\issue89Test::testIssue89":0.002,"PHPSQLParser\\Test\\Creator\\issue92Test::testIssue92":0,"PHPSQLParser\\Test\\Creator\\issue94Test::testIssue94":0,"PHPSQLParser\\Test\\Creator\\issue98Test::testIssue98":0,"PHPSQLParser\\Test\\Creator\\Issue_Git10Test::testIssueGit10":0.001,"PHPSQLParser\\Test\\Creator\\IssueGit181TestTest::testIssueGit181":0.001,"PHPSQLParser\\Test\\Creator\\IssueGit185TestTest::testIssueGit185":0.001,"PHPSQLParser\\Test\\Creator\\joinTest::testJoin":0.001,"PHPSQLParser\\Test\\Creator\\leftTest::testLeft":0.001,"PHPSQLParser\\Test\\Creator\\leftTest::testLeftIn":0,"PHPSQLParser\\Test\\Creator\\magnusTest::testMagnus":0.001,"PHPSQLParser\\Test\\Parser\\OrderByPositionTest::testOrderByPosition":0.001,"PHPSQLParser\\Test\\Creator\\tableexprTest::testTableexpr":0.001,"PHPSQLParser\\Test\\Creator\\UnaryMinusTest::testUnaryMinus":0,"PHPSQLParser\\Test\\Creator\\UnionTest::testUnion1":0.001,"PHPSQLParser\\Test\\Creator\\UnionTest::testUnion2":0.001,"PHPSQLParser\\Test\\Creator\\UnionTest::testUnion3":0.001,"PHPSQLParser\\Test\\Creator\\updateTest::testUpdate":0,"PHPSQLParser\\Test\\Creator\\whereTest::testWhere":0,"PHPSQLParser\\Test\\Parser\\AliasesTest::testAlias1":0,"PHPSQLParser\\Test\\Parser\\AliasesTest::testAlias2":0,"PHPSQLParser\\Test\\Parser\\AliasesTest::testAlias3":0,"PHPSQLParser\\Test\\Parser\\AliasesTest::testAlias4":0.001,"PHPSQLParser\\Test\\Parser\\AllColumnsTest::testAllColumns1":0.001,"PHPSQLParser\\Test\\Parser\\AllColumnsTest::testAllColumns2":0,"PHPSQLParser\\Test\\Parser\\AllColumnsTest::testAllColumns3":0,"PHPSQLParser\\Test\\Parser\\AllColumnsTest::testAllColumns4":0.001,"PHPSQLParser\\Test\\Parser\\AllColumnsTest::testAllColumns5":0,"PHPSQLParser\\Test\\Parser\\backtickTest::testBacktick":0.001,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments1":0,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments2":0,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments3":0,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments4":0,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments5":0.001,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments6":0,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments7":0.001,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments8":0,"PHPSQLParser\\Test\\Parser\\CommentsTest::testComments9":0,"PHPSQLParser\\Test\\Parser\\customfunctionTest::testCustomfunction":0,"PHPSQLParser\\Test\\Parser\\deleteTest::testDelete":0.001,"PHPSQLParser\\Test\\Parser\\dropTest::testDrop":0,"PHPSQLParser\\Test\\Parser\\FromTest::testFrom1":0,"PHPSQLParser\\Test\\Parser\\FromTest::testFrom2":0.003,"PHPSQLParser\\Test\\Parser\\GregoryTest::testGregory":0,"PHPSQLParser\\Test\\Parser\\gtltopTest::testGtltop":0.001,"PHPSQLParser\\Test\\Parser\\inlistTest::testInlist":0.001,"PHPSQLParser\\Test\\Parser\\insertTest::testInsert":0.002,"PHPSQLParser\\Test\\Parser\\issue102Test::testIssue102":0.001,"PHPSQLParser\\Test\\Parser\\issue107Test::testIssue107":0,"PHPSQLParser\\Test\\Parser\\issue108Test::testIssue108":0.001,"PHPSQLParser\\Test\\Parser\\Issue117Test::testIssue117":0.001,"PHPSQLParser\\Test\\Parser\\issue11Test::testIssue11":0.001,"PHPSQLParser\\Test\\Parser\\Issue120Test::testIssue120":0,"PHPSQLParser\\Test\\Parser\\issue122Test::testIssue122":0,"PHPSQLParser\\Test\\Parser\\issue125Test::testIssue125":0,"PHPSQLParser\\Test\\Parser\\issue12Test::testIssue12":0.001,"PHPSQLParser\\Test\\Parser\\issue131Test::testIssue131":0.001,"PHPSQLParser\\Test\\Parser\\issue133Test::testIssue133":0.001,"PHPSQLParser\\Test\\Parser\\issue135Test::testIssue135":0.001,"PHPSQLParser\\Test\\Parser\\Issue136Test::testIssue136a":0.001,"PHPSQLParser\\Test\\Parser\\Issue136Test::testIssue136b":0.001,"PHPSQLParser\\Test\\Parser\\issue137Test::testIssue137":0,"PHPSQLParser\\Test\\Parser\\Issue138Test::testIssue138":0.001,"PHPSQLParser\\Test\\Parser\\issue139Test::testIssue139":0.001,"PHPSQLParser\\Test\\Parser\\Issue148Test::testIssue148":0,"PHPSQLParser\\Test\\Parser\\Issue149Test::testIssue149":0.001,"PHPSQLParser\\Test\\Parser\\issue15Test::testIssue15":0.001,"PHPSQLParser\\Test\\Parser\\issue21Test::testIssue21":0.001,"PHPSQLParser\\Test\\Parser\\issue233Test::testIssue233":0.001,"PHPSQLParser\\Test\\Parser\\issue248Test::testIssue248":0,"PHPSQLParser\\Test\\Parser\\issue25Test::testIssue25":0.001,"PHPSQLParser\\Test\\Parser\\issue261Test::testIssue261":0.001,"PHPSQLParser\\Test\\Parser\\issue277Test::testIssue277":0,"PHPSQLParser\\Test\\Parser\\issue299Test::testIssue299":0,"PHPSQLParser\\Test\\Parser\\issue30Test::testIssue30":0,"PHPSQLParser\\Test\\Parser\\Issue31Test::testIssue31":0.005,"PHPSQLParser\\Test\\Parser\\issue320Test::test_no_warning_is_issued_when_help_table_is_used":0.002,"PHPSQLParser\\Test\\Parser\\issue322Test::testIssue322":0.001,"PHPSQLParser\\Test\\Parser\\issue32Test::testIssue32":0.001,"PHPSQLParser\\Test\\Parser\\issue335Test::multiplication_operator_is_correctly_parsed_before_function_expression":0,"PHPSQLParser\\Test\\Parser\\issue335Test::multiplication_operator_is_correctly_parsed_after_function_expression":0.001,"PHPSQLParser\\Test\\Parser\\issue335Test::star_is_parsed_as_colref":0.001,"parser\\issue338Test::testIssue338":0.003,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33a":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33b":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33c":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33d":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33e":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33f":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33g":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33h":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33i":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33j":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33k":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33l":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33m":0.002,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33n":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33o":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33p":0.001,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33q":0,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33r":0.005,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33s":0.003,"PHPSQLParser\\Test\\Parser\\Issue33Test::testIssue33t":0.005,"PHPSQLParser\\Test\\Parser\\issue34Test::testIssue34":0.001,"PHPSQLParser\\Test\\Parser\\issue355Test::testIssue322":0.001,"PHPSQLParser\\Test\\Creator\\Issue365Test::testIssue365":0,"PHPSQLParser\\Test\\Creator\\Issue365Test::testIssue365BonusCharset":0,"PHPSQLParser\\Test\\Parser\\issue36Test::testIssue36":0.001,"PHPSQLParser\\Test\\Parser\\issue37Test::testIssue37":0,"PHPSQLParser\\Test\\Parser\\issue38Test::testIssue38":0.001,"PHPSQLParser\\Test\\Parser\\issue39Test::testIssue39":0.001,"PHPSQLParser\\Test\\Parser\\issue40Test::testIssue40":0.001,"PHPSQLParser\\Test\\Parser\\issue41Test::testIssue41":0,"PHPSQLParser\\Test\\Parser\\issue42Test::testIssue42":0.001,"PHPSQLParser\\Test\\Parser\\issue43Test::testIssue43":0.001,"PHPSQLParser\\Test\\Parser\\Issue44Test::testIssue44":0.004,"PHPSQLParser\\Test\\Parser\\issue45Test::testIssue45":0.001,"PHPSQLParser\\Test\\Parser\\issue46Test::testIssue46":0,"PHPSQLParser\\Test\\Parser\\issue50Test::testIssue50":0,"PHPSQLParser\\Test\\Parser\\issue51Test::testIssue51":0,"PHPSQLParser\\Test\\Parser\\issue52Test::testIssue52":0,"PHPSQLParser\\Test\\Parser\\issue53Test::testIssue53":0.001,"PHPSQLParser\\Test\\Parser\\issue54Test::testIssue54":0.001,"PHPSQLParser\\Test\\Parser\\issue55Test::testIssue55":0.002,"PHPSQLParser\\Test\\Parser\\issue56Test::testIssue56":0.002,"PHPSQLParser\\Test\\Parser\\issue60Test::testIssue60":0,"PHPSQLParser\\Test\\Parser\\issue61Test::testIssue61":0.001,"PHPSQLParser\\Test\\Parser\\issue62Test::testIssue62":0.001,"PHPSQLParser\\Test\\Parser\\issue65Test::testIssue65":0.001,"PHPSQLParser\\Test\\Parser\\issue67Test::testIssue67":0.001,"PHPSQLParser\\Test\\Parser\\issue68Test::testIssue68":0,"PHPSQLParser\\Test\\Parser\\issue69Test::testIssue69":0,"PHPSQLParser\\Test\\Parser\\issue70Test::testIssue70":0,"PHPSQLParser\\Test\\Parser\\issue71Test::testIssue71":0.001,"PHPSQLParser\\Test\\Parser\\issue72Test::testIssue72":0,"PHPSQLParser\\Test\\Parser\\issue74Test::testIssue74":0.002,"PHPSQLParser\\Test\\Parser\\issue78Test::testIssue78":0.003,"PHPSQLParser\\Test\\Parser\\issue79Test::testIssue79":0.001,"PHPSQLParser\\Test\\Parser\\issue80Test::testIssue80":0.001,"PHPSQLParser\\Test\\Parser\\issue82Test::testIssue82":0.001,"PHPSQLParser\\Test\\Parser\\issue84Test::testIssue84":0.001,"PHPSQLParser\\Test\\Parser\\issue87Test::testIssue87":0.001,"PHPSQLParser\\Test\\Parser\\issue90Test::testIssue90":0.001,"PHPSQLParser\\Test\\Parser\\issue91Test::testIssue91":0,"PHPSQLParser\\Test\\Parser\\issue93Test::testIssue93":0,"PHPSQLParser\\Test\\Parser\\issue94Test::testIssue94":0.001,"PHPSQLParser\\Test\\Parser\\issue95Test::testIssue95":0.001,"PHPSQLParser\\Test\\Parser\\issue97Test::testIssue97":0.001,"PHPSQLParser\\Test\\Parser\\issue98Test::testIssue98":0.001,"PHPSQLParser\\Test\\Parser\\IssueGit11TestTest::testIssueGit11":0.001,"PHPSQLParser\\Test\\Parser\\IssueGit183TestTest::testIssueGit183":0.001,"PHPSQLParser\\Test\\Parser\\IssueGit24TestTest::testIssueGit24":0,"PHPSQLParser\\Test\\Parser\\LeftTest::testLeft1":0.001,"PHPSQLParser\\Test\\Parser\\LeftTest::testLeft2":0.001,"PHPSQLParser\\Test\\Parser\\manualTest::testManual":0.001,"PHPSQLParser\\Test\\Parser\\mixedQuotesTest::testMixedQuotes":0.001,"PHPSQLParser\\Test\\Parser\\NestedTest::testNested1":0.001,"PHPSQLParser\\Test\\Parser\\NestedTest::testNested2":0.001,"PHPSQLParser\\Test\\Parser\\positionsTest::testPositions":0.001,"PHPSQLParser\\Test\\Parser\\selectTest::testSelect":0.003,"PHPSQLParser\\Test\\Parser\\showTest::testShow":0.002,"PHPSQLParser\\Test\\Parser\\subselectTest::testSubselect":0.002,"PHPSQLParser\\Test\\Parser\\TableOptionsTest::testTableOptions1":0.001,"PHPSQLParser\\Test\\Parser\\TableOptionsTest::testTableOptions2":0,"PHPSQLParser\\Test\\Parser\\UnionTest::testUnion1":0.001,"PHPSQLParser\\Test\\Parser\\UnionTest::testUnion2":0.001,"PHPSQLParser\\Test\\Parser\\UnionTest::testUnion3":0.001,"PHPSQLParser\\Test\\Parser\\UnionTest::testUnion4":0.001,"PHPSQLParser\\Test\\Parser\\unionWithParenthesisTest::testZero":0,"PHPSQLParser\\Test\\Parser\\updateTest::testUpdate":0.001,"PHPSQLParser\\Test\\Parser\\variablesTest::testVariables":0.001,"PHPSQLParser\\Test\\Parser\\zeroTest::testZero":0,"PHPSQLParser\\Test\\Creator\\withTest::testWithStatement":0.002,"PHPSQLParser\\Test\\Creator\\withTest::testComplexWithStatement":0.002}} \ No newline at end of file diff --git a/src/PHPSQLParser/PHPSQLCreator.php b/src/PHPSQLParser/PHPSQLCreator.php index e10080a2..3b3cd830 100644 --- a/src/PHPSQLParser/PHPSQLCreator.php +++ b/src/PHPSQLParser/PHPSQLCreator.php @@ -1,4 +1,5 @@ create($parsed); } } - public function create($parsed) { + public function create($parsed) + { $k = key($parsed); switch ($k) { - case 'UNION': - $builder = new UnionStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'UNION ALL': - $builder = new UnionAllStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'SELECT': - $builder = new SelectStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'INSERT': - $builder = new InsertStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'REPLACE': - $builder = new ReplaceStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'DELETE': - $builder = new DeleteStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'TRUNCATE': - $builder = new TruncateStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'UPDATE': - $builder = new UpdateStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'RENAME': - $builder = new RenameStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'SHOW': - $builder = new ShowStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'CREATE': - $builder = new CreateStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'BRACKET': - $builder = new BracketStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'DROP': - $builder = new DropStatementBuilder(); - $this->created = $builder->build($parsed); - break; - case 'ALTER': - $builder = new AlterStatementBuilder(); - $this->created = $builder->build($parsed); - break; - default: - throw new UnsupportedFeatureException($k); - break; + case 'UNION': + $builder = new UnionStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'UNION ALL': + $builder = new UnionAllStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'SELECT': + $builder = new SelectStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'INSERT': + $builder = new InsertStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'REPLACE': + $builder = new ReplaceStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'DELETE': + $builder = new DeleteStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'TRUNCATE': + $builder = new TruncateStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'UPDATE': + $builder = new UpdateStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'RENAME': + $builder = new RenameStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'SHOW': + $builder = new ShowStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'CREATE': + $builder = new CreateStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'BRACKET': + $builder = new BracketStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'DROP': + $builder = new DropStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'ALTER': + $builder = new AlterStatementBuilder(); + $this->created = $builder->build($parsed); + break; + case 'WITH': + $builder = new WithStatementBuilder(); + $this->created = $builder->build($parsed); + break; + default: + throw new UnsupportedFeatureException($k); + break; } return $this->created; } } - -?> diff --git a/src/PHPSQLParser/builders/WithStatementBuilder.php b/src/PHPSQLParser/builders/WithStatementBuilder.php new file mode 100644 index 00000000..ae082136 --- /dev/null +++ b/src/PHPSQLParser/builders/WithStatementBuilder.php @@ -0,0 +1,37 @@ +build($subTree) . ')'; + $ctes[] = $cte_sql; + } + + $sql .= implode(', ', $ctes); + + // Pass all top-level keys except WITH to the SelectStatementBuilder + $mainQuery = $parsed; + unset($mainQuery['WITH']); + if (!empty($mainQuery)) { + $sql .= ' ' . (new SelectStatementBuilder())->build($mainQuery); + } + + return $sql; + } +} \ No newline at end of file diff --git a/tests/cases/creator/withTest.php b/tests/cases/creator/withTest.php new file mode 100644 index 00000000..d6e36b59 --- /dev/null +++ b/tests/cases/creator/withTest.php @@ -0,0 +1,30 @@ +parsed); + $created = $creator->created; + $this->assertSame($sql, $created, 'WITH statement (CTE) should be recreated correctly'); + } + + public function testComplexWithStatement() { + $sql = "WITH RankedOrders AS (SELECT c.fullname AS CustomerName, ch.name AS ChannelName, o.expected_delivery_date AS OrderDate, SUM(oi.qty) AS TotalQuantity, o.id AS Ordernumer, ROW_NUMBER() OVER(PARTITION BY o.customer_id ORDER BY o.expected_delivery_date DESC) AS ranks FROM orders o INNER JOIN order_items oi ON o.id = oi.order_id INNER JOIN customers c ON c.id = o.customer_id INNER JOIN channels ch ON ch.id = o.channel_id WHERE o.delivery_state = 'delivered' AND oi.unit_price != 0 AND o.order_type NOT IN ('delivery_request', 'replacement') AND YEAR(o.expected_delivery_date) = 2025 AND ch.id NOT IN (30, 46) GROUP BY o.customer_id, c.fullname, o.expected_delivery_date, o.id, ch.name) SELECT CustomerName, ChannelName, OrderDate, TotalQuantity, Ordernumer, ranks FROM RankedOrders WHERE ranks <= 4 ORDER BY CustomerName ASC, OrderDate DESC"; + $parser = new PHPSQLParser($sql); + $creator = new PHPSQLCreator($parser->parsed); + $created = $creator->created; + $this->assertSame($sql, $created, 'Complex WITH statement (CTE) should be recreated correctly'); + } +} \ No newline at end of file