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

Modified Files:
        lalg2sql.brg sql.c sqlprint.c 
Log Message:

-- fixed bug in textnode constructor
-- optimizations in element constructor (now we benefit from indexes of 
materialized tables)
-- fixed bug in count constructor


Index: sql.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/sql.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- sql.c       13 Feb 2007 11:58:13 -0000      1.18
+++ sql.c       5 Mar 2007 18:57:00 -0000       1.19
@@ -396,6 +396,24 @@
 }
 
 PFsql_t*
+PFsql_order(PFsql_t *a, PFsql_t *sort)
+{
+    return wire2(sql_order, a, sort);
+}
+
+PFsql_t*
+PFsql_asc()
+{
+    return leaf(sql_asc);
+}
+
+PFsql_t*
+PFsql_desc()
+{
+    return leaf(sql_desc);
+}
+
+PFsql_t*
 PFsql_window_clause(const PFsql_t *partcls, const PFsql_t *ordercls)
 {
     return wire2(sql_wnd_clause, partcls, ordercls);
@@ -579,11 +597,11 @@
 {
     switch( type ) {
         case aat_nat:
-        case aat_int: return "INTEGER";
+        case aat_int: return "DECIMAL(20,10)";
         case aat_uA:
         case aat_str: return "CHAR(100)";
         case aat_dbl:
-        case aat_dec: return "DECIMAL"; 
+        case aat_dec: return "DECIMAL(20,10)"; 
         default:      return "unknown";
     }
     return NULL; /* satisfy picky compiler */
@@ -1052,6 +1070,12 @@
     return wire2(sql_div, a, b);
 }
 
+PFsql_t*
+PFsql_like(const PFsql_t *a, const PFsql_t *b)
+{
+   return wire2(sql_like, a, b);
+}
+
 /*............ Boolean operator constructors ...........*/
 
 /**

Index: lalg2sql.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/lalg2sql.brg,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- lalg2sql.brg        13 Feb 2007 14:34:42 -0000      1.31
+++ lalg2sql.brg        5 Mar 2007 18:56:59 -0000       1.32
@@ -317,7 +317,10 @@
 static struct PFsql_alg_ann_t* llscj(PFalg_axis_t axis, const PFla_op_t *p,
         const PFla_op_t *frag);
 static PFsql_t* doc_access(PFla_op_t *p);
+#if 0
 static PFsql_t* collect_fragments(PFla_op_t *p);
+#endif
+static PFsql_t* collect(PFla_op_t *p);
 
 /** 
  * We collect the SQL statements during compilation here
@@ -725,6 +728,10 @@
[...996 lines suppressed...]
+             fragrelation(),
+             NULL,
+             NULL
+            );
+
+       PFsql_t *ret = NULL;
+       if (LR(p)->kind == la_merge_adjacent)
+               ret = collect (L(p));
+       else if (L(p)->kind == la_empty_frag)
+               ret = R(p)->sql_ann->fragment;
+       else
+               ret = disjunion (collect (L(p)), R(p)->sql_ann->fragment); 
+
+
+       assert (ret);
+       return ret;
+} 
 
 static void
 parse (PFla_op_t *n)

Index: sqlprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/sql/sqlprint.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- sqlprint.c  13 Feb 2007 14:34:42 -0000      1.16
+++ sqlprint.c  5 Mar 2007 18:57:00 -0000       1.17
@@ -336,22 +336,6 @@
                     "fromlist", n->kind);
             break;
     }
-//    
-//    if( !((n->kind == sql_frm_list) ||
-//            (n->kind == sql_list_terminator)) )
-//    {
-//        PFoops( OOPS_FATAL,
-//                "Pathfinder failed to print from list (%u)", n->kind );
-//    }
-//   
-//    if( (n->kind == sql_list_terminator) &&
-//            (n->child[0] == NULL) && (n->child[1] == NULL) )
-//        return;
-//
-//    print_tablereference(n->child[0]);
-//    if(!(n->child[1]->kind == sql_list_terminator ))
-//        sqlprintf(", ");
-//    print_from_list(n->child[1]);
 }
 
 static void
@@ -404,7 +388,7 @@
         {
             sqlprintf("(");
             print_fullselect(n->child[0]);
-            sqlprintf(") UNION (");
+            sqlprintf(") UNION ALL (");
             print_fullselect(n->child[1]);
             sqlprintf(")");
         } break;
@@ -412,7 +396,7 @@
         {
             sqlprintf("(");
             print_fullselect(n->child[0]);
-            sqlprintf(") EXCEPT (");
+            sqlprintf(") EXCEPT ALL (");
             print_fullselect(n->child[1]);
             sqlprintf(")");
         } break;
@@ -511,6 +495,17 @@
             print_statement(n->child[1]);
             sqlprintf(")");
         } break;
+       case sql_like:
+       {
+           sqlprintf("(");
+           print_statement(n->child[0]);
+           sqlprintf(" LIKE  '%%");
+           /* write the string without beginning and 
+              trailing ' */
+           assert (n->child[1]->kind == sql_lit_str);
+           sqlprintf("%s", n->child[1]->sem.atom.val.s); 
+           sqlprintf("\%%')");
+       } break;
         default:
         {
             PFoops( OOPS_FATAL, "expression screwed up (%u)",
@@ -534,21 +529,6 @@
             print_statement(n);
             break;
     }
-//    if( !((n->kind == sql_slct_list) ||
-//            (n->kind == sql_list_terminator)) )
-//    {
-//        PFoops( OOPS_FATAL,
-//                "Pathfinder failed to print attribute list" );
-//    }
-//   
-//    if( (n->kind == sql_list_terminator) &&
-//            (n->child[0] == NULL) && (n->child[1] == NULL) )
-//        return;
-//
-//    print_statement(n->child[0]);
-//    if(!(n->child[1]->kind == sql_list_terminator ))
-//        sqlprintf(", ");
-//    print_select_list(n->child[1]);
 }
 
 static void
