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 -- [email protected]
To unsubscribe send an email to [email protected]