Oracle Compatibility (Translate function)

Поиск
Список
Период
Сортировка
От Edwin Ramirez
Тема Oracle Compatibility (Translate function)
Дата
Msg-id 3858F60E.312E3BA3@doc.mssm.edu
обсуждение исходный текст
Ответ на Re: [HACKERS] Re: [BUGS] uniqueness not always correct  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Finding corrupt data
Следующее
От: Nicolas Nappe
Дата:
Сообщение: access control lists ( acl )