@@ -623,21 +603,6 @@
             print_statement( n );
             break;
     }
-//    if( !((n->kind == sql_srtky_expr) ||
-//            (n->kind == sql_list_terminator)) )
-//    {
-//        PFoops( OOPS_FATAL,
-//                "Pathfinder failed to print attribute list" );
-//    }
-//   
-//    if( (n->kind == sql_list_terminator) &&
-//            (n->child[0] == NULL) && (n->child[1] == NULL) )
-//        return;
-//
-//    print_statement(n->child[0]);
-//    if(!(n->child[1]->kind == sql_list_terminator ))
-//        sqlprintf(", ");
-//    print_sort_key_expressions(n->child[1]);
 }
 
 static void
@@ -690,6 +655,17 @@
 print_statement(PFsql_t *n)
 {
     switch( n->kind ) {
+       case sql_asc:
+           sqlprintf("ASC");
+           break;
+       case sql_desc:
+           sqlprintf("DESC");
+           break;
+       case sql_order:
+           print_statement (n->child[0]);
+           sqlprintf(" ");
+           print_statement (n->child[1]);
+           break;
         case sql_sum:
             sqlprintf("SUM(");
             print_statement( n->child[0] );
@@ -745,7 +721,7 @@
             {
                 sqlprintf("(");
                 print_statement( n->child[0] );
-                sqlprintf(") UNION (");
+                sqlprintf(") UNION ALL (");
                 print_statement( n->child[1] );
                 sqlprintf(")");
             } break;
@@ -753,7 +729,7 @@
             {
                 sqlprintf("(");
                 print_statement( n->child[0] );
-                sqlprintf(") EXCEPT (");
+                sqlprintf(") EXCEPT ALL (");
                 print_statement( n->child[1] );
                 sqlprintf(")");
             } break;
@@ -849,6 +825,17 @@
             print_statement(n->child[1]);
             sqlprintf(")");
         } break;
+       case sql_like:
+       {
+           sqlprintf("(");
+           print_statement(n->child[0]);
+           sqlprintf(" LIKE  '%%");
+           /* write the string without beginning and 
+              trailing ' */
+           assert (n->child[1]->kind == sql_lit_str);
+           sqlprintf("%s", n->child[1]->sem.atom.val.s); 
+           sqlprintf("\%%')");
+       } break;
         case sql_gt:
         {
           sqlprintf("(");


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to