def pk_and_sequence_for(table) 
          
          
          result = query(            SELECT attr.attname, seq.relname            FROM pg_class      seq,                 pg_attribute  attr,                 pg_depend     dep,                 pg_constraint cons            WHERE seq.oid           = dep.objid              AND seq.relkind       = 'S'              AND attr.attrelid     = dep.refobjid              AND attr.attnum       = dep.refobjsubid              AND attr.attrelid     = cons.conrelid              AND attr.attnum       = cons.conkey[1]              AND cons.contype      = 'p'              AND dep.refobjid      = '#{quote_table_name(table)}'::regclass, 'SCHEMA')[0]
          if result.nil? or result.empty?
            result = query(              SELECT attr.attname,                CASE                  WHEN pg_get_expr(def.adbin, def.adrelid) !~* 'nextval' THEN NULL                  WHEN split_part(pg_get_expr(def.adbin, def.adrelid), '''', 2) ~ '.' THEN                    substr(split_part(pg_get_expr(def.adbin, def.adrelid), '''', 2),                           strpos(split_part(pg_get_expr(def.adbin, def.adrelid), '''', 2), '.')+1)                  ELSE split_part(pg_get_expr(def.adbin, def.adrelid), '''', 2)                END              FROM pg_class       t              JOIN pg_attribute   attr ON (t.oid = attrelid)              JOIN pg_attrdef     def  ON (adrelid = attrelid AND adnum = attnum)              JOIN pg_constraint  cons ON (conrelid = adrelid AND adnum = conkey[1])              WHERE t.oid = '#{quote_table_name(table)}'::regclass                AND cons.contype = 'p'                AND pg_get_expr(def.adbin, def.adrelid) ~* 'nextval|uuid_generate', 'SCHEMA')[0]
          end
          [result.first, result.last]
        rescue
          nil
        end