aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/varchar.c69
-rw-r--r--src/backend/utils/adt/varlena.c61
2 files changed, 126 insertions, 4 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 7f30f2bab69..cd43dcdace9 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.31 1998/05/09 22:42:07 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.32 1998/05/29 13:33:24 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -201,8 +201,7 @@ int32
bpchar_char(char *s)
{
return ((int32) *VARDATA(s));
-} /* char_bpchar() */
-
+} /* bpchar_char() */
/* char_bpchar()
* Convert char to bpchar(1).
@@ -221,6 +220,70 @@ char_bpchar(int32 c)
} /* char_bpchar() */
+/* bpchar_name()
+ * Converts a bpchar() type to a NameData type.
+ */
+NameData *
+bpchar_name(char *s)
+{
+ NameData *result;
+ int len;
+
+ if (s == NULL)
+ return (NULL);
+
+ len = VARSIZE(s) - VARHDRSZ;
+ if (len > NAMEDATALEN) len = NAMEDATALEN;
+
+ while (len > 0) {
+ if (*(VARDATA(s)+len-1) != ' ') break;
+ len--;
+ }
+
+#ifdef STRINGDEBUG
+printf("bpchar- convert string length %d (%d) ->%d\n",
+ VARSIZE(s)-VARHDRSZ, VARSIZE(s), len);
+#endif
+
+ result = (NameData *) palloc(NAMEDATALEN);
+ StrNCpy(result->data, VARDATA(s), NAMEDATALEN);
+
+ /* now null pad to full length... */
+ while (len < NAMEDATALEN) {
+ *(result->data + len) = '\0';
+ len++;
+ }
+
+ return (result);
+} /* bpchar_name() */
+
+/* name_bpchar()
+ * Converts a NameData type to a bpchar type.
+ */
+char *
+name_bpchar(NameData *s)
+{
+ char *result;
+ int len;
+
+ if (s == NULL)
+ return (NULL);
+
+ len = strlen(s->data);
+
+#ifdef STRINGDEBUG
+printf("bpchar- convert string length %d (%d) ->%d\n",
+ VARSIZE(s)-VARHDRSZ, VARSIZE(s), len);
+#endif
+
+ result = (char *) palloc(VARHDRSZ + len);
+ strncpy(VARDATA(result), s->data, len);
+ VARSIZE(result) = len + VARHDRSZ;
+
+ return (result);
+} /* name_bpchar() */
+
+
/*****************************************************************************
* varchar - varchar() *
*****************************************************************************/
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index 1fad410b85a..6475a018895 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.34 1998/05/09 22:42:07 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.35 1998/05/29 13:33:58 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -759,3 +759,62 @@ byteaSetBit(text *v, int32 n, int32 newBit)
return (res);
}
+
+
+/* text_name()
+ * Converts a text() type to a NameData type.
+ */
+NameData *
+text_name(text *s)
+{
+ NameData *result;
+ int len;
+
+ if (s == NULL)
+ return (NULL);
+
+ len = VARSIZE(s) - VARHDRSZ;
+ if (len > NAMEDATALEN) len = NAMEDATALEN;
+
+#ifdef STRINGDEBUG
+printf("text- convert string length %d (%d) ->%d\n",
+ VARSIZE(s)-VARHDRSZ, VARSIZE(s), len);
+#endif
+
+ result = palloc(NAMEDATALEN);
+ StrNCpy(result->data, VARDATA(s), NAMEDATALEN);
+
+ /* now null pad to full length... */
+ while (len < NAMEDATALEN) {
+ *(result->data + len) = '\0';
+ len++;
+ }
+
+ return (result);
+} /* text_name() */
+
+/* name_text()
+ * Converts a NameData type to a text type.
+ */
+text *
+name_text(NameData *s)
+{
+ text *result;
+ int len;
+
+ if (s == NULL)
+ return (NULL);
+
+ len = strlen(s->data);
+
+#ifdef STRINGDEBUG
+printf("text- convert string length %d (%d) ->%d\n",
+ VARSIZE(s)-VARHDRSZ, VARSIZE(s), len);
+#endif
+
+ result = palloc(VARHDRSZ + len);
+ strncpy(VARDATA(result), s->data, len);
+ VARSIZE(result) = len + VARHDRSZ;
+
+ return (result);
+} /* name_text() */