Skip to content

Commit 7344d69

Browse files
committed
Finished merging in src/backend from Dr. George's source tree
1 parent e11744e commit 7344d69

File tree

9 files changed

+150
-25
lines changed

9 files changed

+150
-25
lines changed

src/backend/bootstrap/bootstrap.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Copyright (c) 1994, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.3 1996/07/16 07:12:27 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.4 1996/07/23 02:23:05 scrappy Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -137,7 +137,7 @@ AttributeTupleForm attrtypes[MAXATTR]; /* points to attribute info */
137137
static char *values[MAXATTR]; /* cooresponding attribute values */
138138
int numattr; /* number of attributes for cur. rel */
139139
#ifdef OPENLINK_PATCHES
140-
extern int fsyncOff; /* do not fsync the database */
140+
extern int fsyncOff; /* do not fsync the database */
141141
#endif
142142

143143
#if defined(WIN32) || defined(PORTNAME_next)
@@ -187,7 +187,9 @@ typedef void (*sig_func)();
187187
* error handling / abort routines
188188
* ----------------
189189
*/
190-
#if !defined(PORTNAME_bsdi) && !defined(PORTNAME_bsdi_2_1)
190+
# if !defined(PORTNAME_BSD44_derived) && \
191+
!defined(PORTNAME_bsdi) && \
192+
!defined(PORTNAME_bsdi_2_1)
191193
void err()
192194
{
193195
Warnings++;
@@ -266,7 +268,7 @@ BootstrapMain(int argc, char *argv[])
266268
Quiet = 0;
267269
Noversion = 0;
268270
dbName = NULL;
269-
271+
270272
#ifdef OPENLINK_PATCHES
271273
while ((flag = getopt(argc, argv, "dCOQP:F")) != EOF) {
272274
#else
@@ -279,6 +281,11 @@ BootstrapMain(int argc, char *argv[])
279281
case 'C':
280282
Noversion = 1;
281283
break;
284+
#ifdef OPENLINK_PATCHES
285+
case 'F':
286+
fsyncOff = 1;
287+
break;
288+
#endif
282289
case 'O':
283290
override = true;
284291
break;
@@ -288,12 +295,6 @@ BootstrapMain(int argc, char *argv[])
288295
case 'P':/* specify port */
289296
portFd = atoi(optarg);
290297
break;
291-
#ifdef OPENLINK_PATCHES
292-
case 'F':
293-
fsyncOff = 1;
294-
break;
295-
#endif
296-
break;
297298
default:
298299
usage();
299300
break;

src/backend/commands/copy.c

Lines changed: 100 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*
88
* IDENTIFICATION
9-
* $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.1.1.1 1996/07/09 06:21:19 scrappy Exp $
9+
* $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.2 1996/07/23 02:23:15 scrappy Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -650,6 +650,10 @@ GetIndexRelations(Oid main_relation_oid,
650650
heap_endscan(scandesc);
651651
heap_close(pg_index_rel);
652652

653+
/* We cannot trust to relhasindex of the main_relation now, so... */
654+
if ( *n_indices == 0 )
655+
return;
656+
653657
*index_rels = (Relation *) palloc(*n_indices * sizeof(Relation));
654658

655659
for (i = 0, scan = head; i < *n_indices; i++, scan = scan->next) {
@@ -726,6 +730,67 @@ CopyReadAttribute(int attno, FILE *fp, bool *isnull, char *delim)
726730
}
727731
}else if (c == '\\') {
728732
c = getc(fp);
733+
#ifdef ESCAPE_PATCH
734+
#define ISOCTAL(c) (((c) >= '0') && ((c) <= '7'))
735+
#define VALUE(c) ((c) - '0')
736+
if (feof(fp)) {
737+
*isnull = (bool) false;
738+
return(NULL);
739+
}
740+
switch (c) {
741+
case '0':
742+
case '1':
743+
case '2':
744+
case '3':
745+
case '4':
746+
case '5':
747+
case '6':
748+
case '7': {
749+
int val;
750+
val = VALUE(c);
751+
c = getc(fp);
752+
if (ISOCTAL(c)) {
753+
val = (val<<3) + VALUE(c);
754+
c = getc(fp);
755+
if (ISOCTAL(c)) {
756+
val = (val<<3) + VALUE(c);
757+
} else {
758+
if (feof(fp)) {
759+
*isnull = (bool) false;
760+
return(NULL);
761+
}
762+
ungetc(c, fp);
763+
}
764+
} else {
765+
if (feof(fp)) {
766+
*isnull = (bool) false;
767+
return(NULL);
768+
}
769+
ungetc(c, fp);
770+
}
771+
c = val & 0377;
772+
}
773+
break;
774+
case 'b':
775+
c = '\b';
776+
break;
777+
case 'f':
778+
c = '\f';
779+
break;
780+
case 'n':
781+
c = '\n';
782+
break;
783+
case 'r':
784+
c = '\r';
785+
break;
786+
case 't':
787+
c = '\t';
788+
break;
789+
case 'v':
790+
c = '\v';
791+
break;
792+
}
793+
#endif
729794
}else if (inString(c,delim) || c == '\n') {
730795
done = 1;
731796
}
@@ -743,6 +808,39 @@ CopyReadAttribute(int attno, FILE *fp, bool *isnull, char *delim)
743808
}
744809
}
745810

