Changeset: bfc05edc1fa1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bfc05edc1fa1
Added Files:
        sql/test/BugTracker-2016/Tests/dce.Bug-6114.sql
        sql/test/BugTracker-2016/Tests/dce.Bug-6114.stable.err
        sql/test/BugTracker-2016/Tests/dce.Bug-6114.stable.out
        sql/test/BugTracker-2016/Tests/dce2.Bug-6115.sql
        sql/test/BugTracker-2016/Tests/dce2.Bug-6115.stable.err
        sql/test/BugTracker-2016/Tests/dce2.Bug-6115.stable.out
        sql/test/BugTracker-2016/Tests/semijoin.Bug-6116.sql
        sql/test/BugTracker-2016/Tests/semijoin.Bug-6116.stable.err
        sql/test/BugTracker-2016/Tests/semijoin.Bug-6116.stable.out
        sql/test/BugTracker-2016/Tests/split_project.Bug-6117.sql
        sql/test/BugTracker-2016/Tests/split_project.Bug-6117.stable.err
        sql/test/BugTracker-2016/Tests/split_project.Bug-6117.stable.out
Modified Files:
        sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.out
        sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
        sql/server/rel_optimizer.c
        sql/test/BugDay_2005-10-06_2.9.3/Tests/not_null.SF-933194.stable.out
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/type_dump_test.SF-989257.stable.out
        sql/test/BugTracker-2016/Tests/All
        
sql/test/BugTracker-2016/Tests/catalog_name_qualifier.Bug-3948.stable.out
        sql/test/BugTracker-2016/Tests/fk-smaller-pk.Bug-3983.stable.out
        sql/test/BugTracker-2016/Tests/ifthenelse-void.Bug-6075.stable.out
        sql/test/BugTracker-2016/Tests/storagemodel.stable.out
        sql/test/BugTracker-2016/Tests/storagemodel.stable.out.32bit
        sql/test/BugTracker-2016/Tests/storagemodel.stable.out.int128
        sql/test/BugTracker/Tests/authorization.SF-1430616.stable.out
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
Branch: Jun2016
Log Message:

fixes for bugs 6114, 6115, 6116 and 6117

improved dead code elimination for cases with references to sub queries (ie its 
a dag)
push simple select like expressions downs

split_project test is added here but only crashes in the dec2016/default.


diffs (truncated from 2218 to 300 lines):

diff --git a/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.out 
b/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.out
--- a/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.out
+++ b/sql/jdbc/tests/Tests/BugDatabaseMetaData_Bug_3356.stable.out
@@ -21,21 +21,21 @@ stdout of test 'BugDatabaseMetaData_Bug_
 
 Ready.
 
-# 17:27:28 >  
-# 17:27:28 >  "./BugDatabaseMetaData_Bug_3356.SQL.sh" 
"BugDatabaseMetaData_Bug_3356"
-# 17:27:28 >  
+# 22:06:18 >  
+# 22:06:18 >  "./BugDatabaseMetaData_Bug_3356.SQL.sh" 
"BugDatabaseMetaData_Bug_3356"
+# 22:06:18 >  
 
 
-# 17:27:28 >  
-# 17:27:28 >  java BugDatabaseMetaData_Bug_3356 
"jdbc:monetdb://madrid:34631/mTests_sql_jdbc_tests?user=monetdb&password=monetdb"
-# 17:27:28 >  
+# 22:06:18 >  
+# 22:06:18 >  java BugDatabaseMetaData_Bug_3356 
"jdbc:monetdb://localhost:39265/mTests_sql_jdbc_tests?user=monetdb&password=monetdb"
+# 22:06:18 >  
 
-null
-null
-null
-null
+_tables
+_tables
+YES
+YES
 
-# 17:27:28 >  
-# 17:27:28 >  "Done."
-# 17:27:28 >  
+# 22:06:18 >  
+# 22:06:18 >  "Done."
+# 22:06:18 >  
 
