Oracle Compatibility (Translate function) - Mailing list pgsql-hackers

From Edwin Ramirez
Subject Oracle Compatibility (Translate function)
Date
Msg-id 3858F60E.312E3BA3@doc.mssm.edu
Whole thread Raw
In response to Re: [HACKERS] Re: [BUGS] uniqueness not always correct  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
Hello,
   I have modified the translate function in order to improve its
compatibility with Oracle.  It now supports the replacement of multiple
characters and it will also shorten the length of the string when characters
are replaced with nothing.

[Note: The arguments are different from the original translate]
Can this function replace the existing function in the distribution?

-------NEW FUNCTION--------------------------------------
text *
translate(text *string, text *from, text *to)
{       text       *ret;       char       *ptr_ret, *from_ptr, *to_ptr, *source, *target, *temp,
rep;       int        m, fromlen, tolen, retlen, i;
       if ((string == (text *) NULL) ||               ((m = VARSIZE(string) - VARHDRSZ) <= 0))               return
string;
       target   = (char *) palloc(VARSIZE(string) - VARHDRSZ);       source   = VARDATA(string);       temp     =
target;
       fromlen = VARSIZE(from) - VARHDRSZ;       from_ptr = VARDATA(from);       tolen = VARSIZE(to) - VARHDRSZ;
to_ptr  = VARDATA(to);       retlen = 0;       while (m--)       {         rep = *source;
for(i=0;i<fromlen;i++){           if(from_ptr[i] == *source)  {             if(i < tolen) {               rep =
to_ptr[i];            } else {               rep = 0;             }             break;           }         }
if(rep!= 0) {           *target++ = rep;           retlen++;         }         source++;       }
 
       ret = (text *) palloc(retlen + VARHDRSZ);       VARSIZE(ret) = retlen + VARHDRSZ;       ptr_ret = VARDATA(ret);
    for(i=0;i<retlen;i++) {         *ptr_ret++ = temp[i];       }       pfree(target);       return ret;
 
}


Thanks,
Edwin S. Ramirez




pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] Finding corrupt data
Next
From: Nicolas Nappe
Date:
Subject: access control lists ( acl )