aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/commands/copy.c38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 00b64e53204..05e05b8fb58 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -136,7 +136,7 @@ typedef struct CopyStateData
/* these are just for error messages, see CopyFromErrorCallback */
const char *cur_relname; /* table name for error messages */
- int cur_lineno; /* line number for error messages */
+ uint64 cur_lineno; /* line number for error messages */
const char *cur_attname; /* current att for error messages */
const char *cur_attval; /* current att value for error messages */
@@ -309,7 +309,7 @@ static void CopyFromInsertBatch(CopyState cstate, EState *estate,
ResultRelInfo *resultRelInfo, TupleTableSlot *myslot,
BulkInsertState bistate,
int nBufferedTuples, HeapTuple *bufferedTuples,
- int firstBufferedLineNo);
+ uint64 firstBufferedLineNo);
static bool CopyReadLine(CopyState cstate);
static bool CopyReadLineText(CopyState cstate);
static int CopyReadAttributesText(CopyState cstate);
@@ -2174,17 +2174,21 @@ void
CopyFromErrorCallback(void *arg)
{
CopyState cstate = (CopyState) arg;
+ char curlineno_str[32];
+
+ snprintf(curlineno_str, sizeof(curlineno_str), UINT64_FORMAT,
+ cstate->cur_lineno);
if (cstate->binary)
{
/* can't usefully display the data */
if (cstate->cur_attname)
- errcontext("COPY %s, line %d, column %s",
- cstate->cur_relname, cstate->cur_lineno,
+ errcontext("COPY %s, line %s, column %s",
+ cstate->cur_relname, curlineno_str,
cstate->cur_attname);
else
- errcontext("COPY %s, line %d",
- cstate->cur_relname, cstate->cur_lineno);
+ errcontext("COPY %s, line %s",
+ cstate->cur_relname, curlineno_str);
}
else
{
@@ -2194,16 +2198,16 @@ CopyFromErrorCallback(void *arg)
char *attval;
attval = limit_printout_length(cstate->cur_attval);
- errcontext("COPY %s, line %d, column %s: \"%s\"",
- cstate->cur_relname, cstate->cur_lineno,
+ errcontext("COPY %s, line %s, column %s: \"%s\"",
+ cstate->cur_relname, curlineno_str,
cstate->cur_attname, attval);
pfree(attval);
}
else if (cstate->cur_attname)
{
/* error is relevant to a particular column, value is NULL */
- errcontext("COPY %s, line %d, column %s: null input",
- cstate->cur_relname, cstate->cur_lineno,
+ errcontext("COPY %s, line %s, column %s: null input",
+ cstate->cur_relname, curlineno_str,
cstate->cur_attname);
}
else
@@ -2224,14 +2228,14 @@ CopyFromErrorCallback(void *arg)
char *lineval;
lineval = limit_printout_length(cstate->line_buf.data);
- errcontext("COPY %s, line %d: \"%s\"",
- cstate->cur_relname, cstate->cur_lineno, lineval);
+ errcontext("COPY %s, line %s: \"%s\"",
+ cstate->cur_relname, curlineno_str, lineval);
pfree(lineval);
}
else
{
- errcontext("COPY %s, line %d",
- cstate->cur_relname, cstate->cur_lineno);
+ errcontext("COPY %s, line %s",
+ cstate->cur_relname, curlineno_str);
}
}
}
@@ -2301,7 +2305,7 @@ CopyFrom(CopyState cstate)
#define MAX_BUFFERED_TUPLES 1000
HeapTuple *bufferedTuples = NULL; /* initialize to silence warning */
Size bufferedTuplesSize = 0;
- int firstBufferedLineNo = 0;
+ uint64 firstBufferedLineNo = 0;
Assert(cstate->rel);
@@ -2902,11 +2906,11 @@ CopyFromInsertBatch(CopyState cstate, EState *estate, CommandId mycid,
int hi_options, ResultRelInfo *resultRelInfo,
TupleTableSlot *myslot, BulkInsertState bistate,
int nBufferedTuples, HeapTuple *bufferedTuples,
- int firstBufferedLineNo)
+ uint64 firstBufferedLineNo)
{
MemoryContext oldcontext;
int i;
- int save_cur_lineno;
+ uint64 save_cur_lineno;
/*
* Print error context information correctly, if one of the operations