Changeset: 9ca41fe782f8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9ca41fe782f8
Modified Files:
sql/server/sql_parser.h
sql/server/sql_parser.y
Branch: sciql
Log Message:
changed the non-terminal table_or_array and corresponding code in the parser to
distinguish ARRAY from TABLE where necessary
when creating an array, we use the integer holding opt_temp to distinguish this
from creation of a table.
diffs (102 lines):
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
@@ -178,6 +178,7 @@
SQL_CREATE_ARRAY,
SQL_DROP_ARRAY,
+ SQL_ALTER_ARRAY,
SQL_ARRAY,
SQL_ARRAY_INDEX,
SQL_DIMENSION
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
@@ -945,7 +945,11 @@
{ dlist *l = L();
append_list(l, $3);
append_symbol(l, $6);
- $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); }
+ if ($2 == SQL_TABLE)
+ $$ = _symbol_create_list( SQL_ALTER_TABLE, l );
+ else /* $2 == SQL_ARRAY */
+ $$ = _symbol_create_list( SQL_ALTER_ARRAY, l );
+ }
| ALTER TABLE qname ADD TABLE qname
{ dlist *l = L();
append_list(l, $3);
@@ -955,17 +959,29 @@
{ dlist *l = L();
append_list(l, $3);
append_symbol(l, $5);
- $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); }
+ if ($2 == SQL_TABLE)
+ $$ = _symbol_create_list( SQL_ALTER_TABLE, l );
+ else /* $2 == SQL_ARRAY */
+ $$ = _symbol_create_list( SQL_ALTER_ARRAY, l );
+ }
| ALTER table_or_array qname DROP drop_table_element
{ dlist *l = L();
append_list(l, $3);
append_symbol(l, $5);
- $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); }
+ if ($2 == SQL_TABLE)
+ $$ = _symbol_create_list( SQL_ALTER_TABLE, l );
+ else /* $2 == SQL_ARRAY */
+ $$ = _symbol_create_list( SQL_ALTER_ARRAY, l );
+ }
| ALTER table_or_array qname SET READ ONLY
{ dlist *l = L();
append_list(l, $3);
append_symbol(l, NULL);
- $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); }
+ if ($2 == SQL_TABLE)
+ $$ = _symbol_create_list( SQL_ALTER_TABLE, l );
+ else /* $2 == SQL_ARRAY */
+ $$ = _symbol_create_list( SQL_ALTER_ARRAY, l );
+ }
| ALTER USER ident passwd_schema
{ dlist *l = L();
append_string(l, $3);
@@ -1301,18 +1317,28 @@
opt_temp table_or_array qname table_content_source opt_on_commit
{ int commit_action = CA_COMMIT;
dlist *l = L();
- append_int(l, $1);
+ /* HACK: since table_content_source cannot distinguish a CREATE ARRAY
+ * from a CREATE TABLE, we (mis)use the value holding opt_temp to
+ * annotate that this is an ARRAY */
+ if ($2 == SQL_TABLE)
+ append_int(l, $1);
+ else /* $2 == SQL_ARRAY */
+ append_int(l, $2);
append_list(l, $3);
append_symbol(l, $4);
if ($1 != SQL_PERSIST)
commit_action = $5;
append_int(l, commit_action);
- $$ = _symbol_create_list( $2, l ); }
+ if ($2 == SQL_TABLE)
+ $$ = _symbol_create_list(SQL_CREATE_TABLE, l );
+ else /* $2 == SQL_ARRAY */
+ $$ = _symbol_create_list(SQL_CREATE_ARRAY, l );
+ }
;
table_or_array:
- TABLE {$$= SQL_CREATE_TABLE;}
- | ARRAY {$$= SQL_CREATE_ARRAY;}
+ TABLE {$$= SQL_TABLE;}
+ | ARRAY {$$= SQL_ARRAY;}
opt_temp:
/* empty */ { $$ = SQL_PERSIST; }
@@ -1977,7 +2003,7 @@
select_no_parens_orderby
| search_condition
| table_or_array '(' select_no_parens_orderby ')'
- { $$ = _symbol_create_symbol(SQL_TABLE, $3); }
+ { $$ = _symbol_create_symbol($1, $3); }
| sqlNULL { $$ = _newAtomNode( NULL); }
;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list