1. 25 May, 2012 1 commit
  2. 24 May, 2012 4 commits
    • antirez's avatar
      BITOP command 10x speed improvement. · 8bbc0768
      antirez authored
      This commit adds a fast-path to the BITOP that can be used for all the
      bytes from 0 to the minimal length of the string, and if there are
      at max 16 input keys.
      
      Often the intersected bitmaps are roughly the same size, so this
      optimization can provide a 10x speed boost to most real world usages
      of the command.
      
      Bytes are processed four full words at a time, in loops specialized
      for the specific BITOP sub-command, without the need to check for
      length issues with the inputs (since we run this algorithm only as far
      as there is data from all the keys at the same time).
      
      The remaining part of the string is intersected in the usual way using
      the slow but generic algorith.
      
      It is possible to do better than this with inputs that are not roughly
      the same size, sorting the input keys by length, by initializing the
      result string in a smarter way, and noticing that the final part of the
      output string composed of only data from the longest string does not
      need any proecessing since AND, OR and XOR against an empty string does
      not alter the output (zero in the first case, and the original string in
      the other two cases).
      
      More implementations will be implemented later likely, but this should
      be enough to release Redis 2.6-RC4 with bitops merged in.
      
      Note: this commit also adds better testing for BITOP NOT command, that
      is currently the faster and hard to optimize further since it just
      flips the bits of a single input string.
      8bbc0768
    • antirez's avatar
      BITOP: handle integer encoded objects correctly. · f0d962c0
      antirez authored
      A bug in the implementation caused BITOP to crash the server if at least
      one one of the source objects was integer encoded.
      
      The new implementation takes an additional array of Redis objects
      pointers and calls getDecodedObject() to get a reference to a string
      encoded object, and then uses decrRefCount() to release the object.
      
      Tests modified to cover the regression and improve coverage.
      f0d962c0
    • antirez's avatar
      Bit operations tests improved. · 951213e2
      antirez authored
      Fuzzing tests of BITCOUNT / BITOP are iterated multiple times.
      The new BITCOUNT fuzzing test uses random strings in a wider interval of
      lengths including zero-len strings.
      951213e2
    • antirez's avatar
      BITOP and BITCOUNT tests. · 1f40cdd0
      antirez authored
      The Redis implementation is tested against Tcl implementations of the
      same operation. Both fuzzing and testing of specific aspects of the
      commands behavior are performed.
      1f40cdd0
  3. 23 May, 2012 2 commits
    • antirez's avatar
      Redis test: include bug report on crash. · dfa90b59
      antirez authored
      Due to a change in the format of the bug report in case of crash of
      failed assertion the test suite was no longer able to properly log it.
      Instead just a protocol error was logged by the Redis TCL client that
      provided no clue about the actual problem.
      
      This commit resolves the issue by logging everything from the first line
      of the log including the string REDIS BUG REPORT, till the end of the
      file.
      dfa90b59
    • antirez's avatar
      Fixed issue #516 (ZINTERSTORE mixing sets and zsets). · 4dada1b5
      antirez authored
      Weeks ago trying to fix an harmless GCC warning I introduced a bug in
      the ziplist-encoded implementations of sorted sets.
      
      The bug completely broke zuiNext() iterator, that is used in the
      ZINTERSTORE and ZUNIONSTORE implementation, so those two commands are no
      longer reliable starting from Redis version 2.4.12 and latest 2.6.0-RC
      releases.
      
      This commit fixes the problem and adds a regression test.
      4dada1b5
  4. 12 May, 2012 1 commit
  5. 02 May, 2012 1 commit
  6. 30 Apr, 2012 2 commits
  7. 29 Apr, 2012 1 commit
  8. 27 Apr, 2012 2 commits
  9. 24 Apr, 2012 3 commits
  10. 21 Apr, 2012 1 commit
    • antirez's avatar
      Limit memory used by big SLOWLOG entries. · 590d55a2
      antirez authored
      Two limits are added:
      
      1) Up to SLOWLOG_ENTRY_MAX_ARGV arguments are logged.
      2) Up to SLOWLOG_ENTRY_MAX_STRING bytes per argument are logged.
      3) slowlog-max-len is set to 128 by default (was 1024).
      
      The number of remaining arguments / bytes is logged in the entry
      so that the user can understand better the nature of the logged command.
      590d55a2
  11. 19 Apr, 2012 1 commit
  12. 18 Apr, 2012 10 commits
  13. 17 Apr, 2012 2 commits
  14. 13 Apr, 2012 3 commits
  15. 10 Apr, 2012 1 commit
  16. 08 Apr, 2012 1 commit
  17. 07 Apr, 2012 4 commits