   , object_name text
   , secondary text DEFAULT NULL
   , object_group_name _object_reference.object_group.object_group_name%TYPE DEFAULT NULL
+  , loose boolean DEFAULT false
 $args$
   , 'int LANGUAGE sql'
-  , $$SELECT object_reference.object__getsert( lower($1)::cat_tools.object_type, $2, $3, $4 )$$
+  , $$SELECT object_reference.object__getsert( lower($1)::cat_tools.object_type, $2, $3, $4, $5 )$$
   , 'Return a object_id for an object. Allows specifying a object group name to add the object to. See also object__getsert_w_group_id().'
   , 'object_reference__usage'
 );

     * can have that regprocedure doesn't support.
     */
    -- TODO: allow this to parse object_name directly
    v_objid := cat_tools.regprocedure(object_name, secondary);
    secondary = NULL;

  -- Columns
  WHEN 'pg_catalog.pg_attribute'::regclass THEN
    v_objid := object_name::regclass;
    -- Will throw error if column isn't valid
    v_subid := (cat_tools.pg_attribute__get(v_objid, secondary)).attnum;
    secondary = NULL;

  -- Defaults

          AND tgname = secondary
      ;
    EXCEPTION WHEN no_data_found THEN
      IF c_loose THEN
        RETURN NULL;
      END IF;
      RAISE 'trigger "%" for table "%" does not exist', secondary, object_name::regclass
        USING ERRCODE = 'undefined_object'
      ;
