Changeset: c75a65435b81 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c75a65435b81
Modified Files:
        gdk/gdk_join.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/storage/store.c
        sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.err
        sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.out
        sql/test/BugTracker-2015/Tests/All
        sql/test/miscellaneous/Tests/simple_selects.sql
        sql/test/miscellaneous/Tests/simple_selects.stable.out
        sql/test/subquery/Tests/subquery4.stable.out
Branch: default
Log Message:

Merge with Jun2020 branch.


diffs (242 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3940,7 +3940,7 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
        swap = (lcost < rcost);
 
        if ((BATordered(r) || BATordered_rev(r)) &&
-           (lci.ncand * (log2(rci.ncand) + 1) < (swap ? lcost : rcost))) {
+           (lci.ncand * (log2((double) rci.ncand) + 1) < (swap ? lcost : 
rcost))) {
                /* r is sorted and it is cheaper to do multiple binary
                 * searches than it is to use a hash */
                return mergejoin(r1p, r2p, l, r, &lci, &rci,
@@ -3948,7 +3948,7 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
                                 estimate, t0, false, __func__);
        }
        if ((BATordered(l) || BATordered_rev(l)) &&
-           (rci.ncand * (log2(lci.ncand) + 1) < (swap ? lcost : rcost))) {
+           (rci.ncand * (log2((double) lci.ncand) + 1) < (swap ? lcost : 
rcost))) {
                /* l is sorted and it is cheaper to do multiple binary
                 * searches than it is to use a hash */
                rc = mergejoin(r2p ? r2p : &r2, r1p, r, l, &rci, &lci,
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -5585,6 +5585,7 @@ rel_query(sql_query *query, sql_rel *rel
                                res = rel_crossproduct(sql->sa, res, fnd, 
op_join);
                                if (lateral)
                                        set_dependent(res);
+                               res = rel_select(sql->sa, res, NULL);
                        } else {
                                res = fnd;
                        }
diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2012,6 +2012,8 @@ rewrite_anyequal(mvc *sql, sql_rel *rel,
                                sql_rel *sq = lsq;
                                sql_subfunc *ea = sql_bind_func(sql->sa, 
sql->session->schema, is_anyequal(sf)?"anyequal":"allnotequal", 
exp_subtype(re), NULL, F_AGGR);
 
+                               /* we introduced extra selects */
+                               assert(is_project(rel->op) || 
is_select(rel->op));
                                rsq = rel_add_identity2(sql, rsq, &rid);
                                rid = exp_ref(sql->sa, rid);
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5131,24 +5131,15 @@ sys_drop_statistics(sql_trans *tr, sql_c
 }
 
 static int
-sys_drop_column(sql_trans *tr, sql_column *col, int drop_action)
-{
-       str seq_pos = NULL;
+sys_drop_default_object(sql_trans *tr, sql_column *col, int drop_action)
+{
+       char *seq_pos = NULL;
        const char *next_value_for = "next value for \"sys\".\"seq_";
        sql_schema *syss = find_sql_schema(tr, isGlobal(col->t)?"sys":"tmp"); 
-       sql_table *syscolumn = find_sql_table(syss, "_columns");
-       oid rid = table_funcs.column_find_row(tr, find_sql_column(syscolumn, 
"id"),
-                                 &col->base.id, NULL);
-
-       if (is_oid_nil(rid))
-               return 0;
-       table_funcs.table_delete(tr, syscolumn, rid);
-       sql_trans_drop_dependencies(tr, col->base.id);
-       sql_trans_drop_any_comment(tr, col->base.id);
-       sql_trans_drop_obj_priv(tr, col->base.id);
-
+
+       /* Drop sequence for generated column if it's the case */
        if (col->def && (seq_pos = strstr(col->def, next_value_for))) {
-               sql_sequence * seq = NULL;
+               sql_sequence *seq = NULL;
                char *seq_name = _STRDUP(seq_pos + (strlen(next_value_for) - 
strlen("seq_")));
                node *n = NULL;
 
@@ -5164,6 +5155,25 @@ sys_drop_column(sql_trans *tr, sql_colum
                }
                _DELETE(seq_name);
        }
+       return 0;
+}
+
+static int
+sys_drop_column(sql_trans *tr, sql_column *col, int drop_action)
+{
+       sql_schema *syss = find_sql_schema(tr, isGlobal(col->t)?"sys":"tmp"); 
+       sql_table *syscolumn = find_sql_table(syss, "_columns");
+       oid rid = table_funcs.column_find_row(tr, find_sql_column(syscolumn, 
"id"),
+                                 &col->base.id, NULL);
+
+       if (is_oid_nil(rid))
+               return 0;
+       table_funcs.table_delete(tr, syscolumn, rid);
+       sql_trans_drop_dependencies(tr, col->base.id);
+       sql_trans_drop_any_comment(tr, col->base.id);
+       sql_trans_drop_obj_priv(tr, col->base.id);
+       if (sys_drop_default_object(tr, col, drop_action) == -1)
+               return -1;
 
        if (isGlobal(col->t)) 
                tr->schema_updates ++;
@@ -6495,6 +6505,8 @@ sql_trans_alter_default(sql_trans *tr, s
 
                if (is_oid_nil(rid))
                        return NULL;
+               if (sys_drop_default_object(tr, col, 0) == -1)
+                       return NULL;
                table_funcs.column_update_value(tr, col_dfs, rid, p);
                col->def = NULL;
                if (val)
diff --git 
a/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.err 
b/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.err
--- a/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.err
+++ b/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.err
@@ -65,17 +65,7 @@ stderr of test 'assert_in_update.SF-2807
 #warning: please don't forget to set your vault key!
 #(see /ufs/niels/scratch/rc/Linux-x86_64/etc/monetdb5.conf)
 
-# 10:38:04 >  
-# 10:38:04 >  mclient -lsql -umonetdb -Pmonetdb --host=alf --port=36216 
-# 10:38:04 >  
+# 15:04:33 >  
+# 15:04:33 >  "Done."
+# 15:04:33 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-27483/.s.monetdb.35395
-QUERY = update anbi set kvk = (select kvk from kvk,anbi where lower(naam)
-        = lower(bedrijfsnaam) and lower(plaats) = lower(vestigingsplaats));
-ERROR = !SELECT: identifier 'kvk' ambiguous
-CODE  = 42000
-
-# 10:38:04 >  
-# 10:38:04 >  Done.
-# 10:38:04 >  
-
diff --git 
a/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.out 
b/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.out
--- a/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.out
+++ b/sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.out
@@ -27,6 +27,11 @@ stdout of test 'assert_in_update.SF-2807
 % kvk # name
 % bigint # type
 % 1 # length
+#update anbi set kvk = (select kvk.kvk from kvk,anbi where lower(naam)
+#= lower(bedrijfsnaam) and lower(plaats) = lower(vestigingsplaats));
+[ 0    ]
+#update anbi set kvk = (select kvk from kvk,anbi where lower(naam)
+#= lower(bedrijfsnaam) and lower(plaats) = lower(vestigingsplaats));
 [ 0    ]
 
 # 10:38:04 >  
diff --git a/sql/test/BugTracker-2015/Tests/All 
b/sql/test/BugTracker-2015/Tests/All
--- a/sql/test/BugTracker-2015/Tests/All
+++ b/sql/test/BugTracker-2015/Tests/All
@@ -74,7 +74,7 @@ fractional_precision_limitation.Bug-3808
 not-like-without-wildcard.Bug-3811
 HAVE_LIBZ?copy_into.Bug-3813
 select-tilde-arg.Bug-3814
-timestamp_convert.Bug-3815
+KNOWNFAIL?timestamp_convert.Bug-3815
 crash_timestamp_convert.Bug-3816
 crash_in_reduce_groupby.Bug-3818
 duplicate-constraint.Bug-3820
diff --git a/sql/test/miscellaneous/Tests/simple_selects.sql 
b/sql/test/miscellaneous/Tests/simple_selects.sql
--- a/sql/test/miscellaneous/Tests/simple_selects.sql
+++ b/sql/test/miscellaneous/Tests/simple_selects.sql
@@ -120,3 +120,16 @@ drop table x;
 
 create table x (x int null not null); --error, multiple null constraints
 create table x (a int default '1' GENERATED ALWAYS AS IDENTITY); --error, 
multiple default values
+
+DECLARE myvar bigint;
+SET myvar = (SELECT COUNT(*) FROM sequences);
+create table x (a int GENERATED ALWAYS AS IDENTITY);
+alter table x alter a set default 1; --ok, remove sequence
+SELECT CAST(COUNT(*) - myvar AS BIGINT) FROM sequences; --the total count, 
cannot change
+drop table x;
+
+SET myvar = (SELECT COUNT(*) FROM sequences);
+create table x (a int GENERATED ALWAYS AS IDENTITY);
+alter table x alter a drop default; --ok, remove sequence
+SELECT CAST(COUNT(*) - myvar AS BIGINT) FROM sequences; --the total count, 
cannot change
+drop table x;
diff --git a/sql/test/miscellaneous/Tests/simple_selects.stable.out 
b/sql/test/miscellaneous/Tests/simple_selects.stable.out
--- a/sql/test/miscellaneous/Tests/simple_selects.stable.out
+++ b/sql/test/miscellaneous/Tests/simple_selects.stable.out
@@ -341,6 +341,27 @@ stdout of test 'simple_selects` in direc
 % tinyint # type
 % 1 # length
 #drop table x;
+#DECLARE myvar bigint;
+#SET myvar = (SELECT COUNT(*) FROM sequences);
+#create table x (a int GENERATED ALWAYS AS IDENTITY);
+#alter table x alter a set default 1; --ok, remove sequence
+#SELECT CAST(COUNT(*) - myvar AS BIGINT) FROM sequences; --the total count, 
cannot change
+% . # table_name
+% %2 # name
+% bigint # type
+% 1 # length
+[ 0    ]
+#drop table x;
+#SET myvar = (SELECT COUNT(*) FROM sequences);
+#create table x (a int GENERATED ALWAYS AS IDENTITY);
+#alter table x alter a drop default; --ok, remove sequence
+#SELECT CAST(COUNT(*) - myvar AS BIGINT) FROM sequences; --the total count, 
cannot change
+% . # table_name
+% %2 # name
+% bigint # type
+% 1 # length
+[ 0    ]
+#drop table x;
 
 # 17:31:38 >  
 # 17:31:38 >  "Done."
diff --git a/sql/test/subquery/Tests/subquery4.stable.out 
b/sql/test/subquery/Tests/subquery4.stable.out
--- a/sql/test/subquery/Tests/subquery4.stable.out
+++ b/sql/test/subquery/Tests/subquery4.stable.out
@@ -283,6 +283,23 @@ stdout of test 'subquery4` in directory 
 [ NULL,        2       ]
 [ NULL,        3       ]
 [ NULL,        NULL    ]
+#SELECT i1.i, i2.i FROM integers i1, integers i2 WHERE (i1.i <= ANY (SELECT 
i1.i)) = (i1.i) IN (SELECT i1.i);
+% sys.i1,      sys.i2 # table_name
+% i,   i # name
+% int, int # type
+% 1,   1 # length
+[ 1,   1       ]
+[ 1,   2       ]
+[ 1,   3       ]
+[ 1,   NULL    ]
+[ 2,   1       ]
+[ 2,   2       ]
+[ 2,   3       ]
+[ 2,   NULL    ]
+[ 3,   1       ]
+[ 3,   2       ]
+[ 3,   3       ]
+[ 3,   NULL    ]
 #UPDATE another_T SET col4 = (SELECT SUM(col4 + ColID) FROM tbl_ProductSales); 
--4 rows affected
 [ 4    ]
 #SELECT col4 FROM another_T;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to