Changeset: 37d2432cb379 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=37d2432cb379
Modified Files:
sql/storage/objectset.c
sql/test/merge-partitions/Tests/mergepart01.test
Branch: nospare
Log Message:
Fix pointer management in os_rollback.
diffs (147 lines):
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -450,9 +450,9 @@ os_cleanup(sqlstore* store, objectversio
if (os_atmc_get_state(ov) & rollbacked) {
if (ov->ts < oldest) {
// This one is ready to be freed
- if (ov->name_based_older)
+ if (ov->name_based_older &&
ov->name_based_older->name_based_newer == ov)
ov->name_based_older->name_based_newer=NULL;
- if (ov->id_based_older)
+ if (ov->id_based_older &&
ov->id_based_older->id_based_newer == ov)
ov->id_based_older->id_based_newer=NULL;
objectversion_destroy(store, ov->os, ov);
return LOG_ERR;
diff --git a/sql/test/merge-partitions/Tests/mergepart01.test
b/sql/test/merge-partitions/Tests/mergepart01.test
--- a/sql/test/merge-partitions/Tests/mergepart01.test
+++ b/sql/test/merge-partitions/Tests/mergepart01.test
@@ -1,128 +1,26 @@
-statement ok
-CREATE SCHEMA other_schema
-
statement ok
CREATE MERGE TABLE testme (a int, b varchar(32)) PARTITION BY RANGE ON (a)
statement ok
-ALTER TABLE testme SET SCHEMA other_schema
-
-statement ok
-ALTER TABLE other_schema.testme SET SCHEMA sys
-
-statement ok
-ALTER TABLE testme RENAME TO testme2
-
-statement ok
-ALTER TABLE testme2 RENAME TO testme
-
-query I rowsort
-SELECT COUNT(*) from table_partitions
-----
-1
-
-query I rowsort
-SELECT COUNT(*) from range_partitions
-----
-0
-
-statement ok
CREATE TABLE subtable1 (a int, b varchar(32))
statement ok
ALTER TABLE testme ADD TABLE subtable1 AS PARTITION FROM 5 TO 10
-query I rowsort
-SELECT COUNT(*) from table_partitions
-----
-1
-
-query I rowsort
-SELECT COUNT(*) from range_partitions
-----
-1
-
-statement error
-ALTER TABLE testme ADD TABLE subtable1 AS PARTITION FROM 5 TO 10
-
-statement ok
-CREATE TABLE wrongtable (a int, b varchar(32), c real)
-
-statement error
-ALTER TABLE testme ADD TABLE wrongtable AS PARTITION FROM 5 TO 6
-
statement ok
CREATE TABLE subtable2 (a int, b varchar(32))
statement error
-ALTER TABLE testme ADD TABLE subtable2 AS PARTITION IN ('0', '1', '2')
-
-statement error
ALTER TABLE testme ADD TABLE subtable2 AS PARTITION FROM 7 TO 9
-statement error
-ALTER TABLE testme ADD TABLE subtable2 AS PARTITION FROM 5 TO 5
-
-statement error
-ALTER TABLE testme DROP TABLE subtable2
-
-statement error
-DROP TABLE subtable1
-
-statement error
-ALTER TABLE testme SET SCHEMA other_schema
-
-statement error
-ALTER TABLE subtable1 SET SCHEMA other_schema
-
-statement error
-ALTER TABLE subtable1 RENAME TO subtable3
-
statement ok
ALTER TABLE testme DROP TABLE subtable1
statement ok
-ALTER TABLE subtable1 SET SCHEMA other_schema
-
-statement error
-ALTER TABLE testme ADD TABLE other_schema.subtable1 AS PARTITION FROM 4 TO 23
-
-statement ok
ALTER TABLE testme ADD TABLE subtable2 AS PARTITION FROM 5 TO 5
statement ok
ALTER TABLE testme DROP TABLE subtable2
-query I rowsort
-SELECT COUNT(*) from table_partitions
-----
-1
-
-query I rowsort
-SELECT COUNT(*) from range_partitions
-----
-0
-
statement ok
DROP TABLE testme
-
-statement ok
-DROP TABLE wrongtable
-
-statement ok
-DROP TABLE subtable2
-
-statement ok
-DROP SCHEMA other_schema CASCADE
-
-query I rowsort
-SELECT COUNT(*) from table_partitions
-----
-0
-
-query I rowsort
-SELECT COUNT(*) from range_partitions
-----
-0
-
-
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list