db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lukas Eder <lukas.e...@gmail.com>
Subject Re: CASE [expression] WHEN [expression] THEN [expression] END syntax
Date Mon, 30 May 2011 14:46:29 GMT
Hi Dag,

> That's fine, Lukas, I know it can be a big inhale.. In the interest of
> further streamlining our build environment, was there anything is
> particualar that you had issues with, or was it just that the
> instructions look intimidating? In any case, thats for your interest!

These were my major concerns:

1. I develop with Eclipse, usually. It looks like there are several
what Eclipse calls "source folders". One has to find/guess them first.
But that wasn't such a big issue.
2. It took me a while to understand that some of the missing artefacts
are actually generated (such as the output from sqlgrammar.jj). I
imagine that can be done with the main build target in the ant
build.xml
3. After generating, I still had lots of compilation errors. I was not
sure whether this is
3a. Because of using Eclipse. I know the Eclipse compiler is a bit
different from javac. And also the setup in step 1) might've been
wrong
3b. Because of some other required artefacts / dependencies that I
might have overlooked
3c. Because of trunk being unstable
4. The huge amount of Java classes was quite a treat to my CPU, when
compiling. So this was a bit annoying when trying to find out what's
wrong... ;-)
5. Even if I had managed to find out how to compile everything, it's
really not so simple to add to sqlgrammar.jj, as I didn't easily
recognise any structure. Maybe a structured XML file might be more
suitable for formally specifying the grammar? I'm guessing that there
is quite a bit of implicit magic going on in there... I then tried to
grasp what it's output SQLParser.java (I think?) was meant to do and I
tried to figure out how I could formally rewrite

CASE [x] WHEN [y1] THEN [z1] ... WHEN [yn] THEN [zn] ELSE [zElse] END

into

CASE WHEN [x = y1] THEN [z1] ... WHEN [x = yn] then [zn] ELSE [zElse] END

by looking at the various whenThenExpression() and similar methods. I
wasn't quite sure, so I figured I would need to step through that code
using the debugger...

And I finally came to the conclusion, that this is a non-trivial task
for a new contributor, even if you might find it easy :-) Not to
mention adding test cases and making them run, etc...

Apart from that, I'm developing a database abstraction library:
http://www.jooq.org.

In jOOQ, it was very easy for me to "simulate" the missing CASE
expression as mentioned above. So my users will be able to run both
types of CASE expressions on a Derby DB... (along with some other
common functionality that I found missing in Derby)

Cheers
Lukas

Mime
View raw message