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