SELECT * FROM orders ordersArray ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => * [sub_tree] => [delim] => [position] => 7 ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => orders [no_quotes] => orders [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => orders [sub_tree] => [position] => 14 ) ) ) parse time simplest query:0.0005040168762207 REPLACE INTO table (a,b,c) VALUES (1,2,3) Array ( [REPLACE] => Array ( [0] => Array ( [table] => table [columns] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => a [no_quotes] => a ) [1] => Array ( [expr_type] => colref [base_expr] => b [no_quotes] => b ) [2] => Array ( [expr_type] => colref [base_expr] => c [no_quotes] => c ) ) [base_expr] => table [no_quotes] => table ) ) [VALUES] => Array ( [0] => Array ( [expr_type] => record [base_expr] => (1,2,3) [data] => Array ( [0] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [1] => Array ( [expr_type] => const [base_expr] => 2 [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 3 [sub_tree] => ) ) ) ) ) parse time very somewhat simple statement:0.00021696090698242 SELECT a,b,c from some_table an_alias where d > 5; Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => a [no_quotes] => a [sub_tree] => [delim] => , [position] => 7 ) [1] => Array ( [expr_type] => colref [alias] => [base_expr] => b [no_quotes] => b [sub_tree] => [delim] => , [position] => 9 ) [2] => Array ( [expr_type] => colref [alias] => [base_expr] => c [no_quotes] => c [sub_tree] => [delim] => [position] => 11 ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => some_table [no_quotes] => some_table [alias] => Array ( [as] => [name] => an_alias [no_quotes] => an_alias [base_expr] => an_alias [position] => 40 ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => some_table an_alias [sub_tree] => [position] => 29 ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => d [no_quotes] => d [sub_tree] => [position] => 56 ) [1] => Array ( [expr_type] => operator [base_expr] => > [sub_tree] => [position] => 58 ) [2] => Array ( [expr_type] => const [base_expr] => 5 [sub_tree] => [position] => 60 ) ) ) SELECT a,b,c from some_table an_alias join `another` as `another table` using(id) where d > 5; Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => a [no_quotes] => a [sub_tree] => [delim] => , [position] => 7 ) [1] => Array ( [expr_type] => colref [alias] => [base_expr] => b [no_quotes] => b [sub_tree] => [delim] => , [position] => 9 ) [2] => Array ( [expr_type] => colref [alias] => [base_expr] => c [no_quotes] => c [sub_tree] => [delim] => [position] => 11 ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => some_table [no_quotes] => some_table [alias] => Array ( [as] => [name] => an_alias [no_quotes] => an_alias [base_expr] => an_alias [position] => 40 ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => some_table an_alias [sub_tree] => [position] => 29 ) [1] => Array ( [expr_type] => table [table] => `another` [no_quotes] => another [alias] => Array ( [as] => 1 [name] => `another table` [base_expr] => as `another table` [no_quotes] => another table [position] => 67 ) [join_type] => JOIN [ref_type] => USING [ref_clause] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => id [no_quotes] => id [sub_tree] => [position] => 92 ) ) [base_expr] => `another` as `another table` using(id) [sub_tree] => [position] => 57 ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => d [no_quotes] => d [sub_tree] => [position] => 103 ) [1] => Array ( [expr_type] => operator [base_expr] => > [sub_tree] => [position] => 105 ) [2] => Array ( [expr_type] => const [base_expr] => 5 [sub_tree] => [position] => 107 ) ) ) 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; Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => a [no_quotes] => a [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => [base_expr] => b [no_quotes] => b [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => colref [alias] => [base_expr] => c [no_quotes] => c [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => some_table [no_quotes] => some_table [alias] => Array ( [as] => [name] => an_alias [no_quotes] => an_alias [base_expr] => an_alias ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => some_table an_alias [sub_tree] => ) [1] => Array ( [expr_type] => subquery [alias] => Array ( [as] => [name] => `subqry` [no_quotes] => subqry [base_expr] => `subqry` ) [join_type] => JOIN [ref_type] => ON [ref_clause] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => subqry.d [no_quotes] => subqry.d [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => an_alias.d [no_quotes] => an_alias.d [sub_tree] => ) ) [base_expr] => select d, max(f) max_f from some_table where id = 37 group by d [sub_tree] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => d [no_quotes] => d [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => aggregate_function [alias] => Array ( [as] => [name] => max_f [no_quotes] => max_f [base_expr] => max_f ) [base_expr] => max [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => f [no_quotes] => f [sub_tree] => ) ) [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => some_table [no_quotes] => some_table [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => some_table [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => id [no_quotes] => id [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 37 [sub_tree] => ) ) [GROUP] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => d [no_quotes] => d [sub_tree] => ) ) ) ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => d [no_quotes] => d [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => > [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 5 [sub_tree] => ) ) ) Array ( [UNION ALL] => Array ( [0] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => `c2` [no_quotes] => c2 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => Array ( [as] => [name] => `` [no_quotes] => [base_expr] => `` ) [base_expr] => `c` [no_quotes] => c [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => Array ( [as] => 1 [name] => `an``alias` [base_expr] => as `an``alias` [no_quotes] => an`alias ) [base_expr] => "quoted \'string\' \" with `embedded`\"\" quotes" [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => table [no_quotes] => table [alias] => Array ( [as] => [name] => table [no_quotes] => table [base_expr] => table ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => table table [sub_tree] => ) ) ) [1] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => `c2` [no_quotes] => c2 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => Array ( [as] => [name] => `` [no_quotes] => [base_expr] => `` ) [base_expr] => `c` [no_quotes] => c [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => Array ( [as] => 1 [name] => `an``alias` [base_expr] => as `an``alias` [no_quotes] => an`alias ) [base_expr] => "quoted \'string\' \" with `embedded`\"\" quotes" [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => table [no_quotes] => table [alias] => Array ( [as] => [name] => table [no_quotes] => table [base_expr] => table ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => table table [sub_tree] => ) ) ) ) ) Array ( [UNION] => Array ( [0] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => `c2` [no_quotes] => c2 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => Array ( [as] => [name] => `` [no_quotes] => [base_expr] => `` ) [base_expr] => `c` [no_quotes] => c [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => Array ( [as] => 1 [name] => `an``alias` [base_expr] => as `an``alias` [no_quotes] => an`alias ) [base_expr] => "quoted \'string\' \" with `embedded`\"\" quotes" [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => table [no_quotes] => table [alias] => Array ( [as] => [name] => table [no_quotes] => table [base_expr] => table ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => table table [sub_tree] => ) ) ) [1] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => `c2` [no_quotes] => c2 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => Array ( [as] => [name] => `` [no_quotes] => [base_expr] => `` ) [base_expr] => `c` [no_quotes] => c [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => Array ( [as] => 1 [name] => `an``alias` [base_expr] => as `an``alias` [no_quotes] => an`alias ) [base_expr] => "quoted \'string\' \" with `embedded`\"\" quotes" [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => table [no_quotes] => table [alias] => Array ( [as] => [name] => table [no_quotes] => table [base_expr] => table ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => table table [sub_tree] => ) ) ) ) ) select `c2`, `c```, "quoted \'string\' \" with `embedded`\"\" quotes" as `an``alias` from table table Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => `c2` [no_quotes] => c2 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => Array ( [as] => [name] => `` [no_quotes] => [base_expr] => `` ) [base_expr] => `c` [no_quotes] => c [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => Array ( [as] => 1 [name] => `an``alias` [base_expr] => as `an``alias` [no_quotes] => an`alias ) [base_expr] => "quoted \'string\' \" with `embedded`\"\" quotes" [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => table [no_quotes] => table [alias] => Array ( [as] => [name] => table [no_quotes] => table [base_expr] => table ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => table table [sub_tree] => ) ) ) alter table xyz add key my_key(a,b,c), drop primay key Array ( [ALTER] => Array ( [0] => ALTER [1] => table [2] => [3] => xyz [4] => [5] => add [6] => [7] => key [8] => [9] => my_key [10] => (a,b,c) [11] => , [12] => [13] => drop [14] => [15] => primay [16] => [17] => key ) ) INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3; Array ( [INSERT] => Array ( [0] => Array ( [table] => table [columns] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => a [no_quotes] => a ) [1] => Array ( [expr_type] => colref [base_expr] => b [no_quotes] => b ) [2] => Array ( [expr_type] => colref [base_expr] => c [no_quotes] => c ) ) [base_expr] => table [no_quotes] => table ) ) [VALUES] => Array ( [0] => Array ( [expr_type] => record [base_expr] => (1,2,3) [data] => Array ( [0] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [1] => Array ( [expr_type] => const [base_expr] => 2 [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 3 [sub_tree] => ) ) ) [1] => Array ( [expr_type] => record [base_expr] => ON [data] => Array ( [0] => Array ( [expr_type] => reserved [base_expr] => ON [sub_tree] => ) ) ) ) [ON DUPLICATE KEY UPDATE] => Array ( [0] => Array ( [expr_type] => expression [base_expr] => id=LAST_INSERT_ID(id) [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => id [no_quotes] => id [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => function [base_expr] => LAST_INSERT_ID [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => id [no_quotes] => id [sub_tree] => ) ) ) ) ) [1] => Array ( [expr_type] => expression [base_expr] => c=3 [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c [no_quotes] => c [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 3 [sub_tree] => ) ) ) ) ) UPDATE t1 SET col1 = col1 + 1, col2 = col1; Array ( [UPDATE] => Array ( [0] => Array ( [expr_type] => table [table] => t1 [no_quotes] => t1 [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t1 [sub_tree] => ) ) [SET] => Array ( [0] => Array ( [expr_type] => expression [base_expr] => col1 = col1 + 1 [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => col1 [no_quotes] => col1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => col1 [no_quotes] => col1 [sub_tree] => ) [3] => Array ( [expr_type] => operator [base_expr] => + [sub_tree] => ) [4] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) [1] => Array ( [expr_type] => expression [base_expr] => col2 = col1 [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => col2 [no_quotes] => col2 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => col1 [no_quotes] => col1 [sub_tree] => ) ) ) ) ) DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id; Array ( [DELETE] => Array ( [TABLES] => Array ( [0] => t1 [1] => t2 ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => t1 [no_quotes] => t1 [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t1 [sub_tree] => ) [1] => Array ( [expr_type] => table [table] => t2 [no_quotes] => t2 [alias] => [join_type] => CROSS [ref_type] => [ref_clause] => [base_expr] => t2 [sub_tree] => ) ) [USING] => Array ( [0] => Array ( [expr_type] => table [table] => t1 [no_quotes] => t1 [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t1 [sub_tree] => ) [1] => Array ( [expr_type] => table [table] => t2 [no_quotes] => t2 [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t2 [sub_tree] => ) [2] => Array ( [expr_type] => table [table] => t3 [no_quotes] => t3 [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t3 [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => t1.id [no_quotes] => t1.id [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => t2.id [no_quotes] => t2.id [sub_tree] => ) [3] => Array ( [expr_type] => operator [base_expr] => AND [sub_tree] => ) [4] => Array ( [expr_type] => colref [base_expr] => t2.id [no_quotes] => t2.id [sub_tree] => ) [5] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [6] => Array ( [expr_type] => colref [base_expr] => t3.id [no_quotes] => t3.id [sub_tree] => ) ) ) delete low_priority partitioned_table.* from partitioned_table where partition_id = 1; Array ( [DELETE] => Array ( [TABLES] => Array ( [0] => partitioned_table ) ) [OPTIONS] => Array ( [0] => LOW_PRIORITY ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => partitioned_table [no_quotes] => partitioned_table [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => partitioned_table [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => partition_id [no_quotes] => partition_id [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) UPDATE t1 SET col1 = col1 + 1, col2 = col1; Array ( [UPDATE] => Array ( [0] => Array ( [expr_type] => table [table] => t1 [no_quotes] => t1 [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t1 [sub_tree] => ) ) [SET] => Array ( [0] => Array ( [expr_type] => expression [base_expr] => col1 = col1 + 1 [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => col1 [no_quotes] => col1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => col1 [no_quotes] => col1 [sub_tree] => ) [3] => Array ( [expr_type] => operator [base_expr] => + [sub_tree] => ) [4] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) [1] => Array ( [expr_type] => expression [base_expr] => col2 = col1 [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => col2 [no_quotes] => col2 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => col1 [no_quotes] => col1 [sub_tree] => ) ) ) ) ) insert into partitioned_table (partition_id, some_col) values (1,2); Array ( [INSERT] => Array ( [0] => Array ( [table] => partitioned_table [columns] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => partition_id [no_quotes] => partition_id ) [1] => Array ( [expr_type] => colref [base_expr] => some_col [no_quotes] => some_col ) ) [base_expr] => partitioned_table [no_quotes] => partitioned_table ) ) [VALUES] => Array ( [0] => Array ( [expr_type] => record [base_expr] => (1,2) [data] => Array ( [0] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [1] => Array ( [expr_type] => const [base_expr] => 2 [sub_tree] => ) ) ) ) ) delete from partitioned_table where partition_id = 1; Array ( [DELETE] => Array ( [TABLES] => Array ( [0] => partitioned_table ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => partitioned_table [no_quotes] => partitioned_table [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => partitioned_table [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => partition_id [no_quotes] => partition_id [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) SELECT 1 Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => const [alias] => [base_expr] => 1 [sub_tree] => [delim] => ) ) ) SHOW TABLE STATUS Array ( [SHOW] => Array ( [0] => Array ( [expr_type] => reserved [base_expr] => TABLE ) [1] => Array ( [expr_type] => reserved [base_expr] => STATUS ) ) ) SHOW TABLES Array ( [SHOW] => Array ( [0] => Array ( [expr_type] => reserved [base_expr] => TABLES ) ) ) 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 Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => reserved [alias] => [base_expr] => DISTINCT [sub_tree] => [delim] => ) [1] => Array ( [expr_type] => expression [alias] => Array ( [as] => [name] => c1 [no_quotes] => c1 [base_expr] => c1 ) [base_expr] => 1+2 [no_quotes] => 1+2 [sub_tree] => Array ( [0] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => + [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 2 [sub_tree] => ) ) [delim] => , ) [2] => Array ( [expr_type] => expression [alias] => Array ( [as] => 1 [name] => `c2` [base_expr] => as `c2` [no_quotes] => c2 ) [base_expr] => 1+ 2 [no_quotes] => 1+ 2 [sub_tree] => Array ( [0] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => + [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 2 [sub_tree] => ) ) [delim] => , ) [3] => Array ( [expr_type] => aggregate_function [alias] => [base_expr] => sum [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c2 [no_quotes] => c2 [sub_tree] => ) ) [delim] => , ) [4] => Array ( [expr_type] => expression [alias] => [base_expr] => "Status" = CASE WHEN quantity > 0 THEN 'in stock' ELSE 'out of stock' END [no_quotes] => "Status" = CASE WHEN quantity > 0 THEN 'in stock' ELSE 'out of stock' END [sub_tree] => Array ( [0] => Array ( [expr_type] => const [base_expr] => "Status" [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => reserved [base_expr] => CASE [sub_tree] => ) [3] => Array ( [expr_type] => reserved [base_expr] => WHEN [sub_tree] => ) [4] => Array ( [expr_type] => colref [base_expr] => quantity [no_quotes] => quantity [sub_tree] => ) [5] => Array ( [expr_type] => operator [base_expr] => > [sub_tree] => ) [6] => Array ( [expr_type] => const [base_expr] => 0 [sub_tree] => ) [7] => Array ( [expr_type] => reserved [base_expr] => THEN [sub_tree] => ) [8] => Array ( [expr_type] => const [base_expr] => 'in stock' [sub_tree] => ) [9] => Array ( [expr_type] => reserved [base_expr] => ELSE [sub_tree] => ) [10] => Array ( [expr_type] => const [base_expr] => 'out of stock' [sub_tree] => ) [11] => Array ( [expr_type] => reserved [base_expr] => END [sub_tree] => ) ) [delim] => , ) [5] => Array ( [expr_type] => colref [alias] => [base_expr] => t4.c1 [no_quotes] => t4.c1 [sub_tree] => [delim] => , ) [6] => Array ( [expr_type] => expression [alias] => Array ( [as] => 1 [name] => subquery [base_expr] => as subquery [no_quotes] => subquery ) [base_expr] => (select c1+c2 from t1 inner_t1 limit 1) [no_quotes] => (select c1+c2 from t1 inner_t1 limit 1) [sub_tree] => Array ( [0] => Array ( [expr_type] => subquery [base_expr] => (select c1+c2 from t1 inner_t1 limit 1) [sub_tree] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => expression [alias] => [base_expr] => c1+c2 [no_quotes] => c1+c2 [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c1 [no_quotes] => c1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => + [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => c2 [no_quotes] => c2 [sub_tree] => ) ) [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => t1 [no_quotes] => t1 [alias] => Array ( [as] => [name] => inner_t1 [no_quotes] => inner_t1 [base_expr] => inner_t1 ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t1 inner_t1 [sub_tree] => ) ) [LIMIT] => Array ( [offset] => [rowcount] => 1 ) ) ) ) [delim] => ) ) [INTO] => Array ( [0] => @a1 [1] => @a2 [2] => @a3 [3] => outfile [4] => "/xyz" ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => t1 [no_quotes] => t1 [alias] => Array ( [as] => [name] => the_t1 [no_quotes] => the_t1 [base_expr] => the_t1 ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => t1 the_t1 [sub_tree] => ) [1] => Array ( [expr_type] => table [table] => t2 [no_quotes] => t2 [alias] => [join_type] => LEFT [ref_type] => USING [ref_clause] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c1 [no_quotes] => c1 [sub_tree] => ) [1] => Array ( [expr_type] => colref [base_expr] => c2 [no_quotes] => c2 [sub_tree] => ) ) [base_expr] => t2 using(c1,c2) [sub_tree] => ) [2] => Array ( [expr_type] => table [table] => t3 [no_quotes] => t3 [alias] => Array ( [as] => 1 [name] => tX [base_expr] => as tX [no_quotes] => tX ) [join_type] => JOIN [ref_type] => ON [ref_clause] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => tX.c1 [no_quotes] => tX.c1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => the_t1.c1 [no_quotes] => the_t1.c1 [sub_tree] => ) ) [base_expr] => t3 as tX on tX.c1 = the_t1.c1 [sub_tree] => ) [3] => Array ( [expr_type] => table [table] => t4 [no_quotes] => t4 [alias] => Array ( [as] => [name] => t4_x [no_quotes] => t4_x [base_expr] => t4_x ) [join_type] => JOIN [ref_type] => USING [ref_clause] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => cX [no_quotes] => cX [sub_tree] => ) ) [base_expr] => t4 t4_x using(cX) [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c1 [no_quotes] => c1 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [3] => Array ( [expr_type] => operator [base_expr] => and [sub_tree] => ) [4] => Array ( [expr_type] => colref [base_expr] => c2 [no_quotes] => c2 [sub_tree] => ) [5] => Array ( [expr_type] => operator [base_expr] => in [sub_tree] => ) [6] => Array ( [expr_type] => in-list [base_expr] => (1,2,3, "apple") [sub_tree] => Array ( [0] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [1] => Array ( [expr_type] => const [base_expr] => 2 [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 3 [sub_tree] => ) [3] => Array ( [expr_type] => const [base_expr] => "apple" [sub_tree] => ) ) ) [7] => Array ( [expr_type] => operator [base_expr] => and [sub_tree] => ) [8] => Array ( [expr_type] => reserved [base_expr] => exists [sub_tree] => ) [9] => Array ( [expr_type] => subquery [base_expr] => ( select 1 from some_other_table another_table where x > 1) [sub_tree] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => const [alias] => [base_expr] => 1 [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => some_other_table [no_quotes] => some_other_table [alias] => Array ( [as] => [name] => another_table [no_quotes] => another_table [base_expr] => another_table ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => some_other_table another_table [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => x [no_quotes] => x [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => > [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) ) [10] => Array ( [expr_type] => operator [base_expr] => and [sub_tree] => ) [11] => Array ( [expr_type] => bracket_expression [base_expr] => ("zebra" = "orange" or 1 = 1) [sub_tree] => Array ( [0] => Array ( [expr_type] => const [base_expr] => "zebra" [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => "orange" [sub_tree] => ) [3] => Array ( [expr_type] => operator [base_expr] => or [sub_tree] => ) [4] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) [5] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [6] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) ) [GROUP] => Array ( [0] => Array ( [expr_type] => pos [base_expr] => 1 ) [1] => Array ( [expr_type] => pos [base_expr] => 2 ) ) [HAVING] => Array ( [0] => Array ( [expr_type] => aggregate_function [base_expr] => sum [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c2 [no_quotes] => c2 [sub_tree] => ) ) ) [1] => Array ( [expr_type] => operator [base_expr] => > [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) [ORDER] => Array ( [0] => Array ( [expr_type] => pos [base_expr] => 2 [direction] => ASC ) [1] => Array ( [expr_type] => alias [base_expr] => c1 [no_quotes] => c1 [direction] => DESC ) ) [LIMIT] => Array ( [offset] => 0 [rowcount] => 10 ) [OPTIONS] => Array ( [0] => FOR UPDATE [1] => LOCK IN SHARE MODE ) ) (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 Array ( [UNION ALL] => Array ( [0] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => const [alias] => [base_expr] => 1 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => const [alias] => [base_expr] => 1 [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => [base_expr] => 1 [sub_tree] => [delim] => , ) [3] => Array ( [expr_type] => const [alias] => [base_expr] => 1 [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => dual [no_quotes] => dual [alias] => Array ( [as] => [name] => dual1 [no_quotes] => dual1 [base_expr] => dual1 ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => dual dual1 [sub_tree] => ) ) ) [1] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => const [alias] => [base_expr] => 2 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => const [alias] => [base_expr] => 2 [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => const [alias] => [base_expr] => 2 [sub_tree] => [delim] => , ) [3] => Array ( [expr_type] => const [alias] => [base_expr] => 2 [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => dual [no_quotes] => dual [alias] => Array ( [as] => [name] => dual2 [no_quotes] => dual2 [base_expr] => dual2 ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => dual dual2 [sub_tree] => ) ) ) [2] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => c1 [no_quotes] => c1 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => [base_expr] => c2 [no_quotes] => c2 [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => colref [alias] => [base_expr] => c3 [no_quotes] => c3 [sub_tree] => [delim] => , ) [3] => Array ( [expr_type] => aggregate_function [alias] => [base_expr] => sum [sub_tree] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c4 [no_quotes] => c4 [sub_tree] => ) ) [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => subquery [alias] => Array ( [as] => [name] => subquery [no_quotes] => subquery [base_expr] => subquery ) [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => select c1,c2,c3,c4 from a_table where c2 = 1 [sub_tree] => Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => c1 [no_quotes] => c1 [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => [base_expr] => c2 [no_quotes] => c2 [sub_tree] => [delim] => , ) [2] => Array ( [expr_type] => colref [alias] => [base_expr] => c3 [no_quotes] => c3 [sub_tree] => [delim] => , ) [3] => Array ( [expr_type] => colref [alias] => [base_expr] => c4 [no_quotes] => c4 [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => a_table [no_quotes] => a_table [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => a_table [sub_tree] => ) ) [WHERE] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => c2 [no_quotes] => c2 [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => const [base_expr] => 1 [sub_tree] => ) ) ) ) ) [GROUP] => Array ( [0] => Array ( [expr_type] => pos [base_expr] => 1 ) [1] => Array ( [expr_type] => pos [base_expr] => 2 ) [2] => Array ( [expr_type] => pos [base_expr] => 3 ) ) ) ) ) Parse time highly complex statement: 0.0024030208587646 Array ( [SELECT] => Array ( [0] => Array ( [expr_type] => colref [alias] => [base_expr] => clients.* [no_quotes] => clients.* [sub_tree] => [delim] => , ) [1] => Array ( [expr_type] => colref [alias] => [base_expr] => invheader.* [no_quotes] => invheader.* [sub_tree] => [delim] => ) ) [FROM] => Array ( [0] => Array ( [expr_type] => table [table] => clients [no_quotes] => clients [alias] => [join_type] => JOIN [ref_type] => [ref_clause] => [base_expr] => clients [sub_tree] => ) [1] => Array ( [expr_type] => table [table] => invheader [no_quotes] => invheader [alias] => [join_type] => JOIN [ref_type] => ON [ref_clause] => Array ( [0] => Array ( [expr_type] => colref [base_expr] => invheader.client_id [no_quotes] => invheader.client_id [sub_tree] => ) [1] => Array ( [expr_type] => operator [base_expr] => = [sub_tree] => ) [2] => Array ( [expr_type] => colref [base_expr] => clients.client_id [no_quotes] => clients.client_id [sub_tree] => ) ) [base_expr] => invheader on invheader.client_id = clients.client_id [sub_tree] => ) ) )