aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-01-08 03:05:01 +0000
committerBruce Momjian <bruce@momjian.us>1998-01-08 03:05:01 +0000
commitc098f309e30a48402e4886f791684a4e32b53efb (patch)
treeef59eb98482ac1871233cddb023d1f0617771f4d
parent1c9fcfb6830d4a9dd4c0219bb925658d955957a3 (diff)
downloadpostgresql-c098f309e30a48402e4886f791684a4e32b53efb.tar.gz
postgresql-c098f309e30a48402e4886f791684a4e32b53efb.zip
Rollback varchar size change.
-rw-r--r--src/backend/utils/adt/varchar.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 0e5934af0d2..51b1a781ff2 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.18 1998/01/07 22:08:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.19 1998/01/08 03:05:01 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -132,8 +132,11 @@ varcharin(char *s, int dummy, int typlen)
if (s == NULL)
return ((char *) NULL);
- len = strlen(s) + VARHDRSZ;
- if (typlen != -1 && len > typlen)
+ if (typelen == -1) /* we will remove this soon to make compact storage */
+ /* change varcharlen at the same time to use VARSIZE */
+ len = strlen(s) + VARHDRSZ;
+/* if (typlen != -1 && len > typlen) */
+ else
len = typlen; /* clip the string at max length */
if (len > 4096)
@@ -194,7 +197,7 @@ bpcharlen(char *arg)
elog(ERROR, "Bad (null) char() external representation", NULL);
return(bcTruelen(arg));
-} /* bpcharlen() */
+}
bool
bpchareq(char *arg1, char *arg2)
@@ -327,13 +330,29 @@ bpcharcmp(char *arg1, char *arg2)
* Comparison Functions used for varchar
*****************************************************************************/
+static int
+vcTruelen(char *arg)
+{
+ char *s = arg + VARHDRSZ;
+ int i;
+ int len;
+
+ len = *(int32 *) arg - VARHDRSZ;
+ for (i = 0; i < len; i++)
+ {
+ if (*s++ == '\0')
+ break;
+ }
+ return i;
+}
+
int32
varcharlen(char *arg)
{
if (!PointerIsValid(arg))
elog(ERROR, "Bad (null) varchar() external representation", NULL);
- return VARSIZE(arg) - VARHDRSZ;
+ return(vcTruelen(arg));
}
bool