Re: [HACKERS] Lex and things...

Leon <leon@udmnet.ru>

From: Leon <leon@udmnet.ru>
To: "Ansley, Michael" <Michael.Ansley@intec.co.za>
Cc: "'pgsql-hackers@postgresql.org'" <pgsql-hackers@postgreSQL.org>
Date: 1999-08-24T14:09:06Z
Lists: pgsql-hackers
Ansley, Michael wrote:
> 
> As far as I understand it, the MAX_PARSE_BUFFER limit only applies if char
> parsestring[] is used, not if char *parsestring is used.  This is the whole
> reason for using flex.  And scan.l is set up to compile using char
> *parsestring, not char parsestring[].
> 

What is defined explicitly:

#ifdef  YY_READ_BUF_SIZE
#undef  YY_READ_BUF_SIZE
#endif
#define YY_READ_BUF_SIZE	MAX_PARSE_BUFFER

(these strings are repeated twice :)

...
char literal[MAX_PARSE_BUFFER];

...
<xq>{xqliteral} {
					if ((llen+yyleng) > (MAX_PARSE_BUFFER - 1))
						elog(ERROR,"quoted string parse buffer of %d chars
exceeded",MAX_PARSE_BUFFER);
					memcpy(literal+llen, yytext, yyleng+1);
					llen += yyleng;
				}

Seems that limits are everywhere ;)

-- 
Leon.