Update of /cvsroot/monetdb/pathfinder/compiler/sql
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv26028/compiler/sql

Modified Files:
        lalg2sql.brg sql.c sqlprint.c 
Log Message:
-- operator conderr added
-- operator boot_not added
-- refactoring some structures



Index: sql.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/sql.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- sql.c       9 Feb 2007 08:08:58 -0000       1.17
+++ sql.c       13 Feb 2007 11:58:13 -0000      1.18
@@ -163,10 +163,10 @@
     /* distinct flag is false */
     ret->sem.select.distinct = false;
     /* initialize select lists  */
-    ret->sem.select.select_list  = (PFsql_t*)selectlist;
-    ret->sem.select.from_list    = (PFsql_t*)fromlist;
-    ret->sem.select.where_list   = (PFsql_t*)wherelist;
-    ret->sem.select.grpby_list   = (PFsql_t*)grpbylist;
+    ret->child[0] = (PFsql_t*)selectlist;
+    ret->child[1] = (PFsql_t*)fromlist;
+    ret->child[2] = (PFsql_t*)wherelist;
+    ret->child[3] = (PFsql_t*)grpbylist;
 
     return ret;
 }
@@ -412,7 +412,7 @@
 {
     PFsql_t *ret = leaf(sql_tbl_name);
     ret->sem.tablename.ident = name;
-    ret->sem.tablename.clmn_list = clmnlist;
+    ret->child[0] = clmnlist;
     return ret;
 }
 
@@ -580,7 +580,9 @@
     switch( type ) {
         case aat_nat:
         case aat_int: return "INTEGER";
-        case aat_str: return "VARCHAR(100)";
+        case aat_uA:
+        case aat_str: return "CHAR(100)";
+        case aat_dbl:
         case aat_dec: return "DECIMAL"; 
         default:      return "unknown";
     }
@@ -888,7 +890,7 @@
 PFsql_t*
 PFsql_where_list_add(const PFsql_t *list, const PFsql_t *item)
 {
-    return and( item, list);
+    return and_( item, list);
 }
 
 /**

Index: lalg2sql.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/lalg2sql.brg,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- lalg2sql.brg        9 Feb 2007 14:01:20 -0000       1.29
+++ lalg2sql.brg        13 Feb 2007 11:58:13 -0000      1.30
@@ -197,8 +197,6 @@
 Rel:    count (Rel)                               =  45 (10);
 Rel:    rownum (Rel)                              =  50 (10);
 Rel:    number (Rel)                              =  51 (10);
-Rel:    number (number (Rel))                     =  52 (10);
-Rel:    number (project (number (Rel)))           =  53 (10);
 Rel:    type (Rel)                                =  54 (10);
 Rel:    type_assert (Rel)                         =  55 (10);
 Rel:    cast (cast (Rel))                         =  56 (10);
@@ -956,12 +954,12 @@
                     p->sem.attach.attname, p->sem.attach.value.type,
                     literal (p->sem.attach.value));
 
-            assert (L(p)->sql_ann->sfw);
-            
+            assert (L(p)->sql_ann->sfw->child[1]);
+
             sql_stmt = select
                 (
                  NULL, /* no selectlist provided */
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -992,7 +990,7 @@
             sql_stmt = select
                 (
                  NULL,
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -1068,7 +1066,7 @@
                 );
 
             /* preparing fromlist */
