On Fri, 19 Nov 2004, Xavier Poinsard wrote:
> Hi,
> I saw that escaped functions were on the TODO list.
> Here is a patch that prepare for adding escaped functions.
> It supports nested escapes.
> As example I have coded the concat function.
> Tests and metadata updates are included.
> If the patch is accepted, I will add more functions.
> Any comments are welcome.
>
This code is not quite right in its determination of function arguments
because it stops checking for literal and identifier markers.
Consider that {fn concat('(', a."(")} should work.
I also don't like the prospect of a giant if/else block that has every
function that must do some kind of mapping/translation. What about a more
pluggable architecture perhaps along the lines of the following:
public interface StandardFunction {
public void toSQL(StringBuffer sb, ArrayList args);
}
Then a static HashMap of say lowercase function name -> StandardFunction
implementation can move all of the mapping/translation into a separate
place. Maybe that's overkill in the opposite direction. Thoughts?
Kris Jurka