Changeset: 4190168fabf1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4190168fabf1
Modified Files:
sql/server/rel_select.c
sql/server/rel_semantic.c
sql/server/sql_parser.h
sql/server/sql_parser.y
Branch: sciql
Log Message:
minor changes in the parser
diffs (153 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
@@ -443,7 +443,7 @@ rel_arrayslice(mvc *sql, sql_table *t, c
sql_subfunc *sf = NULL;
exp_kind ek = {type_value, card_value, FALSE};
- assert(dimref->token == SQL_ARRAY_INDEX);
+ assert(dimref->token == SQL_ARRAY_DIM_SLICE);
if (t->ndims)
return sql_error(sql, 02, "array slicing over a table ('%s')not
allowed", t->base.name);
diff --git a/sql/server/rel_semantic.c b/sql/server/rel_semantic.c
--- a/sql/server/rel_semantic.c
+++ b/sql/server/rel_semantic.c
@@ -299,7 +299,7 @@ rel_semantic(mvc *sql, symbol *s)
return rel_selects(sql, s);
case SQL_ARRAY:
- case SQL_ARRAY_INDEX:
+ case SQL_ARRAY_DIM_SLICE:
case SQL_DIMENSION:
return sql_error(sql, 02, "Array not type checked yet");
default:
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
@@ -179,7 +179,7 @@ typedef enum tokens {
SQL_DROP_ARRAY,
SQL_ALTER_ARRAY,
SQL_ARRAY,
- SQL_ARRAY_INDEX,
+ SQL_ARRAY_DIM_SLICE,
SQL_DIMENSION
} tokens;
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
@@ -268,9 +268,8 @@ int yydebug=1;
XML_primary
opt_comma_string_value_expression
- group_item /* sciql structural grouping */
dimension
- array_dim_ref
+ array_dim_slice
array_cell_ref
index_term
@@ -322,7 +321,6 @@ int yydebug=1;
ident_commalist
opt_corresponding
column_ref_commalist
- group_ref_commalist
name_commalist
schema_name_list
column_ref
@@ -398,6 +396,7 @@ int yydebug=1;
index_exp /* position indices of array cells */
index_exp_list
array_element_def_list
+ tiling_commalist
%type <i_val>
any_all_some
@@ -3229,13 +3228,13 @@ table_ref:
{ $$ = $2;
append_symbol($2->data.lval, $4); }
*/
- | array_dim_ref { /* allow "s1.a1[x][1:2]" */
+ | array_dim_slice { /* allow "s1.a1[x][1:2]" */
dlist *l = L();
append_symbol(l, $1);
append_symbol(l, NULL);
$$ = _symbol_create_list( SQL_ARRAY, l);
}
- | array_dim_ref table_name { /* allow "s1.a1[x][1:2] AS <ident>" */
+ | array_dim_slice table_name { /* allow "s1.a1[x][1:2] AS <ident>" */
dlist *l = L();
append_symbol(l, $1);
append_symbol(l, $2);
@@ -3285,21 +3284,16 @@ table_name:
opt_group_by_clause:
/* empty */ { $$ = NULL; }
| sqlGROUP BY column_ref_commalist { $$ = _symbol_create_list( SQL_GROUPBY,
$3 );}
- | sqlGROUP BY group_ref_commalist { $$ = _symbol_create_list( SQL_GROUPBY,
append_int($3,0) );}
- | sqlGROUP BY DISTINCT group_ref_commalist { $$ = _symbol_create_list(
SQL_GROUPBY, append_int($4,1) );}
- ;
-
-group_ref_commalist:
- group_item { $$ = append_symbol(L(),$1);}
- | group_ref_commalist ',' group_item
+ | sqlGROUP BY tiling_commalist { $$ = _symbol_create_list( SQL_GROUPBY,
append_int($3,0) );}
+ | sqlGROUP BY DISTINCT tiling_commalist { $$ = _symbol_create_list(
SQL_GROUPBY, append_int($4,1) );}
+ ;
+
+tiling_commalist:
+ array_dim_slice { $$ = append_symbol(L(),$1);}
+ | tiling_commalist ',' array_dim_slice
{ $$ = append_symbol( $1, $3);}
;
-group_item:
- array_dim_ref { $$ = $1; }
- | array_cell_ref { $$ = $1; }
-;
-
column_ref_commalist:
column_ref { $$ = append_symbol(L(),
_symbol_create_list(SQL_COLUMN,$1)); }
@@ -3684,7 +3678,7 @@ value_exp:
| cast_exp
| XML_value_function
| param
- | array_dim_ref
+ | array_dim_slice
| array_cell_ref
| ARRAY '(' scalar_exp_list ')' {
dlist *l = L();
@@ -3693,19 +3687,19 @@ value_exp:
}
;
-array_dim_ref:
+array_dim_slice:
qname index_exp_list {
dlist *l = L();
append_list(l, $1);
append_list(l, $2);
- $$ = _symbol_create_list( SQL_ARRAY_INDEX, l);
+ $$ = _symbol_create_list( SQL_ARRAY_DIM_SLICE, l);
}
;
/* TODO: haven't all uses of this syntax been replaced with:
- * SELECT <ident> FROM <array_dim_ref>? */
+ * SELECT <ident> FROM <array_dim_slice>? */
array_cell_ref:
- array_dim_ref '.' ident {
+ array_dim_slice '.' ident {
dlist *l = L();
append_symbol(l, $1);
append_string(l, $3);
@@ -5806,7 +5800,7 @@ char *token2string(int token)
SQL(XMLVALIDATE);
SQL(XMLNAMESPACES);
SQL(ARRAY);
- SQL(ARRAY_INDEX);
+ SQL(ARRAY_DIM_SLICE);
SQL(DIMENSION);
}
return "unknown"; /* just needed for broken compilers ! */
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list