summaryrefslogtreecommitdiff
path: root/deps
Commit message (Collapse)AuthorAgeFilesLines
* Geo: use ULL suffix for unsigned 64 bit constants.antirez2015-07-091-14/+14
|
* Geo: -Ofast breaks builds on older GCCs.antirez2015-07-091-1/+1
|
* Geo: validate long,lat passed by user via APIantirez2015-07-062-9/+19
|
* Geo: sync faster decoding from krtm that synched from Ardb.antirez2015-07-011-56/+95
| | | | | | Instead of successive divisions in iteration the new code uses bitwise magic to interleave / deinterleave two 32bit values into a 64bit one. All tests still passing and is measurably faster, so worth it.
* Geo: added my copyright notice in modified files.geoantirez2015-06-294-0/+4
|
* Geo: GEODIST and tests.antirez2015-06-292-2/+4
|
* Geo: from lat,lon API to lon,lat API according to GIS standardantirez2015-06-264-89/+62
| | | | | | | | | | | | | | | The GIS standard and all the major DBs implementing GIS related functions take coordinates as x,y that is longitude,latitude. It was a bad start for Redis to do things differently, so even if this means that existing users of the Geo module will be required to change their code, Redis now conforms to the standard. Usually Redis is very backward compatible, but this is not an exception to this rule, since this is the first Geo implementation entering the official Redis source code. It is not wise to try to be backward compatible with code forks... :-) Close #2637.
* Geo: Fix geohashEstimateStepsByRadius() step underestimation.antirez2015-06-242-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | The returned step was in some case not enough towards normal coordinates (for example when our search position was was already near the margin of the central area, and we had to match, using the east or west neighbor, a very far point). Example: geoadd points 67.575457940146066 -62.001317572780565 far geoadd points 66.685439060295664 -58.925040587282297 center georadius points 66.685439060295664 -58.925040587282297 200 km In the above case the code failed to find a match (happens at smaller latitudes too) even if far and center are at less than 200km. Another fix introduced by this commit is a progressively larger area towards the poles, since meridians are a lot less far away, so we need to compensate for this. The current implementation works comparably to the Tcl brute-force stress tester implemented in the fuzzy test in the geo.tcl unit for latitudes between -70 and 70, and is pretty accurate over +/-80 too, with sporadic false negatives. A more mathematically clean implementation is possible by computing the meridian distance at the specified latitude and computing the step according to it.
* Geo: big refactoring of geo.c, zset.[ch] removed.antirez2015-06-231-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit simplifies the implementation in a few ways: 1. zsetScore implementation improved a bit and moved into t_zset.c where is now also used to implement the ZSCORE command. 2. Range extraction from the sorted set remains a separated implementation from the one in t_zset.c, but was hyper-specialized in order to avoid accumulating results into a list and remove the ones outside the radius. 3. A new type is introduced: geoArray, which can accumulate geoPoint structures in a vector with power of two expansion policy. This is useful since we have to call qsort() against it before returning the result to the user. 4. As a result of 1, 2, 3, the two files zset.c and zset.h are now removed, including the function to merge two lists (now handled with functions that can add elements to existing geoArray arrays) and the machinery used in order to pass zset results. 5. geoPoint structure simplified because of the general code structure simplification, so we no longer need to take references to objects. 6. Not counting the JSON removal the refactoring removes 200 lines of code for the same functionalities, with a simpler to read implementation. 7. GEORADIUS is now 2.5 times faster testing with 10k elements and a radius resulting in 124 elements returned. However this is mostly a side effect of the refactoring and simplification. More speed gains can be achieved by trying to optimize the code.
* Geo: removed useless functions, Marcatore coordinates, bool usageantirez2015-06-224-213/+92
|
* [In-Progress] Add Geo CommandsMatt Stancliff2015-06-226-0/+797
| | | | | | | | | | | | | | | | | | | | | | | | Current todo: - replace functions in zset.{c,h} with a new unified Redis zset access API. Once we get the zset interface fixed, we can squash relevant commits in this branch and have one nice commit to merge into unstable. This commit adds: - Geo commands - Tests; runnable with: ./runtest --single unit/geo - Geo helpers in deps/geohash-int/ - src/geo.{c,h} and src/geojson.{c,h} implementing geo commands - Updated build configurations to get everything working - TEMPORARY: src/zset.{c,h} implementing zset score and zset range reading without writing to client output buffers. - Modified linkage of one t_zset.c function for use in zset.c Conflicts: src/Makefile src/redis.c
* disable loading lua bytecodeBen Murphy2015-06-031-1/+1
|
* Scripting: Lua cmsgpack lib updated to include str8 supportantirez2015-06-031-29/+42
|
* Fix Sentinel memory leak (hiredis bug)antirez2015-04-281-0/+1
| | | | | | | | | | | | | | | | | | | This fixes issue #2535, that was actually an hiredis library bug (I submitted an issue and fix to the redis/hiredis repo as well). When an asynchronous hiredis connection subscribes to a Pub/Sub channel and gets an error, and in other related conditions, the function redisProcessCallbacks() enters a code path where the link is disconnected, however the function returns before freeing the allocated reply object. This causes a memory leak. The memory leak was trivial to trigger in Redis Sentinel, which uses hiredis, every time we tried to subscribe to an instance that required a password, in case the Sentinel was configured either with the wrong password or without password at all. In this case, the -AUTH error caused the leaking code path to be executed. It was verified with Valgrind that after this change the leak no longer happens in Sentinel with a misconfigured authentication password.
* Set optional 'static' for Quicklist+RedisMatt Stancliff2015-01-021-1/+1
| | | | | This also defines REDIS_STATIC='' for building everything inside src/ and everything inside deps/lua/.
* Lua cmsgpack lib updated to latest version.antirez2014-12-121-26/+27
| | | | | It fixes a bad bug that crashes the server in certain conditions as shown in issue #2210.
* Simplify lua_cmsgpack macro and fix build on old Linux distros.antirez2014-12-051-7/+1
| | | | Thanks to @badboy for the help in checking the build after the fix.
* Fix lua-cmsgpack 64 bit integer on 32 bit platformMatt Stancliff2014-11-241-14/+32
| | | | | | This syncs lua-cmsgpack with the mattsta/lua-cmsgpack upstream. Fixes #2161
* lua_cjson.c Lua includes: angled -> quoted.antirez2014-11-141-2/+2
|
* Merge remote-tracking branch 'origin/unstable' into unstableantirez2014-11-142-1/+191
|\
| * Lua: Add bitopMatt Stancliff2014-10-092-1/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A few people have written custom C commands because bit manipulation isn't exposed through Lua. Let's give them Mike Pall's bitop. This adds bitop 1.0.2 (2012-05-08) from http://bitop.luajit.org/ bitop is imported as "bit" into the global namespace. New Lua commands: bit.tobit, bit.tohex, bit.bnot, bit.band, bit.bor, bit.bxor, bit.lshift, bit.rshift, bit.arshift, bit.rol, bit.ror, bit.bswap Verification of working (the asserts would abort on error, so (nil) is correct): 127.0.0.1:6379> eval "assert(bit.tobit(1) == 1); assert(bit.band(1) == 1); assert(bit.bxor(1,2) == 3); assert(bit.bor(1,2,4,8,16,32,64,128) == 255)" 0 (nil) 127.0.0.1:6379> eval 'assert(0x7fffffff == 2147483647, "broken hex literals"); assert(0xffffffff == -1 or 0xffffffff == 2^32-1, "broken hex literals"); assert(tostring(-1) == "-1", "broken tostring()"); assert(tostring(0xffffffff) == "-1" or tostring(0xffffffff) == "4294967295", "broken tostring()")' 0 (nil) Tests also integrated into the scripting tests and can be run with: ./runtest --single unit/scripting Tests are excerpted from `bittest.lua` included in the bitop distribution.
* | Lua: upgrade cmsgpack to 0.4.0Matt Stancliff2014-11-141-90/+305
| | | | | | | | | | | | | | | | Main reasons for upgrade: - Remove a warning when building Redis - Add multi pack/unpack - Improve memory usage and use Lua allocator properly - Fix some edge case encoding/decoding bugs
* | Lua: remove new warning added by cjson headerMatt Stancliff2014-11-141-1/+1
| | | | | | | | | | clang doesn't like "extern inline" when no definition is given right away.
* | Lua: Use Redis solaris compatability for cjson tooMatt Stancliff2014-11-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | cjson calls isinf, but some Solaris versions don't have isinf even with the attempted fix we have in deps/Makefile. We can harmlessly include the Redis solarisfixes.h header to give cjson proper isinf. Note: cjson has a compile-time setting for using their own defined isinf, but the Redis definition in solarisfixes.h is more complete. Fixes antirez#1620
* | Lua: Upgrade cjson to 2.1.0 (2012-03-01)Matt Stancliff2014-11-147-310/+675
|/ | | | | | | | | | | | | | | | | | The new cjson has some improvements over our current version including increased platform compatability, a new resource limit to restrict decode depth, and better invalid number handling. One minor change was required to deps/Makefile because this version of cjson doesn't export itself globally, so we added a quick little define of -DENABLE_CJSON_GLOBAL. cjson now has an optional higher performing float parsing interface, but we are not including it (g_fmt.c, dtoa.c) because it requires endianness declaration during compile time. This commit is exactly lua_cjson.c from 2.1.0 with one minor change of altering the two Lua includes for local search instead of system-wide importing.
* Linenoise README updated to match source code.antirez2014-10-061-3/+4
|
* Fix typosAaron Rutkovsky2014-09-291-1/+1
| | | | Closes #1513
* Update linenoise accessory filesMatt Stancliff2014-09-293-10/+55
| | | | | | | | | | The core linenoise code was being backported, but not the README or example. It's less confusing for users if everything matches across directories. Fix inspired by @thrig Closes #1872
* Linenoise lib updated.antirez2014-09-222-35/+50
|
* Fix hiredis getaddrinfo leakMatt Stancliff2014-09-181-0/+1
| | | | | | | | Fixed in Redis by 1a5e5b6, but since that part of code is largely copy/paste from Redis, the fix needs to be ported over too. Closes #2012
* Missing va_end also added in hiredis copy of sds.c.antirez2014-08-261-0/+1
|
* Missing assert removal from sdsIncrLen()Mariano Pérez Rodríguez2014-08-251-1/+0
| | | Companion for 8eeb1802ec42682a614a5ebca318a0ba44ca7c03, but dealing with hiredis.
* Use unsigned integers in SDS header.antirez2014-08-132-5/+8
| | | | This raises the max string to 4GB without any downside.
* Define AR to help with lua cross-compilationDaniel Price2014-08-121-1/+6
| | | | Closes #997
* Add support for compiling on AIXsiahl2014-08-072-1/+5
| | | | Closes #1900
* Silence different signs comparison warning in sds.c.antirez2014-06-231-1/+1
|
* Use Redis updated sds.c for deps/hiredis.antirez2014-06-232-76/+269
|
* Dummy zmalloc.h restored into deps/hiredis.antirez2014-06-231-0/+13
|
* hiredis: Update to latest versionMatt Stancliff2014-06-2322-196/+730
| | | | | | | | This is hiredis f225c276be7fd0646019b51023e3f41566633dfe This update includes all changes that diverged inside of Redis since the last update. This version also allows optional source address binding for connections which we need for some Sentinel deployments.
* Jemalloc updated to 3.6.0.antirez2014-06-20148-4901/+16667
| | | | | Not a single bug in about 3 months, and our previous version was too old (3.2.0).
* Jemalloc update script added.antirez2014-06-201-0/+9
|
* Linenoise updated, multiline mode enabled in redis-cli.antirez2014-03-132-252/+727
|
* fix lua_cmsgpack pack map as arrayyihuang2013-08-271-1/+1
|
* Fix sdsempty() prototype in sds.h.antirez2013-08-121-1/+1
|
* Use latest sds.c in the hiredis library under deps.antirez2013-07-254-120/+422
|
* hiredis: minimal IPv6 support.antirez2013-07-111-2/+10
|
* Lua updated to version 5.1.5.antirez2013-04-2922-136/+194
|
* Redis/Jemalloc Gitignore were too aggressive.antirez2013-04-181-5/+0
| | | | | | | | Redis gitignore was too aggressive since simply broken. Jemalloc gitignore was too agressive because it is conceived to just keep the files that allow to generate all the rest in development environments (so for instance the "configure" file is excluded).
* Inherit CC for LuaJohan Bergström2013-03-161-1/+1
|
* Spaces to tabsJohan Bergström2013-03-161-2/+2
|