# File lib/jdbc_adapter/jdbc_postgre.rb, line 218
    def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
      # Extract the table from the insert sql. Yuck.
      table = sql.split(" ", 4)[2].gsub('"', '')

      # Try an insert with 'returning id' if available (PG >= 8.2)
      if supports_insert_with_returning?
        pk, sequence_name = *pk_and_sequence_for(table) unless pk
        if pk
          id = select_value("#{sql} RETURNING #{quote_column_name(pk)}")
          clear_query_cache
          return id
        end
      end

      # Otherwise, insert then grab last_insert_id.
      execute(sql, name)

      # If neither pk nor sequence name is given, look them up.
      unless pk || sequence_name
        pk, sequence_name = *pk_and_sequence_for(table)
      end

      # If a pk is given, fallback to default sequence name.
      # Don't fetch last insert id for a table without a pk.
      if pk && sequence_name ||= default_sequence_name(table, pk)
        last_insert_id(table, sequence_name)
      end
    end