811+
#ifdef ESCAPE_PATCH
812+
static void
813+
CopyAttributeOut(FILE *fp, char *string, char *delim)
814+
{
815+
char c;
816+
int is_array = false;
817+
int len = strlen(string);
818+
819+
/* XXX - This is a kludge, we should check the data type */
820+
if (len && (string[0] == '{') && (string[len-1] == '}')) {
821+
is_array = true;
822+
}
823+
824+
for ( ; c = *string; string++) {
825+
if ((c == delim[0]) || (c == '\n')) {
826+
fputc('\\', fp);
827+
} else if ((c == '\\') && is_array) {
828+
if (*(string+1) == '\\') {
829+
/* translate \\ to \\\\ */
830+
fputc('\\', fp);
831+
fputc('\\', fp);
832+
fputc('\\', fp);
833+
string++;
834+
} else if (*(string+1) == '"') {
835+
/* translate \" to \\\" */
836+
fputc('\\', fp);
837+
fputc('\\', fp);
838+
}
839+
}
840+
fputc(*string, fp);
841+
}
842+
}
843+
#else
746844
static void
747845
CopyAttributeOut(FILE *fp, char *string, char *delim)
748846
{
@@ -756,6 +854,7 @@ CopyAttributeOut(FILE *fp, char *string, char *delim)
756854
fputc(string[i], fp);
757855
}
758856
}
857+
#endif
759858

760859
/*
761860
* Returns the number of tuples in a relation. Unfortunately, currently

src/backend/libpq/pqcomm.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.1.1.1 1996/07/09 06:21:31 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.2 1996/07/23 02:23:25 scrappy Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -551,6 +551,7 @@ StreamServerPort(char *hostName, short portName, int *fdP)
551551
{
552552
struct sockaddr_in sin;
553553
int fd;
554+
int one = 1;
554555

555556
#ifdef WIN32
556557
/* This is necessary to make it possible for a backend to use
@@ -575,7 +576,17 @@ StreamServerPort(char *hostName, short portName, int *fdP)
575576
pqdebug("%s", PQerrormsg);
576577
return(STATUS_ERROR);
577578
}
578-
579+
580+
if((setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&one,
581+
sizeof(one))) == -1) {
582+
(void) sprintf(PQerrormsg,
583+
"FATAL: StreamServerPort: setsockopt (SO_REUSEADDR) failed: errno=%d\n",
584+
errno);
585+
fputs(PQerrormsg, stderr);
586+
pqdebug("%s", PQerrormsg);
587+
return(STATUS_ERROR);
588+
}
589+
579590
sin.sin_family = AF_INET;
580591
sin.sin_port = htons(portName);
581592

src/backend/parser/Makefile.inc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#
88
#
99
# IDENTIFICATION
10-
# $Header: /cvsroot/pgsql/src/backend/parser/Attic/Makefile.inc,v 1.1.1.1 1996/07/09 06:21:39 scrappy Exp $
10+
# $Header: /cvsroot/pgsql/src/backend/parser/Attic/Makefile.inc,v 1.2 1996/07/23 02:23:32 scrappy Exp $
1111
#
1212
#-------------------------------------------------------------------------
1313

@@ -34,13 +34,13 @@ $(objdir)/scan.o: scan.c
3434

3535

3636
SRCS_PARSER+= analyze.c catalog_utils.c dbcommands.c gram.c \
37-
keywords.c parser.c parse_query.c scan.c scansup.c
37+
keywords.c parser.c parse_query.c scan.c scansup.c sysfunc.c
3838

3939
CLEANFILES+= scan.c ${PARSEYACCS}
4040

4141
POSTGRES_DEPEND+= scan.c $(PARSEYACCS)
4242

4343
HEADERS+= catalog_utils.h io.h parse_query.h parsetree.h \
44-
dbcommands.h keywords.h
44+
dbcommands.h keywords.h sysfunc.c
4545

4646

src/backend/parser/gram.y

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.1.1.1 1996/07/09 06:21:40 scrappy Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.2 1996/07/23 02:23:33 scrappy Exp $
1414
*
1515
* HISTORY
1616
* AUTHOR DATE MAJOR EVENT
@@ -515,7 +515,7 @@ fetch_how_many: Iconst
515515
{ $$ = $1;
516516
if ($1 <= 0) elog(WARN,"Please specify nonnegative count for fetch"); }
517517
| ALL { $$ = 0; /* 0 means fetch all tuples*/}
518-
| /*EMPTY*/ { $$ = 0; /*default*/ }
518+
| /*EMPTY*/ { $$ = 1; /*default*/ }
519519
;
520520

