text: 
  create or replace function pgq.seq_getval(i_seq_name text)
  returns bigint as $$
  -- ----------------------------------------------------------------------
  -- Function: pgq.seq_getval(1)
  --
  --      Read current last_val from seq, without affecting it.
  --
  -- Parameters:
  --      i_seq_name     - Name of the sequence
  --
  -- Returns:
  --      last value.
  -- ----------------------------------------------------------------------
  declare
      res     int8;
      fqname  text;
      pos     integer;
      s       text;
      n       text;
  begin
      pos := position('.' in i_seq_name);
      if pos > 0 then
          s := substring(i_seq_name for pos - 1);
          n := substring(i_seq_name from pos + 1);
      else
          s := 'public';
          n := i_seq_name;
      end if;
      fqname := quote_ident(s) || '.' || quote_ident(n);
  
      execute 'select last_value from ' || fqname into res;
      return res;
  end;
  $$ language plpgsql;
  
  create or replace function pgq.seq_setval(i_seq_name text, i_new_value int8)
  returns bigint as $$
  -- ----------------------------------------------------------------------
  -- Function: pgq.seq_setval(2)
  --
  --      Like setval() but does not allow going back.
  --
  -- Parameters:
  --      i_seq_name      - Name of the sequence
  --      i_new_value     - new value
  --
  -- Returns:
  --      current last value.
  -- ----------------------------------------------------------------------
  declare
      res     int8;
      fqname  text;
      pos     integer;
      s       text;
      n       text;
  begin
      pos := position('.' in i_seq_name);
      if pos > 0 then
          s := substring(i_seq_name for pos - 1);
          n := substring(i_seq_name from pos + 1);
      else
          s := 'public';
          n := i_seq_name;
      end if;
      fqname := quote_ident(s) || '.' || quote_ident(n);
  
      res := pgq.seq_getval(i_seq_name);
      if res < i_new_value then
          perform setval(fqname, i_new_value);
          return i_new_value;
      end if;
      return res;
  end;
  $$ language plpgsql;
  
  