ON c.id = o.class_id WHERE c.name = 'foo'";
run_statement "#get order index of class foo" "$sql" 1
+ sql=\
+"SET @disable_audit = 1; \
+ INSERT INTO ${table_prefix}_options(code, scope_id, dhcp_client_class, modification_ts) \
+ VALUES (222, 0, '', now()); \
+ SET @disable_audit = 0;"
+ run_statement "add option with an empty dhcp_client class" "$sql"
+
+ # Let's make sure that we can upgrade to version 12.0. This version
+ # introduces a foreign key between dhcpX_client_class and dhcpX_options
+ # table. The migration should set the dhcp_client_class to NULL.
+ mysql_upgrade_schema_to_version 12.0
+
# Let's wipe the whole database
mysql_wipe
# This line concludes database upgrade to version 11.
+# Ensure that dhcp_client_class is NULL when an option does not
+# belong to any client class. Later, we will add foreign keys for
+# the dhcp_client_class columns, and it requires that the columns
+# are NULL when there are no corresponding client classes.
+SET @disable_audit = 1;
+UPDATE dhcp4_options SET dhcp_client_class = NULL
+ WHERE scope_id <> 2;
+UPDATE dhcp6_options SET dhcp_client_class = NULL
+ WHERE scope_id <> 2;
+SET @disable_audit = 0;
+
# Add a foreign keys referencing a client classes. If an option is
# associated with a client class, the option will be deleted
# along with the deleted client class.
mysql "$@" <<EOF
+-- Ensure that dhcp_client_class is NULL when an option does not
+-- belong to any client class. Later, we will add foreign keys for
+-- the dhcp_client_class columns, and it requires that the columns
+-- are NULL when there are no corresponding client classes.
+SET @disable_audit = 1;
+UPDATE dhcp4_options SET dhcp_client_class = NULL
+ WHERE scope_id <> 2;
+UPDATE dhcp6_options SET dhcp_client_class = NULL
+ WHERE scope_id <> 2;
+SET @disable_audit = 0;
+
-- Add a foreign keys referencing a client classes. If an option is
-- associated with a client class, the option will be deleted
-- along with the deleted client class.