Changeset: 8ee024048e42 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8ee024048e42
Modified Files:
        sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
        sql/backends/monet5/UDF/udf.c
        sql/backends/monet5/UDF/udf.h
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_user.c
        sql/include/sql_catalog.h
        sql/include/sql_relation.h
        sql/rel.txt
        sql/server/Makefile.ag
        sql/server/bin_optimizer.c
        sql/server/rel_bin.c
        sql/server/rel_bin.h
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/server/rel_semantic.c
        sql/server/rel_subquery.c
        sql/server/rel_subquery.h
        sql/server/rel_updates.c
        sql/server/rel_updates.h
        sql/server/sql_env.c
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.y
        sql/server/sql_psm.c
        sql/server/sql_psm.h
        sql/server/sql_rel2bin.c
        sql/server/sql_scan.c
        sql/server/sql_schema.c
        sql/server/sql_schema.h
        sql/server/sql_semantic.c
        sql/server/sql_semantic.h
        sql/server/sql_statement.c
        sql/server/sql_statement.h
        sql/storage/sql_storage.h
        sql/storage/store.c
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare_doesnot_like_LIKE.SF-1234205.sql
        sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out
        sql/test/BugTracker-2009/Tests/decimal_needs_truncation.SF-2605686.sql
        sql/test/BugTracker-2009/Tests/prepare_commit_execute.SF-2606020.sql
        sql/test/BugTracker-2009/Tests/prepare_decimal_bug.SF-2831994.sql
        
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
        sql/test/BugTracker-2010/Tests/All
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
        sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.sql
        sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.sql
        sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
        sql/test/BugTracker/Tests/decimal_prepare.SF-1655818.sql
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/large_prepare.SF-1363729.sql
        sql/test/BugTracker/Tests/large_prepare_2.SF-1363729.sql
        sql/test/BugTracker/Tests/prepare_decimal_float.SF-1675795.sql
        sql/test/Connections/Tests/All
        sql/test/Triggers/Tests/recursive_triggers.stable.err
        sql/test/Views/Tests/Views.stable.err
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check5.stable.out
        sql/test/mapi/Tests/php_monetdb.stable.out
Branch: default
Log Message:

All sql statements now first translate into '(extended) relational algebra'.
Extended in the sense that it has a long list of 'DDL' statements, which
hardly follow the relational table semantics.

This cleans out 6 files sql_schema.[ch], sql_psm.[ch] and rel_subquery.[ch]

Also fixed some small bugs


diffs (truncated from 5405 to 300 lines):

diff --git a/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out 
b/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
--- a/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
+++ b/sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
@@ -28,10 +28,12 @@ Ready.
 % mal # name
 % clob # type
 % 76 # length
-function user.s1_1{autoCommit=true}(A0:bte,A1:bte):void;
+function user.s0_1{autoCommit=true}(A0:bte,A1:bte):void;
     X_5 := udf.fuse(A0,A1);
     sql.exportValue(1,".","fuse_single_value":str,"smallint",16,0,6,X_5,"");
-end s1_1;
+end s0_1;
+# optimizer.mitosis()
+# optimizer.dataflow()
 #select fuse(1,2);
 % . # table_name
 % fuse_single_value # name
@@ -43,10 +45,12 @@ end s1_1;
 % mal # name
 % clob # type
 % 71 # length
-function user.s3_1{autoCommit=true}(A0:sht,A1:sht):void;
+function user.s2_1{autoCommit=true}(A0:sht,A1:sht):void;
     X_5 := udf.fuse(A0,A1);
     sql.exportValue(1,".","fuse_single_value":str,"int",32,0,6,X_5,"");
-end s3_1;
+end s2_1;
+# optimizer.mitosis()
+# optimizer.dataflow()
 #select fuse(1000,2000);
 % . # table_name
 % fuse_single_value # name
@@ -58,10 +62,12 @@ end s3_1;
 % mal # name
 % clob # type
 % 74 # length
-function user.s5_1{autoCommit=true}(A0:int,A1:int):void;
+function user.s4_1{autoCommit=true}(A0:int,A1:int):void;
     X_5 := udf.fuse(A0,A1);
     sql.exportValue(1,".","fuse_single_value":str,"bigint",64,0,6,X_5,"");
-end s5_1;
+end s4_1;
+# optimizer.mitosis()
+# optimizer.dataflow()
 #select fuse(1000000,2000000);
 % . # table_name
 % fuse_single_value # name
@@ -91,7 +97,7 @@ end s5_1;
 % mal # name
 % clob # type
 % 65 # length
-function user.s12_1{autoCommit=true}():void;
+function user.s11_1{autoCommit=true}():void;
     X_2 := sql.mvc();
     X_12:bat[:oid,:bte]  := sql.bind(X_2,"sys","udf_fuse","a",0);
     X_10:bat[:oid,:bte]  := sql.bind(X_2,"sys","udf_fuse","a",2);
@@ -114,13 +120,15 @@ function user.s12_1{autoCommit=true}():v
     sql.rsColumn(X_27,"sys.","fuse_a":str,"smallint",16,0,X_26);
     X_33 := io.stdout();
     sql.exportResult(X_33,X_27);
-end s12_1;
+end s11_1;
+# optimizer.mitosis()
+# optimizer.dataflow()
 #explain select fuse(c,d) from udf_fuse;
 % .explain # table_name
 % mal # name
 % clob # type
 % 65 # length
-function user.s13_1{autoCommit=true}():void;
+function user.s12_1{autoCommit=true}():void;
     X_2 := sql.mvc();
     X_12:bat[:oid,:sht]  := sql.bind(X_2,"sys","udf_fuse","c",0);
     X_10:bat[:oid,:sht]  := sql.bind(X_2,"sys","udf_fuse","c",2);
@@ -143,13 +151,15 @@ function user.s13_1{autoCommit=true}():v
     sql.rsColumn(X_27,"sys.","fuse_c":str,"int",32,0,X_26);
     X_33 := io.stdout();
     sql.exportResult(X_33,X_27);
-end s13_1;
+end s12_1;
+# optimizer.mitosis()
+# optimizer.dataflow()
 #explain select fuse(e,f) from udf_fuse;
 % .explain # table_name
 % mal # name
 % clob # type
 % 65 # length
-function user.s14_1{autoCommit=true}():void;
+function user.s13_1{autoCommit=true}():void;
     X_2 := sql.mvc();
     X_12:bat[:oid,:int]  := sql.bind(X_2,"sys","udf_fuse","e",0);
     X_10:bat[:oid,:int]  := sql.bind(X_2,"sys","udf_fuse","e",2);
@@ -172,7 +182,9 @@ function user.s14_1{autoCommit=true}():v
     sql.rsColumn(X_27,"sys.","fuse_e":str,"bigint",64,0,X_26);
     X_33 := io.stdout();
     sql.exportResult(X_33,X_27);
-end s14_1;
+end s13_1;
+# optimizer.mitosis()
+# optimizer.dataflow()
 #select fuse(a,b) from udf_fuse;
 % sys. # table_name
 % fuse_a # name
diff --git a/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out 
b/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
--- a/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
+++ b/sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
@@ -49,10 +49,10 @@ Ready.
 % mal # name
 % clob # type
 % 74 # length
-function user.s1_1{autoCommit=true}(A0:str):void;
+function user.s0_1{autoCommit=true}(A0:str):void;
     X_4 := udf.reverse(A0);
     sql.exportValue(1,".","reverse_single_value":str,"clob",0,0,4,X_4,"");
-end s1_1;
+end s0_1;
 #select reverse('MonetDB');
 % . # table_name
 % reverse_single_value # name
@@ -82,7 +82,7 @@ end s1_1;
 % mal # name
 % clob # type
 % 68 # length
-function user.s8_1{autoCommit=true}():void;
+function user.s7_1{autoCommit=true}():void;
     X_2 := sql.mvc();
     X_13:bat[:oid,:str]  := sql.bind(X_2,"sys","udf_reverse","x",0);
     X_11:bat[:oid,:str]  := sql.bind(X_2,"sys","udf_reverse","x",2);
@@ -98,7 +98,7 @@ function user.s8_1{autoCommit=true}():vo
     sql.rsColumn(X_20,"sys.","reverse_x","clob",0,0,X_19);
     X_24 := io.stdout();
     sql.exportResult(X_24,X_20);
-end s8_1;
+end s7_1;
 #select reverse(x) from udf_reverse;
 % sys. # table_name
 % reverse_x # name
diff --git a/sql/backends/monet5/UDF/udf.c b/sql/backends/monet5/UDF/udf.c
--- a/sql/backends/monet5/UDF/udf.c
+++ b/sql/backends/monet5/UDF/udf.c
@@ -21,8 +21,6 @@
 #include "monetdb_config.h"
 #include "udf.h"
 
-
-
 /* Reverse a string */
 str UDFreverse ( str *ret , str *arg )
 {
@@ -167,13 +165,14 @@ UDFfuse_scalar_impl(int,unsigned int  ,l
  * Type-expanded optimized version,
  * accessing value arrays directly.
  */
-str UDFBATfuse ( bat *ires , bat *ione , bat *itwo)
+str 
+UDFBATfuse ( bat *ires , bat *ione , bat *itwo)
 {
        BAT *bres = NULL, *bone = NULL, *btwo = NULL;
        bit two_tail_sorted_unsigned = FALSE;
 
        /* assert calling sanity */
-       assert(ires != NULL && ione != NULL && itwo == NULL);
+       assert(ires != NULL && ione != NULL && itwo != NULL);
 
        /* bat-id -> BAT-descriptor */
        if ((bone = BATdescriptor(*ione)) == NULL)
diff --git a/sql/backends/monet5/UDF/udf.h b/sql/backends/monet5/UDF/udf.h
--- a/sql/backends/monet5/UDF/udf.h
+++ b/sql/backends/monet5/UDF/udf.h
@@ -41,6 +41,6 @@ UDFfuse_scalar_decl(bte,sht);
 UDFfuse_scalar_decl(sht,int);
 UDFfuse_scalar_decl(int,lng);
 
-udf_export str UDFBATfuse(int *ret, int *one, int *two);
+udf_export str UDFBATfuse(bat *ret, bat *one, bat *two);
 
 #endif /* _SQL_UDF_H_ */
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -65,6 +65,18 @@ pattern catalog(type:int,sname:str,name:
 address SQLcatalog
 comment "a catalog statement";
 
+pattern catalog(type:int,sname:str,name:str,funcid:int,ft:int,action:int):void
+address SQLcatalog
+comment "a catalog statement";
+
+pattern 
catalog(type:int,sname:str,name:str,tname:str,time:int,o:int,event:int,oname:str,nname:str,condition:str,query:str):void
+address SQLcatalog
+comment "a catalog statement";
+
+pattern catalog(type:int,sname:str,t:ptr):void
+address SQLcatalog
+comment "a catalog statement";
+
 pattern catalog(type:int,sname:str,t:ptr,temp:int):void
 address SQLcatalog
 comment "a catalog statement";
@@ -1158,7 +1170,6 @@ sql.prelude();
 #include <mkey.h>
 #include <str.h>
 #include "sql_privileges.h"
-#include "sql_semantic.h"
 #include "sql_rel2bin.h"
 #include <bin_optimizer.h>
 #include "sql_decimal.h"
@@ -1202,7 +1213,7 @@ extern void backend_destroy(backend *b);
 
 extern int sqlcleanup(mvc *c, int err);
 extern sql_rel *sql_symbol2relation(mvc *c, symbol *sym);
-extern stmt *sql_symbol2stmt(mvc *c, sql_rel *r, symbol *sym);
+extern stmt *sql_relation2stmt(mvc *c, sql_rel *r);
 
 extern BAT *mvc_bind(mvc *m, char *sname, char *tname, char *cname, int 
access);
 extern BAT *mvc_bind_dbat(mvc *m, char *sname, char *tname, int access);
@@ -1613,19 +1624,11 @@ rel_need_distinct_query( sql_rel *rel)
 sql_rel *
 sql_symbol2relation(mvc *c, symbol *sym)
 {
-       int status;
        sql_rel *r;
 
-       status = c->session->status;
        r = rel_semantic(c, sym);
-       if (!r) {
-               if (c->errstr[0]) {
-                       return NULL;
-               } else {
-                       c->session->status = status;
-                       return NULL;
-               }
-       }
+       if (!r) 
+               return NULL;
        if (r) {
                r = rel_optimizer(c, r);
                r = rel_distribute(c, r);
@@ -1636,21 +1639,12 @@ sql_symbol2relation(mvc *c, symbol *sym)
 }
 
 stmt *
-sql_symbol2stmt(mvc *c, sql_rel *r, symbol *sym)
+sql_relation2stmt(mvc *c, sql_rel *r)
 {
        stmt *s = NULL;
 
        if (!r) {
-               if (c->errstr[0]) {
-                       return NULL;
-               } else {
-                       /*printf("# falling back to direct mode \n");*/
-                       s = output_semantic(c, sym);
-                       if (s) {
-                               s = rel2bin(c, s);
-                               s = bin_optimizer(c, s);
-                       }
-               }
+               return NULL;
        } else {
                if (c->emode == m_plan) {
                        rel_print(c, r, 0);
@@ -1903,16 +1897,23 @@ create_table_or_view( mvc *sql, char *sn
                        mvc_copy_key(sql, nt, k);
                }
        }
-       /* TODO copy triggers */
        /* also create dependencies */
-       if (t->query && isView(t)) {
+       if (nt->query && isView(nt)) {
                sql_rel *r = NULL;
 
                sql->sa = sa_create();
-               r = rel_parse(sql, t->query, m_deps); 
-               rel_destroy(r);
+               r = rel_parse(sql, nt->query, m_deps); 
+               if (r) {
+                       stmt *sqs = rel_bin(sql, r);
+                       list *view_id_l = stmt_list_dependencies(sql->sa, sqs, 
VIEW_DEPENDENCY);
+                       list *id_l = stmt_list_dependencies(sql->sa, sqs, 
COLUMN_DEPENDENCY);
+                       list *func_id_l = stmt_list_dependencies(sql->sa, sqs, 
FUNC_DEPENDENCY);
+
+                       mvc_create_dependencies(sql, id_l, nt->base.id, 
VIEW_DEPENDENCY);
+                       mvc_create_dependencies(sql, view_id_l, nt->base.id, 
VIEW_DEPENDENCY);
+                       mvc_create_dependencies(sql, func_id_l, nt->base.id, 
VIEW_DEPENDENCY);
+               }
                sa_destroy(sql->sa);
-               sql->sa = NULL;
        }
        sql->sa = osa;
        return MAL_SUCCEED;
@@ -2029,9 +2030,6 @@ alter_table( mvc *sql, char *sname, sql_
                        mvc_copy_key(sql, nt, k);
                }
        }
-
-       /* TODO copy triggers */
-       /* also create dependencies */
        return MAL_SUCCEED;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to