Francis you are unbelievable. I've just created the issue in JIRA and two minutes later you've already checked the code in. You must have been waiting for that all day. Thanks a lot for that. Apparently you don't have the right to create JIRA issues yourself. I always thought you had. I will see if I am able to give you the right to do so.
As you have probably seen, I have just created another issue for the reverse function problem. I am not yet sure how to deal with this in this case and in general. The original idea was to take all common SQL functions and support them for all database drivers. For database specific functions additional functions could be implemented either on the database driver or on the DBCommand object that is created through the driver. An example for this is Oracle where we support the "connect by prior" function with the DBCommandOracle object. What I think we should not do, is to create the function in postgre without the user's consent, i.e. without him telling us to do so. This in turn means that we have to put the code Frank suggested in a special method on the driver and anyone who wishes to use the reverse function must call this method if the reverse function does not already exist. I will think about this some more and give you my opinion how to deal with this. However one problem for me is, that I don't have any postgre SQL database running here and I cannot test it. Francis have you? Rainer P.S. @Frank Lupo: Thanks a log Frank for your contributions, they are very helpful. Francis De Brabandere wrote: > Re: reverse function in postgresql > > Rainer, what do you think about such workarounds?? > > On Thu, Jul 2, 2009 at 5:39 PM, Frank Lupo<[email protected]> wrote: > > Hi all, > > in postgreql the reverse function not exist. > > Is posible create function reverse when connect to db? > > > > thanks > > > > ===================================================== > > CREATE OR REPLACE FUNCTION reverse(TEXT) RETURNS TEXT AS ' > > DECLARE > > original ALIAS FOR $1; > > reversed TEXT := \'\'; > > onechar VARCHAR; > > mypos INTEGER; > > BEGIN > > SELECT LENGTH(original) INTO mypos; > > LOOP > > EXIT WHEN mypos < 1; > > SELECT substring(original FROM mypos FOR 1) INTO onechar; > > reversed := reversed || onechar; > > mypos := mypos -1; > > END LOOP; > > RETURN reversed; > > END > > ' LANGUAGE plpgsql IMMUTABLE RETURNS NULL ON NULL INPUT; > > > > ===================================================== > > CREATE OR REPLACE FUNCTION reverse(TEXT) RETURNS TEXT AS ' > > DECLARE > > original ALIAS FOR $1; > > reversed TEXT := \'\'; > > onechar VARCHAR; > > mypos INTEGER; > > BEGIN > > SELECT LENGTH(original) INTO mypos; > > LOOP > > EXIT WHEN mypos < 1; > > SELECT substring(original FROM mypos FOR 1) INTO onechar; > > reversed := reversed || onechar; > > mypos := mypos -1; > > END LOOP; > > RETURN reversed; > > END > > ' LANGUAGE plpgsql IMMUTABLE RETURNS NULL ON NULL INPUT; > > ===================================================== > > create or replace function reverse_string(text) returns text as > > ' > > DECLARE > > reversed_string text; > > incoming alias for $1; > > > > BEGIN > > > > reversed_string = ''''; > > > > for i in reverse char_length(incoming)..1 loop > > reversed_string = reversed_string || substring(incoming from i for > 1); > > end loop; > > > > return reversed_string; > > END' > > language plpgsql; > > > > > > > > > > -- > > Caselle da 1GB, trasmetti allegati fino a 3GB e in piu' IMAP, POP3 e > SMTP > > autenticato? GRATIS solo con Email.it http://www.email.it/f > > > > Sponsor: > > Se ci racconti i tuoi gesti d'amore per il tuo cane, Cesar ti premia. > > Partecipa anche tu! > > Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=9205&d=2-7 > > > > > > -- > http://www.somatik.be > Microsoft gives you windows, Linux gives you the whole house.
