diff --git a/contrib/array/Makefile b/contrib/array/Makefile index 85e8d42ade..951250a29d 100644 --- a/contrib/array/Makefile +++ b/contrib/array/Makefile @@ -11,10 +11,10 @@ SRCDIR = $(PGDIR)/src include $(SRCDIR)/Makefile.global -INCLUDE_OPT = -I ./ \ - -I $(SRCDIR)/ \ - -I $(SRCDIR)/include \ - -I $(SRCDIR)/port/$(PORTNAME) +INCLUDE_OPT = -I./ \ + -I$(SRCDIR)/ \ + -I$(SRCDIR)/include \ + -I$(SRCDIR)/port/$(PORTNAME) CFLAGS += $(INCLUDE_OPT) $(CFLAGS_SL) diff --git a/contrib/array/array_iterator.c b/contrib/array/array_iterator.c index 5417d2da52..cadda58a8f 100644 --- a/contrib/array/array_iterator.c +++ b/contrib/array/array_iterator.c @@ -66,7 +66,7 @@ array_iterator(Oid elemtype, Oid proc, int and, ArrayType *array, Datum value) } /* Lookup element type information */ - typ_tuple = SearchSysCacheTuple(TYPOID, ObjectIdGetDatum(elemtype), 0, 0, 0); + typ_tuple = SearchSysCacheTuple(TYPEOID, ObjectIdGetDatum(elemtype), 0, 0, 0); if (!HeapTupleIsValid(typ_tuple)) { elog(ERROR, "array_iterator: cache lookup failed for type %d", elemtype); @@ -183,7 +183,7 @@ array_all_textregexeq(ArrayType *array, char *value) int32 array_varchareq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* varchar */ + return array_iterator((Oid) 1043, /* varchar */ (Oid) 1070, /* varchareq */ 0, /* logical or */ array, (Datum) value); @@ -192,7 +192,7 @@ array_varchareq(ArrayType *array, char *value) int32 array_all_varchareq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* varchar */ + return array_iterator((Oid) 1043, /* varchar */ (Oid) 1070, /* varchareq */ 1, /* logical and */ array, (Datum) value); @@ -201,7 +201,7 @@ array_all_varchareq(ArrayType *array, char *value) int32 array_varcharregexeq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* varchar */ + return array_iterator((Oid) 1043, /* varchar */ (Oid) 1254, /* textregexeq */ 0, /* logical or */ array, (Datum) value); @@ -210,7 +210,7 @@ array_varcharregexeq(ArrayType *array, char *value) int32 array_all_varcharregexeq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* varchar */ + return array_iterator((Oid) 1043, /* varchar */ (Oid) 1254, /* textregexeq */ 1, /* logical and */ array, (Datum) value); @@ -224,7 +224,7 @@ array_all_varcharregexeq(ArrayType *array, char *value) int32 array_bpchareq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* bpchar */ + return array_iterator((Oid) 1042, /* bpchar */ (Oid) 1048, /* bpchareq */ 0, /* logical or */ array, (Datum) value); @@ -233,7 +233,7 @@ array_bpchareq(ArrayType *array, char *value) int32 array_all_bpchareq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* bpchar */ + return array_iterator((Oid) 1042, /* bpchar */ (Oid) 1048, /* bpchareq */ 1, /* logical and */ array, (Datum) value); @@ -242,7 +242,7 @@ array_all_bpchareq(ArrayType *array, char *value) int32 array_bpcharregexeq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* bpchar */ + return array_iterator((Oid) 1042, /* bpchar */ (Oid) 1254, /* textregexeq */ 0, /* logical or */ array, (Datum) value); @@ -251,7 +251,7 @@ array_bpcharregexeq(ArrayType *array, char *value) int32 array_all_bpcharregexeq(ArrayType *array, char *value) { - return array_iterator((Oid) 20, /* bpchar */ + return array_iterator((Oid) 1042, /* bpchar */ (Oid) 1254, /* textregexeq */ 1, /* logical and */ array, (Datum) value); diff --git a/contrib/datetime/Makefile b/contrib/datetime/Makefile index b53293e172..195c0f8d68 100644 --- a/contrib/datetime/Makefile +++ b/contrib/datetime/Makefile @@ -11,10 +11,10 @@ SRCDIR = $(PGDIR)/src include $(SRCDIR)/Makefile.global -INCLUDE_OPT = -I ./ \ - -I $(SRCDIR)/ \ - -I $(SRCDIR)/include \ - -I $(SRCDIR)/port/$(PORTNAME) +INCLUDE_OPT = -I./ \ + -I$(SRCDIR)/ \ + -I$(SRCDIR)/include \ + -I$(SRCDIR)/port/$(PORTNAME) CFLAGS += $(INCLUDE_OPT) $(CFLAGS_SL) diff --git a/contrib/datetime/datetime_functions.c b/contrib/datetime/datetime_functions.c index 910647118a..c5b8bc25e9 100644 --- a/contrib/datetime/datetime_functions.c +++ b/contrib/datetime/datetime_functions.c @@ -5,6 +5,8 @@ * * Copyright (C) 1999, Massimo Dal Zotto * + * Date2mjd code contributed by Reiner Dassing + * * This software is distributed under the GNU General Public License * either version 2, or (at your option) any later version. */ @@ -73,7 +75,7 @@ decode_24h_time(char *str, struct tm *tm, double *fsec) if ( (tm->tm_hour < 0) || (tm->tm_hour > 24) || (tm->tm_min < 0) || (tm->tm_min > 59) || (tm->tm_sec < 0) || (tm->tm_sec > 59) - || (fsec < 0) ) + || (*fsec < 0) ) return -1; return 0; @@ -260,6 +262,16 @@ currentdate() return (date); } +int4 +date2mjd(DateADT val) +{ + int result; + + result = val + JDATE_2000 - 2400000.5; + + return result; +} + /* end of file */ /* diff --git a/contrib/miscutil/Makefile b/contrib/miscutil/Makefile index fa3c99fa1d..fd0065b86e 100644 --- a/contrib/miscutil/Makefile +++ b/contrib/miscutil/Makefile @@ -11,10 +11,10 @@ SRCDIR = $(PGDIR)/src include $(SRCDIR)/Makefile.global -INCLUDE_OPT = -I ./ \ - -I $(SRCDIR)/ \ - -I $(SRCDIR)/include \ - -I $(SRCDIR)/port/$(PORTNAME) +INCLUDE_OPT = -I./ \ + -I$(SRCDIR)/ \ + -I$(SRCDIR)/include \ + -I$(SRCDIR)/port/$(PORTNAME) CFLAGS += $(INCLUDE_OPT) $(CFLAGS_SL) diff --git a/contrib/miscutil/misc_utils.c b/contrib/miscutil/misc_utils.c index 21341dc73c..6745b5b8bb 100644 --- a/contrib/miscutil/misc_utils.c +++ b/contrib/miscutil/misc_utils.c @@ -121,6 +121,7 @@ active_listeners(text *relname) return count; } +#ifdef USE_ASSERT_CHECKING int assert_enable(int val) { @@ -134,6 +135,7 @@ assert_test(int val) return assertTest(val); } #endif +#endif /* end of file */ diff --git a/contrib/miscutil/misc_utils.h b/contrib/miscutil/misc_utils.h index 61217244a2..139df3bc77 100644 --- a/contrib/miscutil/misc_utils.h +++ b/contrib/miscutil/misc_utils.h @@ -6,13 +6,15 @@ int backend_pid(void); int unlisten(char *relname); int max(int x, int y); int min(int x, int y); -int assert_enable(int val); +int active_listeners(text *relname); +#ifdef USE_ASSERT_CHECKING +int assert_enable(int val); #ifdef ASSERT_CHECKING_TEST int assert_test(int val); #endif +#endif -int active_listeners(text *relname); #endif /* diff --git a/contrib/string/Makefile b/contrib/string/Makefile index b77ace937c..dd8f0e6f2a 100644 --- a/contrib/string/Makefile +++ b/contrib/string/Makefile @@ -11,10 +11,10 @@ SRCDIR = $(PGDIR)/src include $(SRCDIR)/Makefile.global -INCLUDE_OPT = -I ./ \ - -I $(SRCDIR)/ \ - -I $(SRCDIR)/include \ - -I $(SRCDIR)/port/$(PORTNAME) +INCLUDE_OPT = -I./ \ + -I$(SRCDIR)/ \ + -I$(SRCDIR)/include \ + -I$(SRCDIR)/port/$(PORTNAME) CFLAGS += $(INCLUDE_OPT) $(CFLAGS_SL) diff --git a/contrib/string/string_io.c b/contrib/string/string_io.c index e1fc867497..9407e6a21b 100644 --- a/contrib/string/string_io.c +++ b/contrib/string/string_io.c @@ -50,8 +50,8 @@ * representation of data. */ -char * -string_output(char *data, int size) +unsigned char * +string_output(unsigned char *data, int size) { register unsigned char c, *p, @@ -79,8 +79,6 @@ string_output(char *data, int size) { case '\\': case '"': - case '{': - case '}': case '\b': case '\f': case '\n': @@ -89,6 +87,12 @@ string_output(char *data, int size) case '\v': len++; break; + case '{': + /* Escape beginning of string, to distinguish from arrays */ + if (p == data) { + len++; + } + break; default: if (NOTPRINTABLE(*p)) len += 3; @@ -104,8 +108,6 @@ string_output(char *data, int size) { case '\\': case '"': - case '{': - case '}': *r++ = '\\'; *r++ = c; break; @@ -133,6 +135,13 @@ string_output(char *data, int size) *r++ = '\\'; *r++ = 'v'; break; + case '{': + /* Escape beginning of string, to distinguish from arrays */ + if (p == data) { + *r++ = '\\'; + } + *r++ = c; + break; default: if (NOTPRINTABLE(c)) { @@ -180,8 +189,8 @@ string_output(char *data, int size) * a pointer to the new string or the header. */ -char * -string_input(char *str, int size, int hdrsize, int *rtn_size) +unsigned char * +string_input(unsigned char *str, int size, int hdrsize, int *rtn_size) { register unsigned char *p, *r; @@ -285,7 +294,7 @@ string_input(char *str, int size, int hdrsize, int *rtn_size) return ((char *) result); } -char * +unsigned char * c_charout(int32 c) { char str[2]; @@ -300,7 +309,7 @@ c_charout(int32 c) * This can be used for SET, bytea, text and unknown data types */ -char * +unsigned char * c_textout(struct varlena * vlena) { int len = 0; @@ -318,8 +327,8 @@ c_textout(struct varlena * vlena) * This can be used for varchar and bpchar strings */ -char * -c_varcharout(char *s) +unsigned char * +c_varcharout(unsigned char *s) { int len = 0; @@ -333,7 +342,7 @@ c_varcharout(char *s) #if 0 struct varlena * -c_textin(char *str) +c_textin(unsigned char *str) { struct varlena *result; int len; @@ -348,7 +357,7 @@ c_textin(char *str) } int32 * -c_charin(char *str) +c_charin(unsigned char *str) { return (string_input(str, 1, 0, NULL)); } diff --git a/contrib/string/string_io.h b/contrib/string/string_io.h index b1d2b7e2c2..e79d7fd28f 100644 --- a/contrib/string/string_io.h +++ b/contrib/string/string_io.h @@ -1,19 +1,16 @@ #ifndef STRING_IO_H #define STRING_IO_H -char *string_output(char *data, int size); -char *string_input(char *str, int size, int hdrsize, int *rtn_size); -char *c_charout(int32 c); -char *c_char2out(uint16 s); -char *c_char4out(uint32 s); -char *c_char8out(char *s); -char *c_char16out(char *s); -char *c_textout(struct varlena * vlena); -char *c_varcharout(char *s); +unsigned char* string_output(unsigned char *data, int size); +unsigned char* string_input(unsigned char *str, int size, int hdrsize, + int *rtn_size); +unsigned char* c_charout(int32 c); +unsigned char* c_textout(struct varlena * vlena); +unsigned char* c_varcharout(unsigned char *s); #if 0 -struct varlena *c_textin(char *str); -char *c_char16in(char *str); +struct varlena* c_textin(unsigned char *str); +int32* c_charin(unsigned char *str) #endif #endif diff --git a/contrib/userlock/Makefile b/contrib/userlock/Makefile index 391956ad7e..23975185b2 100644 --- a/contrib/userlock/Makefile +++ b/contrib/userlock/Makefile @@ -11,10 +11,10 @@ SRCDIR = $(PGDIR)/src include $(SRCDIR)/Makefile.global -INCLUDE_OPT = -I ./ \ - -I $(SRCDIR)/ \ - -I $(SRCDIR)/include \ - -I $(SRCDIR)/port/$(PORTNAME) +INCLUDE_OPT = -I./ \ + -I$(SRCDIR)/ \ + -I$(SRCDIR)/include \ + -I$(SRCDIR)/port/$(PORTNAME) CFLAGS += $(INCLUDE_OPT) $(CFLAGS_SL) diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 7a23a063aa..85a50c1039 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 71fd9c8354..1a61d7e6d1 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 044afe1651..33ca0ce0a6 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 6f8c79676a..ecdb9bbb4e 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 61f0b27da1..3cb2d9e28f 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 43773debb5..9285668917 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