-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.37 2002/06/12 12:06:53 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.37.2.1 2002/07/21 08:26:52 meskes Exp $ */
/*
* The aim is to get a simpler inteface to the database routines.
};
/* This function returns a newly malloced string that has the \
- in the argument quoted with \ and the ' quote with ' as SQL92 says.
+ in the argument quoted with \ and the ' quoted with ' as SQL92 says.
*/
static
char *
default:
;
}
-
res[ri] = arg[i];
}
res[ri++] = '\'';
res[ri] = '\0';
-
+
return res;
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.50.2.1 2002/07/01 07:10:10 meskes Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.50.2.2 2002/07/21 08:26:52 meskes Exp $
*
*-------------------------------------------------------------------------
*/
{"as", AS},
{"asc", ASC},
{"assertion", ASSERTION},
+ {"assignment", ASSIGNMENT},
+ {"asymmetric", ASYMMETRIC},
{"at", AT},
{"authorization", AUTHORIZATION},
{"backward", BACKWARD},
{"committed", COMMITTED},
{"constraint", CONSTRAINT},
{"constraints", CONSTRAINTS},
+ {"conversion", CONVERSION_P},
{"copy", COPY},
{"create", CREATE},
{"createdb", CREATEDB},
{"deferred", DEFERRED},
{"definer", DEFINER},
{"delete", DELETE_P},
+ {"delimiter", DELIMITER},
{"delimiters", DELIMITERS},
{"desc", DESC},
{"distinct", DISTINCT},
{"setof", SETOF},
{"share", SHARE},
{"show", SHOW},
+ {"similar", SIMILAR},
+ {"simple", SIMPLE},
{"smallint", SMALLINT},
{"some", SOME},
{"stable", STABLE},
{"storage", STORAGE},
{"strict", STRICT},
{"substring", SUBSTRING},
+ {"symmetric", SYMMETRIC},
{"sysid", SYSID},
{"table", TABLE},
{"temp", TEMP},
{"toast", TOAST},
{"trailing", TRAILING},
{"transaction", TRANSACTION},
+ {"treat", TREAT},
{"trigger", TRIGGER},
{"trim", TRIM},
{"true", TRUE_P},
{"with", WITH},
{"without", WITHOUT},
{"work", WORK},
+ {"write", WRITE},
{"year", YEAR_P},
{"zone", ZONE},
};
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.94.2.2 2002/07/01 15:01:37 meskes Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.94.2.3 2002/07/21 08:26:52 meskes Exp $
*
*-------------------------------------------------------------------------
*/
* We use exclusive states for quoted strings, extended comments,
* and to eliminate parsing troubles for numeric strings.
* Exclusive states:
- * <xbit> bit string literal
+ * <xb> bit string literal
* <xc> extended C-style comments - thomas 1997-07-12
* <xd> delimited identifiers (double-quoted identifiers) - thomas 1997-10-27
* <xh> hexadecimal numeric string - thomas 1997-11-16
* <xq> quoted strings - thomas 1997-07-30
*/
-%x xbit
+%x xb
%x xc
%x xd
%x xdc
/* Bit string
*/
-xbitstart [bB]{quote}
-xbitstop {quote}
-xbitinside [^']*
-xbitcat {quote}{whitespace_with_newline}{quote}
+xbstart [bB]{quote}
+xbstop {quote}
+xbinside [^']*
+xbcat {quote}{whitespace_with_newline}{quote}
/* Hexadecimal number
*/
xhinside [^']+
xhcat {quote}{whitespace_with_newline}{quote}
+/* National character
+ */
+xnstart [nN]{quote}
+
/* C version of hex number
*/
xch 0[xX][0-9A-Fa-f]*
<xc><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated /* comment"); }
-<SQL>{xbitstart} {
+<SQL>{xbstart} {
token_start = yytext;
- BEGIN(xbit);
+ BEGIN(xb);
startlit();
addlitchar('b');
}
-<xbit>{xbitstop} {
+<xb>{xbstop} {
BEGIN(SQL);
if (literalbuf[strspn(literalbuf, "01") + 1] != '\0')
mmerror(PARSE_ERROR, ET_ERROR, "invalid bit string input.");
}
<xh>{xhinside} |
-<xbit>{xbitinside} { addlit(yytext, yyleng); }
+<xb>{xbinside} { addlit(yytext, yyleng); }
<xh>{xhcat} |
-<xbit>{xbitcat} { /* ignore */ }
-<xbit><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated bit string"); }
+<xb>{xbcat} { /* ignore */ }
+<xb><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated bit string"); }
<SQL>{xhstart} {
token_start = yytext;
}
<xh><<EOF>> { mmerror(PARSE_ERROR, ET_ERROR, "Unterminated hexadecimal integer"); }
-
+<SQL>{xnstart} {
+ /* National character.
+ * Need to remember type info to flow it forward into the parser.
+ * Not yet implemented. - thomas 2002-06-17
+ */
+ token_start = yytext;
+ BEGIN(xq);
+ startlit();
+ }
<C,SQL>{xqstart} {
token_start = yytext;
state_before = YYSTATE;
*/
if (ptr == NULL)
{
- yylval.str = mm_strdup( yytext);
+ yylval.str = mm_strdup(yytext);
return IDENT;
}
}