Changeset: a7b023850288 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a7b023850288
Added Files:
sql/server/sql_tokens.h
Modified Files:
sql/server/Makefile.ag
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/sql_parser.h
sql/server/sql_parser.y
sql/server/sql_symbol.c
sql/server/sql_symbol.h
Branch: default
Log Message:
Using tokens enum definition in the sql parser. Use C enums whenever possible.
It helps debugging long switch statements and find missing cases in them.
diffs (truncated from 670 to 300 lines):
diff --git a/sql/server/Makefile.ag b/sql/server/Makefile.ag
--- a/sql/server/Makefile.ag
+++ b/sql/server/Makefile.ag
@@ -59,5 +59,5 @@ lib_sqlserver = {
rel_updates.h rel_psm.h rel_xml.h sql_atom.h sql_datetime.h \
sql_decimal.h sql_env.h sql_mvc.h sql_parser.h \
sql_privileges.h sql_qc.h sql_scan.h \
- sql_semantic.h sql_symbol.h sql_partition.h
+ sql_semantic.h sql_symbol.h sql_tokens.h sql_partition.h
}
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -393,6 +393,9 @@ column_constraint_type(mvc *sql, char *n
mvc_null(sql, cs, null);
res = SQL_OK;
} break;
+ default:{
+ res = SQL_ERR;
+ }
}
if (res == SQL_ERR) {
(void) sql_error(sql, 02, SQLSTATE(M0M03) "Unknown constraint
(%p)->token = %s\n", s, token2string(s->token));
@@ -480,6 +483,9 @@ column_option(
mvc_null(sql, cs, null);
res = SQL_OK;
} break;
+ default:{
+ res = SQL_ERR;
+ }
}
if (res == SQL_ERR) {
(void) sql_error(sql, 02, SQLSTATE(M0M03) "Unknown column
option (%p)->token = %s\n", s, token2string(s->token));
@@ -617,6 +623,8 @@ table_constraint_type(mvc *sql, char *na
case SQL_FOREIGN_KEY:
res = table_foreign_key(sql, name, s, ss, t);
break;
+ default:
+ res = SQL_ERR;
}
if (res != SQL_OK) {
sql_error(sql, 02, SQLSTATE(M0M03) "Table constraint type:
wrong token (%p) = %s\n", s, token2string(s->token));
@@ -729,6 +737,9 @@ table_element(mvc *sql, symbol *s, sql_s
case SQL_DROP_CONSTRAINT:
msg = "drop constraint from";
break;
+ default:
+ sql_error(sql, 02, SQLSTATE(M0M03) "Unknown table
element (%p)->token = %s\n", s, token2string(s->token));
+ return SQL_ERR;
}
sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: cannot %s %s
'%s'\n",
msg,
@@ -907,6 +918,8 @@ table_element(mvc *sql, symbol *s, sql_s
} break;
case SQL_DROP_CONSTRAINT:
assert(0);
+ default:
+ res = SQL_ERR;
}
if (res == SQL_ERR) {
sql_error(sql, 02, SQLSTATE(M0M03) "Unknown table element
(%p)->token = %s\n", s, token2string(s->token));
@@ -1859,7 +1872,7 @@ rel_grant_privs(mvc *sql, sql_schema *cu
{
dlist *obj_privs = privs->h->data.lval;
symbol *obj = privs->h->next->data.sym;
- int token = obj->token;
+ tokens token = obj->token;
if (token == SQL_NAME) {
dlist *qname = obj->data.lval;
@@ -2043,7 +2056,7 @@ rel_revoke_privs(mvc *sql, sql_schema *c
{
dlist *obj_privs = privs->h->data.lval;
symbol *obj = privs->h->next->data.sym;
- int token = obj->token;
+ tokens token = obj->token;
if (token == SQL_NAME) {
dlist *qname = obj->data.lval;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -8,6 +8,7 @@
#include "monetdb_config.h"
#include "rel_select.h"
+#include "sql_tokens.h"
#include "sql_semantic.h" /* TODO this dependency should be removed, move
the dependent code into sql_mvc */
#include "sql_privileges.h"
@@ -3800,7 +3801,7 @@ rel_aggr(mvc *sql, sql_rel **rel, symbol
}
static sql_exp *
-rel_case(mvc *sql, sql_rel **rel, int token, symbol *opt_cond, dlist
*when_search_list, symbol *opt_else, int f)
+rel_case(mvc *sql, sql_rel **rel, tokens token, symbol *opt_cond, dlist
*when_search_list, symbol *opt_else, int f)
{
sql_subtype *tpe = NULL;
list *conds = new_exp_list(sql->sa);
@@ -4445,7 +4446,7 @@ rel_order_by(mvc *sql, sql_rel **R, symb
}
static int
-generate_window_bound(int sql_token, bool first_half)
+generate_window_bound(tokens sql_token, bool first_half)
{
switch(sql_token) {
case SQL_PRECEDING:
@@ -4507,7 +4508,7 @@ generate_window_bound_call(mvc *sql, sql
}
static sql_exp*
-calculate_window_bound(mvc *sql, sql_rel *p, int token, symbol *bound, sql_exp
*ie, int frame_type, int f)
+calculate_window_bound(mvc *sql, sql_rel *p, tokens token, symbol *bound,
sql_exp *ie, int frame_type, int f)
{
sql_subtype *bt, *it = sql_bind_localtype("int"), *lon =
sql_bind_localtype("lng"), *iet;
unsigned char bclass = 0;
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
@@ -9,6 +9,7 @@
#ifndef _SQL_PARSER_H_
#define _SQL_PARSER_H_
+#include "sql_tokens.h"
#include "sql_mvc.h"
/* the next define makes the parser output more specific error messages,
@@ -18,195 +19,8 @@
#define YYDEBUG 1
*/
-typedef enum tokens {
- SQL_CREATE_SCHEMA,
- SQL_CREATE_TABLE,
- SQL_CREATE_VIEW,
- SQL_CREATE_INDEX,
- SQL_CREATE_ROLE,
- SQL_CREATE_USER,
- SQL_CREATE_TYPE,
- SQL_CREATE_FUNC,
- SQL_CREATE_SEQ,
- SQL_CREATE_TRIGGER,
- SQL_CREATE_TABLE_LOADER,
- SQL_DROP_SCHEMA,
- SQL_DROP_TABLE,
- SQL_DROP_VIEW,
- SQL_DROP_INDEX,
- SQL_DROP_ROLE,
- SQL_DROP_USER,
- SQL_DROP_TYPE,
- SQL_DROP_FUNC,
- SQL_DROP_SEQ,
- SQL_DROP_TRIGGER,
- SQL_ALTER_TABLE,
- SQL_ALTER_SEQ,
- SQL_ALTER_USER,
- SQL_RENAME_USER,
- SQL_DROP_COLUMN,
- SQL_DROP_CONSTRAINT,
- SQL_DROP_DEFAULT,
- SQL_ANALYZE,
- SQL_DECLARE,
- SQL_DECLARE_TABLE,
- SQL_COMMENT,
- SQL_SET,
- SQL_SAMPLE,
- SQL_CALL,
- SQL_PREP,
- SQL_PREPARE,
- SQL_NAME,
- SQL_USER,
- SQL_PATH,
- SQL_CHARSET,
- SQL_SCHEMA,
- SQL_TABLE,
- SQL_TABLE_OPERATOR,
- SQL_VIEW,
- SQL_INDEX,
- SQL_TYPE,
- SQL_SEQUENCE,
- SQL_CASE,
- SQL_CAST,
- SQL_RETURN,
- SQL_IF,
- SQL_ELSE,
- SQL_WHILE,
- SQL_COLUMN,
- SQL_COLUMN_OPTIONS,
- SQL_COALESCE,
- SQL_CONSTRAINT,
- SQL_CHECK,
- SQL_DEFAULT,
- SQL_NOT_NULL,
- SQL_NULL,
- SQL_IS_NULL,
- SQL_IS_NOT_NULL,
- SQL_NULLIF,
- SQL_UNIQUE,
- SQL_PRIMARY_KEY,
- SQL_FOREIGN_KEY,
- SQL_BEGIN,
- TR_COMMIT,
- TR_ROLLBACK,
- TR_SAVEPOINT,
- TR_RELEASE,
- TR_START,
- TR_MODE,
- SQL_INSERT,
- SQL_DELETE,
- SQL_TRUNCATE,
- SQL_UPDATE,
- SQL_STORAGE,
- SQL_CROSS,
- SQL_JOIN,
- SQL_SELECT,
- SQL_CONNECT,
- SQL_DISCONNECT,
- SQL_DATABASE,
- SQL_PORT,
- SQL_WHERE,
- SQL_FROM,
- SQL_UNIONJOIN,
- SQL_UNION,
- SQL_EXCEPT,
- SQL_INTERSECT,
- SQL_VALUES,
- SQL_ASSIGN,
- SQL_ORDERBY,
- SQL_GROUPBY,
- SQL_DESC,
- SQL_AND,
- SQL_OR,
- SQL_NOT,
- SQL_EXISTS,
- SQL_NOT_EXISTS,
- SQL_OP,
- SQL_UNOP,
- SQL_BINOP,
- SQL_NOP,
- SQL_BETWEEN,
- SQL_NOT_BETWEEN,
- SQL_LIKE,
- SQL_NOT_LIKE,
- SQL_IN,
- SQL_NOT_IN,
- SQL_GRANT,
- SQL_GRANT_ROLES,
- SQL_REVOKE,
- SQL_REVOKE_ROLES,
- SQL_EXEC,
- SQL_EXECUTE,
- SQL_PRIVILEGES,
- SQL_ROLE,
- SQL_PW_UNENCRYPTED,
- SQL_PW_ENCRYPTED,
- SQL_PARAMETER,
- SQL_FUNC,
- SQL_AGGR,
- SQL_RANK,
- SQL_FRAME,
- SQL_COMPARE,
- SQL_FILTER,
- SQL_ROUTINE,
- SQL_TEMP_LOCAL,
- SQL_TEMP_GLOBAL,
- SQL_INT_VALUE,
- SQL_ATOM,
- SQL_USING,
- SQL_WHEN,
- SQL_ESCAPE,
- SQL_COPYFROM,
- SQL_BINCOPYFROM,
- SQL_COPYLOADER,
- SQL_COPYTO,
- SQL_EXPORT,
- SQL_NEXT,
- SQL_MULSTMT,
- SQL_WITH,
- SQL_START,
- SQL_INC,
- SQL_MINVALUE,
- SQL_MAXVALUE,
- SQL_CACHE,
- SQL_CYCLE,
- SQL_XMLCOMMENT,
- SQL_XMLCONCAT,
- SQL_XMLDOCUMENT,
- SQL_XMLELEMENT,
- SQL_XMLATTRIBUTE,
- SQL_XMLFOREST,
- SQL_XMLPARSE,
- SQL_XMLPI,
- SQL_XMLQUERY,
- SQL_XMLTEXT,
- SQL_XMLVALIDATE,
- SQL_XMLNAMESPACES,
- SQL_MERGE_PARTITION,
- SQL_PARTITION_LIST,
- SQL_PARTITION_RANGE,
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list