Changeset: 05a705ec9a69 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/05a705ec9a69
Modified Files:
src/main/java/org/monetdb/util/MDBvalidator.java
Branch: default
Log Message:
Update MonetDB validator with definitions for new tables/views (fkey_actions
and fkeys).
Improved the check for which minor mserver version we validate against to allow
validation against an unreleased version (even number) as if it was released
(odd number).
This allows the validation tool to already validate the new tables/views on
default branch in testweb.
Also resolved some TODOs and disabled check on view systemfunctions which will
be removed.
diffs (176 lines):
diff --git a/src/main/java/org/monetdb/util/MDBvalidator.java
b/src/main/java/org/monetdb/util/MDBvalidator.java
--- a/src/main/java/org/monetdb/util/MDBvalidator.java
+++ b/src/main/java/org/monetdb/util/MDBvalidator.java
@@ -50,7 +50,7 @@ import java.util.Set;
SELECT "column_id", "expression", 'column_id and expression may
not both be populated. One of them must be NULL' AS violation, * FROM
"sys"."table_partitions" WHERE "column_id" IS NOT NULL AND "expression" IS NOT
NULL;
*</pre>
* @author Martin van Dinther
- * @version 0.1
+ * @version 0.2
*/
public final class MDBvalidator {
@@ -787,6 +787,12 @@ public final class MDBvalidator {
// System.out.println("MonetDB server
version " + dbmd.getDatabaseProductVersion());
majorversion =
dbmd.getDatabaseMajorVersion();
minorversion =
dbmd.getDatabaseMinorVersion();
+ // check if the version number is even,
if so it is an unreleased version (e.g. default branch)
+ if (((minorversion / 2 ) * 2) ==
minorversion) {
+ // to allow testing on new
tables introduced on an unreleased version, increase it with 1
+ //System.out.println("Info:
changed internal match version number from " + minorversion + " to " +
(minorversion +1));
+ minorversion++;
+ }
}
} catch (SQLException e) {
printExceptions(e);
@@ -923,7 +929,7 @@ public final class MDBvalidator {
{"_columns", "id", null},
{"columns", "id", null}, // is a view
{"functions", "id", null},
- {"systemfunctions", "function_id", null}, // has become a
view in Apr2019 (11.33.3) and maybe removed in the future as is deprecated
+// old {"systemfunctions", "function_id", null}, // has become a
view in Apr2019 (11.33.3) and deprecated so will be removed in the future.
Disabled check on Nov 2021.
{"args", "id", null},
{"types", "id", null},
{"objects", "id, nr", null},
@@ -944,41 +950,48 @@ public final class MDBvalidator {
{"environment", "name", null}, // is a view on sys.env()
{"db_user_info", "name", null},
{"statistics", "column_id", null},
-// old {"tracelog", "event", null}, -- Error: Profiler not started.
This table now (Jun2020) contains only: ticks, stmt
-// {"storage", "schema, table, column", null}, // is a view on
table producing function: storage().
+// old {"tracelog", "event", null}, -- Error: Profiler not started.
This table now (from Jun2020) contains only: ticks, stmt
{"\"storage\"()", "schema, table, column", null}, // the
function "storage"() also lists the storage for system tables
+// {"storage", "schema, table, column", null}, // is a view on
table producing function: sys.storage() which filters out all system tables.
{"storagemodelinput", "schema, table, column", null},
+// {"storagemodel", "schema, table, column", null}, // is a
view on storagemodelinput
+// {"tablestoragemodel", "schema, table", null}, // is a view on
storagemodelinput
{"rejects", "rowid", "19"}, // querying this view caused
problems in versions pre Jul2015, see
https://www.monetdb.org/bugzilla/show_bug.cgi?id=3794
- {"keywords", "keyword", "21"}, // introduced in
Jul2015 release (11.21.5)
- {"table_types", "table_type_id", "21"}, // introduced
in Jul2015 release (11.21.5)
-
- {"function_languages", "language_id", "27"}, //
introduced in Jul2017 release (11.27.1)
- {"function_types", "function_type_id", "27"}, //
introduced in Jul2017 release (11.27.1)
- {"index_types", "index_type_id", "27"}, // introduced
in Jul2017 release (11.27.1)
- {"key_types", "key_type_id", "27"}, // introduced
in Jul2017 release (11.27.1)
- {"privilege_codes", "privilege_code_id", "27"}, //
introduced in Jul2017 release (11.27.1)
+ // new tables introduced in Jul2015 release (11.21.5)
+ {"keywords", "keyword", "21"},
+ {"table_types", "table_type_id", "21"},
- {"comments", "id", "29"}, // introduced in
Mar2018 release (11.29.3)
- {"ids", "id", "29"}, // introduced in Mar2018
release (11.29.3), it is a view
- {"var_values", "var_name", "29"}, // var_values
is introduced in Mar2018 release (11.29.3), it is a view
+ // new tables introduced in Jul2017 release (11.27.1)
+ {"function_languages", "language_id", "27"},
+ {"function_types", "function_type_id", "27"},
+ {"index_types", "index_type_id", "27"},
+ {"key_types", "key_type_id", "27"},
+ {"privilege_codes", "privilege_code_id", "27"},
- // new views introduced in Apr 2019 feature release (11.33.3)
-// {"tablestorage", "schema, table", "33"}, // is a view on
view storage
-// {"schemastorage", "schema", "33"}, // is a view on view
storage
-// {"storagemodel", "schema, table, column", null}, // is a
view on storagemodelinput
-// {"tablestoragemodel", "schema, table", null}, // is a view on
storagemodelinput
+ // new tables and views introduced in Mar2018 release (11.29.3)
+ {"comments", "id", "29"},
+ {"ids", "id", "29"}, // is a view
+ {"var_values", "var_name", "29"}, // is a view
+ // new views introduced in Apr 2019 feature release (11.33.3)
+// {"tablestorage", "schema, table", "33"}, // is a view on
view storage, see check on "storage"() above
+// {"schemastorage", "schema", "33"}, // is a view on view
storage, see check on "storage"() above
// new tables introduced in Apr 2019 feature release (11.33.3)
{"table_partitions", "id", "33"},
{"range_partitions", "table_id, partition_id, minimum", "33"},
{"value_partitions", "table_id, partition_id, \"value\"", "33"},
+ // changed tables in Jun2020 feature release (11.37.7)
// old {"queue", "qtag", null}, // queue has changed in Jun2020
(11.37.7), pkey was previously qtag
{"queue", "tag", "37"}, // queue has changed in Jun2020
(11.37.7), pkey is now called tag
// old {"sessions", "\"user\", login, active", null}, // sessions has changed
in Jun2020 (11.37.7), pkey was previously "user", login, active
- {"sessions", "sessionid", "37"} // sessions has changed
in Jun2020 (11.37.7), pkey is now called sessionid
+ {"sessions", "sessionid", "37"}, // sessions has changed
in Jun2020 (11.37.7), pkey is now called sessionid
+
+ // new tables / views introduced in Jan?? 2022 feature release (11.43.1)
+ {"fkey_actions", "action_id", "43"},
+ {"fkeys", "id", "43"}
};
private static final String[][] tmp_pkeys = {
@@ -1041,7 +1054,10 @@ public final class MDBvalidator {
// new tables introduced in Apr 2019 feature release (11.33.3)
{"table_partitions WHERE column_id IS NOT NULL", "table_id,
column_id", "33"}, // requires WHERE "column_id" IS NOT NULL
{"table_partitions WHERE \"expression\" IS NOT NULL",
"table_id, \"expression\"", "33"}, // requires WHERE "expression" IS NOT
NULL
- {"range_partitions", "table_id, partition_id, \"maximum\"",
"33"}
+ {"range_partitions", "table_id, partition_id, \"maximum\"",
"33"},
+ // new tables / views introduced in Jan?? 2022 feature release (11.43.1)
+ {"fkey_actions", "action_name", "43"},
+ {"fkeys", "table_id, name", "43"}
};
private static final String[][] tmp_akeys = {
@@ -1081,7 +1097,7 @@ public final class MDBvalidator {
{"functions", "type", "function_type_id", "function_types",
"27"},
{"functions", "language", "language_id", "function_languages",
"27"},
// system functions should refer only to functions in MonetDB
system schemas
- {"functions WHERE system AND ", "schema_id", "id", "schemas
WHERE system", "33"},
+ {"functions WHERE system AND ", "schema_id", "id", "schemas
WHERE system", "33"}, // column "system" was added in release 11.33.3
{"args", "func_id", "id", "functions", null},
{"args", "type", "sqlname", "types", null},
{"types", "schema_id", "id", "schemas", null},
@@ -1093,7 +1109,6 @@ public final class MDBvalidator {
{"keys", "table_id", "id", "tables", null},
{"keys", "type", "key_type_id", "key_types", "27"},
{"keys WHERE rkey <> -1 AND ", "rkey", "id", "keys", null},
-// SELECT * FROM sys.keys WHERE action <> -1 AND action NOT IN (SELECT id FROM
sys.?); -- TODO: find out which action values are valid and what they mean.
{"idxs", "id", "id", "objects", null},
{"idxs", "table_id", "id", "_tables", null},
{"idxs", "table_id", "id", "tables", null},
@@ -1165,7 +1180,13 @@ public final class MDBvalidator {
{"range_partitions", "table_id", "id", "_tables", "33"},
{"range_partitions", "partition_id", "id", "table_partitions",
"33"},
{"value_partitions", "table_id", "id", "_tables", "33"},
- {"value_partitions", "partition_id", "id", "table_partitions",
"33"}
+ {"value_partitions", "partition_id", "id", "table_partitions",
"33"},
+ // new tables / views introduced in Jan?? 2022 feature release (11.43.1)
+ {"keys WHERE action >= 0 AND ", "cast(((action >> 8) & 255) as
smallint)", "action_id", "fkey_actions", "43"}, // update action id
+ {"keys WHERE action >= 0 AND ", "cast((action & 255) as
smallint)", "action_id", "fkey_actions", "43"}, // delete action id
+ {"fkeys", "id, table_id, type, name, rkey", "id, table_id,
type, name, rkey", "keys", "43"},
+ {"fkeys", "update_action_id", "action_id", "fkey_actions",
"43"},
+ {"fkeys", "delete_action_id", "action_id", "fkey_actions", "43"}
};
private static final String[][] tmp_fkeys = {
@@ -1177,7 +1198,8 @@ public final class MDBvalidator {
{"keys", "table_id", "id", "_tables", null},
{"keys", "type", "key_type_id", "sys.key_types", "27"},
{"keys WHERE rkey <> -1 AND ", "rkey", "id", "keys", null},
-// SELECT * FROM tmp.keys WHERE action <> -1 AND action NOT IN (SELECT id FROM
tmp.?); -- TODO: find out which action values are valid and what they mean.
+ {"keys WHERE action >= 0 AND ", "cast(((action >> 8) & 255) as
smallint)", "action_id", "sys.fkey_actions", "43"}, // update action id
+ {"keys WHERE action >= 0 AND ", "cast((action & 255) as
smallint)", "action_id", "sys.fkey_actions", "43"}, // delete action id
{"idxs", "id", "id", "objects", null},
{"idxs", "table_id", "id", "_tables", null},
{"idxs", "type", "index_type_id", "sys.index_types", "27"},
@@ -1375,7 +1397,18 @@ public final class MDBvalidator {
{"table_partitions", "type", "33"},
{"value_partitions", "table_id", "33"},
{"value_partitions", "partition_id", "33"},
- {"value_partitions", "value", "33"} // Can this be
null when WITH NULL VALUES is specified?
+ // new tables / views introduced in Jan?? 2022 feature release (11.43.1)
+ {"fkey_actions", "action_id", "43"},
+ {"fkey_actions", "action_name", "43"},
+ {"fkeys", "id", "43"},
+ {"fkeys", "table_id", "43"},
+ {"fkeys", "type", "43"},
+ {"fkeys", "name", "43"},
+ {"fkeys", "rkey", "43"},
+ {"fkeys", "update_action_id", "43"},
+ {"fkeys", "update_action", "43"},
+ {"fkeys", "delete_action_id", "43"},
+ {"fkeys", "delete_action", "43"}
};
private static final String[][] tmp_notnull = {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list