db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Hillegas <Richard.Hille...@Sun.COM>
Subject Re: Extracting dependencies from SQL statements
Date Tue, 09 Mar 2010 13:35:14 GMT
Hi Pavel,

I don't know of an easy way to do this. You could run the statement 
through the Derby parser to get the parsed representation, the Abstract 
Syntax Tree. Then you could write a Visitor to walk the AST, looking for 
the nodes which represent tables. See the following JIRAs for some 
pointers on how to produce and walk the AST: DERBY-3946 and DERBY-791.

Unfortunately, there is no systematic primer on the AST nodes 
themselves. All we have is the javadoc for the package 
org.apache.derby.impl.sql.compile.

Hope this helps,
-Rick

Pavel Bortnovskiy wrote:
>
> Hello:
>
> is it possible to use Derby's SQL parser to "extract" dependencies 
> from a given SQL statement?
> (or access the parser once the statement has been parsed).
>
> Whether it's a simple SELECT or a JOIN, UNION or a more complex 
> statement, I would like to get a list of tables that this statement 
> would depend on.
> Looking for FROM clauses and attempting to do the parsing myself seems 
> like a difficult, error prone and impractical way to approach this.
>
> Any suggestions, please?
>
> Thanks,
> Pavel.
>
>
>
> Jefferies archives and monitors outgoing and incoming e-mail. The 
> contents of this email, including any attachments, are confidential to 
> the ordinary user of the email address to which it was addressed. If 
> you are not the addressee of this email you may not copy, forward, 
> disclose or otherwise use it or any part of it in any form whatsoever. 
> This email may be produced at the request of regulators or in 
> connection with civil litigation. Jefferies accepts no liability for 
> any errors or omissions arising as a result of transmission. Use by 
> other than intended recipients is prohibited.  In the United Kingdom, 
> Jefferies operates as Jefferies International Limited; registered in 
> England: no. 1978621; registered office: Vintners Place, 68 Upper 
> Thames Street, London EC4V 3BJ.  Jefferies International Limited is 
> authorised and regulated by the Financial Services Authority. 


Mime
View raw message