From: | Edwin Ramirez <ramirez(at)doc(dot)mssm(dot)edu> |
---|---|
To: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us> |
Subject: | Oracle Compatibility (Translate function) |
Date: | 1999-12-16 14:24:14 |
Message-ID: | 3858F60E.312E3BA3@doc.mssm.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs 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
From | Date | Subject | |
---|---|---|---|
Next Message | Kimmo Lahdensivu | 1999-12-16 21:02:01 | Inserting bug |
Previous Message | Bruce Momjian | 1999-12-16 01:43:11 | Re: [BUGS] uniqueness not always correct |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 1999-12-16 14:25:51 | Re: [HACKERS] initdb / pg_version |
Previous Message | Tom Lane | 1999-12-16 14:23:48 | Re: AW: AW: [HACKERS] SELECT ... AS ... names in WHERE/GROUP BY/HAVIN G |