aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1998-02-24 15:27:04 +0000
committerMarc G. Fournier <scrappy@hub.org>1998-02-24 15:27:04 +0000
commit0227a4e1141ae83ac3ae145fa283ede13e86e23e (patch)
tree587d06ca0b71c88ae2c1ac4a90bd5bba13a5c668 /src/backend/utils/adt
parent96316211c3a1300b304d452e09c726fb775aa502 (diff)
downloadpostgresql-0227a4e1141ae83ac3ae145fa283ede13e86e23e.tar.gz
postgresql-0227a4e1141ae83ac3ae145fa283ede13e86e23e.zip
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
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r--src/backend/utils/adt/varchar.c25
-rw-r--r--src/backend/utils/adt/varlena.c12
2 files changed, 35 insertions, 2 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index a7b6abdaeb1..f3a2df7b94d 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -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);
}
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 1fc611286c5..8d334a2ffd9 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.29 1998/01/07 18:46:54 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.30 1998/02/24 15:19:45 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -157,6 +157,11 @@ textin(char *inputText)
VARSIZE(result) = len;
memmove(VARDATA(result), inputText, len - VARHDRSZ);
+
+#ifdef CYR_RECODE
+ convertstr(VARDATA(result),len-VARHDRSZ,0);
+#endif
+
return (result);
}
@@ -180,6 +185,11 @@ textout(text *vlena)
result = (char *) palloc(len + 1);
memmove(result, VARDATA(vlena), len);
result[len] = '\0';
+
+#ifdef CYR_RECODE
+ convertstr(result,len,1);
+#endif
+
return (result);
}