Changeset: bb0ae5e1fd53 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb0ae5e1fd53
Modified Files:
        sql/src/server/rel_schema.c
        sql/src/server/rel_semantic.c
        sql/src/server/sql_parser.h
        sql/src/server/sql_parser.y
        sql/src/server/sql_scan.c
        sql/src/test/sciql/Tests/All
        sql/src/test/sciql/Tests/sciql00.sql
        sql/src/test/sciql/Tests/sciql01.sql
        sql/src/test/sciql/Tests/sciql02.sql
        sql/src/test/sciql/Tests/sciql03.sql
        sql/src/test/sciql/Tests/sciql04.sql
        sql/src/test/sciql/Tests/sciql05.sql
        sql/src/test/sciql/Tests/sciql06.sql
        sql/src/test/sciql/Tests/sciql07.sql
        sql/src/test/sciql/Tests/sciql08.sql
        sql/src/test/sciql/Tests/sciql09.sql
        sql/src/test/sciql/Tests/sciql10.sql
        sql/src/test/sciql/Tests/sciql12.sql
        sql/src/test/sciql/Tests/sciql13.sql
        sql/src/test/sciql/Tests/sciql14.sql
        sql/src/test/sciql/Tests/sciql15.sql
        sql/src/test/sciql/Tests/sciql16.sql
        sql/src/test/sciql/Tests/sciql17.sql
        sql/src/test/sciql/Tests/sciql18.sql
        sql/src/test/sciql/Tests/sciql19.sql
        sql/src/test/sciql/Tests/sciql20.sql
        sql/src/test/sciql/Tests/sciql21.sql
        sql/src/test/sciql/Tests/sciql22.sql
        sql/src/test/sciql/Tests/sciql23.sql
        sql/src/test/sciql/Tests/sciql24.sql
        sql/src/test/sciql/Tests/sciql25.sql
        sql/src/test/sciql/Tests/sciql26.sql
        sql/src/test/sciql/Tests/sciql27.sql
        sql/src/test/sciql/Tests/sciql28.sql
        sql/src/test/sciql/Tests/sciql29.sql
        sql/src/test/sciql/Tests/sciql30.sql
        sql/src/test/sciql/Tests/sciql31.sql
        sql/src/test/sciql/Tests/texture.sql
Branch: sciql
Log Message:

SciQL initial commit
The parser has been extended to accept the EDBT
examples. No output, because that requires more.


diffs (truncated from 803 to 300 lines):

diff -r 663ebf32a5cd -r bb0ae5e1fd53 sql/src/server/rel_schema.c
--- a/sql/src/server/rel_schema.c       Wed Oct 13 15:54:53 2010 +0200
+++ b/sql/src/server/rel_schema.c       Mon Oct 25 16:23:03 2010 +0200
@@ -1101,6 +1101,7 @@
                           NULL,
                           l->h->next->data.i_val);     /* drop_action */
        }       break;
+       case SQL_CREATE_ARRAY:
        case SQL_CREATE_TABLE:
        {
                dlist *l = s->data.lval;
diff -r 663ebf32a5cd -r bb0ae5e1fd53 sql/src/server/rel_semantic.c
--- a/sql/src/server/rel_semantic.c     Wed Oct 13 15:54:53 2010 +0200
+++ b/sql/src/server/rel_semantic.c     Mon Oct 25 16:23:03 2010 +0200
@@ -172,7 +172,9 @@
 
        case SQL_CREATE_TABLE:
        case SQL_CREATE_VIEW:
+       case SQL_CREATE_ARRAY:
        case SQL_DROP_TABLE:
+       case SQL_DROP_ARRAY:
        case SQL_DROP_VIEW:
        case SQL_ALTER_TABLE:
                return rel_schemas(sql, s);
@@ -304,6 +306,10 @@
        case SQL_INTERSECT:
                return rel_selects(sql, s);
 
+       case SQL_ARRAY:
+       case SQL_INDEX:
+       case SQL_DIMENSION:
+               return sql_error(sql, 02, "Array not type checked yet");
        default:
                return sql_error(sql, 02, "symbol type not found");
        }
