mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Pass around typmod as int16.
This commit is contained in:
parent
2a3c589c5a
commit
0386a50f31
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -124,7 +124,7 @@ printtup(HeapTuple tuple, TupleDesc typeinfo)
|
|||||||
{
|
{
|
||||||
outputstr = fmgr(typoutput, attr,
|
outputstr = fmgr(typoutput, attr,
|
||||||
gettypelem(typeinfo->attrs[i]->atttypid),
|
gettypelem(typeinfo->attrs[i]->atttypid),
|
||||||
(int)typeinfo->attrs[i]->atttypmod);
|
typeinfo->attrs[i]->atttypmod);
|
||||||
pq_putint(strlen(outputstr) + VARHDRSZ, VARHDRSZ);
|
pq_putint(strlen(outputstr) + VARHDRSZ, VARHDRSZ);
|
||||||
pq_putnchar(outputstr, strlen(outputstr));
|
pq_putnchar(outputstr, strlen(outputstr));
|
||||||
pfree(outputstr);
|
pfree(outputstr);
|
||||||
@ -191,7 +191,7 @@ debugtup(HeapTuple tuple, TupleDesc typeinfo)
|
|||||||
{
|
{
|
||||||
value = fmgr(typoutput, attr,
|
value = fmgr(typoutput, attr,
|
||||||
gettypelem(typeinfo->attrs[i]->atttypid),
|
gettypelem(typeinfo->attrs[i]->atttypid),
|
||||||
(int)typeinfo->attrs[i]->atttypmod);
|
typeinfo->attrs[i]->atttypmod);
|
||||||
printatt((unsigned) i + 1, typeinfo->attrs[i], value);
|
printatt((unsigned) i + 1, typeinfo->attrs[i], value);
|
||||||
pfree(value);
|
pfree(value);
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* some of the executor utility code such as "ExecTypeFromTL" should be
|
* some of the executor utility code such as "ExecTypeFromTL" should be
|
||||||
@ -255,7 +255,7 @@ TupleDescInitEntry(TupleDesc desc,
|
|||||||
AttrNumber attributeNumber,
|
AttrNumber attributeNumber,
|
||||||
char *attributeName,
|
char *attributeName,
|
||||||
Oid typeid,
|
Oid typeid,
|
||||||
int typmod,
|
int16 typmod,
|
||||||
int attdim,
|
int attdim,
|
||||||
bool attisset)
|
bool attisset)
|
||||||
{
|
{
|
||||||
@ -448,7 +448,7 @@ BuildDescForRelation(List *schema, char *relname)
|
|||||||
TupleConstr *constr = (TupleConstr *) palloc(sizeof(TupleConstr));
|
TupleConstr *constr = (TupleConstr *) palloc(sizeof(TupleConstr));
|
||||||
char *attname;
|
char *attname;
|
||||||
char *typename;
|
char *typename;
|
||||||
int atttypmod;
|
int16 atttypmod;
|
||||||
int attdim;
|
int attdim;
|
||||||
int ndef = 0;
|
int ndef = 0;
|
||||||
bool attisset;
|
bool attisset;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -65,7 +65,7 @@ static void CopyAttributeOut(FILE *fp, char *string, char *delim);
|
|||||||
static int CountTuples(Relation relation);
|
static int CountTuples(Relation relation);
|
||||||
|
|
||||||
extern FILE *Pfout,
|
extern FILE *Pfout,
|
||||||
*Pfin;
|
*Pfin;
|
||||||
|
|
||||||
static int lineno;
|
static int lineno;
|
||||||
|
|
||||||
@ -205,6 +205,7 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
FmgrInfo *out_functions;
|
FmgrInfo *out_functions;
|
||||||
Oid out_func_oid;
|
Oid out_func_oid;
|
||||||
Oid *elements;
|
Oid *elements;
|
||||||
|
int16 *typmod;
|
||||||
Datum value;
|
Datum value;
|
||||||
bool isnull; /* The attribute we are copying is null */
|
bool isnull; /* The attribute we are copying is null */
|
||||||
char *nulls;
|
char *nulls;
|
||||||
@ -230,11 +231,13 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
{
|
{
|
||||||
out_functions = (FmgrInfo *) palloc(attr_count * sizeof(FmgrInfo));
|
out_functions = (FmgrInfo *) palloc(attr_count * sizeof(FmgrInfo));
|
||||||
elements = (Oid *) palloc(attr_count * sizeof(Oid));
|
elements = (Oid *) palloc(attr_count * sizeof(Oid));
|
||||||
|
typmod = (int16 *) palloc(attr_count * sizeof(int16));
|
||||||
for (i = 0; i < attr_count; i++)
|
for (i = 0; i < attr_count; i++)
|
||||||
{
|
{
|
||||||
out_func_oid = (Oid) GetOutputFunction(attr[i]->atttypid);
|
out_func_oid = (Oid) GetOutputFunction(attr[i]->atttypid);
|
||||||
fmgr_info(out_func_oid, &out_functions[i]);
|
fmgr_info(out_func_oid, &out_functions[i]);
|
||||||
elements[i] = GetTypeElement(attr[i]->atttypid);
|
elements[i] = GetTypeElement(attr[i]->atttypid);
|
||||||
|
typmod[i] = attr[i]->atttypmod;
|
||||||
}
|
}
|
||||||
nulls = NULL; /* meaningless, but compiler doesn't know
|
nulls = NULL; /* meaningless, but compiler doesn't know
|
||||||
* that */
|
* that */
|
||||||
@ -242,6 +245,7 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
elements = NULL;
|
elements = NULL;
|
||||||
|
typmod = NULL;
|
||||||
out_functions = NULL;
|
out_functions = NULL;
|
||||||
nulls = (char *) palloc(attr_count);
|
nulls = (char *) palloc(attr_count);
|
||||||
for (i = 0; i < attr_count; i++)
|
for (i = 0; i < attr_count; i++)
|
||||||
@ -271,7 +275,8 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
{
|
{
|
||||||
if (!isnull)
|
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);
|
CopyAttributeOut(fp, string, delim);
|
||||||
pfree(string);
|
pfree(string);
|
||||||
}
|
}
|
||||||
@ -345,6 +350,7 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
{
|
{
|
||||||
pfree(out_functions);
|
pfree(out_functions);
|
||||||
pfree(elements);
|
pfree(elements);
|
||||||
|
pfree(typmod);
|
||||||
}
|
}
|
||||||
|
|
||||||
heap_close(rel);
|
heap_close(rel);
|
||||||
@ -376,6 +382,7 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
tuples_read = 0;
|
tuples_read = 0;
|
||||||
bool reading_to_eof = true;
|
bool reading_to_eof = true;
|
||||||
Oid *elements;
|
Oid *elements;
|
||||||
|
int16 *typmod;
|
||||||
FuncIndexInfo *finfo,
|
FuncIndexInfo *finfo,
|
||||||
**finfoP = NULL;
|
**finfoP = NULL;
|
||||||
TupleDesc *itupdescArr;
|
TupleDesc *itupdescArr;
|
||||||
@ -498,17 +505,20 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
{
|
{
|
||||||
in_functions = (FmgrInfo *) palloc(attr_count * sizeof(FmgrInfo));
|
in_functions = (FmgrInfo *) palloc(attr_count * sizeof(FmgrInfo));
|
||||||
elements = (Oid *) palloc(attr_count * sizeof(Oid));
|
elements = (Oid *) palloc(attr_count * sizeof(Oid));
|
||||||
|
typmod = (int16 *) palloc(attr_count * sizeof(int16));
|
||||||
for (i = 0; i < attr_count; i++)
|
for (i = 0; i < attr_count; i++)
|
||||||
{
|
{
|
||||||
in_func_oid = (Oid) GetInputFunction(attr[i]->atttypid);
|
in_func_oid = (Oid) GetInputFunction(attr[i]->atttypid);
|
||||||
fmgr_info(in_func_oid, &in_functions[i]);
|
fmgr_info(in_func_oid, &in_functions[i]);
|
||||||
elements[i] = GetTypeElement(attr[i]->atttypid);
|
elements[i] = GetTypeElement(attr[i]->atttypid);
|
||||||
|
typmod[i] = attr[i]->atttypmod;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
in_functions = NULL;
|
in_functions = NULL;
|
||||||
elements = NULL;
|
elements = NULL;
|
||||||
|
typmod = NULL;
|
||||||
fread(&ntuples, sizeof(int32), 1, fp);
|
fread(&ntuples, sizeof(int32), 1, fp);
|
||||||
if (ntuples != 0)
|
if (ntuples != 0)
|
||||||
reading_to_eof = false;
|
reading_to_eof = false;
|
||||||
@ -574,7 +584,7 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
values[i] =
|
values[i] =
|
||||||
(Datum) (*fmgr_faddr(&in_functions[i])) (string,
|
(Datum) (*fmgr_faddr(&in_functions[i])) (string,
|
||||||
elements[i],
|
elements[i],
|
||||||
attr[i]->atttypmod);
|
typmod[i]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sanity check - by reference attributes cannot
|
* Sanity check - by reference attributes cannot
|
||||||
@ -801,9 +811,13 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
|
|||||||
done = true;
|
done = true;
|
||||||
}
|
}
|
||||||
pfree(values);
|
pfree(values);
|
||||||
if (!binary)
|
|
||||||
pfree(in_functions);
|
|
||||||
pfree(nulls);
|
pfree(nulls);
|
||||||
|
if (!binary)
|
||||||
|
{
|
||||||
|
pfree(in_functions);
|
||||||
|
pfree(elements);
|
||||||
|
pfree(typmod);
|
||||||
|
}
|
||||||
pfree(byval);
|
pfree(byval);
|
||||||
heap_close(rel);
|
heap_close(rel);
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
* columns. (ie. tuples from the same group are consecutive)
|
* columns. (ie. tuples from the same group are consecutive)
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -418,10 +418,10 @@ sameGroup(TupleTableSlot *oldslot,
|
|||||||
|
|
||||||
val1 = fmgr(typoutput, attr1,
|
val1 = fmgr(typoutput, attr1,
|
||||||
gettypelem(tupdesc->attrs[att - 1]->atttypid),
|
gettypelem(tupdesc->attrs[att - 1]->atttypid),
|
||||||
(int)tupdesc->attrs[att - 1]->atttypmod);
|
tupdesc->attrs[att - 1]->atttypmod);
|
||||||
val2 = fmgr(typoutput, attr2,
|
val2 = fmgr(typoutput, attr2,
|
||||||
gettypelem(tupdesc->attrs[att - 1]->atttypid),
|
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
|
* now, val1 and val2 are ascii representations so we can use
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -198,10 +198,10 @@ ExecUnique(Unique *node)
|
|||||||
continue;
|
continue;
|
||||||
val1 = fmgr(typoutput, attr1,
|
val1 = fmgr(typoutput, attr1,
|
||||||
gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid),
|
gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid),
|
||||||
(int)tupDesc->attrs[uniqueAttrNum - 1]->atttypmod);
|
tupDesc->attrs[uniqueAttrNum - 1]->atttypmod);
|
||||||
val2 = fmgr(typoutput, attr2,
|
val2 = fmgr(typoutput, attr2,
|
||||||
gettypelem(tupDesc->attrs[uniqueAttrNum - 1]->atttypid),
|
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
|
* now, val1 and val2 are ascii representations so we can
|
||||||
|
@ -432,7 +432,7 @@ SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber)
|
|||||||
|
|
||||||
return (fmgr(foutoid, val,
|
return (fmgr(foutoid, val,
|
||||||
gettypelem(tupdesc->attrs[fnumber - 1]->atttypid),
|
gettypelem(tupdesc->attrs[fnumber - 1]->atttypid),
|
||||||
(int)tupdesc->attrs[fnumber - 1]->atttypmod));
|
tupdesc->attrs[fnumber - 1]->atttypmod));
|
||||||
}
|
}
|
||||||
|
|
||||||
Datum
|
Datum
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -314,7 +314,7 @@ be_printtup(HeapTuple tuple, TupleDesc typeinfo)
|
|||||||
{
|
{
|
||||||
values[i] = fmgr(typoutput, attr,
|
values[i] = fmgr(typoutput, attr,
|
||||||
gettypelem(typeinfo->attrs[i]->atttypid),
|
gettypelem(typeinfo->attrs[i]->atttypid),
|
||||||
(int)typeinfo->attrs[i]->atttypmod);
|
typeinfo->attrs[i]->atttypmod);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
values[i] = NULL;
|
values[i] = NULL;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* Creator functions in POSTGRES 4.2 are generated automatically. Most of
|
* Creator functions in POSTGRES 4.2 are generated automatically. Most of
|
||||||
@ -53,7 +53,7 @@ Var *
|
|||||||
makeVar(Index varno,
|
makeVar(Index varno,
|
||||||
AttrNumber varattno,
|
AttrNumber varattno,
|
||||||
Oid vartype,
|
Oid vartype,
|
||||||
int vartypmod,
|
int16 vartypmod,
|
||||||
Index varlevelsup,
|
Index varlevelsup,
|
||||||
Index varnoold,
|
Index varnoold,
|
||||||
AttrNumber varoattno)
|
AttrNumber varoattno)
|
||||||
@ -78,7 +78,7 @@ makeVar(Index varno,
|
|||||||
Resdom *
|
Resdom *
|
||||||
makeResdom(AttrNumber resno,
|
makeResdom(AttrNumber resno,
|
||||||
Oid restype,
|
Oid restype,
|
||||||
int restypmod,
|
int16 restypmod,
|
||||||
char *resname,
|
char *resname,
|
||||||
Index reskey,
|
Index reskey,
|
||||||
Oid reskeyop,
|
Oid reskeyop,
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* Every (plan) node in POSTGRES has an associated "out" routine which
|
* Every (plan) node in POSTGRES has an associated "out" routine which
|
||||||
@ -698,7 +698,7 @@ _outVar(StringInfo str, Var *node)
|
|||||||
appendStringInfo(str, buf);
|
appendStringInfo(str, buf);
|
||||||
sprintf(buf, " :vartype %u ", node->vartype);
|
sprintf(buf, " :vartype %u ", node->vartype);
|
||||||
appendStringInfo(str, buf);
|
appendStringInfo(str, buf);
|
||||||
sprintf(buf, " :vartypmod %u ", node->vartypmod);
|
sprintf(buf, " :vartypmod %d ", node->vartypmod);
|
||||||
appendStringInfo(str, buf);
|
appendStringInfo(str, buf);
|
||||||
sprintf(buf, " :varlevelsup %u ", node->varlevelsup);
|
sprintf(buf, " :varlevelsup %u ", node->varlevelsup);
|
||||||
appendStringInfo(str, buf);
|
appendStringInfo(str, buf);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* Most of the read functions for plan nodes are tested. (In fact, they
|
* Most of the read functions for plan nodes are tested. (In fact, they
|
||||||
@ -816,7 +816,7 @@ _readVar()
|
|||||||
|
|
||||||
token = lsptok(NULL, &length); /* eat :vartypmod */
|
token = lsptok(NULL, &length); /* eat :vartypmod */
|
||||||
token = lsptok(NULL, &length); /* get 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); /* eat :varlevelsup */
|
||||||
token = lsptok(NULL, &length); /* get varlevelsup */
|
token = lsptok(NULL, &length); /* get varlevelsup */
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -31,7 +31,7 @@
|
|||||||
#include "parser/parse_target.h"
|
#include "parser/parse_target.h"
|
||||||
#include "utils/builtins.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 -
|
* transformExpr -
|
||||||
@ -393,7 +393,7 @@ exprType(Node *expr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Node *
|
static Node *
|
||||||
parser_typecast(Value *expr, TypeName *typename, int atttypmod)
|
parser_typecast(Value *expr, TypeName *typename, int16 atttypmod)
|
||||||
{
|
{
|
||||||
/* check for passing non-ints */
|
/* check for passing non-ints */
|
||||||
Const *adt;
|
Const *adt;
|
||||||
@ -471,7 +471,7 @@ parser_typecast(Value *expr, TypeName *typename, int atttypmod)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Node *
|
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 */
|
/* check for passing non-ints */
|
||||||
Const *adt;
|
Const *adt;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1056,7 +1056,7 @@ setup_tlist(char *attname, Oid relid)
|
|||||||
Resdom *resnode;
|
Resdom *resnode;
|
||||||
Var *varnode;
|
Var *varnode;
|
||||||
Oid typeid;
|
Oid typeid;
|
||||||
int type_mod;
|
int16 type_mod;
|
||||||
int attno;
|
int attno;
|
||||||
|
|
||||||
attno = get_attnum(relid, attname);
|
attno = get_attnum(relid, attname);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -246,7 +246,7 @@ make_var(ParseState *pstate, Oid relid, char *refname,
|
|||||||
int vnum,
|
int vnum,
|
||||||
attid;
|
attid;
|
||||||
Oid vartypeid;
|
Oid vartypeid;
|
||||||
int type_mod;
|
int16 type_mod;
|
||||||
int sublevels_up;
|
int sublevels_up;
|
||||||
|
|
||||||
vnum = refnameRangeTablePosn(pstate, refname, &sublevels_up);
|
vnum = refnameRangeTablePosn(pstate, refname, &sublevels_up);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -55,7 +55,7 @@ transformTargetList(ParseState *pstate, List *targetlist)
|
|||||||
{
|
{
|
||||||
Node *expr;
|
Node *expr;
|
||||||
Oid type_id;
|
Oid type_id;
|
||||||
int type_mod;
|
int16 type_mod;
|
||||||
char *identname;
|
char *identname;
|
||||||
char *resname;
|
char *resname;
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ transformTargetList(ParseState *pstate, List *targetlist)
|
|||||||
case T_Attr:
|
case T_Attr:
|
||||||
{
|
{
|
||||||
Oid type_id;
|
Oid type_id;
|
||||||
int type_mod;
|
int16 type_mod;
|
||||||
Attr *att = (Attr *) res->val;
|
Attr *att = (Attr *) res->val;
|
||||||
Node *result;
|
Node *result;
|
||||||
char *attrname;
|
char *attrname;
|
||||||
@ -332,7 +332,7 @@ make_targetlist_expr(ParseState *pstate,
|
|||||||
{
|
{
|
||||||
Oid type_id,
|
Oid type_id,
|
||||||
attrtype;
|
attrtype;
|
||||||
int type_mod,
|
int16 type_mod,
|
||||||
attrtypmod;
|
attrtypmod;
|
||||||
int resdomno;
|
int resdomno;
|
||||||
Relation rd;
|
Relation rd;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -136,7 +136,7 @@ typeTypeFlag(Type t)
|
|||||||
/* Given a type structure and a string, returns the internal form of
|
/* Given a type structure and a string, returns the internal form of
|
||||||
that string */
|
that string */
|
||||||
char *
|
char *
|
||||||
stringTypeString(Type tp, char *string, int atttypmod)
|
stringTypeString(Type tp, char *string, int16 atttypmod)
|
||||||
{
|
{
|
||||||
Oid op;
|
Oid op;
|
||||||
Oid typelem;
|
Oid typelem;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -50,7 +50,7 @@
|
|||||||
* because we pass typelem as the second argument for array_in.)
|
* because we pass typelem as the second argument for array_in.)
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
bpcharin(char *s, int dummy, int atttypmod)
|
bpcharin(char *s, int dummy, int16 atttypmod)
|
||||||
{
|
{
|
||||||
char *result,
|
char *result,
|
||||||
*r;
|
*r;
|
||||||
@ -124,7 +124,7 @@ bpcharout(char *s)
|
|||||||
* because we pass typelem as the second argument for array_in.)
|
* because we pass typelem as the second argument for array_in.)
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
varcharin(char *s, int dummy, int atttypmod)
|
varcharin(char *s, int dummy, int16 atttypmod)
|
||||||
{
|
{
|
||||||
char *result;
|
char *result;
|
||||||
int len;
|
int len;
|
||||||
|
4
src/backend/utils/cache/lsyscache.c
vendored
4
src/backend/utils/cache/lsyscache.c
vendored
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* NOTES
|
||||||
* Eventually, the index information should go through here, too.
|
* Eventually, the index information should go through here, too.
|
||||||
@ -161,7 +161,7 @@ get_attisset(Oid relid, char *attname)
|
|||||||
* return the "atttypmod" field from the attribute relation.
|
* return the "atttypmod" field from the attribute relation.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int
|
int16
|
||||||
get_atttypmod(Oid relid, AttrNumber attnum)
|
get_atttypmod(Oid relid, AttrNumber attnum)
|
||||||
{
|
{
|
||||||
FormData_pg_attribute att_tup;
|
FormData_pg_attribute att_tup;
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -69,7 +69,7 @@ extern bool TupleDescInitEntry(TupleDesc desc,
|
|||||||
AttrNumber attributeNumber,
|
AttrNumber attributeNumber,
|
||||||
char *attributeName,
|
char *attributeName,
|
||||||
Oid typeid,
|
Oid typeid,
|
||||||
int typmod,
|
int16 typmod,
|
||||||
int attdim,
|
int attdim,
|
||||||
bool attisset);
|
bool attisset);
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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
|
* NOTES
|
||||||
* the genbki.sh script reads this file and generates .bki
|
* the genbki.sh script reads this file and generates .bki
|
||||||
@ -89,12 +89,6 @@ CATALOG(pg_attribute) BOOTSTRAP
|
|||||||
/*
|
/*
|
||||||
* atttypmod records type-specific modifications supplied at table
|
* atttypmod records type-specific modifications supplied at table
|
||||||
* creation time.
|
* 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;
|
bool attbyval;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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
|
* NOTES
|
||||||
* the genbki.sh script reads this file and generates .bki
|
* the genbki.sh script reads this file and generates .bki
|
||||||
@ -367,7 +367,6 @@ DESCR("limited-range ISO-format date and time");
|
|||||||
#define TIMESTAMPOID 1296
|
#define TIMESTAMPOID 1296
|
||||||
|
|
||||||
|
|
||||||
#define USE_ATTTYPMOD(typeid) ((typeid) == BPCHAROID || (typeid) == VARCHAROID)
|
|
||||||
#define VARLENA_FIXED_SIZE(attr) ((attr)->atttypid == BPCHAROID && (attr)->atttypmod > 0)
|
#define VARLENA_FIXED_SIZE(attr) ((attr)->atttypid == BPCHAROID && (attr)->atttypmod > 0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -25,14 +25,14 @@ extern Oper * makeOper(Oid opno,
|
|||||||
extern Var * makeVar(Index varno,
|
extern Var * makeVar(Index varno,
|
||||||
AttrNumber varattno,
|
AttrNumber varattno,
|
||||||
Oid vartype,
|
Oid vartype,
|
||||||
int vartypmod,
|
int16 vartypmod,
|
||||||
Index varlevelsup,
|
Index varlevelsup,
|
||||||
Index varnoold,
|
Index varnoold,
|
||||||
AttrNumber varoattno);
|
AttrNumber varoattno);
|
||||||
|
|
||||||
extern Resdom * makeResdom(AttrNumber resno,
|
extern Resdom * makeResdom(AttrNumber resno,
|
||||||
Oid restype,
|
Oid restype,
|
||||||
int restypmod,
|
int16 restypmod,
|
||||||
char *resname,
|
char *resname,
|
||||||
Index reskey,
|
Index reskey,
|
||||||
Oid reskeyop,
|
Oid reskeyop,
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -643,7 +643,7 @@ typedef struct TypeName
|
|||||||
char *name; /* name of the type */
|
char *name; /* name of the type */
|
||||||
bool timezone; /* timezone specified? */
|
bool timezone; /* timezone specified? */
|
||||||
bool setof; /* is a set? */
|
bool setof; /* is a set? */
|
||||||
int2 typmod; /* type modifier */
|
int16 typmod; /* type modifier */
|
||||||
List *arrayBounds; /* array bounds */
|
List *arrayBounds; /* array bounds */
|
||||||
} TypeName;
|
} TypeName;
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -41,7 +41,7 @@ typedef struct Resdom
|
|||||||
NodeTag type;
|
NodeTag type;
|
||||||
AttrNumber resno;
|
AttrNumber resno;
|
||||||
Oid restype;
|
Oid restype;
|
||||||
int restypmod;
|
int16 restypmod;
|
||||||
char *resname;
|
char *resname;
|
||||||
Index reskey;
|
Index reskey;
|
||||||
Oid reskeyop;
|
Oid reskeyop;
|
||||||
@ -124,7 +124,7 @@ typedef struct Var
|
|||||||
Index varno;
|
Index varno;
|
||||||
AttrNumber varattno;
|
AttrNumber varattno;
|
||||||
Oid vartype;
|
Oid vartype;
|
||||||
int vartypmod;
|
int16 vartypmod;
|
||||||
Index varlevelsup; /* erased by upper optimizer */
|
Index varlevelsup; /* erased by upper optimizer */
|
||||||
Index varnoold; /* only used by optimizer */
|
Index varnoold; /* only used by optimizer */
|
||||||
AttrNumber varoattno; /* only used by optimizer */
|
AttrNumber varoattno; /* only used by optimizer */
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -21,7 +21,7 @@
|
|||||||
extern Node *transformExpr(ParseState *pstate, Node *expr, int precedence);
|
extern Node *transformExpr(ParseState *pstate, Node *expr, int precedence);
|
||||||
extern Node *transformIdent(ParseState *pstate, Node *expr, int precedence);
|
extern Node *transformIdent(ParseState *pstate, Node *expr, int precedence);
|
||||||
extern Oid exprType(Node *expr);
|
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 */
|
#endif /* PARSE_EXPR_H */
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -26,7 +26,7 @@ extern int16 typeLen(Type t);
|
|||||||
extern bool typeByVal(Type t);
|
extern bool typeByVal(Type t);
|
||||||
extern char *typeTypeName(Type t);
|
extern char *typeTypeName(Type t);
|
||||||
extern char typeTypeFlag(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 typeidRetoutfunc(Oid type_id);
|
||||||
extern Oid typeidTypeRelid(Oid type_id);
|
extern Oid typeidTypeRelid(Oid type_id);
|
||||||
extern Oid typeTypeRelid(Type typ);
|
extern Oid typeTypeRelid(Type typ);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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
|
* NOTES
|
||||||
* This should normally only be included by fmgr.h.
|
* This should normally only be included by fmgr.h.
|
||||||
@ -445,7 +445,7 @@ DateTime *timestamp_datetime(time_t timestamp);
|
|||||||
time_t datetime_timestamp(DateTime *datetime);
|
time_t datetime_timestamp(DateTime *datetime);
|
||||||
|
|
||||||
/* varchar.c */
|
/* 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 char *bpcharout(char *s);
|
||||||
extern bool bpchareq(char *arg1, char *arg2);
|
extern bool bpchareq(char *arg1, char *arg2);
|
||||||
extern bool bpcharne(char *arg1, char *arg2);
|
extern bool bpcharne(char *arg1, char *arg2);
|
||||||
@ -457,7 +457,7 @@ extern int32 bpcharcmp(char *arg1, char *arg2);
|
|||||||
extern int32 bpcharlen(char *arg);
|
extern int32 bpcharlen(char *arg);
|
||||||
extern uint32 hashbpchar(struct varlena * key);
|
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 char *varcharout(char *s);
|
||||||
extern bool varchareq(char *arg1, char *arg2);
|
extern bool varchareq(char *arg1, char *arg2);
|
||||||
extern bool varcharne(char *arg1, char *arg2);
|
extern bool varcharne(char *arg1, char *arg2);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* 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 $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -21,7 +21,7 @@ extern char *get_attname(Oid relid, AttrNumber attnum);
|
|||||||
extern AttrNumber get_attnum(Oid relid, char *attname);
|
extern AttrNumber get_attnum(Oid relid, char *attname);
|
||||||
extern Oid get_atttype(Oid relid, AttrNumber attnum);
|
extern Oid get_atttype(Oid relid, AttrNumber attnum);
|
||||||
extern bool get_attisset(Oid relid, char *attname);
|
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 RegProcedure get_opcode(Oid opid);
|
||||||
extern char *get_opname(Oid opid);
|
extern char *get_opname(Oid opid);
|
||||||
extern bool op_mergesortable(Oid opid, Oid ltype, Oid rtype,
|
extern bool op_mergesortable(Oid opid, Oid ltype, Oid rtype,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user