* Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.3 1996/07/16 07:12:27 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.4 1996/07/23 02:23:05 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
static char *values[MAXATTR]; /* cooresponding attribute values */
int numattr; /* number of attributes for cur. rel */
#ifdef OPENLINK_PATCHES
-extern int fsyncOff; /* do not fsync the database */
+extern int fsyncOff; /* do not fsync the database */
#endif
#if defined(WIN32) || defined(PORTNAME_next)
* error handling / abort routines
* ----------------
*/
-#if !defined(PORTNAME_bsdi) && !defined(PORTNAME_bsdi_2_1)
+# if !defined(PORTNAME_BSD44_derived) && \
+ !defined(PORTNAME_bsdi) && \
+ !defined(PORTNAME_bsdi_2_1)
void err()
{
Warnings++;
Quiet = 0;
Noversion = 0;
dbName = NULL;
-
+
#ifdef OPENLINK_PATCHES
while ((flag = getopt(argc, argv, "dCOQP:F")) != EOF) {
#else
case 'C':
Noversion = 1;
break;
+#ifdef OPENLINK_PATCHES
+ case 'F':
+ fsyncOff = 1;
+ break;
+#endif
case 'O':
override = true;
break;
case 'P':/* specify port */
portFd = atoi(optarg);
break;
-#ifdef OPENLINK_PATCHES
- case 'F':
- fsyncOff = 1;
- break;
-#endif
- break;
default:
usage();
break;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.1.1.1 1996/07/09 06:21:19 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.2 1996/07/23 02:23:15 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
heap_endscan(scandesc);
heap_close(pg_index_rel);
+ /* We cannot trust to relhasindex of the main_relation now, so... */
+ if ( *n_indices == 0 )
+ return;
+
*index_rels = (Relation *) palloc(*n_indices * sizeof(Relation));
for (i = 0, scan = head; i < *n_indices; i++, scan = scan->next) {
}
}else if (c == '\\') {
c = getc(fp);
+#ifdef ESCAPE_PATCH
+#define ISOCTAL(c) (((c) >= '0') && ((c) <= '7'))
+#define VALUE(c) ((c) - '0')
+ if (feof(fp)) {
+ *isnull = (bool) false;
+ return(NULL);
+ }
+ switch (c) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': {
+ int val;
+ val = VALUE(c);
+ c = getc(fp);
+ if (ISOCTAL(c)) {
+ val = (val<<3) + VALUE(c);
+ c = getc(fp);
+ if (ISOCTAL(c)) {
+ val = (val<<3) + VALUE(c);
+ } else {
+ if (feof(fp)) {
+ *isnull = (bool) false;
+ return(NULL);
+ }
+ ungetc(c, fp);
+ }
+ } else {
+ if (feof(fp)) {
+ *isnull = (bool) false;
+ return(NULL);
+ }
+ ungetc(c, fp);
+ }
+ c = val & 0377;
+ }
+ break;
+ case 'b':
+ c = '\b';
+ break;
+ case 'f':
+ c = '\f';
+ break;
+ case 'n':
+ c = '\n';
+ break;
+ case 'r':
+ c = '\r';
+ break;
+ case 't':
+ c = '\t';
+ break;
+ case 'v':
+ c = '\v';
+ break;
+ }
+#endif
}else if (inString(c,delim) || c == '\n') {
done = 1;
}
}
}
+#ifdef ESCAPE_PATCH
+static void
+CopyAttributeOut(FILE *fp, char *string, char *delim)
+{
+ char c;
+ int is_array = false;
+ int len = strlen(string);
+
+ /* XXX - This is a kludge, we should check the data type */
+ if (len && (string[0] == '{') && (string[len-1] == '}')) {
+ is_array = true;
+ }
+
+ for ( ; c = *string; string++) {
+ if ((c == delim[0]) || (c == '\n')) {
+ fputc('\\', fp);
+ } else if ((c == '\\') && is_array) {
+ if (*(string+1) == '\\') {
+ /* translate \\ to \\\\ */
+ fputc('\\', fp);
+ fputc('\\', fp);
+ fputc('\\', fp);
+ string++;
+ } else if (*(string+1) == '"') {
+ /* translate \" to \\\" */
+ fputc('\\', fp);
+ fputc('\\', fp);
+ }
+ }
+ fputc(*string, fp);
+ }
+}
+#else
static void
CopyAttributeOut(FILE *fp, char *string, char *delim)
{
fputc(string[i], fp);
}
}
+#endif
/*
* Returns the number of tuples in a relation. Unfortunately, currently
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.1.1.1 1996/07/09 06:21:31 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.2 1996/07/23 02:23:25 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
{
struct sockaddr_in sin;
int fd;
+ int one = 1;
#ifdef WIN32
/* This is necessary to make it possible for a backend to use
pqdebug("%s", PQerrormsg);
return(STATUS_ERROR);
}
-
+
+ if((setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&one,
+ sizeof(one))) == -1) {
+ (void) sprintf(PQerrormsg,
+ "FATAL: StreamServerPort: setsockopt (SO_REUSEADDR) failed: errno=%d\n",
+ errno);
+ fputs(PQerrormsg, stderr);
+ pqdebug("%s", PQerrormsg);
+ return(STATUS_ERROR);
+ }
+
sin.sin_family = AF_INET;
sin.sin_port = htons(portName);
#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/parser/Attic/Makefile.inc,v 1.1.1.1 1996/07/09 06:21:39 scrappy Exp $
+# $Header: /cvsroot/pgsql/src/backend/parser/Attic/Makefile.inc,v 1.2 1996/07/23 02:23:32 scrappy Exp $
#
#-------------------------------------------------------------------------
SRCS_PARSER+= analyze.c catalog_utils.c dbcommands.c gram.c \
- keywords.c parser.c parse_query.c scan.c scansup.c
+ keywords.c parser.c parse_query.c scan.c scansup.c sysfunc.c
CLEANFILES+= scan.c ${PARSEYACCS}
POSTGRES_DEPEND+= scan.c $(PARSEYACCS)
HEADERS+= catalog_utils.h io.h parse_query.h parsetree.h \
- dbcommands.h keywords.h
+ dbcommands.h keywords.h sysfunc.c
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.1.1.1 1996/07/09 06:21:40 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.2 1996/07/23 02:23:33 scrappy Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
{ $$ = $1;
if ($1 <= 0) elog(WARN,"Please specify nonnegative count for fetch"); }
| ALL { $$ = 0; /* 0 means fetch all tuples*/}
- | /*EMPTY*/ { $$ = 0; /*default*/ }
+ | /*EMPTY*/ { $$ = 1; /*default*/ }
;
/*****************************************************************************
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.1.1.1 1996/07/09 06:21:41 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.2 1996/07/23 02:23:34 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
#include "nodes/parsenodes.h"
#include "parser/keywords.h"
#include "parser/scansup.h"
+#include "parser/sysfunc.h"
#include "parse.h"
#include "utils/elog.h"
#include "utils/palloc.h"
letter [_A-Za-z]
letter_or_digit [_A-Za-z0-9]
+sysfunc SYS_{letter}{letter_or_digit}*
+
identifier {letter}{letter_or_digit}*
self [,()\[\].;$\:\+\-\*\/\<\>\=\|]
other .
%%
+{sysfunc} {
+ yylval.str = pstrdup(SystemFunctionHandler((char *)yytext));
+ return (SCONST);
+ }
+
{comment} { /* ignore */ }
"::" { return TYPECAST; }
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.1.1.1 1996/07/09 06:21:41 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.2 1996/07/23 02:23:35 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
}
}
default:
- elog (WARN, "Bad escape sequence, s[i] = %d", s[i]);
+#ifdef ESCAPE_PATCH
+ newStr[j] = s[i];
+#else
+ elog (WARN, "Bad escape sequence, s[i] = %d", s[i]);
+#endif
} /* switch */
} /* s[i] == '\\' */
else
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.2 1996/07/16 07:13:07 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.3 1996/07/23 02:23:47 scrappy Exp $
*
* NOTES
*
#define MAXINT INT_MAX
#else
#include <netdb.h> /* for MAXHOSTNAMELEN on some */
-# if defined(PORTNAME_BSD44_derived) || defined(PORTNAME_bsdi) || defined(PORTNAME_bsdi_2_1)
+# if defined(PORTNAME_BSD44_derived) || \
+ defined(PORTNAME_bsdi) || \
+ defined(PORTNAME_bsdi_2_1)
# include <machine/limits.h>
# define MAXINT INT_MAX
# else
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.1.1.1 1996/07/09 06:21:52 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.2 1996/07/23 02:23:54 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
if (name_to_look_for.data[0]) {
Node *n;
- n = FindMatchingTLEntry(targetlist, &name_to_look_for);
+ n = FindMatchingTLEntry(targetlist, (char *)&name_to_look_for);
if (n == NULL) {
*nodePtr = make_null(((Var*) node)->vartype);
} else {