On 05/09/12 23:29, Rick Hillegas wrote:
On 9/5/12 7:02 AM, David Myers wrote:
Hello all,
Bryan, thanks for the info (although I was using 'locate' on my ubuntu
box, and it still didn't find it ?) I'll have a look tonight.
Kathey, I don't intend to modify the file, just grab the contents, if
possible an without using a file Input Stream
Hi David,
Note that the keywords appear in an array of String constants that are
generated by javacc into
trunk/generated/java/org/apache/derby/impl/sql/compile/SQLParserConstants.java.
That may be a more straightforward way to get your hands on the
keywords but it may require understanding more about how the generated
grammar behaves and it may involve building a compile time tool which
scrapes the keywords out of SQLParserConstants. I am waving my hands,
of course.
Hope this helps,
-Rick
I also noted that the DatabaseMetaData.getSQLkeywords() actually has a
hard coded list of words! I have no problem with that in the first
instance, but I'm sure that the engine doesn' check every word with a
call to this method before throwing an error!
I need to keep looking...I'll keep you all posted.
D
On Wed, Sep 5, 2012 at 6:25 AM, Katherine Marsden
<[email protected]> wrote:
On 9/4/2012 7:44 PM, Bryan Pendleton wrote:
I've had success in pointing Eclipse to the source code that I have
built. I have had a nice look around for the file that I am
interested in, which from the previously mentioned JIRA issues etc
suggest a file called sqlgrammar.jj
only problem is I can't find it!
It's possible that Eclipse doesn't grok '.jj' files in its normal
configuration.
The file should be in your source tree as:
./java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
There is a compiler-generation tool that processes this file during
the Ant build of Derby and generates Java source from the grammar.
The tool that generates the java code for the parser from
sqlgrammar.jj is
Javacc. The generated code is in
generated/java/org/apache/derby/impl/sql/compile which is fun to
look at but
shouldn't be changed.
I think there may be an exclipse plugin for javacc but I have never
used
one.
Kathey
Rick,
re your comment of String constants in an array. I found the same thing
in the interface.
It has just occured to me that, as we use a database, maybe a resultSet
may be the thing to return , I've come full circle to understanding your
original idea of a 'Table Function'. But I would still think that a
function in DatabaseMetaData would be good.
Along these lines... it should take a String argument that is the word
being tested, and return true [word is in list] or false [word is not in
the list]. I propose to call the method prototype to be something like
getAllDerbyKeyWords(String wordToTest) . Hopefully as it has the word
'Derby' in it the SQL people are unlikely to ever use is in the
standard! Although maybe there would be an argument to propose a new
method of getAllKeywords() to the standard, that each driver vendor
could implement and would have the same / similar functionality -
delusions of grandeur ;)
But how to turn that String Array into a Table is fairly simple (I'd
declare a temp table), and then make a select on it to get a resultSet.
However is there a way to skip the table step and jump straight to a
result set (its a bit of a leading question, and I haven't searched for
an answer anywhere yet, so unless you know off the top of your head no
need to answer straight away).
David