|
7 | 7 | *
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.18 1998/01/07 22:08:23 momjian Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.19 1998/01/08 03:05:01 momjian Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
@@ -132,8 +132,11 @@ varcharin(char *s, int dummy, int typlen)
|
132 | 132 | if (s==NULL)
|
133 | 133 | return ((char*)NULL);
|
134 | 134 |
|
135 |
| -len=strlen(s)+VARHDRSZ; |
136 |
| -if (typlen!=-1&&len>typlen) |
| 135 | +if (typelen==-1)/* we will remove this soon to make compact storage */ |
| 136 | +/* change varcharlen at the same time to use VARSIZE */ |
| 137 | +len=strlen(s)+VARHDRSZ; |
| 138 | +/*if (typlen != -1 && len > typlen) */ |
| 139 | +else |
137 | 140 | len=typlen;/* clip the string at max length */
|
138 | 141 |
|
139 | 142 | if (len>4096)
|
@@ -194,7 +197,7 @@ bpcharlen(char *arg)
|
194 | 197 | elog(ERROR,"Bad (null) char() external representation",NULL);
|
195 | 198 |
|
196 | 199 | return(bcTruelen(arg));
|
197 |
| -}/* bpcharlen() */ |
| 200 | +} |
198 | 201 |
|
199 | 202 | bool
|
200 | 203 | bpchareq(char*arg1,char*arg2)
|
@@ -327,13 +330,29 @@ bpcharcmp(char *arg1, char *arg2)
|
327 | 330 | *Comparison Functions used for varchar
|
328 | 331 | *****************************************************************************/
|
329 | 332 |
|
| 333 | +staticint |
| 334 | +vcTruelen(char*arg) |
| 335 | +{ |
| 336 | +char*s=arg+VARHDRSZ; |
| 337 | +inti; |
| 338 | +intlen; |
| 339 | + |
| 340 | +len=*(int32*)arg-VARHDRSZ; |
| 341 | +for (i=0;i<len;i++) |
| 342 | +{ |
| 343 | +if (*s++=='\0') |
| 344 | +break; |
| 345 | +} |
| 346 | +returni; |
| 347 | +} |
| 348 | + |
330 | 349 | int32
|
331 | 350 | varcharlen(char*arg)
|
332 | 351 | {
|
333 | 352 | if (!PointerIsValid(arg))
|
334 | 353 | elog(ERROR,"Bad (null) varchar() external representation",NULL);
|
335 | 354 |
|
336 |
| -returnVARSIZE(arg)-VARHDRSZ; |
| 355 | +return(vcTruelen(arg)); |
337 | 356 | }
|
338 | 357 |
|
339 | 358 | bool
|
|