521521
/*****************************************************************************

src/backend/parser/scan.l

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.1.1.1 1996/07/09 06:21:41 scrappy Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.2 1996/07/23 02:23:34 scrappy Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -29,6 +29,7 @@
2929
#include "nodes/parsenodes.h"
3030
#include "parser/keywords.h"
3131
#include "parser/scansup.h"
32+
#include "parser/sysfunc.h"
3233
#include "parse.h"
3334
#include "utils/elog.h"
3435
#include "utils/palloc.h"
@@ -61,6 +62,8 @@ digit [0-9]
6162
letter [_A-Za-z]
6263
letter_or_digit [_A-Za-z0-9]
6364

65+
sysfunc SYS_{letter}{letter_or_digit}*
66+
6467
identifier {letter}{letter_or_digit}*
6568

6669
self [,()\[\].;$\:\+\-\*\/\<\>\=\|]
@@ -83,6 +86,11 @@ space [ \t\n\f]
8386
other .
8487

8588
%%
89+
{sysfunc} {
90+
yylval.str = pstrdup(SystemFunctionHandler((char *)yytext));
91+
return (SCONST);
92+
}
93+
8694
{comment} { /* ignore */ }
8795

8896
"::" { return TYPECAST; }

src/backend/parser/scansup.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.1.1.1 1996/07/09 06:21:41 scrappy Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.2 1996/07/23 02:23:35 scrappy Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -134,7 +134,11 @@ scanstr(char *s)
134134
}
135135
}
136136
default:
137-
elog (WARN, "Bad escape sequence, s[i] = %d", s[i]);
137+
#ifdef ESCAPE_PATCH
138+
newStr[j] = s[i];
139+
#else
140+
elog (WARN, "Bad escape sequence, s[i] = %d", s[i]);
141+
#endif
138142
} /* switch */
139143
} /* s[i] == '\\' */
140144
else

src/backend/postmaster/postmaster.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.2 1996/07/16 07:13:07 scrappy Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.3 1996/07/23 02:23:47 scrappy Exp $
1414
*
1515
* NOTES
1616
*
@@ -49,7 +49,9 @@
4949
#define MAXINT INT_MAX
5050
#else
5151
#include <netdb.h> /* for MAXHOSTNAMELEN on some */
52-
# if defined(PORTNAME_BSD44_derived) || defined(PORTNAME_bsdi) || defined(PORTNAME_bsdi_2_1)
52+
# if defined(PORTNAME_BSD44_derived) || \
53+
defined(PORTNAME_bsdi) || \
54+
defined(PORTNAME_bsdi_2_1)
5355
# include <machine/limits.h>
5456
# define MAXINT INT_MAX
5557
# else

src/backend/rewrite/rewriteManip.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*
88
* IDENTIFICATION
9-
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.1.1.1 1996/07/09 06:21:52 scrappy Exp $
9+
* $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.2 1996/07/23 02:23:54 scrappy Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -319,7 +319,7 @@ nodeHandleRIRAttributeRule(Node **nodePtr,
319319
if (name_to_look_for.data[0]) {
320320
Node *n;
321321

322-
n = FindMatchingTLEntry(targetlist, &name_to_look_for);
322+
n = FindMatchingTLEntry(targetlist, (char *)&name_to_look_for);
323323
if (n == NULL) {
324324
*nodePtr = make_null(((Var*) node)->vartype);
325325
} else {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy