From a585c20d12d0e22befc8308e9f8ccb6f54a5df69 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 12 Nov 2001 21:04:46 +0000 Subject: Tweak parser so that there is a defined representation for datatypes bpchar, bit, numeric with typmod -1. Alter format_type so that this representation is printed when the typmod is -1. This ensures that tables having such columns can be pg_dump'd and reloaded correctly. Also, remove the rather useless and non-SQL-compliant default precision and scale for type NUMERIC. A numeric column declared as such (with no precision/scale) will now have typmod -1 which means that numeric values of any precision/scale can be stored in it, without conversion to a uniform scale. This seems significantly more useful than the former behavior. Part of response to bug #513. --- src/backend/parser/analyze.c | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) (limited to 'src/backend/parser/analyze.c') diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 104e1ab3ba..87df6f55e7 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.211 2001/11/05 17:46:26 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.212 2001/11/12 21:04:45 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -34,7 +34,6 @@ #include "rewrite/rewriteManip.h" #include "utils/builtins.h" #include "utils/fmgroids.h" -#include "utils/numeric.h" #include "utils/relcache.h" #include "utils/syscache.h" #include "utils/temprel.h" @@ -3179,32 +3178,6 @@ transformColumnType(ParseState *pstate, ColumnDef *column) TypeName *typename = column->typename; Type ctype = typenameType(typename->name); - /* - * If the column doesn't have an explicitly specified typmod, check to - * see if we want to insert a default length. - * - * Note that we deliberately do NOT look at array or set information - * here; "numeric[]" needs the same default typmod as "numeric". - */ - if (typename->typmod == -1) - { - switch (typeTypeId(ctype)) - { - case BPCHAROID: - /* "char" -> "char(1)" */ - typename->typmod = VARHDRSZ + 1; - break; - case NUMERICOID: - typename->typmod = VARHDRSZ + - ((NUMERIC_DEFAULT_PRECISION << 16) | NUMERIC_DEFAULT_SCALE); - break; - case BITOID: - /* 'bit' -> 'bit(1)' */ - typename->typmod = 1; - break; - } - } - /* * Is this the name of a complex type? If so, implement it as a set. * -- cgit v1.2.1