greenlion/PHP-SQL-Parser

CURRENT_TIMESTAMP is detected as a reserved word an generate errors when used in JOIN clause

Opened this issue · 0 comments

The following code will produce an error

$sql = "SELECT foo FROM barTable LEFT JOIN bazTable ON barTable.a = bazTable.a AND bazTable.d <= CURRENT_TIMESTAMP"; 

$parser = new PHPSQLParser();
$creator = new PHPSQLCreator();

$parser->parse($sql);

$creator->create($parser->parsed);

Error : PHPSQLParser\exceptions\UnableToCreateSQLException : unknown [expr_type] = reserved in "expression ref_clause" [6]

This is due to the fact that "CURRENT_TIMESTAMP" is not detected as a function.

I managed to solve this by adding "CURRENT_TIMESTAMP" to the list of functions in the PHPSQLParserConstants class. I will propose a PR with this fix.