Changeset: 7e48a52696c1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/7e48a52696c1 Modified Files: sql/server/rel_select.c sql/server/sql_parser.y sql/server/sql_semantic.c sql/server/sql_tokens.h sql/test/cte/Tests/test_correlated_recursive_cte.test Branch: clean_parser Log Message:
more cleanup, ie removed SQL_OP diffs (truncated from 541 to 300 lines): 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 @@ -787,7 +787,7 @@ rel_named_table_function(sql_query *quer if (l->next->type == type_symbol) n = l->next; else - n = l->next->data.lval->h; + n = l->next->data.lval?l->next->data.lval->h:NULL; for (dnode *m = n; m; m = m->next) { if (m->type == type_symbol && m->data.sym->token == SQL_SELECT) @@ -895,23 +895,6 @@ rel_named_table_function(sql_query *quer return rel; } -static sql_exp * -rel_op_(mvc *sql, char *sname, char *fname, exp_kind ek) -{ - bool found = false; - sql_subfunc *f = NULL; - sql_ftype type = (ek.card == card_loader)?F_LOADER:((ek.card == card_none)?F_PROC: - ((ek.card == card_relation)?F_UNION:F_FUNC)); - - if ((f = bind_func_(sql, sname, fname, NULL, type, false, &found, true))) { - if (check_card(ek.card, f)) - return exp_op(sql->sa, NULL, f); - found = false; - } - return sql_error(sql, ERR_NOTFOUND, SQLSTATE(42000) "SELECT: %s operator %s%s%s'%s'()", - found ? "insufficient privileges for" : "no such", sname ? "'":"", sname ? sname : "", sname ? "'.":"", fname); -} - static sql_exp* exp_tuples_set_supertype(mvc *sql, list *tuple_values, sql_exp *tuples) { @@ -3149,22 +3132,6 @@ rel_logical_exp(sql_query *query, sql_re static sql_exp * _rel_aggr(sql_query *query, sql_rel **rel, int distinct, char *sname, char *aname, dnode *arguments, int f); static sql_exp *rel_aggr(sql_query *query, sql_rel **rel, symbol *se, int f); -static sql_exp * -rel_op(sql_query *query, sql_rel **rel, symbol *se, int f, exp_kind ek ) -{ - mvc *sql = query->sql; - dnode *l = se->data.lval->h; - char *fname = qname_schema_object(l->data.lval); - char *sname = qname_schema(l->data.lval); - - if (find_func(sql, sname, fname, 1, F_AGGR, false, NULL, NULL)) - return _rel_aggr(query, rel, 0, sname, fname, NULL, f); - - sql->session->status = 0; /* if the function was not found clean the error */ - sql->errstr[0] = '\0'; - return rel_op_(sql, sname, fname, ek); -} - sql_exp * rel_unop_(mvc *sql, sql_rel *rel, sql_exp *e, char *sname, char *fname, int card) { @@ -4928,9 +4895,6 @@ rel_rankop(sql_query *query, sql_rel **r char *uaname = SA_NEW_ARRAY(sql->ta, char, strlen(aname) + 1); return sql_error(sql, 02, SQLSTATE(42000) "%s: window functions cannot be nested", toUpperCopy(uaname, aname)); } - if (window_function->token == SQL_OP) { - window_function->token = SQL_NOP; - } if (window_function->token == SQL_BINOP) { window_function->token = SQL_NOP; dn->next->next->type = type_list; @@ -5260,8 +5224,6 @@ rel_value_exp2(sql_query *query, sql_rel } switch (se->token) { - case SQL_OP: - return rel_op(query, rel, se, f, ek); case SQL_BINOP: return rel_binop(query, rel, se, f, ek); case SQL_NOP: @@ -6460,7 +6422,7 @@ rel_loader_function(sql_query *query, sy if (l->next->type == type_symbol) n = l->next; else - n = l->next->data.lval->h; + n = l->next->data.lval?l->next->data.lval->h:NULL; for (dnode *m = n; m; m = m->next) { if (m->type == type_symbol && m->data.sym->token == SQL_SELECT) 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 @@ -222,12 +222,10 @@ int yydebug=1; like_predicate like_table literal - //map_funcs merge_insert merge_match_clause merge_stmt merge_update_or_delete - //multi_arg_func null object_name operation @@ -637,7 +635,6 @@ int yydebug=1; %token <sval> XMLPARSE STRIP WHITESPACE XMLPI XMLQUERY PASSING XMLTEXT %token <sval> NIL REF ABSENT EMPTY DOCUMENT ELEMENT CONTENT XMLNAMESPACES NAMESPACE %token <sval> XMLVALIDATE RETURNING LOCATION ID ACCORDING XMLSCHEMA URI XMLAGG -//%token <sval> FIELD FILTER %token <sval> FILTER %token <sval> CORRESPONDING @@ -775,10 +772,10 @@ SQLCODE SQLERROR UNDER WHENEVER %nonassoc <sval> NOT_BETWEEN BETWEEN NOT_IN sqlIN NOT_EXISTS EXISTS NOT_LIKE LIKE NOT_ILIKE ILIKE %nonassoc ESCAPE -%nonassoc UNBOUNDED //NESTED +%nonassoc UNBOUNDED %nonassoc IDENT PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP - SET OBJECT VALUE WITH WITHOUT PATH //keys -%left '+' '-' '&' '|' '^' LEFT_SHIFT RIGHT_SHIFT LEFT_SHIFT_ASSIGN RIGHT_SHIFT_ASSIGN CONCATSTRING //SUBSTRING TRIM POSITION SPLIT_PART + SET OBJECT VALUE WITH WITHOUT PATH +%left '+' '-' '&' '|' '^' LEFT_SHIFT RIGHT_SHIFT LEFT_SHIFT_ASSIGN RIGHT_SHIFT_ASSIGN CONCATSTRING %left '*' '/' '%' %left AT %right UMINUS @@ -879,7 +876,6 @@ sqlstmt: m->emod |= mod_trace; m->scanner.as = m->scanner.yycur; } - //sql SCOLON { $$ = $3; YYACCEPT; } sql SCOLON { if (m->sym) { append_symbol(m->sym->data.lval, $3); @@ -2536,7 +2532,7 @@ control_statement: call_statement: CALL func_ref {$$ = _symbol_create_symbol(SQL_CALL, $2);} - // odbc procedure call escape + /* odbc procedure call escape */ | '{' CALL func_ref '}' {$$ = _symbol_create_symbol(SQL_CALL, $3);} ; @@ -2995,7 +2991,7 @@ opt_on_location: ; copyfrom_stmt: -// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +/* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ COPY opt_nr INTO qname opt_column_list FROM string_commalist opt_header_list opt_on_location opt_seps opt_decimal_seps opt_escape opt_null_string opt_best_effort opt_fwf_widths { dlist *l = L(); append_list(l, $4); @@ -3011,7 +3007,7 @@ copyfrom_stmt: append_int(l, $12); append_list(l, $11); $$ = _symbol_create_list( SQL_COPYFROM, l ); } -// 1 2 3 4 5 6 7 8 9 10 11 12 13 +/* 1 2 3 4 5 6 7 8 9 10 11 12 13*/ | COPY opt_nr INTO qname opt_column_list FROM STDIN opt_header_list opt_seps opt_decimal_seps opt_escape opt_null_string opt_best_effort { dlist *l = L(); append_list(l, $4); @@ -3027,13 +3023,13 @@ copyfrom_stmt: append_int(l, $11); append_list(l, $10); $$ = _symbol_create_list( SQL_COPYFROM, l ); } -// 1 2 3 4 5 6 +/* 1 2 3 4 5 6 */ | COPY sqlLOADER INTO qname FROM func_ref { dlist *l = L(); append_list(l, $4); append_symbol(l, $6); $$ = _symbol_create_list( SQL_COPYLOADER, l ); } -// 1 2 3 4 5 6 7 8 9 +/* 1 2 3 4 5 6 7 8 9 */ | COPY opt_endianness BINARY INTO qname opt_column_list FROM string_commalist opt_on_location { dlist *l = L(); append_list(l, $5); @@ -3045,7 +3041,7 @@ copyfrom_stmt: ; copyto_stmt: -// 1 2 3 4 5 6 7 +/* 1 2 3 4 5 6 7 */ COPY SelectStmt INTO_LA string opt_on_location opt_seps opt_null_string { dlist *l = L(); append_symbol(l, $2); @@ -3054,7 +3050,7 @@ copyto_stmt: append_string(l, $7); append_int(l, $5); $$ = _symbol_create_list( SQL_COPYINTO, l ); } -// 1 2 3 4 5 6 +/* 1 2 3 4 5 6 */ | COPY SelectStmt INTO_LA STDOUT opt_seps opt_null_string { dlist *l = L(); append_symbol(l, $2); @@ -3063,7 +3059,7 @@ copyto_stmt: append_string(l, $6); append_int(l, 0); $$ = _symbol_create_list( SQL_COPYINTO, l ); } -// 1 2 3 4 5 6 7 +/* 1 2 3 4 5 6 7 */ | COPY SelectStmt INTO_LA opt_endianness BINARY string_commalist opt_on_location { dlist *l = L(); append_symbol(l, $2); @@ -3330,7 +3326,6 @@ insert_rest: { dlist *p = L(); dlist *l = L(); - //append_list(l, L()); append_list(p, NULL); /* no column spec */ append_symbol(p, _symbol_create_list(SQL_VALUES, l)); $$ = p; @@ -3339,7 +3334,6 @@ insert_rest: { dlist *p = L(); dlist *l = L(); - //append_list(l, L()); append_list(p, NULL); /* no column spec */ append_symbol(p, _symbol_create_list(SQL_VALUES, l)); $$ = p; @@ -3508,7 +3502,7 @@ with_clause: { dlist *l = L(); append_list(l, $3); - append_symbol(l, NULL); // filled in later + append_symbol(l, NULL); /* filled in later */ append_int(l, $2); $$ = _symbol_create_list( SQL_WITH, l ); } @@ -3880,9 +3874,8 @@ table_ref: if ($$->token == SQL_SELECT) { SelectNode *sn = (SelectNode*)$1; sn->name = $2; - } else if ($$->token == SQL_VALUES || $$->token == SQL_NOP || $$->token == SQL_OP) { + } else if ($$->token == SQL_VALUES || $$->token == SQL_NOP) { symbol *s = $$; - assert(s->token == SQL_VALUES || s->token == SQL_NOP); dlist *l = L(); append_symbol(l, s); append_int(l, 0); @@ -3900,9 +3893,8 @@ table_ref: SelectNode *sn = (SelectNode*)$2; sn->name = $3; sn->lateral = 1; - } else if ($$->token == SQL_VALUES || $$->token == SQL_NOP || $$->token == SQL_OP) { + } else if ($$->token == SQL_VALUES || $$->token == SQL_NOP) { symbol *s = $$; - assert(s->token == SQL_VALUES || s->token == SQL_NOP); dlist *l = L(); append_symbol(l, s); append_int(l, 1); @@ -4196,7 +4188,7 @@ like_exp: } } - // odbc like escape + /* odbc like escape */ | scalar_exp '{' ESCAPE string '}' { const char* esc = $4; @@ -4725,24 +4717,9 @@ value_exp: | string_funcs | XML_value_function | odbc_scalar_func_escape - //| map_funcs - //| multi_arg_func | select_with_parens %prec UMINUS { $$ = $1; } ; -/* -map_funcs: - FIELD '(' expr_list ')' - { dlist *l = L(); - append_list(l, - append_string(L(), sa_strdup(SA, "field"))); - append_int(l, FALSE); /* ignore distinct */ -/* - append_list(l, $3); - $$ = _symbol_create_list( SQL_NOP, l ); } - ; -*/ - param: '?' { @@ -4848,7 +4825,8 @@ func_ref: { dlist *l = L(); append_list(l, $1); append_int(l, FALSE); /* ignore distinct */ - $$ = _symbol_create_list( SQL_OP, l ); } + append_list(l, NULL); + $$ = _symbol_create_list( SQL_NOP, l ); } | qfunc '(' expr_list ')' { dlist *l = L(); append_list(l, $1); @@ -4882,28 +4860,33 @@ datetime_funcs: | CURRENT_DATE opt_brackets { dlist *l = L(); append_list(l, append_string(L(), sa_strdup(SA, "current_date"))); - append_int(l, FALSE); /* ignore distinct */ - $$ = _symbol_create_list( SQL_OP, l ); } _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org