diff --git a/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out 
b/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
--- a/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
+++ b/sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
@@ -126,11 +126,11 @@ CREATE SCHEMA "sys";
 SET SCHEMA "sys";
 
 CREATE TABLE "allnewtriples" (
-       "id"        int         NOT NULL,
-       "subject"   int         NOT NULL,
-       "predicate" int         NOT NULL,
-       "object"    int         NOT NULL,
-       "explicit"  boolean     NOT NULL,
+       "id"        INTEGER       NOT NULL,
+       "subject"   INTEGER       NOT NULL,
+       "predicate" INTEGER       NOT NULL,
+       "object"    INTEGER       NOT NULL,
+       "explicit"  BOOLEAN       NOT NULL,
        CONSTRAINT "allnewtriples_id_pkey" PRIMARY KEY ("id"),
        CONSTRAINT "unique_key" UNIQUE ("subject", "predicate", "object")
 );
@@ -147,10 +147,10 @@ INSERT INTO "allnewtriples" VALUES (6, 2
 INSERT INTO "allnewtriples" VALUES (7, 2, 2, 2, false);
 
 CREATE TABLE "foreign" (
-       "id"        int NOT NULL,
-       "subject"   int NOT NULL,
-       "predicate" int NOT NULL,
-       "object"    int NOT NULL,
+       "id"        INTEGER       NOT NULL,
+       "subject"   INTEGER       NOT NULL,
+       "predicate" INTEGER       NOT NULL,
+       "object"    INTEGER       NOT NULL,
        CONSTRAINT "foreign_id_fkey" FOREIGN KEY ("id") REFERENCES 
"sys"."allnewtriples" ("id"),
        CONSTRAINT "foreign_subject_predicate_object_fkey" FOREIGN KEY 
("subject", "predicate", "object") REFERENCES "sys"."allnewtriples" ("subject", 
"predicate", "object")
 );
@@ -164,11 +164,11 @@ INSERT INTO "foreign" VALUES (6, 1, 2, 1
 INSERT INTO "foreign" VALUES (7, 1, 1, 2);
 
 CREATE TABLE "triples" (
-       "id"        int         NOT NULL,
-       "subject"   int         NOT NULL,
-       "predicate" int         NOT NULL,
-       "object"    int         NOT NULL,
-       "explicit"  boolean     NOT NULL,
+       "id"        INTEGER       NOT NULL,
+       "subject"   INTEGER       NOT NULL,
+       "predicate" INTEGER       NOT NULL,
+       "object"    INTEGER       NOT NULL,
+       "explicit"  BOOLEAN       NOT NULL,
        CONSTRAINT "triples_subject_predicate_object_unique" UNIQUE ("subject", 
"predicate", "object")
 );
 CREATE INDEX "triples_object_idx" ON "triples" ("object");
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -3829,11 +3829,35 @@ rel_push_join_down(int *changes, mvc *sq
  * semijoin( join(A, B) [ A.x == B.y ], C ) [ A.z == C.c ]
  * ->
  * join( semijoin(A, C) [ A.z == C.c ], B ) [ A.x == B.y ]
+ *
+ * also push simple expressions of a semijoin down if they only
+ * involve the left sided of the semijoin.
  */
 static sql_rel *
 rel_push_semijoin_down(int *changes, mvc *sql, sql_rel *rel) 
 {
        (void)*changes;
+
+       /* first push down the expressions involving only A */
+       if (is_semi(rel->op) && rel->exps && rel->l) {
+               list *exps = rel->exps, *nexps = sa_list(sql->sa);
+               node *n;
+
+               for(n = exps->h; n; n = n->next) {
+                       sql_exp *sje = n->data;
+
+                       if (n != exps->h &&
+                           !is_complex_exp(sje->flag) &&
+                            rel_has_exp(rel->l, sje->l) >= 0 &&
+                            rel_has_exp(rel->l, sje->r) >= 0) {
+                               rel->l = rel_select(sql->sa, rel->l, NULL);
+                               rel_select_add_exp(sql->sa, rel->l, sje);
+                       } else {
+                               append(nexps, sje);
+                       }
+               } 
+               rel->exps = nexps;
+       }
        if (is_semi(rel->op) && rel->exps && rel->l) {
                operator_type op = rel->op, lop;
                node *n;
@@ -7892,7 +7916,7 @@ static sql_rel *
        if (gp.cnt[op_left] || gp.cnt[op_right] || gp.cnt[op_full]) 
                rel = rewrite_topdown(sql, rel, &rel_split_outerjoin, &changes);
 
-       if (gp.cnt[op_select]) {
+       if (gp.cnt[op_select] || gp.cnt[op_semi]) {
                /* only once */
                if (level <= 0)
                        rel = rewrite(sql, rel, &rel_merge_rse, &changes); 
diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/not_null.SF-933194.stable.out 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/not_null.SF-933194.stable.out
--- a/sql/test/BugDay_2005-10-06_2.9.3/Tests/not_null.SF-933194.stable.out
+++ b/sql/test/BugDay_2005-10-06_2.9.3/Tests/not_null.SF-933194.stable.out
@@ -26,9 +26,9 @@ Ready.
 Operation successful
 
 CREATE TABLE "sys"."test" (
-       "id1" int,
-       "id2" int       NOT NULL,
-       "id3" int
+       "id1" INTEGER,
+       "id2" INTEGER       NOT NULL,
+       "id3" INTEGER
 );
 Operation successful
 
diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/type_dump_test.SF-989257.stable.out 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/type_dump_test.SF-989257.stable.out
--- a/sql/test/BugDay_2005-10-06_2.9.3/Tests/type_dump_test.SF-989257.stable.out
+++ b/sql/test/BugDay_2005-10-06_2.9.3/Tests/type_dump_test.SF-989257.stable.out
@@ -26,27 +26,27 @@ Ready.
 Operation successful
 
 CREATE TABLE "sys"."voyages" (
-       "number"            int    ,
-       "number_sup"        char   (1),
-       "trip"              int    ,
-       "trip_sup"          char   (1),
-       "boatname"          varchar(50),
-       "master"            varchar(50),
-       "tonnage"           int    ,
-       "type_of_boat"      varchar(30),
-       "built"             varchar(15),
-       "bought"            varchar(15),
-       "hired"             varchar(15),
-       "yard"              char   (1),
-       "chamber"           char   (1),
-       "departure_date"    varchar(15),
-       "departure_harbour" varchar(30),
-       "cape_arrival"      varchar(15),
-       "cape_departure"    varchar(15),
-       "arrival_date"      varchar(15),
-       "arrival_harbour"   varchar(30),
-       "next_voyage"       int    ,
-       "particulars"       varchar(507)
+       "number"            INTEGER,
+       "number_sup"        CHAR(1),
+       "trip"              INTEGER,
+       "trip_sup"          CHAR(1),
+       "boatname"          VARCHAR(50),
+       "master"            VARCHAR(50),
+       "tonnage"           INTEGER,
+       "type_of_boat"      VARCHAR(30),
+       "built"             VARCHAR(15),
+       "bought"            VARCHAR(15),
+       "hired"             VARCHAR(15),
+       "yard"              CHAR(1),
+       "chamber"           CHAR(1),
+       "departure_date"    VARCHAR(15),
+       "departure_harbour" VARCHAR(30),
+       "cape_arrival"      VARCHAR(15),
+       "cape_departure"    VARCHAR(15),
+       "arrival_date"      VARCHAR(15),
+       "arrival_harbour"   VARCHAR(30),
+       "next_voyage"       INTEGER,
+       "particulars"       VARCHAR(507)
 );
 
 # 12:41:42 >  
diff --git a/sql/test/BugTracker-2016/Tests/All 
b/sql/test/BugTracker-2016/Tests/All
--- a/sql/test/BugTracker-2016/Tests/All
+++ b/sql/test/BugTracker-2016/Tests/All
@@ -54,3 +54,7 @@ assert-on-table-producing-function.Bug-6
 assert-on-push-project-up.Bug-6077
 assert-on-project.Bug-6078
 crash.Bug-6081
+dce.Bug-6114
+dce2.Bug-6115
+semijoin.Bug-6116
+split_project.Bug-6117
diff --git 
a/sql/test/BugTracker-2016/Tests/catalog_name_qualifier.Bug-3948.stable.out 
b/sql/test/BugTracker-2016/Tests/catalog_name_qualifier.Bug-3948.stable.out
--- a/sql/test/BugTracker-2016/Tests/catalog_name_qualifier.Bug-3948.stable.out
+++ b/sql/test/BugTracker-2016/Tests/catalog_name_qualifier.Bug-3948.stable.out
@@ -131,12 +131,12 @@ Ready.
 [ 21   ]
 #drop table sys.t3948;
 #select * from dependencies_tables_on_views();
-% .,   .,      . # table_name
+% .L1, .L1,    .L1 # table_name
 % sch, usr,    dep_type # name
 % varchar,     varchar,        varchar # type
 % 0,   0,      0 # length
 #select * from sys.dependencies_tables_on_views();
-% .,   .,      . # table_name
+% .L1, .L1,    .L1 # table_name
 % sch, usr,    dep_type # name
 % varchar,     varchar,        varchar # type
 % 0,   0,      0 # length
diff --git a/sql/test/BugTracker-2016/Tests/dce.Bug-6114.sql 
b/sql/test/BugTracker-2016/Tests/dce.Bug-6114.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2016/Tests/dce.Bug-6114.sql
@@ -0,0 +1,260 @@
+
+/* Relations */
+CREATE TABLE comments(
+    id BIGINT NOT NULL PRIMARY KEY,
+    creationDate TIMESTAMP(3) WITH TIME ZONE NOT NULL,
+    locationIP VARCHAR(40) NOT NULL,
+    browserUsed VARCHAR(40) NOT NULL,
+    content VARCHAR(2000) NOT NULL,
+    length INT NOT NULL,
+    creator BIGINT NOT NULL,
+    place_id BIGINT NOT NULL,
+    replyOfPost BIGINT,
+    replyOfComment BIGINT
+);
+
+CREATE TABLE comment_tags(
+    comment_id BIGINT NOT NULL,
+    tag_id BIGINT NOT NULL,
+    PRIMARY KEY(comment_id, tag_id)
+);
+
+CREATE TABLE forums(
+    id BIGINT NOT NULL PRIMARY KEY,
+    title VARCHAR(80) NOT NULL,
+    creationDate TIMESTAMP(3) WITH TIME ZONE NOT NULL,
+    moderator BIGINT /*though it seems that all generated tuples have always a 
moderator */
+);
+
+CREATE TABLE forum_persons(
+    forum_id BIGINT NOT NULL,
+    person_id BIGINT NOT NULL,
+    joinDate TIMESTAMP(3) WITH TIME ZONE NOT NULL,
+    PRIMARY KEY(forum_id, person_id)
+);
+
+CREATE TABLE forum_tags(
+    forum_id BIGINT NOT NULL,
+    tag_id BIGINT NOT NULL,
+    PRIMARY KEY(forum_id, tag_id)
+);
+
+CREATE TABLE friends(
+    src BIGINT NOT NULL,
+    dst BIGINT NOT NULL,
+    creationDate TIMESTAMP(3) WITH TIME ZONE NOT NULL,
+    PRIMARY KEY(src, dst)
+);
+
+CREATE TABLE organisations(
+    id BIGINT NOT NULL PRIMARY KEY,
+    "type" VARCHAR(40) NOT NULL, /* university or company */
+    name VARCHAR(160) NOT NULL,
+    url VARCHAR(2000) NOT NULL,
+    place_id BIGINT NOT NULL
+);
+
+CREATE TABLE persons(
+    id BIGINT NOT NULL PRIMARY KEY,
+    firstName VARCHAR(40) NOT NULL ,
+    lastName VARCHAR(40) NOT NULL,
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to