[Zope] Allowed SQL statements for ZSQL

Martin Gebert Murphy@members.netsolution-net.de
Tue, 21 Jan 2003 12:42:51 +0100


andreas rippel schrieb:

> Hi all,
>
> I'm looking for the SQL grammar, which is allowed/supported by ZSQL.
> E.g. the point is, how does ZSQL support sql-transaction expressions. 

You shouldn't involve TA expressions on your own, Zope is able to handle 
that for you. See the archives of the Zope-DB mailinglist of this 
January, I recently answered this question there.

>
> E.g. "select NOW()" is a legal expression for MySQL, but causes a 
> parse-error in ZSQL. 

I think I see an explanation for that - select NOW() returns a string, 
not a valid SQL result (a table). The Z SQL method can't handle that, I 
presume...
One possibility might be to give the value a name:

select now() as now

but I'm not sure about that.

>
> There seems to be a "standard" inclusion of a limit clause within ZSQL
> for security and/or overflow reasons. 

That's right, and sometimes this causes problems with specific SQL 
statements, e. g. when setting locks (explanation: LIMIT as inserted 
where the MySQL parsed doesn't expect it, so it's a syntax error). Go to 
the "Advanced" tab ot the Z SQL method and set the Limit to 0.

>
> Does anybody know the grammar?
> Are there considerations to suit or extend the grammar? 

Basically, Z SQL methods support every valid SQL grammar - AFAIK there's 
no syntax check before deploying them. Problems are caused by special 
statements as above - invalid return values, LIMIT wrongly added...

HTH.

Martin