diff -r 663ebf32a5cd -r bb0ae5e1fd53 sql/src/server/sql_parser.h
--- a/sql/src/server/sql_parser.h       Wed Oct 13 15:54:53 2010 +0200
+++ b/sql/src/server/sql_parser.h       Mon Oct 25 16:23:03 2010 +0200
@@ -174,7 +174,14 @@
        SQL_XMLQUERY,
        SQL_XMLTEXT,
        SQL_XMLVALIDATE,
-       SQL_XMLNAMESPACES
+       SQL_XMLNAMESPACES,
+
+       SQL_CREATE_ARRAY,
+       SQL_DROP_ARRAY,
+       SQL_ARRAY,
+       SQL_INDEX,
+       SQL_DIMENSION,
+       SQL_DIMENSION_SPEC
 } tokens;
 
 typedef enum jt {
diff -r 663ebf32a5cd -r bb0ae5e1fd53 sql/src/server/sql_parser.y
--- a/sql/src/server/sql_parser.y       Wed Oct 13 15:54:53 2010 +0200
+++ b/sql/src/server/sql_parser.y       Mon Oct 25 16:23:03 2010 +0200
@@ -261,6 +261,10 @@
        XML_primary
        opt_comma_string_value_expression
 
+       group_item
+       dimension
+       array_element
+
 %type <type>
        data_type
        datetime_type
@@ -309,6 +313,7 @@
        ident_commalist
        opt_corresponding
        column_ref_commalist
+       group_ref_commalist
        name_commalist
        schema_name_list
        column_ref
@@ -376,6 +381,14 @@
        forest_element_list
        forest_element
        XML_value_expression_list
+       dim_range
+       dim_range_list
+       dim_exp
+       index_exp
+       index_exp_list
+       index_term
+
+       array_element_list
 
 %type <i_val>
        any_all_some
@@ -421,6 +434,7 @@
        with_or_without_data
        XML_content_option
        XML_whitespace_option
+       table_or_array
 
 %type <w_val>
        wrdval
@@ -501,11 +515,13 @@
 %token NIL REF ABSENT EMPTY DOCUMENT ELEMENT CONTENT XMLNAMESPACES NAMESPACE
 %token XMLVALIDATE RETURNING LOCATION ID ACCORDING XMLSCHEMA URI XMLAGG
 
+/* SciQL tokens */
+%token ARRAY DIMENSION
 
 /* operators */
 %left UNION EXCEPT INTERSECT CORRESPONDING UNIONJOIN
 %left JOIN CROSS LEFT FULL RIGHT INNER NATURAL
-%left LIKE BETWEEN sqlIN WITH DATA
+%left LIKE BETWEEN sqlIN WITH DATA '[' ']'  ':'
 %left <operation> OR
 %left <operation> AND
 %left <operation> NOT
@@ -733,6 +749,11 @@
                append_string(l, sa_strdup(SA, "current_timezone"));
                append_symbol(l, $4 );
                $$ = _symbol_create_list( SQL_SET, l); }
+  |    set array_element '=' simple_atom
+               { dlist *l = L();
+               append_symbol(l, $2 );
+               append_symbol(l, $4 );
+               $$ = _symbol_create_list( SQL_SET, l); }
   ;
 
 schema:
@@ -922,23 +943,23 @@
 /* DOMAIN, ASSERTION, CHARACTER SET, TRANSLATION, TRIGGER */
 
 alter_statement:
-   ALTER TABLE qname ADD opt_column add_table_element
+   ALTER table_or_array qname ADD opt_column add_table_element
 
        { dlist *l = L();
          append_list(l, $3);
          append_symbol(l, $6);
          $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); }
- | ALTER TABLE qname ALTER alter_table_element
+ | ALTER table_or_array qname ALTER alter_table_element
        { dlist *l = L();
          append_list(l, $3);
          append_symbol(l, $5);
          $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); }
- | ALTER TABLE qname DROP drop_table_element
+ | 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 ); }
- | ALTER TABLE qname SET READ ONLY
+ | ALTER table_or_array qname SET READ ONLY
        { dlist *l = L();
          append_list(l, $3);
          append_symbol(l, NULL);
@@ -1003,6 +1024,12 @@
          $$ = _symbol_create_list( SQL_NOT_NULL, l); }
  |     opt_column ident DROP DEFAULT
        { $$ = _symbol_create( SQL_DROP_DEFAULT, $2); }
