Mike Ansley's fixes for long queries. This change just
authorTom Lane
Tue, 7 Sep 1999 00:13:27 +0000 (00:13 +0000)
committerTom Lane
Tue, 7 Sep 1999 00:13:27 +0000 (00:13 +0000)
corrects flex myinput() routine so that it doesn't assume there is only
one bufferload of data.  We still have the issue of getting rid of
YY_USES_REJECT so that the scanner can cope with tokens larger than its
initial buffer size.

src/backend/parser/scan.l

index 35d42356bb47d3f506a14ff5ce77c03ed1a0ff91..ece71b489fdef0f5e6ebb14e0fd1648fcdaa2fd7 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.52 1999/07/17 20:17:26 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.53 1999/09/07 00:13:27 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -491,11 +491,8 @@ int
 input()
 {
    if (parseCh == NULL)
-   {
        parseCh = parseString;
-       return(*parseCh++);
-   }
-   else if (*parseCh == '\0')
+   if (*parseCh == '\0')
        return(0);
    else
        return(*parseCh++);
@@ -520,20 +517,17 @@ myinput(char* buf, int max)
    int len, copylen;
 
    if (parseCh == NULL)
-   {
-       len = strlen(parseString);
-       if (len >= max)
-           copylen = max - 1;
-       else
-           copylen = len;
-       if (copylen > 0)
-           memcpy(buf, parseString, copylen);
-       buf[copylen] = '\0';
        parseCh = parseString;
-       return copylen;
-   }
+   len = strlen(parseCh);      /* remaining data available */
+   if (len >= max)
+       copylen = max - 1;
    else
-       return 0; /* end of string */
+       copylen = len;
+   if (copylen > 0)
+       memcpy(buf, parseCh, copylen);
+   buf[copylen] = '\0';
+   parseCh += copylen;
+   return copylen;
 }
 #endif /* FLEX_SCANNER */