diff --git a/src/backend/regex/regc_locale.c b/src/backend/regex/regc_locale.c
index 99ab48cd8a873d06bc657ed8f01a5d62df029f14..647e6b134eb3909a4cc0cb387a4c4ee2704ceb98 100644
--- a/src/backend/regex/regc_locale.c
+++ b/src/backend/regex/regc_locale.c
@@ -47,7 +47,7 @@
  * permission to use and distribute the software in accordance with the
  * terms specified in this license.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regc_locale.c,v 1.3 2003/08/08 21:41:56 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regc_locale.c,v 1.4 2003/09/29 00:21:58 tgl Exp $
  */
 
 /* ASCII character-name table */
@@ -388,6 +388,12 @@ pg_isgraph(pg_wchar c)
 	return (c >= 0 && c <= UCHAR_MAX && isgraph((unsigned char) c));
 }
 
+static int
+pg_isprint(pg_wchar c)
+{
+	return (c >= 0 && c <= UCHAR_MAX && isprint((unsigned char) c));
+}
+
 static int
 pg_ispunct(pg_wchar c)
 {
@@ -657,16 +663,25 @@ cclass(struct vars * v,			/* context */
 	switch ((enum classes) index)
 	{
 		case CC_PRINT:
+			cv = getcvec(v, UCHAR_MAX, 0, 0);
+			if (cv)
+			{
+				for (i = 0; i <= UCHAR_MAX; i++)
+				{
+					if (pg_isprint((chr) i))
+						addchr(cv, (chr) i);
+				}
+			}
+			break;
 		case CC_ALNUM:
-			cv = getcvec(v, UCHAR_MAX, 1, 0);
+			cv = getcvec(v, UCHAR_MAX, 0, 0);
 			if (cv)
 			{
 				for (i = 0; i <= UCHAR_MAX; i++)
 				{
-					if (pg_isalpha((chr) i))
+					if (pg_isalnum((chr) i))
 						addchr(cv, (chr) i);
 				}
-				addrange(cv, (chr) '0', (chr) '9');
 			}
 			break;
 		case CC_ALPHA:
diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c
index cfc2481fca3308ab074881b0186ea9e54b0d8070..1d266b41ef896cd3ddf85a544854058c5abfbbbf 100644
--- a/src/backend/regex/regcomp.c
+++ b/src/backend/regex/regcomp.c
@@ -28,7 +28,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regcomp.c,v 1.38 2003/08/08 21:41:56 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regcomp.c,v 1.39 2003/09/29 00:21:58 tgl Exp $
  *
  */
 
@@ -184,6 +184,7 @@ static int	pg_isalnum(pg_wchar c);
 static int	pg_isupper(pg_wchar c);
 static int	pg_islower(pg_wchar c);
 static int	pg_isgraph(pg_wchar c);
+static int	pg_isprint(pg_wchar c);
 static int	pg_ispunct(pg_wchar c);
 static int	pg_isspace(pg_wchar c);
 static pg_wchar pg_toupper(pg_wchar c);