diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c
index e5cc55516389830386c3bf10fa22afbe24fc12c0..6c3c64c993ee1f9585d5098380c1f2e018fbff90 100644
--- a/src/backend/utils/adt/int.c
+++ b/src/backend/utils/adt/int.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.29 2000/01/10 05:23:47 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.30 2000/01/10 15:41:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,6 +29,7 @@
  * fix me when we figure out what we want to do about ANSIfication...
  */
 
+#include <ctype.h>
 #include "postgres.h"
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
@@ -90,10 +91,15 @@ int28in(char *intString)
 	{
 		if (sscanf(intString, "%hd", &result[slot]) != 1)
 			break;
-		do
+		while (*intString && isspace(*intString))
+			intString++;
+		while (*intString && !isspace(*intString))
 			intString++;
-		while (*intString && *intString != ' ')
 	}
+	while (*intString && isspace(*intString))
+		intString++;
+	if (*intString)
+		elog(ERROR,"int28 value has too many values");
 	while (slot < INDEX_MAX_KEYS)
 		result[slot++] = 0;
 
@@ -104,31 +110,36 @@ int28in(char *intString)
  *		int28out		- converts internal form to "num num ..."
  */
 char *
-int28out(int16 *shs)
+int28out(int16 *int2Array)
 {
-	int			num;
-	int16	   *sp;
+	int			num, maxnum;
 	char	   *rp;
 	char	   *result;
 
-	if (shs == NULL)
+	if (int2Array == NULL)
 	{
 		result = (char *) palloc(2);
 		result[0] = '-';
 		result[1] = '\0';
 		return result;
 	}
-	rp = result = (char *) palloc(INDEX_MAX_KEYS * 7);
-							/* assumes sign, 5 digits, ' ' */
-	sp = shs;
-	for (num = INDEX_MAX_KEYS; num != 0; num--)
+
+	/* find last non-zero value in vector */
+	for (maxnum = INDEX_MAX_KEYS-1; maxnum >= 0; maxnum--)
+		if (int2Array[maxnum] != 0)
+			break;
+
+	/* assumes sign, 5 digits, ' ' */
+	rp = result = (char *) palloc(maxnum * 7 + 1);
+	for (num = 0; num <= maxnum; num++)
 	{
-		itoa(*sp++, rp);
+		if (num != 0)
+			*rp++ = ' ';
+		ltoa(int2Array[num], rp);
 		while (*++rp != '\0')
 			;
-		*rp++ = ' ';
 	}
-	*--rp = '\0';
+	*rp = '\0';
 	return result;
 }
 
diff --git a/src/backend/utils/adt/oid.c b/src/backend/utils/adt/oid.c
index 4ffd02028104211b902aa6d4a58d8690f32eee61..989f4a602d9208936c195627728a8edb9df3d121 100644
--- a/src/backend/utils/adt/oid.c
+++ b/src/backend/utils/adt/oid.c
@@ -7,12 +7,13 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/oid.c,v 1.30 2000/01/10 05:23:47 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/oid.c,v 1.31 2000/01/10 15:41:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
+#include <ctype.h>
 #include "postgres.h"
 #include "utils/builtins.h"
 
@@ -41,10 +42,15 @@ oid8in(char *oidString)
 	{
 		if (sscanf(oidString, "%u", &result[slot]) != 1)
 			break;
-		do
+		while (*oidString && isspace(*oidString))
+			oidString++;
+		while (*oidString && !isspace(*oidString))
 			oidString++;
-		while (*oidString && *oidString != ' ')
 	}
+	while (*oidString && isspace(*oidString))
+		oidString++;
+	if (*oidString)
+		elog(ERROR,"oid8 value has too many values");
 	while (slot < INDEX_MAX_KEYS)
 		result[slot++] = 0;
 
@@ -57,8 +63,7 @@ oid8in(char *oidString)
 char *
 oid8out(Oid *oidArray)
 {
-	int			num;
-	Oid		   *sp;
+	int			num, maxnum;
 	char	   *rp;
 	char	   *result;
 
@@ -70,17 +75,22 @@ oid8out(Oid *oidArray)
 		return result;
 	}
 
+	/* find last non-zero value in vector */
+	for (maxnum = INDEX_MAX_KEYS-1; maxnum >= 0; maxnum--)
+		if (oidArray[maxnum] != 0)
+			break;
+
 	/* assumes sign, 10 digits, ' ' */
-	rp = result = (char *) palloc(INDEX_MAX_KEYS * 12);
-	sp = oidArray;
-	for (num = INDEX_MAX_KEYS; num != 0; num--)
+	rp = result = (char *) palloc(maxnum * 12 + 1);
+	for (num = 0; num <= maxnum; num++)
 	{
-		ltoa(*sp++, rp);
+		if (num != 0)
+			*rp++ = ' ';
+		ltoa(oidArray[num], rp);
 		while (*++rp != '\0')
 			;
-		*rp++ = ' ';
 	}