-            PFsql_t *fromlist = L(p)->sql_ann->sfw->sem.select.from_list;
+            PFsql_t *fromlist = L(p)->sql_ann->sfw->child[1];
             fromlist = from_list_add(fromlist,
                     alias
                     (
@@ -1153,7 +1151,7 @@
                  ),
                  from_list
                  (
-                  L(p)->sql_ann->sfw->sem.select.from_list,
+                  L(p)->sql_ann->sfw->child[1],
                   alias
                   (
                    select
@@ -1191,7 +1189,7 @@
                  NULL,
                  from_list
                  (
-                  L(p)->sql_ann->sfw->sem.select.from_list,
+                  L(p)->sql_ann->sfw->child[1],
                   /* get maximal pre value from current max_pre_frag
                    * relation */
                   alias
@@ -1268,7 +1266,7 @@
             sql_stmt = select
                 (
                  NULL,
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
                  NULL,
                  (p->sem.aggr.part)?
                      column_list (sql_expression (L(p)->sql_ann->colmap,
@@ -1298,7 +1296,7 @@
                 select_distinct
                 (
                  NULL,
-                 p->sql_ann->sfw->sem.select.from_list,
+                 p->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 ):
@@ -1325,7 +1323,7 @@
                 select_distinct
                 (
                  NULL,
-                 p->sql_ann->sfw->sem.select.from_list,
+                 p->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 ):
@@ -1337,7 +1335,7 @@
             sql_stmt = select_distinct
                 (
                  NULL,
-                 p->sql_ann->sfw->sem.select.from_list,
+                 p->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -1519,7 +1517,7 @@
             sql_stmt = select
                 (
                  NULL,
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -1553,7 +1551,7 @@
             sql_stmt = select_distinct
                 (
                  NULL,
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -1585,7 +1583,7 @@
             sql_stmt = select
                 (
                  NULL, /* no selectlist provided */
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -1702,7 +1700,7 @@
                 sql_stmt = select
                     (
                      NULL,
-                     L(p)->sql_ann->sfw->sem.select.from_list,
+                     L(p)->sql_ann->sfw->child[1],
                      NULL,
                      NULL
                     );
@@ -1751,7 +1749,7 @@
              sql_stmt = select
                  (
                   NULL,
-                  L(p)->sql_ann->sfw->sem.select.from_list,
+                  L(p)->sql_ann->sfw->child[1],
                   NULL,
                   NULL
                  );
@@ -1762,6 +1760,7 @@
         case 65:
         {
             sql_stmt = doc_access (p);
+            p->dirty = true;
         } break;
         /* Rel:   element_tag (Rel, Rel) */
         case 500:
@@ -2039,7 +2038,7 @@
                       correlation_name (t3loc_crrl->name)
                      )
                     ),
-                    and
+                    and_ 
                     (
                      eq
                      (
@@ -2054,7 +2053,7 @@
                               ->sem.column.ident),
                           eloc_crrl->name)
                      ),
-                     and
+                     and_
                      (
                       gteq
                       (
@@ -2313,23 +2312,23 @@
          sql_column_env_add (p->sql_ann->colmap,
                  p->sem.string_join.iter_res,
                  type_of (p, p->sem.string_join.iter_res),
-                 sql_expression (R(p)->sql_ann->colmap,
-                     p->sem.string_join.iter_sep,
-                     type_of (R(p), p->sem.string_join.iter_sep))
+                 sql_expression (L(p)->sql_ann->colmap,
+                     p->sem.string_join.iter,
+                     type_of (L(p), p->sem.string_join.iter))
                  );
 
          sql_column_env_add (p->sql_ann->colmap,
                  p->sem.string_join.item_res,
                  type_of (p, p->sem.string_join.item_res),
-                 sql_expression (R(p)->sql_ann->colmap,
-                     p->sem.string_join.item_sep,
-                     type_of (R(p), p->sem.string_join.item_sep))
+                 sql_expression (L(p)->sql_ann->colmap,
+                     p->sem.string_join.item,
+                     type_of (L(p), p->sem.string_join.item))
                  );
          
          sql_stmt = select
              (
               NULL,
-              from_list (R(p)->sql_ann->sfw->sem.select.from_list),
+              from_list (L(p)->sql_ann->sfw->child[1]),
               NULL,
               NULL
              );
@@ -2361,7 +2360,7 @@
             sql_stmt = select
                 (
                  NULL,
-                 R(p)->sql_ann->sfw->sem.select.from_list,
+                 R(p)->sql_ann->sfw->child[1],
                  NULL,
                  NULL
                 );
@@ -2406,14 +2405,66 @@
             sql_stmt = select
                 (
                  NULL,
-                 L(p)->sql_ann->sfw->sem.select.from_list,
+                 L(p)->sql_ann->sfw->child[1],
+                 NULL,
+                 NULL
+                );
+        } break;
+        /* Rel: conderr (Rel) */
+        case 80:
+        {
+            for (unsigned int i = 0; i < PFarray_last (
+                    L(p)->sql_ann->colmap); i++) {
+                sql_column_env_t entry = sql_column_env_at (
+                        L(p)->sql_ann->colmap, i);
+                sql_column_env_add (p->sql_ann->colmap,
+                        entry.att, entry.type,
+                        entry.expression);
+            }
+
+            sql_stmt = select
+                (
+                 NULL,
+                 from_list (L(p)->sql_ann->sfw->child[1]),
                  NULL,
                  NULL
                 );
         } break;
+        /* Rel: bool_not (Rel) */
+        case 40:
+        {
+             /* copy all existing expressions */
+             for (unsigned int i = 0;
+                     i < PFarray_last (L(p)->sql_ann->colmap); i++) {
+                 sql_column_env_t entry = sql_column_env_at (
+                         L(p)->sql_ann->colmap, i);
+                 sql_column_env_add (p->sql_ann->colmap,
+                         entry.att, entry.type,
+                         entry.expression);
+             }   
+
+             sql_column_env_add (p->sql_ann->colmap,
+                     p->sem.unary.res, type_of (p, p->sem.unary.res),
+                     not_
+                     (
+                      sql_expression (L(p)->sql_ann->colmap,
+                          p->sem.unary.att,
+                          type_of (L(p), p->sem.unary.att))
+                     )
+                     );
+             where_env_copy (p->sql_ann->wheremap, L(p)->sql_ann->wheremap);
+
+             sql_stmt = select
+                 (
+                  NULL,
+                  from_list (L(p)->sql_ann->sfw->child[1]),
+                  NULL,
+                  NULL
+                 );
+        } break;
         default:
         {
-            /** TODO add OOPS here to indicate an unimplemented rule */
+            /** add OOPS here to indicate an unimplemented rule */
             PFoops (OOPS_FATAL,
                     "SQLgen: Logical algebra rule (%u) not supported",
                     rule);
@@ -2538,8 +2589,8 @@
         p->sql_ann->wheremap = sql_where_env_new ();
        
         if (sql_stmt->kind == sql_select) {
-            sql_stmt->sem.select.select_list = selectlist1;
-            sql_stmt->sem.select.where_list  = 
+            sql_stmt->child[0] = selectlist1;
+            sql_stmt->child[3] = 
                 (!wherelist)?
                 NULL:
                 wherelist;
@@ -2641,6 +2692,7 @@
         case aat_int:   return lit_int (atom.val.nat_);
         case aat_str:   return lit_str (atom.val.str);
         case aat_bln:   return lit_bln (atom.val.bln);
+        case aat_dbl:
         case aat_dec:   return lit_dec (atom.val.dec_);
         case aat_qname: return lit_str (PFqname_loc (atom.val.int_));
         default:
@@ -2707,7 +2759,7 @@
     return select
         (
          NULL, /* no selectlist provided */
-         L(p)->sql_ann->sfw->sem.select.from_list,
+         L(p)->sql_ann->sfw->child[1],
          NULL,
          NULL
         );
@@ -2754,7 +2806,7 @@
     return select
         (
          NULL, /* no selectlist provided */
-         L(p)->sql_ann->sfw->sem.select.from_list,
+         from_list (L(p)->sql_ann->sfw->child[1]),
          NULL,
          NULL
         );
@@ -2885,14 +2937,14 @@
          select
          (
           selectlist1,
-          l->sql_ann->sfw->sem.select.from_list,
+          l->sql_ann->sfw->child[1],
           wherelist1,
           NULL
          ),
          select
          (
           selectlist2,
-          r->sql_ann->sfw->sem.select.from_list,
+          r->sql_ann->sfw->child[1],
           wherelist2,
           NULL
          ) 
@@ -3725,7 +3777,7 @@
             ));
 
 
-    PFsql_t *fromlist = R(p)->sql_ann->sfw->sem.select.from_list;
+    PFsql_t *fromlist = R(p)->sql_ann->sfw->child[1];
     /* this new relation we need to get the attributes beside the pre
        value */
     fromlist = from_list_add( fromlist, alias(frag->sql_ann->fragment,
@@ -3796,7 +3848,7 @@
     }
 
     ret->sfw = gen_select(p, ret);
-    ret->sfw->sem.select.from_list = fromlist;
+    ret->sfw->child[1] = fromlist;
  
     return ret;
 }
@@ -3923,7 +3975,7 @@
             break;
     }
     
-    PFsql_t * fromlist = R(p)->sql_ann->sfw->sem.select.from_list;
+    PFsql_t * fromlist = R(p)->sql_ann->sfw->child[1];
     fromlist = from_list_add
         (
          fromlist,

Index: sqlprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/sqlprint.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- sqlprint.c  9 Feb 2007 08:01:24 -0000       1.14
+++ sqlprint.c  13 Feb 2007 11:58:13 -0000      1.15
@@ -270,9 +270,9 @@
 
     sqlprintf("%s", PFsql_table_str( n->sem.tablename.ident ));
     /* the column-list has not to be specified in every case */ 
-    if( n->sem.tablename.clmn_list ) {
+    if( n->child[0]) {
         sqlprintf("(");
-        print_clm_list(n->sem.tablename.clmn_list);
+        print_clm_list(n->child[0]);
         sqlprintf(")");
     }
 }
@@ -287,18 +287,18 @@
             sqlprintf("SELECT ");
             sqlprintf("%s", ( n->sem.select.distinct )?
                     "DISTINCT ":"");
-            print_select_list( n->sem.select.select_list );
+            print_select_list( n->child[0] );
             sqlprintf(" FROM ");
-            print_from_list( n->sem.select.from_list );
+            print_from_list( n->child[1] );
             /* where list is optional, we leave the where list
                to zero when its not specified */
-            if( n->sem.select.where_list ) {
+            if( n->child[2]) {
                 sqlprintf(" WHERE ");
-                print_expr( n->sem.select.where_list );
+                print_expr( n->child[2]);
             }
-            if( n->sem.select.grpby_list ) {
+            if( n->child[4]) {
                 sqlprintf(" GROUP BY ");
-                print_clm_list( n->sem.select.grpby_list );
+                print_clm_list( n->child[3] );
             }
         } break;
         default:
@@ -431,6 +431,11 @@
 
     switch( n->kind )
     {
+        case sql_not:
+         sqlprintf("NOT (");
+         print_expr( n->child[0] );
+         sqlprintf(")");
+         break;
         case sql_max:
         {
             sqlprintf("MAX (");
@@ -453,23 +458,6 @@
           print_expr( n->child[1] );
           sqlprintf(")");
         } break;
-        case sql_add:
-        {
-          sqlprintf("(");
-          print_expr( n->child[0] );
-          sqlprintf(" + ");
-          print_expr( n->child[1] );
-          sqlprintf(")");
-        } break;
-        case sql_sub:
-        {
-          sqlprintf("(");
-          print_expr( n->child[0] );
-          sqlprintf(" - ");
-          print_expr( n->child[1] );
-          sqlprintf(")");
-
-        } break;
         case sql_gt:
         {
           sqlprintf("(");
@@ -511,6 +499,18 @@
             print_statement(n->child[1]);
             sqlprintf(")");
         break;
+        /* expression : '(' expression '+' expression ')' */
+        case sql_add:
+        case sql_sub:
+        case sql_mul:
+        case sql_div:
+        {
+            sqlprintf("(");
+            print_statement(n->child[0]);
+            sqlprintf(" %s ", ID[n->kind]);
+            print_statement(n->child[1]);
+            sqlprintf(")");
+        } break;
         default:
         {
             PFoops( OOPS_FATAL, "expression screwed up (%u)",
@@ -831,8 +831,8 @@
         {
             sqlprintf("SELECT ");
             if( n->sem.select.distinct ) sqlprintf("DISTINCT ");
-            print_select_list(n->sem.select.select_list);
-            if(n->sem.select.from_list)
+            print_select_list(n->child[0]);
+            if(n->child[1])
             {
                 sqlprintf(" FROM ");
             }
@@ -849,6 +849,23 @@
             print_statement(n->child[1]);
             sqlprintf(")");
         } break;
+        case sql_gt:
+        {
+          sqlprintf("(");
+          print_expr( n->child[0] );
+          sqlprintf(" > ");
+          print_expr( n->child[1] );
+          sqlprintf(")");
+        } break;
+        case sql_gteq:
+        {
+          sqlprintf("(");
+          print_expr( n->child[0] );
+          sqlprintf(" >= ");
+          print_expr( n->child[1] );
+          sqlprintf(")");
+        } break;
+
         default:
         {
             PFoops( OOPS_FATAL,
@@ -927,9 +944,9 @@
     assert( n->kind == sql_tbl_name );
 
     sqlprintf("%s", PFsql_table_str( n->sem.tablename.ident ));
-    if( n->sem.tablename.clmn_list ) {
+    if( n->child[0]) {
         sqlprintf("(");
-        print_clm_list(n->sem.tablename.clmn_list);
+        print_clm_list(n->child[0]);
         sqlprintf(")");
     }
 }


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to