Changeset: 0d0613bfa3f3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0d0613bfa3f3
Modified Files:
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_scan.c
Branch: Jul2017
Log Message:

handle PREP / PREPARE and EXEC / EXECUTE seperately (fixes bug 6454)


diffs (117 lines):

diff --git a/sql/server/sql_parser.h b/sql/server/sql_parser.h
--- a/sql/server/sql_parser.h
+++ b/sql/server/sql_parser.h
@@ -52,6 +52,7 @@ typedef enum tokens {
        SQL_SET,
        SQL_CALL,
        SQL_PREP,
+       SQL_PREPARE,
        SQL_NAME,
        SQL_USER,
        SQL_PATH,
@@ -128,6 +129,7 @@ typedef enum tokens {
        SQL_GRANT_ROLES,
        SQL_REVOKE,
        SQL_REVOKE_ROLES,
+       SQL_EXEC,
        SQL_EXECUTE,
        SQL_PRIVILEGES,
        SQL_ROLE,
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -590,7 +590,7 @@ SQLCODE SQLERROR UNDER WHENEVER
 %token CHECK CONSTRAINT CREATE
 %token TYPE PROCEDURE FUNCTION sqlLOADER AGGREGATE RETURNS EXTERNAL sqlNAME 
DECLARE
 %token CALL LANGUAGE 
-%token ANALYZE MINMAX SQL_EXPLAIN SQL_PLAN SQL_DEBUG SQL_TRACE PREPARE EXECUTE
+%token ANALYZE MINMAX SQL_EXPLAIN SQL_PLAN SQL_DEBUG SQL_TRACE PREP PREPARE 
EXEC EXECUTE
 %token DEFAULT DISTINCT DROP
 %token FOREIGN
 %token RENAME ENCRYPTED UNENCRYPTED PASSWORD GRANT REVOKE ROLE ADMIN INTO
@@ -627,7 +627,7 @@ sqlstmt:
                YYACCEPT;
        }
 
- | PREPARE             {
+ | prepare             {
                          m->emode = m_prepare; 
                          m->scanner.as = m->scanner.yycur; 
                          m->scanner.key = 0;
@@ -695,6 +695,17 @@ sqlstmt:
  ;
 
 
+prepare:
+       PREPARE
+ |     PREP
+ ; 
+
+execute:
+       EXECUTE
+ |     EXEC
+ ; 
+
+
 create:
     CREATE  { $$ = FALSE; }
 
@@ -1009,7 +1020,7 @@ operation:
  |  UPDATE opt_column_list          { $$ = _symbol_create_list(SQL_UPDATE,$2); 
}
  |  SELECT opt_column_list         { $$ = _symbol_create_list(SQL_SELECT,$2); }
  |  REFERENCES opt_column_list             { $$ = 
_symbol_create_list(SQL_SELECT,$2); }
- |  EXECUTE                        { $$ = _symbol_create(SQL_EXECUTE,NULL); }
+ |  execute                        { $$ = _symbol_create(SQL_EXECUTE,NULL); }
  ;
 
 grantee_commalist:
@@ -5261,7 +5272,9 @@ non_reserved_word:
 |  INTERVAL    { $$ = sa_strdup(SA, "interval"); }
 |  IMPRINTS    { $$ = sa_strdup(SA, "imprints"); }
 
+|  PREP                { $$ = sa_strdup(SA, "prep"); }
 |  PREPARE     { $$ = sa_strdup(SA, "prepare"); }
+|  EXEC                { $$ = sa_strdup(SA, "exec"); }
 |  EXECUTE     { $$ = sa_strdup(SA, "execute"); }
 |  SQL_EXPLAIN { $$ = sa_strdup(SA, "explain"); }
 |  SQL_DEBUG   { $$ = sa_strdup(SA, "debug"); }
@@ -5389,7 +5402,7 @@ string:
  ;
 
 exec:
-     EXECUTE exec_ref
+     execute exec_ref
                {
                  m->emode = m_execute;
                  $$ = $2; }
@@ -6008,6 +6021,7 @@ char *token2string(int token)
        SQL(DECLARE);
        SQL(SET);
        SQL(PREP);
+       SQL(PREPARE);
        SQL(NAME);
        SQL(USER);
        SQL(PATH);
@@ -6076,6 +6090,7 @@ char *token2string(int token)
        SQL(GRANT_ROLES);
        SQL(REVOKE);
        SQL(REVOKE_ROLES);
+       SQL(EXEC);
        SQL(EXECUTE);
        SQL(PRIVILEGES);
        SQL(ROLE);
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -361,9 +361,9 @@ scanner_init_keywords(void)
        failed += keywords_insert("DEBUG", SQL_DEBUG);
        failed += keywords_insert("TRACE", SQL_TRACE);
        failed += keywords_insert("PREPARE", PREPARE);
-       failed += keywords_insert("PREP", PREPARE);
+       failed += keywords_insert("PREP", PREP);
        failed += keywords_insert("EXECUTE", EXECUTE);
-       failed += keywords_insert("EXEC", EXECUTE);
+       failed += keywords_insert("EXEC", EXEC);
 
        failed += keywords_insert("INDEX", INDEX);
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to