Robin,
very cool!
Robin Johnson wrote:
Hi List,
The new SQL parser is functional now, and very capable as well as fast. Again I am looking for hints and ideas about PHP3 incompatibilites if there are any in my code (I'm not sure).
If nobody can test it under PHP3 before 2.3.0-final,I would say: just check the PHP version and do not parse if < PHP4, because PHP3 users can live without coloring :)
http://games.techbc.ca/~robbat2/sqlparse.php
If there is some long and convoluted but still valid query that you want me to test my code on, please send it my way. Check out the LARGE_* query tests before you do though.
You made a good test case, and I would not be afraid to merge this code, so that masses of users can test convoluted queries on it :)
But can you
I'd like suggestions on how to make it even faster on the huge query sets, like the SQL_MS_SQL* tests that I have in the test harness.
The current code now uses absoltely NO Regex or PCRE functions, and does nearly everything via strings with a few arrays.
I'd also like suggestions on what we want the indenting to look like, so that I can code it in as well. Any specific preferences?
This is only a suggestion (for future versions?): when I look your FUNC_1 test, the raw version, I see
SELECT job,dept.loc,AVG(sal) FROM emp,dept WHERE dept.deptno=emp.deptno GROUP BY dept.loc,job ORDER BY 3
and this is exactly the way I like to code my queries.
Now, I would like to see the color output formatted like the raw version, only with colors added. A newline after each major sections of a SELECT.
The same thing applies to an insert: start the VALUES on a new line, and put each record on a different line.
The only thing that remains in my code is more SQL validator, which is mainly for the structure, like missing brackets/quotes etc. I don't think I will do validation of the keywords or number of function arguments.