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:
@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user