mirror of
https://github.com/postgres/postgres.git
synced 2025-05-06 19:59:18 +03:00
Modify COPY for() loop to use attnum as a variable name, not 'i'.
This commit is contained in:
parent
6c72f44c62
commit
3a14336746
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.219 2004/04/06 13:21:33 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.220 2004/04/15 22:36:03 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -1258,6 +1258,7 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
|
|||||||
ExprState **constraintexprs;
|
ExprState **constraintexprs;
|
||||||
bool hasConstraints = false;
|
bool hasConstraints = false;
|
||||||
int i;
|
int i;
|
||||||
|
int attnum;
|
||||||
List *cur;
|
List *cur;
|
||||||
Oid in_func_oid;
|
Oid in_func_oid;
|
||||||
Datum *values;
|
Datum *values;
|
||||||
@ -1317,39 +1318,39 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
|
|||||||
defexprs = (ExprState **) palloc((num_phys_attrs + 1) * sizeof(ExprState *));
|
defexprs = (ExprState **) palloc((num_phys_attrs + 1) * sizeof(ExprState *));
|
||||||
constraintexprs = (ExprState **) palloc0((num_phys_attrs + 1) * sizeof(ExprState *));
|
constraintexprs = (ExprState **) palloc0((num_phys_attrs + 1) * sizeof(ExprState *));
|
||||||
|
|
||||||
for (i = 0; i < num_phys_attrs; i++)
|
for (attnum = 1; attnum <= num_phys_attrs; attnum++)
|
||||||
{
|
{
|
||||||
/* We don't need info for dropped attributes */
|
/* We don't need info for dropped attributes */
|
||||||
if (attr[i]->attisdropped)
|
if (attr[attnum - 1]->attisdropped)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Fetch the input function and typelem info */
|
/* Fetch the input function and typelem info */
|
||||||
if (binary)
|
if (binary)
|
||||||
getTypeBinaryInputInfo(attr[i]->atttypid,
|
getTypeBinaryInputInfo(attr[attnum - 1]->atttypid,
|
||||||
&in_func_oid, &elements[i]);
|
&in_func_oid, &elements[attnum - 1]);
|
||||||
else
|
else
|
||||||
getTypeInputInfo(attr[i]->atttypid,
|
getTypeInputInfo(attr[attnum - 1]->atttypid,
|
||||||
&in_func_oid, &elements[i]);
|
&in_func_oid, &elements[attnum - 1]);
|
||||||
fmgr_info(in_func_oid, &in_functions[i]);
|
fmgr_info(in_func_oid, &in_functions[attnum - 1]);
|
||||||
|
|
||||||
/* Get default info if needed */
|
/* Get default info if needed */
|
||||||
if (!intMember(i + 1, attnumlist))
|
if (!intMember(attnum, attnumlist))
|
||||||
{
|
{
|
||||||
/* attribute is NOT to be copied from input */
|
/* attribute is NOT to be copied from input */
|
||||||
/* use default value if one exists */
|
/* use default value if one exists */
|
||||||
Node *defexpr = build_column_default(rel, i + 1);
|
Node *defexpr = build_column_default(rel, attnum);
|
||||||
|
|
||||||
if (defexpr != NULL)
|
if (defexpr != NULL)
|
||||||
{
|
{
|
||||||
defexprs[num_defaults] = ExecPrepareExpr((Expr *) defexpr,
|
defexprs[num_defaults] = ExecPrepareExpr((Expr *) defexpr,
|
||||||
estate);
|
estate);
|
||||||
defmap[num_defaults] = i;
|
defmap[num_defaults] = attnum - 1;
|
||||||
num_defaults++;
|
num_defaults++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If it's a domain type, set up to check domain constraints */
|
/* If it's a domain type, set up to check domain constraints */
|
||||||
if (get_typtype(attr[i]->atttypid) == 'd')
|
if (get_typtype(attr[attnum - 1]->atttypid) == 'd')
|
||||||
{
|
{
|
||||||
Param *prm;
|
Param *prm;
|
||||||
Node *node;
|
Node *node;
|
||||||
@ -1365,14 +1366,14 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
|
|||||||
prm = makeNode(Param);
|
prm = makeNode(Param);
|
||||||
prm->paramkind = PARAM_EXEC;
|
prm->paramkind = PARAM_EXEC;
|
||||||
prm->paramid = 0;
|
prm->paramid = 0;
|
||||||
prm->paramtype = getBaseType(attr[i]->atttypid);
|
prm->paramtype = getBaseType(attr[attnum - 1]->atttypid);
|
||||||
|
|
||||||
node = coerce_to_domain((Node *) prm,
|
node = coerce_to_domain((Node *) prm,
|
||||||
prm->paramtype,
|
prm->paramtype,
|
||||||
attr[i]->atttypid,
|
attr[attnum - 1]->atttypid,
|
||||||
COERCE_IMPLICIT_CAST);
|
COERCE_IMPLICIT_CAST);
|
||||||
|
|
||||||
constraintexprs[i] = ExecPrepareExpr((Expr *) node,
|
constraintexprs[attnum - 1] = ExecPrepareExpr((Expr *) node,
|
||||||
estate);
|
estate);
|
||||||
hasConstraints = true;
|
hasConstraints = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user