*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.24 1998/02/10 04:00:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.25 1998/02/10 16:02:44 momjian Exp $
*
*-------------------------------------------------------------------------
*/
{
outputstr = fmgr(typoutput, attr,
gettypelem(typeinfo->attrs[i]->atttypid),
- (int)typeinfo->attrs[i]->atttypmod);
+ typeinfo->attrs[i]->atttypmod);
pq_putint(strlen(outputstr) + VARHDRSZ, VARHDRSZ);
pq_putnchar(outputstr, strlen(outputstr));
pfree(outputstr);
{
value = fmgr(typoutput, attr,
gettypelem(typeinfo->attrs[i]->atttypid),
- (int)typeinfo->attrs[i]->atttypmod);
+ typeinfo->attrs[i]->atttypmod);
printatt((unsigned) i + 1, typeinfo->attrs[i], value);
pfree(value);
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.34 1998/02/10 04:00:14 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.35 1998/02/10 16:02:46 momjian Exp $
*
* NOTES
* some of the executor utility code such as "ExecTypeFromTL" should be
AttrNumber attributeNumber,
char *attributeName,
Oid typeid,
- int typmod,
+ int16 typmod,
int attdim,
bool attisset)
{
TupleConstr *constr = (TupleConstr *) palloc(sizeof(TupleConstr));
char *attname;
char *typename;
- int atttypmod;
+ int16 atttypmod;
int attdim;
int ndef = 0;
bool attisset;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.40 1998/01/31 04:38:18 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.41 1998/02/10 16:02:51 momjian Exp $
*
*-------------------------------------------------------------------------
*/
static int CountTuples(Relation relation);
extern FILE *Pfout,
- *Pfin;
+ *Pfin;
static int lineno;
FmgrInfo *out_functions;
Oid out_func_oid;
Oid *elements;
+ int16 *typmod;
Datum value;
bool isnull; /* The attribute we are copying is null */
char *nulls;
{
out_functions = (FmgrInfo *) palloc(attr_count * sizeof(FmgrInfo));
elements = (Oid *) palloc(attr_count * sizeof(Oid));
+ typmod = (int16 *) palloc(attr_count * sizeof(int16));
for (i = 0; i < attr_count; i++)
{
out_func_oid = (Oid) GetOutputFunction(attr[i]->atttypid);
fmgr_info(out_func_oid, &out_functions[i]);
elements[i] = GetTypeElement(attr[i]->atttypid);
+ typmod[i] = attr[i]->atttypmod;
}
nulls = NULL; /* meaningless, but compiler doesn't know
* that */
else
{
elements = NULL;
+ typmod = NULL;
out_functions = NULL;
nulls = (char *) palloc(attr_count);
for (i = 0; i < attr_count; i++)
{
if (!isnull)
{
- string = (char *) (*fmgr_faddr(&out_functions[i])) (value, elements[i]);
+ string = (char *) (*fmgr_faddr(&out_functions[i]))
+ (value, elements[i], typmod[i]);
CopyAttributeOut(fp, string, delim);
pfree(string);
}
{
pfree(out_functions);
pfree(elements);
+ pfree(typmod);
}
heap_close(rel);
tuples_read = 0;
bool reading_to_eof = true;
Oid *elements;
+ int16 *typmod;
FuncIndexInfo *finfo,
**finfoP = NULL;
TupleDesc *itupdescArr;
{
in_functions = (FmgrInfo *) palloc(attr_count * sizeof(FmgrInfo));
elements = (Oid *) palloc(attr_count * sizeof(Oid));
+ typmod = (int16 *) palloc(attr_count * sizeof(int16));
for (i = 0; i < attr_count; i++)
{
in_func_oid = (Oid) GetInputFunction(attr[i]->atttypid);
fmgr_info(in_func_oid, &in_functions[i]);
elements[i] = GetTypeElement(attr[i]->atttypid);
+ typmod[i] = attr[i]->atttypmod;
}
}
else
{
in_functions = NULL;
elements = NULL;
+ typmod = NULL;
fread(&ntuples, sizeof(int32), 1, fp);
if (ntuples != 0)
reading_to_eof = false;
values[i] =
(Datum) (*fmgr_faddr(&in_functions[i])) (string,
elements[i],
- attr[i]->atttypmod);
+ typmod[i]);
/*
* Sanity check - by reference attributes cannot
done = true;
}
pfree(values);
+ pfree(nulls);
if (!binary)
+ {
pfree(in_functions);
- pfree(nulls);
+ pfree(elements);
+ pfree(typmod);
+ }
pfree(byval);
heap_close(rel);
}
* columns. (ie. tuples from the same group are consecutive)
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.15 1998/02/10 04:00:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.16 1998/02/10 16:02:58 momjian Exp $
*
*-------------------------------------------------------------------------
*/
val1 = fmgr(typoutput, attr1,
gettypelem(tupdesc->attrs[att - 1]->atttypid),
- (int)tupdesc->attrs[att - 1]->atttypmod);
+ tupdesc->attrs[att - 1]->atttypmod);
val2 = fmgr(typoutput, attr2,
gettypelem(tupdesc->attrs[att - 1]->atttypid),
- (int)tupdesc->attrs[att - 1]->atttypmod);
+ tupdesc->attrs[att - 1]->atttypmod);
/*
* now, val1 and val2 are ascii representations so we can use
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.13 1998/02/10 04:00:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.14 1998/02/10 16:03:03 momjian Exp $
*
*-------------------------------------------------------------------------
*/
continue;
val1 = fmgr(typoutput, attr1,
gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid),
- (int)tupDesc->attrs[uniqueAttrNum - 1]->atttypmod);
+ tupDesc->attrs[uniqueAttrNum - 1]->atttypmod);
val2 = fmgr(typoutput, attr2,
gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid),
- (int)tupDesc->attrs[uniqueAttrNum - 1]->atttypmod);
+ tupDesc->attrs[uniqueAttrNum - 1]->atttypmod);
/*
* now, val1 and val2 are ascii representations so we can
return (fmgr(foutoid, val,
gettypelem(tupdesc->attrs[fnumber - 1]->atttypid),
- (int)tupdesc->attrs[fnumber - 1]->atttypmod));
+ tupdesc->attrs[fnumber - 1]->atttypmod));
}
Datum
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-dumpdata.c,v 1.12 1998/02/10 04:00:58 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-dumpdata.c,v 1.13 1998/02/10 16:03:12 momjian Exp $
*
*-------------------------------------------------------------------------
*/
{
values[i] = fmgr(typoutput, attr,
gettypelem(typeinfo->attrs[i]->atttypid),
- (int)typeinfo->attrs[i]->atttypmod);
+ typeinfo->attrs[i]->atttypmod);
}
else
values[i] = NULL;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.6 1998/02/10 04:00:50 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.7 1998/02/10 16:03:17 momjian Exp $
*
* NOTES
* Creator functions in POSTGRES 4.2 are generated automatically. Most of
makeVar(Index varno,
AttrNumber varattno,
Oid vartype,
- int vartypmod,
+ int16 vartypmod,
Index varlevelsup,
Index varnoold,
AttrNumber varoattno)
Resdom *
makeResdom(AttrNumber resno,
Oid restype,
- int restypmod,
+ int16 restypmod,
char *resname,
Index reskey,
Oid reskeyop,
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.28 1998/02/10 04:00:57 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.29 1998/02/10 16:03:21 momjian Exp $
*
* NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which
appendStringInfo(str, buf);
sprintf(buf, " :vartype %u ", node->vartype);
appendStringInfo(str, buf);
- sprintf(buf, " :vartypmod %u ", node->vartypmod);
+ sprintf(buf, " :vartypmod %d ", node->vartypmod);
appendStringInfo(str, buf);
sprintf(buf, " :varlevelsup %u ", node->varlevelsup);
appendStringInfo(str, buf);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.23 1998/02/10 04:01:03 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.24 1998/02/10 16:03:23 momjian Exp $
*
* NOTES
* Most of the read functions for plan nodes are tested. (In fact, they
token = lsptok(NULL, &length); /* eat :vartypmod */
token = lsptok(NULL, &length); /* get vartypmod */
- local_node->vartypmod = (Oid) atol(token);
+ local_node->vartypmod = atoi(token);
token = lsptok(NULL, &length); /* eat :varlevelsup */
token = lsptok(NULL, &length); /* get varlevelsup */
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.18 1998/02/07 06:11:30 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.19 1998/02/10 16:03:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include "parser/parse_target.h"
#include "utils/builtins.h"
-static Node *parser_typecast(Value *expr, TypeName *typename, int atttypmod);
+static Node *parser_typecast(Value *expr, TypeName *typename, int16 atttypmod);
/*
* transformExpr -
}
static Node *
-parser_typecast(Value *expr, TypeName *typename, int atttypmod)
+parser_typecast(Value *expr, TypeName *typename, int16 atttypmod)
{
/* check for passing non-ints */
Const *adt;
}
Node *
-parser_typecast2(Node *expr, Oid exprType, Type tp, int atttypmod)
+parser_typecast2(Node *expr, Oid exprType, Type tp, int16 atttypmod)
{
/* check for passing non-ints */
Const *adt;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.13 1998/02/10 04:01:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.14 1998/02/10 16:03:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
Resdom *resnode;
Var *varnode;
Oid typeid;
- int type_mod;
+ int16 type_mod;
int attno;
attno = get_attnum(relid, attname);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.11 1998/02/10 04:01:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.12 1998/02/10 16:03:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
int vnum,
attid;
Oid vartypeid;
- int type_mod;
+ int16 type_mod;
int sublevels_up;
vnum = refnameRangeTablePosn(pstate, refname, &sublevels_up);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.8 1998/02/10 04:01:57 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.9 1998/02/10 16:03:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
{
Node *expr;
Oid type_id;
- int type_mod;
+ int16 type_mod;
char *identname;
char *resname;
case T_Attr:
{
Oid type_id;
- int type_mod;
+ int16 type_mod;
Attr *att = (Attr *) res->val;
Node *result;
char *attrname;
{
Oid type_id,
attrtype;
- int type_mod,
+ int16 type_mod,
attrtypmod;
int resdomno;
Relation rd;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.4 1998/01/16 23:20:23 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.5 1998/02/10 16:03:42 momjian Exp $
*
*-------------------------------------------------------------------------
*/
/* Given a type structure and a string, returns the internal form of
that string */
char *
-stringTypeString(Type tp, char *string, int atttypmod)
+stringTypeString(Type tp, char *string, int16 atttypmod)
{
Oid op;
Oid typelem;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.26 1998/02/07 06:11:38 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.27 1998/02/10 16:03:46 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* because we pass typelem as the second argument for array_in.)
*/
char *
-bpcharin(char *s, int dummy, int atttypmod)
+bpcharin(char *s, int dummy, int16 atttypmod)
{
char *result,
*r;
* because we pass typelem as the second argument for array_in.)
*/
char *
-varcharin(char *s, int dummy, int atttypmod)
+varcharin(char *s, int dummy, int16 atttypmod)
{
char *result;
int len;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.11 1998/01/29 03:23:09 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.12 1998/02/10 16:03:51 momjian Exp $
*
* NOTES
* Eventually, the index information should go through here, too.
* return the "atttypmod" field from the attribute relation.
*
*/
-int
+int16
get_atttypmod(Oid relid, AttrNumber attnum)
{
FormData_pg_attribute att_tup;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: tupdesc.h,v 1.14 1998/02/10 04:02:13 momjian Exp $
+ * $Id: tupdesc.h,v 1.15 1998/02/10 16:03:57 momjian Exp $
*
*-------------------------------------------------------------------------
*/
AttrNumber attributeNumber,
char *attributeName,
Oid typeid,
- int typmod,
+ int16 typmod,
int attdim,
bool attisset);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_attribute.h,v 1.26 1998/02/10 04:02:16 momjian Exp $
+ * $Id: pg_attribute.h,v 1.27 1998/02/10 16:04:03 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
/*
* atttypmod records type-specific modifications supplied at table
* creation time.
- * This is not integrated into all areas of the source. It is in
- * TypeName to pass typmod info from the parser during table creation
- * time, and it is used in the parser when converting a string to a
- * typed constant associated with a variable. We also have a hack in
- * execMain.c/execUtils.c that uses atttypmod to properly create tables
- * for SELECT * INTO TABLE test2 FROM test;
*/
bool attbyval;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_type.h,v 1.32 1998/02/10 04:02:17 momjian Exp $
+ * $Id: pg_type.h,v 1.33 1998/02/10 16:04:10 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
#define TIMESTAMPOID 1296
-#define USE_ATTTYPMOD(typeid) ((typeid) == BPCHAROID || (typeid) == VARCHAROID)
#define VARLENA_FIXED_SIZE(attr) ((attr)->atttypid == BPCHAROID && (attr)->atttypmod > 0)
/*
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: makefuncs.h,v 1.8 1998/02/10 04:02:23 momjian Exp $
+ * $Id: makefuncs.h,v 1.9 1998/02/10 16:04:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern Var * makeVar(Index varno,
AttrNumber varattno,
Oid vartype,
- int vartypmod,
+ int16 vartypmod,
Index varlevelsup,
Index varnoold,
AttrNumber varoattno);
extern Resdom * makeResdom(AttrNumber resno,
Oid restype,
- int restypmod,
+ int16 restypmod,
char *resname,
Index reskey,
Oid reskeyop,
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.46 1998/01/17 04:53:40 momjian Exp $
+ * $Id: parsenodes.h,v 1.47 1998/02/10 16:04:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
char *name; /* name of the type */
bool timezone; /* timezone specified? */
bool setof; /* is a set? */
- int2 typmod; /* type modifier */
+ int16 typmod; /* type modifier */
List *arrayBounds; /* array bounds */
} TypeName;
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: primnodes.h,v 1.17 1998/02/10 04:02:32 momjian Exp $
+ * $Id: primnodes.h,v 1.18 1998/02/10 16:04:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
NodeTag type;
AttrNumber resno;
Oid restype;
- int restypmod;
+ int16 restypmod;
char *resname;
Index reskey;
Oid reskeyop;
Index varno;
AttrNumber varattno;
Oid vartype;
- int vartypmod;
+ int16 vartypmod;
Index varlevelsup; /* erased by upper optimizer */
Index varnoold; /* only used by optimizer */
AttrNumber varoattno; /* only used by optimizer */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parse_expr.h,v 1.6 1998/01/20 05:04:47 momjian Exp $
+ * $Id: parse_expr.h,v 1.7 1998/02/10 16:04:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern Node *transformExpr(ParseState *pstate, Node *expr, int precedence);
extern Node *transformIdent(ParseState *pstate, Node *expr, int precedence);
extern Oid exprType(Node *expr);
-extern Node *parser_typecast2(Node *expr, Oid exprType, Type tp, int attypmod);
+extern Node *parser_typecast2(Node *expr, Oid exprType, Type tp, int16 attypmod);
#endif /* PARSE_EXPR_H */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: parse_type.h,v 1.3 1998/01/16 23:21:03 momjian Exp $
+ * $Id: parse_type.h,v 1.4 1998/02/10 16:04:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern bool typeByVal(Type t);
extern char *typeTypeName(Type t);
extern char typeTypeFlag(Type t);
-extern char *stringTypeString(Type tp, char *string, int atttypmod);
+extern char *stringTypeString(Type tp, char *string, int16 atttypmod);
extern Oid typeidRetoutfunc(Oid type_id);
extern Oid typeidTypeRelid(Oid type_id);
extern Oid typeTypeRelid(Type typ);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: builtins.h,v 1.35 1998/02/02 03:11:37 scrappy Exp $
+ * $Id: builtins.h,v 1.36 1998/02/10 16:04:36 momjian Exp $
*
* NOTES
* This should normally only be included by fmgr.h.
time_t datetime_timestamp(DateTime *datetime);
/* varchar.c */
-extern char *bpcharin(char *s, int dummy, int atttypmod);
+extern char *bpcharin(char *s, int dummy, int16 atttypmod);
extern char *bpcharout(char *s);
extern bool bpchareq(char *arg1, char *arg2);
extern bool bpcharne(char *arg1, char *arg2);
extern int32 bpcharlen(char *arg);
extern uint32 hashbpchar(struct varlena * key);
-extern char *varcharin(char *s, int dummy, int atttypmod);
+extern char *varcharin(char *s, int dummy, int16 atttypmod);
extern char *varcharout(char *s);
extern bool varchareq(char *arg1, char *arg2);
extern bool varcharne(char *arg1, char *arg2);
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: lsyscache.h,v 1.8 1998/01/24 22:50:48 momjian Exp $
+ * $Id: lsyscache.h,v 1.9 1998/02/10 16:04:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
extern AttrNumber get_attnum(Oid relid, char *attname);
extern Oid get_atttype(Oid relid, AttrNumber attnum);
extern bool get_attisset(Oid relid, char *attname);
-extern int get_atttypmod(Oid relid, AttrNumber attnum);
+extern int16 get_atttypmod(Oid relid, AttrNumber attnum);
extern RegProcedure get_opcode(Oid opid);
extern char *get_opname(Oid opid);
extern bool op_mergesortable(Oid opid, Oid ltype, Oid rtype,