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

Reply via email to