aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/copy.c9
-rw-r--r--src/backend/utils/error/elog.c13
-rw-r--r--src/backend/utils/misc/trace.c4
-rw-r--r--src/include/commands/copy.h3
-rw-r--r--src/include/utils/trace.h2
-rw-r--r--src/pl/plperl/Makefile.PL2
6 files changed, 23 insertions, 10 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 7a23a063aaf..85a50c10398 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.100 2000/02/09 00:10:11 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.101 2000/02/13 18:59:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -64,7 +64,7 @@ static int CountTuples(Relation relation);
* Static communication variables ... pretty grotty, but COPY has
* never been reentrant...
*/
-static int lineno;
+int lineno = 0; /* used by elog() -- dz */
static bool fe_eof;
/*
@@ -726,8 +726,10 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim, char *null
while (!done)
{
- if (QueryCancel)
+ if (QueryCancel) {
+ lineno = 0;
CancelQuery();
+ }
if (!binary)
{
@@ -931,6 +933,7 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim, char *null
if (!reading_to_eof && ntuples == tuples_read)
done = true;
}
+ lineno = 0;
pfree(values);
pfree(nulls);
pfree(index_nulls);
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 71fd9c8354f..1a61d7e6d17 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.54 2000/01/26 05:57:20 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.55 2000/02/13 18:59:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -35,6 +35,7 @@
#include "storage/proc.h"
#include "tcop/tcopprot.h"
#include "utils/trace.h"
+#include "commands/copy.h"
extern int errno;
extern int sys_nerr;
@@ -164,7 +165,7 @@ elog(int lev, const char *fmt, ...)
* (since vsnprintf won't know what to do with %m). To keep
* space calculation simple, we only allow one %m.
*/
- space_needed = TIMESTAMP_SIZE + strlen(prefix) + indent
+ space_needed = TIMESTAMP_SIZE + strlen(prefix) + indent + (lineno ? 24 : 0)
+ strlen(fmt) + strlen(errorstr) + 1;
if (space_needed > (int) sizeof(fmt_fixedbuf))
{
@@ -186,6 +187,14 @@ elog(int lev, const char *fmt, ...)
bp = fmt_buf + strlen(fmt_buf);
while (indent-- > 0)
*bp++ = ' ';
+
+ /* If error was in CopyFrom() print the offending line number -- dz */
+ if (lineno) {
+ sprintf(bp, "copy: line %d, ", lineno);
+ bp = fmt_buf + strlen(fmt_buf);
+ lineno = 0;
+ }
+
for (cp = fmt; *cp; cp++)
{
if (cp[0] == '%' && cp[1] != '\0')
diff --git a/src/backend/utils/misc/trace.c b/src/backend/utils/misc/trace.c
index 044afe16519..33ca0ce0a6b 100644
--- a/src/backend/utils/misc/trace.c
+++ b/src/backend/utils/misc/trace.c
@@ -233,8 +233,8 @@ tprintf_timestamp()
time = localtime(&tm);
sprintf(pid, "[%d]", MyProcPid);
- sprintf(timestamp, "%04d%02d%02d.%02d:%02d:%02d.%03d %7s ",
- time->tm_year+1900, time->tm_mon + 1, time->tm_mday,
+ sprintf(timestamp, "%02d%02d%02d.%02d:%02d:%02d.%03d %7s ",
+ time->tm_year % 100, time->tm_mon + 1, time->tm_mday,
time->tm_hour, time->tm_min, time->tm_sec,
(int) (tv.tv_usec/1000), pid);
diff --git a/src/include/commands/copy.h b/src/include/commands/copy.h
index 6f8c79676a2..ecdb9bbb4e8 100644
--- a/src/include/commands/copy.h
+++ b/src/include/commands/copy.h
@@ -7,13 +7,14 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: copy.h,v 1.9 2000/01/26 05:58:00 momjian Exp $
+ * $Id: copy.h,v 1.10 2000/02/13 18:59:52 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef COPY_H
#define COPY_H
+extern int lineno;
void DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe,
char *filename, char *delim, char *null_print);
diff --git a/src/include/utils/trace.h b/src/include/utils/trace.h
index 61f0b27da13..3cb2d9e28f1 100644
--- a/src/include/utils/trace.h
+++ b/src/include/utils/trace.h
@@ -18,7 +18,7 @@
#ifdef ELOG_TIMESTAMPS
char *tprintf_timestamp(void);
-#define TIMESTAMP_SIZE 30
+#define TIMESTAMP_SIZE 28
#else
#define TIMESTAMP_SIZE 0
#endif
diff --git a/src/pl/plperl/Makefile.PL b/src/pl/plperl/Makefile.PL
index 43773debb5e..9285668917b 100644
--- a/src/pl/plperl/Makefile.PL
+++ b/src/pl/plperl/Makefile.PL
@@ -107,7 +107,7 @@ plperl : plperl.o SPI.o
\$(CC) -c \$(CFLAGS) \$<
%.o : %.xs
- \$(XSUBPP} \$(TYPEMAP) \$< > xtmp.c
+ \$(XSUBPP) \$(TYPEMAP) \$< > xtmp.c
\$(CC) -c \$(CFLAGS) -o \$@ xtmp.c