-	*--rp = '\0';
+	*rp = '\0';
 	return result;
 }
 
diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
index 2c74b31b04acaab5f28b3edf2186c0af845ae2db..49f019659d3379cb39a9c8bc5aee286710065b8e 100644
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ b/src/interfaces/ecpg/lib/Makefile.in
@@ -6,13 +6,13 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.54 1999/12/16 06:53:10 meskes Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.55 2000/01/10 15:41:27 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
 NAME= ecpg
 SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 0.9
+SO_MINOR_VERSION= 1.0
 
 SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 4c07c57655866e6fabaf0a29155210b0603c267b..7d70b0f8cd79f4c166a6fbf0960d6e3df33dccfa 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -2,7 +2,7 @@ SRCDIR= ../../..
 include $(SRCDIR)/Makefile.global
 
 MAJOR_VERSION=2
-MINOR_VERSION=6
+MINOR_VERSION=7
 PATCHLEVEL=14
 
 CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION) \
diff --git a/src/interfaces/libpgeasy/Makefile.in b/src/interfaces/libpgeasy/Makefile.in
index 0988e3eb73da9778f1eeeb6602c199f0e51f51e9..46adbd683de59f7099bbc7a5fd6087f035187fe7 100644
--- a/src/interfaces/libpgeasy/Makefile.in
+++ b/src/interfaces/libpgeasy/Makefile.in
@@ -4,13 +4,13 @@
 #    Makefile for pgeasy library
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpgeasy/Attic/Makefile.in,v 1.4 1999/12/16 01:25:16 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpgeasy/Attic/Makefile.in,v 1.5 2000/01/10 15:41:28 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
 NAME= pgeasy
 SO_MAJOR_VERSION= 2
-SO_MINOR_VERSION= 0
+SO_MINOR_VERSION= 1
 
 SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/libpgtcl/Makefile.in b/src/interfaces/libpgtcl/Makefile.in
index 5516f9dc17d8ab9d4aab07417336435f3618886a..3b5f15b85a1039dca114a728c8e3de500588ff94 100644
--- a/src/interfaces/libpgtcl/Makefile.in
+++ b/src/interfaces/libpgtcl/Makefile.in
@@ -6,13 +6,13 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile.in,v 1.37 1999/12/16 01:25:17 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/Makefile.in,v 1.38 2000/01/10 15:41:29 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
 NAME= pgtcl
 SO_MAJOR_VERSION= 2
-SO_MINOR_VERSION= 0
+SO_MINOR_VERSION= 1
 
 SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/libpq++/Makefile.in b/src/interfaces/libpq++/Makefile.in
index e9d3aa5d1f5b8ef37215ae48936056f98b6dad44..b6f57dc8cf365a26ce323829e4f237ee6141715e 100644
--- a/src/interfaces/libpq++/Makefile.in
+++ b/src/interfaces/libpq++/Makefile.in
@@ -6,13 +6,13 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.19 1999/12/16 01:25:20 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.20 2000/01/10 15:41:31 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
 NAME= pq++
 SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 0
+SO_MINOR_VERSION= 1
 
 SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/libpq/Makefile.in b/src/interfaces/libpq/Makefile.in
index 1d94ab826fdbd0180bf26ada7c3c700810e33d7a..1276f550a22f42dac0aaa81db8d8f8afc5304db8 100644
--- a/src/interfaces/libpq/Makefile.in
+++ b/src/interfaces/libpq/Makefile.in
@@ -6,13 +6,13 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.50 1999/12/16 01:25:19 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.51 2000/01/10 15:41:30 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
 NAME= pq
 SO_MAJOR_VERSION= 2
-SO_MINOR_VERSION= 0
+SO_MINOR_VERSION= 1
 
 SRCDIR= @top_srcdir@
 include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/odbc/Version.mk b/src/interfaces/odbc/Version.mk
index c927772c0bbcd7791a6249b3752b0921bd056991..02f41ab98c34844ffcf03b3578310397299368a6 100644
--- a/src/interfaces/odbc/Version.mk
+++ b/src/interfaces/odbc/Version.mk
@@ -1,5 +1,5 @@
-VERSION = 0.25
+VERSION = 0.26
 EXTVER  = .0
 
 SO_MAJOR_VERSION = 0
-SO_MINOR_VERSION = 25
+SO_MINOR_VERSION = 26
diff --git a/src/tools/RELEASE_CHANGES b/src/tools/RELEASE_CHANGES
index ce97b005e218dfb3b8613a5ef50642e639a4c5a5..27e67c0fc7e790b36faefed4385f93090e6d2812 100644
--- a/src/tools/RELEASE_CHANGES
+++ b/src/tools/RELEASE_CHANGES
@@ -17,3 +17,4 @@ update documentation
 	psql help in psqlHelp.c
 	man pages
 	sgml docs
+update VERSION numbers of interfaces