    # File lib/active_record/vendor/db2.rb, line 34
        def data_sources(buffer_length = 1024)
          retval = []
          max_buffer_length = buffer_length

          a = SQLDataSources(@handle, SQL_FETCH_FIRST, SQL_MAX_DSN_LENGTH + 1, buffer_length)
          retval << [a[1], a[3]]
          max_buffer_length = [max_buffer_length, a[4]].max

          loop do
            a = SQLDataSources(@handle, SQL_FETCH_NEXT, SQL_MAX_DSN_LENGTH + 1, buffer_length)
            break if a[0] == SQL_NO_DATA_FOUND

            retval << [a[1], a[3]]
            max_buffer_length = [max_buffer_length, a[4]].max
          end

          if max_buffer_length > buffer_length
            get_data_sources(max_buffer_length)
          else
            retval
          end
        end