Merge another recarray with the same columns into this table.

        :Arguments:
           recarray
              numpy record array that describes the layout and initializes the
              table

        :Returns:
           n           number of inserted rows

        :Raises:
           Raises an exception if duplicate and incompatible data exist
           in the main table and the new one.

def merge(self,recarray,columns=None):
        """Merge another recarray with the same columns into this table.

        :Arguments:
           recarray
              numpy record array that describes the layout and initializes the
              table

        :Returns:
           n           number of inserted rows

        :Raises:
           Raises an exception if duplicate and incompatible data exist
           in the main table and the new one.
        """
        len_before = len(self)
        #  CREATE TEMP TABLE in database
        tmparray = SQLarray(self.tmp_table_name, records=recarray, columns=columns,
                            connection=self.connection, is_tmp=True)
        len_tmp = len(tmparray)
        # insert into main table
        SQL = """INSERT OR ABORT INTO __self__ SELECT * FROM %s""" % self.tmp_table_name
        self.sql(SQL)
        len_after = len(self)
        n_inserted = len_after - len_before
        assert len_tmp == n_inserted
        del tmparray          # also drops the tmp table (keep it at end for debugging)
        return n_inserted