+ | opt_column ident dimension
+       { dlist *l = L();
+               l = append_string(l,$2);
+               l = append_symbol(l,$3);
+               $$= _symbol_create_list(SQL_DIMENSION, l);
+       }
  ;
 
 drop_table_element:
@@ -1272,7 +1299,7 @@
  ;
 
 table_def:
-    opt_temp TABLE qname table_content_source opt_on_commit 
+    opt_temp table_or_array qname table_content_source opt_on_commit 
        { int commit_action = CA_COMMIT;
          dlist *l = L();
          append_int(l, $1);
@@ -1281,8 +1308,12 @@
          if ($1 != SQL_PERSIST)
                commit_action = $5;
          append_int(l, commit_action);
-         $$ = _symbol_create_list( SQL_CREATE_TABLE, l ); }
- ;
+         $$ = _symbol_create_list( $2, l ); }
+ ;
+
+table_or_array:
+       TABLE   {$$= SQL_CREATE_TABLE;}
+       | ARRAY {$$= SQL_CREATE_ARRAY;}
 
 opt_temp:
     /* empty */                { $$ = SQL_PERSIST; }
@@ -1343,6 +1374,15 @@
                        append_list(l, $3);
                        $$ = _symbol_create_list(SQL_COLUMN, l);
                }
+ |     column data_type dimension opt_column_def_opt_list
+               {
+                       dlist *l = L();
+                       append_string(l, $1);
+                       append_type(l, &$2);
+                       append_list(l, $4);
+                       append_symbol(l, $3);
+                       $$ = _symbol_create_list(SQL_COLUMN, l);
+               }
  |  column serial_or_bigserial
                { /* SERIAL = INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY 
*/
                        /* handle multi-statements by wrapping them in a list */
@@ -1432,7 +1472,7 @@
                        { $$ = append_symbol($1, $3 ); }
  ;
 
-column_option: default | column_constraint | generated_column;
+column_option: default | column_constraint | generated_column ;
 
 default:
     DEFAULT default_value { $$ = _symbol_create_symbol(SQL_DEFAULT, $2); }
@@ -1527,6 +1567,70 @@
        }
  ;
 
+dimension: DIMENSION dim_range
+       {
+               $$= _symbol_create_list(SQL_DIMENSION,$2);
+       }
+  | DIMENSION {
+               $$= _symbol_create_list(SQL_DIMENSION,NULL);
+       }
+  | ARRAY dim_range_list
+       {
+               $$= _symbol_create_list(SQL_DIMENSION,$2);
+       }
+;
+
+dim_range_list:        
+       dim_range {
+               $$= $1;
+       }
+  | dim_range_list dim_range {
+               $$= append_list($1,$2);
+       }
+;
+
+dim_range :
+       '[' dim_exp ':' dim_exp ':' dim_exp ']'
+       {
+               dlist *l = L();
+               $$= l;
+       }
+       | '[' dim_exp ':' dim_exp ']'
+       {
+               dlist *l = L();
+               $$= l;
+       }
+       | '[' ']'
+       {
+               dlist *l = L();
+               $$= l;
+       }
+       | '[' dim_exp ']'
+       {
+               dlist *l = L();
+               $$= l;
+       }
+       | '[' ident ']'  /* sequence name */
+       {
+               dlist *l = L();
+               $$= l;
+       }
+;
+
+dim_exp :
+       literal
+       {
+               $$= L();
+       }
+ |     '-' literal
+       {
+               $$= L();
+       }
+  | '*'
+       {
+               $$= NULL;
+       }
+
 serial_opt_params:
        /* empty: return the defaults */
        { $$ = L();
@@ -1860,7 +1964,7 @@
 return_value:
       select_no_parens_orderby
    |  search_condition
-   |  TABLE '(' select_no_parens_orderby ')'   
+   |  table_or_array '(' select_no_parens_orderby ')'  
                { $$ = _symbol_create_symbol(SQL_TABLE, $3); }
    |  sqlNULL  { $$ = _newAtomNode( NULL);  }
    ;
@@ -1990,7 +2094,7 @@
   ;
 
 func_data_type:
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to