# File lib/amalgalite/blob.rb, line 87
    def initialize( params )
      if (Blob.valid_source_params & params.keys).size > 1 then
        raise Blob::Error, "Only a one of #{Blob.valid_source_params.join(', ')} is allowed to initialize a Blob.  #{params.keys.join(', ')} were sent"
      end

      @source                  = nil
      @source_length           = 0
      @close_source_after_read = false
      @incremental             = true
      @block_size              = params[:block_size] || Blob.default_block_size
      @column                  = params[:column]     

      raise Blob::Error, "A :column parameter is required for a Blob" unless @column or params.has_key?( :string )

      if params.has_key?( :file ) then
        @source = File.open( params[:file], "r" )
        @length = File.size( params[:file] )
        @close_source_after_read = true
      elsif params.has_key?( :io ) then
        @source = params[:io]
        @length = @source.length
      elsif params.has_key?( :db_blob ) then
        @source = params[:db_blob]
        @length = @source.length
        @close_source_after_read = true
      elsif params.has_key?( :string ) then
        @source = params[:string]
        @length = @source.length
        @incremental = false
      end
    end