1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-18 17:42:25 +03:00

From: "Denis V. Dmitrienko" <denis@null.net>

What it does:
It solves stupid problem with cyrillic charsets IP-based on-fly recoding.
take a look at /data/charset.conf for details.
You can use any tables for any charset.
Tables are from Russian Apache project.
Tables in this patch contains also Ukrainian characters.

Then run ./configure --enable-recode
This commit is contained in:
Marc G. Fournier
1998-02-24 15:27:04 +00:00
parent 96316211c3
commit 0227a4e114
21 changed files with 844 additions and 8 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.27 1998/02/10 16:03:46 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.28 1998/02/24 15:19:44 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@ -16,6 +16,10 @@
#include "postgres.h"
#include "utils/builtins.h"
#ifdef CYR_RECODE
char *convertstr(char *,int,int);
#endif
/*
* CHAR() and VARCHAR() types are part of the ANSI SQL standard. CHAR()
* is for blank-padded string whose length is specified in CREATE TABLE.
@ -84,6 +88,11 @@ bpcharin(char *s, int dummy, int16 atttypmod)
if (*r == '\0')
break;
}
#ifdef CYR_RECODE
convertstr(result + VARHDRSZ,len,0);
#endif
/* blank pad the string if necessary */
for (; i < len; i++)
{
@ -110,6 +119,11 @@ bpcharout(char *s)
result = (char *) palloc(len + 1);
StrNCpy(result, VARDATA(s), len+1); /* these are blank-padded */
}
#ifdef CYR_RECODE
convertstr(result,len,1);
#endif
return (result);
}
@ -143,6 +157,10 @@ varcharin(char *s, int dummy, int16 atttypmod)
VARSIZE(result) = len;
strncpy(VARDATA(result), s, len - VARHDRSZ);
#ifdef CYR_RECODE
convertstr(result + VARHDRSZ,len,0);
#endif
return (result);
}
@ -164,6 +182,11 @@ varcharout(char *s)
result = (char *) palloc(len + 1);
StrNCpy(result, VARDATA(s), len+1);
}
#ifdef CYR_RECODE
convertstr(result,len,1);
#endif
return (result);
}