Changeset: 2d55e82a7f6c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2d55e82a7f6c
Modified Files:
sql/backends/monet5/sql.c
sql/storage/bat/bat_table.c
sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
sql/test/pg_regress/Tests/alter_table.sql
sql/test/pg_regress/Tests/alter_table.stable.err
sql/test/pg_regress/Tests/alter_table.stable.out
sql/test/pg_regress/postgresql2sql99.sh
Branch: transaction-replication
Log Message:
Merge with default branch
diffs (truncated from 1737 to 300 lines):
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -569,7 +569,11 @@ alter_table(mvc *sql, char *sname, sql_t
/* for non empty check for nulls */
if (c->null == 0) {
void *nilptr =
ATOMnilptr(c->type.type->localtype);
- if
(table_funcs.column_find_row(sql->session->tr, nc, nilptr, NULL) != oid_nil)
+ rids *nils =
table_funcs.rids_select(sql->session->tr, nc, nilptr, NULL, NULL);
+ int has_nils = (table_funcs.rids_next(nils) !=
oid_nil);
+
+ table_funcs.rids_destroy(nils);
+ if (has_nils)
return sql_message("40002!ALTER TABLE:
NOT NULL constraint violated for column %s.%s", c->t->base.name, c->base.name);
}
}
diff --git a/sql/storage/bat/bat_table.c b/sql/storage/bat/bat_table.c
--- a/sql/storage/bat/bat_table.c
+++ b/sql/storage/bat/bat_table.c
@@ -274,7 +274,7 @@ rids_select( sql_trans *tr, sql_column *
b = full_column(tr, key);
if (!kvl)
kvl = ATOMnilptr(b->ttype);
- if (!kvh)
+ if (!kvh && key_value_low != ATOMnilptr(b->ttype))
kvh = ATOMnilptr(b->ttype);
hi = (kvl == kvh);
r = BATsubselect(b, s, kvl, kvh, 1, hi, 0);
diff --git
a/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
b/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
--- a/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
+++ b/sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err
@@ -69,9 +69,9 @@ stderr of test 'primekeyconstraint.SF-27
# 08:02:34 > mclient -lsql -umonetdb -Pmonetdb --host=eir --port=30582
# 08:02:34 >
-MAPI = (monetdb) /var/tmp/mtest-23599/.s.monetdb.33852
+MAPI = (monetdb) /var/tmp/mtest-11898/.s.monetdb.35572
QUERY = ALTER TABLE way_nds ADD CONSTRAINT pk_way_nds PRIMARY KEY (way, idx);
-ERROR = !UPDATE: PRIMARY KEY constraint 'way_nds.pk_way_nds' violated
+ERROR = !ALTER TABLE: NOT NULL constraint violated for column way_nds.way
# 08:02:34 >
# 08:02:34 > Done.
diff --git a/sql/test/pg_regress/Tests/alter_table.sql
b/sql/test/pg_regress/Tests/alter_table.sql
--- a/sql/test/pg_regress/Tests/alter_table.sql
+++ b/sql/test/pg_regress/Tests/alter_table.sql
@@ -163,6 +163,7 @@ SELECT * FROM tmp_new2;
DROP TABLE tmp_new;
DROP TABLE tmp_new2;
+DROP TABLE tmp;
-- ALTER TABLE ... RENAME on non-table relations
@@ -235,7 +236,7 @@ DROP TABLE tmp2;
-- Note: these tables are TEMP to avoid name conflicts when this test
-- is run in parallel with foreign_key.sql.
-CREATE TEMP TABLE PKTABLE (ptest1 int PRIMARY KEY);
+CREATE /* TEMP */ TABLE PKTABLE (ptest1 int PRIMARY KEY);
CREATE TEMP TABLE FKTABLE (ftest1 inet);
-- This next should fail, because inet=int does not exist
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable;
@@ -245,26 +246,26 @@ ALTER TABLE FKTABLE ADD FOREIGN KEY(ftes
-- This should succeed, even though they are different types
-- because varchar=int does exist
DROP TABLE FKTABLE;
-CREATE TEMP TABLE FKTABLE (ftest1 varchar);
+CREATE /* TEMP */ TABLE FKTABLE (ftest1 varchar(10));
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable;
-- As should this
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1) references pktable(ptest1);
DROP TABLE pktable cascade;
DROP TABLE fktable;
-CREATE TEMP TABLE PKTABLE (ptest1 int, ptest2 inet,
+CREATE /* TEMP */ TABLE PKTABLE (ptest1 int, ptest2 inet,
PRIMARY KEY(ptest1, ptest2));
-- This should fail, because we just chose really odd types
-CREATE TEMP TABLE FKTABLE (ftest1 cidr, ftest2 timestamp);
+CREATE /* TEMP */ TABLE FKTABLE (ftest1 inet, ftest2 timestamp);
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2) references pktable;
DROP TABLE FKTABLE;
-- Again, so should this...
-CREATE TEMP TABLE FKTABLE (ftest1 cidr, ftest2 timestamp);
+CREATE /* TEMP*/ TABLE FKTABLE (ftest1 inet, ftest2 timestamp);
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2)
references pktable(ptest1, ptest2);
DROP TABLE FKTABLE;
-- This fails because we mixed up the column ordering
-CREATE TEMP TABLE FKTABLE (ftest1 int, ftest2 inet);
+CREATE /* TEMP */ TABLE FKTABLE (ftest1 int, ftest2 inet);
ALTER TABLE FKTABLE ADD FOREIGN KEY(ftest1, ftest2)
references pktable(ptest2, ptest1);
-- As does this...
@@ -272,6 +273,9 @@ ALTER TABLE FKTABLE ADD FOREIGN KEY(ftes
references pktable(ptest1, ptest2);
-- temp tables should go away by themselves, need not drop them.
+-- MonetDB: disabled the TEMP in CERATE TEMP (see bug 3565) so we do need to
drop them in our version
+DROP TABLE FKTABLE;
+DROP TABLE PKTABLE cascade;
-- test check constraint adding
@@ -319,7 +323,7 @@ drop table atacc1;
-- inheritance related tests
create table atacc1 (test int);
create table atacc2 (test2 int);
-create table atacc3 (test3 int); -- inherits (atacc1, atacc2)
+create table atacc3 (test int, test2 int, test3 int); -- inherits (atacc1,
atacc2)
alter table atacc2 add constraint foo check (test2>0);
-- fail and then succeed on atacc2
insert into atacc2 (test2) values (-3);
@@ -335,7 +339,7 @@ drop table atacc1;
create table atacc1 (test int);
create table atacc2 (test2 int);
-create table atacc3 (test3 int); -- inherits (atacc1, atacc2)
+create table atacc3 (test int, test2 int, test3 int); -- inherits (atacc1,
atacc2)
alter table only atacc2 add constraint foo check (test2>0);
-- fail and then succeed on atacc2
insert into atacc2 (test2) values (-3);
@@ -391,6 +395,7 @@ insert into atacc1 (test,test2) values (
insert into atacc1 (test,test2) values (4,5);
insert into atacc1 (test,test2) values (5,4);
insert into atacc1 (test,test2) values (5,5);
+alter table atacc1 drop constraint atacc_test1;
drop table atacc1;
-- lets do some naming tests
@@ -420,6 +425,7 @@ alter table atacc1 add constraint atacc_
alter table atacc1 drop constraint atacc_test1 restrict;
-- try adding a primary key on oid (should succeed)
alter table atacc1 add constraint atacc_oid1 primary key(oid);
+alter table atacc1 add constraint atacc_test1 primary key (test);
drop table atacc1;
-- let's do one where the primary key constraint fails when added
@@ -430,6 +436,8 @@ insert into atacc1 (test) values (2);
-- add a primary key (fails)
alter table atacc1 add constraint atacc_test1 primary key (test);
insert into atacc1 (test) values (3);
+delete from atacc1 where test = 2;
+alter table atacc1 add constraint atacc_test1 primary key (test);
drop table atacc1;
-- let's do another one where the primary key constraint fails when added
@@ -491,8 +499,10 @@ alter table atacc1 add constraint "atacc
alter table atacc1 alter column test drop not null;
alter table atacc1 drop constraint "atacc1_pkey";
alter table atacc1 alter column test drop not null;
+alter table atacc1 alter test set null;
insert into atacc1 values (null);
alter table atacc1 alter test set not null;
+select * from atacc1;
delete from atacc1;
alter table atacc1 alter test set not null;
@@ -514,7 +524,7 @@ drop table atacc1;
-- test inheritance
create table parent (a int);
-create table child (b varchar(255)); -- inherits (parent)
+create table child (a int, b varchar(255)); -- inherits (parent)
alter table parent alter a set not null;
insert into parent values (NULL);
@@ -522,10 +532,12 @@ insert into child (a, b) values (NULL, '
alter table parent alter a drop not null;
insert into parent values (NULL);
insert into child (a, b) values (NULL, 'foo');
-alter table only parent alter a set not null;
+--alter table only parent alter a set not null;
+alter table parent alter a set not null;
alter table child alter a set not null;
delete from parent;
-alter table only parent alter a set not null;
+--alter table only parent alter a set not null;
+alter table parent alter a set not null;
insert into parent values (NULL);
alter table child alter a set not null;
insert into child (a, b) values (NULL, 'foo');
@@ -541,10 +553,16 @@ create table def_test (
c2 text default 'initial_default'
);
insert into def_test default values;
+select * from def_test;
+
alter table def_test alter column c1 drop default;
insert into def_test default values;
+select * from def_test;
+
alter table def_test alter column c2 drop default;
insert into def_test default values;
+select * from def_test;
+
alter table def_test alter column c1 set default 10;
alter table def_test alter column c2 set default 'new_default';
insert into def_test default values;
@@ -648,8 +666,11 @@ drop view myview;
-- test some commands to make sure they fail on the dropped column
analyze atacc1(a);
analyze atacc1("........pg.dropped.1........");
+
vacuum analyze atacc1(a);
vacuum analyze atacc1("........pg.dropped.1........");
+call vacuum('sys', 'atacc1');
+call analyze('sys', 'atacc1');
alter table atacc1 alter a set storage plain;
@@ -683,7 +704,7 @@ create index "testing_idx" on atacc1("..
-- test create as and select into
insert into atacc1 values (21, 22, 23);
-create table test1 as select * from atacc1;
+create table test1 as select * from atacc1 WITH DATA;
select * from test1;
drop table test1;
select * into test2 from atacc1;
@@ -702,7 +723,7 @@ drop table atacc1;
create table parent (a int, b int, c int);
insert into parent values (1, 2, 3);
alter table parent drop a;
-create table child (d varchar(255)); -- inherits (parent)
+create table child (b int, c int, d varchar(255)); -- inherits (parent)
insert into child values (12, 13, 'testing');
select * from parent;
@@ -740,8 +761,8 @@ drop table test;
-- test inheritance
create table dropColumn (a int, b int, e int);
-create table dropColumnChild (c int); -- inherits (dropColumn)
-create table dropColumnAnother (d int); -- inherits (dropColumnChild)
+create table dropColumnChild (a int, b int, e int, c int); -- inherits
(dropColumn)
+create table dropColumnAnother (a int, b int, e int, c int, d int); --
inherits (dropColumnChild)
-- these two should fail
alter table dropColumnchild drop column a;
@@ -753,8 +774,8 @@ alter table dropColumnChild drop column
alter table dropColumn drop column a;
create table renameColumn (a int);
-create table renameColumnChild (b int); -- inherits (renameColumn)
-create table renameColumnAnother (c int); -- inherits (renameColumnChild)
+create table renameColumnChild (a int, b int); -- inherits (renameColumn)
+create table renameColumnAnother (a int, b int, c int); -- inherits
(renameColumnChild)
-- these three should fail
alter table renameColumnChild rename column a to d;
@@ -775,7 +796,7 @@ alter table only renameColumn add column
-- Test corner cases in dropping of inherited columns
create table p1 (f1 int, f2 int);
-create table c1 (f1 int not null); -- inherits(p1)
+create table c1 (f2 int, f1 int not null); -- inherits(p1)
-- should be rejected since c1.f1 is inherited
alter table c1 drop column f1;
@@ -786,10 +807,11 @@ select f1 from c1;
alter table c1 drop column f1;
select f1 from c1;
+drop table c1;
drop table p1 cascade;
create table p1 (f1 int, f2 int);
-create table c1 (); -- inherits(p1)
+create table c1 (f1 int, f2 int); -- inherits(p1)
-- should be rejected since c1.f1 is inherited
alter table c1 drop column f1;
@@ -797,10 +819,11 @@ alter table p1 drop column f1;
-- c1.f1 is dropped now, since there is no local definition for it
select f1 from c1;
+drop table c1;
drop table p1 cascade;
create table p1 (f1 int, f2 int);
-create table c1 (); -- inherits(p1)
+create table c1 (f1 int, f2 int); -- inherits(p1)
-- should be rejected since c1.f1 is inherited
alter table c1 drop column f1;
@@ -808,6 +831,7 @@ alter table only p1 drop column f1;
-- c1.f1 is NOT dropped, but must now be considered non-inherited
alter table c1 drop column f1;
+drop table c1;
drop table p1 cascade;
create table p1 (f1 int, f2 int);
@@ -819,6 +843,7 @@ alter table only p1 drop column f1;
-- c1.f1 is still there, but no longer inherited
alter table c1 drop column f1;
+drop table c1;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list