DL: Check if the owner of the object table is a superuser
diff --git a/src/ports/postgres/modules/deep_learning/madlib_keras_custom_function.py_in b/src/ports/postgres/modules/deep_learning/madlib_keras_custom_function.py_in
index 1ebf9f6..32a5757 100644
--- a/src/ports/postgres/modules/deep_learning/madlib_keras_custom_function.py_in
+++ b/src/ports/postgres/modules/deep_learning/madlib_keras_custom_function.py_in
@@ -128,13 +128,11 @@
 def delete_custom_function(schema_madlib, object_table, id=None, name=None, **kwargs):
 
     if object_table is not None:
-        schema_name = get_schema(object_table)
-        if schema_name is None:
-            object_table = "{0}.{1}".format(schema_madlib, quote_ident(object_table))
-        elif schema_name != schema_madlib:
-            plpy.error("DL: Custom function table has to be in the {0} schema".format(schema_madlib))
+        object_table = "{0}.{1}".format(schema_madlib, quote_ident(object_table))
 
     input_tbl_valid(object_table, "Keras Custom Funtion")
+    _assert(is_superuser(current_user()), "DL: The user has to have admin "\
+        "privilages to delete a custom function")
     _assert(id is not None or name is not None,
             "{0}: function id/name cannot be NULL! " \
             "Use \"SELECT delete_custom_function('usage')\" for help.".format(module_name))
diff --git a/src/ports/postgres/modules/deep_learning/madlib_keras_validator.py_in b/src/ports/postgres/modules/deep_learning/madlib_keras_validator.py_in
index 535d70d..ab8d336 100644
--- a/src/ports/postgres/modules/deep_learning/madlib_keras_validator.py_in
+++ b/src/ports/postgres/modules/deep_learning/madlib_keras_validator.py_in
@@ -40,6 +40,8 @@
 from utilities.utilities import add_postfix
 from utilities.utilities import is_platform_pg
 from utilities.utilities import is_var_valid
+from utilities.utilities import is_superuser
+from utilities.utilities import get_table_owner
 from utilities.validate_args import cols_in_tbl_valid
 from utilities.validate_args import columns_exist_in_table
 from utilities.validate_args import get_expr_type
@@ -324,6 +326,9 @@
 
         if self.object_table is not None:
             input_tbl_valid(self.object_table, self.module_name)
+
+            _assert(is_superuser(get_table_owner(self.object_table)),
+                "DL: Cannot use a table of a non-superuser as object table.")
             cols_in_tbl_valid(self.object_table, CustomFunctionSchema.col_names, self.module_name)
 
         if self.warm_start:
@@ -543,6 +548,7 @@
         # Default metrics, since it is not part of the builtin metrics list
         builtin_metrics.append('accuracy')
         if self.object_table is not None:
+
             res = plpy.execute("SELECT {0} from {1}".format(CustomFunctionSchema.FN_NAME,
                                                             self.object_table))
             for r in res:
@@ -576,6 +582,8 @@
         input_tbl_valid(self.model_arch_table, self.module_name)
         if self.object_table is not None:
             input_tbl_valid(self.object_table, self.module_name)
+            _assert(is_superuser(get_table_owner(self.object_table)),
+                "DL: Cannot use a table of a non-superuser as object table.")
         if self.module_name == 'load_model_selection_table' or self.module_name == 'madlib_keras_automl':
             output_tbl_valid(self.model_selection_table, self.module_name)
             output_tbl_valid(self.model_selection_summary_table, self.module_name)
diff --git a/src/ports/postgres/modules/utilities/utilities.py_in b/src/ports/postgres/modules/utilities/utilities.py_in
index e5a4c3d..8fc4a28 100644
--- a/src/ports/postgres/modules/utilities/utilities.py_in
+++ b/src/ports/postgres/modules/utilities/utilities.py_in
@@ -775,6 +775,17 @@
     return plpy.execute("SELECT rolsuper FROM pg_catalog.pg_roles "\
                         "WHERE rolname = '{0}'".format(user))[0]['rolsuper']
 
+def get_table_owner(schema_table):
+
+    split_table = schema_table.split(".",1)
+    schema = split_table[0]
+    non_schema_table = split_table[1]
+
+    q = """SELECT tableowner FROM pg_catalog.pg_tables
+           WHERE schemaname='{0}' AND tablename='{1}'
+           """.format(schema, non_schema_table)
+    return plpy.execute(q)[0]['tableowner']
+
 def madlib_version(schema_madlib):
     """Returns the MADlib version string."""
     raw = plpy.execute("""